openapi: 3.0.1
info:
  description: |

    Quote API allows the Buyer to submit a request to find out how much the installation
    of an instance of a Product Offering, an update to an existing Product, or
    a disconnect of an existing Product will cost.

    List of supported Use Cases:
    - Create Quote
    - Retrieve Quote List
    - Retrieve Quote by Quote Identifier
    - Cancel Quote by Quote Identifier
    - Decline Quote by Quote Identifier
    - Register for Quote Notification
 
    Copyright 2021 MEF Forum and its contributors.

    This file includes content based on the TM Forum Quote Management API
    (TMF648 v4.0.0) available at
    https://github.com/tmforum-apis/TMF648_QuoteManagement, 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: Quote Management
  version: 8.0.1
servers:
  - url: 'https://{serverBase}/mefApi/sonata/quoteManagement/v8/'
    variables:
      serverBase:
        default: mef.net
        description: The base of Seller's URL.
tags:
  - name: quote
  - name: quote operations
  - name: events subscription
paths:
  /quote:
    get:
      description: >-
        The Buyer requests a list of Quotes from the Seller based on a set of
        filter criteria (as described in MEF 80).  For each Quote returned, the
        Seller also provides a Quote Identifier that uniquely identifies this
        Quote within the Seller. The order of the elements returned to the
        Buyer is defined by the Seller (e.g. natural order) and does not change
        between the pages.
      operationId: listQuote
      parameters:
        - description: >-
            State of the Quote to be retrieved. See `MEFQuoteStateType`
            definition for details
          in: query
          name: state
          schema:
            enum:
              - accepted
              - acknowledged
              - answered
              - approved.orderable
              - approved.orderableAlternate
              - cancelled
              - unableToProvide
              - declined
              - expired
              - inProgress
              - inProgress.draft
              - rejected
            type: string
        - description: >-
            Level of the quote - could be budgetary,
            firmSubjectToFeasibilityCheck, firm
          in: query
          name: quoteLevel
          schema:
            enum:
              - budgetary
              - firmSubjectToFeasibilityCheck
              - firm
            type: string
        - description: >-
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterward)
          in: query
          name: externalId
          schema:
            type: string
        - description: >-
            An identifier that is used to group Quotes that represent a unit of
            functionality that is important to a Buyer. A Project can be used
            to relate multiple Quotes together
          in: query
          name: projectId
          schema:
            type: string
        - description: Date when the quote was created - greater than
          in: query
          name: quoteDate.gt
          schema:
            format: date-time
            type: string
        - description: Date when the quote was created - lower than
          in: query
          name: quoteDate.lt
          schema:
            format: date-time
            type: string
        - description: Requested Quote Completion Date - greater than
          in: query
          name: requestedQuoteCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: Requested Quote Completion Date - lower than
          in: query
          name: requestedQuoteCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description: Expected Quote Completion Date - greater than
          in: query
          name: expectedQuoteCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: Expected Quote Completion Date - lower than
          in: query
          name: expectedQuoteCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            Date when the Quote State was set to one of the Completion States -
            greater than
          in: query
          name: effectiveQuoteCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            Date when the Quote State was set to one of the Completion States -
            lower than
          in: query
          name: effectiveQuoteCompletionDate.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 resources to be provided in response
          in: query
          name: offset
          schema:
            type: integer
        - description: Requested number of resources to be provided in response
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Quote_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 records. E.g. if there are 50
                matching records 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 records 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: List or find Quote objects
      tags:
        - quote
    post:
      description: This operation creates a Quote entity.
      operationId: createQuote
      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/Quote_Create'
        description: The Quote to be created
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Quote'
          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 in the
            Quote or one of the Quote items
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Send request to perform a quotation
      tags:
        - quote
      x-codegen-request-body-name: quote
  '/quote/{id}':
    get:
      description: >-
        This operation retrieves a Quote entity. Attribute selection is enabled
        for all first level attributes.
      operationId: retrieveQuote
      parameters:
        - description: Identifier of the Quote
          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 the 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/Quote'
          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 Quote by ID
      tags:
        - quote
  /cancelQuote:
    post:
      description: This operation sends a cancellation request.
      operationId: cancelQuote
      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/QuoteOperationData'
        description: The details of the Quote Operation
        required: true
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/QuoteOperationData'
          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
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description: >-
            Unprocessable entity due to the business validation problems in the
            Quote or one of the Quote items
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Cancels a Quote
      tags:
        - quote operations
      x-codegen-request-body-name: cancelQuote
  /rejectQuote:
    post:
      description: This operation sends a rejection request.
      operationId: rejectQuote
      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/QuoteOperationData'
        description: The details of the Quote Operation
        required: true
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/QuoteOperationData'
          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
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description: >-
            Unprocessable entity due to the business validation problems in the
            Quote or one of the Quote items
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Rejects a Quote
      tags:
        - quote operations
      x-codegen-request-body-name: rejectQuote
  /hub:
    post:
      description: >-
        A request initiated by the Buyer to instruct the Seller to send
        notifications of Quote state changes in the event the Seller uses the
        Deferred Response pattern to respond to a Create Quote request.
      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 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/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  (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
        '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. Used in case Seller is not supporting
            Notification mechanism
      summary: Allows the Buyer to register to Quote state change notifications
      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 EventSubscription
          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 the responding
            entity
             represents more than one Seller.

            Reference: MEF 79 (Sn 8.8)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '204':
          description:
            'Deleted (https://tools.ietf.org/html/rfc7231#section-6.3.5)'
        '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. Used in case Seller is not supporting
            Notification mechanism
      summary: Unregister a listener
      tags:
        - events subscription
components:
  schemas:
    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:
          description: Time unit type
          $ref: '#/components/schemas/TimeUnit'
      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:
        reason:
          description: >-
            Text that explains the reason for the error. This can be shown to a
            client user.
          maxLength: 255
          type: string
        message:
          description: >-
            Text that provides mode details and corrective actions related to
            the error. This can be shown to a client user.
          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:
              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
              $ref: '#/components/schemas/Error400Code'
          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:
              description: >-
                One of the following error codes:

                - missingCredentials: No credentials provided.

                - invalidCredentials: Provided credentials are invalid or
                expired
              $ref: '#/components/schemas/Error401Code'
          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:
              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
              $ref: '#/components/schemas/Error403Code'
          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)
    Error422:
      allOf:
        - $ref: '#/components/schemas/Error'
        - properties:
            code:
              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)
              $ref: '#/components/schemas/Error422Code'
            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. (https://tools.ietf.org/html/rfc7231#section-6.6.2)'
    EventSubscription:
      description: |
        This resource is used to manage notification subscription.
        Reference: MEF 79 (Sn 8.3)
      properties:
        query:
          description: >-
            The value provided by the Buyer in `EventSubscriptionInput` during
            notification registration
        callback:
          description: >-
            The value provided by the Buyer in `EventSubscriptionInput` during
            notification registration
          type: string
        id:
          description: >-
            An identifier of the event subscription assigned by the Seller when
            a resource is created.
          type: string
      required:
        - callback
        - id
      type: object
    EventSubscriptionInput:
      description: This class is used to register for Notifications.
      properties:
        query:
          description: >-
            This attribute is used to define to which type of events to
            register to. Example: "query":"eventType = quoteStateChangeEvent".
            To subscribe for more than one event type, put the values separated
            by comma:
            `eventType=quoteStateChangeEvent,quoteItemStateChangeEvent`. The
            possible values are enumerated by the 'QuoteEventType' in
            quoteNotification.api.yaml. An empty query is treated as specifying
            no filters - ending in  subscription for all event types.
          type: string
        callback:
          description: >-
            This callback value must be set to *host* property from Buyer
            Notification API (quoteNotification.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": "http://buyer.co/listenerEndpoint", the
            state change event notification will be sent to:
            `http://buyer.co/listenerEndpoint/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent`
          type: string
      required:
        - callback
      type: object
    FieldedAddress:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            country:
              description: Country that the address is in
              type: string
            streetType:
              description: >-
                Alley, avenue, boulevard, brae, crescent, drive, highway, lane,
                terrace, parade, place, tarn, way, wharf
              type: string
            postcodeExtension:
              description: >-
                An extension of a postal code. E.g. the part following the dash
                in an american urban property address
              type: string
            city:
              description: The city that the address is in
              type: string
            streetNr:
              description: >-
                Number identifying a specific property on a public street. It
                may be combined with streetNrLast for ranged addresses.
              type: string
            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
            streetNrLast:
              description:
                Last number in a range of street numbers allocated to a
                property
              type: string
            streetNrSuffix:
              description: The first street number suffix
              type: string
            streetName:
              description: Name of the street or other street type
              type: string
            stateOrProvince:
              description: The State or Province that the address is in
              type: string
            streetNrLastSuffix:
              description: Last street number suffix for a ranged address
              type: string
            geographicSubAddress:
              description: >-
                Additional fields used to specify an address, as detailed as
                possible.
              $ref: '#/components/schemas/GeographicSubAddress'
            streetSuffix:
              description: A modifier denoting a relative direction
              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:
            country:
              description: Country that the address is in
              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
            city:
              description: The city that the address is in
              type: string
            addrLine2:
              description: The second address line in a formatted address
              type: string
            addrLine1:
              description: The first address line in a formatted address
              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
          required:
            - addrLine1
            - city
            - country
          type: object
      description: >-
        A type of Address that has discrete fields for each type of boundary or
        an identifier with the exception of the 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: >-
                The unique reference to an Address as provided by the
                Administrative Authority.
              type: string
            externalReferenceType:
              description: >-
                The organization or standard from the organization that
                administers this Geographic Address Label ensuring it is unique
                within the Administrative Authority. The value(s) to be used
                are to be agreed upon 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. 

        Reference: MEF 79 (Sn 8.9.4), MEF 79.0.2 (Sn 8.9.4)
    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
        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
        levelType:
          description: Describes level types within a building
          type: string
        levelNumber:
          description:
            'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT
            2'
          type: string
        privateStreetNumber:
          description: Private streets numbers internal to a private street
          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
      type: object
    MEFBuyerQuoteLevel:
      description: >-
        An indication of whether the Buyer's Quote Request is for a Budgetary
        or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level
        contains the possible values and may be set by the Buyer on the
        Request. All Quote Items in a Quote have the same Quote Level.
      enum:
        - budgetary
        - firm
      type: string
    MEFChargePeriod:
      description: Used for a recurring charge to indicate period.
      enum:
        - hour
        - day
        - week
        - month
        - year
      type: string
    MEFEndOfTermAction:
      description:
        The action that needs to be taken by the Seller once the term expires.
      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 upon 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.
        Reference: MEF 79 (Sn 8.9.5)
    MEFItemTerm:
      description: >-
        The terms of the Quote Item. Used to describe a term (also known as
        commitment) for a Quote Item. Each Quote Item in a Quote Request could
        have a different Requested Quote Item Term. The Buyer specifies the
        longest term that they would accept. The Buyer may be willing to accept
        a shorter term. If the Seller responds with a term longer than the
        Buyer's request, it is treated as an alternate response.
      properties:
        duration:
          description: Duration of the term
          $ref: '#/components/schemas/Duration'
        endOfTermAction:
          description: >-
            The action that needs to be taken by the Seller once the term
            expires
          $ref: '#/components/schemas/MEFEndOfTermAction'
        name:
          description: Name of the term
          type: string
        description:
          description: Description of the term
          type: string
        rollInterval:
          description: >-
            The recurring period that the Buyer is willing to pay to the end of
            upon disconnecting the Product after the original term has expired.
            If `endOfTermAction` is equal to `roll` then `rollInterval` MUST be
            specified. If `endOfTermAction` is equal to `autoRenew` or
            `autoDisconnect`, then `rollInterval` MUST NOT be specified.
          $ref: '#/components/schemas/Duration'
      required:
        - duration
        - endOfTermAction
        - name
      type: object
    MEFPriceType:
      description:
        Indicates if the price is for recurring or non-recurring charges.
      enum:
        - recurring
        - nonRecurring
        - usageBased
      type: string
    MEFProductActionType:
      description: |
        Product action to be applied to the Quote Item. This corresponds to the
        Order Item Action when an associated product is ordered.

        | MEFProductActionType | MEF 80     |
        |--------------------- | ---------- |
        | 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 that uniquely identifies the type of the
            product that is the subject of the POQ Request. In the case of the
            MEF product, this is the URN provided in the Product Specification.
          type: string
      required:
        - '@type'
      type: object
    MEFQuoteItemStateType:
      description: >
        Possible values for the status of a QuoteItem.

        Following mapping has been used between `MEFQuoteItemStateType` and MEF
        80:


        | MEFQuoteItemStateType       | MEF 80                            |

        | ----------------------------| --------------------------------- |

        | answered                    | ANSWERED                          |

        | acknowledged                | ACKNOWLEDGED                      |

        | approved.orderable          | ORDERABLE                         |

        | approved.orderableAlternate | ORDERABLE_ALTERNATE               |

        | inProgress                  | IN_PROGRESS                       |

        | inProgress.draft            | IN_PROGRESS_DRAFT                 |

        | abandoned                   | ABANDONED                         |

        | rejected                    | REJECTED                          |

        | unableToProvide             | UNABLE_TO_PROVIDE                 |
      enum:
        - answered
        - acknowledged
        - approved.orderable
        - approved.orderableAlternate
        - inProgress
        - inProgress.draft
        - rejected
        - abandoned
        - unableToProvide
      type: string
    MEFQuoteItem_Common:
      description: >-
        Quote items describe an action to be performed on a productOffering or
        a product in order to get pricing elements and conditions.
      properties:
        requestedQuoteItemTerm:
          description: >-
            The terms of the Quote Item. Used to describe a term (also known as
            commitment) for a Quote Item. Each Quote Item in a Quote Request
            could have a different Requested Quote Item Term. The Buyer
            specifies the longest term that they would accept. The Buyer may be
            willing to accept a shorter term. If the Seller responds with a
            term longer than the Buyer's request, it is treated as an alternate
            response.
          $ref: '#/components/schemas/MEFItemTerm'
        note:
          description: >-
            Free form text associated with the quote item. Only useful in
            processes involving human interaction. Not applicable for the
            automated process.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        product:
          description:
            The Buyer's existing Product for which the quote is being
            requested.
          $ref: '#/components/schemas/MEFProductRefOrValueQuote'
        productOfferingQualificationItem:
          description: A reference to a previously done POQ with item specified
          $ref: '#/components/schemas/ProductOfferingQualificationItemRef'
        relatedContactInformation:
          description: >
            Contact information of an individual or organization playing a role
            for this Quote. If `instantSyncQuote` equals `false`  then 'Quote
            Item Technical Contact' must be specified (`role:
            quoteItemTechnicalContact`). If `instantSyncQuote` equals `false`
            and the Quote Item requires a location,  the Buyer MUST provide the
            Quote Item Location Contact Information `role:
            quoteItemLocationContact`.
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        agreementName:
          description: >-
            Name of the agreement. The name is unique between the Buyer and the
            Seller.
          type: string
        action:
          description: >-
            Product action to be applied to this Quote Item. This corresponds
            to the Order Item Action when an associated product is ordered.
          $ref: '#/components/schemas/MEFProductActionType'
        dealReference:
          description: >-
            A pre-agreed pricing modifier reference that the Seller is offering
            to the Buyer which will impact the price.
          type: string
        id:
          description: >-
            Identifier of the quote item (generally it is a sequence number 01,
            02, 03, ...)
          type: string
        requestedQuoteItemInstallationInterval:
          description: The installation interval requested by the Buyer.
          $ref: '#/components/schemas/Duration'
        quoteItemRelationship:
          description: A relationship from item within a quote
          items:
            $ref: '#/components/schemas/QuoteItemRelationship'
          type: array
      required:
        - action
        - id
      type: object
    MEFQuoteItem_Create:
      allOf:
        - $ref: '#/components/schemas/MEFQuoteItem_Common'
        - description: >-
            A quote item describes an action to be performed on a
            productOffering or a product in order to get pricing elements and
            condition. The modeling pattern introduces the
            `MEFQuoteItem_Common` supertype to aggregate attributes that are
            common to both `QuoteItem` and `MEFQuoteItem_Create`. In this case
            the create type has a subset of attributes of the response type and
            does not introduce any new, thus the `MEFQuoteItem_Create` type has
            an empty definition.
          type: object
    MEFQuoteStateChange:
      description: >-
        Holds the reached state, reasons, and associated date the Quote state
        changed, populated by the Seller.
      properties:
        changeReason:
          description: Additional comment related to state change
          type: string
        changeDate:
          description: The date on when the state was reached
          format: date-time
          type: string
        state:
          description: A state reached at the change date
          $ref: '#/components/schemas/MEFQuoteStateType'
      required:
        - changeDate
        - state
      type: object
    MEFQuoteStateType:
      description: |
        Possible values for the status of a Quote.
        Following mapping has been used between `MEFQuoteStateType` and MEF 80:

         | QuoteStateType                            | MEF 80                            |
         | ----------------------------------------- | --------------------------------- |
         | accepted                                  | ACCEPTED                          |
         | acknowledged                              | ACKNOWLEDGED                      |
         | answered                                  | ANSWERED                          |
         | approved.orderable                        | ORDERABLE                         |
         | approved.orderableAlternate               | ORDERABLE_ALTERNATE               |
         | declined                                  | DECLINED                          |
         | expired                                   | EXPIRED                           |
         | cancelled                                 | CANCELLED                         |
         | unableToProvide                           | UNABLE_TO_PROVIDE                 |
         | inProgress                                | IN_PROGRESS                       |
         | inProgress.draft                          | IN_PROGRESS_DRAFT                 |
         | rejected                                  | REJECTED                          |
      enum:
        - accepted
        - acknowledged
        - answered
        - approved.orderable
        - approved.orderableAlternate
        - cancelled
        - unableToProvide
        - declined
        - expired
        - inProgress
        - inProgress.draft
        - rejected
      type: string
    MEFSellerQuoteLevel:
      description: >-
        An indication of whether the Seller's Quote Response is Budgetary, Firm
        - Subject to Feasibility Check, or Firm. The Seller Quote Level is
        provided by the Seller when responding to a Quote request.  This
        represents the lowest Quote Item Level of all Quote Items included in
        the Quote.
      enum:
        - budgetary
        - firmSubjectToFeasibilityCheck
        - firm
      type: string
    MEFSubUnit:
      description: Allows for subunit 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
    MEFProductRefOrValueQuote:
      description: >-
        One or more services sold to a Buyer by a Seller. A particular Product
        Offering defines the technical and commercial attributes and behaviors
        of a Product.
      properties:
        id:
          description: >
            The unique identifier of an in-service Product that is the
            quotation's 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
        href:
          description: >
            Hyperlink to the product in Seller's inventory that is the
            quotation's subject. 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
        place:
          description: >-
            A list of places that are related to the Product. For example an
            installation location
          items:
            $ref: '#/components/schemas/RelatedPlaceRefOrValue'
          type: array
        productConfiguration:
          description: >-
            Technical attributes for the Product that would be delivered to
            fulfill the Quote Item.
          $ref: '#/components/schemas/MEFProductConfiguration'
        productOffering:
          description: >-
            A particular Product Offering defines the technical and commercial
            attributes and behaviors of a Product.
          $ref: '#/components/schemas/ProductOfferingRef'
        productRelationship:
          description: >-
            A list of references to existing products that are related to the
            Product that would be delivered to fulfill the Quote Item
          items:
            $ref: '#/components/schemas/ProductRelationshipWithGrouping'
          type: array
      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:
        date:
          description: Date of the note
          format: date-time
          type: string
        author:
          description: Author of the note
          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:
          description: Indicates if the note is from Buyer or Seller
          $ref: '#/components/schemas/MEFBuyerSellerType'
        text:
          description: Text of the note
          type: string
      required:
        - author
        - date
        - id
        - source
        - text
      type: object
    MEFBuyerSellerType:
      description: Indicates if the note is from Buyer or Seller.
      enum:
        - buyer
        - seller
      type: string
    Price:
      description: >-
        Provides all amounts (tax included, duty-free, tax rate), used currency
        and percentage to apply for Price Alteration.
      properties:
        taxRate:
          description:
            'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.'
          format: float
          type: number
        taxIncludedAmount:
          description:
            All taxes included amount (expressed in the given currency)
          $ref: '#/components/schemas/Money'
        dutyFreeAmount:
          description:
            All taxes excluded amount (expressed in the given currency)
          $ref: '#/components/schemas/Money'
      required:
        - dutyFreeAmount
      type: object
    ProductOfferingQualificationItemRef:
      description: >-
        It's a productOfferingQualification item that has been executed
        previously.
      properties:
        productOfferingQualificationId:
          description:
            Unique identifier of related Product Offering Qualification.
          type: string
        alternateProductProposalId:
          description: >-
            A unique identifier for the Alternate Product Proposal assigned by
            the Seller, if the referenced qualification comes from an alternate
            product proposal.
          type: string
        productOfferingQualificationHref:
          description: Reference of the related Product Offering Qualification.
          type: string
        id:
          description: Id of an item of a product offering qualification
          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.

        The id of the Product offering is assigned by the Seller. The Buyer and
        the Seller exchange information about offerings' ids during the
        onboarding process.
      properties:
        id:
          description: unique identifier of the Product Offering.
          type: string
        href:
          description: >-
            Hyperlink to a Product Offering in Sellers catalog. In case Seller
            is not providing catalog capabilities this field is not used. The
            catalog API definition is provided by the Seller to Buyer during
            onboarding Hyperlink MAY be used when providing response by the
            Seller Hyperlink MUST be ignored by the Seller in case it is
            provided by the Buyer in a requestHyperlink reference
          type: string
      required:
        - id
      type: object
    ProductRelationshipWithGrouping:
      description: >-
        A relationship to an existing Product. The requirements for usage for
        given Product are described in the Product Specification. The
        "WithGrouping" flavor of the Product Relationship allows for providing
        a list of related product identifiers within a single Product
        Relationship. This can be later used while processing the request as
        defined in the Product Specification. The `groupingKey` attribute is
        used to achieve this behavior in the API by marking the list of
        `ProductRelationshipWithGroupings` within a `product` with a common
        key.
      properties:
        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
        id:
          description: unique identifier of a Product that is referenced.
          type: string
        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
        groupingKey:
          description: >
            MEF 80 Introduces a list of related ids for the
            ProductRelationship. For sake of TMF compliance, a `groupingKey` is
            introduced to retain id as a simple attribute. Ids from
            relationships having the same `groupingKey` and `relationshipType`
            MUST be treated as a list of identifiers.

            Reference: MEF 80 (Sn 8.1.8.)
          type: string
      required:
        - id
        - relationshipType
      type: object
    Quote:
      allOf:
        - $ref: '#/components/schemas/Quote_Common'
        - description: >-
            Quote can be used to negotiate service and product acquisition or
            modification between a customer and a service provider. Quote
            contains a list of quote items, a reference to a customer, a list
            of productOfferings, and attached prices and conditions.
          properties:
            effectiveQuoteCompletionDate:
              description: >-
                Date when the Quote State was set to one of the Completion
                States.
              format: date-time
              type: string
            expectedQuoteCompletionDate:
              description: >-
                This is the date provided by the Seller to indicate the date by
                which the Quote is expected to reach a Quote Completion State
              format: date-time
              type: string
            validFor:
              description: >-
                Quote validity period. For use in the context of this
                attribute, only the endDateTime attribute must be used.
              $ref: '#/components/schemas/TimePeriod'
            quoteLevel:
              description: >-
                An indication of whether the Seller's Quote Response is
                Budgetary, Firm - Subject to Feasibility Check, or Firm. The
                Seller Quote Level is provided by the Seller when responding to
                a Quote request.  This represents the lowest Quote Item Level
                of all Quote Items included in the Quote.
              $ref: '#/components/schemas/MEFSellerQuoteLevel'
            quoteItem:
              description: >-
                An item of the quote - it is used to describe an operation on a
                product to be quoted
              items:
                $ref: '#/components/schemas/QuoteItem'
              minItems: 1
              type: array
            stateChange:
              description: State change for the Quote
              items:
                $ref: '#/components/schemas/MEFQuoteStateChange'
              type: array
            id:
              description: Unique identifier - attributed by quoting system
              type: string
            href:
              description: >
                Hyperlink representing this Quote. Hyperlink MAY be used when
                providing a response by the Seller
              type: string
            state:
              description: The state of the Quote.
              $ref: '#/components/schemas/MEFQuoteStateType'
            quoteDate:
              description: Date and time when the quote was created
              format: date-time
              type: string
          required:
            - id
            - quoteDate
            - quoteItem
          type: object
    QuoteItem:
      allOf:
        - $ref: '#/components/schemas/MEFQuoteItem_Common'
        - description: >-
            Quote items describe an action to be performed on a productOffering
            or a product in order to get pricing elements and conditions.
          properties:
            terminationError:
              description: >-
                When the Seller cannot process the Quote Item Request, the
                Seller returns a text-based list of reasons here.
              items:
                $ref: '#/components/schemas/TerminationError'
              type: array
            quoteItemInstallationInterval:
              description: >-
                Quote Item Installation Interval as proposed by the Seller for
                the Quote.
              $ref: '#/components/schemas/Duration'
            subjectToFeasibilityCheck:
              description: >-
                For a Firm Quote Level indicates if the pricing requires a
                Feasibility Check. The Seller indicates if the Quote Item
                requires a Feasibility Check. This is not used for a Budgetary
                Quote Level.
              type: boolean
            quoteItemTerm:
              description: >-
                Quote Item Term as defined by the Seller and part of the Quote
                for the Quote Item.
              items:
                $ref: '#/components/schemas/MEFItemTerm'
              maxItems: 1
              type: array
            state:
              description: The state of the Quote Item.
              $ref: '#/components/schemas/MEFQuoteItemStateType'
            quoteItemPrice:
              description: Price for this quote item
              items:
                $ref: '#/components/schemas/QuotePrice'
              type: array
          required:
            - state
          type: object
    QuoteItemRelationship:
      description: >-
        Used to describe the relationship between quote items. These
        relationships could have an impact on pricing and conditions
      properties:
        relationshipType:
          description: >-
            Relationship type as relies on, bundles, etc... MEF: Specifies the
            nature of the relationship to the related Quote Items. 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
            Relationship Nature values are defined in the Product
            Specification.
          type: string
        id:
          description: ID of the related quote item (must be in the same quote)
          type: string
      required:
        - id
        - relationshipType
      type: object
    QuoteOperationData:
      description:
        Request for operation on an existing Quote (cancel or decline)
      properties:
        reason:
          description: >-
            Allows the Buyer to specify a reason for the Cancel or Decline
            Quote request.
          type: string
        quoteId:
          description: >-
            Unique (within the Seller quoting domain) identifier for the quote,
            as attributed by the Seller.
          type: string
      required:
        - quoteId
      type: object
    QuotePrice:
      description: Description of price and discount awarded
      properties:
        unitOfMeasure:
          description: >-
            Unit of Measure if price depending on it (Gb, SMS volume, etc..)
            MEF: if Quote Item Price Type equals usageBased
          type: string
        price:
          description: The associated price
          $ref: '#/components/schemas/Price'
        name:
          description: Name of the quote/quote item price
          type: string
        priceType:
          description: >-
            Indicates if the price is for recurring, non-recurring, or usage
            based charges
          $ref: '#/components/schemas/MEFPriceType'
        description:
          description: Description of the quote/quote item price
          type: string
        recurringChargePeriod:
          description: Used for a recurring charge to indicate a period
          $ref: '#/components/schemas/MEFChargePeriod'
      type: object
    Quote_Common:
      description: >-
        Quote can be used to negotiate service and product acquisition or
        modification between a customer and a service provider. Quote contains
        a list of quote items, a reference to a customer, a list of
        productOfferings, and attached prices and conditions.
      properties:
        note:
          description: >-
            Free form text associated with the quote. Only useful in processes
            involving human interaction. Not applicable for the automated
            process.
          items:
            $ref: '#/components/schemas/Note'
          type: array
        requestedQuoteCompletionDate:
          description: >-
            This is requested date - from quote requester - to get a complete
            response for this quote
          format: date-time
          type: string
        relatedContactInformation:
          description: >-
            Party playing a role for this quote. If `instantSyncQuote` equals
            `false` 

            then the Buyer MUST specify Buyer Contact Information ('role:
            buyerContactInformation') 

            and the Seller MUST specify Seller Contact Information ('role:
            sellerContactInformation')
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        description:
          description: Description of the quote
          type: string
        externalId:
          description: >-
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterwards)
          type: string
        buyerRequestedQuoteLevel:
          description: >-
            An indication of whether the Buyer's Quote request is for a Quote
            of Budgetary or Firm level.
          $ref: '#/components/schemas/MEFBuyerQuoteLevel'
        projectId:
          description: >-
            An identifier that is used to group Quotes that represent a unit of
            functionality that is important to a Buyer. A Project can be used
            to relate multiple Quotes together.
          type: string
        instantSyncQuote:
          description: >-
            If this flag is set to true, the Buyer requests an immediate Quote
            to be provided in the response to the creation of a Quote.
          type: boolean
      required:
        - buyerRequestedQuoteLevel
        - instantSyncQuote
      type: object
    Quote_Create:
      allOf:
        - $ref: '#/components/schemas/Quote_Common'
        - description: >
            Quote can be used to negotiate service and product acquisition or
            modification between a customer and a service provider. Quote
            contains a list of quote items, a reference to a customer, a list
            of productOfferings, and attached prices and conditions.
          properties:
            quoteItem:
              description: >-
                An item of the quote - used to describe an operation on a
                product to be quoted
              items:
                $ref: '#/components/schemas/MEFQuoteItem_Create'
              minItems: 1
              type: array
          required:
            - quoteItem
          type: object
    Quote_Find:
      description: >
        This class represents a single list item for the response of
        `listQuote` operation.
      properties:
        effectiveQuoteCompletionDate:
          description:
            Date when the Quote State was set to one of the Completion States
          format: date-time
          type: string
        expectedQuoteCompletionDate:
          description: >-
            This is the date provided by the Seller to indicate expected Quote
            completion date
          format: date-time
          type: string
        requestedQuoteCompletionDate:
          description: >-
            This is requested date - from quote requester - to get a complete
            response for this quote
          format: date-time
          type: string
        quoteLevel:
          description: >-
            The level of the Quote provided by the Seller. This represents the
            lowest Quote Item Level of all Quote Items included in the Quote.
          $ref: '#/components/schemas/MEFSellerQuoteLevel'
        externalId:
          description: >-
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterward)
          type: string
        id:
          description: Unique identifier - attributed by quoting system
          type: string
        state:
          description: The state of the Quote.
          $ref: '#/components/schemas/MEFQuoteStateType'
        projectId:
          description: >-
            An identifier that is used to group Quotes that represent a unit of
            functionality that is important to a Buyer. A Project can be used
            to relate multiple Quotes together.
          type: string
        quoteDate:
          description: Date and time when the quote was created
          format: date-time
          type: string
      required:
        - state
      type: object
    RelatedContactInformation:
      description: >-
        Contact data for a person or organization that is involved in a given
        context. It is specified by the Seller (e.g. Seller Contact
        Information) or by the Buyer. 

        Reference: MEF 80 (Sn 8.1.9)
      properties:
        number:
          description: Phone number
          type: string
        emailAddress:
          description: Email address
          type: string
        role:
          description: The role of the particular contact in a given context.
          type: string
        postalAddress:
          description: >-
            Identifies the postal address of the person or office to be
            contacted.
          $ref: '#/components/schemas/FieldedAddress'
        organization:
          description: The organization or company that the contact belongs to
          type: string
        name:
          description: Name of the contact
          type: string
        numberExtension:
          description: Phone number extension
          type: string
      required:
        - emailAddress
        - name
        - number
        - role
      type: object
    RelatedPlaceRefOrValue:
      description:
        Place defines the places where the products' quotation 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:
        role:
          description: Role of this place
          type: string
        '@type':
          description: >
            This field is used as a discriminator and is used between different
            place representations. This type might discriminate for the
            additional related place as defined in '@schemaLocation'.
          type: string
        '@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
      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:
          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)
          $ref: '#/components/schemas/Error422Code'
        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
    TimePeriod:
      description: >-
        A period of time, either as a deadline (endDateTime only) a
        startDateTime only, or both.
      properties:
        startDateTime:
          description: >-
            Start of the time period, using IETC-RFC-3339 format. If you define
            a start, you must also define an end
          example: 1985-04-12T23:20:50.520Z
          format: date-time
          type: string
        endDateTime:
          description: 'End of the time period, using IETC-RFC-3339 format'
          example: 1985-04-12T23:20:50.520Z
          format: date-time
          type: string
      type: object
    TimeUnit:
      description: |
        Represents a unit of time.
        Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2)
      enum:
        - calendarMonths
        - calendarDays
        - calendarHours
        - calendarMinutes
        - businessDays
        - businessHours
        - businessMinutes
      type: string
