MEF Product Catalog (Mef Lso Sonata Product Catalog)
MEF Product Catalog from MEF — 8 path(s) described in OpenAPI.
MEF Product Catalog from MEF — 8 path(s) described in OpenAPI.
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/sonata/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-sonata-product-catalog-openapi.yml