Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: ProductInventory Product API
description: '**TMF API Reference : TMF 637 - Product Inventory Management**
September 2023
The Product Inventory Management API provides standardized mechanism for product inventory management such as creation, update and retrieval of the representation of a product in the inventory. It also allows the notification of events related to product lifecycle
**Product resource**
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).
Product Inventory API performs the following operations on product :
- Retrieval of a product or a collection of products depending on filter criteria
- Partial update of a product (including updating rules and for administration purpose)
- Creation of a product (including default values and creation rules and for administration purpose)
- Deletion of a product (for administration purposes)
- Notification of events on product.
Copyright © TM Forum 2021. All Rights Reserved
'
version: 5.0.0
servers:
- url: https://serverRoot
tags:
- name: product
description: Operations for Product Resource
paths:
/product:
get:
tags:
- product
summary: TM Forum List or Find Product Objects
description: List or find Product objects
operationId: listProduct
parameters:
- $ref: '#/components/parameters/Fields'
- $ref: '#/components/parameters/Offset'
- $ref: '#/components/parameters/Limit'
responses:
'200':
$ref: '#/components/responses/200ProductArray'
'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:
- product
summary: TM Forum Creates a Product
description: This operation creates a Product entity.
operationId: createProduct
parameters:
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/Product_FVO'
responses:
'201':
$ref: '#/components/responses/201Product'
'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'
/product/{id}:
get:
tags:
- product
summary: TM Forum Retrieves a Product by ID
description: This operation retrieves a Product entity. Attribute selection enabled for all first level attributes.
operationId: retrieveProduct
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
responses:
'200':
$ref: '#/components/responses/200Product_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:
- product
summary: TM Forum Deletes a Product
description: This operation deletes a Product entity.
operationId: deleteProduct
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:
- product
summary: TM Forum Updates Partially a Product
description: This operation updates partially a Product entity.
operationId: patchProduct
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/Fields'
requestBody:
$ref: '#/components/requestBodies/Product_MVO'
responses:
'200':
$ref: '#/components/responses/200Product_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:
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
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'
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'
PartyRoleSpecificationRef:
type: object
description: Party role specification reference. A party role specification gives additional details on the part played by a party in a given context.
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
PartyRoleSpecificationRef: '#/components/schemas/PartyRoleSpecificationRef'
OrganizationParentRelationship_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Parent references of an organization in a structure of organizations.
properties:
relationshipType:
type: string
description: Type of the relationship. Could be juridical, hierarchical, geographical, functional for example.
organization:
$ref: '#/components/schemas/OrganizationRef_MVO'
discriminator:
propertyName: '@type'
mapping:
OrganizationParentRelationship: '#/components/schemas/OrganizationParentRelationship_MVO'
ExpressionLanguageEnum:
enum:
- Turtle
- JSON-LD
- RDF-XML
- Other
type: string
description: Possible values for the serialized Expression language of an intent or Intent report
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'
OtherNameOrganization_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: Keeps track of other names, for example the old name of an organization.
properties:
tradingName:
type: string
description: The name that the organization trades under
nameType:
type: string
description: Co. , Inc. , Ltd. , Pty Ltd. , Plc; , Gmbh
name:
type: string
description: Organization name (department name for example)
validFor:
$ref: '#/components/schemas/TimePeriod'
discriminator:
propertyName: '@type'
mapping:
OtherNameOrganization: '#/components/schemas/OtherNameOrganization_FVO'
Entity:
type: object
description: Base entity schema for use in TMForum Open-APIs. Property.
allOf:
- $ref: '#/components/schemas/Extensible'
- $ref: '#/components/schemas/Addressable'
GeographicLocationRef_MVO:
type: object
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
GeographicLocationRef: '#/components/schemas/GeographicLocationRef_MVO'
PartyRef:
type: object
description: A Party reference
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
PartyRef: '#/components/schemas/PartyRef'
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'
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'
TaxExemptionCertificate_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- 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_FVO'
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_FVO'
discriminator:
propertyName: '@type'
mapping:
TaxExemptionCertificate: '#/components/schemas/TaxExemptionCertificate_FVO'
EntityRelationship_MVO:
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'
'@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
Expression:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Expression is the ontology-encoded form of the Intent
properties:
expressionLanguage:
$ref: '#/components/schemas/ExpressionLanguageEnum'
iri:
type: string
description: Internationalized Resource Identifier of the intent Expression
expressionValue:
type: string
description: expression value is the ontology-encoded form of the Intent such as RDF-XML, Turtle, Json-LD,...
discriminator:
propertyName: '@type'
mapping:
Expression: '#/components/schemas/Expression'
RelatedPlaceRefOrValue_MVO:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Entity reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the RelatedPlace entity and not the RelatedPlaceRefOrValue class itself
properties:
role:
type: string
place:
$ref: '#/components/schemas/PlaceRefOrValue_MVO'
discriminator:
propertyName: '@type'
mapping:
RelatedPlaceRefOrValue: '#/components/schemas/RelatedPlaceRefOrValue_MVO'
GeographicSubAddress:
allOf:
- $ref: '#/components/schemas/Entity'
- 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'
subAddressType:
type: string
description: 'Type of subAddress : it can be a subunit or a private street'
discriminator:
propertyName: '@type'
mapping:
GeographicSubAddress: '#/components/schemas/GeographicSubAddress'
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'
OrganizationParentRelationship:
allOf:
- $ref: '#/components/schemas/Extensible'
- type: object
description: Parent references of an organization in a structure of organizations.
properties:
relationshipType:
type: string
description: Type of the relationship. Could be juridical, hierarchical, geographical, functional for example.
organization:
$ref: '#/components/schemas/OrganizationRef'
discriminator:
propertyName: '@type'
mapping:
OrganizationParentRelationship: '#/components/schemas/OrganizationParentRelationship'
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'
ResourceRef:
type: object
description: Resource reference, for when Resource is used by other entities.
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
ResourceRef: '#/components/schemas/ResourceRef'
ResourceRef_FVO:
type: object
description: Resource reference, for when Resource is used by other entities.
allOf:
- $ref: '#/components/schemas/EntityRef_FVO'
discriminator:
propertyName: '@type'
mapping:
ResourceRef: '#/components/schemas/ResourceRef_FVO'
CalendarPeriod_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
properties:
day:
type: string
description: 'Day where the calendar status applies (e.g.: monday, mon-to-fri, weekdays, weekend, all week, ...)'
timeZone:
type: string
description: 'Indication of the timezone applicable to the calendar information (e.g.: Paris, GMT+1)'
hourPeriod:
type: array
items:
$ref: '#/components/schemas/HourPeriod_FVO'
status:
type: string
description: 'Indication of the availability of the caledar period (e.g.: available, booked, etc.)'
required:
- status
discriminator:
propertyName: '@type'
mapping:
CalendarPeriod: '#/components/schemas/CalendarPeriod_FVO'
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'
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'
PartyOrPartyRole_MVO:
type: object
description: ''
oneOf:
- $ref: '#/components/schemas/PartyRef_MVO'
- $ref: '#/components/schemas/PartyRoleRef_MVO'
- $ref: '#/components/schemas/Individual_MVO'
- $ref: '#/components/schemas/Organization_MVO'
- $ref: '#/components/schemas/PartyRole_MVO'
- $ref: '#/components/schemas/Supplier_MVO'
- $ref: '#/components/schemas/BusinessPartner_MVO'
- $ref: '#/components/schemas/Consumer_MVO'
- $ref: '#/components/schemas/Producer_MVO'
discriminator:
propertyName: '@type'
mapping:
PartyRef: '#/components/schemas/PartyRef_MVO'
PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
Individual: '#/components/schemas/Individual_MVO'
Organization: '#/components/schemas/Organization_MVO'
PartyRole: '#/components/schemas/PartyRole_MVO'
Supplier: '#/components/schemas/Supplier_MVO'
BusinessPartner: '#/components/schemas/BusinessPartner_MVO'
Consumer: '#/components/schemas/Consumer_MVO'
Producer: '#/components/schemas/Producer_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'
IntentRefOrValue:
type: object
description: Intent Ref (if Intent already exists) or Value (if Intent be created or its details be presented)
oneOf:
- $ref: '#/components/schemas/IntentRef'
- $ref: '#/components/schemas/Intent'
discriminator:
propertyName: '@type'
mapping:
IntentRef: '#/components/schemas/IntentRef'
Intent: '#/components/schemas/Intent'
ResourceRef_MVO:
type: object
description: Resource reference, for when Resource is used by other entities.
allOf:
- $ref: '#/components/schemas/EntityRef'
discriminator:
propertyName: '@type'
mapping:
ResourceRef: '#/components/schemas/ResourceRef_MVO'
ProductPrice_FVO:
allOf:
- $ref: '#/components/schemas/Extensible_FVO'
- type: object
description: Description of price and discount awarded
properties:
description:
type: string
description: Description of the Product price
name:
type: string
description: Name of the Product price
productOfferingPrice:
$ref: '#/components/schemas/ProductOfferingPriceRef_FVO'
recurringChargePeriod:
type: string
description: Used for recurring charge to indicate period (month, week, etc..).
unitOfMeasure:
type: string
description: Unit of Measure if price depending on it (Gb, SMS volume, etc..)
price:
$ref: '#/components/schemas/Price_FVO'
priceAlteration:
type: array
items:
$ref: '#/components/schemas/PriceAlteration_FVO'
priceType:
type: string
descripti
# --- truncated at 32 KB (259 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-product-api-openapi.yml