openapi: 3.0.1
info:
  description: |

    The Product Offering Qualification (POQ) Management API allows a Buyer to
    check whether the Seller can deliver a product or set of products from
    among their product offerings at the geographic address or a service site
    specified by the Buyer; or modify a previously purchased product.

    The following use cases are managed:
    - Create Product Offering Qualification
    - Retrieve POQ List
    - Retrieve POQ by Identifier
    - Register for POQ Notifications (note: Send POQ Notification is supported by productOfferingQualificationNotification.api.yaml)

    Copyright 2021 MEF Forum and its contributors

    This file includes content based on the TM Forum Product Offering
    Qualification API (TMF679 v4.0.0) available at
    https://github.com/tmforum-apis/TMF679_ProductOfferingQualification, 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 Offering Qualification Management
  version: 7.0.1
servers:
  - url: 'https://{serverBase}/mefApi/sonata/productOfferingQualification/v7/'
    variables:
      serverBase:
        default: mef.net
        description: The base of Seller's URL.
tags:
  - description:
      Operations for managing the Product Offering Qualification request.
    name: productOfferingQualification
  - description:
      Operations for managing the subscription for events notification.
    name: events subscription
paths:
  /hub:
    post:
      description: >-
        A request initiated by the Buyer to instruct the Seller to send
        notifications of POQ create, POQ and/or POQ Item state changes if the
        Buyer has registered for these notifications. The state change
        notifications are sent only in the Deferred response scenario as in the
        Immediate response scenario once the response to POQ Request is
        provided (create notification), there  will be no further state
        changes.  Reference: MEF 79 (section 8.4.2).
      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 which to deliver the
          information.
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/EventSubscription'
          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
        '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:
        Allows a Buyer to register to receive POQ state change notifications
      tags:
        - events subscription
      x-codegen-request-body-name: data
  '/hub/{id}':
    delete:
      description: |
        This operation is used to delete an event subscription. 
        Reference: MEF 79 (Sn 8.3)
      operationId: unregisterListener
      parameters:
        - description: Identifier 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:
            'No Content. (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
  /productOfferingQualification:
    get:
      description: >-
        The Buyer requests a list of POQs from the Seller based on a set of POQ
        filter criteria (as described in MEF79). For each POQ returned, the
        Seller also provides a POQ Identifier that uniquely identifies this POQ
        within the Seller's system. 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. If criteria for attribute X are provided, all
        returned items must match it.
      operationId: listProductOfferingQualification
      parameters:
        - description: >-
            State of the POQ to be retrieved. See `MEFPOQTaskStateType`
            definition for details
          in: query
          name: state
          schema:
            enum:
              - acknowledged
              - terminatedWithError
              - inProgress
              - done.unableToProvide
              - done.ready
            type: string
        - name: externalId
          required: false
          in: query
          description:
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterward)
          schema:
            type: string
        - description: Identifier of Buyer project associated with POQ
          in: query
          name: projectId
          schema:
            type: string
        - description: POQ expected response date is on or after this date
          in: query
          name: requestedPOQCompletionDate.gt
          schema:
            format: date-time
            type: string
        - description: POQ expected response date is on or before this date
          in: query
          name: requestedPOQCompletionDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Buyer
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for the start of POQ 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 POQ 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/ProductOfferingQualification_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 POQ. 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 POQ 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: >-
        Retrieve a list of ProductOfferingQualifications based on a set of
        criteria
      tags:
        - productOfferingQualification
    post:
      description: >-
        A request initiated by the Buyer to determine whether the Seller is
        able to deliver a product or set of products from among their product
        offerings, at the Buyer's location(s); or modify a previously purchased
        product. The Seller also provides estimated time intervals to complete
        these deliveries. Reference: MEF 79 (Sn 8.4).
      operationId: createProductOfferingQualification
      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/ProductOfferingQualification_Create'
        description: >-
          POQ content provided by the Buyer. See definition's description for
          details.
        required: true
      responses:
        '201':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/ProductOfferingQualification'
          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 business validation problems
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: Send a request to perform product offering qualification
      tags:
        - productOfferingQualification
      x-codegen-request-body-name: productOfferingQualification
  '/productOfferingQualification/{id}':
    get:
      description: >-
        The Buyer requests the full details of a single Product Offering
        Qualification based on a POQ identifier returned from  the POQ create
        (`createProductOfferingQualification`) or POQ find
        (`listProductOfferingQualification`)
      operationId: retrieveProductOfferingQualification
      parameters:
        - description:
            POQ identifier (matches `ProductOfferingQualification.id`)
          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/ProductOfferingQualification'
          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 ProductOfferingQualification by ID
      tags:
        - productOfferingQualification
components:
  schemas:
    AlternateProductOfferingProposal:
      description: >
        If in the request the Buyer has requested to have alternate product
        proposals, then this class represents a single proposal. All properties
        are assigned by the Seller.

        Reference: MEF 79 (Sn 8.4.3.2)
      properties:
        installationInterval:
          description: >
            The estimated minimum interval that the Seller requires in their
            standard process to complete the delivery of this Product from the
            time the order is placed and any precedents have been completed.
          $ref: '#/components/schemas/Duration'
        id:
          description: >
            Identifier of the Product Offering Qualification alternate
            proposal. Assigned by the Seller.
          type: string
        alternateProduct:
          description: Alternate product proposal
          $ref: '#/components/schemas/MEFAlternateProduct'
      required:
        - alternateProduct
        - id
        - installationInterval
      type: object
    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
    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)'
    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
          type: string
        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
      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 = poqCreateEvent". To
            subscribe for more than one event type, put the values separated by
            comma: `eventType=poqCreateEvent,poqStateChangeEvent`. The possible
            values are enumerated by the 'POQEventType' in
            productOfferingQualificationNotification.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
            ProductOfferingQualification Notification API
            (productOfferingQualificationNotification.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
            create event notification will be sent to:
            `https://buyer.co/listenerEndpoint/mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqCreateEvent`
          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: >-
                The type of street (e.g., 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 a US 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. MEF 79
                defines it as required for the Seller response, however in
                certain countries it is not used, so it's optional in API.
              type: string
            locality:
              description: The locality that the address is in
              type: string
            postcode:
              description: >-
                A descriptor for a postal delivery area, used to speed and
                simplify the delivery of mail (also known as zip code) 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
            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.
        Reference: MEF 79 (Sn 8.9.2)
    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 a 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: >-
                A 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
        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. Reference: MEF 79 (Sn 8.9.3)
    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)
    GeographicAddressRef:
      allOf:
        - $ref: '#/components/schemas/RelatedPlaceRefOrValue'
        - properties:
            href:
              description: >
                Hyperlink to the referenced Address. 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 Management 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 Site. 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
    MEFAlternateProduct:
      description: >-
        An alternative Product Offering that the Seller is proposing to the
        Buyer. If 1) the Buyer has set `provideAlternate=true`;  2) the Seller
        has determined that the POQ Confidence Level for this item is `yellow`
        or `red`; and  3) The Seller has alternate Products (e.g. similar but
        lower bandwidth) that may be adequate.
      properties:
        productSpecification:
          description: >-
            A reference to a Product Specification of the proposed alternate
            product
          $ref: '#/components/schemas/ProductSpecificationRef'
        productOffering:
          description: |
            A reference to the alternate product offering.
          $ref: '#/components/schemas/ProductOfferingRef'
        productConfiguration:
          description: >-
            MEFProductConfiguration is used to get MEF specific product/service
            payload. the @type is used a a discriminator.
          $ref: '#/components/schemas/MEFProductConfiguration'
      required:
        - productConfiguration
        - productOffering
      type: object
    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.
        Reference: MEF 79 (Sn 8.9.5)
    MEFPOQItemStateChange:
      description: >-
        Holds the reached state, reasons, and associated date the POQ 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 which was reached at change date
          $ref: '#/components/schemas/MEFPOQItemTaskStateType'
      required:
        - changeDate
        - state
      type: object
    MEFPOQItemTaskStateType:
      description: |
        POQ item states - The specific states are managed by the Seller based on
        its processing and/or based on the Buyer's action. The following mapping
        has been used between `MEFPOQItemTaskStateType` and MEF 79 (Sn 9.2):

        | MEFPOQItemTaskStateType | MEF79                             | Description                                                                                                                  |
        | ----------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
        | acknowledged            | N/A                               | A request has been received by the Seller and has passed basic validation.                                                   |
        | done.ready              | READY                             | POQ Item response is complete. This state does not imply that Seller is able to deliver requested item                       |
        | done.abandoned          | ABANDONED                         | Applied to a POQ Item in case the final state is not reached and any other POQ Item moved to the final state other than done |
        | terminatedWithError     | INSUFFICIENT_INFORMATION_PROVIDED | The information provided by the Buyer is insufficient for the Seller to provide POQ Item response                            |
        | inProgress              | IN_PROGRESS                       | The Seller is working on a POQ item response and the answer is not ready yet                                                 |
      enum:
        - acknowledged
        - terminatedWithError
        - inProgress
        - done.abandoned
        - done.ready
      type: string
    MEFPOQStateChange:
      description: >-
        Holds the reached state, reasons, and associated date the POQ 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 change date
          $ref: '#/components/schemas/MEFPOQTaskStateType'
      required:
        - changeDate
        - state
      type: object
    MEFPOQTaskStateType:
      description: |
        These values represent the valid states through which the product
        offering qualification can transition.

        The following mapping has been used between `MEFPOQTaskStateType` and
        MEF 79 (Sn 9.1):

        | MEFPOQTaskStateType  | MEF 79                            | Description                                                                                                                         |
        | -------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------|
        | acknowledged         | N/A                               | A request has been received by the Seller, has passed basic validation and the id was assigned.                                     |
        | done.ready           | READY                             | Reached when all items are in `done` state                                                                                          |
        | done.unableToProvide | UNABLE_TO_PROVIDE                 | This state is set when the Seller is unable to provide a Product Offering Qualification in the timeframe required by the Buyer.     |
        | terminatedWithError  | INSUFFICIENT_INFORMATION_PROVIDED | This state is achieved when a well-formed POQ request has been received, but there is insufficient information to complete the POQ. |
        | inProgress           | IN_PROGRESS                       | There is at least one POQ Item in `inProgress` state                                                                                |
      enum:
        - acknowledged
        - terminatedWithError
        - inProgress
        - done.unableToProvide
        - done.ready
      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 case of MEF
            product this is the URN provided in the Product Specification.
          type: string
      required:
        - '@type'
      type: object
    MEFProductRefOrValue:
      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:
        productSpecification:
          description:
            A reference to a Product Specification used to describe the Product
          $ref: '#/components/schemas/ProductSpecificationRef'
        productOffering:
          description: >
            A reference to the product offering. 

            MEF 79 defines the `productOffering` as mandatory for the `add`
            action,

            however, the API allows additionally the use case of providing the

            `productSpecification` instead. In this scenario, the Buyer asks if

            a particular type of product can be served and gets back from the
            Seller

            a direct or alternate `productOfferings` in response. These can be
            later used

            in Quote and Product Order steps.
          $ref: '#/components/schemas/ProductOfferingRef'
        productConfiguration:
          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.
          $ref: '#/components/schemas/MEFProductConfiguration'
        productRelationship:
          description: >-
            A list of references to existing products that are related to the
            Product that would be delivered to fulfill the POQ Item.
          items:
            $ref: '#/components/schemas/ProductRelationshipWithGrouping'
          type: array
        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
            qualification'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
        place:
          description: >-
            A list of locations that are related to the Product. For example an
            installation location
          items:
            $ref: '#/components/schemas/RelatedPlaceRefOrValue'
          type: array
      type: object
    MEFServiceabilityColor:
      description: |
        A color that indicates confidence to service the request. When the item
        state is `done.ready` the Seller **MUST** provide a value. It **MUST
        NOT** be populated for other states.


        Mapping between `ServiceabilityColor` and POQ Confidence Level:


        | ServiceabilityColor      | MEF 79       | MEF 79 semantics                                                              |
        |------------------------- | ------------ | ----------------------------------------------------------------------------- |
        | green                    | GREEN        |  The Seller has high confidence that this Product can be delivered            |
        | yellow                   | YELLOW       |  The Seller believes they can deliver the Product but is not highly confident |
        | red                      | RED          |  The Seller cannot deliver the Product as specified                           |

        Reference: MEF 79 (Sn 8.4.3.1)
      enum:
        - green
        - yellow
        - red
      type: string
    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
    ProductActionType:
      description: |
        Action to be performed on the Product Item. The action types are
        described in MEF 79 (Sn 8.4.1.1).

        The following mapping has been used between `ProductActionType` and MEF
        79:

        | ProductActionType | MEF 79     |
        |------------------ | ---------- |
        | add               | INSTALL    |
        | modify            | CHANGE     |
        | delete            | DISCONNECT |
      enum:
        - add
        - modify
        - delete
      type: string
    ProductOfferingQualification:
      allOf:
        - $ref: '#/components/schemas/ProductOfferingQualification_Common'
        - properties:
            productOfferingQualificationItem:
              description: >-
                One or more of Product Offering Qualification Items. It MUST
                contain exactly one entry for each item in the POQ request.
              items:
                $ref: '#/components/schemas/ProductOfferingQualificationItem'
              minItems: 1
              type: array
            effectiveQualificationDate:
              description: >-
                Date and time (set by the Seller) when the POQ state was set to
                one of the completion states (done.ready,
                done.unable_to_provide, terminated_with_error). The Seller MUST
                NOT provide this attribute until mentioned states are achieved.
              format: date-time
              type: string
            expectedPOQCompletionDate:
              description: >-
                The date the Seller expects to provide qualification result.
                Set by the Seller in case of providing a deferred response when
                the POQ is in an acknowledged or inProgress state.
              format: date-time
              type: string
            stateChange:
              description: >
                A log of all state transitions for the POQ. It must be in sync
                with the most recent POQ Request state.
              items:
                $ref: '#/components/schemas/MEFPOQStateChange'
              type: array
            href:
              description: >
                Hyperlink to this POQ. 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 Serviceability Request's unique identifier assigned by the
                Seller.
              type: string
            state:
              description: The state that represents the qualification status
              $ref: '#/components/schemas/MEFPOQTaskStateType'
          required:
            - id
            - productOfferingQualificationItem
            - state
          type: object
      description: >
        Represents a response to the Buyer POQ inquiry. This type defines a set
        of attributes that are assigned by the Seller while processing the
        request. A POQ response is a combination of attributes defined here
        with common attributes that are sent in the request. This type is used
        in response to an immediate request and POQ retrieval by an identifier.
        Reference MEF 79 (Sn 8.7 and 8.4.3).
    ProductOfferingQualificationItem:
      allOf:
        - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common'
        - properties:
            terminationError:
              description: >
                A list of text-based reasons the Seller MUST provide when the
                request cannot be processed. When item state is
                `terminatedWithError` the Seller **MUST** provide at least one
                termination error.
              items:
                $ref: '#/components/schemas/TerminationError'
              type: array
            serviceabilityConfidence:
              description: >-
                The level of confidence of the Seller to be able to service the
                request.  When the item state is `done.ready` the Seller
                **MUST** provide a value. It **MUST NOT** be populated for
                other states.
              $ref: '#/components/schemas/MEFServiceabilityColor'
            serviceabilityConfidenceReason:
              description: >-
                A free text description of the reason a particular color is
                being provided.
              type: string
            alternateProductOfferingProposal:
              description: >
                A list of one or more alternative Product Offerings that the
                Seller is proposing to the Buyer. If 1) the Buyer has set
                `provideAlternate=true`;  2) the Seller has determined that the
                POQ Confidence Level for this item is `yellow` or `red`;
                and  3) The Seller has alternate Products (e.g. similar but
                lower bandwidth) that may be adequate.

                **MUST NOT** be specified if 'state' is 'terminatedWithError'
                or 'done.abandoned'.
              items:
                $ref: '#/components/schemas/AlternateProductOfferingProposal'
              type: array
            installationInterval:
              description: >
                The estimated minimum interval that the Seller requires in
                their standard process to complete the delivery of this Product
                from the time the order is placed and any precedents have been
                completed. When attribute `serviceabilityConfidence` is set to
                `green` or `yellow` the Seller **MUST** populate this
                attribute. **MUST NOT** be specified if 'state' is
                'terminatedWithError' or `done.abandoned`.
              $ref: '#/components/schemas/Duration'
            guaranteedUntilDate:
              description: >
                Date until the Seller guarantees the qualification result.
                **MUST NOT** be specified if 'state' is 'terminatedWithError'
                or 'done.abandoned'.
              format: date-time
              type: string
            stateChange:
              description: >
                A log of all state transitions for the POQ Item. It must be in
                sync with the most recent POQ Item's state.
              items:
                $ref: '#/components/schemas/MEFPOQItemStateChange'
              type: array
            state:
              description: Current state of an item
              $ref: '#/components/schemas/MEFPOQItemTaskStateType'
          required:
            - state
          type: object
      description: >-
        An individual article included in a POQ that describes a Product of a
        particular type (Product Offering) being delivered to a specific
        geographical location.  The objective is to determine if it is feasible
        for the Seller to deliver this item as described and for the Seller to
        inform the Buyer of the estimated time interval to complete this
        delivery.

        Reference: MEF 79 (Sn 8.4.3.1)
    ProductOfferingQualificationItem_Common:
      description: >
        Common attributes shared between a POQ request and response.  These
        attributes are provided by the Buyer and must not be modified by the
        Seller.
      properties:
        product:
          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` to point which product
            instance to update and to what state. In `delete` only the `id`
            must be provided.
          $ref: '#/components/schemas/MEFProductRefOrValue'
        qualificationItemRelationship:
          description: |
            A list of references to related POQ items in this POQ
          items:
            $ref: '#/components/schemas/QualificationItemRelationship'
          type: array
        relatedContactInformation:
          description: >-
            Contact information of an individual or organization playing a role
            for this POQ Item

            (e.g. for MEF 79: POQ Item Location Contact, role=locationContact)
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        action:
          description: Action to be qualified
          $ref: '#/components/schemas/ProductActionType'
        id:
          description: >
            Id of this POQ item which is unique within the POQ. Assigned by the
            Buyer.
          type: string
      required:
        - action
        - id
        - product
      type: object
    ProductOfferingQualificationItem_Create:
      allOf:
        - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common'
        - type: object
      description: >-
        This structure serves as a request for a product offering qualification
        item.

        A product qualification item is an individual article included in a POQ
        that describes a Product of a particular type (Product Offering) being
        delivered to the geographic address  or a service site specified by the
        Buyer.

        The objective is to determine if it is feasible for the Seller to
        deliver this item as described and for the Seller to inform the Buyer
        of the estimated time interval to complete this delivery.

        The modelling pattern introduces the `Common` supertype to aggregate
        attributes that are common to both `ProductOfferingQualificationItem`
        and `ProductOfferingQualificationItem_Create`. It happens that it is
        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.

        Reference: MEF 79 (Sn 8.4.1.1)
    ProductOfferingQualification_Common:
      description: >
        Defines a set of POQ attributes that might be used by the Buyer and
        cannot be modified by the Seller. The `relatedContactInformation`
        entries provided by the Buyer cannot be changed by the Seller, however
        the Seller might append related contact information to that list.`
      properties:
        externalId:
          type: string
          description:
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterwards)
        instantSyncQualification:
          default: false
          description: >-
            If this flag is set to Yes, Buyer requests to have an instant
            qualification to be provided in operation POST response
          type: boolean
        relatedContactInformation:
          description: |-
            Party playing a role for this qualification. MEF 79 mandates
            providing 'Buyer Contact Information' in the request
            ('role=buyerContactInformation') and 'Seller Contact Information'
            in the response ('role=sellerContactInformation')
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          minItems: 1
          type: array
        provideAlternative:
          default: false
          description: >-
            Allows the Buyer to indicate if he is willing to get an alternate
            proposal if requested product not available.
          type: boolean
        projectId:
          description: >-
            This value MAY be assigned by the Buyer to identify a project the
            serviceability request is associated with.
          type: string
        requestedPOQCompletionDate:
          description: >-
            The latest date a the POQ completion is expected. This attribute is
            required when `instantSyncQualification=false`
          format: date-time
          type: string
      required:
        - relatedContactInformation
      type: object
    ProductOfferingQualification_Create:
      allOf:
        - $ref: '#/components/schemas/ProductOfferingQualification_Common'
        - properties:
            productOfferingQualificationItem:
              description: A non-empty list of POQ items
              items:
                $ref: '#/components/schemas/ProductOfferingQualificationItem_Create'
              minItems: 1
              type: array
          required:
            - productOfferingQualificationItem
          type: object
      description: >
        Represents a request formulated by the Buyer that is composed of
        product offering qualification items.

        Reference: MEF 79 (Sn 8.4)
    ProductOfferingQualification_Find:
      description: >
        This class represent a single list item for the response of
        `listProductOfferingQualification` operation. 

        Reference: MEF 79 (Sn 8.6)
      properties:
        id:
          description: The POQ Request's unique identifier.
          type: string
        externalId:
          type: string
          description:
            ID given by the consumer and only understandable by him (to
            facilitate his searches afterwards)
        state:
          description: Current state of the POQ
          $ref: '#/components/schemas/MEFPOQTaskStateType'
        projectId:
          description:
            'The project ID specified by the Buyer in the POQ Request, if any.'
          type: string
        requestedPOQCompletionDate:
          description: >
            The latest date the POQ completion is expected by the Buyer, if
            specified by the Buyer.
          format: date
          type: string
      required:
        - id
        - state
      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. Defined in MEF 79
        Section 8.4.1.1
      properties:
        href:
          description: >
            Hyperlink to a Product Offering in Sellers catalog. In case Seller
            is not providing a catalog API this field is not used. The catalog
            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
    ProductRelationshipWithGrouping:
      description: >-
        A relationship to existing Product. The requirements for usage for
        given Product are described in the Product Specification. The
        "WithGrouping" flavour 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
        href:
          description: >
            Hyperlink to the product in Seller's inventory that is referenced
            Hyperlink MAY be set 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 of a Product that is referenced
          type: string
        groupingKey:
          description: >
            MEF 79.0.1. 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 79.0.1 (Sn 7)
          type: string
      required:
        - id
        - relationshipType
      type: object
    ProductSpecificationRef:
      description: >-
        A reference to a structured set of well-defined technical attributes
        and/or behaviors that are used to construct a Product Offering for sale
        to a market.
      properties:
        href:
          description: >
            Hyperlink to a Product Specification in Sellers catalog. In case
            Seller is not providing a catalog API this field is not used. The
            catalog 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: Unique identifier of the product specification
          type: string
      required:
        - id
      type: object
    QualificationItemRelationship:
      description: >-
        The relationship between product offering qualification items that can
        be used to validate business rules between POQ items.

        Reference: MEF 79.0.1 (Sn 6)
      properties:
        relationshipType:
          description: >
            One of the relationship types defined in the Product Specification.
            For example: "relies on".
          type: string
        id:
          description:
            An identifier of the targeted POQ item within the same POQ request
          type: string
      required:
        - id
        - relationshipType
      type: object
    RelatedContactInformation:
      description: >-
        Contact data for a person or organization that is involved in the
        product offering qualification. In a given context it is always
        specified by the Seller (e.g. Seller Contact Information) or by the
        Buyer. 

        Reference: MEF 79 (Sn 8.11)
      properties:
        number:
          description: Phone number
          type: string
        emailAddress:
          description: Email address
          type: string
        role:
          description: A role of the particular contact in the request
          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 (locations) where the products being subject
        of this qualification are to be provided.
      discriminator:
        mapping:
          FieldedAddress: '#/components/schemas/FieldedAddress'
          FormattedAddress: '#/components/schemas/FormattedAddress'
          GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel'
          MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint'
          GeographicAddressRef: '#/components/schemas/GeographicAddressRef'
          GeographicSiteRef: '#/components/schemas/GeographicSiteRef'
        propertyName: '@type'
      properties:
        role:
          description: >-
            Role of this place. The values that can be specified here are
            described by Product Specification (e.g. "INSTALL_LOCATION").
          type: string
        '@type':
          description: >
            This field is used as discriminator. The value is the name of one
            of the types that inherit from it using 'allOf', i.e. one of
            FieldedAddress, FormattedAddress, GeographicAddressLabel,
            MEFGeographicPoint, GeographicAddressRef, GeographicSiteRef.
            Moreover, it might discriminate for an additional related place as
            defined in '@schemaLocation'.
          type: string
        '@schemaLocation':
          description: >-
            A URL 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 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
    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
