Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: ProductOrdering Product Order API
description: "**TMF API Reference : TMF 622 - Product Ordering Management**\n\n** June 2023**\n\nThe Product Ordering API provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order Negotiation systems in a consistent manner. A product order is created based on a product offer that is defined in a catalog. The product offer identifies the product or set of products that are available to a customer, and includes characteristics such as pricing, product options and market. This API provide a task based resource to request order cancellation.\n\nThe product order references the product offer and identifies any specific requests made by the customer.\n\n**Product Order resource**\nA Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa. Main Product Order attributes are its identifier, state, priority category (mass market, Enterprise, etc.) related dates (start, completion, etc.), related billing account, related parties and order items. Main Order Items (aka order lines) attributes are the ordered offering and product characteristics with the related action to be performed (e.g. add or delete the products), state, location information for delivery, order item price and price alteration.\n\nProduct Order API performs the following operations on product order :\n\n * Retrieval of a product order or a collection of product orders depending on filter criteria\n * Partial update of a product order (including updating rules)\n * Creation of a product order (including default values and creation rules) - The productOrder could be created \n in draft (the product order requester is not yet ready to submit it and draft order could be freely updated) or requester could\n ask to an acknowledged state which means that requester submitted the order.\n * Deletion of product order (for administration purposes)\n * Notification of events on product order.\n\n**cancelProductOrder resource**\nThis resource is used to request a product order cancellation.\nProduct Order API performs the following operations on CancelProductOrder resource :\n\n * Retrieval of a cancel product order or a collection of cancel product orders \n * Creation of a cancel product order \n * Notification of events on cancel product order.\n\nCopyright © TM Forum 2021. All Rights Reserved\n"
version: 5.0.0
servers:
- url: https://serverRoot
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:
BillingAccountRef_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- $ref: '#/components/schemas/EntityRef_FVO'
- type: object
description: BillingAccount reference. A BillingAccount is a detailed description of a bill structure.
properties:
ratingType:
type: string
description: Indicates whether the account follows a specific payment option such as prepaid or postpaid
discriminator:
propertyName: '@type'
mapping:
BillingAccountRef: '#/components/schemas/BillingAccountRef_FVO'
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'
OrderItemRelationship_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: Used to describe relationship between Order item. These relationship could have an impact on pricing and conditions
properties:
id:
type: string
description: Id of the related Order item (must be in the same Order)
relationshipType:
type: string
description: Relationship type as relies on, bundles, etc...
required:
- id
- relationshipType
discriminator:
propertyName: '@type'
mapping:
OrderItemRelationship: '#/components/schemas/OrderItemRelationship_FVO'
RelatedPartyOrPartyRole_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity
properties:
role:
description: Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer', 'salesAgent', 'user'
type: string
partyOrPartyRole:
$ref: '#/components/schemas/PartyOrPartyRole_FVO'
required:
- role
discriminator:
propertyName: '@type'
mapping:
RelatedPartyOrPartyRole: '#/components/schemas/RelatedPartyOrPartyRole_FVO'
OrderPrice_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: An amount, usually of money, that represents the actual price paid by the Customer for this item or this order
properties:
description:
type: string
description: A narrative that explains in detail the semantics of this order item price.
name:
type: string
description: A short descriptive name such as "Subscription price".
productOfferingPrice:
$ref: '#/components/schemas/ProductOfferingPriceRef_MVO'
recurringChargePeriod:
type: string
description: Could be month, week...
unitOfMeasure:
type: string
description: Could be minutes, GB...
billingAccount:
$ref: '#/components/schemas/BillingAccountRef_MVO'
priceAlteration:
type: array
description: a strucuture used to describe a price alteration
items:
$ref: '#/components/schemas/PriceAlteration_MVO'
price:
$ref: '#/components/schemas/Price_MVO'
priceType:
type: string
description: indicate if the price is for recurrent or no-recurrent charge
discriminator:
propertyName: '@type'
mapping:
OrderPrice: '#/components/schemas/OrderPrice_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'
ProductOrderStateType:
enum:
- acknowledged
- rejected
- pending
- held
- inProgress
- cancelled
- completed
- failed
- partial
- assessingCancellation
- pendingCancellation
- draft
- inProgress.accepted
type: string
description: Possible values for the state of the order
TaxDefinition_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Reference of a tax definition. A tax is levied by an authorized tax jurisdiction. For example, there are many different types of tax (Federal Tax levied by the US Government, State Tax levied by the State of California, City Tax levied by the City of Los Angeles, etc.).
properties:
id:
type: string
description: Unique identifier of the tax.
name:
type: string
description: Tax name.
validFor:
$ref: '#/components/schemas/TimePeriod'
jurisdictionName:
type: string
description: Name of the jurisdiction that levies the tax
example: USA
jurisdictionLevel:
type: string
description: Level of the jurisdiction that levies the tax
example: Country
taxType:
type: string
description: Type of the tax.
example: VAT
discriminator:
propertyName: '@type'
mapping:
TaxDefinition: '#/components/schemas/TaxDefinition_MVO'
RelatedPartyOrPartyRole_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity
properties:
role:
description: Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer', 'salesAgent', 'user'
type: string
partyOrPartyRole:
$ref: '#/components/schemas/PartyOrPartyRole_MVO'
discriminator:
propertyName: '@type'
mapping:
RelatedPartyOrPartyRole: '#/components/schemas/RelatedPartyOrPartyRole_MVO'
TaxExemptionCertificate:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: A tax exemption certificate represents a tax exemption granted to a party (individual or organization) by a tax jurisdiction which may be a city, state, country,... An exemption has a certificate identifier (received from the jurisdiction that levied the tax) and a validity period. An exemption is per tax types and determines for each type of tax what portion of the tax is exempted (partial by percentage or complete) via the tax definition.
properties:
id:
type: string
description: Identifier of the tax exemption within list of the exemptions
taxDefinition:
type: array
items:
$ref: '#/components/schemas/TaxDefinition'
description: A list of taxes that are covered by the exemption, e.g. City Tax, State Tax. The definition would include the exemption (e.g. for a rate exemption 0% would be a full exemption, 5% could be a partial exemption if the actual rate was 10%).
validFor:
$ref: '#/components/schemas/TimePeriod'
certificateNumber:
type: string
description: Identifier of a document that shows proof of exemption from taxes for the taxing jurisdiction
issuingJurisdiction:
type: string
description: Name of the jurisdiction that issued the exemption
example: USA
reason:
type: string
description: Reason for the tax exemption
attachment:
$ref: '#/components/schemas/AttachmentRefOrValue'
discriminator:
propertyName: '@type'
mapping:
TaxExemptionCertificate: '#/components/schemas/TaxExemptionCertificate'
Party_FVO:
allOf:
- $ref: '#/components/schemas/Entity_FVO'
- type: object
description: Generic and Abstract Party structure used to define commonalities between sub concepts of Individual and Organization.
properties:
externalReference:
type: array
items:
$ref: '#/components/schemas/ExternalIdentifier_FVO'
description: List of identifiers of the Party in an external system, for example when party information is imported from a commerce system
partyCharacteristic:
type: array
items:
$ref: '#/components/schemas/Characteristic_FVO'
description: List of additional characteristics that a Party can take on.
taxExemptionCertificate:
type: array
items:
$ref: '#/components/schemas/TaxExemptionCertificate_FVO'
description: List of tax exemptions granted to the party. For example, a war veteran might have partial exemption from state tax and a full exemption from federal tax
creditRating:
type: array
items:
$ref: '#/components/schemas/PartyCreditProfile_FVO'
description: List of credit profiles and scores for the party, typically received from an external credit broker
relatedParty:
type: array
items:
$ref: '#/components/schemas/RelatedPartyOrPartyRole_FVO'
description: List of parties and/or party roles related to this party
contactMedium:
type: array
items:
$ref: '#/components/schemas/ContactMedium_FVO'
description: List of means for contacting the party, e.g. mobile phone, email address
discriminator:
propertyName: '@type'
mapping:
Party: '#/components/schemas/Party_FVO'
Organization: '#/components/schemas/Organization_FVO'
Individual: '#/components/schemas/Individual_FVO'
OrganizationRef_MVO:
type: object
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
OrganizationRef: '#/components/schemas/OrganizationRef_MVO'
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
Characteristic:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Describes a given characteristic of an object or entity through a name/value pair.
properties:
id:
type: string
description: Unique identifier of the characteristic
name:
type: string
description: Name of the characteristic
valueType:
type: string
description: Data type of the value of the characteristic
characteristicRelationship:
type: array
items:
$ref: '#/components/schemas/CharacteristicRelationship'
discriminator:
propertyName: '@type'
mapping:
Characteristic: '#/components/schemas/Characteristic'
StringCharacteristic: '#/components/schemas/StringCharacteristic'
StringArrayCharacteristic: '#/components/schemas/StringArrayCharacteristic'
ObjectCharacteristic: '#/components/schemas/ObjectCharacteristic'
ObjectArrayCharacteristic: '#/components/schemas/ObjectArrayCharacteristic'
NumberCharacteristic: '#/components/schemas/NumberCharacteristic'
NumberArrayCharacteristic: '#/components/schemas/NumberArrayCharacteristic'
IntegerCharacteristic: '#/components/schemas/IntegerCharacteristic'
IntegerArrayCharacteristic: '#/components/schemas/IntegerArrayCharacteristic'
FloatCharacteristic: '#/components/schemas/FloatCharacteristic'
FloatArrayCharacteristic: '#/components/schemas/FloatArrayCharacteristic'
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'
Note_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- 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_MVO'
RelatedChannel:
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'
discriminator:
propertyName: '@type'
mapping:
RelatedChannel: '#/components/schemas/RelatedChannel'
OtherNameIndividual:
type: object
description: Keeps track of other names, for example the old name of a woman before marriage or an artist name.
properties:
title:
type: string
description: 'Use for titles (aristrocatic, social, ...): Pr, Dr, Sir,....'
aristocraticTitle:
type: string
description: e.g. Baron, Graf, Earl, etc.
generation:
type: string
description: e.g. Sr, Jr, etc.
givenName:
type: string
description: First name
preferredGivenName:
type: string
description: 'Contains the chosen name by which the person 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
familyName:
type: string
description: Contains the non-chosen or inherited name. Also known as last name in the Western context
legalName:
type: string
description: Legal name or birth name (name one has for official purposes)
middleName:
type: string
description: Middle name or initial
fullName:
type: string
description: Full name flatten (first, middle, and last names)
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, etc.)
validFor:
$ref: '#/components/schemas/TimePeriod'
Product_MVO:
allOf:
- $ref: '#/components/schemas/Entity_MVO'
- type: object
description: A product offering procured by a customer or other interested party playing a party role. A product is realized as one or more service(s) and / or resource(s).
properties:
agreementItem:
type: array
items:
$ref: '#/components/schemas/AgreementItemRef_MVO'
billingAccount:
$ref: '#/components/schemas/BillingAccountRef_MVO'
creationDate:
type: string
format: date-time
description: Date and time when the product was created
description:
type: string
description: Is the description of the product. It could be copied from the description of the Product Offering.
isBundle:
type: boolean
description: If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering.
isCustomerVisible:
type: boolean
description: If true, the product is visible by the customer.
name:
type: string
description: Name of the product. It could be the same as the name of the product offering
orderDate:
type: string
format: date-time
description: Is the date when the product was ordered
productCharacteristic:
type: array
items:
$ref: '#/components/schemas/Characteristic_MVO'
productOffering:
$ref: '#/components/schemas/ProductOfferingRef_MVO'
productOrderItem:
type: array
items:
$ref: '#/components/schemas/RelatedOrderItem_MVO'
product:
type: array
items:
$ref: '#/components/schemas/ProductRefOrValue_MVO'
productPrice:
type: array
items:
$ref: '#/components/schemas/ProductPrice_MVO'
productRelationship:
type: array
items:
$ref: '#/components/schemas/ProductRelationship_MVO'
productSerialNumber:
type: string
description: Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router.
productSpecification:
$ref: '#/components/schemas/ProductSpecificationRef_MVO'
productTerm:
type: array
items:
$ref: '#/components/schemas/ProductTerm_MVO'
realizingResource:
type: array
items:
$ref: '#/components/schemas/ResourceRef_MVO'
realizingService:
type: array
items:
$ref: '#/components/schemas/ServiceRef_MVO'
relatedParty:
type: array
items:
$ref: '#/components/schemas/RelatedPartyOrPartyRole_MVO'
place:
type: array
items:
$ref: '#/components/schemas/RelatedPlaceRefOrValue_MVO'
startDate:
type: string
format: date-time
description: Is the date from which the product starts
status:
$ref: '#/components/schemas/ProductStatusType'
terminationDate:
type: string
format: date-time
description: Is the date when the product was terminated
intent:
$ref: '#/components/schemas/IntentRefOrValue_MVO'
discriminator:
propertyName: '@type'
mapping:
Product: '#/components/schemas/Product_MVO'
GeographicSubAddress_FVO:
allOf:
- $ref: '#/components/schemas/Entity_FVO'
- type: object
description: "Representation of a GeographicSubAddress \nIt is used for addressing within a property in an urban area (country properties are often defined differently). It may refer to a building, a building cluster, or a floor of a multistory building."
properties:
buildingName:
type: string
description: allows for buildings that have well-known names
href:
type: string
description: Link to the subAddress
id:
type: string
description: Unique Identifier of the subAddress
levelNumber:
type: string
description: used where a level type may be repeated e.g. BASEMENT 1, BASEMENT 2
levelType:
type: string
description: describes level types within a building
name:
type: string
description: Name of the subAddress to identify it with a meaningful identification
privateStreetName:
type: string
description: private streets internal to a property (e.g. a university) may have internal names that are not recorded by the land title office.
privateStreetNumber:
type: string
description: private streets numbers internal to a private street
subUnit:
type: array
description: Representation of a SubUnit. It is used for describing subunit within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT, WHARF.
items:
$ref: '#/components/schemas/GeographicSubAddressUnit_FVO'
subAddressType:
type: string
description: 'Type of subAddress : it can be a subunit or a private street'
discriminator:
propertyName: '@type'
mapping:
GeographicSubAddress: '#/components/schemas/GeographicSubAddress_FVO'
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 impo
# --- truncated at 32 KB (384 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-productorder-api-openapi.yml