openapi: 3.0.1
info:
  title: FIT-Product Ordering
  description: |-
    The following document is the user guide of the REST API for Product Ordering management. It includes the model definition as well as all available operations.
    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 Customer Relationship Management / 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 order references the product offer and identifies any specific requests made by the customer.
    Product Ordering API manages 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 (acknowledged, inProgress, completed...), priority, category, related dates, 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.
    Product ordering API performs the following operations on Product Order:
    - Creation of a product order (including default values and creation rules)
    - Retrieval of a product order or a collection of product orders depending on filter criteria
    - Notification of events on product order
        - Product Order creation
        - Product Order state change
        - Product Order atribute value change used to notify that any data in an order has just changed
        - Product Order information required used to notify that some data in the order need to be filled / are missing
        - Product Order jeopardy alert
        - Product Order milestone

    Product ordering API performs the following operations on CancelProductOrder:

    - Creation of a product order cancel request
    - Retrieval of a product order cancellation request or a collection of product order cancellation requests depending on filter criteria 
    - Notification of events on product order cancel
        - Cancel Product Order state change

    Product ordering API performs the following operations on CloseProductOrder (FIT only, for closing an existing product order):

    - Creation of a product order close request
    - Retrieval of a product order close request or a collection of product order close requests depending on filter criteria 
    - Notification of events on product order close
        - Close Product Order state change

    Product ordering API performs the following operations on RespondProviderChange (FIT only, to provide a response to an existing provider change product order):

    - Creation of a respond provider change request
    - Retrieval of a respond provider change request or a collection of respond provider change requests depending on filter criteria 
    - Notification of events on respond provider change
        - Respond provider change state change

    Product ordering API performs the following operations on RescheduleProductOrder (FIT only, for rescheduling an existing product order):

    - Creation of a reschedule product order request
    - Retrieval of a reschedule product order request or a collection of reschedule product order requests depending on filter criteria 
    - Notification of events on reschedule product order
        - Reschedule product order state change
        
    Product ordering API performs the following operations on AddProductOrderInformation (FIT only, to add additional information to an existing product order):

    - Creation of an add product order information request
    - Retrieval of an add product order information request or a collection of add product order information requests depending on filter criteria 
    - Notification of events on of add product order information
        - Add product order information request state change

    Product ordering API performs the following operations on AmendProductOrder (FIT only, to amend an existing product order):

    - Creation of an amend product order request
    - Retrieval of an amend product order request or a collection of amend product order requests depending on filter criteria 
    - Notification of events on of amend product order
        - Amend product order request state change

    #### FIT Adapations
    **ProductOrder resource:** 

    - PATCH & DELETE are not used for FIT
    - added state change history (based on TMF621)
    - Milestone / JeopardyAlert adapted to FIT requirements
    - added ProviderChangeInfo to document provider change agreement
    - added requestedTimeSlot to provide time slot request for appointment
    - added alternateProductOffering

    **CloseProductOrder task resource:** added task resource for closing an existing product order

    **RespondProviderChange task resource:** added task resource to provide a response to an existing provider change product order

    **RescheduleProductOrder task resource:** added task resource for rescheduling an existing product order

    **AddProductOrderInformation task resource:** added task resource to add information to an existing product order

    **AmendProductOrder task resource:** added task resource to amend an existing product order

    #### Sources
    The source API definition can be found at [fit-tmf622.yaml](https://bitbucket.org/fit-api/fit-api/src/main/tmf622/oas/fit-tmf622.yaml)
  version: '1.1.0'
servers:
  - url: https://api.example.com/tmf-api/productOrderingManagement/v5
security:
  - OAuth2ClientCredentials:
      - read
      - write
tags:
  - name: productOrder
    description: Operations for ProductOrder Resource.
  - name: cancelProductOrder
    description: Operations for CancelProductOrder Resource.
  - name: rescheduleProductOrder
    description: Operations for RescheduleProductOrder Resource.
  - name: respondProviderChange
    description: Operations for RespondProviderChange Resource.
  - name: closeProductOrder
    description: Operations for CloseProductOrder Resource.
  - name: addProductOrderInformation
    description: Operations for AddProductOrderInformation Resource.
  - name: amendProductOrder
    description: Operations for AmendProductOrder Resource.
  - name: notification listener
    description: Notifications for Resource Lifecycle and event notifications.
paths:
  /productOrder:
    get:
      operationId: listProductOrder
      summary: List or find ProductOrder objects
      description: |-
        This operation retrieves a ProductOrder entity. Attribute selection enabled for all first
        level attributes.
      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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - productOrder
    post:
      operationId: createProductOrder
      summary: Creates a ProductOrder
      description: This operation creates a ProductOrder entity.
      requestBody:
        $ref: '#/components/requestBodies/ProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201ProductOrder'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - productOrder
  /productOrder/{id}:
    get:
      operationId: retrieveProductOrder
      summary: Retrieves a ProductOrder by ID
      description: This operation retrieves a ProductOrder entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200ProductOrder'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - productOrder
  /cancelProductOrder:
    get:
      operationId: listCancelProductOrder
      summary: List or find CancelProductOrder objects
      description: |-
        This operation retrieves a CancelProductOrder entity. Attribute selection enabled for all
        first level attributes.
      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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - cancelProductOrder
    post:
      operationId: createCancelProductOrder
      summary: Creates a CancelProductOrder
      description: This operation creates a CancelProductOrder entity.
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201CancelProductOrder'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - cancelProductOrder
  /cancelProductOrder/{id}:
    get:
      operationId: retrieveCancelProductOrder
      summary: Retrieves a CancelProductOrder by ID
      description: This operation retrieves a CancelProductOrder entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200CancelProductOrder'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - cancelProductOrder
  /rescheduleProductOrder:
    get:
      operationId: listRescheduleProductOrder
      summary: List or find RescheduleProductOrder objects
      description: |-
        This operation retrieves a RescheduleProductOrder entity. Attribute selection enabled for all
        first level attributes.
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200RescheduleProductOrderArray'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - rescheduleProductOrder
    post:
      operationId: createRescheduleProductOrder
      summary: Creates a RescheduleProductOrder
      description: This operation creates a RescheduleProductOrder entity.
      requestBody:
        $ref: '#/components/requestBodies/RescheduleProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201RescheduleProductOrder'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - rescheduleProductOrder
  /rescheduleProductOrder/{id}:
    get:
      operationId: retrieveRescheduleProductOrder
      summary: Retrieves a RescheduleProductOrder by ID
      description: This operation retrieves a RescheduleProductOrder entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200RescheduleProductOrder'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - rescheduleProductOrder
  /respondProviderChange:
    get:
      operationId: listRespondProviderChange
      summary: List or find RespondProviderChange objects
      description: |-
        This operation retrieves a RespondProviderChange entity. Attribute selection enabled for all
        first level attributes.
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200RespondProviderChangeArray'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - respondProviderChange
    post:
      operationId: createRespondProviderChange
      summary: Creates a RespondProviderChange
      description: This operation creates a RespondProviderChange entity.
      requestBody:
        $ref: '#/components/requestBodies/RespondProviderChange_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201RespondProviderChange'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - respondProviderChange
  /respondProviderChange/{id}:
    get:
      operationId: retrieveRespondProviderChange
      summary: Retrieves a RespondProviderChange by ID
      description: This operation retrieves a RespondProviderChange entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200RespondProviderChange'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - respondProviderChange
  /closeProductOrder:
    get:
      operationId: listCloseProductOrder
      summary: List or find CloseProductOrder objects
      description: |-
        This operation retrieves a CloseProductOrder entity. Attribute selection enabled for all
        first level attributes.
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200CloseProductOrderArray'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - closeProductOrder
    post:
      operationId: createCloseProductOrder
      summary: Creates a CloseProductOrder
      description: This operation creates a CloseProductOrder entity.
      requestBody:
        $ref: '#/components/requestBodies/CloseProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201CloseProductOrder'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - closeProductOrder
  /closeProductOrder/{id}:
    get:
      operationId: retrieveCloseProductOrder
      summary: Retrieves a CloseProductOrder by ID
      description: This operation retrieves a CloseProductOrder entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200CloseProductOrder'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - closeProductOrder
  /addProductOrderInformation:
    get:
      operationId: listAddProductOrderInformation
      summary: List or find AddProductOrderInformation objects
      description: |-
        This operation retrieves a AddProductOrderInformation entity. Attribute selection enabled for all
        first level attributes.
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200AddProductOrderInformationArray'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - addProductOrderInformation
    post:
      operationId: createAddProductOrderInformation
      summary: Creates an AddProductOrderInformation
      description: This operation creates a AddProductOrderInformation entity.
      requestBody:
        $ref: '#/components/requestBodies/AddProductOrderInformation_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201AddProductOrderInformation'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - addProductOrderInformation
  /addProductOrderInformation/{id}:
    get:
      operationId: retrieveAddProductOrderInformation
      summary: Retrieves a AddProductOrderInformation by ID
      description: This operation retrieves a AddProductOrderInformation entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200AddProductOrderInformation'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - addProductOrderInformation
  /amendProductOrder:
    get:
      operationId: listAmendProductOrder
      summary: List or find AmendProductOrder objects
      description: |-
        This operation retrieves a AmendProductOrder entity. Attribute selection enabled for all
        first level attributes.
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200AmendProductOrderArray'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - amendProductOrder
    post:
      operationId: createAmendProductOrder
      summary: Creates an AmendProductOrder
      description: This operation creates a AmendProductOrder entity.
      requestBody:
        $ref: '#/components/requestBodies/AmendProductOrder_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201AmendProductOrder'
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - amendProductOrder
  /amendProductOrder/{id}:
    get:
      operationId: retrieveAmendProductOrder
      summary: Retrieves a AmendProductOrder by ID
      description: This operation retrieves a AmendProductOrder entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200AmendProductOrder'
        '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'
        '406':
          $ref: '#/components/responses/406'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - amendProductOrder
  /listener/productOrderCreateEvent:
    post:
      operationId: listenToProductOrderCreateEvent
      summary: Client listener for ProductOrderCreateEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderCreateEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/productOrderAttributeValueChangeEvent:
    post:
      operationId: listenToProductOrderAttributeValueChangeEvent
      summary: Client listener for ProductOrderAttributeValueChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderAttributeValueChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/productOrderStateChangeEvent:
    post:
      operationId: listenToProductOrderStateChangeEvent
      summary: Client listener for ProductOrderStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/productOrderMilestoneEvent:
    post:
      operationId: listenToProductOrderMilestoneEvent
      summary: Client listener for ProductOrderMilestoneEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderMilestoneEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/productOrderJeopardyAlertEvent:
    post:
      operationId: listenToProductOrderJeopardyAlertEvent
      summary: Client listener for ProductOrderJeopardyAlertEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderJeopardyAlertEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/productOrderInformationRequiredEvent:
    post:
      operationId: listenToProductOrderInformationRequiredEvent
      summary: Client listener for ProductOrderInformationRequiredEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/ProductOrderInformationRequiredEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/cancelProductOrderStateChangeEvent:
    post:
      operationId: listenToCancelProductOrderStateChangeEvent
      summary: Client listener for CancelProductOrderStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/CancelProductOrderStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/rescheduleProductOrderStateChangeEvent:
    post:
      operationId: listenToRescheduleProductOrderStateChangeEvent
      summary: Client listener for RescheduleProductOrderStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/RescheduleProductOrderStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/respondProviderChangeStateChangeEvent:
    post:
      operationId: listenToRespondProviderChangeStateChangeEvent
      summary: Client listener for RespondProviderChangeStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/RespondProviderChangeStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/closeProductOrderStateChangeEvent:
    post:
      operationId: listenToCloseProductOrderStateChangeEvent
      summary: Client listener for CloseProductOrderStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/CloseProductOrderStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/addProductOrderInformationStateChangeEvent:
    post:
      operationId: listenToAddProductOrderInformationStateChangeEvent
      summary: Client listener for AddProductOrderInformationStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/AddProductOrderInformationStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
  /listener/amendProductOrderStateChangeEvent:
    post:
      operationId: listenToAmendProductOrderStateChangeEvent
      summary: Client listener for AmendProductOrderStateChangeEvent
      description: Example of a client listener for receiving notifications
      requestBody:
        $ref: '#/components/requestBodies/AmendProductOrderStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listener
components:
  schemas:
    BillingAccountRef:
      description: BillingAccount reference. A BillingAccount is a detailed description of a bill structure.
      type: object
      example: ''
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          BillingAccountRef: '#/components/schemas/BillingAccountRef'
    CancelProductOrder:
      description: Request for cancellation an existing product order
      example:
        description: Example of created CancelProductOrder
        value:
          '@type': CancelProductOrder
          id: 2fd01b2b-9110-41ed-8efd-014d7e8ee158
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/cancelProductOrder/2fd01b2b-9110-41ed-8efd-014d7e8ee158
          state: acknowledged
          stateChangeDate: '2022-05-11T11:25:00+02:00'
          stateChangeMessage:
            - code: code
              text: acknowledged_Message
          requestPostedDate: '2022-05-11T11:25:00+02:00'
          productOrder:
            '@type': ProductOrderRef
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
      discriminator:
        propertyName: '@type'
        mapping:
          CancelProductOrder: '#/components/schemas/CancelProductOrder'
    CancelProductOrder_FVO:
      description: |-
        Request for cancellation an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
      discriminator:
        propertyName: '@type'
        mapping:
          CancelProductOrder: '#/components/schemas/CancelProductOrder_FVO'
    RescheduleProductOrder:
      description: Request to reschedule an existing product order
      example:
        description: Example of created RescheduleProductOrder
        value:
          '@type': RescheduleProductOrder
          id: 33359a1e-134f-4b0f-98a8-acc91af5bbee
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/rescheduleProductOrder/33359a1e-134f-4b0f-98a8-acc91af5bbee
          state: acknowledged
          stateChangeDate: '2022-07-20T09:00:00+02:00'
          stateChangeMessage:
            - code: code
              text: acknowledged_Message
          productOrder:
            '@type': ProductOrderRef
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
          rescheduledRequestedCompletionDate: '2022-07-20T12:00:00+02:00'
          productOrderItem:
            id: '1'
            requestedTimeSlot:
              '@type': TimeSlot
              validFor:
                startDateTime: '2022-07-20T08:00:00+02:00'
                endDateTime: '2022-07-20T12:00:00+02:00'
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
            - rescheduledRequestedCompletionDate
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            rescheduledRequestedCompletionDate:
              description: Rescheduled requested delivery date from the requester perspective
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            productOrderItem:
              $ref: '#/components/schemas/ProductOrderItemId'
      discriminator:
        propertyName: '@type'
        mapping:
          RescheduleProductOrder: '#/components/schemas/RescheduleProductOrder'
    RescheduleProductOrder_FVO:
      description: |-
        Request to reschedule an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
            - rescheduledRequestedCompletionDate
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            rescheduledRequestedCompletionDate:
              description: Expected completion date amended by the consumer
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            productOrderItem:
              $ref: '#/components/schemas/ProductOrderItemId'
      discriminator:
        propertyName: '@type'
        mapping:
          RescheduleProductOrder: '#/components/schemas/RescheduleProductOrder_FVO'
    RespondProviderChange:
      description: Response to an existing provider change product order
      example:
        description: Example of created RespondProviderChange
        value:
          '@type': RespondProviderChange
          id: 892cfa45-fca3-488d-8a7c-2883923f820e
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/respondProviderChange/892cfa45-fca3-488d-8a7c-2883923f820e
          state: acknowledged
          stateChangeDate: '2022-05-11T10:35:00+02:00'
          requestPostedDate: '2022-05-11T10:35:00+02:00'
          productOrder:
            '@type': ProductOrderRef
            id: 596d7fa0-981f-4b98-bcf5-e9b2955776f4
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/596d7fa0-981f-4b98-bcf5-e9b2955776f4
          approval: true
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
            - approval
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            approval:
              description: Whether the approval has been given
              type: boolean
              example: true
            responseMessage:
              description: Message for response
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
      discriminator:
        propertyName: '@type'
        mapping:
          RespondProviderChange: '#/components/schemas/RespondProviderChange'
    RespondProviderChange_FVO:
      description: |-
        Response to an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
            - approval
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            approval:
              description: Whether the approval has been given
              type: boolean
              example: true
            responseMessage:
              description: Message for response
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
      discriminator:
        propertyName: '@type'
        mapping:
          RespondProviderChange: '#/components/schemas/RespondProviderChange_FVO'
    CloseProductOrder:
      description: Request for closing an existing product order
      example:
        description: Example of created CloseProductOrder
        value:
          '@type': CloseProductOrder
          id: a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/closeProductOrder/a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
          state: acknowledged
          stateChangeDate: '2022-06-03T10:41:00+02:00'
          stateChangeMessage:
            - code: code
              text: acknowledged_Message
          requestPostedDate: '2022-06-03T10:41:00+02:00'
          productOrder:
            '@type': ProductOrderRef
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
          closeMessage:
            - code: '111'
              text: TBD
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            closeMessage:
              description: Message for closing request described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
      discriminator:
        propertyName: '@type'
        mapping:
          CloseProductOrder: '#/components/schemas/CloseProductOrder'
    CloseProductOrder_FVO:
      description: |-
        Request for closing an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            closeMessage:
              description: Message for closing request described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
      discriminator:
        propertyName: '@type'
        mapping:
          CloseProductOrder: '#/components/schemas/CloseProductOrder_FVO'
    AddProductOrderInformation:
      description: Request for adding additional product order information an existing product order
      example:
        description: Example of created AddProductOrderInformation
        value:
          '@type': AddProductOrderInformation
          id: d1317bb6-969a-4da7-be54-2d3760e48fee
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/addProductOrderInformation/d1317bb6-969a-4da7-be54-2d3760e48fee
          state: acknowledged
          stateChangeDate: '2022-07-20T09:00:00+02:00'
          stateChangeMessage:
            - code: code
              text: acknowledged_Message
          productOrder:
            '@type': ProductOrderRef
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
          relatedParty:
            '@type': RelatedPartyOrPartyRole
            role: installationContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221145155'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917878878788'
                - '@type': EmailContactMedium
                  contactType: email
                  emailAddress: a.fischer@example.net
              familyName: Fischer
              salutation: Herr
              givenName: Alexander
          note:
            '@type': Note
            text: zweimal klingeln
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            relatedParty:
              $ref: '#/components/schemas/RelatedPartyOrPartyRole'
            note:
              $ref: '#/components/schemas/Note'
      discriminator:
        propertyName: '@type'
        mapping:
          AddProductOrderInformation: '#/components/schemas/AddProductOrderInformation'
    AddProductOrderInformation_FVO:
      description: |-
        Request for adding additional product order information an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            relatedParty:
              $ref: '#/components/schemas/RelatedPartyOrPartyRole'
            note:
              $ref: '#/components/schemas/Note'
      discriminator:
        propertyName: '@type'
        mapping:
          AddProductOrderInformation: '#/components/schemas/AddProductOrderInformation_FVO'
    AmendProductOrder:
      description: Request for amending an existing product order
      example:
        description: Example of created AmendProductOrder
        value:
          '@type': AmendProductOrder
          id: f8d80f8c-7f70-4dca-aa25-a3321d50685d
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/amendProductOrder/f8d80f8c-7f70-4dca-aa25-a3321d50685d
          state: acknowledged
          stateChangeDate: '2022-07-20T09:00:00+02:00'
          stateChangeMessage:
            - code: code
              text: acknowledged_Message
          productOrder:
            '@type': ProductOrderRef
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
          amendProductOrderItem:
            - action: add
              productOrderItem:
                '@type': ProductOrderItem
                id: '2'
                action: add
                productOffering:
                  '@type': ProductOffering
                  name: Bereitstellung Komfort
                productOrderItemRelationship:
                  - '@type': OrderItemRelationship
                    id: '1'
                    relationshipType: dependsOn
      allOf:
        - $ref: '#/components/schemas/TaskEntity'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            amendProductOrderItem:
              description: ProductOrderItem to be amended (id alone for delete, full ProductOrderItem for add and replace)
              type: array
              items:
                $ref: '#/components/schemas/AmendProductOrderItem'
      discriminator:
        propertyName: '@type'
        mapping:
          AmendProductOrder: '#/components/schemas/AmendProductOrder'
    AmendProductOrder_FVO:
      description: |-
        Request for amending an existing product order
        Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory, requestDate, requestPostedDate
      allOf:
        - $ref: '#/components/schemas/TaskEntity_FVO'
        - type: object
          required:
            - productOrder
          properties:
            productOrder:
              $ref: '#/components/schemas/ProductOrderRef'
            amendProductOrderItem:
              description: ProductOrderItem to be amended (id alone for delete, full ProductOrderItem for add and replace)
              type: array
              items:
                $ref: '#/components/schemas/AmendProductOrderItem'
      discriminator:
        propertyName: '@type'
        mapping:
          AmendProductOrder: '#/components/schemas/AmendProductOrder_FVO'
    OrderItemActionType:
      description: |-
        Action to be performed on the product:<ul>
        <li>*add*: Add product</li>
        <li>*modify*: Modify product</li>
        <li>*delete*: Delete product</li>
        <li>*nochange*: No change at main product</li>
        <li>*transfer*: Take over product</li>
        </ul>
      type: string
      enum:
        - add
        - modify
        - delete
        - nochange
        - transfer
    OrderItemRelationship:
      description: Used to describe relationships between order items for complex business cases (e.g. product change).
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Id of the related Order item (must be in the same Order)
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            relationshipType:
              description: Relationship type as relies on, bundles, etc...
              type: string
              example: requires
      discriminator:
        propertyName: '@type'
        mapping:
          OrderItemRelationship: '#/components/schemas/OrderItemRelationship'
    ProductOrderRelationship:
      description: The ProductOrderRelationship makes it possible to document references to other product orders. Use cases include orders on behalf of third parties and group orders.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            relationshipType:
              description: The type of product order relationship
              type: string
              example: requires
            productOrder:
              description: Product order
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderRefOrValue'
              example: []
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderRelationship: '#/components/schemas/ProductOrderRelationship'
    Product:
      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).
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            creationDate:
              description: Date and time when the product was created
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            description:
              description: Is the description of the product. It could be copied from the description of the Product Offering.
              type: string
              example: Lorem ipsum dolor
            name:
              description: Name of the product. It could be the same as the name of the product offering
              type: string
              example: Acme ludicrous speed fiber line
            orderDate:
              description: Is the date when the product was ordered
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            startDate:
              description: Is the date from which the product starts
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            terminationDate:
              description: Is the date when the product was terminated
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            relatedPlace:
              description: Related place
              type: array
              items:
                $ref: '#/components/schemas/RelatedPlaceRefOrValue'
              example: []
            product:
              description: Product
              type: array
              items:
                $ref: '#/components/schemas/ProductRefOrValue'
              example: []
            productCharacteristic:
              description: Product characteristic
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRefOrValue'
            productRelationship:
              description: Product relationship
              type: array
              items:
                $ref: '#/components/schemas/ProductRelationship'
              example: []
            productSpecification:
              $ref: '#/components/schemas/ProductSpecificationRef'
            relatedParty:
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            status:
              $ref: '#/components/schemas/ProductStatusType'
      discriminator:
        propertyName: '@type'
        mapping:
          Product: '#/components/schemas/Product'
          BitstreamAccessProduct: '#/components/schemas/BitstreamAccessProduct'
          OpticalAccessLineProduct: '#/components/schemas/OpticalAccessLineProduct'
          HvtLocalLoopProduct: '#/components/schemas/HvtLocalLoopProduct'
          KvzLocalLoopProduct: '#/components/schemas/KvzLocalLoopProduct'
    ProductOfferingQualificationRef:
      description: It's a productOfferingQualification that has been executed previously
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingQualificationRef: '#/components/schemas/ProductOfferingQualificationRef'
    ProductOrder:
      description: 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,
      example:
        description: Example of created ProductOrder
        value:
          '@type': ProductOrder
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
          category: new
          creationDate: '2022-05-11T10:30:30+02:00'
          orderPostedDate: '2022-05-11T10:30:00+02:00'
          requestedCompletionDate: '2022-12-01T12:00:00+01:00'
          agreement:
            - '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
            - '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
            - '@type': Agreement
              name: providerChangeAgreement
              businessId: DEU.VFD.V012345678
              agreementType: providerChangeAgreement
          externalId:
            - '@type': ExternalIdentifier
              id: '1000111'
              externalIdentifierType: externalOrderId
              owner: DEU.VFD
          productOrderItem:
            - '@type': ProductOrderItem
              id: '1'
              action: add
              product:
                '@type': BitstreamAccessProduct
                creationDate: '2022-05-11T10:30:30+02:00'
                relatedPlace:
                  - '@type': RelatedPlaceRefOrValue
                    role: locationA
                    place:
                      '@type': GeographicAddress
                      city: Rheinhausen
                      country: DE
                      locality: Nordstadt
                      postcode: '59055'
                      streetName: Biberweg
                      streetNr: '2'
                      streetNrSuffix: a
                      geographicSubAddress:
                        - '@type': GeographicSubAddress
                          buildingName: Einfamilienhaus
                networkTerminationUnitLocation: Flur 3.OG
                homeId: a12d5a4545
              productOffering:
                '@type': ProductOffering
                name: FTTH 250000
              requestedTimeSlot:
                '@type': TimeSlot
                validFor:
                  startDateTime: '2022-12-01T08:00:00+01:00'
                  endDateTime: '2022-12-01T12:00:00+01:00'
          relatedParty:
            - '@type': RelatedPartyOrPartyRole
              role: orderManagementBuyerContact
              partyOrPartyRole:
                '@type': Individual
                contactMedium:
                  - '@type': PhoneContactMedium
                    contactType: fixed
                    phoneNumber: '+49221456789'
                  - '@type': PhoneContactMedium
                    contactType: mobile
                    phoneNumber: '+4917754545454'
                  - '@type': EmailContactMedium
                    contactType: email
                    emailAddress: j.kirk@example.net
                familyName: Kirk
                salutation: Herr
                givenName: James T.
                title: Captain
            - '@type': RelatedPartyOrPartyRole
              role: installationContact
              partyOrPartyRole:
                '@type': Individual
                contactMedium:
                  - '@type': PhoneContactMedium
                    contactType: fixed
                    phoneNumber: '+49221145155'
                  - '@type': PhoneContactMedium
                    contactType: mobile
                    phoneNumber: '+4917878878788'
                  - '@type': EmailContactMedium
                    contactType: email
                    emailAddress: a.fischer@example.net
                familyName: Fischer
                salutation: Herr
                givenName: Alexander
            - '@type': RelatedPartyOrPartyRole
              role: locationAContact
              partyOrPartyRole:
                '@type': Individual
                contactMedium:
                  - '@type': PhoneContactMedium
                    contactType: fixed
                    phoneNumber: '+49221145155'
                  - '@type': PhoneContactMedium
                    contactType: mobile
                    phoneNumber: '+4917878878788'
                familyName: Fischer
                salutation: Herr
                givenName: Alexander
          state: acknowledged
          stateChangeDate: '2022-05-11T10:30:00+02:00'
          additionalOrderInformation:
            campaignIdentifier: PromotionFiber
            projectIdentifier: AB1234
            couplingIdentifier: QW567
            orderBindingId: AK45678
            orderBindingNumberOfOrders: 5
            hardwareIdType: OntSerialNumber
            hardwareIdValue: '1234567890'
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - productOrderItem
            - category
            - creationDate
            - state
            - stateChangeDate
          properties:
            category:
              description: Used to categorize the order from a business perspective (new, productChange, groupChange, productModification, termination, groupMigration)
              type: string
              example: new
            description:
              description: Description of the product order
              type: string
              example: Lorem ipsum dolor
            expectedCompletionDate:
              description: Expected delivery date amended by the provider
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            creationDate:
              description: Date when the order resource was created
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            orderIsChargingRelevant:
              description: Boolean amended by the provider defining if the processing of the ProductOrder is charging relevant
              type: boolean
              example: false
            orderPostedDate:
              description: Date when the order was posted by the requester
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            priority:
              description: 'A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)'
              type: string
              example: '4'
            requestedCompletionDate:
              description: Requested delivery date from the requestors perspective
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            agreement:
              description: A reference to an agreement defined in the context of the product order
              type: array
              items:
                $ref: '#/components/schemas/AgreementRefOrValue'
              example: []
            externalId:
              description: A reference to an externaly defined object in the context of the product order
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
            billingAccount:
              $ref: '#/components/schemas/BillingAccountRef'
            note:
              description: Note
              type: array
              items:
                $ref: '#/components/schemas/Note'
              example: []
            productOfferingQualification:
              description: Product offering qualification
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingQualificationRef'
              example: []
            productOrderItem:
              description: Product order item
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderItem'
              example: []
              minItems: 1
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            state:
              $ref: '#/components/schemas/ProductOrderStateType'
            stateChangeDate:
              description: The date and time the state changed.
              type: string
              format: date-time
              example: '2024-01-01T12:00:00+01:00'
            stateChangeMessage:
              description: Message for the state change described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            stateChangeHistory:
              description: The state change history that is associated to the Entity. Populated by the server
              type: array
              items:
                $ref: '#/components/schemas/StateChange'
              example: []
            earliestOrderRetry:
              description: Earliest date when the order can be submitted again.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            attachment:
              description: Attachment
              type: array
              items:
                $ref: '#/components/schemas/AttachmentRefOrValue'
              example: []
            productOrderJeopardyAlert:
              description: List of ProductOrderJeopardyAlerts. A ProductOrderJeopardyAlert represents a predicted exception during a product order processing that would brings risk to complete successfully the order.
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderJeopardyAlert'
              example: []
            productOrderMilestone:
              description: List of ProductOrderMilestones. A ProductOrderMilestone represents an action or event marking a significant change or stage in processing of a product order.
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderMilestone'
              example: []
            productOrderRelationship:
              description: Product order relationship
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderRelationship'
              example: []
            providerChangeInfo:
              $ref: '#/components/schemas/ProviderChangeInfo'
            additionalOrderInformation:
              $ref: '#/components/schemas/AdditionalOrderInformation'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrder: '#/components/schemas/ProductOrder'
    ProductOrder_FVO:
      description: |-
        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,
        Skipped properties: id, href, expectedCompletionDate, creationDate, orderIsChargingRelevant, state, stateChangeDate, stateChangeMessage, stateChangeHistory, requestedCompletionChangeHistory, expectedCompletionChangeHistory, jeopardyAlert, milestone, expectedCompletionDate (also skip productOrderItem.state)
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          required:
            - productOrderItem
            - category
          properties:
            category:
              description: Used to categorize the order from a business perspective (new, productChange, groupChange, productModification, termination, groupMigration)
              type: string
              example: new
            description:
              description: Description of the product order
              type: string
              example: Lorem ipsum dolor
            orderPostedDate:
              description: Date when the order request was created/posted
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            priority:
              description: 'A way that can be used by consumers to prioritize orders in OM system (from 0 to 4: 0 is the highest priority, and 4 the lowest)'
              type: string
              example: '4'
            requestedCompletionDate:
              description: Expected completion date amended by the provider
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            agreement:
              description: A reference to an agreement defined in the context of the product order
              type: array
              items:
                $ref: '#/components/schemas/AgreementRefOrValue'
              example: []
            externalId:
              description: A reference to an externaly defined object in the context of the product order
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
            billingAccount:
              $ref: '#/components/schemas/BillingAccountRef'
            note:
              description: Note
              type: array
              items:
                $ref: '#/components/schemas/Note'
              example: []
            productOfferingQualification:
              description: Product order qualification
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingQualificationRef'
              example: []
            productOrderItem:
              description: Product order item
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderItem'
              example: []
              minItems: 1
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            attachment:
              description: Attachment
              type: array
              items:
                $ref: '#/components/schemas/AttachmentRefOrValue'
              example: []
            productOrderRelationship:
              description: Product order relationship
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderRelationship'
              example: []
            additionalOrderInformation:
              $ref: '#/components/schemas/AdditionalOrderInformation'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrder: '#/components/schemas/ProductOrder_FVO'
    ProductOrderItem:
      description: An identified part of the order. A product order is decomposed into one or more order items.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - action
            - id
          properties:
            id:
              description: Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,...)
              type: string
              example: '01'
            action:
              $ref: '#/components/schemas/OrderItemActionType'
            product:
              $ref: '#/components/schemas/ProductRefOrValue'
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRefOrValue'
            alternateProductOffering:
              $ref: '#/components/schemas/ProductOfferingRefOrValue'
            productOrderItemRelationship:
              description: Product order item relationship
              type: array
              items:
                $ref: '#/components/schemas/OrderItemRelationship'
              example: []
            productOfferingQualificationItem:
              $ref: '#/components/schemas/ProductOfferingQualificationItemRef'
            endUserAppointmentIsNecessary:
              description: Defines if an end user appointment is required for this order item
              type: boolean
              example: false
            requestedTimeSlot:
              $ref: '#/components/schemas/TimeSlot'
            appointment:
              $ref: '#/components/schemas/AppointmentRefOrValue'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderItem: '#/components/schemas/ProductOrderItem'
    AmendProductOrderItem:
      description: ProductOrderItem to be amended (id alone for delete, full ProductOrderItem for add and replace)
      properties:
        action:
          description: Defines the amend action for the attached product order item
          $ref: '#/components/schemas/OrderItemActionType'
        productOrderItem:
          description: ProductOrderItem to be amended (id alone for delete, full ProductOrderItem for add and replace)
          $ref: '#/components/schemas/ProductOrderItem'
    ProductOfferingQualificationItemRef:
      description: It's a productOfferingQualification item that has been executed previously
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            productOfferingQualificationName:
              description: Name of the related entity.
              type: string
              example: n/a
            productOfferingQualificationHref:
              description: Reference of the related entity.
              type: string
              example: n/a
            '@referredType':
              description: The actual type of the target instance when needed for disambiguation.
              type: string
              example: n/a
            productOfferingQualificationId:
              description: Unique identifier of a related entity.
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            itemId:
              description: Id of an item of a product offering qualification
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
    ProductOrderStateType:
      description: |-
        Possible values for the state of the order:<ul>
        <li>*acknowledged*: The Acknowledged state is where an order/item has been received and has passed message level validation (e. g. schema, conformance profile). The order is stored and addressable.</li>
        <li>*accepted*: The Accepted state is where an order has passed business validation. Several operations, e. g. storno, are possible.</li>
        <li>*rejected*: The Rejected state is where:<br/>
          - An order failed the Order Feasibility check<br/>
          - Invalid information is provided through the order request<br/>
          - The order request fails to meet business rules for ordering<br/>
          Same rules applied for order item.</li>
        <li>*pending*: The Pending state is used when an order/item is currently in a waiting stage for an action/activity to be completed before the order/item can progress further, pending order amend or cancel assessment. In situations where Access Seeker action is required, an “information required” notification will be issued on transition into this state.
            A pending stage can lead into auto cancellation of an order/item, if no action is taken within the defined timeframes to be described under the Agreement.</li>
        <li>*inProgress*: The In Progress state is where an order Item has passed the Order Feasibility check successfully and product delivery has started.
          For the order at least one order item is inProgress.</li>
        <li>*held*: The Held state is used when an order/item cannot be progressed due to an issue. SP has temporarily delayed completing an order/item to resolve an infrastructure shortfall to facilitate supply of order. Upon resolution of the issue, the order/item will continue to progress.</li>
        <li>*assessingCancellation*: Following a cancel request, the SP is assessing if cancel can be done for the order/item (or if the PO has reached PONR). If cancellation request is not accepted after assessment the order will return to Held or Pending or InProgress state.</li>
        <li>*cancelled*: The Cancelled state is where an In-Flight Order/item has been successfully cancelled.</li>
        <li>*completed*: The Completed state is where an item has complete provision and the service is now active.
            For an order all order items are completed.</li>
        <li>*closed*: The post-provisioning activities such as billing account update have been finalized. The order is Closed.</li>
        <li>*failed*: Order item as not a successful delivery completion. The product is not delivered and the order item failed.
          All Order items have failed which results in the entire Order has Failed.</li></ul>
      type: string
      enum:
        - acknowledged
        - accepted
        - rejected
        - pending
        - inProgress
        - held
        - assessingCancellation
        - cancelled
        - completed
        - closed
        - failed
    ProductOrderRef:
      description: ProductOrder (ProductOrder). The product order which the action is related with.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    ProductOrderRefOrValue:
      description: Product reference or value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/ProductOrderRef'
        - $ref: '#/components/schemas/ProductOrder'
    ProductRef:
      description: Product reference
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    ProductRefOrValue:
      description: A product to be created defined by value or existing defined by reference.
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/ProductRef'
        - $ref: '#/components/schemas/Product'
    ProductRelationship:
      description: Used to describe relationship between product.
      type: object
      properties:
        relationshipType:
          description: Relationship type as relies on, bundles, etc...
          type: string
          example: requires
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRelationship: '#/components/schemas/ProductRelationship'
    ProductStatusType:
      description: |-
        Possible values for the status of the product:<ul>
        <li>*created*: Product created</li>
        <li>*pendingActive*: Product pending active</li>
        <li>*cancelled*: Product cancelled</li>
        <li>*active*: Product active</li>
        <li>*pendingTerminate*: Product pendingTerminate</li>
        <li>*terminated*: Product terminated</li>
        <li>*suspended*: Product suspended</li>
        <li>*aborted*: Product aborted</li>
        </ul>
      type: string
      enum:
        - created
        - pendingActive
        - cancelled
        - active
        - pendingTerminate
        - terminated
        - suspended
        - aborted
    ProductOrderCreateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ProductOrderCreateEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ProductOrderCreateEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderCreateEvent: '#/components/schemas/ProductOrderCreateEvent'
    ProductOrderCreateEventPayload:
      description: ProductOrderCreateEventPayload
      type: object
      properties:
        productOrder:
          $ref: '#/components/schemas/ProductOrder'
    ProductOrderAttributeValueChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/AttributeValueChangeEvent'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/ProductOrderAttributeValueChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderAttributeValueChangeEvent: '#/components/schemas/ProductOrderAttributeValueChangeEvent'
    ProductOrderAttributeValueChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        productOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/ProductOrder'
    ProductOrderStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/ProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderStateChangeEvent: '#/components/schemas/ProductOrderStateChangeEvent'
    ProductOrderStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        productOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/ProductOrder'
    ProductOrderInformationRequiredEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            fieldPath:
              description: Field path
              type: array
              items:
                $ref: '#/components/schemas/FieldPath'
              example: []
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/ProductOrderInformationRequiredEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderInformationRequiredEvent: '#/components/schemas/ProductOrderInformationRequiredEvent'
    ProductOrderInformationRequiredEventPayload:
      description: The event data structure
      type: object
      properties:
        productOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/ProductOrder'
    CancelProductOrderStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/CancelProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          CancelProductOrderStateChangeEvent: '#/components/schemas/CancelProductOrderStateChangeEvent'
    CancelProductOrderStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        cancelProductOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/CancelProductOrder'
    RescheduleProductOrderStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/RescheduleProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          RescheduleProductOrderStateChangeEvent: '#/components/schemas/RescheduleProductOrderStateChangeEvent'
    RescheduleProductOrderStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        rescheduleProductOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/RescheduleProductOrder'
    RespondProviderChangeStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/RespondProviderChangeStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          RespondProviderChangeStateChangeEvent: '#/components/schemas/RespondProviderChangeStateChangeEvent'
    RespondProviderChangeStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        respondProviderChange:
          description: The involved resource data for the event
          $ref: '#/components/schemas/RespondProviderChange'
    CloseProductOrderStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/CloseProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          CloseProductOrderStateChangeEvent: '#/components/schemas/CloseProductOrderStateChangeEvent'
    CloseProductOrderStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        closeProductOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/CloseProductOrder'
    AddProductOrderInformationStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/AddProductOrderInformationStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          AddProductOrderInformationStateChangeEvent: '#/components/schemas/AddProductOrderInformationStateChangeEvent'
    AddProductOrderInformationStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        addProductOrderInformation:
          description: The involved resource data for the event
          $ref: '#/components/schemas/AddProductOrderInformation'
    AmendProductOrderStateChangeEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/AmendProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          AmendProductOrderStateChangeEvent: '#/components/schemas/AmendProductOrderStateChangeEvent'
    AmendProductOrderStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        amendProductOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/AmendProductOrder'
    BitstreamAccessProduct:
      description: Bitstream access product
      allOf:
        - $ref: '#/components/schemas/Product'
        - type: object
          properties:
            accessTechnology:
              description: Defines the type of connectivity (e.g. FTTH, FTTB, FTTC, HFC, Coax, TAL, OAL)
              type: string
              example: FTTH
            accessProtocol:
              description: "Defines the type and technology of the access (e.g. \tEthernet, P2P, GPON, XGS-PON, VDSL, GFAST-CuDa., GFAST-Coax, DOCSIS, ADSL, SDSL, ...)"
              type: string
              example: VDSL
            upstreamNominalBandwidth:
              description: Defines the upstream access bandwidth (e.g. 100 Mbit/s , 1 Gbit/s, 100 kbit/s)
              $ref: '#/components/schemas/Quantity'
            downstreamNominalBandwidth:
              description: Defines the downstream access bandwidth (e.g. 400 Mbit/s , 1 Gbit/s )
              $ref: '#/components/schemas/Quantity'
            trafficHandOver:
              description: Defines how the traffic is handed over to the reseller (e.g. L2, L3, LT)
              type: string
              example: L2
            trafficAggregation:
              description: Defines the aggregation provided by the supplier hand over close to customer, in a region  or one central hand over for the complete country (e.g. local, regional, national)
              type: string
              example: local
            networkTerminationUnitType:
              description: Defines the type of the access termination (e.g. withOnt, withoutOnt)
              type: string
              example: withOnt
            uniConnectorType:
              description: Defines the interface of the access termination (e.g. TAE, RJ45, E2000, LC-APC, MMD (Multi Media Dose → Koaxialdose, F-Stecker) ...)
              type: string
              example: RJ45
            reversePowering:
              description: Defines if the DSLAM needs to be reverse powered (e.g. yes, no)
              type: string
              example: 'yes'
            leadTime:
              description: Defines the typical lead time for provisioning an access
              $ref: '#/components/schemas/Duration'
            lineID:
              description: Defines the identifier of the access line. If ProductId is not known for change orders, the contract number of the product to be changed / terminated can be entered here by the buyer
              type: string
            virtualAccessLineId:
              description: Line-Identifier for the end customer
              type: string
            enni:
              description: Identifies the point of traffic interconnection external network to network interconnection (e.g. value or location of A10NSP)
              type: string
            enniPort:
              description: Defines the configured port
              type: string
              example: n/a
            cvlan:
              description: Defines the configured C-VLAN
              type: string
              example: n/a
            svlan:
              description: Defines the configured S-VLAN
              type: string
            networkTerminationUnitLocation:
              description: Describes the location of the network termination (e.g. describes the position of TAE/GF-TA or ONT)
              type: string
            homeId:
              description: Identifies the GF-TA unit at the end user's premise.
              type: string
              example: a12d5a4545
            ontSerialNumber:
              description: Serial number of the ONT
              type: string
              example: '1515515155115'
            trafficLimitationUpstream:
              description: Defines the traffic/Speedlimit of bandwith
              $ref: '#/components/schemas/Quantity'
            trafficLimitationDownstream:
              description: Defines the traffic/Speedlimit of bandwith
              $ref: '#/components/schemas/Quantity'
            singleContractIdExistingProduct:
              description: If ProductId is not known for change orders, the contract number of the product to be changed / canceled can be entered here
              type: string
              example: '3072576895'
      discriminator:
        propertyName: '@type'
        mapping:
          BitstreamAccessProduct: '#/components/schemas/BitstreamAccessProduct'
    OpticalAccessLineProduct:
      description: Optical access line product
      allOf:
        - $ref: '#/components/schemas/Product'
        - type: object
          required:
            - patchService
          properties:
            patchService:
              description: Entity connecting active and passive port
              $ref: '#/components/schemas/PatchServiceType'
            passiveAccessLineId:
              description: Technical identifier for the fibtre optical cable - starting at the ODF to the customers house - homeId
              type: string
              example: DEU.DGW.G465157FDU
            ontType:
              description: Type of ONT
              type: string
              example: '9000'
            ontActivationCode:
              description: Code required to activate an ONT at this connection, has to be provided by the NGA and used only if the ANE offers a service to deliver the ONT to the end-customer.
              type: string
              example: Aalskdg78q
            ontSerialNumber:
              description: Serial number of ONT
              type: string
              example: ALCL:F8ADCACF
            oltName:
              description: Name of the OLT the fibre shall be/is connected to.
              type: string
              example: dtm4711-access6
            oltPort:
              description: Port of the OLT the fibre shall be/is connected to.
              type: string
              example: 3/7/15
            splitterName:
              description: Name of the splitter
              type: string
              example: bch1743-NVT7-MUX34
            splitterPort:
              description: Port on the splitter the fibre is connected to may be provided by the NGA or ANE depending on set-up of the project
              type: string
              example: '27'
            switchingDataNga:
              description: Data provided by the NGA (owner of the active network) about the active fibre optical connection. Defines the location of the fibre in the POP.
              $ref: '#/components/schemas/SwitchingDataOal'
            switchingDataAne:
              description: Data provided by the ANE (owner of the passive network) about the passive fibre optical connection. Defines the location of the fibre in the POP.
              $ref: '#/components/schemas/SwitchingDataOal'
            ontProvidedBy:
              description: Provider of the ONT (e.g. Buyer, Seller)
              example: Buyer
      discriminator:
        propertyName: '@type'
        mapping:
          OpticalAccessLineProduct: '#/components/schemas/OpticalAccessLineProduct'
    PatchServiceType:
      description: |-
        Possible values are:<ul>
        <li>*partner*</li>
        <li>*supplier*</li>
        </ul>
      type: string
      enum:
        - partner
        - supplier
    SwitchingDataOal:
      description: Switching data optical access line
      type: object
      properties:
        room:
          description: Room the ODF is located
          type: string
          example: A
        rack:
          description: Rack the ODF is located
          type: string
          example: '1'
        shelf:
          description: Shelf in the rack
          type: string
          example: '3'
        slot:
          description: Slot in the shelf
          type: string
          example: '5'
        port:
          description: Port in the slot
          type: string
          example: SPL-410688-05-B-2-32
        ppid:
          description: PortId
          type: string
          example: 000SP50
    HvtLocalLoopProduct:
      description: Local loop from the central office
      allOf:
        - $ref: '#/components/schemas/LocalLoopProduct'
        - type: object
          properties:
            switchingDataHvt:
              description: Switiching data for the Local loop from the central office
              type: array
              items:
                $ref: '#/components/schemas/SwitchingDataHvt'
              example: []
              maxItems: 2
              minItems: 1
      discriminator:
        propertyName: '@type'
        mapping:
          HvtLocalLoopProduct: '#/components/schemas/HvtLocalLoopProduct'
    KvzLocalLoopProduct:
      description: Local loop from the curb
      allOf:
        - $ref: '#/components/schemas/LocalLoopProduct'
        - type: object
          properties:
            switchingDataKvz:
              description: Switching data for the Local loop from the curb
              type: array
              items:
                $ref: '#/components/schemas/SwitchingDataKvz'
              example: []
              maxItems: 2
              minItems: 1
      discriminator:
        propertyName: '@type'
        mapping:
          KvzLocalLoopProduct: '#/components/schemas/KvzLocalLoopProduct'
    LocalLoopProduct:
      description: Local loop product
      allOf:
        - $ref: '#/components/schemas/Product'
        - type: object
          properties:
            transmissionMethod:
              description: Transmission method
              type: string
              example: H01
            loopResistance:
              description: 'Total resistance (unit: ohms) of the loop'
              type: string
              example: <1200
            maxGrossBitrate:
              description: Max. gross bit rate in kbit/s
              type: string
              example: '9000'
            singleContractIdExistingProduct:
              description: If ProductId is not known for change orders, the contract number of the product to be changed / canceled can be entered here
              type: string
              example: '3072345760'
            accessLine:
              $ref: '#/components/schemas/AccessLine'
            lineSegment:
              description: Line segment
              type: array
              items:
                $ref: '#/components/schemas/LineSegment'
              example: []
              maxItems: 99
            access:
              $ref: '#/components/schemas/Access'
      discriminator:
        propertyName: '@type'
        mapping:
          LocalLoopProduct: '#/components/schemas/LocalLoopProduct'
    AccessLine:
      description: Access line for the local loop
      type: object
      properties:
        lineKey:
          description: Indicates the type of line
          type: string
          example: 96W
        areaCodeA:
          description: The area code of location A
          type: string
          example: '228'
        areaCodeB:
          description: The area code of location B
          type: string
          example: '228'
        talSequenceNumber:
          description: Consecutive number to identify the line
          type: string
          example: FXP00WZTRH
      required:
        - lineKey
        - areaCodeA
        - areaCodeB
        - talSequenceNumber
    LineSegment:
      description: Line segment
      type: object
      properties:
        id:
          description: Consecutive number to identify the line section
          type: string
          example: '1'
        length:
          description: 'Length (unit: meter) of the line section'
          type: string
          example: '441'
        diameter:
          description: Diameter of the line section
          type: string
          example: '500'
      required:
        - id
        - length
        - diameter
    Access:
      description: Notes on the commissioned connection
      type: object
      properties:
        areaCode:
          description: Area code of the previous connection (when changing provider)
          type: string
          example: '228'
        subscriberNumber:
          description: Phone number of the previous connection (when changing provider)
          type: string
          example: '123456'
      required:
        - areaCode
        - subscriberNumber
    SwitchingDataKvz:
      description: Switching data for the Local loop from the curb
      type: object
      properties:
        kvzId:
          description: Unique identifier of the cable distributor
          type: string
          example: '20'
        kvzSwitchingId:
          description: Information from the carrier regarding its switching data
          type: string
          example: '285'
      required:
        - kvzId
        - kvzSwitchingId
    SwitchingDataHvt:
      description: Switching data for the Local loop from the central office
      type: object
      properties:
        uevt:
          description: Number of  the "Übergabeverteiler"
          type: string
          example: '0203'
        evs:
          description: Number of  the "Endverschluss"
          type: string
          example: '24'
        copperPairId:
          description: Number of  the twisted pair
          type: string
          example: '43'
      required:
        - uevt
        - evs
        - copperPairId
    ProductOrderMilestone:
      description: A ProductOrderMilestone represents an action or event marking a significant change or stage in processing of a product order.
      type: object
      allOf:
        - $ref: '#/components/schemas/Milestone'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderMilestone: '#/components/schemas/ProductOrderMilestone'
    ProductOrderMilestoneEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/ProductOrderMilestoneEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderMilestoneEvent: '#/components/schemas/ProductOrderMilestoneEvent'
    ProductOrderMilestoneEventPayload:
      description: The event data structure
      type: object
      properties:
        productOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/ProductOrder'
    ProductOrderJeopardyAlert:
      description: A ProductOrderJeopardyAlert represents a predicted exception during a product order processing that would brings risk to complete successfully the order.
      type: object
      allOf:
        - $ref: '#/components/schemas/JeopardyAlert'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderJeopardyAlert: '#/components/schemas/ProductOrderJeopardyAlert'
    ProductOrderJeopardyAlertEvent:
      description: The notification data structure
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            event:
              description: The event payload linked to the involved resource object
              $ref: '#/components/schemas/ProductOrderJeopardyAlertEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderJeopardyAlertEvent: '#/components/schemas/ProductOrderJeopardyAlertEvent'
    ProductOrderJeopardyAlertEventPayload:
      description: The event data structure
      type: object
      properties:
        productOrder:
          description: The involved resource data for the event
          $ref: '#/components/schemas/ProductOrder'
    ProviderChangeInfo:
      description: Additional provider change information for terminating provider
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            respondTime:
              description: Latest time the response to the provider change request must have been submitted
              type: string
              format: date-time
              example: '2025-12-24T19:30:00+01:00'
            approval:
              description: State of the provider change approval
              type: boolean
              example: true
            responseMessage:
              $ref: '#/components/schemas/Message'
      discriminator:
        propertyName: '@type'
        mapping:
          ProviderChangeInfo: '#/components/schemas/ProviderChangeInfo'
    ProductOrderItemId:
      description: Defines the rescheduled product order item
      type: object
      properties:
        id:
          description: Identifier of the rescheduled product order item
          type: string
          example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
        appointment:
          $ref: '#/components/schemas/AppointmentRefOrValue'
        requestedTimeSlot:
          $ref: '#/components/schemas/TimeSlot'
    AdditionalOrderInformation:
      description: Defines additional order information
      type: object
      properties:
        providerChangeAgreementTechnology:
          description: Technology of the old product (only for Provider Change Use Cases)
          type: string
          example: n/a
        providerChangeAgreementLineId:
          description: LineId of the old product (only for Provider Change Use Cases)
          type: string
          example: n/a
        providerChangeAgreementSingleContractId:
          description: Single Contract Id of the old product (only for Provider Change Use Cases)
          type: string
          example: n/a
        providerChangePassiveAccessLineId:
          description: Single Contract Id of the old product (only for Provider Change Use Cases)
          type: string
          example: n/a
        previousTenantGivenName:
          description: Given Name of the previous tenant
          type: string
          example: n/a
        previousTenantFamilyName:
          description: Family Name of the previous tenant
          type: string
          example: n/a
        previousTenantNationalDestinationCode:
          description: National destination code of the previous tenant
          type: string
          example: n/a
        previousTenantSubscriberNumber:
          description: Subscriber nuber of the previous tenant
          type: string
          example: n/a
        campaignIdentifier:
          description: Identifier for marketing campaigns, e. g. promotions
          type: string
          example: Identifier for marketing campaigns, e. g. promotions
        projectIdentifier:
          description: Identifier for specific projects
          type: string
          example: n/a
        couplingIdentifier:
          description: Identifier for specific projects
          type: string
          example: n/a
        orderBindingId:
          description: Identifier used to bind orders
          type: string
          example: n/a
        orderBindingNumberOfOrders:
          description: Number of orders (used together with orderBindingId)
          type: integer
          example: 2
        orderBindingFailedExternalOrderId:
          description: Failed order number (refers to another failed order)
          type: string
          example: n/a
        copperPairInUseLineKey:
          description: LineKey of the copper pair in Use
          type: string
          example: n/a
        copperPairInUseNationalDestinationCodeA:
          description: NationalDestinationCodeA of the copper pair in Use
          type: string
          example: n/a
        copperPairInUseNationalDestinationCodeB:
          description: NationalDestinationCodeB of the copper pair in Use
          type: string
          example: n/a
        copperPairInUseTalSequenceNumber:
          description: TalSequenceNumber of the copper pair in Use
          type: string
          example: n/a
        hardwareIdType:
          description: 'HardwareId to identify the line: type (e.g. OntSerialNuber)'
          type: string
          example: n/a
        hardwareIdValue:
          description: 'HardwareId to identify the line: value'
          type: string
          example: n/a
        aggregatorProductOffering:
          description: Name of pre product
          type: string
          example: n/a
        aggregatorNGA:
          description: Seller name of pre product
          type: string
          example: n/a
        aggregatorOrderAction:
          description: Order category of pre product
          type: string
          example: n/a
        aggregatorOrderId:
          description: Order id of pre product
          type: string
          example: n/a
    Extensible:
      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
      type: object
      properties:
        '@type':
          description: When sub-classing, this defines the sub-class Extensible name
          type: string
          example: ''
        '@baseType':
          description: When sub-classing, this defines the super-class
          type: string
          example: ''
        '@schemaLocation':
          description: A URI to a JSON-Schema file that defines additional attributes and relationships
          type: string
          example: ''
      discriminator:
        propertyName: '@type'
      required:
        - '@type'
    Entity:
      description: Base entity schema for use in TMForum Open-APIs. Property.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Hyperlink reference
              type: string
              format: uri
              example: https://api.example.org/resource/id
    ContactMedium:
      description: Indicates the contact medium that could be used to contact the party.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            contactMediumIdentifier:
              description: Identifier for this contact medium.
              type: string
              example: '123'
            contactType:
              description: Type of the contact medium to qualifiy it like pro email / personal email. This is not used to define the contact medium used.
              type: string
              example: personal email
            preferred:
              description: If true, indicates that is the preferred contact medium
              type: boolean
              example: true
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          PhoneContactMedium: '#/components/schemas/PhoneContactMedium'
          EmailContactMedium: '#/components/schemas/EmailContactMedium'
          PostalAddressContactMedium: '#/components/schemas/PostalAddressContactMedium'
    PhoneContactMedium:
      description: Describes a phone number that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            phoneNumber:
              description: The phone number of the contact
              type: string
              example: +49 30 1234567
    EmailContactMedium:
      description: Describes a email that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            emailAddress:
              description: Full email address in standard format
              type: string
              example: info@example.net
    PostalAddressContactMedium:
      description: Describes a email that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            city:
              description: Full city name
              type: string
              example: Berlin
            country:
              description: Country that the address is in (ISO-3166-1 ALPHA-2)
              type: string
              example: DE
            locality:
              description: Locality
              type: string
              example: ''
            postcode:
              description: Postcode
              type: string
              example: 10117
            streetName:
              description: StreetName
              type: string
              example: Reinhardtstr.
            streetNr:
              description: StreetNr
              type: string
              example: 31
            streetNrSuffix:
              description: StreetNrSuffix
              type: string
              example: ''
    TimePeriod:
      description: A period of time, either as a deadline (endDateTime only) a startDateTime only, or both
      type: object
      properties:
        startDateTime:
          description: Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end
          type: string
          format: date-time
          example: '2023-01-01T08:00:00+01:00'
        endDateTime:
          description: End of the time period, using IETC-RFC-3339 format
          type: string
          format: date-time
          example: '2025-12-24T19:30:00+01:00'
    ExternalIdentifier:
      description: An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            externalIdentifierType:
              description: Type of the identification, typically would be the type of the entity within the external system
              type: string
              example: ProductOrder
            owner:
              description: Name of the external system that owns the entity.
              type: string
              example: AcmeCommerce
    Characteristic:
      description: Describes a given characteristic of an object or entity through a name/value pair.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier of the characteristic
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            name:
              description: Name of the characteristic
              type: string
              example: charachteristic name
            valueType:
              description: Data type of the value of the characteristic
              type: string
              example: string
      discriminator:
        propertyName: '@type'
        mapping:
          Characteristic: '#/components/schemas/Characteristic'
          StringCharacteristic: '#/components/schemas/StringCharacteristic'
          StringArrayCharacteristic: '#/components/schemas/StringArrayCharacteristic'
          ObjectCharacteristic: '#/components/schemas/ObjectCharacteristic'
          ObjectArrayCharacteristic: '#/components/schemas/ObjectArrayCharacteristic'
          NumberCharacteristic: '#/components/schemas/NumberCharacteristic'
          NumberArrayCharacteristic: '#/components/schemas/NumberArrayCharacteristic'
          IntegerCharacteristic: '#/components/schemas/IntegerCharacteristic'
          IntegerArrayCharacteristic: '#/components/schemas/IntegerArrayCharacteristic'
          BooleanCharacteristic: '#/components/schemas/BooleanCharacteristic'
          BooleanArrayCharacteristic: '#/components/schemas/BooleanArrayCharacteristic'
    StringCharacteristic:
      description: A characteristic which value is a String.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: string
              example: Lorem ipsum dolor
    StringArrayCharacteristic:
      description: A characteristic which value is a String.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: string
              example: []
    ObjectCharacteristic:
      description: A characteristic which value is an Object.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: object
              example: ''
    ObjectArrayCharacteristic:
      description: A characteristic which value is an Object.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: object
              example: []
    NumberCharacteristic:
      description: A characteristic which value is a Number.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: number
              example: 1
    NumberArrayCharacteristic:
      description: A characteristic which value is a Number.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: number
              example: []
    IntegerCharacteristic:
      description: A characteristic which value is an Integer.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: integer
              example: 1
    IntegerArrayCharacteristic:
      description: A characteristic which value is an Integer.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: integer
              example: []
    BooleanCharacteristic:
      description: A characteristic which value is a Boolean.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: boolean
              example: true
    BooleanArrayCharacteristic:
      description: A characteristic which value is a Boolean.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: boolean
              example: []
    Party:
      description: Generic Party structure used to define commonalities between sub concepts of Individual and Organization.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            contactMedium:
              description: List of means for contacting the party, e.g. mobile phone, email address
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              example: []
            externalReference:
              description: List of identifiers of the Party in an external system, for example when party information is imported from a commerce system
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            partyCharacteristic:
              description: List of additional characteristics that a Party can take on.
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
    Individual:
      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.
      allOf:
        - $ref: '#/components/schemas/Party'
        - type: object
          properties:
            familyName:
              description: Contains the non-chosen or inherited name. Also known as last name in the Western context
              type: string
              example: Muster
            salutation:
              description: Standard wording used to address an individual
              type: string
              example: Ms
            givenName:
              description: First name of the individual
              type: string
              example: Melanie
            title:
              description: Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ...
              type: string
              example: Dr.
    Organization:
      description: Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data.
      allOf:
        - $ref: '#/components/schemas/Party'
        - type: object
          properties:
            name:
              description: Organization name (department name for example)
              type: string
              example: Acme Corp.
    EntityRef:
      description: Entity reference schema to be use for all entityRef class.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - id
          properties:
            id:
              description: Identifier of the referred entity.
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Hyperlink reference
              type: string
              format: uri
              example: https://api.example.org/resource/id
            name:
              description: Name of the referred entity.
              type: string
              example: EntityName
            '@referredType':
              description: The actual type of the target instance when needed for disambiguation.
              type: string
              example: ''
    PartyRef:
      description: Party reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    PartyRoleRef:
      description: Party role reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    AccountRef:
      description: Account reference. A account may be a party account or a financial account.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          properties:
            description:
              description: Detailed description of the account
              type: string
              example: lorem ipsum dolor
    AgreementRef:
      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.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    PartyOrPartyRole:
      description: A Party or PartyRole or Ref
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/Individual'
        - $ref: '#/components/schemas/Organization'
        - $ref: '#/components/schemas/PartyRef'
        - $ref: '#/components/schemas/PartyRoleRef'
        - $ref: '#/components/schemas/PartyRole'
    RelatedPartyOrPartyRole:
      description: RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - role
            - partyOrPartyRole
          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
              example: ''
            partyOrPartyRole:
              $ref: '#/components/schemas/PartyOrPartyRole'
    PartyRole:
      description: The part played by a party in a given context.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - name
            - engagedParty
          properties:
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            name:
              description: A word, term, or phrase by which the PartyRole is known and distinguished from other PartyRoles. It's the name of the PartyRole unique entity.
              type: string
              example: PartyRoleName
            description:
              description: A description of the PartyRole.
              type: string
              example: Lorem ipsum dolor
            role:
              description: Role played by the engagedParty in this context. As role is defined by partyRoleSpecification, this role attribute can be used to precise the role defined by partyRoleSpecification, or it can be used to define the role in case there is no partyRoleSpecification.
              type: string
              example: ''
            engagedParty:
              $ref: '#/components/schemas/PartyRef'
            characteristic:
              description: Describes the characteristic of a party role.
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
            account:
              description: Account
              type: array
              items:
                $ref: '#/components/schemas/AccountRef'
              example: []
            agreement:
              description: Agreement
              type: array
              items:
                $ref: '#/components/schemas/AgreementRef'
              example: []
            contactMedium:
              description: Contact medium
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              example: []
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            status:
              description: Used to track the lifecycle status of the party role.
              type: string
              example: ''
            statusReason:
              description: A string providing an explanation on the value of the status lifecycle. For instance if the status is Rejected, statusReason will provide the reason for rejection.
              type: string
              example: ''
            validFor:
              $ref: '#/components/schemas/TimePeriod'
    Agreement:
      description: 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/Entity'
        - type: object
          required:
            - agreementType
          properties:
            name:
              description: A human-readable name for the agreement
              type: string
              example: contract no. 42
            engagedParty:
              description: Engaged party
              type: array
              items:
                $ref: '#/components/schemas/PartyOrPartyRole'
              example: []
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            agreementType:
              description: Type of the agreement (e.g. witaContract, ServiceContractCustomer, ServiceContractOrderer, SingleContract, PreAgreement, witaContract,...)
              type: string
              example: ServiceContractOrderer
    AgreementRefOrValue:
      description: Agreement reference or value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/Agreement'
        - $ref: '#/components/schemas/AgreementRef'
    Note:
      description: Extra information about a given entity
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - text
          properties:
            author:
              description: Author of the note
              type: string
              example: jarvis
            date:
              description: Date of the note
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            text:
              description: Text of the note
              type: string
              example: Lorem ipsum dolor
      discriminator:
        propertyName: '@type'
        mapping:
          Note: '#/components/schemas/Note'
          InstallationInstruction: '#/components/schemas/InstallationInstruction'
    InstallationInstruction:
      description: Specialization of Note
      allOf:
        - $ref: '#/components/schemas/Note'
        - type: object
    Quantity:
      description: An amount in a given unit
      type: object
      properties:
        amount:
          description: Numeric value in a given unit
          type: number
          format: float
          example: 20
          default: 1
        units:
          description: Unit
          type: string
          example: MBit/s
    Duration:
      description: A time interval in a given unit of time
      type: object
      properties:
        amount:
          description: Time interval (number of seconds, minutes, hours, etc.)
          type: integer
          example: 60
        units:
          description: Unit of time (seconds, minutes, hours, etc.)
          type: string
          example: seconds
    Place:
      description: Place value (base class).
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            externalIdentifier:
              type: array
              description: Collection of external identifiers
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
    GeographicSubAddress:
      description: |-
        Representation of a GeographicSubAddress 
        It 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.
      allOf:
        - $ref: '#/components/schemas/Place'
        - type: object
          properties:
            buildingName:
              description: Allows for buildings that have well-known names
              type: string
              example: Hinterhaus
            buildingComplement:
              description: Additional designation for completing the building name
              type: string
              example: n/a
    GeographicAddress:
      description: |-
        Structured textual way of describing how to find a Property in an urban area (country properties are often defined differently).
        Note : Address corresponds to SID UrbanPropertyAddress
      allOf:
        - $ref: '#/components/schemas/Place'
        - type: object
          properties:
            city:
              description: City that the address is in
              type: string
              example: Berlin
            country:
              description: Country that the address is in (ISO-3166-1 ALPHA-2)
              type: string
              example: DE
            locality:
              description: An area of defined or undefined boundaries within a local authority or other legislatively defined area, usually rural or semi rural in nature. [ANZLIC-STREET], or a suburb, a bounded locality within a city, town or shire principally of urban character [ANZLICSTREET]
              type: string
              example: ''
            postcode:
              description: descriptor for a postal delivery area, used to speed and simplify the delivery of mail (also know as zipcode)
              type: string
              example: '10117'
            streetName:
              description: Name of the street or other street type
              type: string
              example: Reinhardtstr.
            streetNr:
              description: Number identifying a specific property on a public street. It may be combined with streetNrLast for ranged addresses
              type: string
              example: '31'
            streetNrSuffix:
              description: the first street number suffix
              type: string
              example: a
            geographicSubAddress:
              description: Geographic sub address
              type: array
              items:
                $ref: '#/components/schemas/GeographicSubAddress'
              example: []
    GeographicSite:
      description: Geographic site
      allOf:
        - $ref: '#/components/schemas/Place'
        - type: object
          properties:
            code:
              description: 'A code that may be used for some addressing schemes eg: [ANSI T1.253-1999]'
              type: string
              example: ''
            creationDate:
              description: Date and time when the GeographicSite was created
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            description:
              description: Text describing additional information regarding the site
              type: string
              example: Lorem ipsum dolor
            place:
              description: Place
              type: array
              items:
                $ref: '#/components/schemas/Place'
              example: []
            geographicSiteCharacteristic:
              description: Geographic site characteristics
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
            status:
              description: The condition of the GeographicSite, such as planned, underConstruction, cancelled, active, inactive, former
              type: string
              example: active
    PlaceRef:
      description: Place reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    PlaceRefOrValue:
      description: A place ref or value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/GeographicAddress'
        - $ref: '#/components/schemas/GeographicSite'
        - $ref: '#/components/schemas/PlaceRef'
    RelatedPlaceRefOrValue:
      description: Entity reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the RelatedPlace entity and not the RelatedPlaceRefOrValue class itself
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - role
            - place
          properties:
            role:
              description: Role played by the related entity
              type: string
              example: ''
            place:
              $ref: '#/components/schemas/PlaceRefOrValue'
    TargetProductSchema:
      description: The reference object to the schema and type of target product which is described by product specification
      type: object
      properties:
        '@schemaLocation':
          description: This field provides a link to the schema describing the target product
          type: string
          example: https://schemas.example.com/example/schema
        '@type':
          description: Class type of the target product
          type: string
          example: ''
      required:
        - '@schemaLocation'
        - '@type'
    ProductSpecificationRef:
      description: 'Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.'
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          properties:
            version:
              description: Version of the product specification
              type: string
              example: '1.0'
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
    ProductOffering:
      description: Represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            description:
              description: Description of the productOffering
              type: string
              example: Lorem ipsum dolor
            version:
              description: ProductOffering version
              type: string
              example: '1.0'
            lifecycleStatus:
              description: Used to indicate the current lifecycle status
              type: string
              example: created
            name:
              description: Name of the productOffering
              type: string
              example: product offering name
            productSpecification:
              description: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
              $ref: '#/components/schemas/ProductSpecificationRef'
    ProductOfferingRef:
      description: ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    ProductOfferingRefOrValue:
      description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the ProductOfferingRefOrValue class itself
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/ProductOffering'
        - $ref: '#/components/schemas/ProductOfferingRef'
    TimeSlot:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - validFor
          properties:
            id:
              description: Unique identifier of the TimeSlot
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Reference of the TimeSlot
              type: string
              example: https://api.example.org/timeslot/id
            relatedParty:
              description: RelatedParty reference. A related party defines party or party role linked to a specific entity.
              $ref: '#/components/schemas/RelatedPartyOrPartyRole'
            validFor:
              description: Start date and end date of the timeSlot
              $ref: '#/components/schemas/TimePeriod'
    AppointmentRef:
      description: Appointment reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    AttachmentRef:
      description: Attachment reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    Attachment:
      description: Complements the description of an element (for instance a product) through video, pictures...
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            attachmentType:
              description: Attachment type such as video, picture
              type: string
              example: video
            content:
              description: The actual contents of the attachment object, if embedded, encoded as base64
              example: ''
              format: base64
              type: string
            description:
              description: A narrative text describing the content of the attachment
              type: string
              example: Photograph of the Product
            mimeType:
              description: Attachment mime type such as extension file for video, picture and document
              type: string
              example: image/AVIF
            name:
              description: The name of the attachment
              type: string
              example: attachment.file
            url:
              description: Uniform Resource Locator, is a web page address (a subset of URI)
              type: string
              format: uri
              example: https://api.example.org/content/4aafacbd-11ff-4dc8-b445-305f2215715f
            size:
              description: The size of the attachment.
              $ref: '#/components/schemas/Quantity'
            validFor:
              description: The period of time for which the attachment is valid
              $ref: '#/components/schemas/TimePeriod'
    AttachmentRefOrValue:
      description: Attachment reference or value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/AttachmentRef'
        - $ref: '#/components/schemas/Attachment'
    AppointmentStateType:
      description: |-
        Valid values for the lifecycle status of the appointment are:<ul>
        <li>*initialized*: Appointment initialized</li>
        <li>*confirmed*: Appointment confirmed</li>
        <li>*cancelled*: Appointment cancelled</li>
        <li>*completed*: Appointment completed</li>
        <li>*failed*: Appointment failed</li
        </ul>
      type: string
      enum:
        - initialized
        - confirmed
        - cancelled
        - completed
        - failed
    Appointment:
      description: An Appointment is an arrangement to do something or meet someone at a particular time, at a place (for face to face appointment) or in a contact medium (for phone appointment).
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - validFor
          properties:
            category:
              description: 'Business category : intervention for example or to be more precise after SalesIntervention, orderDeliveryIntervention,...'
              type: string
              example: intervention
            creationDate:
              description: Appointment creation date
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            description:
              description: Short free text describing the appointment
              type: string
              example: Lorem ipsum dolor
            externalId:
              description: External reference known by the customer
              type: string
              example: '1234'
            lastUpdate:
              description: Date of last appointment update
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            attachment:
              description: Attachment
              type: array
              items:
                $ref: '#/components/schemas/AttachmentRefOrValue'
              example: []
            contactMedium:
              description: Contact medium
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              example: []
            note:
              description: Note
              type: array
              items:
                $ref: '#/components/schemas/Note'
              example: []
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            relatedPlace:
              description: Related place defines (by reference or value) the place where the appointment will take place.
              $ref: '#/components/schemas/RelatedPlaceRefOrValue'
            status:
              $ref: '#/components/schemas/AppointmentStateType'
            validFor:
              $ref: '#/components/schemas/TimePeriod'
    AppointmentRefOrValue:
      description: Appointment reference and value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/AppointmentRef'
        - $ref: '#/components/schemas/Appointment'
    Message:
      description: A message described as a combination of a text and a code with additional info where required.
      type: object
      properties:
        code:
          description: Predefined code corresponding to the message
          type: string
          example: '00'
        text:
          description: Predefined text describing the message corresponding to the code
          type: string
          example: Lorem ipsum dolor
        additionalInformation:
          description: additional textual information for the message
          type: string
          example: Lorem ipsum dolor
        messageSource:
          description: Predefined text describing the message corresponding to the code (e.g. Related)
          type: string
          example: Related
    StateChange:
      description: Holds the state notification message and associated date the state changed, populated by the server
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - stateChangeDate
            - state
          properties:
            stateChangeDate:
              description: The date and time the state changed.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            stateChangeMessage:
              description: Message for the state change described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            state:
              description: The state of the API resource
              type: string
              example: ''
    JeopardyAlert:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: |-
            A JeopardyAlert represents a predicted exception during a process that may cause a risk
            to complete successfully the process.
          properties:
            id:
              description: Identifier of the JeopardyAlert
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            alertDate:
              description: A date time( DateTime). The date that the alert issued
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            name:
              description: A string used to give a name to the jeopardy alert
              type: string
              example: alert name
            jeopardyAlertMessage:
              description: Text and code that represents the message of the jeopardy alert
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            estimatedAlertEndDate:
              description: A date time(DateTime). The estimated date of the alert ending
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            exception:
              description: The exception associated with this jeopardy alert
              type: string
      discriminator:
        propertyName: '@type'
        mapping:
          JeopardyAlert: '#/components/schemas/JeopardyAlert'
    Milestone:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: |-
            Milestone represents an action or event marking a significant change or stage in a
            process like an order process.
          properties:
            id:
              description: Identifier of the Milestone
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            milestoneDate:
              description: A date time( DateTime). The date that the milestone happens
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            name:
              description: A string used to give a name to the milestone
              type: string
              example: milestone name
            milestoneMessage:
              description: Text and code that represents the message of the milestone
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            relatedState:
              description: |-
                Documents the state of the related API Resource at the time of the
                Milestone
              type: string
              example: active
      discriminator:
        propertyName: '@type'
        mapping:
          Milestone: '#/components/schemas/Milestone'
    ErrorMessage:
      description: Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - code
            - reason
          properties:
            code:
              description: Application relevant detail, defined in the API or a common list.
              type: string
              example: '0995'
            reason:
              description: Explanation of the reason for the error which can be shown to a client user.
              type: string
              example: human error
            message:
              description: More details and corrective actions related to the error which can be shown to a client user.
              type: string
              example: Datenstruktur unzulässig.
            status:
              description: HTTP Error code extension
              type: string
              example: not found
            referenceError:
              description: URI of documentation describing the error.
              type: string
              format: uri
              example: https://api.example.org/error/id
          example:
            '@type': ErrorMessage
            code: '0995'
            reason: human error
            message: Datenstruktur unzulässig.
            status: not found
            referenceError: https://api.example.org/error/id
    Extensible_FVO:
      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
      type: object
      properties:
        '@type':
          description: When sub-classing, this defines the sub-class Extensible name
          type: string
          example: ''
        '@baseType':
          description: When sub-classing, this defines the super-class
          type: string
          example: ''
        '@schemaLocation':
          description: A URI to a JSON-Schema file that defines additional attributes and relationships
          type: string
          example: ''
      discriminator:
        propertyName: '@type'
      required:
        - '@type'
    TaskStateType:
      description: |-
        Possible values for the state of a task are:<ul>
        <li>*acknowledged*: The acknowledged state is used if a task resource has been received and has passed message and basic business validations.</li>
        <li>*rejected*: The task has been rejected during validation or processing.</li>
        <li>*inProgress*: The InProgress state is used while the task is being processed.</li>
        <li>*done*: The task has been completed and a result is available.</li>
        </ul>
      type: string
      enum:
        - acknowledged
        - rejected
        - inProgress
        - done
    TaskEntity:
      description: Base schema for task resource entities
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            state:
              $ref: '#/components/schemas/TaskStateType'
            stateChangeDate:
              description: The date and time the state changed.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            stateChangeMessage:
              description: Message for the state change described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            requestDate:
              description: Date when the task resource was created
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            requestPostedDate:
              description: Date when the request was posted
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            stateChangeHistory:
              description: The state change history that is associated to the Entity. Populated by the server
              type: array
              items:
                $ref: '#/components/schemas/StateChange'
              example: []
            externalIdentifier:
              description: A reference to an externally defined object in the context of the managed entity
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
    Entity_FVO:
      description: Base entity schema for use in TMForum Open-APIs. Property.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
    TaskEntity_FVO:
      description: Base schema for task resource FVO entities
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          properties:
            requestPostedDate:
              description: Date when the request was posted
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            externalIdentifier:
              description: A reference to an externally defined object in the context of the managed entity
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
    Event:
      description: event with common attributes.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            eventId:
              description: The identifier of the notification.
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            eventTime:
              description: Time of the event occurrence.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            eventType:
              description: The type of the notification.
              type: string
              example: ''
            description:
              description: An explanatory of the event.
              type: string
              example: Lorem ipsum dolor
            timeOccurred:
              description: The time the event occurred.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            source:
              description: Source Entity described by EntityRef
              $ref: '#/components/schemas/EntityRef'
            reportingSystem:
              description: Reporting System described by EntityRef
              $ref: '#/components/schemas/EntityRef'
          required:
            - eventId
            - eventTime
            - eventType
            - event
    FieldPath:
      description: Field path
      type: object
      properties:
        path:
          description: Path of updated attribute
          type: string
          example: /productOrderItem/0/product/terminationDate
        typeOfChange:
          description: Type of change
          type: string
          example: add
      required:
        - path
    AttributeValueChangeEvent:
      description: Attribute value change event
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            fieldPath:
              description: Field path
              type: array
              items:
                $ref: '#/components/schemas/FieldPath'
              example: []
  examples:
    CreateProductOrder_request:
      description: POST ProductOrder Request Example
      value:
        '@type': ProductOrder_FVO
        category: new
        orderPostedDate: '2022-05-11T10:30:00+02:00'
        requestedCompletionDate: '2022-12-01T12:00:00+01:00'
        agreement:
          - '@type': Agreement
            name: buyerServiceContract
            engagedParty:
              - '@type': Organization
                businessId: '500011'
            businessId: '500012'
            agreementType: buyerServiceContract
          - '@type': Agreement
            name: ordererServiceContract
            engagedParty:
              - '@type': Organization
                businessId: '500014'
            businessId: '500013'
            agreementType: ordererServiceContract
          - '@type': Agreement
            name: providerChangeAgreement
            businessId: DEU.VFD.V012345678
            agreementType: providerChangeAgreement
        externalId:
          - '@type': ExternalIdentifier
            id: '1000111'
            externalIdentifierType: externalOrderId
            owner: DEU.VFD
        billingAccount:
          '@type': BillingAccountRef
          id: '5793126789'
        note:
          - '@type': InstallationInstruction
            text: zweimal klingeln
        productOrderItem:
          - '@type': ProductOrderItem
            id: '1'
            action: add
            product:
              '@type': BitstreamAccessProduct
              relatedPlace:
                - '@type': RelatedPlaceRefOrValue
                  role: locationA
                  place:
                    '@type': GeographicAddress
                    city: Rheinhausen
                    country: DE
                    locality: Nordstadt
                    postcode: '59055'
                    streetName: Biberweg
                    streetNr: '2'
                    streetNrSuffix: a
                    geographicSubAddress:
                      - '@type': GeographicSubAddress
                        buildingName: Einfamilienhaus
              networkTerminationUnitLocation: Flur 3.OG
              homeId: a12d5a4545
            productOffering:
              '@type': ProductOffering
              name: FTTH 250000
            requestedTimeSlot:
              '@type': TimeSlot
              validFor:
                startDateTime: '2022-12-01T08:00:00+01:00'
                endDateTime: '2022-12-01T12:00:00+01:00'
        relatedParty:
          - '@type': RelatedPartyOrPartyRole
            role: orderManagementBuyerContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221456789'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917754545454'
                - '@type': EmailContactMedium
                  contactType: email
                  emailAddress: j.kirk@example.net
              familyName: Kirk
              salutation: Herr
              givenName: James T.
              title: Captain
          - '@type': RelatedPartyOrPartyRole
            role: installationContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221145155'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917878878788'
                - '@type': EmailContactMedium
                  contactType: email
                  emailAddress: a.fischer@example.net
              familyName: Fischer
              salutation: Herr
              givenName: Alexander
          - '@type': RelatedPartyOrPartyRole
            role: locationAContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221145155'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917878878788'
              familyName: Fischer
              salutation: Herr
              givenName: Alexander
        additionalOrderInformation:
          campaignIdentifier: PromotionFiber
          projectIdentifier: AB1234
          couplingIdentifier: QW567
          orderBindingId: AK45678
          orderBindingNumberOfOrders: 5
          hardwareIdType: OntSerialNumber
          hardwareIdValue: '1234567890'
    CreateCancelProductOrder_request:
      description: POST CancelProductOrder Request Example
      value:
        '@type': CancelProductOrder_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
    CreateRescheduleProductOrder_request:
      description: POST RescheduleProductOrder Request Example
      value:
        '@type': RescheduleProductOrder_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        rescheduledRequestedCompletionDate: '2022-07-20T12:00:00+02:00'
        productOrderItem:
          id: '1'
          requestedTimeSlot:
            '@type': TimeSlot
            validFor:
              startDateTime: '2022-07-20T08:00:00+02:00'
              endDateTime: '2022-07-20T12:00:00+02:00'
    CreateCloseProductOrder_request:
      description: POST CloseProductOrder Request Example
      value:
        '@type': CloseProductOrder_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        closeMessage:
          - code: '111'
            text: TBD
    CreateAddProductOrderInformation_request:
      description: POST AddProductOrderInformation Request Example
      value:
        '@type': AddProductOrderInformation_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        relatedParty:
          '@type': RelatedPartyOrPartyRole
          role: installationContact
          partyOrPartyRole:
            '@type': Individual
            contactMedium:
              - '@type': PhoneContactMedium
                contactType: fixed
                phoneNumber: '+49221145155'
              - '@type': PhoneContactMedium
                contactType: mobile
                phoneNumber: '+4917878878788'
              - '@type': EmailContactMedium
                contactType: email
                emailAddress: a.fischer@example.net
            familyName: Fischer
            salutation: Herr
            givenName: Alexander
        note:
          '@type': Note
          text: zweimal klingeln
    CreateAmendProductOrder_request:
      description: POST AmendProductOrder Request Example
      value:
        '@type': AmendProductOrder_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        amendProductOrderItem:
          - action: add
            productOrderItem:
              '@type': ProductOrderItem
              id: '2'
              action: add
              productOffering:
                '@type': ProductOffering
                name: Bereitstellung Komfort
              productOrderItemRelationship:
                - '@type': OrderItemRelationship
                  id: '1'
                  relationshipType: dependsOn
    CreateRespondProviderChange_request:
      description: POST RespondProviderChange Request Example
      value:
        '@type': RespondProviderChange_FVO
        productOrder:
          '@type': ProductOrderRef
          id: 596d7fa0-981f-4b98-bcf5-e9b2955776f4
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/596d7fa0-981f-4b98-bcf5-e9b2955776f4
        approval: false
        responseMessage:
          - code: KVE
            text: Vorabstimmungs-ID fehlerhaft
    ProductOrderAttributeValueChangeEvent_request:
      description: Message example for ProductOrderAttributeValueChangeEvent event
      value:
        '@type': ProductOrderAttributeValueChangeEvent
        eventId: bc026dc4-f8ac-4d59-8baf-e252cb73c6a6
        eventTime: '2022-05-11T10:30:30+02:00'
        eventType: ProductOrderAttributeValueChangeEvent
        fieldPath:
          - path: /earliestOrderRetry
            typeOfChange: add
          - path: /productOrderItem/0/alternateProductOffering
            typeOfChange: add
          - path: /productOrderItem/0/product/relatedPlace/-
            typeOfChange: add
        event:
          productOrder:
            '@type': ProductOrder
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            category: new
            creationDate: '2022-05-11T10:30:30+02:00'
            orderPostedDate: '2022-05-11T10:30:00+02:00'
            requestedCompletionDate: '2022-12-01T12:00:00+01:00'
            agreement:
              - '@type': Agreement
                name: buyerServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500011'
                businessId: '500012'
                agreementType: buyerServiceContract
              - '@type': Agreement
                name: ordererServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500014'
                businessId: '500013'
                agreementType: ordererServiceContract
              - '@type': Agreement
                name: providerChangeAgreement
                businessId: DEU.VFD.V012345678
                agreementType: providerChangeAgreement
            externalId:
              - '@type': ExternalIdentifier
                id: '1000111'
                externalIdentifierType: externalOrderId
                owner: DEU.VFD
            productOrderItem:
              - '@type': ProductOrderItem
                id: '1'
                action: add
                product:
                  '@type': BitstreamAccessProduct
                  creationDate: '2022-05-11T10:30:30+02:00'
                  relatedPlace:
                    - '@type': RelatedPlaceRefOrValue
                      role: locationA
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        locality: Nordstadt
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: a
                        geographicSubAddress:
                          - '@type': GeographicSubAddress
                            buildingName: Einfamilienhaus
                    - '@type': RelatedPlaceRefOrValue
                      role: alternateAddress
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: b
                  networkTerminationUnitLocation: Flur 3.OG
                  homeId: a12d5a4545
                productOffering:
                  '@type': ProductOffering
                  name: FTTH 250000
                alternateProductOffering:
                  '@type': ProductOffering
                  name: FTTH L2 PON 1500 1000
                requestedTimeSlot:
                  '@type': TimeSlot
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
            relatedParty:
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementBuyerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221456789'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917754545454'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: j.kirk@example.net
                  familyName: Kirk
                  salutation: Herr
                  givenName: James T.
                  title: Captain
              - '@type': RelatedPartyOrPartyRole
                role: installationContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: a.fischer@example.net
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: locationAContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
            state: acknowledged
            stateChangeDate: '2022-05-11T10:30:00+02:00'
            earliestOrderRetry: '2023-01-16T10:00:00+01:00'
            additionalOrderInformation:
              campaignIdentifier: PromotionFiber
              projectIdentifier: AB1234
              couplingIdentifier: QW567
              orderBindingId: AK45678
              orderBindingNumberOfOrders: 5
              hardwareIdType: OntSerialNumber
              hardwareIdValue: '1234567890'
    ProductOrderStateChangeEvent_request:
      description: Message example for ProductOrderStateChangeEvent event
      value:
        '@type': ProductOrderStateChangeEvent
        eventId: d1e29549-97d5-48f6-9b34-fe9ed626cb6e
        eventTime: '2022-05-11T10:31:00+02:00'
        eventType: ProductOrderStateChangeEvent
        event:
          productOrder:
            '@type': ProductOrder
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            category: new
            creationDate: '2022-05-11T10:30:30+02:00'
            orderPostedDate: '2022-05-11T10:30:00+02:00'
            requestedCompletionDate: '2022-12-01T12:00:00+01:00'
            agreement:
              - '@type': Agreement
                name: buyerServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500011'
                businessId: '500012'
                agreementType: buyerServiceContract
              - '@type': Agreement
                name: ordererServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500014'
                businessId: '500013'
                agreementType: ordererServiceContract
              - '@type': Agreement
                name: providerChangeAgreement
                businessId: DEU.VFD.V012345678
                agreementType: providerChangeAgreement
            externalId:
              - '@type': ExternalIdentifier
                id: '1000111'
                externalIdentifierType: externalOrderId
                owner: DEU.VFD
            productOrderItem:
              - '@type': ProductOrderItem
                id: '1'
                action: add
                product:
                  '@type': BitstreamAccessProduct
                  creationDate: '2022-05-11T10:30:30+02:00'
                  relatedPlace:
                    - '@type': RelatedPlaceRefOrValue
                      role: locationA
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        locality: Nordstadt
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: a
                        geographicSubAddress:
                          - '@type': GeographicSubAddress
                            buildingName: Einfamilienhaus
                  networkTerminationUnitLocation: Flur 3.OG
                  homeId: a12d5a4545
                productOffering:
                  '@type': ProductOffering
                  name: FTTH 250000
                requestedTimeSlot:
                  '@type': TimeSlot
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
            relatedParty:
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementBuyerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221456789'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917754545454'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: j.kirk@example.net
                  familyName: Kirk
                  salutation: Herr
                  givenName: James T.
                  title: Captain
              - '@type': RelatedPartyOrPartyRole
                role: installationContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: a.fischer@example.net
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: locationAContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementSellerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221789456'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878787878'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: l.bach@example.net
                  familyName: Bach
                  salutation: Frau
                  givenName: Lisa
            state: accepted
            stateChangeDate: '2022-05-11T10:31:00+02:00'
            stateChangeMessage:
              - code: '0000'
                text: Keine Änderung zum Auftrag
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:30:00+02:00'
                state: acknowledged
            additionalOrderInformation:
              campaignIdentifier: PromotionFiber
              projectIdentifier: AB1234
              couplingIdentifier: QW567
              orderBindingId: AK45678
              orderBindingNumberOfOrders: 5
              hardwareIdType: OntSerialNumber
              hardwareIdValue: '1234567890'
    ProductOrderMilestoneEvent_request:
      description: Message example for ProductOrderMilestoneEvent event
      value:
        '@type': ProductOrderMilestoneEvent
        eventId: c4477492-8895-47ff-ae3b-34eaad0935a8
        eventTime: '2022-05-25T10:32:00+02:00'
        eventType: ProductOrderMilestoneEvent
        event:
          productOrder:
            '@type': ProductOrder
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            category: new
            expectedCompletionDate: '2022-12-01T12:00:00+01:00'
            creationDate: '2022-05-11T10:30:30+02:00'
            orderPostedDate: '2022-05-11T10:30:00+02:00'
            requestedCompletionDate: '2022-12-01T12:00:00+01:00'
            agreement:
              - '@type': Agreement
                name: buyerServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500011'
                businessId: '500012'
                agreementType: buyerServiceContract
              - '@type': Agreement
                name: ordererServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500014'
                businessId: '500013'
                agreementType: ordererServiceContract
              - '@type': Agreement
                name: providerChangeAgreement
                businessId: DEU.VFD.V012345678
                agreementType: providerChangeAgreement
              - '@type': Agreement
                name: singleContract
                businessId: '3091231119'
                agreementType: singleContract
            externalId:
              - '@type': ExternalIdentifier
                id: '1000111'
                externalIdentifierType: externalOrderId
                owner: DEU.VFD
            productOrderItem:
              - '@type': ProductOrderItem
                id: '1'
                action: add
                product:
                  '@type': BitstreamAccessProduct
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  href: https://api.example.org/tmf-api/productInventoryManagement/v5/product/922ebf01-e930-47a0-842e-059d1f188a15
                  creationDate: '2022-05-11T10:30:30+02:00'
                  relatedPlace:
                    - '@type': RelatedPlaceRefOrValue
                      role: locationA
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        locality: Nordstadt
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: a
                        geographicSubAddress:
                          - '@type': GeographicSubAddress
                            buildingName: Einfamilienhaus
                  lineID: DEU.DTAG.FTYLIQ7PFT
                  networkTerminationUnitLocation: Flur 3.OG
                  homeId: a12d5a4545
                productOffering:
                  '@type': ProductOffering
                  name: FTTH 250000
                endUserAppointmentIsNecessary: true
                requestedTimeSlot:
                  '@type': TimeSlot
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
                appointment:
                  '@type': Appointment
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
            relatedParty:
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementBuyerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221456789'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917754545454'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: j.kirk@example.net
                  familyName: Kirk
                  salutation: Herr
                  givenName: James T.
                  title: Captain
              - '@type': RelatedPartyOrPartyRole
                role: installationContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: a.fischer@example.net
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: locationAContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementSellerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221789456'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878787878'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: l.bach@example.net
                  familyName: Bach
                  salutation: Frau
                  givenName: Lisa
            state: inProgress
            stateChangeDate: '2022-05-20T10:39:00+02:00'
            stateChangeMessage:
              - code: '0000'
                text: Keine Änderung zum Auftrag
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:30:00+02:00'
                state: acknowledged
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:31:00+02:00'
                stateChangeMessage:
                  - code: '0000'
                    text: Keine Änderung zum Auftrag
                state: accepted
            productOrderMilestone:
              - '@type': ProductOrderMilestone
                milestoneDate: '2022-05-25T10:32:00+02:00'
                name: intermediateMessage
                milestoneMessage:
                  - code: '0073'
                    text: Information zum Auftrag.
            additionalOrderInformation:
              aggregatorProductOffering: FTTH-2.0-L3-BSA
              aggregatorNGA: DTAG
              aggregatorOrderAction: NEU
              aggregatorOrderId: AP0***8
    ProductOrderJeopardyAlertEvent_request:
      description: Message example for ProductOrderJeopardyAlertEvent event
      value:
        '@type': ProductOrderJeopardyAlertEvent
        eventId: 50c1005e-eccb-4d3a-ab9c-8427ad9f0980
        eventTime: '2022-05-20T10:41:00+02:00'
        eventType: ProductOrderJeopardyAlertEvent
        event:
          productOrder:
            '@type': ProductOrder
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            category: new
            expectedCompletionDate: '2022-12-01T12:00:00+01:00'
            creationDate: '2022-05-11T10:30:30+02:00'
            orderPostedDate: '2022-05-11T10:30:00+02:00'
            requestedCompletionDate: '2022-12-01T12:00:00+01:00'
            agreement:
              - '@type': Agreement
                name: buyerServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500011'
                businessId: '500012'
                agreementType: buyerServiceContract
              - '@type': Agreement
                name: ordererServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500014'
                businessId: '500013'
                agreementType: ordererServiceContract
              - '@type': Agreement
                name: providerChangeAgreement
                businessId: DEU.VFD.V012345678
                agreementType: providerChangeAgreement
              - '@type': Agreement
                name: singleContract
                businessId: '3091231119'
                agreementType: singleContract
            externalId:
              - '@type': ExternalIdentifier
                id: '1000111'
                externalIdentifierType: externalOrderId
                owner: DEU.VFD
            productOrderItem:
              - '@type': ProductOrderItem
                id: '1'
                action: add
                product:
                  '@type': BitstreamAccessProduct
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  href: https://api.example.org/tmf-api/productInventoryManagement/v5/product/922ebf01-e930-47a0-842e-059d1f188a15
                  creationDate: '2022-05-11T10:30:30+02:00'
                  relatedPlace:
                    - '@type': RelatedPlaceRefOrValue
                      role: locationA
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        locality: Nordstadt
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: a
                        geographicSubAddress:
                          - '@type': GeographicSubAddress
                            buildingName: Einfamilienhaus
                  lineID: DEU.DTAG.FTYLIQ7PFT
                  networkTerminationUnitLocation: Flur 3.OG
                  homeId: a12d5a4545
                productOffering:
                  '@type': ProductOffering
                  name: FTTH 250000
                endUserAppointmentIsNecessary: true
                requestedTimeSlot:
                  '@type': TimeSlot
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
                appointment:
                  '@type': Appointment
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
            relatedParty:
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementBuyerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221456789'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917754545454'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: j.kirk@example.net
                  familyName: Kirk
                  salutation: Herr
                  givenName: James T.
                  title: Captain
              - '@type': RelatedPartyOrPartyRole
                role: installationContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: a.fischer@example.net
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: locationAContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementSellerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221789456'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878787878'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: l.bach@example.net
                  familyName: Bach
                  salutation: Frau
                  givenName: Lisa
            state: pending
            stateChangeDate: '2022-05-20T10:40:00+02:00'
            stateChangeMessage:
              - code: '6000'
                text: Endkunde hat Herstellung zurückgestellt/verweigert.
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:30:00+02:00'
                state: acknowledged
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:31:00+02:00'
                stateChangeMessage:
                  - code: '0000'
                    text: Keine Änderung zum Auftrag
                state: accepted
              - '@type': StateChange
                stateChangeDate: '2022-05-20T10:39:00+02:00'
                stateChangeMessage:
                  - code: '0000'
                    text: Keine Änderung zum Auftrag
                state: inProgress
            productOrderJeopardyAlert:
              - '@type': ProductOrderJeopardyAlert
                alertDate: '2022-05-20T10:41:00+02:00'
                name: rescheduleReminder
                jeopardyAlertMessage:
                  - code: '6000'
                    text: Endkunde hat Herstellung zurückgestellt/verweigert.
            additionalOrderInformation:
              campaignIdentifier: PromotionFiber
              projectIdentifier: AB1234
              couplingIdentifier: QW567
              orderBindingId: AK45678
              orderBindingNumberOfOrders: 5
              hardwareIdType: OntSerialNumber
              hardwareIdValue: '1234567890'
    ProductOrderInformationRequiredEvent_request:
      description: Message example for ProductOrderInformationRequiredEvent event
      value:
        '@type': ProductOrderInformationRequiredEvent
        eventId: 497da45b-e91c-4f63-875f-492fdc3e25da
        eventTime: '2022-05-20T10:41:00+02:00'
        eventType: ProductOrderInformationRequiredEvent
        fieldPath:
          - path: /requestedCompletionDate
            typeOfChange: replace
          - path: /productOrderItem.requestedTimeSlot.validFor.startDateTime
            typeOfChange: replace
          - path: /productOrderItem.requestedTimeSlot.validFor.endDateTime
            typeOfChange: replce
        event:
          productOrder:
            '@type': ProductOrder
            id: 388a4963-f168-4603-99e8-477200099d91
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            category: new
            expectedCompletionDate: '2022-12-01T12:00:00+01:00'
            creationDate: '2022-05-11T10:30:30+02:00'
            orderPostedDate: '2022-05-11T10:30:00+02:00'
            requestedCompletionDate: '2022-12-01T12:00:00+01:00'
            agreement:
              - '@type': Agreement
                name: buyerServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500011'
                businessId: '500012'
                agreementType: buyerServiceContract
              - '@type': Agreement
                name: ordererServiceContract
                engagedParty:
                  - '@type': Organization
                    businessId: '500014'
                businessId: '500013'
                agreementType: ordererServiceContract
              - '@type': Agreement
                name: providerChangeAgreement
                businessId: DEU.VFD.V012345678
                agreementType: providerChangeAgreement
              - '@type': Agreement
                name: singleContract
                businessId: '3091231119'
                agreementType: singleContract
            externalId:
              - '@type': ExternalIdentifier
                id: '1000111'
                externalIdentifierType: externalOrderId
                owner: DEU.VFD
            productOrderItem:
              - '@type': ProductOrderItem
                id: '1'
                action: add
                product:
                  '@type': BitstreamAccessProduct
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  href: https://api.example.org/tmf-api/productInventoryManagement/v5/product/922ebf01-e930-47a0-842e-059d1f188a15
                  creationDate: '2022-05-11T10:30:30+02:00'
                  relatedPlace:
                    - '@type': RelatedPlaceRefOrValue
                      role: locationA
                      place:
                        '@type': GeographicAddress
                        city: Rheinhausen
                        country: DE
                        locality: Nordstadt
                        postcode: '59055'
                        streetName: Biberweg
                        streetNr: '2'
                        streetNrSuffix: a
                        geographicSubAddress:
                          - '@type': GeographicSubAddress
                            buildingName: Einfamilienhaus
                  lineID: DEU.DTAG.FTYLIQ7PFT
                  networkTerminationUnitLocation: Flur 3.OG
                  homeId: a12d5a4545
                productOffering:
                  '@type': ProductOffering
                  name: FTTH 250000
                endUserAppointmentIsNecessary: true
                requestedTimeSlot:
                  '@type': TimeSlot
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
                appointment:
                  '@type': Appointment
                  validFor:
                    startDateTime: '2022-12-01T08:00:00+01:00'
                    endDateTime: '2022-12-01T12:00:00+01:00'
            relatedParty:
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementBuyerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221456789'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917754545454'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: j.kirk@example.net
                  familyName: Kirk
                  salutation: Herr
                  givenName: James T.
                  title: Captain
              - '@type': RelatedPartyOrPartyRole
                role: installationContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: a.fischer@example.net
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: locationAContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221145155'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878878788'
                  familyName: Fischer
                  salutation: Herr
                  givenName: Alexander
              - '@type': RelatedPartyOrPartyRole
                role: orderManagementSellerContact
                partyOrPartyRole:
                  '@type': Individual
                  contactMedium:
                    - '@type': PhoneContactMedium
                      contactType: fixed
                      phoneNumber: '+49221789456'
                    - '@type': PhoneContactMedium
                      contactType: mobile
                      phoneNumber: '+4917878787878'
                    - '@type': EmailContactMedium
                      contactType: email
                      emailAddress: l.bach@example.net
                  familyName: Bach
                  salutation: Frau
                  givenName: Lisa
            state: pending
            stateChangeDate: '2022-05-20T10:40:00+02:00'
            stateChangeMessage:
              - code: '6000'
                text: Endkunde hat Herstellung zurückgestellt/verweigert.
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:30:00+02:00'
                state: acknowledged
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:31:00+02:00'
                stateChangeMessage:
                  - code: '0000'
                    text: Keine Änderung zum Auftrag
                state: accepted
              - '@type': StateChange
                stateChangeDate: '2022-05-20T10:39:00+02:00'
                stateChangeMessage:
                  - code: '0000'
                    text: Keine Änderung zum Auftrag
                state: inProgress
            additionalOrderInformation:
              campaignIdentifier: PromotionFiber
              projectIdentifier: AB1234
              couplingIdentifier: QW567
              orderBindingId: AK45678
              orderBindingNumberOfOrders: 5
              hardwareIdType: OntSerialNumber
              hardwareIdValue: '1234567890'
    CancelProductOrderStateChangeEvent_request:
      description: Message example for CancelProductOrderStateChangeEvent event
      value:
        '@type': CancelProductOrderStateChangeEvent
        eventId: 4899ae3f-36c5-434a-af2b-dd75f04511bb
        eventTime: '2022-05-11T11:25:00+02:00'
        eventType: CancelProductOrderStateChangeEvent
        event:
          cancelProductOrder:
            '@type': CancelProductOrder
            id: 2fd01b2b-9110-41ed-8efd-014d7e8ee158
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/cancelProductOrder/2fd01b2b-9110-41ed-8efd-014d7e8ee158
            state: inProgress
            stateChangeDate: '2022-05-11T11:25:00+02:00'
            stateChangeMessage:
              - code: code
                text: inProgress_Message
            requestPostedDate: '2022-05-11T11:25:00+02:00'
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T11:25:00+02:00'
                stateChangeMessage:
                  - code: code
                    text: acknowledged_Message
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 388a4963-f168-4603-99e8-477200099d91
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
    RescheduleProductOrderStateChangeEvent_request:
      description: Message example for RescheduleProductOrderStateChangeEvent event
      value:
        '@type': RescheduleProductOrderStateChangeEvent
        eventId: 2a527438-228b-47d7-9b14-5cc7892e7b59
        eventTime: '2022-07-20T10:00:00+02:00'
        eventType: RescheduleProductOrderStateChangeEvent
        event:
          rescheduleProductOrder:
            '@type': RescheduleProductOrder
            id: 33359a1e-134f-4b0f-98a8-acc91af5bbee
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/rescheduleProductOrder/33359a1e-134f-4b0f-98a8-acc91af5bbee
            state: inProgress
            stateChangeDate: '2022-07-20T10:00:00+02:00'
            stateChangeMessage:
              - code: code
                text: inProgress_Message
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-07-20T09:00:00+02:00'
                stateChangeMessage:
                  - code: code
                    text: acknowledged_Message
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 388a4963-f168-4603-99e8-477200099d91
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            rescheduledRequestedCompletionDate: '2022-07-20T12:00:00+02:00'
            productOrderItem:
              id: '1'
              requestedTimeSlot:
                '@type': TimeSlot
                validFor:
                  startDateTime: '2022-07-20T08:00:00+02:00'
                  endDateTime: '2022-07-20T12:00:00+02:00'
    RespondProviderChangeStateChangeEvent_request:
      description: Message example for RespondProviderChangeStateChangeEvent event
      value:
        '@type': RespondProviderChangeStateChangeEvent
        eventId: e25523f1-a75d-4e72-b05a-3d0d7dca5862
        eventTime: '2022-05-11T10:36:00+02:00'
        eventType: RespondProviderChangeStateChangeEvent
        event:
          respondProviderChange:
            '@type': RespondProviderChange
            id: 892cfa45-fca3-488d-8a7c-2883923f820e
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/respondProviderChange/892cfa45-fca3-488d-8a7c-2883923f820e
            state: inProgress
            stateChangeDate: '2022-05-11T10:36:00+02:00'
            stateChangeMessage:
              - code: code
                text: inProgress_Message
            requestPostedDate: '2022-05-11T10:35:00+02:00'
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-05-11T10:35:00+02:00'
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 596d7fa0-981f-4b98-bcf5-e9b2955776f4
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/596d7fa0-981f-4b98-bcf5-e9b2955776f4
            approval: true
    CloseProductOrderStateChangeEvent_request:
      description: Message example for CloseProductOrderStateChangeEvent event
      value:
        '@type': CloseProductOrderStateChangeEvent
        eventId: e9555297-e3df-40dd-8dc3-f3e22669a1e7
        eventTime: '2022-06-03T10:43:00+02:00'
        eventType: CloseProductOrderStateChangeEvent
        event:
          closeProductOrder:
            '@type': CloseProductOrder
            id: a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/closeProductOrder/a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
            state: rejected
            stateChangeDate: '2022-06-03T10:43:00+02:00'
            stateChangeMessage:
              - code: '9999'
                text: tbd - zurueckgewiesen
            requestPostedDate: '2022-06-03T10:41:00+02:00'
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-06-03T10:41:00+02:00'
                stateChangeMessage:
                  - code: code
                    text: acknowledged_Message
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 388a4963-f168-4603-99e8-477200099d91
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            closeMessage:
              - code: '111'
                text: TBD
    AddProductOrderInformationStateChangeEvent_request:
      description: Message example for AddProductOrderInformationStateChangeEvent event
      value:
        '@type': AddProductOrderInformationStateChangeEvent
        eventId: 45a58469-bcc6-423c-9548-adc35eed90e0
        eventTime: '2022-07-20T10:00:00+02:00'
        eventType: AddProductOrderInformationStateChangeEvent
        event:
          addProductOrderInformation:
            '@type': AddProductOrderInformation
            id: d1317bb6-969a-4da7-be54-2d3760e48fee
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/addProductOrderInformation/d1317bb6-969a-4da7-be54-2d3760e48fee
            state: inProgress
            stateChangeDate: '2022-07-20T10:00:00+02:00'
            stateChangeMessage:
              - code: code
                text: inProgress_Message
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-07-20T09:00:00+02:00'
                stateChangeMessage:
                  - code: code
                    text: acknowledged_Message
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 388a4963-f168-4603-99e8-477200099d91
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            relatedParty:
              '@type': RelatedPartyOrPartyRole
              role: installationContact
              partyOrPartyRole:
                '@type': Individual
                contactMedium:
                  - '@type': PhoneContactMedium
                    contactType: fixed
                    phoneNumber: '+49221145155'
                  - '@type': PhoneContactMedium
                    contactType: mobile
                    phoneNumber: '+4917878878788'
                  - '@type': EmailContactMedium
                    contactType: email
                    emailAddress: a.fischer@example.net
                familyName: Fischer
                salutation: Herr
                givenName: Alexander
            note:
              '@type': Note
              text: zweimal klingeln
    AmendProductOrderStateChangeEvent_request:
      description: Message example for AmendProductOrderStateChangeEvent event
      value:
        '@type': AmendProductOrderStateChangeEvent
        eventId: 53f7b076-e9d0-426a-a9ec-14e2c5876b63
        eventTime: '2022-07-20T10:00:00+02:00'
        eventType: AmendProductOrderStateChangeEvent
        event:
          amendProductOrder:
            '@type': AmendProductOrder
            id: f8d80f8c-7f70-4dca-aa25-a3321d50685d
            href: https://api.example.org/tmf-api/productOrderingManagement/v5/amendProductOrder/f8d80f8c-7f70-4dca-aa25-a3321d50685d
            state: inProgress
            stateChangeDate: '2022-07-20T10:00:00+02:00'
            stateChangeMessage:
              - code: code
                text: inProgress_Message
            stateChangeHistory:
              - '@type': StateChange
                stateChangeDate: '2022-07-20T09:00:00+02:00'
                stateChangeMessage:
                  - code: code
                    text: acknowledged_Message
                state: acknowledged
            productOrder:
              '@type': ProductOrderRef
              id: 388a4963-f168-4603-99e8-477200099d91
              href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
            amendProductOrderItem:
              - action: add
                productOrderItem:
                  '@type': ProductOrderItem
                  id: '2'
                  action: add
                  productOffering:
                    '@type': ProductOffering
                    name: Bereitstellung Komfort
                  productOrderItemRelationship:
                    - '@type': OrderItemRelationship
                      id: '1'
                      relationshipType: dependsOn
    CreateProductOrder_response:
      description: Example of created ProductOrder
      value:
        '@type': ProductOrder
        id: 388a4963-f168-4603-99e8-477200099d91
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        category: new
        creationDate: '2022-05-11T10:30:30+02:00'
        orderPostedDate: '2022-05-11T10:30:00+02:00'
        requestedCompletionDate: '2022-12-01T12:00:00+01:00'
        agreement:
          - '@type': Agreement
            name: buyerServiceContract
            engagedParty:
              - '@type': Organization
                businessId: '500011'
            businessId: '500012'
            agreementType: buyerServiceContract
          - '@type': Agreement
            name: ordererServiceContract
            engagedParty:
              - '@type': Organization
                businessId: '500014'
            businessId: '500013'
            agreementType: ordererServiceContract
          - '@type': Agreement
            name: providerChangeAgreement
            businessId: DEU.VFD.V012345678
            agreementType: providerChangeAgreement
        externalId:
          - '@type': ExternalIdentifier
            id: '1000111'
            externalIdentifierType: externalOrderId
            owner: DEU.VFD
        productOrderItem:
          - '@type': ProductOrderItem
            id: '1'
            action: add
            product:
              '@type': BitstreamAccessProduct
              creationDate: '2022-05-11T10:30:30+02:00'
              relatedPlace:
                - '@type': RelatedPlaceRefOrValue
                  role: locationA
                  place:
                    '@type': GeographicAddress
                    city: Rheinhausen
                    country: DE
                    locality: Nordstadt
                    postcode: '59055'
                    streetName: Biberweg
                    streetNr: '2'
                    streetNrSuffix: a
                    geographicSubAddress:
                      - '@type': GeographicSubAddress
                        buildingName: Einfamilienhaus
              networkTerminationUnitLocation: Flur 3.OG
              homeId: a12d5a4545
            productOffering:
              '@type': ProductOffering
              name: FTTH 250000
            requestedTimeSlot:
              '@type': TimeSlot
              validFor:
                startDateTime: '2022-12-01T08:00:00+01:00'
                endDateTime: '2022-12-01T12:00:00+01:00'
        relatedParty:
          - '@type': RelatedPartyOrPartyRole
            role: orderManagementBuyerContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221456789'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917754545454'
                - '@type': EmailContactMedium
                  contactType: email
                  emailAddress: j.kirk@example.net
              familyName: Kirk
              salutation: Herr
              givenName: James T.
              title: Captain
          - '@type': RelatedPartyOrPartyRole
            role: installationContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221145155'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917878878788'
                - '@type': EmailContactMedium
                  contactType: email
                  emailAddress: a.fischer@example.net
              familyName: Fischer
              salutation: Herr
              givenName: Alexander
          - '@type': RelatedPartyOrPartyRole
            role: locationAContact
            partyOrPartyRole:
              '@type': Individual
              contactMedium:
                - '@type': PhoneContactMedium
                  contactType: fixed
                  phoneNumber: '+49221145155'
                - '@type': PhoneContactMedium
                  contactType: mobile
                  phoneNumber: '+4917878878788'
              familyName: Fischer
              salutation: Herr
              givenName: Alexander
        state: acknowledged
        stateChangeDate: '2022-05-11T10:30:00+02:00'
        additionalOrderInformation:
          campaignIdentifier: PromotionFiber
          projectIdentifier: AB1234
          couplingIdentifier: QW567
          orderBindingId: AK45678
          orderBindingNumberOfOrders: 5
          hardwareIdType: OntSerialNumber
          hardwareIdValue: '1234567890'
    CancelProductOrder_response:
      description: Example of created CancelProductOrder
      value:
        '@type': CancelProductOrder
        id: 2fd01b2b-9110-41ed-8efd-014d7e8ee158
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/cancelProductOrder/2fd01b2b-9110-41ed-8efd-014d7e8ee158
        state: acknowledged
        stateChangeDate: '2022-05-11T11:25:00+02:00'
        stateChangeMessage:
          - code: code
            text: acknowledged_Message
        requestPostedDate: '2022-05-11T11:25:00+02:00'
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
    RescheduleProductOrder_response:
      description: Example of created RescheduleProductOrder
      value:
        '@type': RescheduleProductOrder
        id: 33359a1e-134f-4b0f-98a8-acc91af5bbee
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/rescheduleProductOrder/33359a1e-134f-4b0f-98a8-acc91af5bbee
        state: acknowledged
        stateChangeDate: '2022-07-20T09:00:00+02:00'
        stateChangeMessage:
          - code: code
            text: acknowledged_Message
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        rescheduledRequestedCompletionDate: '2022-07-20T12:00:00+02:00'
        productOrderItem:
          id: '1'
          requestedTimeSlot:
            '@type': TimeSlot
            validFor:
              startDateTime: '2022-07-20T08:00:00+02:00'
              endDateTime: '2022-07-20T12:00:00+02:00'
    CloseProductOrder_response:
      description: Example of created CloseProductOrder
      value:
        '@type': CloseProductOrder
        id: a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/closeProductOrder/a32b3fee-e1f0-4b3b-9fee-3907a8bdaac1
        state: acknowledged
        stateChangeDate: '2022-06-03T10:41:00+02:00'
        stateChangeMessage:
          - code: code
            text: acknowledged_Message
        requestPostedDate: '2022-06-03T10:41:00+02:00'
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        closeMessage:
          - code: '111'
            text: TBD
    RespondProviderChange_response:
      description: Example of created RespondProviderChange
      value:
        '@type': RespondProviderChange
        id: 892cfa45-fca3-488d-8a7c-2883923f820e
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/respondProviderChange/892cfa45-fca3-488d-8a7c-2883923f820e
        state: acknowledged
        stateChangeDate: '2022-05-11T10:35:00+02:00'
        requestPostedDate: '2022-05-11T10:35:00+02:00'
        productOrder:
          '@type': ProductOrderRef
          id: 596d7fa0-981f-4b98-bcf5-e9b2955776f4
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/596d7fa0-981f-4b98-bcf5-e9b2955776f4
        approval: true
    AddProductOrderInformation_response:
      description: Example of created AddProductOrderInformation
      value:
        '@type': AddProductOrderInformation
        id: d1317bb6-969a-4da7-be54-2d3760e48fee
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/addProductOrderInformation/d1317bb6-969a-4da7-be54-2d3760e48fee
        state: acknowledged
        stateChangeDate: '2022-07-20T09:00:00+02:00'
        stateChangeMessage:
          - code: code
            text: acknowledged_Message
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        relatedParty:
          '@type': RelatedPartyOrPartyRole
          role: installationContact
          partyOrPartyRole:
            '@type': Individual
            contactMedium:
              - '@type': PhoneContactMedium
                contactType: fixed
                phoneNumber: '+49221145155'
              - '@type': PhoneContactMedium
                contactType: mobile
                phoneNumber: '+4917878878788'
              - '@type': EmailContactMedium
                contactType: email
                emailAddress: a.fischer@example.net
            familyName: Fischer
            salutation: Herr
            givenName: Alexander
        note:
          '@type': Note
          text: zweimal klingeln
    AmendProductOrder_response:
      description: Example of created AmendProductOrder
      value:
        '@type': AmendProductOrder
        id: f8d80f8c-7f70-4dca-aa25-a3321d50685d
        href: https://api.example.org/tmf-api/productOrderingManagement/v5/amendProductOrder/f8d80f8c-7f70-4dca-aa25-a3321d50685d
        state: acknowledged
        stateChangeDate: '2022-07-20T09:00:00+02:00'
        stateChangeMessage:
          - code: code
            text: acknowledged_Message
        productOrder:
          '@type': ProductOrderRef
          id: 388a4963-f168-4603-99e8-477200099d91
          href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91
        amendProductOrderItem:
          - action: add
            productOrderItem:
              '@type': ProductOrderItem
              id: '2'
              action: add
              productOffering:
                '@type': ProductOffering
                name: Bereitstellung Komfort
              productOrderItemRelationship:
                - '@type': OrderItemRelationship
                  id: '1'
                  relationshipType: dependsOn
  requestBodies:
    ProductOrder_FVO:
      description: The ProductOrder to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrder_FVO'
          examples:
            CreateProductOrder:
              $ref: '#/components/examples/CreateProductOrder_request'
      required: true
    CancelProductOrder_FVO:
      description: The CancelProductOrder to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CancelProductOrder_FVO'
          examples:
            CreateCancelProductOrder:
              $ref: '#/components/examples/CreateCancelProductOrder_request'
      required: true
    RescheduleProductOrder_FVO:
      description: The RescheduleProductOrder to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RescheduleProductOrder_FVO'
          examples:
            CreateRescheduleProductOrder:
              $ref: '#/components/examples/CreateRescheduleProductOrder_request'
      required: true
    RespondProviderChange_FVO:
      description: The RespondProviderChange to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RespondProviderChange_FVO'
          examples:
            CreateRescheduleProductOrder:
              $ref: '#/components/examples/CreateRespondProviderChange_request'
      required: true
    CloseProductOrder_FVO:
      description: The CloseProductOrder to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CloseProductOrder_FVO'
          examples:
            CreateCloseProductOrder:
              $ref: '#/components/examples/CreateCloseProductOrder_request'
      required: true
    AddProductOrderInformation_FVO:
      description: The AddProductOrderInformation to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AddProductOrderInformation_FVO'
          examples:
            CreateAddProductOrderInformation:
              $ref: '#/components/examples/CreateAddProductOrderInformation_request'
      required: true
    AmendProductOrder_FVO:
      description: The AmendProductOrder to be created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AmendProductOrder_FVO'
          examples:
            CreateAmendProductOrder:
              $ref: '#/components/examples/CreateAmendProductOrder_request'
      required: true
    ProductOrderCreateEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderCreateEvent'
    ProductOrderAttributeValueChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderAttributeValueChangeEvent'
          examples:
            ProductOrderAttributeValueChangeEvent:
              $ref: '#/components/examples/ProductOrderAttributeValueChangeEvent_request'
    ProductOrderStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderStateChangeEvent'
          examples:
            ProductOrderStateChangeEvent:
              $ref: '#/components/examples/ProductOrderStateChangeEvent_request'
    ProductOrderMilestoneEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderMilestoneEvent'
          examples:
            ProductOrderMilestoneEvent:
              $ref: '#/components/examples/ProductOrderMilestoneEvent_request'
    ProductOrderJeopardyAlertEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderJeopardyAlertEvent'
          examples:
            ProductOrderJeopardyAlertEvent:
              $ref: '#/components/examples/ProductOrderJeopardyAlertEvent_request'
    ProductOrderInformationRequiredEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrderInformationRequiredEvent'
          examples:
            ProductOrderInformationRequiredEvent:
              $ref: '#/components/examples/ProductOrderInformationRequiredEvent_request'
    CancelProductOrderStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CancelProductOrderStateChangeEvent'
          examples:
            CancelProductOrderStateChangeEvent:
              $ref: '#/components/examples/CancelProductOrderStateChangeEvent_request'
    RescheduleProductOrderStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RescheduleProductOrderStateChangeEvent'
          examples:
            RescheduleProductOrderStateChangeEvent:
              $ref: '#/components/examples/RescheduleProductOrderStateChangeEvent_request'
    RespondProviderChangeStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RespondProviderChangeStateChangeEvent'
          examples:
            RespondProviderChangeStateChangeEvent:
              $ref: '#/components/examples/RespondProviderChangeStateChangeEvent_request'
    CloseProductOrderStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CloseProductOrderStateChangeEvent'
          examples:
            CloseProductOrderStateChangeEvent:
              $ref: '#/components/examples/CloseProductOrderStateChangeEvent_request'
    AddProductOrderInformationStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AddProductOrderInformationStateChangeEvent'
          examples:
            AddProductOrderInformationStateChangeEvent:
              $ref: '#/components/examples/AddProductOrderInformationStateChangeEvent_request'
    AmendProductOrderStateChangeEvent:
      description: The event data
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AmendProductOrderStateChangeEvent'
          examples:
            AmendProductOrderStateChangeEvent:
              $ref: '#/components/examples/AmendProductOrderStateChangeEvent_request'
  responses:
    '202':
      description: Accepted
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '403':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '404':
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '405':
      description: Method Not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '406':
      description: Not Acceptable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '409':
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '429':
      description: Too Many Requests
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '500':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '501':
      description: Not Implemented
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '503':
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    200ProductOrderArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductOrder'
    200ProductOrder:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CreateProductOrder_response'
    201ProductOrder:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/ProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CreateProductOrder_response'
    200CancelProductOrderArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CancelProductOrder'
    200CancelProductOrder:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CancelProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CancelProductOrder_response'
    201CancelProductOrder:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CancelProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CancelProductOrder_response'
    200RescheduleProductOrderArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/RescheduleProductOrder'
    201RescheduleProductOrder:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RescheduleProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/RescheduleProductOrder_response'
    200RescheduleProductOrder:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RescheduleProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/RescheduleProductOrder_response'
    200CloseProductOrderArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CloseProductOrder'
    200CloseProductOrder:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CloseProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CloseProductOrder_response'
    201CloseProductOrder:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/CloseProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/CloseProductOrder_response'
    200RespondProviderChangeArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/RespondProviderChange'
    200RespondProviderChange:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RespondProviderChange'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/RespondProviderChange_response'
    201RespondProviderChange:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/RespondProviderChange'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/RespondProviderChange_response'
    200AddProductOrderInformationArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AddProductOrderInformation'
    200AddProductOrderInformation:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AddProductOrderInformation'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/AddProductOrderInformation_response'
    201AddProductOrderInformation:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AddProductOrderInformation'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/AddProductOrderInformation_response'
    200AmendProductOrderArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AmendProductOrder'
    200AmendProductOrder:
      description: Success
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AmendProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/AmendProductOrder_response'
    201AmendProductOrder:
      description: Created
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/AmendProductOrder'
          examples:
            retrieveProductOrder:
              $ref: '#/components/examples/AmendProductOrder_response'
    DefaultError:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    204Notified:
      description: Notified
  securitySchemes:
    OAuth2ClientCredentials:
      type: oauth2
      description: See https://oauth.net/2/grant-types/client-credentials/
      flows:
        clientCredentials:
          tokenUrl: https://auth.example.org/oauth2/token/
          scopes:
            read: read objects
            write: write objects
  parameters:
    Fields:
      name: fields
      in: query
      description: Comma-separated properties to be provided in response
      schema:
        type: string
    Offset:
      name: offset
      in: query
      description: Requested index for start of resources to be provided in response
      schema:
        type: integer
    Limit:
      name: limit
      in: query
      description: Requested number of resources to be provided in response
      schema:
        type: integer
    Id:
      name: id
      required: true
      schema:
        type: string
      in: path
      description: Identifier of the API Resource
  headers:
    X-Total-Count:
      description: Total number of items matching criteria
      schema:
        type: integer
    X-Result-Count:
      description: Actual number of items returned in the response body
      schema:
        type: integer
