TM Forum product API

Operations for Product Resource

OpenAPI Specification

tm-forum-product-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Catalog Management agreement product 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: 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:
    Expression_MVO:
      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_MVO'
    GeographicLocationRef_FVO:
      type: object
      allOf:
      - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          GeographicLocationRef: '#/components/schemas/GeographicLocationRef_FVO'
    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'
    AgreementRef:
      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'
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementRef: '#/components/schemas/AgreementRef'
    ContactMedium:
      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'
    ProductRef:
      type: object
      description: A Product reference
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRef: '#/components/schemas/ProductRef'
    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
    StandardIdentifier:
      allOf:
      - $ref: '#/components/schemas/Entity'
      - type: object
        description: The corresponding identification of the resource in different standard, regulatory definitions. The standard specification identifier (e.g., ISO 3166-1 Alpha-2) and the corresponding value (e.g., BE) relevant to a particular resource. It is anticipated that multiple standards can provide definitions for a single entity, e.g., a country identifier can be specified in various standards (e.g., "ISO 3166-1 Alpha 2",  "ISO 3166-1 Alpha 3", "ISO 3166-1 Numeric")
        properties:
          format:
            type: string
            description: Standard/Regulatory definition identifier. e.g., ISO 3166-1
            example: ISO 3166-1
          value:
            type: string
            description: The value of the resource in the corresponding standard.e.g., a country code value
            example: GB
      discriminator:
        propertyName: '@type'
        mapping:
          StandardIdentifier: '#/components/schemas/StandardIdentifier'
    PlaceRef:
      type: object
      description: Place reference.
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          PlaceRef: '#/components/schemas/PlaceRef'
    Product_FVO:
      allOf:
      - $ref: '#/components/schemas/Entity_FVO'
      - 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_FVO'
          billingAccount:
            $ref: '#/components/schemas/BillingAccountRef_FVO'
          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_FVO'
          productOffering:
            $ref: '#/components/schemas/ProductOfferingRef_FVO'
          productOrderItem:
            type: array
            items:
              $ref: '#/components/schemas/RelatedOrderItem_FVO'
          product:
            type: array
            items:
              $ref: '#/components/schemas/ProductRefOrValue_FVO'
          productPrice:
            type: array
            items:
              $ref: '#/components/schemas/ProductPrice_FVO'
          productRelationship:
            type: array
            items:
              $ref: '#/components/schemas/ProductRelationship_FVO'
          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_FVO'
          productTerm:
            type: array
            items:
              $ref: '#/components/schemas/ProductTerm_FVO'
          realizingResource:
            type: array
            items:
              $ref: '#/components/schemas/ResourceRef_FVO'
          realizingService:
            type: array
            items:
              $ref: '#/components/schemas/ServiceRef_FVO'
          relatedParty:
            type: array
            items:
              $ref: '#/components/schemas/RelatedPartyOrPartyRole_FVO'
          place:
            type: array
            items:
              $ref: '#/components/schemas/RelatedPlaceRefOrValue_FVO'
          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_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Product: '#/components/schemas/Product_FVO'
    PartyOrPartyRole_FVO:
      type: object
      description: ''
      oneOf:
      - $ref: '#/components/schemas/PartyRef_FVO'
      - $ref: '#/components/schemas/PartyRoleRef_FVO'
      - $ref: '#/components/schemas/Individual_FVO'
      - $ref: '#/components/schemas/Organization_FVO'
      - $ref: '#/components/schemas/PartyRole_FVO'
      - $ref: '#/components/schemas/Supplier_FVO'
      - $ref: '#/components/schemas/BusinessPartner_FVO'
      - $ref: '#/components/schemas/Consumer_FVO'
      - $ref: '#/components/schemas/Producer_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRef: '#/components/schemas/PartyRef_FVO'
          PartyRoleRef: '#/components/schemas/PartyRoleRef_FVO'
          Individual: '#/components/schemas/Individual_FVO'
          Organization: '#/components/schemas/Organization_FVO'
          PartyRole: '#/components/schemas/PartyRole_FVO'
          Supplier: '#/components/schemas/Supplier_FVO'
          BusinessPartner: '#/components/schemas/BusinessPartner_FVO'
          Consumer: '#/components/schemas/Consumer_FVO'
          Producer: '#/components/schemas/Producer_FVO'
    GeographicLocationRef_MVO:
      type: object
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          GeographicLocationRef: '#/components/schemas/GeographicLocationRef_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'
    Intent_MVO:
      allOf:
      - $ref: '#/components/schemas/Entity_MVO'
      - type: object
        description: An Intent instance is the formal description of all expectations including requirements, goals, and constraints given to a technical system
        properties:
          description:
            type: string
            description: The description of the intent.
          validFor:
            $ref: '#/components/schemas/TimePeriod'
          isBundle:
            type: boolean
            description: isBundle determines whether an intent represents a single intent (false), or a bundle of intents(true).
          priority:
            type: string
            description: Can be used by intent owner to prioritize intents in an intent management system
          statusChangeDate:
            type: string
            format: date-time
            description: A date time( DateTime). The date that the entity status changed to the current one
          context:
            type: string
            description: A string used to give a context to the intent
          version:
            type: string
            description: A field that identifies the specific version of an instance of an intent.
          intentSpecification:
            $ref: '#/components/schemas/EntityRef'
          intentRelationship:
            type: array
            items:
              $ref: '#/components/schemas/EntityRelationship_MVO'
            description: A list of intents related to this intent
          characteristic:
            type: array
            items:
              $ref: '#/components/schemas/Characteristic_MVO'
          relatedParty:
            type: array
            items:
              $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_MVO'
          attachment:
            type: array
            items:
              $ref: '#/components/schemas/AttachmentRefOrValue_MVO'
            description: Attachments that may be of relevance to this intent, such as picture, document, media
          name:
            type: string
            description: The name of the intent.
          expression:
            $ref: '#/components/schemas/Expression_MVO'
          creationDate:
            type: string
            format: date-time
            description: Date and time of the creation of this REST resource
          lastUpdate:
            type: string
            format: date-time
            description: Date and time of the last update of this REST resource
          lifecycleStatus:
            type: string
            description: Used to indicate the current lifecycle status of this intent
      discriminator:
        propertyName: '@type'
        mapping:
          Intent: '#/components/schemas/Intent_MVO'
    Supplier_MVO:
      type: object
      description: 'When business partner is the Supplier '
      allOf:
      - $ref: '#/components/schemas/PartyRole_MVO'
    ProductRefOrValue_MVO:
      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_MVO'
      - $ref: '#/components/schemas/ProductRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Product: '#/components/schemas/Product_MVO'
          ProductRef: '#/components/schemas/ProductRef_MVO'
    OrganizationChildRelationship_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - type: object
        description: Child 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:
          OrganizationChildRelationship: '#/components/schemas/OrganizationChildRelationship_MVO'
    PartyRoleRef_MVO:
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: Party role reference. A party role represents the part played by a party in a given context.
        properties:
          partyId:
            type: string
            description: The identifier of the engaged party that is linked to the PartyRole object.
          partyName:
            type: string
            description: The name of the engaged party that is linked to the PartyRole object.
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
    PartyRefOrPartyRoleRef_MVO:
      type: object
      description: ''
      oneOf:
      - $ref: '#/components/schemas/PartyRef_MVO'
      - $ref: '#/components/schemas/PartyRoleRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRef: '#/components/schemas/PartyRef_MVO'
          PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
    Producer:
      type: object
      allOf:
      - $ref: '#/components/schemas/PartyRole'
    ProductRelationship_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: Used to describe relationship between product.
        properties:
          id:
            type: string
            description: Id of the related product
          relationshipType:
            type: string
            description: Relationship type as relies on, bundles, etc...
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRelationship: '#/components/schemas/ProductRelationship_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
    RelatedOrderItem_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - type: object
        description: It's a Order item that has been executed previously.
        properties:
          orderItemAction:
            $ref: '#/components/schemas/ItemActionType'
          orderHref:
            type: string
            description: Reference of the related entity.
          '@referredType':
            type: string
            description: The actual type of the target instance when needed for disambiguation.
          role:
            type: string
            description: Role played by the  Order
          orderId:
            type: string
            description: Unique identifier of a related  Order.
          orderItemId:
            type: string
            description: Id of an item of a prduct order
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedOrderItem: '#/components/schemas/RelatedOrderItem_MVO'
    Attachment:
      allOf:
      - $ref: '#/components/schemas/Entity'
      - type: object
        description: Complements the description of an element (for instance a product) through video, pictures...
        properties:
          name:
            type: string
            description: The name of the attachment
          description:
            type: string
            description: A narrative text describing the content of the attachment
            example: Photograph of the Product
          url:
            type: string
            description: Uniform Resource Locator, is a web page address (a subset of URI)
            example: http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f
          content:
            type: string
            format: base64
            description: The actual contents of the attachment object, if embedded, encoded as base64
          size:
            $ref: '#/components/schemas/Quantity'
          validFor:
            $ref: '#/components/schemas/TimePeriod'
          attachmentType:
            type: string
            description: a business characterization of the purpose of the attachment, for example logo, instructionManual, contractCopy
          mimeType:
            type: string
            description: a technical characterization of the attachment content format using IETF Mime Types
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment'
    GeographicSite:
      allOf:
      - $ref: '#/components/schemas/Place'
      - 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'
          externalIdentifier:
            type: array
            items:
              $ref: '#/components/schemas/ExternalIdentifier'
          calendar:
            type: array
            items:
              $ref: '#/components/schemas/CalendarPeriod'
          place:
            type: array
            items:
              $ref: '#/components/schemas/PlaceRefOrValue'
          siteRelationship:
            type: array
            items:
              $ref: '#/components/schemas/GeographicSiteRelationship'
    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'
    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'
    CalendarPeriod_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - 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_MVO'
          status:
            type: string
            description: 'Indication of the availability of the caledar period (e.g.: available, booked, etc.)'
      discriminator:
        propertyName: '@type'
        mapping:
          CalendarPeriod: '#/components/schemas/CalendarPeriod_MVO'
    PaymentMethodRef:
      type: object
      description: PaymentMethod reference. A payment method defines a specific mean of payment (e.g direct debit).
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          PaymentMethodRef: '#/components/schemas/PaymentMethodRef'
    AccountRef:
      type: object
      description: Account reference. A account may be a party account or a financial account.
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          AccountRef: '#/components/schemas/AccountRef'
    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'
    RelatedOrderItem_FVO:
      allOf:
      - $ref: '#/components/schemas/Extensible_FVO'
      - type: object
        description: It's a Order item that has been executed previously.
        properties:
          orderItemAction:
            $ref: '#/components/schemas/ItemActionType'
          orderHref:
            type: string
            description: Reference of the related entity.
          '@referredType':
            type: string
            description: The actual type of the target instance when needed for disambiguation.
          role:
            type: string
            description: Role played by the  Order
          orderId:
            type: string
            description: Unique identifier of a related  Order.
          orderItemId:
            type: string
            description: Id of an item of a prduct order
        required:
        - role
        - orderId
        - orderItemId
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedOrderItem: '#/components/schemas/RelatedOrderItem_FVO'
    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
 

# --- 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