TM Forum product API

Operations for Product Resource

Operations 5

GET /product TM Forum List or Find Product Objects #
POST /product TM Forum Creates a Product #
GET /product/{id} TM Forum Retrieves a Product by ID #
DELETE /product/{id} TM Forum Deletes a Product #
PATCH /product/{id} TM Forum Updates Partially a Product #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tm-forum-product-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tm-forum-product-api-openapi.yml Raw ↑
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