openapi: 3.0.1
info:
title: Product Catalog Management agreement productSpecification 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: productSpecification
description: Operations for ProductSpecification Resource
paths:
/productSpecification:
get:
tags:
- productSpecification
summary: TM Forum List or Find ProductSpecification Objects
description: List or find ProductSpecification objects
operationId: listProductSpecification
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Offset'
- $ref: '#/components/parameters/Limit'
responses:
'200':
$ref: '#/components/responses/200ProductSpecificationArray'
'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:
- productSpecification
summary: TM Forum Creates a ProductSpecification
description: This operation creates a ProductSpecification entity.
operationId: createProductSpecification
parameters:
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductSpecification_FVO'
responses:
'201':
$ref: '#/components/responses/201ProductSpecification'
'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'
/productSpecification/{id}:
get:
tags:
- productSpecification
summary: TM Forum Retrieves a ProductSpecification by ID
description: This operation retrieves a ProductSpecification entity. Attribute selection enabled for all first level attributes.
operationId: retrieveProductSpecification
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
responses:
'200':
$ref: '#/components/responses/200ProductSpecification_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:
- productSpecification
summary: TM Forum Updates Partially a ProductSpecification
description: This operation updates partially a ProductSpecification entity.
operationId: patchProductSpecification
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductSpecification_MVO'
responses:
'200':
$ref: '#/components/responses/200ProductSpecification_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:
- productSpecification
summary: TM Forum Deletes a ProductSpecification
description: This operation deletes a ProductSpecification entity.
operationId: deleteProductSpecification
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:
EntityRef_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- $ref: '#/components/schemas/Addressable_FVO'
- type: object
description: Entity reference schema to be use for all entityRef class.
properties:
id:
type: string
description: The identifier of the referred entity.
href:
type: string
description: The URI of the referred entity.
name:
type: string
description: Name of the referred entity.
'@referredType':
type: string
description: The actual type of the target instance when needed for disambiguation.
required:
- id
ServiceSpecificationRef_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- $ref: '#/components/schemas/EntityRef'
- type: object
description: 'Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification.'
properties:
version:
type: string
description: Service specification version
discriminator:
propertyName: '@type'
mapping:
ServiceSpecificationRef: '#/components/schemas/ServiceSpecificationRef_MVO'
PartyRefOrPartyRoleRef_MVO:
type: object
description: ''
oneOf:
- $ref: '#/components/schemas/PartyRef_MVO'
- $ref: '#/components/schemas/PartyRoleRef_MVO'
discriminator:
propertyName: '@type'
mapping:
PartyRef: '#/components/schemas/PartyRef_MVO'
PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
PartyRoleRef_MVO:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: Party role reference. A party role represents the part played by a party in a given context.
properties:
partyId:
type: string
description: The identifier of the engaged party that is linked to the PartyRole object.
partyName:
type: string
description: The name of the engaged party that is linked to the PartyRole object.
discriminator:
propertyName: '@type'
mapping:
PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
BundledProductSpecification:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.
properties:
href:
type: string
description: Reference of the product specification
id:
type: string
description: Unique identifier of the product specification
lifecycleStatus:
type: string
description: Used to indicate the current lifecycle status
name:
type: string
description: Name of the product specification
version:
type: string
description: Version of the product specification
discriminator:
propertyName: '@type'
mapping:
BundledProductSpecification: '#/components/schemas/BundledProductSpecification'
CharacteristicSpecificationRelationship_MVO:
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
required:
- parentSpecificationId
- name
- relationshipType
discriminator:
propertyName: '@type'
mapping:
CharacteristicSpecificationRelationship: '#/components/schemas/CharacteristicSpecificationRelationship_MVO'
Attachment:
allOf:
- $ref: '#/components/schemas/Entity'
- 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'
PartyRoleRef_FVO:
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
- type: object
description: Party role reference. A party role represents the part played by a party in a given context.
properties:
partyId:
type: string
description: The identifier of the engaged party that is linked to the PartyRole object.
partyName:
type: string
description: The name of the engaged party that is linked to the PartyRole object.
discriminator:
propertyName: '@type'
mapping:
PartyRoleRef: '#/components/schemas/PartyRoleRef_FVO'
Extensible_FVO:
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'
JsonPatchOperations:
description: JSONPatch Operations document as defined by RFC 6902
type: array
items:
$ref: '#/components/schemas/JsonPatch'
ProductSpecificationRelationship:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: A migration, substitution, dependency or exclusivity relationship between/among product specifications.
properties:
characteristic:
type: array
items:
$ref: '#/components/schemas/CharacteristicSpecification'
description: A characteristic that refines the relationship. For example, consider the relationship between broadband and TV. For a 4k TV it is important to know the minimum bandwidth to support 4k, so a characteristic Resolution might be defined on the relationship to allow capturing of this in the inventory
validFor:
$ref: '#/components/schemas/TimePeriod'
relationshipType:
type: string
description: type of the relationship, for example override, discount, etc.
version:
type: string
description: Version of the referred product specification.
discriminator:
propertyName: '@type'
mapping:
ProductSpecificationRelationship: '#/components/schemas/ProductSpecificationRelationship'
Quantity:
type: object
description: An amount in a given unit
properties:
amount:
type: number
format: float
default: 1
description: Numeric value in a given unit
units:
type: string
description: Unit
ServiceSpecificationRef:
allOf:
- $ref: '#/components/schemas/Extensible'
- $ref: '#/components/schemas/EntityRef'
- type: object
description: 'Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification.'
properties:
version:
type: string
description: Service specification version
discriminator:
propertyName: '@type'
mapping:
ServiceSpecificationRef: '#/components/schemas/ServiceSpecificationRef'
PartyRoleRef:
allOf:
- $ref: '#/components/schemas/EntityRef'
- type: object
description: Party role reference. A party role represents the part played by a party in a given context.
properties:
partyId:
type: string
description: The identifier of the engaged party that is linked to the PartyRole object.
partyName:
type: string
description: The name of the engaged party that is linked to the PartyRole object.
discriminator:
propertyName: '@type'
mapping:
PartyRoleRef: '#/components/schemas/PartyRoleRef'
CharacteristicValueSpecification:
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'
StringCharacteristicValueSpecification: '#/components/schemas/StringCharacteristicValueSpecification'
StringArrayCharacteristicValueSpecification: '#/components/schemas/StringArrayCharacteristicValueSpecification'
ObjectCharacteristicValueSpecification: '#/components/schemas/ObjectCharacteristicValueSpecification'
ObjectArrayCharacteristicValueSpecification: '#/components/schemas/ObjectArrayCharacteristicValueSpecification'
NumberCharacteristicValueSpecification: '#/components/schemas/NumberCharacteristicValueSpecification'
NumberArrayCharacteristicValueSpecification: '#/components/schemas/NumberArrayCharacteristicValueSpecification'
MapCharacteristicValueSpecification: '#/components/schemas/MapCharacteristicValueSpecification'
MapArrayCharacteristicValueSpecification: '#/components/schemas/MapArrayCharacteristicValueSpecification'
IntegerCharacteristicValueSpecification: '#/components/schemas/IntegerCharacteristicValueSpecification'
IntegerArrayCharacteristicValueSpecification: '#/components/schemas/IntegerArrayCharacteristicValueSpecification'
TargetProductSchema:
type: object
description: The reference object to the schema and type of target product which is described by product specification
properties:
'@type':
type: string
description: Class type of the target product
'@schemaLocation':
type: string
format: uri
description: This field provides a link to the schema describing the target product
Attachment_FVO:
allOf:
- $ref: '#/components/schemas/Entity_FVO'
- 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
required:
- attachmentType
- mimeType
discriminator:
propertyName: '@type'
mapping:
Attachment: '#/components/schemas/Attachment_FVO'
CategoryRef_FVO:
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
- 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_FVO'
Entity_FVO:
type: object
description: Base entity schema for use in TMForum Open-APIs. Property.
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- $ref: '#/components/schemas/Addressable_FVO'
CharacteristicSpecification_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- 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_FVO'
description: An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.
characteristicValueSpecification:
type: array
items:
$ref: '#/components/schemas/CharacteristicValueSpecification_FVO'
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.
required:
- name
- valueType
discriminator:
propertyName: '@type'
mapping:
CharacteristicSpecification: '#/components/schemas/CharacteristicSpecification_FVO'
BundledProductSpecification_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.
properties:
href:
type: string
description: Reference of the product specification
id:
type: string
description: Unique identifier of the product specification
lifecycleStatus:
type: string
description: Used to indicate the current lifecycle status
name:
type: string
description: Name of the product specification
version:
type: string
description: Version of the product specification
discriminator:
propertyName: '@type'
mapping:
BundledProductSpecification: '#/components/schemas/BundledProductSpecification_FVO'
AttachmentRefOrValue_FVO:
type: object
description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the Attachment entity and not the AttachmentRefOrValue class itself
oneOf:
- $ref: '#/components/schemas/Attachment_FVO'
- $ref: '#/components/schemas/AttachmentRef_FVO'
discriminator:
propertyName: '@type'
mapping:
Attachment: '#/components/schemas/Attachment_FVO'
AttachmentRef: '#/components/schemas/AttachmentRef_FVO'
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'
ExternalIdentifier_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list.
properties:
owner:
type: string
description: Name of the external system that owns the entity.
example: MagentoCommerce
externalIdentifierType:
type: string
description: Type of the identification, typically would be the type of the entity within the external system
example: ProductOrder
id:
type: string
description: identification of the entity within the external system.
discriminator:
propertyName: '@type'
mapping:
ExternalIdentifier: '#/components/schemas/ExternalIdentifier_MVO'
ProductSpecificationRelationship_FVO:
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
- type: object
description: A migration, substitution, dependency or exclusivity relationship between/among product specifications.
properties:
characteristic:
type: array
items:
$ref: '#/components/schemas/CharacteristicSpecification_FVO'
description: A characteristic that refines the relationship. For example, consider the relationship between broadband and TV. For a 4k TV it is important to know the minimum bandwidth to support 4k, so a characteristic Resolution might be defined on the relationship to allow capturing of this in the inventory
validFor:
$ref: '#/components/schemas/TimePeriod'
relationshipType:
type: string
description: type of the relationship, for example override, discount, etc.
version:
type: string
description: Version of the referred product specification.
required:
- id
- relationshipType
discriminator:
propertyName: '@type'
mapping:
ProductSpecificationRelationship: '#/components/schemas/ProductSpecificationRelationship_FVO'
ProductSpecification:
allOf:
- $ref: '#/components/schemas/Entity'
- type: object
description: Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
properties:
brand:
type: string
description: The manufacturer or trademark of the specification
description:
type: string
description: A narrative that explains in detail what the product specification is
isBundle:
type: boolean
description: isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true).
productNumber:
type: string
description: An identification number assigned to uniquely identity the specification
category:
type: array
# --- truncated at 32 KB (153 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-productspecification-api-openapi.yml