openapi: 3.0.1
info:
title: Product Catalog Management agreement productOrder 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: productOrder
description: Operations for ProductOrder Resource
paths:
/productOrder:
get:
tags:
- productOrder
summary: TM Forum List or Find ProductOrder Objects
description: List or find ProductOrder objects
operationId: listProductOrder
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Offset'
- $ref: '#/components/parameters/Limit'
responses:
'200':
$ref: '#/components/responses/200ProductOrderArray'
'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:
- productOrder
summary: TM Forum Creates a ProductOrder
description: This operation creates a ProductOrder entity.
operationId: createProductOrder
parameters:
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductOrder_FVO'
responses:
'201':
$ref: '#/components/responses/201ProductOrder'
'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'
/productOrder/{id}:
get:
tags:
- productOrder
summary: TM Forum Retrieves a ProductOrder by ID
description: This operation retrieves a ProductOrder entity. Attribute selection enabled for all first level attributes.
operationId: retrieveProductOrder
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
responses:
'200':
$ref: '#/components/responses/200ProductOrder_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'
delete:
tags:
- productOrder
summary: TM Forum Deletes a ProductOrder
description: This operation deletes a ProductOrder entity.
operationId: deleteProductOrder
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'
patch:
tags:
- productOrder
summary: TM Forum Updates Partially a ProductOrder
description: This operation updates partially a ProductOrder entity.
operationId: patchProductOrder
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/ProductOrder_MVO'
responses:
'200':
$ref: '#/components/responses/200ProductOrder_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'
components:
schemas:
GeographicLocationRef_FVO:
type: object
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
discriminator:
propertyName: '@type'
mapping:
GeographicLocationRef: '#/components/schemas/GeographicLocationRef_FVO'
RelatedChannel_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Related channel to another entity. May be online web, mobile app, social ,etc.
properties:
role:
type: string
channel:
$ref: '#/components/schemas/ChannelRef_MVO'
discriminator:
propertyName: '@type'
mapping:
RelatedChannel: '#/components/schemas/RelatedChannel_MVO'
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
Milestone_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Milestone represents an action or event marking a significant change or stage in a process like an order process.
properties:
description:
type: string
description: free-text description of the Milestone
id:
type: string
description: identifier of the Milestone
status:
description: The milestone status
type: string
enum:
- Yet-To-Reach
- Completed
- Violated
milestoneDate:
type: string
format: date-time
description: A date time( DateTime). The date that the milestone happens
name:
type: string
description: A string used to give a name to the milestone
message:
type: string
description: A string represents the message of the milestone
discriminator:
propertyName: '@type'
mapping:
Milestone: '#/components/schemas/Milestone_MVO'
ProductOrderMilestone: '#/components/schemas/ProductOrderMilestone_MVO'
ProductOfferingRef_MVO:
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_MVO'
Note_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: Extra information about a given entity
properties:
id:
type: string
description: Identifier of the note within its containing entity
example: afa9-3d90aaa8da0f
author:
type: string
description: Author of the note
example: Mr. N. Bene
date:
type: string
format: date-time
description: Date of the note
example: '2020-11-20T08:00:00Z'
text:
type: string
description: Text of the note
example: This is important
discriminator:
propertyName: '@type'
mapping:
Note: '#/components/schemas/Note_FVO'
PlaceRefOrValue:
type: object
description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the Place entity and not the PlaceRefOrValue class itself
oneOf:
- $ref: '#/components/schemas/GeographicLocation'
- $ref: '#/components/schemas/GeographicSite'
- $ref: '#/components/schemas/GeographicAddress'
- $ref: '#/components/schemas/PlaceRef'
discriminator:
propertyName: '@type'
mapping:
GeographicLocation: '#/components/schemas/GeographicLocation'
GeographicSite: '#/components/schemas/GeographicSite'
GeographicAddress: '#/components/schemas/GeographicAddress'
PlaceRef: '#/components/schemas/PlaceRef'
PartyCreditProfile_FVO:
allOf:
- $ref: '#/components/schemas/Entity_FVO'
- type: object
description: An individual might be evaluated for its worthiness and this evaluation might be based on a credit rating given by a credit agency.
properties:
creditAgencyName:
type: string
description: Name of the credit agency giving the score
creditAgencyType:
type: string
description: Type of the credit agency giving the score
ratingReference:
type: string
description: Reference corresponding to the credit rating
ratingScore:
type: integer
format: int32
description: A measure of a party's creditworthiness calculated on the basis of a combination of factors such as their income and credit history
validFor:
$ref: '#/components/schemas/TimePeriod'
discriminator:
propertyName: '@type'
mapping:
PartyCreditProfile: '#/components/schemas/PartyCreditProfile_FVO'
ChannelRef_FVO:
type: object
description: The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc..
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
discriminator:
propertyName: '@type'
mapping:
ChannelRef: '#/components/schemas/ChannelRef_FVO'
Place_MVO:
type: object
description: Place reference.
allOf:
- $ref: '#/components/schemas/Entity_MVO'
discriminator:
propertyName: '@type'
mapping:
Place: '#/components/schemas/Place_MVO'
GeographicSite: '#/components/schemas/GeographicSite_MVO'
GeographicLocation: '#/components/schemas/GeographicLocation_MVO'
GeographicAddress: '#/components/schemas/GeographicAddress_MVO'
GeographicSiteRelationship_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
properties:
href:
type: string
description: Reference of the related geographic site
role:
type: string
description: Role of the related site in the relationship
validFor:
$ref: '#/components/schemas/TimePeriod'
id:
type: string
description: Unique identifier of the related site entity within the server
relationshipType:
type: string
description: Type of relationship
required:
- id
- relationshipType
discriminator:
propertyName: '@type'
mapping:
GeographicSiteRelationship: '#/components/schemas/GeographicSiteRelationship_FVO'
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'
Producer_FVO:
type: object
allOf:
- $ref: '#/components/schemas/PartyRole_FVO'
OrganizationRef_FVO:
type: object
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
discriminator:
propertyName: '@type'
mapping:
OrganizationRef: '#/components/schemas/OrganizationRef_FVO'
ProductSpecificationRef_FVO:
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
- 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_FVO'
discriminator:
propertyName: '@type'
mapping:
ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef_FVO'
GeographicSite_FVO:
allOf:
- $ref: '#/components/schemas/Place_FVO'
- type: object
properties:
code:
type: string
description: 'A code that may be used for some addressing schemes eg: [ANSI T1.253-1999]'
creationDate:
type: string
format: date-time
description: Date and time when the GeographicSite was created
description:
type: string
description: Text describing additional information regarding the site
status:
type: string
description: The condition of the GeographicSite, such as planned, underConstruction, cancelled, active, inactive, former
relatedParty:
type: array
items:
$ref: '#/components/schemas/RelatedPartyOrPartyRole_FVO'
externalIdentifier:
type: array
items:
$ref: '#/components/schemas/ExternalIdentifier_FVO'
calendar:
type: array
items:
$ref: '#/components/schemas/CalendarPeriod_FVO'
place:
type: array
items:
$ref: '#/components/schemas/PlaceRefOrValue_FVO'
siteRelationship:
type: array
items:
$ref: '#/components/schemas/GeographicSiteRelationship_FVO'
ProductOfferingQualificationItemRef:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: It's a productOfferingQualification item that has been executed previously.
properties:
productOfferingQualificationName:
type: string
description: Name of the related entity.
productOfferingQualificationHref:
type: string
description: Reference of the related entity.
'@referredType':
type: string
description: The actual type of the target instance when needed for disambiguation.
productOfferingQualificationId:
type: string
description: Unique identifier of a related entity.
itemId:
type: string
description: Id of an item of a product offering qualification
discriminator:
propertyName: '@type'
mapping:
ProductOfferingQualificationItemRef: '#/components/schemas/ProductOfferingQualificationItemRef'
ProductRefOrValue:
type: object
description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the Product entity and not the ProductRefOrValue class itself
oneOf:
- $ref: '#/components/schemas/Product'
- $ref: '#/components/schemas/ProductRef'
discriminator:
propertyName: '@type'
mapping:
Product: '#/components/schemas/Product'
ProductRef: '#/components/schemas/ProductRef'
Organization:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
description: Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data.
properties:
isLegalEntity:
type: boolean
description: If value is true, the organization is a legal entity known by a national referential.
isHeadOffice:
type: boolean
description: If value is true, the organization is the head office
organizationType:
type: string
description: Type of Organization (company, department...)
existsDuring:
$ref: '#/components/schemas/TimePeriod'
name:
type: string
description: Organization name (department name for example)
nameType:
type: string
description: 'Type of the name : Co, Inc, Ltd, etc.'
status:
$ref: '#/components/schemas/OrganizationStateType'
otherName:
type: array
items:
$ref: '#/components/schemas/OtherNameOrganization'
description: List of additional names by which the organization is known
organizationIdentification:
type: array
items:
$ref: '#/components/schemas/OrganizationIdentification'
description: List of official identifiers given to the organization, for example company number in the registry of companies
organizationChildRelationship:
type: array
items:
$ref: '#/components/schemas/OrganizationChildRelationship'
description: List of organizations that are contained within this organization. For example if this organization is the Legal Department, the child organizations might include Claims, Courts, Contracts
organizationParentRelationship:
$ref: '#/components/schemas/OrganizationParentRelationship'
tradingName:
type: string
description: Name that the organization (unit) trades under
Consumer_FVO:
type: object
allOf:
- $ref: '#/components/schemas/PartyRole_FVO'
ContactMedium_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Indicates the contact medium that could be used to contact the party.
properties:
id:
type: string
description: Identifier for this contact medium.
preferred:
type: boolean
description: If true, indicates that is the preferred contact medium
contactType:
type: string
description: Type of the contact medium to qualifiy it like pro email / personal email. This is not used to define the contact medium used.
validFor:
$ref: '#/components/schemas/TimePeriod'
discriminator:
propertyName: '@type'
mapping:
ContactMedium: '#/components/schemas/ContactMedium_MVO'
HourPeriod_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
properties:
endHour:
type: string
description: The time when the status ends applying
startHour:
type: string
description: The time when the status starts applying
discriminator:
propertyName: '@type'
mapping:
HourPeriod: '#/components/schemas/HourPeriod_MVO'
Price_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price and Price Alteration.
properties:
dutyFreeAmount:
$ref: '#/components/schemas/Money'
percentage:
type: number
format: float
description: Percentage to apply for ProdOfferPriceAlteration
taxIncludedAmount:
$ref: '#/components/schemas/Money'
taxRate:
type: number
format: float
description: Tax rate
discriminator:
propertyName: '@type'
mapping:
Price: '#/components/schemas/Price_MVO'
PriceAlteration_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Is an amount, usually of money, that modifies the price charged for an order item.
properties:
applicationDuration:
type: integer
description: Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge)
description:
type: string
description: A narrative that explains in detail the semantics of this order item price alteration
name:
type: string
description: Name of the order item price alteration
productOfferingPrice:
$ref: '#/components/schemas/ProductOfferingPriceRef_MVO'
priceType:
type: string
description: A category that describes the price such as recurring, one time and usage.
priority:
type: integer
description: Priority level for applying this alteration among all the defined alterations on the order item price
recurringChargePeriod:
type: string
description: Could be month, week...
unitOfMeasure:
type: string
description: Could be minutes, GB...
price:
$ref: '#/components/schemas/Price_MVO'
discriminator:
propertyName: '@type'
mapping:
PriceAlteration: '#/components/schemas/PriceAlteration_MVO'
Individual_FVO:
allOf:
- $ref: '#/components/schemas/Party_FVO'
- type: object
description: Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about.
properties:
gender:
type: string
description: Gender
placeOfBirth:
type: string
description: Reference to the place where the individual was born
countryOfBirth:
type: string
description: Country where the individual was born
nationality:
type: string
description: Nationality
maritalStatus:
type: string
description: Marital status (married, divorced, widow ...)
birthDate:
type: string
format: date-time
description: Birth date
deathDate:
type: string
format: date-time
description: Date of death
title:
type: string
description: Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ...
aristocraticTitle:
type: string
description: e.g. Baron, Graf, Earl
generation:
type: string
description: e.g.. Sr, Jr, III (the third)
preferredGivenName:
type: string
description: 'Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname'
familyNamePrefix:
type: string
description: Family name prefix
legalName:
type: string
description: Legal name or birth name (name one has for official purposes)
middleName:
type: string
description: Middles name or initial
name:
type: string
description: Full name flatten (first, middle, and last names) - this is the name that is expected to be presented in reference data types such as PartyRef, RelatedParty, etc. that refer to Individual
formattedName:
type: string
description: A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean)
location:
type: string
description: Temporary current location of the individual (may be used if the individual has approved its sharing)
status:
$ref: '#/components/schemas/IndividualStateType'
otherName:
type: array
items:
$ref: '#/components/schemas/OtherNameIndividual'
description: List of other names by which this individual is known
individualIdentification:
type: array
items:
$ref: '#/components/schemas/IndividualIdentification_FVO'
description: List of official identifications issued to the individual, such as passport, driving licence, social security number
disability:
type: array
items:
$ref: '#/components/schemas/Disability'
description: List of disabilities suffered by the individual
languageAbility:
type: array
items:
$ref: '#/components/schemas/LanguageAbility'
description: List of national languages known by the individual
skill:
type: array
items:
$ref: '#/components/schemas/Skill'
description: List of skills exhibited by the individual
familyName:
type: string
description: Contains the non-chosen or inherited name. Also known as last name in the Western context
givenName:
type: string
description: First name of the individual
Price:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price and Price Alteration.
properties:
dutyFreeAmount:
$ref: '#/components/schemas/Money'
percentage:
type: number
format: float
description: Percentage to apply for ProdOfferPriceAlteration
taxIncludedAmount:
$ref: '#/components/schemas/Money'
taxRate:
type: number
format: float
description: Tax rate
discriminator:
propertyName: '@type'
mapping:
Price: '#/components/schemas/Price'
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
EntityRelationship_FVO:
type: object
description: A uni-directionmal relationship from this entity to a target entity instance
properties:
href:
type: string
name:
type: string
role:
type: string
description: The association role for this entity
validFor:
$ref: '#/components/schemas/TimePeriod'
associationSpec:
$ref: '#/components/schemas/EntityRef_FVO'
'@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
relationshipType:
type: string
description: Type of relationship such as migration, substitution, dependency, exclusivity
id:
type: string
'@referredType':
type: string
'@type':
type: string
required:
- relationshipType
- id
- '@referredType'
- '@type'
Individual:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
description: Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about.
properties:
gender:
type: string
description: Gender
placeOfBirth:
type: string
description: Reference to the place where the individual was born
countryOfBirth:
type: string
description: Country where the individual was born
nationality:
type: string
description: Nationality
maritalStatus:
type: string
description: Marital status (married, divorced, widow ...)
birthDate:
type: string
format: date-time
description: Birth date
deathDate:
type: string
format: date-time
description: Date of death
title:
type: string
description: Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ...
aristocraticTitle:
type: string
description: e.g. Baron, Graf, Earl
generation:
type: string
description: e.g.. Sr, Jr, III (the third)
preferredGivenName:
type: string
description: 'Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname'
familyNamePrefix:
type: string
description: Family name prefix
legalName:
type: string
description: Legal name or birth name (name one has for official purposes)
middleName:
type: string
description: Middles name or initial
name:
type: string
description: Full name flatten (first, middle, and last names) - this is the name that is expected to be presented in reference data types such as PartyRef, RelatedParty, etc. that refer to Individual
formattedName:
type: string
description: A fully formatted name in one string with
# --- truncated at 32 KB (382 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-productorder-api-openapi.yml