TMF622 Product Order Management

The Product Ordering Management API provides a standardized interface for managing product orders across telecom BSS systems, covering order creation, tracking, amendment, and cancellation for telecommunications products and services.

OpenAPI Specification

tm-forum-tmf622-product-ordering-openapi.yaml Raw ↑
openapi: 3.0.1
info:
  title: ProductOrdering
  description: >
    **TMF API Reference : TMF 622 - Product Ordering Management**


    ** June 2023**


    The Product Ordering API provides a standardized mechanism for placing a product order with all
    of the necessary order parameters. The API consists of a simple set of operations that interact
    with CRM/Order Negotiation systems in a consistent manner. A product order is created based on a
    product offer that is defined in a catalog. The product offer identifies the product or set of
    products that are available to a customer, and includes characteristics such as pricing, product
    options and market. This API provide a task based resource to request order cancellation.


    The product order references the product offer and identifies any specific requests made by the
    customer.


    **Product Order resource**

    A Product Order is a type of order which can be used to place an order between a customer and a
    service provider or between a service provider and a partner and vice versa. Main Product Order
    attributes are its identifier, state, priority category (mass market, Enterprise, etc.) related
    dates (start, completion, etc.), related billing account, related parties and order items. Main
    Order Items (aka order lines) attributes are the ordered offering and product characteristics
    with the related action to be performed (e.g. add or delete the products), state, location
    information for delivery, order item price and price alteration.


    Product Order API performs the following operations on product order :

       * Retrieval of a product order or a collection of product orders depending on filter criteria
       * Partial update of a product order (including updating rules)
       * Creation of a product order (including default values and creation rules) - The productOrder could be created 
       in draft (the product order requester is not yet ready to submit it and draft order could be freely updated) or requester could
       ask to an acknowledged state which means that requester submitted the order.
       * Deletion of product order (for administration purposes)
       * Notification of events on product order.

    **cancelProductOrder resource**

    This resource is used to request a product order cancellation.

    Product Order API performs the following operations on CancelProductOrder resource :

       * Retrieval of a cancel product order or a collection of cancel product orders 
       * Creation of a cancel product order 
       * Notification of events on cancel product order.

    Copyright © TM Forum 2021. All Rights Reserved
  version: 5.0.0
servers:
- url: 'https://serverRoot'
tags:
- name: productOrder
  description: Operations for ProductOrder Resource
- name: cancelProductOrder
  description: Operations for CancelProductOrder Resource
- name: notification listener
  description: Notifications for Resource Lifecycle and event notifications
- name: events subscription
  description: Endpoints to register and terminate an Event Listener
paths:
  /cancelProductOrder:
    get:
      tags:
      - cancelProductOrder
      summary: TM Forum List or Find CancelProductOrder Objects
      description: List or find CancelProductOrder objects
      operationId: listCancelProductOrder
      parameters:
      - $ref: '#/components/parameters/Fields'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200CancelProductOrderArray'
        '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:
      - cancelProductOrder
      summary: TM Forum Creates a CancelProductOrder
      description: This operation creates a CancelProductOrder entity.
      operationId: createCancelProductOrder
      parameters:
      - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201CancelProductOrder'
        '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'
  '/cancelProductOrder/{id}':
    get:
      tags:
      - cancelProductOrder
      summary: TM Forum Retrieves a CancelProductOrder by ID
      description: >-
        This operation retrieves a CancelProductOrder entity. Attribute selection enabled for all
        first level attributes.
      operationId: retrieveCancelProductOrder
      parameters:
      - $ref: '#/components/parameters/Id'
      - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200CancelProductOrder_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'
  /hub:
    post:
      operationId: createHub
      summary: TM Forum Create a Subscription (hub) to Receive Events
      description: Sets the communication endpoint to receive Events.
      tags:
      - events subscription
      requestBody:
        $ref: '#/components/requestBodies/Hub_FVO'
      responses:
        '201':
          $ref: '#/components/responses/Hub'
        default:
          $ref: '#/components/responses/Error'
  '/hub/{id}':
    delete:
      operationId: hubDelete
      summary: TM Forum Remove a Subscription (hub) to Receive Events
      description: ''
      tags:
      - events subscription
      parameters:
      - $ref: '#/components/parameters/Id'
      responses:
        '204':
          description: Deleted
        default:
          $ref: '#/components/responses/Error'
  /listener/cancelProductOrderCreateEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity CancelProductOrderCreateEvent
      description: Example of a client listener for receiving the notification CancelProductOrderCreateEvent
      operationId: cancelProductOrderCreateEvent
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrderCreateEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/cancelProductOrderInformationRequiredEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity CancelProductOrderInformationRequiredEvent
      description: >-
        Example of a client listener for receiving the notification
        CancelProductOrderInformationRequiredEvent
      operationId: cancelProductOrderInformationRequiredEvent
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrderInformationRequiredEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/cancelProductOrderStateChangeEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity CancelProductOrderStateChangeEvent
      description: >-
        Example of a client listener for receiving the notification
        CancelProductOrderStateChangeEvent
      operationId: cancelProductOrderStateChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrderStateChangeEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderAttributeValueChangeEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderAttributeValueChangeEvent
      description: >-
        Example of a client listener for receiving the notification
        ProductOrderAttributeValueChangeEvent
      operationId: productOrderAttributeValueChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderAttributeValueChangeEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderCreateEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderCreateEvent
      description: Example of a client listener for receiving the notification ProductOrderCreateEvent
      operationId: productOrderCreateEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderCreateEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderDeleteEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderDeleteEvent
      description: Example of a client listener for receiving the notification ProductOrderDeleteEvent
      operationId: productOrderDeleteEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderDeleteEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderErrorMessageEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderErrorMessageEvent
      description: Example of a client listener for receiving the notification ProductOrderErrorMessageEvent
      operationId: productOrderErrorMessageEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderErrorMessageEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderInformationRequiredEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderInformationRequiredEvent
      description: >-
        Example of a client listener for receiving the notification
        ProductOrderInformationRequiredEvent
      operationId: productOrderInformationRequiredEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderInformationRequiredEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderJeopardyAlertEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderJeopardyAlertEvent
      description: Example of a client listener for receiving the notification ProductOrderJeopardyAlertEvent
      operationId: productOrderJeopardyAlertEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderJeopardyAlertEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderMilestoneEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderMilestoneEvent
      description: Example of a client listener for receiving the notification ProductOrderMilestoneEvent
      operationId: productOrderMilestoneEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderMilestoneEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /listener/productOrderStateChangeEvent:
    post:
      tags:
      - notification listener
      summary: TM Forum Client Listener for Entity ProductOrderStateChangeEvent
      description: Example of a client listener for receiving the notification ProductOrderStateChangeEvent
      operationId: productOrderStateChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderStateChangeEvent'
      responses:
        '204':
          description: Notified
        default:
          $ref: '#/components/responses/Error'
  /productOrder:
    get:
      tags:
      - productOrder
      summary: TM Forum List or Find ProductOrder Objects
      description: List or find ProductOrder objects
      operationId: listProductOrder
      parameters:
      - $ref: '#/components/parameters/Fields'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200ProductOrderArray'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
    post:
      tags:
      - productOrder
      summary: TM Forum Creates a ProductOrder
      description: This operation creates a ProductOrder entity.
      operationId: createProductOrder
      parameters:
      - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/ProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201ProductOrder'
        '202':
          description: Accepted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
  '/productOrder/{id}':
    get:
      tags:
      - productOrder
      summary: TM Forum Retrieves a ProductOrder by ID
      description: >-
        This operation retrieves a ProductOrder entity. Attribute selection enabled for all first
        level attributes.
      operationId: retrieveProductOrder
      parameters:
      - $ref: '#/components/parameters/Id'
      - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200ProductOrder_Get'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
    delete:
      tags:
      - productOrder
      summary: TM Forum Deletes a ProductOrder
      description: This operation deletes a ProductOrder entity.
      operationId: deleteProductOrder
      parameters:
      - $ref: '#/components/parameters/Id'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
    patch:
      tags:
      - productOrder
      summary: TM Forum Updates Partially a ProductOrder
      description: This operation updates partially a ProductOrder entity.
      operationId: patchProductOrder
      parameters:
      - $ref: '#/components/parameters/Id'
      - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/ProductOrder_MVO'
      responses:
        '200':
          $ref: '#/components/responses/200ProductOrder_Patch'
        '202':
          description: Accepted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
components:
  schemas:
    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'
    AccountRef_FVO:
      type: object
      description: Account reference. A account may be a party account or a financial account.
      allOf:
      - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          AccountRef: '#/components/schemas/AccountRef_FVO'
    AccountRef_MVO:
      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_MVO'
    Addressable:
      type: object
      description: Base schema for adressable entities
      properties:
        href:
          type: string
          description: Hyperlink reference
        id:
          type: string
          description: unique identifier
    Addressable_FVO:
      type: object
      description: Base schema for adressable entities
      properties:
        id:
          type: string
          description: unique identifier
    AgreementItemRef:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - type: object
        description: It's a Agreement item that has been executed previously.
        properties:
          agreementName:
            type: string
            description: Name of the related entity.
          agreementHref:
            type: string
            description: Reference of the related entity.
          '@referredType':
            type: string
            description: The actual type of the target instance when needed for disambiguation.
          agreementId:
            type: string
            description: Unique identifier of a related entity.
          agreementItemId:
            type: string
            description: Id of an item of a Agreement
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementItemRef: '#/components/schemas/AgreementItemRef'
    AgreementItemRef_FVO:
      allOf:
      - $ref: '#/components/schemas/Extensible_FVO'
      - type: object
        description: It's a Agreement item that has been executed previously.
        properties:
          agreementName:
            type: string
            description: Name of the related entity.
          agreementHref:
            type: string
            description: Reference of the related entity.
          '@referredType':
            type: string
            description: The actual type of the target instance when needed for disambiguation.
          agreementId:
            type: string
            description: Unique identifier of a related entity.
          agreementItemId:
            type: string
            description: Id of an item of a Agreement
        required:
        - agreementId
        - agreementItemId
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementItemRef: '#/components/schemas/AgreementItemRef_FVO'
    AgreementItemRef_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - type: object
        description: It's a Agreement item that has been executed previously.
        properties:
          agreementName:
            type: string
            description: Name of the related entity.
          agreementHref:
            type: string
            description: Reference of the related entity.
          '@referredType':
            type: string
            description: The actual type of the target instance when needed for disambiguation.
          agreementId:
            type: string
            description: Unique identifier of a related entity.
          agreementItemId:
            type: string
            description: Id of an item of a Agreement
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementItemRef: '#/components/schemas/AgreementItemRef_MVO'
    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'
    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'
    AgreementRef_MVO:
      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_MVO'
    AppointmentRef:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: 'Refers an appointment, such as a Customer presentation or internal meeting or site visit'
        properties:
          description:
            type: string
            description: An explanatory text regarding the appointment made with a party
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentRef: '#/components/schemas/AppointmentRef'
    AppointmentRef_FVO:
      allOf:
      - $ref: '#/components/schemas/Extensible_FVO'
      - $ref: '#/components/schemas/EntityRef_FVO'
      - type: object
        description: 'Refers an appointment, such as a Customer presentation or internal meeting or site visit'
        properties:
          description:
            type: string
            description: An explanatory text regarding the appointment made with a party
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentRef: '#/components/schemas/AppointmentRef_FVO'
    AppointmentRef_MVO:
      allOf:
      - $ref: '#/components/schemas/Extensible'
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: 'Refers an appointment, such as a Customer presentation or internal meeting or site visit'
        properties:
          description:
            type: string
            description: An explanatory text regarding the appointment made with a party
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentRef: '#/components/schemas/AppointmentRef_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'
    AttachmentRef:
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: >-
          Attachment reference. An attachment complements the description of an element (for
          instance a product) through video, pictures
        properties:
          description:
            type: string
            description: A narrative text describing the content of the attachment
          url:
            description: Link to the attachment media/content
            type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef'
    AttachmentRefOrValue:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
      - $ref: '#/components/schemas/Attachment'
      - $ref: '#/components/schemas/AttachmentRef'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment'
          AttachmentRef: '#/components/schemas/AttachmentRef'
    AttachmentRefOrValue_FVO:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
      - $ref: '#/components/schemas/Attachment_FVO'
      - $ref: '#/components/schemas/AttachmentRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_FVO'
          AttachmentRef: '#/components/schemas/AttachmentRef_FVO'
    AttachmentRefOrValue_MVO:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
      - $ref: '#/components/schemas/Attachment_MVO'
      - $ref: '#/components/schemas/AttachmentRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_MVO'
          AttachmentRef: '#/components/schemas/AttachmentRef_MVO'
    AttachmentRef_FVO:
      allOf:
      - $ref: '#/components/schemas/EntityRef_FVO'
      - type: object
        description: >-
          Attachment reference. An attachment complements the description of an element (for
          instance a product) through video, pictures
        properties:
          description:
            type: string
            description: A narrative text describing the content of the attachment
          url:
            description: Link to the attachment media/content
            type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef_FVO'
    AttachmentRef_MVO:
      allOf:
      - $ref: '#/components/schemas/EntityRef'
      - type: object
        description: >-
          Attachment reference. An attachment complements the description of an element (for
          instance a product) through video, pictures
        properties:
          description:
            type: string
            description: A narrative text describing the content of the attachment
          url:
            description: Link to the attachment media/content
            type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef_MVO'
    Attachment_FVO:
      allOf:
      - $ref: '#/components/schemas/Entity_FVO'
      - 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
        required:
        - attachmentType
       

# --- truncated at 32 KB (474 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-tmf622-product-ordering-openapi.yaml