MEF

MEF LSO Cantata Product Catalog

Product Catalog — the OpenAPI definition published by Mplify (formerly MEF) in the MEF LSO Cantata SDK, Kylie release. LSO Cantata is the Interface Reference Point between a Customer (typically an enterprise) and a Service Provider, covering the business/product layer. 8 path(s), 9 operation(s). Apache-2.0 licensed and openly downloadable from public GitHub.

OpenAPI Specification

mef-lso-cantata-product-catalog-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Product Catalog
  description: >
    **This file forms part of Mplify 142**


    This API implements the Business Requirements described in Mplify 127.1.


    Supported use cases:

    - Retrieve List of Product Categories

    - Retrieve Product Category by Product Category Identifier

    - Retrieve List of Product Offerings

    - Retrieve Product Offering by Product Offering Identifier

    - Retrieve List of Product Specifications

    - Retrieve Product Specification by Product Specification Identifier

    - Register for Notifications 

    - Unregister Notifications

    - Retrieve Notification Hub Registry


    Copyright 2025 Mplify Alliance and its contributors.


    This file includes content based on the TM Forum Product Catalog API (TMF620
    v4.1.0) available at https://github.com/tmforum-apis/TMF620_ProductCatalog,
    which is licensed by the TM Forum under the Apache License version 2.0. Such
    content has been modified by the Mplify Alliance and its contributors.
  version: 4.0.1
servers:
  - url: 'http://{serverBase}/mefApi/cantata/productCatalog/v4/'
    variables:
      serverBase:
        description: The base of Buyer's URL.
        default: mplify.net
tags:
  - name: category
  - name: productOffering
  - name: productSpecification
paths:
  /category:
    get:
      tags:
        - category
      summary: Lists or finds Category objects
      description: This operation lists or finds Category entities
      operationId: listCategory
      parameters:
        - name: parentCategory.id
          in: query
          description: Id of the Parent of this Product Category.
          required: false
          schema:
            type: string
        - name: lastUpdate.gt
          in: query
          description: >-
            The date and time the Product Category was created or most recently
            updated, greater than
          required: false
          schema:
            type: string
            format: date-time
        - name: lastUpdate.lt
          in: query
          description: >-
            The date and time the Product Category was created or most recently
            updated, less than
          required: false
          schema:
            type: string
            format: date-time
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            It MUST be specified in the request only when the requester
            represents more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. It MUST be specified in the request only when the responding
            entity represents more than one Seller.
          required: false
          schema:
            type: string
        - name: offset
          in: query
          description: >-
            Requested index for the start of item to be provided in response
            requested by the client. Note that the index starts with "0".
          required: false
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: >-
            Requested number of items to be provided in response requested by
            client
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that the result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. 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-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
          content:
            application/json;charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductCategory'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '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':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  '/category/{id}':
    get:
      tags:
        - category
      summary: Retrieves a Category by ID
      description: This operation retrieves a Category entity.
      operationId: retrieveCategory
      parameters:
        - name: id
          in: path
          description: Identifier of the Category
          required: true
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductCategory'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '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'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  /productOffering:
    get:
      tags:
        - productOffering
      summary: List or find Product Offering objects
      description: This operation list or find ProductOffering entities
      operationId: listProductOffering
      parameters:
        - name: name
          in: query
          description: The commercial name of the Product Offering
          required: false
          schema:
            type: string
        - name: lastUpdate.gt
          in: query
          description: >-
            The date and time the Product Offering was created or most recently
            updated, greater than
          required: false
          schema:
            type: string
            format: date-time
        - name: lastUpdate.lt
          in: query
          description: >-
            The date and time the Product Offering was created or most recently
            updated, less than
          required: false
          schema:
            type: string
            format: date-time
        - name: lifecycleStatus
          in: query
          description: Lifecycle Status of the Product Offering
          required: false
          schema:
            $ref: '#/components/schemas/ProductOfferingLifecycleStatusType'
        - name: agreement
          in: query
          description: >-
            The name of the Seller's offer arrangement (such as a framework
            agreement).  **Note:** The list of allowable values for agreements
            should be negotiated between the Buyer and the Seller, during the
            integration phase. Ultimately it will be the enumerated set of
            values (it's problematic to define the enumerated values globally
            for any operator).
          required: false
          schema:
            type: string
        - name: channel
          in: query
          description: >-
            The names of the sales channels through which the Product Offering
            is made available to the Buyer to order. **Note:** The list of
            allowable values for selling channels should be negotiated between
            the Buyer and the Seller, during the integration phase.  Ultimately
            it will be the enumerated set of values (it's problematic to define
             the enumerated values globally for any operator).
          required: false
          schema:
            type: string
        - name: marketSegment
          in: query
          description: >-
            The names of the market segments  targeted for the Product Offering.
            **Note:** The list of allowable values for selling market segments
            should be negotiated between the Buyer and the Seller, during the
            integration phase.  Ultimately it will be the enumerated set of
            values (it's problematic to define the enumerated values globally
            for any operator).
          required: false
          schema:
            type: string
        - name: region.countryCode
          in: query
          description: >-
            Country where the products are offered by the Seller to potential
            Buyers.
          required: false
          schema:
            type: string
        - name: isBundle
          in: query
          description: >-
            Determines whether a productOffering represents a single
            productOffering (false), or a bundle of productOfferings (true).
          required: false
          schema:
            type: boolean
        - name: isSellable
          in: query
          description: >-
            A flag indicating if this product offer can be sold stand-alone for
            sale or not. If this flag is false it indicates that the offer can
            only be sold within a bundle.
          required: false
          schema:
            type: boolean
        - name: category.id
          in: query
          description: >-
            Identifier of the Category that Product Offering is the direct or
            transitive member of. Direct member - there is a direct relation
            between Category and Product Offering. Transitive member - there is
            a relation between one of the sub-categories and Product Offering.
          required: false
          schema:
            type: string
        - name: productSpecification.id
          in: query
          description: >-
            A Product Specification Reference to the detailed description of the
            specifications and attributes defining all of the Product Offering
            characteristics.
          required: false
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when the responding
            entity represents more than one Seller.
          required: false
          schema:
            type: string
        - name: offset
          in: query
          description: >-
            Requested index for the start of an item to be provided in response
            requested by the client. Note that the index starts with "0".
          required: false
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: >-
            Requested number of items to be provided in response requested by
            client
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that the result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. 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-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
          content:
            application/json;charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductOffering_Find'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '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':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  '/productOffering/{id}':
    get:
      tags:
        - productOffering
      summary: Retrieves a ProductOffering by ID
      description: >-
        This operation retrieves a ProductOffering entity. Attribute selection
        is enabled for all first level attributes.
      operationId: retrieveProductOffering
      parameters:
        - name: id
          in: path
          description: Identifier of the ProductOffering
          required: true
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductOffering'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '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'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  /productSpecification:
    get:
      tags:
        - productSpecification
      summary: List or find ProductSpecification objects
      description: This operation list or find ProductSpecification entities
      operationId: listProductSpecification
      parameters:
        - name: name
          in: query
          description: The name of the Product Specification (may not be unique)
          required: false
          schema:
            type: string
        - name: lifecycleStatus
          in: query
          description: Lifecycle Status of the Product Specification
          required: false
          schema:
            type: string
            enum:
              - obsolete
              - published
        - name: lastUpdate.gt
          in: query
          description: >-
            The date and time the Product Specification was created or most
            recently updated, greater than
          required: false
          schema:
            type: string
            format: date-time
        - name: lastUpdate.lt
          in: query
          description: >-
            The date and time the Product Specification was created or most
            recently updated, less than
          required: false
          schema:
            type: string
            format: date-time
        - name: agreement
          in: query
          description: >-
            The name of the Seller's standard offer arrangement (such as a
            framework agreement). The name is unique within the Seller domain.
            This should be the name of the Seller's standard offer arrangement
            or framework agreement for the Product Specification.
          required: false
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when the responding
            entity represents more than one Seller.
          required: false
          schema:
            type: string
        - name: offset
          in: query
          description: >-
            Requested index for the start of an item to be provided in response
            requested by the client. Note that the index starts with "0".
          required: false
          schema:
            type: integer
            format: int32
        - name: limit
          in: query
          description: >-
            Requested number of items to be provided in response requested by
            client
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that the result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. 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-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
          content:
            application/json;charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductSpecification_Find'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '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':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  '/productSpecification/{id}':
    get:
      tags:
        - productSpecification
      summary: Retrieves a ProductSpecification by ID
      description: >-
        This operation retrieves a ProductSpecification entity. Attribute
        selection is enabled for all first level attributes.
      operationId: retrieveProductSpecification
      parameters:
        - name: id
          in: path
          description: Identifier of the ProductSpecification
          required: true
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductSpecification'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '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'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  /hub:
    post:
      tags:
        - events subscription
      summary: Register a listener
      description: >-
        Sets the communication endpoint address the service instance must use to
        deliver information about its health state, execution state, failures
        and metrics.
      operationId: registerListener
      parameters:
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      requestBody:
        description:
          Data containing the callback endpoint to deliver the information
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/EventSubscriptionInput'
        required: true
      responses:
        '201':
          description: Subscribed
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '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':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
        '501':
          description: Method not implemented.
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
  '/hub/{id}':
    get:
      tags:
        - events subscription
      summary: Retrieves a Hub by ID
      description: This operation retrieves a hub entity.
      operationId: retrieveHub
      parameters:
        - name: id
          in: path
          description: Identifier of the Hub
          required: true
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EventSubscription'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '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'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
        '501':
          description: Method not implemented.
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
    delete:
      tags:
        - events subscription
      summary: Unregister a listener
      description: >-
        Resets the communication endpoint address the service instance must use
        to deliver information about its health state, execution state, failures
        and metrics.
      operationId: unregisterListener
      parameters:
        - name: id
          in: path
          description: The id of the registered listener
          required: true
          schema:
            type: string
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as a Buyer.
            MUST be specified in the request only when the requester represents
            more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      responses:
        '204':
          description: Deleted
        '400':
          description: Bad request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset

# --- truncated at 32 KB (95 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mef/refs/heads/main/openapi/mef-lso-cantata-product-catalog-openapi.yml