openapi: 3.0.1
info:
  description: |

    It allows the Buyer to retrieve the information about existing Product
    instances from Seller's Product Inventory.

    List of supported use cases:
    - Retrieve Product List
    - Retrieve Product by Identifier

    Copyright 2021 MEF Forum and its contributors.

    This file includes content based on the TM Forum Product Inventory
    Management API (TMF637 v4.0.0) available at
    https://github.com/tmforum-apis/TMF637_ProductInventory, 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 Inventory Management
  version: 7.0.2
servers:
  - url: 'https://{serverBase}/mefApi/sonata/productInventory/v7/'
    variables:
      serverBase:
        default: mef.net
        description: The base of Seller's URL.
tags:
  - name: product
  - name: events subscription
paths:
  /product:
    get:
      description: This operation lists or finds Product entities
      operationId: listProduct
      parameters:
        - description: The status of the product
          in: query
          name: status
          schema:
            enum:
              - active
              - active.pendingChange
              - cancelled
              - pendingActive
              - pendingTerminate
              - suspended
              - suspendedPendingTerminate
              - terminated
            type: string
        - description: A reference to a product spec by id
          in: query
          name: productSpecificationId
          schema:
            type: string
        - description: A reference to a product offering by id
          in: query
          name: productOfferingId
          schema:
            type: string
        - description: A reference to the externalId provided in the order
          in: query
          name: externalId
          schema:
            type: string
        - description: A site identifier which is associated to the product
          in: query
          name: geographicalSiteId
          schema:
            type: string
        - description: >-
            This criteria allows to retrieve all Product records with a Product
            Relationship to a specified Product.

            E.g. All Products related to Product with ID 5
          in: query
          name: relatedProductId
          schema:
            type: string
        - description: The Billing Account associated with the Product.
          in: query
          name: billingAccountId
          schema:
            type: string
        - description: Identifies Product Order associated with the Product
          in: query
          name: productOrderId
          schema:
            type: string
        - description:
            Less than the date that is the initial install date for the Product
          in: query
          name: startDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            Greater than the date that is the initial install date for the
            Product
          in: query
          name: startDate.gt
          schema:
            format: date-time
            type: string
        - description: >-
            Less than date that the last change affecting this Product was
            completed
          in: query
          name: lastUpdateDate.lt
          schema:
            format: date-time
            type: string
        - description: >-
            Greater than the date that the last change affecting this Product
            was completed
          in: query
          name: lastUpdateDate.gt
          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 81 (Sn 8.3)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 81 (Sn 8.3)
          in: query
          name: sellerId
          schema:
            type: string
        - description: >-
            Requested index for start of item to be provided in response
            requested by client. Note that the index starts with "0".
          in: query
          name: offset
          schema:
            format: int32
            type: integer
        - description: >-
            Requested number of items to be provided in response requested by
            client
          in: query
          name: limit
          schema:
            format: int32
            type: integer
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/MEFProduct_Find'
                type: array
          description:
            'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
          headers:
            X-Pagination-Throttled:
              description: >
                Used to indicate that result page was throttled to maximum
                possible size  and there are additional results that can be
                fetched
              schema:
                type: boolean
            X-Total-Count:
              description: >
                The total number of matching items. E.g. if there are 50
                matching items in total, but the request has offset=10 and
                limit=10, then the X-Total-Count is 50.
              schema:
                type: integer
            X-Result-Count:
              description: The number of items included in the response
              schema:
                type: integer
        '400':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
          description: Bad Request
        '401':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
          description: Unauthorized
        '403':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
          description: Forbidden
        '422':
          content:
            application/json;charset=utf-8:
              schema:
                items:
                  $ref: '#/components/schemas/Error422'
                type: array
          description:
            Unprocessable entity due to the business validation problems
        '500':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
          description: Internal Server Error
      summary: List or find Product objects
      tags:
        - product
  '/product/{id}':
    get:
      description: >-
        This operation retrieves a Product entity.
      operationId: retrieveProduct
      parameters:
        - description: Identifier of the Product
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Comma-separated properties to provide in response
          in: query
          name: fields
          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 81 (Sn 8.3)
          in: query
          name: buyerId
          schema:
            type: string
        - description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request only when responding
            entity  represents more than one Seller.

            Reference: MEF 81 (Sn 8.3)
          in: query
          name: sellerId
          schema:
            type: string
      responses:
        '200':
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/MEFProduct'
          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 Product by ID
      tags:
        - product
components:
  schemas:
    Error400Code:
      description: >-
        One of the following error codes:

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

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

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

        - invalidBody: The request has an invalid body
      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)
    FieldedAddress:
      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)
      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 however as in certain countries it is not used we
            make it optional in API.
          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:
          $ref: '#/components/schemas/GeographicSubAddress'
        streetSuffix:
          description: A modifier denoting a relative direction
          type: string
      required:
        - city
        - country
        - streetName
      type: object
    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
    MEFBillingAccountRef:
      description: A reference to the Buyer's Billing Account
      properties:
        id:
          description: >-
            Identifies the buyer's billing account to which the recurring and
            non-recurring charges for this order or order item will be billed.
            Required if the Buyer has more than one Billing Account with the
            Seller and for all new Product Orders.
          type: string
      required:
        - id
      type: object
    MEFChargePeriod:
      description: Used for a recurring charge to indicate period.
      enum:
        - hour
        - day
        - week
        - month
        - year
      type: string
    MEFEndOfTermAction:
      description: The action the Seller will take once the term expires.
      enum:
        - roll
        - autoDisconnect
        - autoRenew
      type: string
    MEFItemTerm:
      description: The term of the Item
      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.
          $ref: '#/components/schemas/Duration'
      type: object
    MEFPriceType:
      description:
        Indicates if the price is for recurring or non-recurring charges.
      enum:
        - recurring
        - nonRecurring
        - usageBased
      type: string
    MEFProduct:
      description:
        A product is realized as one or more service(s) and / or resource(s).
      properties:
        productSpecification:
          description: A reference to a Product Specification of the Product
          $ref: '#/components/schemas/ProductSpecificationRef'
        relatedSite:
          description: Reference to a Site where the PRoduct is provided.
          items:
            $ref: '#/components/schemas/RelatedGeographicSite'
          type: array
        productOffering:
          description: >-
            A particular Product Offering defines the technical and commercial
            attributes and behaviors of a Product.
          $ref: '#/components/schemas/ProductOfferingRef'
        lastUpdateDate:
          description: Latest date when the product has been updated.
          format: date-time
          type: string
        relatedContactInformation:
          description: Party playing a role for this Product
          items:
            $ref: '#/components/schemas/RelatedContactInformation'
          type: array
        '@type':
          description:
            'When sub-classing, this defines the sub-class entity name'
          type: string
        externalId:
          description: Buyer identifier of the product
          type: string
        statusChange:
          description: status change for the Product
          items:
            $ref: '#/components/schemas/MEFProductStatusChange'
          type: array
        billingAccount:
          description: The Billing Account associated with the Product
          $ref: '#/components/schemas/MEFBillingAccountRef'
        productOrderItem:
          description: >-
            The Product Order Item of the associated Product order that
            resulted in the creation of this Product.
          items:
            $ref: '#/components/schemas/MEFProductOrderItemRef'
          type: array
        productTerm:
          description: Term of the Product
          items:
            $ref: '#/components/schemas/MEFItemTerm'
          type: array
        terminationDate:
          description: >-
            Is the date when the product was terminated. MEF: Termination date
            (commercial) is when the product has been terminated (when the
            disconnect in the product order has been processed).
          format: date-time
          type: string
        productConfiguration:
          description: >-
            MEFProductConfiguration is used to specify the MEF specific product
            payload.
          $ref: '#/components/schemas/MEFProductConfiguration'
        productRelationship:
          description: >-
            A list of references to existing products that are related to the
            Product.
          items:
            $ref: '#/components/schemas/ProductRelationship'
          type: array
        id:
          description: Unique identifier of the product
          type: string
        href:
          description: Reference of the product
          type: string
        startDate:
          description: >-
            Is the date from which the product starts. MEF: Start date is when
            the product is active for the first time (when the install in the
            product order has been processed).
          format: date-time
          type: string
        productPrice:
          description: A list of Prices associated with the Product
          items:
            $ref: '#/components/schemas/ProductPrice'
          type: array
        status:
          description: The lifecycle status of the product.
          $ref: '#/components/schemas/MEFProductStatusType'
      required:
        - id
        - startDate
        - status
      type: object
    MEFProductConfiguration:
      description: >-
        MEFProductConfiguration is used as an extension point for MEF specific
        product/service payload.  The `@type` attribute is used as a
        discriminator
      discriminator:
        propertyName: '@type'
      properties:
        '@type':
          description: >-
            The name of the type, defined in the JSON schema specified  above,
            for the product that is the subject of the POQ Request. The named
            type must be a subclass of MEFProductConfiguration.
          type: string
      required:
        - '@type'
      type: object
    MEFProductOrderItemRef:
      description: A reference to a ProductOrder item
      properties:
        productOrderHref:
          description: Reference of the related ProductOrder.
          type: string
        productOrderItemId:
          description: Id of an Item within the Product Order
          type: string
        productOrderId:
          description: Unique identifier of a ProductOrder.
          type: string
      required:
        - productOrderId
        - productOrderItemId
      type: object
    MEFProductStatusChange:
      description: >-
        Holds the reached status, reasons and associated date the Product Order
        status changed, populated by the Seller.
      properties:
        changeReason:
          description: The reason why the status changed.
          type: string
        changeDate:
          description: The date and time the status changed.
          format: date-time
          type: string
        status:
          description: Status of the product
          $ref: '#/components/schemas/MEFProductStatusType'
      required:
        - changeDate
        - status
      type: object
    MEFProductStatusType:
      description: |-
        Possible values for the status of a MEF product

        | name                        | MEF 81 name                 |
        | --------------------------- | --------------------------- |
        | `active`                    | ACTIVE                      |
        | `active.pendingChange`      | ACTIVE_PENDING_CHANGE       |
        | `pendingTerminate`          | ACTIVE_PENDING_TERMINATE    |
        | `cancelled`                 | CANCELLED                   |
        | `pendingActive`             | PENDING                     |
        | `suspended`                 | SUSPENDED                   |
        | `suspendedPendingTerminate` | SUSPENDED_PENDING_TERMINATE |
        | `terminated`                | TERMINATED                  |
      enum:
        - active
        - active.pendingChange
        - cancelled
        - pendingActive
        - pendingTerminate
        - suspended
        - suspendedPendingTerminate
        - terminated
      type: string
    MEFProduct_Find:
      description: >-
        Class used to provide product overview retrieved in GET (by list)
        operation
      properties:
        productSpecification:
          description: A reference to a Product Specification of the Product
          $ref: '#/components/schemas/ProductSpecificationRef'
        relatedSite:
          description: Reference to a Site where the PRoduct is provided.
          items:
            $ref: '#/components/schemas/RelatedGeographicSite'
          type: array
        productOffering:
          description: >-
            A particular Product Offering defines the technical and commercial
            attributes and behaviors of a Product.
          $ref: '#/components/schemas/ProductOfferingRef'
        lastUpdateDate:
          description: Latest date when the product has been updated.
          format: date-time
          type: string
        externalId:
          description: >-
            This identifier is optionally provided during the product ordering
            and stored for informative purpose in the seller inventory
          type: string
        productRelationship:
          description: >-
            A list of references to existing products that are related to the
            Product.
          items:
            $ref: '#/components/schemas/ProductRelationship'
          type: array
        id:
          description: Unique identifier of the product
          type: string
        href:
          description: Reference of the product
          type: string
        billingAccount:
          description: The Billing Account associated with the Product
          $ref: '#/components/schemas/MEFBillingAccountRef'
        productOrderItem:
          description: >-
            The Product Order Item of the associated Product order that
            resulted in the creation of this Product.
          items:
            $ref: '#/components/schemas/MEFProductOrderItemRef'
          type: array
        startDate:
          description: The date from which the product starts
          format: date-time
          type: string
        status:
          description: The lifecycle status of the product.
          $ref: '#/components/schemas/MEFProductStatusType'
      required:
        - id
        - status
      type: object
    MEFSubUnit:
      description: Allows for sub unit identification
      properties:
        subUnitNumber:
          description: >-
            The discriminator used for the subunit, often just a simple number
            but may also be a range.
          type: string
        subUnitType:
          description: >-
            The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,
            UNIT, WHARF.
          type: string
      required:
        - subUnitNumber
        - subUnitType
      type: object
    Money:
      description: A base / value business entity used to represent money
      properties:
        unit:
          description:
            Currency (ISO4217 norm uses 3 letters to define the currency)
          type: string
        value:
          description: A positive floating point number
          format: float
          type: number
      required:
        - unit
        - value
      type: object
    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
    ProductOfferingRef:
      description: >-
        A reference to a Product Offering offered by the Seller to the Buyer. A
        Product Offering contains the commercial and technical details of a
        Product sold by a particular Seller. A Product Offering defines all of
        the commercial terms and, through association with a particular Product
        Specification, defines all the technical attributes and behaviors of
        the Product. A Product Offering may constrain the allowable set of
        configurable technical attributes and/or behaviors specified in the
        associated Product Specification.
      properties:
        href:
          description: >
            Hyperlink to a Product Offering in Sellers catalog. In case Seller
            is not providing a catalog API this field is not used. The catalog
            is provided by the Seller to the Buyer during onboarding.
          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
    ProductPrice:
      description: >-
        An amount, usually of money, that represents the actual price paid by a
        Customer for a purchase, a rent or a lease of a Product. The price is
        valid for a defined period of time.
      properties:
        unitOfMeasure:
          description:
            'Unit of Measure if price depending on it (Gb, SMS volume, etc..)'
          type: string
        price:
          description: Value of the Price
          $ref: '#/components/schemas/Price'
        name:
          description: A short descriptive name such as "Subscription price".
          type: string
        priceType:
          description: >-
            A category that describes the price, such as recurring,
            nonRecurring, usageBased
          $ref: '#/components/schemas/MEFPriceType'
        description:
          description: >-
            A narrative that explains in detail the semantics of this product
            price.
          type: string
        recurringChargePeriod:
          description: Charge period for recurring charge.
          $ref: '#/components/schemas/MEFChargePeriod'
      required:
        - price
        - priceType
      type: object
    ProductRelationship:
      description: >-
        A relationship to existing Product. The requirements for usage for
        given Product are described in the Product Specification.
      properties:
        relationshipType:
          description: >-
            Specifies the type (nature) of the relationship to the related
            Product. The nature of required relationships vary 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
          type: string
        href:
          description: Hyperlink of the referenced product
          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.
          type: string
        id:
          description: Unique identifier of the product specification
          type: string
      required:
        - id
      type: object
    RelatedContactInformation:
      description: |
        Contact information of an individual or organization playing a role for
        this Entity. The rule for mapping a represented attribute value to a
        `role` is to use the _lowerCamelCase_ pattern e.g. 
        - Buyer Order Item Contact: `role=buyerOrderItemContact` 
        - Buyer Implementation Contact: `role=buyerImplementationContact` 
        - Buyer Technical Contact: `role=buyerTechnicalContact`
      properties:
        number:
          description: Phone number
          type: string
        emailAddress:
          description: Email address
          type: string
        role:
          description: A role the party plays 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
    RelatedGeographicSite:
      description: >-
        A  Geographic Site  and an associated role as installation address,
        delivery address, etc....
      properties:
        role:
          description: >-
            Role of the geographic site, such as: [home delivery], [shop
            retrieval]) MEF: The role that the Site plays, e.g. Billing
            Address, UNI Site, or ENNI Site.
          type: string
        id:
          description: Unique identifier of the geographic site
          type: string
        href:
          description: Hyperlink to the referenced geographic site
          type: string
      required:
        - id
        - role
      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
