openapi: 3.0.1
info:
  description: |

    Product Order Management allows the Buyer to request the Seller to initiate and complete the
    fulfillment process of an installation of a Product Offering, an update to
    an existing Product, or a disconnect of an existing Product at the address
    defined by the Buyer.

    List of supported Use Cases:

    - Create Product Order
    - Update Product Order by Product Order Identifier
    - Retrieve List of Product Orders
    - Retrieve Product Order by Product Order Identifier
    - Modify Product Order Item Requested Delivery Date
    - Retrieve Modify Product Order Item Requested Delivery Date List
    - Retrieve Modify Product Order Item Requested Delivery Date by Identifier
    - Cancel Product Order
    - Retrieve List of Cancel Product Orders
    - Retrieve Cancel Product Order Request by Cancel Product Order Identifier
    - Initiate Charge
    - Respond to Charge
    - Retrieve List of Charges
    - Retrieve Charge by Charge Identifier
    - Register for Notifications

    Copyright 2022 MEF Forum and its contributors.

    This file includes content based on the TM Forum Product Order API (TMF622
    v4.0.0) available at https://github.com/tmforum-apis/TMF622_ProductOrder,
    which is licensed by the TM Forum under the Apache License version 2.0. Such
    content has been modified by the MEF Forum and its contributors.
  title: Product Ordering Management
  version: 10.0.0
servers:
  - url: 'https://{serverBase}/mefApi/sonata/productOrderingManagement/v10/'
    variables:
      serverBase:
        default: mef.net
        description: The base of Seller's URL.
tags:
  - name: productOrder
  - name: cancelProductOrder
  - name: charge
  - name: modifyProductOrderItemRequestedDeliveryDate
  - name: events subscription
paths:
  /productOrder:
    get:
      description: This operation lists or finds ProductOrder entities
      operationId: listProductOrder
      parameters:
        - description: State of the Product Order
          in: query
          name: state
          schema:
            enum:
              - acknowledged
              - assessingCancellation
              - cancelled
              - completed
              - failed
              - held.assessingCharge
              - inProgress
              - partial
              - pending.assessingModification
              - pendingCancellation
              - rejected
            type: string
        - description: >-
            A number that uniquely identifies an order within the Buyer's
            enterprise.
          in: query
          name: externalId
          schema:
            type: string
        - description: >-
            An identifier that is used to group Product Orders that represent a
            unit of functionality that is important to a Buyer.
          in: query
          name: projectId
          schema:
            type: string
        - description: Date when the order was created greater than
          in: query
          name: orderDate.gt
          schema:
            format: date-time
            type: string
        - description: Date when the order was created lesser than
          in: query
          name: orderDate.lt
          schema:
            format: date-time
            type: string
        - description: Effective completion date greater than
          in: query
          name: completionDate.gt
          schema:
            format: date-time
            type: string
        - description: Effective completion date lesser than
          in: query
          name: completionDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            This is requested date to get this Product Order Item completed
            greater than
          in: query
          name: itemRequestedCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            This is requested date to get this Product Order Item completed
            lesser than
          in: query
          name: itemRequestedCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description:
            Seller planned completion date of the Product Order Item, greater
            than
          in: query
          name: itemExpectedCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description:
            Seller planned completion date of the Product Order Item, lesser
            than
          in: query
          name: itemExpectedCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description: order cancellation date greater than
          in: query
          name: cancellationDate.gt
          schema:
            format: date-time
            type: string
        - description: order cancellation date lesser than
          in: query
          name: cancellationDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when the responding
            entity represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for start of item to be provided in response
            requested by the client. Note that the index starts with "0".
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: >-
            Requested number of items to be provided in response requested by
            client
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/ProductOrder_Find'
                type: array
          description:
            'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. E.g. if there are 50
                matching items in total, but the request has offset=10 and
                limit=10, then the X-Total-Count is 50.
              schema:
                type: integer
            X-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Lists or finds ProductOrder objects
      tags:
        - productOrder
    post:
      description: This operation creates a ProductOrder entity.
      operationId: createProductOrder
      parameters:
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when the responding
            entity represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/ProductOrder_Create'
        description: The ProductOrder to be created
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductOrder'
          description:
            'Created (https://tools.ietf.org/html/rfc7231#section-6.3.2)'
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description:
            Unprocessable entity due to the business validation problems
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Creates a ProductOrder
      tags:
        - productOrder
      x-codegen-request-body-name: productOrder
  '/productOrder/{id}':
    get:
      description: >-
        This operation retrieves a ProductOrder entity.
      operationId: retrieveProductOrder
      parameters:
        - description: Identifier of the ProductOrder
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductOrder'
          description:
            'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Retrieves a ProductOrder by ID
      tags:
        - productOrder
    patch:
      description: This operation updates partially a ProductOrder entity.
      operationId: patchProductOrder
      parameters:
        - description: Identifier of the ProductOrder
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/ProductOrder_Update'
        description: The ProductOrder to be updated
        required: true
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductOrder'
          description:
            'Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '409':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error409'
          description: Conflict
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Updates partially a ProductOrder
      tags:
        - productOrder
      x-codegen-request-body-name: productOrder
  /cancelProductOrder:
    get:
      description: This operation lists or finds CancelProductOrder entities
      operationId: listCancelProductOrder
      parameters:
        - in: query
          name: productOrderId
          schema:
            type: string
        - in: query
          name: state
          schema:
            enum:
              - acknowledged
              - done
              - done.declined
              - inProgress.assessingCharge
              - rejected
            type: string
        - in: query
          name: cancellationReasonType
          description: >-
            Identifies the type of reason, Technical or Commercial, for the
            Cancellation request
          schema:
            enum:
              - technical
              - commercial
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for start of item to be provided in response
            requested by client. Note that the index starts with "0".
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: >-
            Requested number of items to be provided in response requested by
            client
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/CancelProductOrder_Find'
                type: array
          description: Success
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. E.g. if there are 50
                matching items in total, but the request has offset=10 and
                limit=10, then the X-Total-Count is 50.
              schema:
                type: integer
            X-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Lists or finds CancelProductOrder objects
      tags:
        - cancelProductOrder
    post:
      description: This operation creates a CancelProductOrder entity.
      operationId: createCancelProductOrder
      parameters:
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/CancelProductOrder_Create'
        description: The CancelProductOrder to be created
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/CancelProductOrder'
          description: Created
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description:
            Unprocessable entity due to the business validation problems
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Creates a CancelProductOrder
      tags:
        - cancelProductOrder
      x-codegen-request-body-name: cancelProductOrder
  '/cancelProductOrder/{id}':
    get:
      description: This operation retrieves a CancelProductOrder entity.
      operationId: retrieveCancelProductOrder
      parameters:
        - description: Identifier of the CancelProductOrder
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/CancelProductOrder'
          description: Success
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Retrieves a CancelProductOrder by ID
      tags:
        - cancelProductOrder
  /charge:
    get:
      description: This operation lists or finds Charge entities
      operationId: listCharge
      parameters:
        - description: id of the Product Order this Charge relates to.
          in: query
          name: productOrderId
          schema:
            type: string
        - description: id of the Product Order Item this Charge relates to.
          in: query
          name: productOrderItemId
          schema:
            type: string
        - description: >-
            Date that the Charge was created by the Seller (greater than)
          in: query
          name: creationDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            Date that the Charge was created by the Seller. (greater than)
          in: query
          name: creationDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The date that the Buyer must respond to the Seller's Charge. If
            there is no response received by the Due Date the Seller will treat
            all charges as declined (greater than)
          in: query
          name: responseDueDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            The date that the Buyer must respond to the Seller's Charge. If
            there is no response received by the Due Date the Seller will treat
            all charges as declined (greater than)
          in: query
          name: responseDueDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for start of item to be provided in response
            requested by client. Note that the index starts with "0".
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: >-
            Requested number of items to be provided in response requested by
            client
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/MEFProductOrderCharge_Find'
                type: array
          description: Success
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. E.g. if there are 50
                matching items in total, but the request has offset=10 and
                limit=10, then the X-Total-Count is 50.
              schema:
                type: integer
            X-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Lists or finds Charge objects
      tags:
        - charge
  '/charge/{id}':
    get:
      description: This operation retrieves a Charge entity.
      operationId: retrieveCharge
      parameters:
        - description: Identifier of the Charge
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MEFProductOrderCharge'
          description: Success
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Retrieves a Charge by ID
      tags:
        - charge
    patch:
      description: This operation updates partially a Charge entity.
      operationId: patchCharge
      parameters:
        - description: Identifier of the Charge
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/MEFProductOrderCharge_Update'
        description: The Charge to be updated
        required: true
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MEFProductOrderCharge'
          description:
            'Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '409':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error409'
          description: Conflict
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Updates partially a Charge
      tags:
        - charge
      x-codegen-request-body-name: charge
  /hub:
    post:
      description: >-
        Sets the communication endpoint address the service instance must use
        to deliver information about its health state, execution state,
        failures and metrics.
      operationId: registerListener
      parameters:
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/EventSubscriptionInput'
        description:
          Data containing the callback endpoint to deliver the information
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EventSubscription'
          description: Subscribed
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Register a listener
      tags:
        - events subscription
      x-codegen-request-body-name: data
  '/hub/{id}':
    delete:
      description: >-
        Resets the communication endpoint address the service instance must use
        to deliver information about its health state, execution state,
        failures and metrics.
      operationId: unregisterListener
      parameters:
        - description: The id of the registered listener
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '204':
          description: Deleted
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Unregister a listener
      tags:
        - events subscription
    get:
      description: >-
        This operation retrieves a hub entity.
      operationId: retrieveHub
      parameters:
        - description: Identifier of the Hub
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EventSubscription'
          description: Success
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Retrieves a Hub by ID
      tags:
        - events subscription
  /modifyProductOrderItemRequestedDeliveryDate:
    get:
      description: >-
        This operation lists or finds
        ModifyProductOrderItemRequestedDeliveryDate entities
      operationId: listModifyProductOrderItemRequestedDeliveryDate
      parameters:
        - in: query
          name: productOrderId
          schema:
            type: string
        - in: query
          name: state
          schema:
            enum:
              - acknowledged
              - done
              - done.declined
              - inProgress.assessingCharge
              - rejected
            type: string
        - description: Indicates that expedited treatment is requested.
          in: query
          name: expediteIndicator
          schema:
            type: boolean
        - description: >-
            Identifies the Buyer's desired due date (requested delivery date) -
            greater than
          in: query
          name: requestedCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            Identifies the Buyer's desired due date (requested delivery date) -
            lesser than
          in: query
          name: requestedCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The date on which the Seller assigned the Modify Product Order Item
            Requested Delivery Data Identifier - greater than
          in: query
          name: creationDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            The date on which the Seller assigned the Modify Product Order Item
            Requested Delivery Data Identifier - lesser than
          in: query
          name: creationDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for start of item to be provided in response
            requested by client. Note that the index starts with "0".
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: >-
            Requested number of items to be provided in response requested by
            client
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate'
                type: array
          description: Success
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. E.g. if there are 50
                matching items in total, but the request has offset=10 and
                limit=10, then the X-Total-Count is 50.
              schema:
                type: integer
            X-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary:
        Lists or finds ModifyProductOrderItemRequestedDeliveryDate objects
      tags:
        - modifyProductOrderItemRequestedDeliveryDate
    post:
      description:
        This operation creates a ModifyProductOrderItemRequestedDeliveryDate
        entity.
      operationId: createModifyProductOrderItemRequestedDeliveryDate
      parameters:
        - description: >-
            The unique identifier of the organization that is acting as the
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: >-
                #/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate_Create
        description:
          The ModifyProductOrderItemRequestedDeliveryDate to be created
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate'
          description: Created
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description:
            Unprocessable entity due to the business validation problems
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Creates a ModifyProductOrderItemRequestedDeliveryDate
      tags:
        - modifyProductOrderItemRequestedDeliveryDate
      x-codegen-request-body-name: modifyProductOrderItemRequestedDeliveryDate
  '/modifyProductOrderItemRequestedDeliveryDate/{id}':
    get:
      description:
        This operation retrieves a ModifyProductOrderItemRequestedDeliveryDate
        entity.
      operationId: retrieveModifyProductOrderItemRequestedDeliveryDate
      parameters:
        - description:
            Identifier of the ModifyProductOrderItemRequestedDeliveryDate
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the a
            Buyer. MUST be specified in the request only when the requester
            represents more than one Buyer.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate'
          description: Success
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '404':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error404'
          description: Not Found
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
        '501':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error501'
          description: Method not implemented.
      summary: Retrieves a ModifyProductOrderItemRequestedDeliveryDate by ID
      tags:
        - modifyProductOrderItemRequestedDeliveryDate
components:
  schemas:
    CancelProductOrder:
      description: Request for cancellation an existing product order
      properties:
        cancellationDeniedReason:
          description: >-
            If the Cancel Product Order request is denied by the Seller, the
            Seller provides a reason to the Buyer using this attribute.
          type: string
        cancellationReason:
          description: >-
            An optional attribute that allows the Buyer to provide additional
            detail to the Seller on their reason for cancelling the Product
            Order
          type: string
        cancellationReasonType:
          $ref: '#/components/schemas/CancellationReasonType'
          description: >-
            Identifies the type of reason, Technical or Commercial, for the
            Cancellation request
        charge:
          description:
            The Charge Identifier of any charges that are related to the Cancel
            Product Order.
          $ref: '#/components/schemas/MEFProductOrderChargeRef'
        href:
          description: >
            Hyperlink to the cancellation request. Hyperlink MAY be used by the
            Seller in responses Hyperlink MUST be ignored by the Seller in case
            it is provided by the Buyer in a request
          type: string
        id:
          description: >-
            Unique identifier for the Cancel Product Order that is generated by
            the Seller when the Cancel Product Order request `state` is set to
            `acknowledged`
          type: string
        productOrder:
          $ref: '#/components/schemas/MEFProductOrderRef'
          description: >-
            A reference to a Product Order that the Buyer wishes to cancel.
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            for this Cancel Product Order.

            The rule for mapping a represented attribute

            value to a `role` is to use the _lowerCamelCase_ pattern e.g.

            - Cancel Product Order Contact: `role=cancelProductOrderContact`

            - Cancel Product Order Seller Contact:
            `role=cancelProductOrderSellerContact`
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        state:
          $ref: '#/components/schemas/MEFChargeableTaskStateType'
          description: >-
            The states as defined by TMF622 and extended to meet MEF
            requirements. These states are used to convey the Cancel Product
            Order status during the lifecycle of the Product Order.
      required:
        - id
        - productOrder
        - relatedContactInformation
        - state
      type: object
    CancelProductOrder_Create:
      description: |-
        Request for cancellation an existing product order
        Skipped properties: id,href,state,effectiveCancellationDate
      properties:
        cancellationReason:
          description: >-
            An optional attribute that allows the Buyer to provide additional
            detail to the Seller on their reason for cancelling the Product
            Order
          type: string
        cancellationReasonType:
          $ref: '#/components/schemas/CancellationReasonType'
          description: >-
            Identifies the type of reason, Technical or Commercial, for the
            Cancellation request
        productOrder:
          $ref: '#/components/schemas/MEFProductOrderRef'
          description: >-
            A reference to a Product Order that the buyer wishes to cancel.
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            for this Cancel Product Order.

            The rule for mapping a represented attribute

            value to a `role` is to use the _lowerCamelCase_ pattern e.g.

            - Cancel Product Order Contact: `role=cancelProductOrderContact`
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          minItems: 1
          type: array
      required:
        - productOrder
        - relatedContactInformation
      type: object
    CancelProductOrder_Find:
      description: A response to a Buyer's get List of Cancel Product Orders
      properties:
        cancellationReasonType:
          $ref: '#/components/schemas/CancellationReasonType'
          description: >-
            Identifies the type of reason, Technical or Commercial, for the
            Cancellation request
        id:
          description: >-
            Unique identifier for the Cancel Product Order that is generated by
            the Seller when the Cancel Product Order request `state` is set to
            `acknowledged`
          type: string
        productOrder:
          $ref: '#/components/schemas/MEFProductOrderRef'
          description: >-
            A reference to a Product Order that the Buyer wishes to cancel.
        state:
          $ref: '#/components/schemas/MEFChargeableTaskStateType'
          description: >-
            The states as defined by TMF622 and extended to meet MEF
            requirements. These states are used to convey the Cancel Product
            Order status during the lifecycle of the Product Order.
      required:
        - cancellationReasonType
        - id
        - productOrder
        - state
      type: object
    CancellationReasonType:
      description: >-
        Identifies the type of reason, Technical or Commercial, for the
        Cancellation request
      enum:
        - technical
        - commercial
      type: string
    Duration:
      description: A Duration in a given unit of time e.g. 3 hours, or 5 days.
      properties:
        amount:
          description: Duration (number of seconds, minutes, hours, etc.)
          type: integer
        units:
          $ref: '#/components/schemas/TimeUnit'
          description: Time unit type
      required:
        - amount
        - units
      type: object
    Error:
      description: >
        Standard Class used to describe API response error Not intended to be
        used directly. The `code` in the HTTP header is used as a discriminator
        for the type of error returned in runtime.
      properties:
        message:
          description: >-
            Text that provides mode details and corrective actions related to
            the error. This can be shown to a client user.
          type: string
        reason:
          description: >-
            Text that explains the reason for the error. This can be shown to a
            client user.
          maxLength: 255
          type: string
        referenceError:
          description: URL pointing to documentation describing the error
          format: uri
          type: string
      required:
        - reason
      type: object
    Error400:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              $ref: '#/components/schemas/Error400Code'
              description: >-
                One of the following error codes:

                - missingQueryParameter: The URI is missing a required
                query-string parameter

                - missingQueryValue: The URI is missing a required query-string
                parameter value

                - invalidQuery: The query section of the URI is invalid.

                - invalidBody: The request has an invalid body
          required:
            - code
          type: object
      description:
        Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)
    Error400Code:
      description: >-
        One of the following error codes:

        - missingQueryParameter: The URI is missing a required query-string
        parameter

        - missingQueryValue: The URI is missing a required query-string
        parameter value

        - invalidQuery: The query section of the URI is invalid.

        - invalidBody: The request has an invalid body
      enum:
        - missingQueryParameter
        - missingQueryValue
        - invalidQuery
        - invalidBody
      type: string
    Error401:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              $ref: '#/components/schemas/Error401Code'
              description: >-
                One of the following error codes:

                - missingCredentials: No credentials provided.

                - invalidCredentials: Provided credentials are invalid or
                expired
          required:
            - code
          type: object
      description:
        Unauthorized.  (https://tools.ietf.org/html/rfc7235#section-3.1)
    Error401Code:
      description: |-
        One of the following error codes:
        - missingCredentials: No credentials provided.
        - invalidCredentials: Provided credentials are invalid or expired
      enum:
        - missingCredentials
        - invalidCredentials
      type: string
    Error403:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              $ref: '#/components/schemas/Error403Code'
              description: |-
                This code indicates that the server understood
                the request but refuses to authorize it because
                of one of the following error codes:
                - accessDenied: Access denied
                - forbiddenRequester: Forbidden requester
                - tooManyUsers: Too many users
          required:
            - code
          type: object
      description: >-
        Forbidden. This code indicates that the server understood the request
        but refuses to authorize it.
        (https://tools.ietf.org/html/rfc7231#section-6.5.3)
    Error403Code:
      description: |-
        This code indicates that the server understood
        the request but refuses to authorize it because
        of one of the following error codes:
        - accessDenied: Access denied
        - forbiddenRequester: Forbidden requester
        - tooManyUsers: Too many users
      enum:
        - accessDenied
        - forbiddenRequester
        - tooManyUsers
      type: string
    Error404:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              description: >-
                The following error code:

                - notFound: A current representation for the target resource
                not found
              enum:
                - notFound
              type: string
          required:
            - code
          type: object
      description: >-
        Resource for the requested path not found.
        (https://tools.ietf.org/html/rfc7231#section-6.5.4)
    Error409:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              description: >-
                The following error code:

                - conflict: The client has provided a value whose semantics are
                not appropriate for the property.
              enum:
                - conflict
              type: string
          required:
            - code
          type: object
      description:
        Conflict (https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.8)
    Error422:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              $ref: '#/components/schemas/Error422Code'
              description: |
                One of the following error codes:
                  - missingProperty: The property the Seller has expected is not present in the payload
                  - invalidValue: The property has an incorrect value
                  - invalidFormat: The property value does not comply with the expected value format
                  - referenceNotFound: The object referenced by the property cannot be identified in the Seller system
                  - unexpectedProperty: Additional property, not expected by the Seller has been provided
                  - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold.
                  - otherIssue: Other problem was identified (detailed information provided in a reason)
            propertyPath:
              description: >
                A pointer to a particular property of the payload that caused
                the validation issue. It is highly recommended that this
                property should be used.

                Defined using JavaScript Object Notation (JSON) Pointer
                (https://tools.ietf.org/html/rfc6901).
              type: string
          required:
            - code
          type: object
      description: >-
        Unprocessable entity due to a business validation problem.
        (https://tools.ietf.org/html/rfc4918#section-11.2)
    Error422Code:
      description: |
        One of the following error codes:
          - missingProperty: The property the Seller has expected is not present in the payload
          - invalidValue: The property has an incorrect value
          - invalidFormat: The property value does not comply with the expected value format
          - referenceNotFound: The object referenced by the property cannot be identified in the Seller system
          - unexpectedProperty: Additional property, not expected by the Seller has been provided
          - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold.
          - otherIssue: Other problem was identified (detailed information provided in a reason)
      enum:
        - missingProperty
        - invalidValue
        - invalidFormat
        - referenceNotFound
        - unexpectedProperty
        - tooManyRecords
        - otherIssue
      type: string
    Error500:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              description: >-
                The following error code:

                - internalError: Internal server error - the server encountered
                an unexpected condition that prevented it from fulfilling the
                request.
              enum:
                - internalError
              type: string
          required:
            - code
          type: object
      description: >-
        Internal Server Error.
        (https://tools.ietf.org/html/rfc7231#section-6.6.1)
    Error501:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              description: |-
                The following error code:
                - notImplemented: Method not supported by the server
              enum:
                - notImplemented
              type: string
          required:
            - code
          type: object
      description: >-
        Not Implemented. Used in case Seller is not supporting an optional
        operation (https://tools.ietf.org/html/rfc7231#section-6.6.2)
    EventSubscription:
      description: |
        This resource is used to respond to notification subscriptions.
      properties:
        callback:
          description: >-
            The value provided by the Buyer in `EventSubscriptionInput` during
            notification registration
          type: string
        id:
          description: >-
            An identifier of this Event Subscription assigned by the Seller
            when a resource is created.
          type: string
        query:
          description: >-
            The value provided by the Buyer in `EventSubscriptionInput` during
            notification registration
          type: string
      required:
        - callback
        - id
      type: object
    EventSubscriptionInput:
      description: This class is used to register for Notifications.
      properties:
        callback:
          description: >-
            This callback value must be set to *host* property from Buyer
            Product Order Notification API (productOrderNotification.api.yaml).
            This property is appended with the base path and notification
            resource path specified in that API to construct an URL to which
            notification is sent. E.g. for "callback":
            "https://buyer.co/listenerEndpoint", the product order state change
            event notification will be sent to:
            `https://buyer.co/listenerEndpoint/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent`
          type: string
        query:
          description: >-
            This attribute is used to define to which type of events to
            register to. Example: "query":"eventType =
            productOrderStateChangeEvent". To subscribe for more than one event
            type, put the values separated by comma:
            `eventType=productOrderStateChangeEvent,productOrderItemStateChangeEvent`.
            The possible values are enumerated by 'ProductOrderEventType',
            `CancelProductOrderEventType` in productOrderNotification.api.yaml.
            An empty query is treated as specifying no filters - ending in
            subscription for all event types.
          type: string
      required:
        - callback
      type: object
    FieldedAddress:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            city:
              description: The city that the address is in
              type: string
            country:
              description: Country that the address is in
              type: string
            geographicSubAddress:
              $ref: '#/components/schemas/GeographicSubAddress'
              description: >-
                Additional fields used to specify an address, as detailed as
                possible.
            locality:
              description: The locality that the address is in
              type: string
            postcode:
              description: >-
                Descriptor for a postal delivery area, used to speed and
                simplify the delivery of mail (also known as zip code)
              type: string
            postcodeExtension:
              description: >-
                An extension of a postal code. E.g. the part following the dash
                in a US urban property address
              type: string
            stateOrProvince:
              description: The State or Province that the address is in
              type: string
            streetName:
              description: Name of the street or other street type
              type: string
            streetNr:
              description: >-
                Number identifying a specific property on a public street. It
                may be combined with streetNrLast for ranged addresses. MEF 79
                defines it as required however as in certain countries it is
                not used we make it optional in API.
              type: string
            streetNrLast:
              description:
                Last number in a range of street numbers allocated to a
                property
              type: string
            streetNrLastSuffix:
              description: Last street number suffix for a ranged address
              type: string
            streetNrSuffix:
              description: The first street number suffix
              type: string
            streetSuffix:
              description: A modifier denoting a relative direction
              type: string
            streetType:
              description: >-
                The type of street (e.g., alley, avenue, boulevard, brae,
                crescent, drive, highway, lane, terrace, parade, place, tarn,
                way, wharf)
              type: string
          required:
            - city
            - country
            - streetName
          type: object
      description: >-
        A type of Address that has a discrete field and value for each type of
        boundary or identifier down to the lowest level of detail. For example
        "street number" is one field, "street name" is another field, etc.
    FormattedAddress:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            addrLine1:
              description: The first address line in a formatted address
              type: string
            addrLine2:
              description: The second address line in a formatted address
              type: string
            city:
              description: The city that the address is in
              type: string
            country:
              description: Country that the address is in
              type: string
            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
              type: string
            postcode:
              description: >-
                Descriptor for a postal delivery area, used to speed and
                simplify the delivery of mail (also known as ZIP code)
              type: string
            postcodeExtension:
              description: >-
                An extension of a postal code. E.g. the part following the dash
                in an US urban property address
              type: string
            stateOrProvince:
              description: The State or Province that the address is in
              type: string
          required:
            - addrLine1
            - city
            - country
          type: object
      description: >-
        A type of Address that has discrete fields for each type of boundary or
        identifier with the exception of street and more specific location
        details, which are combined into a maximum of two strings based on
        local postal addressing conventions.
    GeographicAddressLabel:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            externalReferenceId:
              description: A reference to an address by id
              type: string
            externalReferenceType:
              description: >-
                Uniquely identifies the authority that specifies the addresses
                reference and/or its type (if the authority specifies more than
                one type of address). The value(s) to be used are to be agreed
                during the onboarding. For North American providers this would
                normally be CLLI (Common Language Location Identifier) code.
              type: string
          required:
            - externalReferenceId
            - externalReferenceType
          type: object
      description: >-
        A unique identifier controlled by a generally accepted independent
        administrative authority that specifies a fixed geographical location. 
    GeographicAddressRef:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            href:
              description: >
                Hyperlink to the referenced GeographicAddress. Hyperlink MAY be
                used by the Seller in responses. Hyperlink MUST be ignored by
                the Seller in case it is provided by the Buyer in a request
              type: string
            id:
              description: >-
                Identifier of the referenced Geographic Address. This
                identifier is assigned during a successful address validation
                request (Geographic Address Validation API)
              type: string
          required:
            - id
          type: object
      description: >
        A reference to a Geographic Address resource available through Address
        Validation API.
    GeographicSiteRef:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            href:
              description: >
                Hyperlink to the referenced GeographicSite. Hyperlink MAY be
                used by the Seller in responses. Hyperlink MUST be ignored by
                the Seller in case it is provided by the Buyer in a request
              type: string
            id:
              description: Identifier of the referenced Geographic Site.
              type: string
          required:
            - id
          type: object
      description: >
        A reference to a Geographic Site resource available through Service
        Site API
    GeographicSubAddress:
      description:
        Additional fields used to specify an address, as detailed as possible.
      properties:
        buildingName:
          description: >
            Allows for identification of places that require building name  as
            part of addressing information
          type: string
        levelNumber:
          description:
            Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT 2
          type: string
        levelType:
          description: Describes level types within a building
          type: string
        privateStreetName:
          description: >-
            "Private streets internal to a property (e.g. a university) may
            have internal names that are not recorded by the land title office
          type: string
        privateStreetNumber:
          description: Private streets numbers internal to a private street
          type: string
        subUnit:
          description: >-
            Representation of a MEFSubUnit It is used for describing subunit
            within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER,
            UNIT, WHARF.
          items:
            $ref: '#/components/schemas/MEFSubUnit'
          type: array
      type: object
    MEFAcceptedRejectedType:
      description: Indicator of acceptance
      enum:
        - accepted
        - rejected
      type: string
    MEFBillingAccountRef:
      description: A reference to the Buyer's Billing Account
      properties:
        id:
          description: >-
            Identifies the buyer's billing account to which the recurring and
            non-recurring charges for this order or order item will be billed.
            Required if the Buyer has more than one Billing Account with the
            Seller and for all new Product Orders.
          type: string
      required:
        - id
      type: object
    MEFBuyerSellerType:
      description: Indicates if the note is from Buyer or Seller.
      enum:
        - buyer
        - seller
      type: string
    MEFCancelProductOrderRef:
      description: A reference to a Cancel Product Order instance
      properties:
        href:
          description: Hyperlink to access the Cancel Product Order
          type: string
        id:
          description: A unique identifier of the Cancel Product Order
          type: string
      required:
        - id
      type: object
    MEFChargePeriod:
      description: Used for a recurring charge to indicate period.
      enum:
        - hour
        - day
        - week
        - month
        - year
      type: string
    MEFChargeableTaskStateType:
      description: |
        The states as defined by TMF622 and extended to meet MEF requirements.

        | Name                       | MEF 57.2 Name    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
        | -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | inProgress.assessingCharge | ACCESSING_CHARGE | The Modify Product Order Item Requested Delivery Date request results in a Charge being initiated by the Seller. The Modify Product Order Item Requested Delivery Date remains in this state until the Charge is completed or withdrawn by the Seller. All charges within a Charge that was initiated due to a Modify Product Order Item Requested Delivery Date are considered Blocking charges. If any charge is not accepted by the Buyer, the Modify Product Order Item Requested Delivery Date moves from the `inProgress.assessingCharge` state to the `done.declined` state. |
        | acknowledged               | ACKNOWLEDGED     | A Modify Product Order Item Requested Delivery Date request has been received and has passed basic validation. The Modify Product Order Item Requested Delivery Date Identifier is assigned in the `acknowledged` state. Validation of Modify Product Order Item Requested Delivery Date attributes as applicable is completed in the `acknowledged` state.                                                                                                                                                                                                                         |
        | done                       | ACCEPTED         | A Modify Product Order Item Requested Delivery Date request has been received, passed all validations, if a Charge is associated all Charge Items have been accepted by the Buyer, and the Product Order Item Completion Date has been updated as requested.                                                                                                                                                                                                                                                                                                                        |
        | done.declined              | DECLINED         | Blocking charges associated with a Modify Product Order Item Requested Delivery Date have been declined by the Buyer. No updates are made to the Product Order Item.                                                                                                                                                                                                                                                                                                                                                                                                                |
        | rejected                   | REJECTED         | A Modify Product Order Item Requested Delivery Date request was submitted by the Buyer, and it has failed any validation checks the Seller performs during the `acknowledged` state. No updates are made to the referenced Product Order Item.
      enum:
        - acknowledged
        - done
        - done.declined
        - inProgress.assessingCharge
        - rejected
      type: string
    MEFEndOfTermAction:
      description: >-
        The action the Seller will take once the term expires. 

        Roll indicates that the Product's contract will continue on a rolling
        basis for the duration of the Roll Interval at the end of the Term.  

        Auto-disconnect indicates that the Product will be disconnected at the
        end of the Term. 

        Auto-renew indicates that the Product's contract will be automatically
        renewed for the Term Duration at the end of the Term.
      enum:
        - roll
        - autoDisconnect
        - autoRenew
      type: string
    MEFGeographicPoint:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            spatialRef:
              description: >-
                The spatial reference system used to determine the coordinates
                (e.g. "WGS84"). The system used and the value of this field are
                to be agreed during the onboarding process.
              type: string
            x:
              description: >-
                The latitude expressed in the format specified by the
                `spacialRef`
              type: string
            'y':
              description: >-
                The longitude expressed in the format specified by the
                `spacialRef`
              type: string
            z:
              description: >-
                The elevation expressed in the format specified by the
                `spacialRef`
              type: string
          required:
            - spatialRef
            - x
            - 'y'
          type: object
      description: >
        A MEFGeographicPoint defines a geographic point through coordinates.
    MEFItemTerm:
      description: The term of the Item
      properties:
        description:
          description: Description of the term
          type: string
        duration:
          $ref: '#/components/schemas/Duration'
          description: Duration of the term
        endOfTermAction:
          $ref: '#/components/schemas/MEFEndOfTermAction'
          description: >-
            The action that needs to be taken by the Seller once the term
            expires
        name:
          description: Name of the term
          type: string
        rollInterval:
          $ref: '#/components/schemas/Duration'
          description: >-
            The recurring period that the Buyer is willing to pay for the
            Product after the original term has expired.
      type: object
      required:
        - name
        - duration
        - endOfTermAction
    MEFMilestone:
      description: >-
        Milestones associated to the Product Order Item. Set by the Seller when
        a Milestone occurs.
      properties:
        date:
          description: The date on when the milestone was reached
          format: date-time
          type: string
        name:
          type: string
          description: Name of the Milestone.
        note:
          description: Additional comment related to milestone change.
          type: string
      type: object
      required:
        - date
        - name
    MEFModifyProductOrderItemRequestedDeliveryDate:
      description: >-
        A response to a request initiated by the Buyer to modify the Requested
        Completion Date or the Expedite Indicator of a Product Order Item.
      properties:
        creationDate:
          description: >-
            Date that the Modify Product Order Item Requested Delivery Date was
            created in the Seller's system and the id was assigned
          format: date-time
          type: string
        expediteIndicator:
          default: false
          description: >-
            Indicates that expedited treatment is requested. Set by the Buyer.
            Default Value = FALSE. If this is set to TRUE, the Buyer sets the
            Requested Completion Date to the expedited date
          type: boolean
        href:
          description: >
            Hyperlink to the modification request. Hyperlink MAY be used by the
            Seller in responses Hyperlink MUST be ignored by the Seller in case
            it is provided by the Buyer in a request
          type: string
        id:
          description: >-
            Unique identifier for the
            MEFModifyProductOrderItemRequestedDeliveryDate that is generated by
            the Seller when the MEFModifyProductOrderItemRequestedDeliveryDate
            request is moved to the 'acknowledged' state.
          type: string
        productOrderItem:
          $ref: '#/components/schemas/MEFProductOrderItemRef'
          description: A reference to the Product Order Item to be modified.
        requestedCompletionDate:
          description:
            Identifies the Buyer's desired due date (requested delivery date)
          format: date-time
          type: string
        state:
          $ref: '#/components/schemas/MEFChargeableTaskStateType'
          description: >-
            The state of the Modify Product Order Item Requested Delivery Date
            request
      required:
        - creationDate
        - id
        - productOrderItem
        - state
      type: object
    MEFModifyProductOrderItemRequestedDeliveryDateRef:
      description:
        a reference to Modify Product Order Item Requested Delivery Date
      properties:
        href:
          description: >-
            Hyperlink to access the Modify Product Order Item Requested
            Delivery Date
          type: string
        id:
          description: >-
            A unique identifier of the Modify Product Order Item Requested
            Delivery Date
          type: string
      required:
        - id
      type: object
    MEFModifyProductOrderItemRequestedDeliveryDate_Create:
      description: >-
        A request initiated by the Buyer to modify the Requested Requested
        Delivery Date or the Expedite Indicator of a Product Order Item.
      properties:
        expediteIndicator:
          default: false
          description: >-
            Indicates that expedited treatment is requested. Set by the Buyer.
            Default Value = FALSE. If this is set to TRUE, the Buyer sets the
            Requested Completion Date to the expedited date
          type: boolean
        productOrderItem:
          $ref: '#/components/schemas/MEFProductOrderItemRef'
          description: A reference to the Product Order Item to be modified.
        requestedCompletionDate:
          description:
            Identifies the Buyer's desired due date (requested delivery date)
          format: date-time
          type: string
      required:
        - productOrderItem
      type: object
    MEFOrderItemCoordinatedAction:
      description: >-
        The interval after the completion of one or more related Order
        Items that this Order Item can be started or completed
      properties:
        coordinatedActionDelay:
          $ref: '#/components/schemas/Duration'
          description:
            The period of time for which the coordinated action is delayed.
        coordinationDependency:
          $ref: '#/components/schemas/MEFOrderItemCoordinationDependencyType'
          description: >-
            A dependency between the Order Item and a related Order Item
        itemId:
          description: >-
            Specifies Order Item that is to be coordinated with this
            Order Item.
          type: string
      required:
        - coordinatedActionDelay
        - coordinationDependency
        - itemId
      type: object
    MEFOrderItemCoordinationDependencyType:
      description: |
        Possible values of the Order Item Coordination Dependency

        | OrderItemCoordinationDependencyType | MEF 57.2         | Description                                                                                        |
        |-------------------------------------|------------------|----------------------------------------------------------------------------------------------------|
        | startToStart                        | START_TO_START   | Work on the Specified Order Item can only be started after the Coordinated Order Items are started |
        | startToFinish                       | START_TO_FINISH  | The Coordinated Order Items must complete before work on the Specified Order Item begins           |
        | finishToStart                       | FINISH_TO_START  | Work on the Related Order Items begins after the completion of the Specified Order Item            |
        | finishToFinish                      | FINISH_TO_FINISH | Work on the Related Order Items completes at the same time as the Specified Order Item             |
      enum:
        - startToStart
        - startToFinish
        - finishToStart
        - finishToFinish
      type: string
    MEFPriceType:
      description:
        Indicates if the price is for recurring or non-recurring charges.
      enum:
        - recurring
        - nonRecurring
        - usageBased
      type: string
    MEFProductActionType:
      description: |
        Action to be performed on the Product that the Order Item refers to.

        | ProductActionType | MEF 57.2   |
        | ----------------- | ---------- |
        | add               | INSTALL    |
        | modify            | CHANGE     |
        | delete            | DISCONNECT |
      enum:
        - add
        - modify
        - delete
      type: string
    MEFProductConfiguration:
      description: >-
        MEFProductConfiguration is used as an extension point for MEF specific
        product/service payload.  The `@type` attribute is used as a
        discriminator
      discriminator:
        propertyName: '@type'
      properties:
        '@type':
          description: >-
            The name of the type, defined in the JSON schema specified  above,
            for the product that is the subject of the Product Order Request.
            The named type must be a subclass of MEFProductConfiguration.
          type: string
      required:
        - '@type'
      type: object
    MEFProductOrderCharge:
      description: >-
        When non-recurring or updated recurring charges are identified by the
        Seller during their processing of a Product Order, the Seller must
        communicate these charges to the Buyer and the Buyer must respond to
        the Seller informing the Seller if they accept or reject each charge.
        The Seller indicates for each charge, if the charge is Blocking or
        non-Blocking. If the Buyer rejects a Blocking Charge, the Seller will
        cancel that Product Order Item and any related Product Order Items. If
        the Buyer rejects a non-blocking Charge, the Seller may proceed with
        fulfillment of the Product Order Item.
      properties:
        cancelProductOrder:
          $ref: '#/components/schemas/MEFCancelProductOrderRef'
          description: >-
            A reference to the Cancel Product Order request that is cause of
            the Charge. Required if the Charge was caused by a Cancel Product
            Order.
        chargeItem:
          items:
            $ref: '#/components/schemas/MEFProductOrderChargeItem'
          description: A list of Charge Items contained in the Charge
          type: array
        creationDate:
          description: Date that the Charge was created by the Seller.
          format: date-time
          type: string
        href:
          description: >
            Hyperlink to the Charge. Hyperlink MAY be used by the Seller in
            responses Hyperlink MUST be ignored by the Seller in case it is
            provided by the Buyer in a request
          type: string
        id:
          description: A unique identifier of the Charge
          type: string
        modifyProductOrderItemRequestedDeliveryDate:
          $ref: >-
            #/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDateRef
          description: >-
            A reference to the Modify Product Order Item Requested Delivery
            Date request that is cause of the Charge. Required if the Charge
            was caused by a Modify Product Order Item Requested Delivery Date
            request.
        productOrder:
          $ref: '#/components/schemas/MEFProductOrderRef'
          description: >-
            Product Order which the Seller is communicating additional or
            modified charges to the Buyer. This relation MUST be set when the
            Charge applies to a Product Order. (Caused by Cancel Product Order
            request)
        productOrderItem:
          $ref: '#/components/schemas/MEFProductOrderItemRef'
          description: >-
            Product Order Item which the Seller is communicating additional or
            modified charges to the Buyer. This relation MUST be set when the
            Charge applies to a Product Order Item. (Identified by Seller or
            caused by Modify Product Order Item Requested Delivery Date
            request)
        responseDueDate:
          description: >-
            The date by which the Buyer must respond to the Seller's Charge. If
            there is no response received by the Due Date the Seller will treat
            all charges as declined and move them to `declinedByBuyer` status
            and put the Charge to `completed` status.
          format: date-time
          type: string
        state:
          $ref: '#/components/schemas/MEFProductOrderChargeStateType'
          description: The state of the Charge
      required:
        - chargeItem
        - creationDate
        - id
        - responseDueDate
        - state
      type: object
    MEFProductOrderCharge_Find:
      description: >-
        A response object for Buyer's get Charge List request.
      properties:
        creationDate:
          description: Date that the Charge was created by the Seller.
          format: date-time
          type: string
        id:
          description: A unique identifier of the Charge
          type: string
        productOrder:
          $ref: '#/components/schemas/MEFProductOrderRef'
          description: >-
            Product Order which the Seller is communicating additional or
            modified charges to the Buyer. This relation MUST be set when the
            Charge applies to a Product Order. (Caused by Cancel Product Order
            request)
        productOrderItem:
          $ref: '#/components/schemas/MEFProductOrderItemRef'
          description: >-
            Product Order Item which the Seller is communicating additional or
            modified charges to the Buyer. This relation MUST be set when the
            Charge applies to a Product Order Item. (Identified by Seller or
            caused by Modify Product Order Item Requested Delivery Date
            request)
        responseDueDate:
          description: >-
            The date by which the Buyer must respond to the Seller's Charge. If
            there is no response received by the Due Date the Seller will treat
            all charges as declined and move them to `declinedByBuyer` status
            and put the Charge to `completed` status.
          format: date-time
          type: string
        state:
          $ref: '#/components/schemas/MEFProductOrderChargeStateType'
          description: The state of the Charge
      required:
        - id
        - creationDate
        - responseDueDate
        - state
      type: object
    MEFProductOrderChargeActivityType:
      description: |
        Possible values for the state of the Charge Activity Type
      enum:
        - new
        - change
      type: string
    MEFProductOrderChargeItem:
      description: A single component part of the Charge
      properties:
        acceptanceIndicator:
          $ref: '#/components/schemas/MEFAcceptedRejectedType'
          description:
            Indicates if the Buyer has accepted the specified charge.
        activityType:
          $ref: '#/components/schemas/MEFProductOrderChargeActivityType'
          description: >-
            Indicates if this is a new charge or a change to a charge provided
            in a Quote or in a previous accepted Charge Item.
        blocking:
          description: >-
            Indicates if rejecting the charge will cause the Seller to cancel
            the Product Order Item, or close the Cancel Product Order or Modify
            Product Order Item Requested Delivery Date without action.
          type: boolean
        id:
          description: >-
            An identifier that is unique among all Charge Items within a Charge
          type: string
        note:
          description: >
            Free form text to clarify or explain the Charge Item. Only new
            notes can be entered. The Seller cannot modify an existing Note.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        price:
          $ref: '#/components/schemas/Price'
          description: The value of the Price associated with the Charge Item
        priceCategory:
          $ref: '#/components/schemas/MEFPriceCategory'
          description: The category of the price
        priceType:
          $ref: '#/components/schemas/MEFPriceType'
          description: The type of the price.
        recurringChargePeriod:
          $ref: '#/components/schemas/MEFChargePeriod'
          description: >-
            Used for a Charge Item with a priceType = recurring to indicate the
            period
        state:
          $ref: '#/components/schemas/MEFProductOrderChargeItemStateType'
          description: The state of the Charge Item
        unitOfMeasure:
          description: >-
            Unit of Measure if price depending on it is usageBased (Gb, SMS
            volume, etc..)
          type: string
      required:
        - id
        - activityType
        - blocking
        - price
        - priceType
        - priceCategory
        - state
      type: object
    MEFPriceCategory:
      description: A description of the cause of the Charge Item
      enum:
        - cancellation
        - construction
        - connection
        - disconnect
        - expedite
        - other
      type: string
    MEFProductOrderChargeItemStateType:
      description: |
        Possible values for the state of the Charge Item

        | State               | MEF 57.2 Name       | Description                                                                                                                                                                                                                                                                                                                                        |
        | ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | `awaitingResponse`  | AWAITING_RESPONSE   | A Charge has been initiated by the Buyer. The charge includes one or more charges related to a Product Order or Product Order Item. Buyer has not indicated whether they accept or reject the charges via a Respond to Charge request.                                                                                                             |
        | `completed`         | COMPLETED           | All Charge Items included in the Charge have moved to either the `acceptedByBuyer` state, the `declinedByBuyer` state, or the `withdrawnBySeller` state.                                                                                                                                                                                           |
        | `timeout`           | TIMEOUT             | A Charge Item has been declined by the Buyer. The referenced Product Order and Product Order Items are updated. If a Blocking charge is declined, the Seller may cancel the referenced Product Order Item and any related Product Order Items, the related Cancel Product Order, or the related Modify Product Order Item Requested Delivery Date. |
        | `withdrawnBySeller` | WITHDRAWN_BY_SELLER | The Seller determines that the Charge Item is incorrect. They withdraw the Charge Item and initiate a new Charge with the required correction(s) if needed.                                                                                                                                                                                        |
      enum:
        - awaitingResponse
        - acceptedByBuyer
        - declinedByBuyer
        - withdrawnBySeller
      type: string
    MEFProductOrderChargeItem_Update:
      description: >-
        A type used to perform Buyer's response to a Charge Item - to accept or
        reject it.
      properties:
        acceptanceIndicator:
          $ref: '#/components/schemas/MEFAcceptedRejectedType'
          description: Indicates if the Buyer has accepted the specified charge
        id:
          description: >-
            An identifier that is unique among Charge. Used for Charge Item
            matching, not to be update.
          type: string
        note:
          description: >
            Free form text to clarify or explain the Charge Item. Only new
            notes can be entered. The Seller cannot modify an existing Note.
          items:
            $ref: '#/components/schemas/Note'
          type: array
      required:
        - acceptanceIndicator
        - id
      type: object
    MEFProductOrderChargeRef:
      description: A reference to a Charge instance
      properties:
        href:
          description: Hyperlink to access the Charge
          type: string
        id:
          description: A unique identifier of the Charge
          type: string
      required:
        - id
      type: object
    MEFProductOrderChargeStateType:
      description: |
        Possible values for the state of the Charge

        | State               | Description                                                                                                                               |
        | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
        | `completed`         | All Charge Items included in the Charge for a given Product Order Item have moved to either the `accepted` state or the `declined` state. |
        | `awaitingResponse`  | A Charge has been initiated by the Buyer. The charge includes one or more charges.                                                        |
        | `timeout`           | A response has not been received from the Buyer within the `responseDueDate`. This is treated as if the Buyer declined the Charge Items.  |
        | `withdrawnBySeller` | The Seller determines that the Charge is incorrect. They withdraw the Charge and initiate a new Charge with the required correction(s).   |
      enum:
        - awaitingResponse
        - completed
        - timeout
        - withdrawnBySeller
      type: string
    MEFProductOrderCharge_Update:
      description: >-
        A subset of MEFProductOrderCharge that is allowed to be updated by the
        Buyer
      properties:
        chargeItem:
          items:
            $ref: '#/components/schemas/MEFProductOrderChargeItem_Update'
          description: A list of Charge Items contained in the Charge
          minItems: 1
          type: array
      required:
        - chargeItem
      type: object
    MEFProductOrderItemRef:
      description: It's a ProductOrder item
      properties:
        productOrderHref:
          description: Reference of the related ProductOrder.
          type: string
        productOrderId:
          description: Unique identifier of a ProductOrder.
          type: string
        productOrderItemId:
          description: Id of an Item within the Product Order
          type: string
      required:
        - productOrderId
        - productOrderItemId
      type: object
    MEFProductOrderItemStateChange:
      description: >-
        Holds the State notification reasons and associated date the State
        changed, populated by the server
      properties:
        changeDate:
          description: The date on when the state was reached
          format: date-time
          type: string
        changeReason:
          description: Additional comment related to state change.
          type: string
        state:
          $ref: '#/components/schemas/MEFProductOrderItemStateType'
          description: Reached state
      type: object
    MEFProductOrderItemStateType:
      description: |
        Possible values for the state of the Product Order Item The following
        mapping has been used between `MEFProductOrderItemStateType` and MEF
        57.2:

        | state                 | MEF 57.2 name | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
        | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
        | `acknowledged`        | ACKNOWLEDGED  | A Product Order Item has been received and has passed basic business validations. From the `acknowledged` state the Product Order Item is further validated and depending on the results of the validation and if other Product Order Items in the Product Order are also validated the Product Order Item moves to `inProgress`, `rejected.validated`, or `rejected.unassessed`.                                                                                                                                                                                                                                                                                                                                                                                                                |
        | `cancelled`           | CANCELLED     | The Product Order has moved to the `pendingCancellation` state. All Product Order Items move to `cancelled`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
        | `completed`           | COMPLETED     | The Product Order Item has completed provisioning. This is an end state                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
        | `failed`              | FAILED        | The fulfillment of a Product Order Item has failed. A Product Order Item may fail because the Buyer declined a Blocking charge identified via the Charge, the Buyer failed to respond to a Charge Item included in a Charge, or the Seller is unable to fulfill the Product Order Item. A Product Order Item moving to `failed` state results in the Product Order State being `failed` or `partial`. This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                  |
        | `held`                | HELD          | The Product Order Item cannot be progressed due to Charge the Seller awaiting a response from the Buyer on a Charge. The Seller stops work on the Product Order Item until the Charge has completed. Upon acceptance by the Buyer of all Blocking charges, the Product Order Item returns to `inProgress` state If the Buyer rejects a Blocking charge, the Product Order Item moves to the `failed` state.                                                                                                                                                                                                                                                                                                                                                                                      |
        | `inProgress`          | IN_PROGRESS   | The Product Order Item has been successfully validated and fulfillment has started. If the Seller's system links validation between Product Order Items in a Product Order, a Product Order Item in this state also indicates that the other Product Order Items passed validation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
        | `pending`             | PENDING       | The Product Order Item cannot be progressed due to the Seller assessing a Cancel Product Order or Modify Product Order Item Requested Delivery Date request. The Seller stops work on the Product Order Item until either the Cancel Product Order has been accepted and the Product Order state moves to `pendingCancellation` and the Product Order Item state moves to `cancelled`, the Cancel Product Order has been rejected and the Product Order Item State moves to `inProgress`, the Modify Product Order Item Requested Delivery Date has been accepted and the Product Order Item State moves to `inProgress`, or the Modify Product Order Item Requested Delivery Date moves to `done.declined` and the Product Order Item state moves to `inProgress` with original delivery dates. |
        | `rejected`            | REJECTED      | A Product Order Item was submitted, and it has failed at least one validation checks the Seller performs during the `acknowledged` state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
        | `rejected.unassessed` | UNASSESSED    | A Product Order was submitted and all validation checks the Seller performs during the `acknowledged` state have not been completed, but another Product Order Item in the Product Order has moved to the `rejected` state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
        | `rejected.validated`  | VALIDATED     | A Product Order was submitted, and it has passed all validation checks the Seller performs during the `acknowledged` state, but another Product Order Item in the Product Order has moved to the `rejected` state                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      enum:
        - acknowledged
        - cancelled
        - completed
        - failed
        - held
        - inProgress
        - pending
        - rejected
        - rejected.validated
        - rejected.unassessed
      type: string
    MEFProductOrderItem_Common:
      description: >
        An identified part of the order. A product order is decomposed into one
        or more order items. This type holds the attributes common to request
        and response representation of the Product Order Item.
      properties:
        action:
          $ref: '#/components/schemas/MEFProductActionType'
          description: >-
            Action to be applied to the product referred by this Product Order
            Item
        agreementName:
          description: >-
            The name of the Agreement which is referenced for the Product Order
            Item.
          type: string
        billingAccount:
          $ref: '#/components/schemas/MEFBillingAccountRef'
          description:
            Billing account information for the billing account the Buyer wants
            used for the Product Order Item
        coordinatedAction:
          description: >-
            The interval after the completion of one or more related Product
            Order Items that this Product Order Item can be started or
            completed
          items:
            $ref: '#/components/schemas/MEFOrderItemCoordinatedAction'
          type: array
        endCustomerName:
          description: >-
            The name of the End Customer, either a business name or an
            individual name depending on the end customer.
          type: string
        expediteIndicator:
          default: false
          description: >-
            Indicates that expedited treatment is requested. Set by the Buyer.
            If this is set to TRUE, the Buyer sets the Requested Completion
            Date to the expedited date. See MEF 57.2 section 7.3 for a
            description of the interaction between the Buyer and the Seller.
          type: boolean
        id:
          description: >
            A Buyer provided identifier to identify Product Order Items and to
            be able to relate them to one another. This is set by the Buyer and
            is unique within the Product Order. Examples of Reference
            Identifier could be 1, 2, 3 or A, B, C. The Reference Identifier
            can be reused in multiple Product Orders to identify a Product
            Order Item within that Product Order.
          type: string
        note:
          description: >
            Free form text to clarify or explain the Product Order Item. Only
            new notes can be entered. The Buyer and Seller cannot modify an
            existing Note. The Buyer creates a Note when creating the Product
            Order Item or when updating it. The Seller may add notes at any
            time. This is not to be used to inform the Seller of Actions that
            the Buyer wishes performed.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        product:
          $ref: '#/components/schemas/MEFProductRefOrValueOrder'
          description: >-
            The Buyer's existing Product for which the Product Order is being
            requested. Set by the Buyer if the Product Action is modify or
            delete.
        productOfferingQualificationItem:
          $ref: '#/components/schemas/ProductOfferingQualificationItemRef'
          description: >-
            The POQ and POQ Item associated to this Product Order Item. The
            relation may be required by the Seller. In that case, this is a
            mandatory field. If the Seller does not require the POQ Item
            reference, then this is an optional attribute.
        productOrderItemRelationship:
          description:
            The relationship between Product Order Items in the Product Order.
          items:
            $ref: '#/components/schemas/OrderItemRelationship'
          type: array
        quoteItem:
          $ref: '#/components/schemas/MEFQuoteItemRef'
          description: >-
            The Quote Item associated to this Product Order Item. The Quote
            Item reference may be required by the Seller. In that case, this is
            a mandatory field. If the Seller does not require the Quote, then
            this is an optional attribute.
        relatedBuyerPON:
          description: >-
            Identifies the Buyer Purchase Order Number that is related to this
            Product Order.
          type: string
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            for this Order Item.

            The rule for mapping a represented attribute

            value to a `role` is to use the _lowerCamelCase_ pattern e.g.

            - Buyer Product Order Item Contact:
            `role=buyerProductOrderItemContact`

            - Buyer Implementation Contact: `role=buyerImplementationContact`

            - Buyer Technical Contact: `role=buyerTechnicalContact`

            - Buyer Billing Contact: `role=buyerBillingContact`

            - Buyer Fault Contact: `role=buyerFaultContact`

            - Seller Fault Contact: `role=sellerFaultContact`

            - Buyer GDPR Contact: `role=buyerGDPRContact`

            - Seller GDPR Contact: `role=sellerGDPRContact`
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        requestedCompletionDate:
          description:
            Identifies the Buyer's desired due date (requested delivery date)
          format: date-time
          type: string
        requestedItemTerm:
          $ref: '#/components/schemas/MEFItemTerm'
          description: Requested term of the Product Order Item
        tspRestorationPriority:
          description: >
            Within the United States, indicates the provisioning and
            restoration priority as defined under the TSP Service Vendor
            Handbook. The valid values are defined in ATIS OBF document:
            ATIS-0404001.
          type: string
      required:
        - action
        - id
      type: object
    MEFProductOrderItem_Create:
      allOf:
        - $ref: '#/components/schemas/MEFProductOrderItem_Common'
        - description: |
            An identified part of the order. A product order is decomposed into
            one or more order items. 
            The modelling pattern introduces the `Common` supertype to
            aggregate attributes that are common to both `ProductOrderItem` and
            `ProductOrderItem_Create`. The `Create` type has a subset of
            attributes of the response type and does not introduce any new,
            thus the `Create` type has an empty definition.
          type: object
    MEFProductOrderItem_Update:
      description: |
        An updatable representation of the Product Order Item.
      properties:
        endCustomerName:
          description: >-
            The name of the End Customer, either a business name or an
            individual name depending on the end customer.
          type: string
        id:
          description: >
            Identifier of the Item. This is to address the Item to be updated
            within the Product Order. The id itself cannot be updated.
          type: string
        note:
          description: >
            Free form text to clarify or explain the Product Order Item. Only
            new notes can be entered. The Buyer and Seller cannot modify an
            existing Note. The Buyer creates a Note when creating the Product
            Order Item or when updating it. The Seller may add notes at any
            time.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        relatedBuyerPON:
          description: >-
            This information is not used by the Seller and is maintained for
            the convenience of the Buyer (e.g. search purposes).
          type: string
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            for this Order Item. Buyer may modify, add, or delete only
            Buyer-related contacts.

            - Buyer Product Order Item Contact:
            `role=buyerProductOrderItemContact`

            - Buyer Implementation Contact: `role=buyerImplementationContact`

            - Buyer Technical Contact: `role=buyerTechnicalContact`

            - Buyer Fault Contact: `role=buyerFaultContact`

            - Buyer GDPR Contact: `role=buyerGDPRContact`
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
      required:
        - id
      type: object
    MEFProductOrderRef:
      description: Holds the MEF Product Order reference
      properties:
        productOrderHref:
          description: Hyperlink to access the order
          type: string
        productOrderId:
          description: >-
            Unique (within the ordering domain) identifier for the order that
            is generated by the seller when the order is initially accepted.
          type: string
      required:
        - productOrderId
      type: object
    MEFProductOrderStateChange:
      description: >-
        Holds the State notification reasons and associated date the State
        changed, populated by the server
      properties:
        changeDate:
          description: The date on when the state was reached
          format: date-time
          type: string
        changeReason:
          description: Additional comment related to state change
          type: string
        state:
          $ref: '#/components/schemas/MEFProductOrderStateType'
          description: Reached state
      type: object
    MEFProductOrderStateType:
      description: |
        Possible values for the state of the Product Order The following
        mapping has been used between `MEFProductOrderStateType` and MEF 57.2:

        | state                           | MEF 57.2 name          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
        | ------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | `acknowledged`                  | ACKNOWLEDGED           | A Product Order has been received by the Seller and has passed basic validation. A `productOrder.id` is assigned in the `acknowledged` state and a response is returned to the Buyer. The Product Order remains in the `acknowledged` state while validations of Product Order and Product Order Item(s) attributes as applicable is completed. If the Product Order and Product Order Item attributes are validated the Product Order moves to the `inProgress` state. If not validated, the Product Order moves to the `rejected` state.                                                                                                                                                                                                                                               |
        | `assessingCancellation`         | ASSESSING_CANCELLATION | A Cancel Product Order request has been received by the Seller. The Product Order is being assessed to determine if the Product Order can be cancelled. If there are charges associated with cancelling the Product Order, these are communicated to the Buyer using the Charge process. The Product Order remains in the `assessingCancellation` state until any relevant Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order moves to the `pendingCancellation` state. If the request is not validated or if any associated Charges are not completed, the Product Order moves to the `inProgress` state and the Product Order is not cancelled.                                       |
        | `held.assessingCharge`          | ASSESSING_CHARGE       | A Charge has been initiated by the Seller that is not the result of a Modify Product Order Item Requested Delivery Date or Cancel Product Order request and the Seller is awaiting a Buyer response to the Charge. If a blocking or non-blocking charge is accepted by the Buyer, the Product Order moves to `inProgress`. If a non-blocking charge is declined by the Buyer, the Product Order moves to `inProgress`. If a blocking charge is declined by the Buyer and there are no unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` and then to the `failed` state. If a blocking charge is declined by the Buyer and there are unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` state. |
        | `pending.assessingModification` | ASSESSING_MODIFICATION | A request has been made by the Buyer to modify either the `expediteIndicator` or the `requestedCompletionDate` of a Product Order Item. The Product Order Item is currently being assessed to determine whether the Modify Product Order Item Requested Delivery Date is valid. If there is a charge associated with the Modify Product Order Item Requested Delivery Date, the Product Order remains in the `pending.assessingModification` state until the Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order returns to the `inProgress` state.                                                                                                                                      |
        | `cancelled`                     | CANCELLED              | The Product Order has been successfully cancelled. This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
        | `pendingCancellation`           | CANCELLING             | The Buyer's Cancel Request has been assessed and it has been determined that it is feasible to proceed with the cancellation. This state can also result from a Seller cancelling the Product Order within their systems without a request from the Buyer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
        | `completed`                     | COMPLETED              | The Product Order has completed fulfillment and the Product is now active. This is a terminal state                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
        | `failed`                        | FAILED                 | All Product Order Items have failed which results in the entire Product Order failing. This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
        | `inProgress`                    | IN_PROGRESS            | The Product Order has been successfully validated, and fulfillment has started.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
        | `partial`                       | PARTIAL                | Fulfillment of at least one Product Order Item has failed, and fulfillment of at least one Product Order Item has been successful. This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
        | `rejected`                      | REJECTED               | A Product Order was submitted, and it has failed at least one of the validation checks the Seller performs after it reached the `acknowledged` state                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      enum:
        - acknowledged
        - assessingCancellation
        - cancelled
        - completed
        - failed
        - held.assessingCharge
        - inProgress
        - partial
        - pending.assessingModification
        - pendingCancellation
        - rejected
      type: string
    MEFProductRefOrValueOrder:
      description: >-
        Used by the Buyer to point to existing and/or describe the desired
        shape of the product. In case of `add` action - only
        `productConfiguration` MUST be specified. For `modify` action - both
        `id` and `productConfiguration` MUST be provided to point which product
        instance to update and to what state. In `delete` only the `id` must be
        provided.
      properties:
        href:
          description: >-
            Hyperlink to the referenced Product. Hyperlink MAY be used by the
            Seller in responses. Hyperlink MUST be ignored by the Seller in
            case it is provided by the Buyer in a request.
          type: string
        id:
          description: >-
            The unique identifier of an in-service Product that is the ordering
            subject. This field MUST be populated if an item `action` is either
            `modify` or `delete`. This field MUST NOT be populated if an item
            `action` is `add`.
          type: string
        place:
          description: >-
            The relationships between this Product Order Item and one or more
            Places as defined in the Product Specification.
          items:
            $ref: '#/components/schemas/RelatedPlaceRefOrValue'
          type: array
        productConfiguration:
          $ref: '#/components/schemas/MEFProductConfiguration'
          description: >-
            MEFProductConfiguration is used to specify the MEF specific product
            payload. This field MUST be populated if an item `action` is `add`
            or `modify`. It MUST NOT be populated when an item `action` is
            `delete`. The @type is used as a discriminator.
        productOffering:
          $ref: '#/components/schemas/ProductOfferingRef'
          description: >-
            A particular Product Offering defines the technical and commercial
            attributes and behaviors of a Product.
        productRelationship:
          description: >-
            A list of references to existing products that are related to the
            ordered Product.
          items:
            $ref: '#/components/schemas/ProductRelationship'
          type: array
      type: object
    MEFQuoteItemRef:
      description: It's a Quote item that has been executed previously.
      properties:
        id:
          description: Id of an Quote Item
          type: string
        quoteHref:
          description: Reference of the related Quote.
          type: string
        quoteId:
          description: Unique identifier of a Quote.
          type: string
      required:
        - id
        - quoteId
      type: object
    MEFSubUnit:
      description: Allows for sub unit identification
      properties:
        subUnitNumber:
          description: >-
            The discriminator used for the subunit, often just a simple number
            but may also be a range.
          type: string
        subUnitType:
          description: >-
            The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,
            UNIT, WHARF.
          type: string
      required:
        - subUnitNumber
        - subUnitType
      type: object
    Money:
      description: A base / value business entity used to represent money
      properties:
        unit:
          description:
            Currency (ISO4217 norm uses 3 letters to define the currency)
          type: string
        value:
          description: A positive floating point number
          format: float
          type: number
      type: object
    Note:
      description: >-
        Extra information about a given entity. Only useful in processes
        involving human interaction. Not applicable for the automated process.
      properties:
        author:
          description: Author of the note
          type: string
        date:
          description: Date the Note was created
          format: date-time
          type: string
        id:
          description: >-
            Identifier of the note within its containing entity (may or may not
            be globally unique, depending on provider implementation)
          type: string
        source:
          $ref: '#/components/schemas/MEFBuyerSellerType'
          description: Indicates if the note is from Buyer or Seller
        text:
          description: Text of the note
          type: string
      required:
        - author
        - date
        - id
        - source
        - text
      type: object
    OrderItemRelationship:
      description:
        The relationship between Product Order Items in the Product Order.
      properties:
        id:
          description:
            Id of the related Order Item (must be in the same Order).
          type: string
        relationshipType:
          description: >-
            Specifies the nature of the relationship to the related Product
            Order Item. A string that is one of the relationship types
            specified in the Product Specification.
          type: string
      required:
        - id
        - relationshipType
      type: object
    Price:
      description: >-
        Provides all amounts (tax included, duty free, tax rate), used currency
        and percentage to apply for Price Alteration.
      properties:
        dutyFreeAmount:
          $ref: '#/components/schemas/Money'
          description:
            All taxes excluded amount (expressed in the given currency)
        taxIncludedAmount:
          $ref: '#/components/schemas/Money'
          description:
            All taxes included amount (expressed in the given currency)
        taxRate:
          description:
            'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.'
          format: float
          type: number
      required:
        - dutyFreeAmount
      type: object
    ProductOfferingQualificationItemRef:
      description: >-
        It's a productOfferingQualification item that has been executed
        previously.
      properties:
        alternateProductOfferingProposalId:
          description: >-
            A unique identifier for this Alternate Product Proposal assigned by
            the Seller.
          type: string
        id:
          description: Id of an item of a product offering qualification
          type: string
        productOfferingQualificationHref:
          description:
            Reference to a related Product Offering Qualification resource.
          type: string
        productOfferingQualificationId:
          description: >-
            Unique identifier of related Product Offering Qualification
            resource.
          type: string
      required:
        - id
        - productOfferingQualificationId
      type: object
    ProductOfferingRef:
      description: >-
        A reference to a Product Offering offered by the Seller to the
        Buyer.  A Product Offering contains the commercial and technical
        details of a Product sold by a particular Seller. A Product Offering
        defines all of the commercial terms and, through association with a
        particular Product Specification, defines all the technical attributes
        and behaviors of the Product. A Product Offering may constrain the
        allowable set of configurable technical attributes and/or behaviors
        specified in the associated Product Specification.
      properties:
        href:
          description: >
            Hyperlink to a Product Offering in Sellers catalog. In case Seller
            is not providing a catalog capabilities this field is not
            used.  The catalog API definition is provided by the Seller to the
            Buyer during onboarding Hyperlink MAY be used by the Seller in
            responses  
            Hyperlink MUST be ignored by the Seller in case it is provided by
            the Buyer in a request
          type: string
        id:
          description: >-
            id of a Product Offering. It is assigned by the Seller. The Buyer
            and the Seller exchange information about offerings' ids during the
            onboarding process.
          type: string
      required:
        - id
      type: object
    ProductOrder:
      allOf:
        - $ref: '#/components/schemas/ProductOrder_Common'
        - 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
          properties:
            cancellationCharge:
              description: Charges associated with cancelling the Product Order
              items:
                $ref: '#/components/schemas/MEFProductOrderChargeRef'
              type: array
            cancellationDate:
              description: >-
                Identifies the date the Seller cancelled the Order. Set by
                Seller when the Order is moved to the cancelled state.
              format: date-time
              type: string
            cancellationReason:
              description: >-
                An optional free-form text field for the Seller to provide
                additional information regarding the reason for the
                cancellation. If the Seller cancels the Product Order, the
                Seller provides the reason. If the Buyer requests the
                cancellation, the Seller copies the reason provided by the
                Buyer from the Cancel Product Order request.
              type: string
            completionDate:
              description: >-
                Identifies the date that all Product Order Items within the
                Order have reached a terminal state. No further action is
                permitted on the Product Order.
              format: date-time
              type: string
            href:
              description: Hyperlink to access the order
              type: string
            id:
              description: >-
                Unique identifier for the Product Order that is generated by
                the Seller when the Product Order is initially accepted via an
                API.
              type: string
            orderDate:
              description: >-
                Date when the Product Order was created in the Seller's system
                and a Product Order Identifier was assigned
              format: date-time
              type: string
            productOrderItem:
              description: |
                Items contained in the Product Order.
              items:
                $ref: '#/components/schemas/ProductOrderItem'
              minItems: 1
              type: array
            state:
              $ref: '#/components/schemas/MEFProductOrderStateType'
              description: >-
                The states as defined by TMF622 and extended to meet MEF
                requirements. These states are used to convey the Product Order
                status during the lifecycle of the Product Order.
            stateChange:
              description: State change for the Product Order
              items:
                $ref: '#/components/schemas/MEFProductOrderStateChange'
              type: array
          required:
            - id
            - orderDate
            - productOrderItem
            - state
          type: object
    ProductOrderItem:
      allOf:
        - $ref: '#/components/schemas/MEFProductOrderItem_Common'
        - description: >
            An identified part of the order. A product order is decomposed into
            one or more order items.
          properties:
            charge:
              description:
                The Charges associated to this Product Order Item. This list
                contains all completed Charges containing accepted Charge Items
                initiated by the Seller. Any Charge that is withdrawn or
                containing all declined Charge Items must not be included in
                this list.
              items:
                $ref: '#/components/schemas/MEFProductOrderChargeRef'
              type: array
            completionDate:
              description: >-
                Identifies the date the Seller completed the Product Order
                Item. Set by Seller when all Product Order Items have reached a
                terminal state. No further action is permitted on the Product
                Order after this state is reached.
              format: date-time
              type: string
            expectedCompletionDate:
              description: >
                Identifies the date the Seller expects to complete the Product
                Order Item.
              format: date-time
              type: string
            expediteAcceptedIndicator:
              default: false
              description: >-
                Indicates if the Seller has accepted the Buyer's Expedite
                request. See MEF 57.2 section 7.3 for a description of the
                interaction between the Buyer and Seller. If this is set to
                true, the Seller provides the costs to expedite the Product
                Order in the charge attribute
              type: boolean
            itemTerm:
              items:
                $ref: '#/components/schemas/MEFItemTerm'
              description: Term of the Product Order Item
              maxItems: 1
              type: array
            milestone:
              description:
                Milestones associated to the Product Order Item. Set by the
                Seller when a Milestone occurs.
              items:
                $ref: '#/components/schemas/MEFMilestone'
              type: array
            state:
              $ref: '#/components/schemas/MEFProductOrderItemStateType'
              description: State of the Product Order Item
            stateChange:
              description: State change for the Product Order Item
              items:
                $ref: '#/components/schemas/MEFProductOrderItemStateChange'
              type: array
            terminationError:
              description: >-
                When the Seller cannot process the request, the Seller returns
                a text-based list of reasons here.
              items:
                $ref: '#/components/schemas/TerminationError'
              type: array
          type: object
    ProductOrder_Common:
      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,
      properties:
        externalId:
          description:
            An identifier for this order within the Buyer's enterprise.
          type: string
        note:
          items:
            $ref: '#/components/schemas/Note'
          type: array
          description: >
            Free form text to clarify or explain the Product Order. Only new
            notes can be entered. The Buyer and Seller cannot modify an
            existing Note. The Buyer creates a Note when creating the Product
            Order or when updating it. The Seller may add notes at any time.
        projectId:
          description: >-
            An identifier that is used to group Product Orders that is
            important to the Buyer. A projectId can be used to relate multiple
            Product Orders together.
          type: string
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            in this context.

            (e.g. Product Order Contact: role=productOrderContact;

            Seller Contact: role=sellerContact)

            Providing the Product Order Contact in the request is mandatory.
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          minItems: 1
          type: array
      required:
        - relatedContactInformation
      type: object
    ProductOrder_Create:
      allOf:
        - $ref: '#/components/schemas/ProductOrder_Common'
        - 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,completionDate,orderDate,state,stateChange,cancellationDate,cancellationReason
          properties:
            productOrderItem:
              description: |
                Items contained in the Product Order.
              items:
                $ref: '#/components/schemas/MEFProductOrderItem_Create'
              minItems: 1
              type: array
          required:
            - productOrderItem
          type: object
    ProductOrder_Find:
      description: >-
        Structure to define GET without id response. A list of productOrder
        matching request criteria. Provides Product order summary view.
      properties:
        cancellationDate:
          description: >-
            Identifies the date the Seller cancelled the Order. Set by Seller
            when the Order is moved to the cancelled state.
          format: date-time
          type: string
        completionDate:
          description: >-
            Identifies the date that all Product Order Items within the Order
            have reached a terminal state. No further action is permitted on
            the Product Order after this notification.
          format: date-time
          type: string
        externalId:
          description: >-
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterward).
          type: string
        id:
          description: >-
            Unique identifier for the order that is generated by the Seller
            when the order is initially accepted via an API.
          type: string
        orderDate:
          description: Date when the Product Order was created
          format: date-time
          type: string
        projectId:
          description: >-
            An identifier that is used to group Product Orders that is
            important to the Buyer. A projectId can be used to relate multiple
            Product Orders together.
          type: string
        state:
          $ref: '#/components/schemas/MEFProductOrderStateType'
          description: >-
            The states as defined by TMF622 and extended to meet MEF
            requirements. These states are used to convey the Product Order
            status during the lifecycle of the Product Order.
      required:
        - id
        - orderDate
        - state
      type: object
    ProductOrder_Update:
      description:
        A request initiated by the Buyer to update Product Order and/or Product
      properties:
        externalId:
          description:
            An identifier for this Product Order within the Buyer's enterprise.
          type: string
        note:
          description: >
            Free form text to clarify or explain the Product Order. Only new
            notes can be entered. The Buyer and Seller cannot modify an
            existing Note. The Buyer creates a Note when creating the Product
            Order or when updating it. The Seller may add notes at any time.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        productOrderItem:
          description: |
            Order Item attributes that may be updated
          items:
            $ref: '#/components/schemas/MEFProductOrderItem_Update'
          type: array
        projectId:
          description: >-
            An identifier that is used to group Product Orders that is
            important to the Buyer. A projectId can be used to relate multiple
            Product Orders together.
          type: string
        relatedContactInformation:
          description: >
            Contact information of an individual or organization playing a role
            in this context. Buyer can modify, add, or delete only
            Buyer-related contacts.
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          minItems: 1
          type: array
      type: object
    ProductRelationship:
      description: >-
        A relationship to an existing Product. The requirements for usage for
        given Product are described in the Product Specification.
      properties:
        href:
          description: >-
            Hyperlink to the product in Seller's inventory that is referenced
            Hyperlink MAY be used when providing a response by the Seller
            Hyperlink MUST be ignored by the Seller in case it is provided by
            the Buyer in a request
          type: string
        id:
          description: unique identifier of the related Product
          type: string
        relationshipType:
          description: >
            Specifies the type (nature) of the relationship to the related
            Product. The nature of required relationships varies for Products
            of different types. For example, a UNI or ENNI Product may not have
            any relationships, but an Access E-Line may have two mandatory
            relationships (related to the UNI on one end and the ENNI on the
            other). More complex Products such as multipoint IP or Firewall
            Products may have more complex relationships. As a result, the
            allowed and mandatory `relationshipType` values are defined in the
            Product Specification.
          type: string
      required:
        - id
        - relationshipType
      type: object
    RelatedContactInformation:
      description: |
        Contact information of an individual or organization playing a role for
        this Order Item. The rule for mapping a represented attribute value to a
        `role` is to use the _lowerCamelCase_ pattern e.g. 
        - Buyer Order Item Contact: `role=buyerOrderItemContact` 
        - Buyer Implementation Contact: `role=buyerImplementationContact` 
        - Buyer Technical Contact: `role=buyerTechnicalContact`
      properties:
        emailAddress:
          description: Email address
          type: string
        name:
          description: Name of the contact
          type: string
        number:
          description: Phone number
          type: string
        numberExtension:
          description: Phone number extension
          type: string
        organization:
          description: The organization or company that the contact belongs to
          type: string
        postalAddress:
          $ref: '#/components/schemas/FieldedAddress'
          description: >-
            Identifies the postal address of the person or office to be
            contacted.
        role:
          description: A role the party plays in a given context.
          type: string
      required:
        - emailAddress
        - name
        - number
        - role
      type: object
    RelatedPlaceRefOrValue:
      description:
        Place defines the places where the product order must be done.
      discriminator:
        mapping:
          FieldedAddress: '#/components/schemas/FieldedAddress'
          FormattedAddress: '#/components/schemas/FormattedAddress'
          GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel'
          GeographicAddressRef: '#/components/schemas/GeographicAddressRef'
          GeographicSiteRef: '#/components/schemas/GeographicSiteRef'
          MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint'
        propertyName: '@type'
      properties:
        '@schemaLocation':
          description: >-
            A URI to a JSON-Schema file that defines additional attributes and
            relationships. May be used to define additional related place
            types. Usage of this attribute must be agreed upon between Buyer
            and Seller.
          format: uri
          type: string
        '@type':
          description: >
            This field is used as a discriminator and is used between different
            place representations. This type might discriminate for additional
            related place as defined in '@schemaLocation'.
          type: string
        role:
          description: Role of this place
          type: string
      required:
        - '@type'
        - role
      type: object
    TerminationError:
      description: >-
        This indicates an error that caused an Item to be terminated. The code
        and propertyPath should be used like in Error422.
      properties:
        code:
          $ref: '#/components/schemas/Error422Code'
          description: |
            One of the following error codes:
              - missingProperty: The property the Seller has expected is not present in the payload
              - invalidValue: The property has an incorrect value
              - invalidFormat: The property value does not comply with the expected value format
              - referenceNotFound: The object referenced by the property cannot be identified in the Seller system
              - unexpectedProperty: Additional property, not expected by the Seller has been provided
              - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold.
              - otherIssue: Other problem was identified (detailed information provided in a reason)
        propertyPath:
          description: >
            A pointer to a particular property of the payload that caused the
            validation issue. It is highly recommended that this property
            should be used.

            Defined using JavaScript Object Notation (JSON) Pointer
            (https://tools.ietf.org/html/rfc6901).
          type: string
        value:
          description: Text to describe the reason of the termination.
          type: string
      type: object
    TimeUnit:
      description: |
        Represents a unit of time.
      enum:
        - calendarMonths
        - calendarDays
        - calendarHours
        - calendarMinutes
        - businessDays
        - businessHours
        - businessMinutes
      type: string
