Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Product Catalog Management Product Offering API
description: "Product Catalog API is one of Catalog Management API Family. Product Catalog API goal is to provide a catalog of products. \n### Operations\nProduct Catalog API performs the following operations on the resources :\n- Retrieve an entity or a collection of entities depending on filter criteria\n- Partial update of an entity (including updating rules)\n- Create an entity (including default values and creation rules)\n- Delete an entity\n- Manage notification of events"
version: 5.0.0
servers:
- url: https://serverRoot/productCatalogManagement/v5/
tags:
- name: productOffering
description: Operations for ProductOffering Resource
paths:
/productOffering:
get:
tags:
- productOffering
summary: TM Forum List or Find ProductOffering Objects
description: List or find ProductOffering objects
operationId: listProductOffering
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Offset'
- $ref: '#/components/parameters/Limit'
responses:
'200':
$ref: '#/components/responses/200ProductOfferingArray'
'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'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
post:
tags:
- productOffering
summary: TM Forum Creates a ProductOffering
description: This operation creates a ProductOffering entity.
operationId: createProductOffering
parameters:
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductOffering_FVO'
responses:
'201':
$ref: '#/components/responses/201ProductOffering'
'202':
description: Accepted
'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'
'409':
$ref: '#/components/responses/409'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
/productOffering/{id}:
get:
tags:
- productOffering
summary: TM Forum Retrieves a ProductOffering by ID
description: This operation retrieves a ProductOffering entity. Attribute selection enabled for all first level attributes.
operationId: retrieveProductOffering
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
responses:
'200':
$ref: '#/components/responses/200ProductOffering_Get'
'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'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
patch:
tags:
- productOffering
summary: TM Forum Updates Partially a ProductOffering
description: This operation updates partially a ProductOffering entity.
operationId: patchProductOffering
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductOffering_MVO'
responses:
'200':
$ref: '#/components/responses/200ProductOffering_Patch'
'202':
description: Accepted
'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'
'409':
$ref: '#/components/responses/409'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
delete:
tags:
- productOffering
summary: TM Forum Deletes a ProductOffering
description: This operation deletes a ProductOffering entity.
operationId: deleteProductOffering
parameters:
- $ref: '#/components/parameters/Id'
responses:
'202':
$ref: '#/components/responses/202'
'204':
$ref: '#/components/responses/204'
'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'
'409':
$ref: '#/components/responses/409'
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
components:
schemas:
ProductOfferingRef:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
properties:
version:
type: string
description: Version of the product offering
discriminator:
propertyName: '@type'
mapping:
ProductOfferingRef: '#/components/schemas/ProductOfferingRef'
BundledProductOffering: '#/components/schemas/BundledProductOffering'
CharacteristicValueSpecification_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: specification of a value (number or text or an object) that can be assigned to a Characteristic. This is an abstract base class, the actual value is in one of the strongly-typed subclasses
properties:
valueType:
type: string
description: A kind of value that the characteristic value can take on, such as numeric, text and so forth
isDefault:
type: boolean
description: If true, the Boolean Indicates if the value is the default value for a characteristic
unitOfMeasure:
type: string
description: A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot.
validFor:
$ref: '#/components/schemas/TimePeriod'
valueFrom:
type: integer
description: The low range value that a characteristic can take on
valueTo:
type: integer
description: The upper range value that a characteristic can take on
rangeInterval:
type: string
description: An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are "open", "closed", "closedBottom" and "closedTop".
regex:
type: string
description: A regular expression constraint for given value
discriminator:
propertyName: '@type'
mapping:
CharacteristicValueSpecification: '#/components/schemas/CharacteristicValueSpecification_MVO'
StringCharacteristicValueSpecification: '#/components/schemas/StringCharacteristicValueSpecification_MVO'
StringArrayCharacteristicValueSpecification: '#/components/schemas/StringArrayCharacteristicValueSpecification_MVO'
ObjectCharacteristicValueSpecification: '#/components/schemas/ObjectCharacteristicValueSpecification_MVO'
ObjectArrayCharacteristicValueSpecification: '#/components/schemas/ObjectArrayCharacteristicValueSpecification_MVO'
NumberCharacteristicValueSpecification: '#/components/schemas/NumberCharacteristicValueSpecification_MVO'
NumberArrayCharacteristicValueSpecification: '#/components/schemas/NumberArrayCharacteristicValueSpecification_MVO'
MapCharacteristicValueSpecification: '#/components/schemas/MapCharacteristicValueSpecification_MVO'
MapArrayCharacteristicValueSpecification: '#/components/schemas/MapArrayCharacteristicValueSpecification_MVO'
IntegerCharacteristicValueSpecification: '#/components/schemas/IntegerCharacteristicValueSpecification_MVO'
IntegerArrayCharacteristicValueSpecification: '#/components/schemas/IntegerArrayCharacteristicValueSpecification_MVO'
PricingLogicAlgorithm_FVO:
allOf:
- $ref: '#/components/schemas/Entity_FVO'
- type: object
description: The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth)
properties:
description:
type: string
description: Description of the PricingLogicAlgorithm
name:
type: string
description: Name given to the PricingLogicAlgorithm
plaSpecId:
type: string
description: id of corresponding PricingLogicAlgorithm specification
validFor:
$ref: '#/components/schemas/TimePeriod'
discriminator:
propertyName: '@type'
mapping:
PricingLogicAlgorithm: '#/components/schemas/PricingLogicAlgorithm_FVO'
TimePeriod:
type: object
description: A period of time, either as a deadline (endDateTime only) a startDateTime only, or both
properties:
startDateTime:
description: Start of the time period, using IETC-RFC-3339 format
type: string
format: date-time
example: '1985-04-12T23:20:50.52Z'
endDateTime:
description: End of the time period, using IETC-RFC-3339 format
type: string
format: date-time
example: '1985-04-12T23:20:50.52Z'
Entity:
type: object
description: Base entity schema for use in TMForum Open-APIs. Property.
allOf:
- $ref: '#/components/schemas/Extensible'
- $ref: '#/components/schemas/Addressable'
Attachment_MVO:
allOf:
- $ref: '#/components/schemas/Entity_MVO'
- type: object
description: Complements the description of an element (for instance a product) through video, pictures...
properties:
name:
type: string
description: The name of the attachment
description:
type: string
description: A narrative text describing the content of the attachment
example: Photograph of the Product
url:
type: string
description: Uniform Resource Locator, is a web page address (a subset of URI)
example: http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f
content:
type: string
format: base64
description: The actual contents of the attachment object, if embedded, encoded as base64
size:
$ref: '#/components/schemas/Quantity'
validFor:
$ref: '#/components/schemas/TimePeriod'
attachmentType:
type: string
description: a business characterization of the purpose of the attachment, for example logo, instructionManual, contractCopy
mimeType:
type: string
description: a technical characterization of the attachment content format using IETF Mime Types
discriminator:
propertyName: '@type'
mapping:
Attachment: '#/components/schemas/Attachment_MVO'
BundledGroupProductOffering:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: A group of product offerings that can be chosen for instantiation of children of the parent product offering, for example a list of channels for selection under a TV offering. Sometimes known as Selection Group. The group can also hierarchically contain other groups
properties:
id:
type: string
description: Locally unique identifier of the group, useful in case the parent product offering or group includes multiple groups.
example: '1'
name:
type: string
description: The name of the group of child offerings. Required to distinguish several choice groups.
example: TV Channels
bundledProductOffering:
type: array
items:
$ref: '#/components/schemas/BundledProductOffering'
description: Child offerings, from which instances can be created as direct or hierarchically indirect children of the parent offering.
bundledGroupProductOffering:
type: array
items:
$ref: '#/components/schemas/BundledGroupProductOffering'
description: Child groups of product offerings, to enable hierarchical sub-grouping.
bundledGroupProductOfferingOption:
$ref: '#/components/schemas/BundledGroupProductOfferingOption'
discriminator:
propertyName: '@type'
mapping:
BundledGroupProductOffering: '#/components/schemas/BundledGroupProductOffering'
BundledGroupProductOffering_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: A group of product offerings that can be chosen for instantiation of children of the parent product offering, for example a list of channels for selection under a TV offering. Sometimes known as Selection Group. The group can also hierarchically contain other groups
properties:
id:
type: string
description: Locally unique identifier of the group, useful in case the parent product offering or group includes multiple groups.
example: '1'
name:
type: string
description: The name of the group of child offerings. Required to distinguish several choice groups.
example: TV Channels
bundledProductOffering:
type: array
items:
$ref: '#/components/schemas/BundledProductOffering_MVO'
description: Child offerings, from which instances can be created as direct or hierarchically indirect children of the parent offering.
bundledGroupProductOffering:
type: array
items:
$ref: '#/components/schemas/BundledGroupProductOffering_MVO'
description: Child groups of product offerings, to enable hierarchical sub-grouping.
bundledGroupProductOfferingOption:
$ref: '#/components/schemas/BundledGroupProductOfferingOption_MVO'
required:
- name
discriminator:
propertyName: '@type'
mapping:
BundledGroupProductOffering: '#/components/schemas/BundledGroupProductOffering_MVO'
ProductSpecificationRef_MVO:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: ProductSpecification reference. A product Specification represents entities that are orderable from the provider of the catalog.
properties:
version:
type: string
description: Version of the product specification
targetProductSchema:
$ref: '#/components/schemas/TargetProductSchema_MVO'
discriminator:
propertyName: '@type'
mapping:
ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef_MVO'
AgreementRef_FVO:
type: object
description: Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- $ref: '#/components/schemas/EntityRef_FVO'
discriminator:
propertyName: '@type'
mapping:
AgreementRef: '#/components/schemas/AgreementRef_FVO'
CategoryRef:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: Reference to a category in the catalog.
properties:
version:
type: string
description: Version of the category
discriminator:
propertyName: '@type'
mapping:
CategoryRef: '#/components/schemas/CategoryRef'
BundledGroupProductOfferingOption_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: Defines for a BundledProductOfferingGroup (i.e. a group of multiple child offerings of a parent product offering), how many instances from the child offerings can be chosen in total. For example facilitate the choice of between 2 and 7 channel packs from a list, and cause certain items to be selected by default
properties:
numberRelOfferLowerLimit:
type: integer
description: The minimum total number of instances of the child offerings directly of hierarchically in the group that should be instantiated
example: 2
numberRelOfferUpperLimit:
type: integer
description: The maximum total number of instances of the child offerings directly of hierarchically in the group that should be instantiated
example: 7
required:
- numberRelOfferLowerLimit
- numberRelOfferUpperLimit
discriminator:
propertyName: '@type'
mapping:
BundledGroupProductOfferingOption: '#/components/schemas/BundledGroupProductOfferingOption_FVO'
Extensible:
type: object
description: Base Extensible schema for use in TMForum Open-APIs - When used for in a schema it means that the Entity described by the schema MUST be extended with the @type
properties:
'@type':
type: string
description: When sub-classing, this defines the sub-class Extensible name
'@baseType':
type: string
description: When sub-classing, this defines the super-class
'@schemaLocation':
type: string
description: A URI to a JSON-Schema file that defines additional attributes and relationships
required:
- '@type'
CharacteristicSpecification:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: This class defines a characteristic specification.
properties:
id:
type: string
description: Unique ID for the characteristic
name:
type: string
description: A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications.
valueType:
type: string
description: A kind of value that the characteristic can take on, such as numeric, text and so forth
description:
type: string
description: A narrative that explains the CharacteristicSpecification.
configurable:
type: boolean
description: If true, the Boolean indicates that the target Characteristic is configurable
validFor:
$ref: '#/components/schemas/TimePeriod'
minCardinality:
type: integer
description: The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality.
maxCardinality:
type: integer
description: The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality.
isUnique:
type: boolean
description: Specifies if the value of this characteristic is unique across all entities instantiated from the specification that uses this characteristc. For example, consider a ProductSpecification for a set-top box, with a CharacteristicSpecification cardID. Each set-top box must have a different value for cardID, so this isUnique attribute would be set to true for the characteristic.
regex:
type: string
description: A rule or principle represented in regular expression used to derive the value of a characteristic value.
extensible:
type: boolean
description: An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource.
'@valueSchemaLocation':
type: string
description: This (optional) field provides a link to the schema describing the value type.
charSpecRelationship:
type: array
items:
$ref: '#/components/schemas/CharacteristicSpecificationRelationship'
description: An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.
characteristicValueSpecification:
type: array
items:
$ref: '#/components/schemas/CharacteristicValueSpecification'
description: A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on.
discriminator:
propertyName: '@type'
mapping:
CharacteristicSpecification: '#/components/schemas/CharacteristicSpecification'
PolicyRef:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: Reference to managed Policy object
properties:
id:
type: string
description: unique identifier
href:
type: string
description: Hyperlink reference
version:
type: string
'@type':
type: string
description: When sub-classing, this defines the sub-class Extensible name
'@baseType':
type: string
description: When sub-classing, this defines the super-class
'@schemaLocation':
type: string
description: A URI to a JSON-Schema file that defines additional attributes and relationships
discriminator:
propertyName: '@type'
mapping:
PolicyRef: '#/components/schemas/PolicyRef'
ResourceCandidateRef_MVO:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none.
properties:
version:
type: string
description: the version of resource candidate
discriminator:
propertyName: '@type'
mapping:
ResourceCandidateRef: '#/components/schemas/ResourceCandidateRef_MVO'
CharacteristicSpecificationRelationship:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: An aggregation, migration, substitution, dependency or exclusivity relationship between/among Characteristic specifications. The specification characteristic is embedded within the specification whose ID and href are in this entity, and identified by its ID.
properties:
relationshipType:
type: string
description: Type of relationship such as aggregation, migration, substitution, dependency, exclusivity
name:
type: string
description: Name of the target characteristic within the specification
characteristicSpecificationId:
type: string
description: Unique identifier of the characteristic within the specification
parentSpecificationHref:
type: string
format: uri
description: Hyperlink reference to the parent specification containing the target characteristic
validFor:
$ref: '#/components/schemas/TimePeriod'
parentSpecificationId:
type: string
description: Unique identifier of the parent specification containing the target characteristic
discriminator:
propertyName: '@type'
mapping:
CharacteristicSpecificationRelationship: '#/components/schemas/CharacteristicSpecificationRelationship'
ProductOfferingPriceRefOrValue_FVO:
type: object
description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the ProductOfferingPrice entity and not the ProductOfferingPriceRefOrValue class itself
oneOf:
- $ref: '#/components/schemas/ProductOfferingPrice_FVO'
- $ref: '#/components/schemas/ProductOfferingPriceRef_FVO'
discriminator:
propertyName: '@type'
mapping:
ProductOfferingPrice: '#/components/schemas/ProductOfferingPrice_FVO'
ProductOfferingPriceRef: '#/components/schemas/ProductOfferingPriceRef_FVO'
PricingLogicAlgorithm_MVO:
allOf:
- $ref: '#/components/schemas/Entity_MVO'
- type: object
description: The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth)
properties:
description:
type: string
description: Description of the PricingLogicAlgorithm
name:
type: string
description: Name given to the PricingLogicAlgorithm
plaSpecId:
type: string
description: id of corresponding PricingLogicAlgorithm specification
validFor:
$ref: '#/components/schemas/TimePeriod'
discriminator:
propertyName: '@type'
mapping:
PricingLogicAlgorithm: '#/components/schemas/PricingLogicAlgorithm_MVO'
JsonPatch:
type: object
description: A JSONPatch document as defined by RFC 6902
required:
- op
- path
properties:
op:
type: string
description: The operation to be performed
enum:
- add
- remove
- replace
- move
- copy
- test
path:
type: string
description: A JSON-Pointer
value:
description: The value to be used within the operations.
from:
type: string
description: A string containing a JSON Pointer value.
ProductOfferingPrice_MVO:
allOf:
- $ref: '#/components/schemas/Entity_MVO'
- type: object
description: 'Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (a Product Offering Price that reflects an alteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment.'
properties:
description:
type: string
description: Description of the productOfferingPrice
version:
type: string
description: ProductOfferingPrice version
validFor:
$ref: '#/components/schemas/TimePeriod'
unitOfMeasure:
$ref: '#/components/schemas/Quantity'
recurringChargePeriodType:
type: string
description: 'The period to repeat the application of the price
Could be month, week...'
recurringChargePeriodLength:
type: integer
description: 'the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable'
isBundle:
type: boolean
description: A flag indicating if this ProductOfferingPrice is composite (bundle) or not
price:
$ref: '#/components/schemas/Money'
percentage:
type: number
format: float
description: Percentage to apply if this Product Offering Price is an Alteration (such as a Discount)
bundledPopRelationship:
type: array
items:
$ref: '#/components/schemas/BundledProductOfferingPriceRelationship_MVO'
description: this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship.
popRelationship:
type: array
items:
$ref: '#/components/schemas/ProductOfferingPriceRelationship_MVO'
description: Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount
prodSpecCharValueUse:
type: array
items:
$ref: '#/components/schemas/ProductSpecificationCharacteristicValueUse_MVO'
description: A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics.
productOfferingTerm:
type: array
items:
$ref: '#/components/schemas/ProductOfferingTerm_MVO'
description: A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods.
place:
type: array
items:
$ref: '#/components/schemas/PlaceRef_MVO'
description: Place defines
# --- truncated at 32 KB (211 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-productoffering-api-openapi.yml