TM Forum quote API

The quote API from TM Forum — 2 operation(s) for quote.

OpenAPI Specification

tm-forum-quote-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Product Catalog Management agreement quote API
  description: "Product Catalog API is one of Catalog Management API Family. Product Catalog API goal is to provide a catalog of products. \n### Operations\nProduct Catalog API performs the following operations on the resources :\n- Retrieve an entity or a collection of entities depending on filter criteria\n- Partial update of an entity (including updating rules)\n- Create an entity (including default values and creation rules)\n- Delete an entity\n- Manage notification of events"
  version: 5.0.0
servers:
- url: https://serverRoot/productCatalogManagement/v5/
tags:
- name: quote
paths:
  /quote:
    get:
      operationId: listQuote
      summary: List or find Quote objects
      description: This operation list or find Quote entities
      tags:
      - quote
      parameters:
      - name: fields
        description: Comma-separated properties to be provided in response
        required: false
        in: query
        type: string
      - name: offset
        description: Requested index for start of resources to be provided in response
        required: false
        in: query
        type: integer
      - name: limit
        description: Requested number of resources to be provided in response
        required: false
        in: query
        type: integer
      responses:
        '200':
          description: Success
          headers:
            X-Result-Count:
              description: Actual number of items returned in the response body
              type: integer
            X-Total-Count:
              description: Total number of items matching criteria
              type: integer
          schema:
            type: array
            items:
              $ref: '#/definitions/Quote'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
    post:
      operationId: createQuote
      summary: Creates a Quote
      description: This operation creates a Quote entity.
      tags:
      - quote
      parameters:
      - name: quote
        description: The Quote to be created
        required: true
        schema:
          $ref: '#/definitions/Quote_Create'
        in: body
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Quote'
        '201':
          description: Created
          schema:
            $ref: '#/definitions/Quote'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
  /quote/{id}:
    get:
      operationId: retrieveQuote
      summary: Retrieves a Quote by ID
      description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes.
      tags:
      - quote
      parameters:
      - name: id
        description: Identifier of the Quote
        required: true
        type: string
        in: path
      - name: fields
        description: Comma-separated properties to provide in response
        required: false
        type: string
        in: query
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/Quote'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
    patch:
      operationId: patchQuote
      summary: Updates partially a Quote
      description: This operation updates partially a Quote entity.
      tags:
      - quote
      parameters:
      - name: id
        description: Identifier of the Quote
        required: true
        type: string
        in: path
      - name: quote
        description: The Quote to be updated
        required: true
        schema:
          $ref: '#/definitions/Quote_Update'
        in: body
      responses:
        '200':
          description: Updated
          schema:
            $ref: '#/definitions/Quote'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
    delete:
      operationId: deleteQuote
      summary: Deletes a Quote
      description: This operation deletes a Quote entity.
      tags:
      - quote
      parameters:
      - name: id
        description: Identifier of the Quote
        required: true
        type: string
        in: path
      responses:
        '204':
          description: Deleted
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error'
definitions:
  ResourceRef:
    type: object
    properties:
      id:
        type: string
        description: Unique identifier of a related entity.
      href:
        type: string
        description: Reference of the related entity.
      name:
        type: string
        description: Name of the resource
      value:
        type: string
        description: 'The resource value that can be used to identify a resource with a public key (e.g.: a tel nr, an msisdn)'
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
      '@referredType':
        type: string
        description: The actual type of the target instance when needed for disambiguation.
    required:
    - id
  Error:
    description: Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)
    type: object
    required:
    - code
    - reason
    properties:
      code:
        type: string
        description: Application relevant detail, defined in the API or a common list.
      reason:
        type: string
        description: Explanation of the reason for the error which can be shown to a client user.
      message:
        type: string
        description: More details and corrective actions related to the error which can be shown to a client user.
      status:
        type: string
        description: HTTP Error code extension
      referenceError:
        type: string
        format: uri
        description: URI of documentation describing the error.
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class.
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name.
  Quote:
    type: object
    description: Quote can be used to negotiate service and product acquisition or modification between a customer and a service provider. Quote contain list of quote items, a reference to customer (partyRole), a list of productOffering and attached prices and conditions.
    required:
    - quoteItem
    properties:
      id:
        type: string
        description: Unique identifier - attributed by quoting system
      href:
        type: string
        description: Hyperlink to access the quote
      category:
        type: string
        description: Used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...)
      description:
        type: string
        description: Description of the quote
      effectiveQuoteCompletionDate:
        type: string
        format: date-time
        description: Date when the quote has been completed
      expectedFulfillmentStartDate:
        type: string
        format: date-time
        description: this is the date wished by the requester to have the requested quote item delivered
      expectedQuoteCompletionDate:
        type: string
        format: date-time
        description: This is expected date - from quote supplier - to be able to send back  a response for this quote
      externalId:
        type: string
        description: ID given by the consumer and only understandable by him (to facilitate his searches afterwards)
      instantSyncQuote:
        type: boolean
        description: 'An indicator which when the value is "true" means that requester expects to get quoting result immediately in the response. If the indicator is true then the response code of 200 indicates the operation is successful otherwise a task is created with a response 201. '
      quoteDate:
        type: string
        format: date-time
        description: Date and time when the quote was created
      requestedQuoteCompletionDate:
        type: string
        format: date-time
        description: This is requested date - from quote requester - to get a complete response for this quote
      version:
        type: string
        description: Quote version - if the customer rejected the quote but  negotiations still open a new version of the quote is managed
      agreement:
        type: array
        items:
          $ref: '#/definitions/AgreementRef'
        description: A reference to an agreement defining the context of the quote
      authorization:
        type: array
        items:
          $ref: '#/definitions/Authorization'
        description: An authorization provided for the quote
      billingAccount:
        type: array
        items:
          $ref: '#/definitions/BillingAccountRef'
        description: 'A reference to a billing account to provide quote context information '
      contactMedium:
        type: array
        items:
          $ref: '#/definitions/ContactMedium'
        description: Information contact related to the quote requester
      note:
        type: array
        items:
          $ref: '#/definitions/Note'
        description: Free form text associated with the quote
      productOfferingQualification:
        type: array
        items:
          $ref: '#/definitions/ProductOfferingQualificationRef'
        description: A reference to a previously done product offering qualification
      quoteItem:
        type: array
        items:
          $ref: '#/definitions/QuoteItem'
        minItems: 1
        description: An item of the quote - it is used to descirbe an operation on a product to be quoted
      quoteTotalPrice:
        type: array
        items:
          $ref: '#/definitions/QuotePrice'
        description: Quote total price
      relatedParty:
        type: array
        items:
          $ref: '#/definitions/RelatedParty'
        description: A reference to a party playing a role in this quote (customer, seller, requester, etc.)
      state:
        $ref: '#/definitions/QuoteStateType'
        description: 'State of the quote : described in the state-machine diagram'
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: Quote validity period
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  PriceAlteration:
    type: object
    description: Is an amount, usually of money, that modifies the price charged for an order item.
    required:
    - price
    - priceType
    properties:
      applicationDuration:
        type: integer
        description: Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge)
      description:
        type: string
        description: A narrative that explains in detail the semantics of this order item price alteration
      name:
        type: string
        description: Name of the order item price alteration
      priceType:
        type: string
        description: A category that describes the price such as recurring, one time and usage.
      priority:
        type: integer
        description: Priority level for applying this alteration among all the defined alterations on the order item price
      recurringChargePeriod:
        type: string
        description: Could be month, week...
      unitOfMeasure:
        type: string
        description: Could be minutes, GB...
      price:
        $ref: '#/definitions/Price'
      productOfferingPrice:
        $ref: '#/definitions/ProductOfferingPriceRef'
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  ContactMedium:
    type: object
    description: Indicates the contact medium that could be used to contact the party.
    properties:
      mediumType:
        type: string
        description: 'Type of the contact medium, such as: email address, telephone number, postal address'
      preferred:
        type: boolean
        description: If true, indicates that is the preferred contact medium
      characteristic:
        $ref: '#/definitions/MediumCharacteristic'
        description: Any additional characteristic(s) of this contact medium
      validFor:
        $ref: '#/definitions/TimePeriod'
        description: The time period that the contact medium is valid for
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  Authorization:
    type: object
    description: If special discount or special product offering price or specific condition need an approval for ISP sale representative it is described here.
    properties:
      givenDate:
        type: string
        format: date-time
        description: Date when the authorization (approved or declined) was done
      name:
        type: string
        description: Name of the required authorization
      requestedDate:
        type: string
        format: date-time
        description: Date when the authorization is requested for
      signatureRepresentation:
        type: string
        description: To describe a digital or manual signature
      state:
        type: string
        description: 'State of the authorization, such as: approved or declined'
      approver:
        type: array
        items:
          $ref: '#/definitions/RelatedParty'
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  ProductOfferingQualificationItemRef:
    type: object
    description: It's a productOfferingQualification item that has been executed previously.
    required:
    - id
    - productOfferingQualificationId
    properties:
      id:
        type: string
        description: Id of an item of a product offering qualification
      href:
        type: string
        description: Reference of the related entity.
      name:
        type: string
        description: Name of the related entity.
      productOfferingQualificationHref:
        type: string
        description: Reference of the related entity.
      productOfferingQualificationId:
        type: string
        description: Unique identifier of a related entity.
      productOfferingQualificationName:
        type: string
        description: Name of the related entity.
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
      '@referredType':
        type: string
        description: The actual type of the target instance when needed for disambiguation.
  TargetProductSchema:
    type: object
    description: The reference object to the schema and type of target product which is described by product specification
    required:
    - '@schemaLocation'
    - '@type'
    properties:
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        description: This field provides a link to the schema describing the target product
      '@type':
        type: string
        description: Class type of the target product
  ProductPrice:
    type: object
    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.
    required:
    - price
    - priceType
    properties:
      description:
        type: string
        description: A narrative that explains in detail the semantics of this product price.
      name:
        type: string
        description: A short descriptive name such as "Subscription price".
      priceType:
        type: string
        description: A category that describes the price, such as recurring, discount, allowance, penalty, and so forth.
      recurringChargePeriod:
        type: string
        description: Could be month, week...
      unitOfMeasure:
        type: string
        description: Could be minutes, GB...
      billingAccount:
        $ref: '#/definitions/BillingAccountRef'
      price:
        $ref: '#/definitions/Price'
      productOfferingPrice:
        $ref: '#/definitions/ProductOfferingPriceRef'
      productPriceAlteration:
        type: array
        items:
          $ref: '#/definitions/PriceAlteration'
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  QuoteStateType:
    type: string
    description: Possible values for the state of the quote
    enum:
    - rejected
    - pending
    - inProgress
    - cancelled
    - approved
    - accepted
  RelatedPlaceRefOrValue:
    type: object
    description: Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself
    required:
    - role
    properties:
      id:
        type: string
        description: Unique identifier of the place
      href:
        type: string
        description: Unique reference of the place
      name:
        type: string
        description: A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]
      role:
        type: string
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
      '@referredType':
        type: string
        description: The actual type of the target instance when needed for disambiguation.
  Quote_Create:
    type: object
    description: 'Quote can be used to negotiate service and product acquisition or modification between a customer and a service provider. Quote contain list of quote items, a reference to customer (partyRole), a list of productOffering and attached prices and conditions.

      Skipped properties: href,quoteDate,state,effectiveQuoteCompletionDate,quoteAuthorization,quoteTotalPrice,expectedQuoteCompletionDate,validFor'
    required:
    - quoteItem
    properties:
      id:
        type: string
        description: Unique identifier - attributed by quoting system
      category:
        type: string
        description: Used to categorize the quote from a business perspective that can be useful for the CRM system (e.g. "enterprise", "residential", ...)
      description:
        type: string
        description: Description of the quote
      expectedFulfillmentStartDate:
        type: string
        format: date-time
        description: this is the date wished by the requester to have the requested quote item delivered
      externalId:
        type: string
        description: ID given by the consumer and only understandable by him (to facilitate his searches afterwards)
      instantSyncQuote:
        type: boolean
        description: 'An indicator which when the value is "true" means that requester expects to get quoting result immediately in the response. If the indicator is true then the response code of 200 indicates the operation is successful otherwise a task is created with a response 201. '
      requestedQuoteCompletionDate:
        type: string
        format: date-time
        description: This is requested date - from quote requester - to get a complete response for this quote
      version:
        type: string
        description: Quote version - if the customer rejected the quote but  negotiations still open a new version of the quote is managed
      agreement:
        type: array
        items:
          $ref: '#/definitions/AgreementRef'
        description: A reference to an agreement defining the context of the quote
      authorization:
        type: array
        items:
          $ref: '#/definitions/Authorization'
        description: An authorization provided for the quote
      billingAccount:
        type: array
        items:
          $ref: '#/definitions/BillingAccountRef'
        description: 'A reference to a billing account to provide quote context information '
      contactMedium:
        type: array
        items:
          $ref: '#/definitions/ContactMedium'
        description: Information contact related to the quote requester
      note:
        type: array
        items:
          $ref: '#/definitions/Note'
        description: Free form text associated with the quote
      productOfferingQualification:
        type: array
        items:
          $ref: '#/definitions/ProductOfferingQualificationRef'
        description: A reference to a previously done product offering qualification
      quoteItem:
        type: array
        items:
          $ref: '#/definitions/QuoteItem'
        minItems: 1
        description: An item of the quote - it is used to descirbe an operation on a product to be quoted
      relatedParty:
        type: array
        items:
          $ref: '#/definitions/RelatedParty'
        description: A reference to a party playing a role in this quote (customer, seller, requester, etc.)
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  QuoteItem:
    type: object
    description: A quote items describe an action to be performed on a productOffering or a product in order to get pricing elements and condition.
    properties:
      id:
        type: string
        description: Identifier of the quote item (generally it is a sequence number 01, 02, 03, ...)
      action:
        type: string
        description: Action to be performed on this quote item (add, modify, remove, etc.)
      quantity:
        type: integer
        description: Quantity asked for this quote item
      state:
        type: string
        description: 'State of the quote item : described in the state machine diagram'
      appointment:
        type: array
        items:
          $ref: '#/definitions/AppointmentRef'
        description: A reference to appointment(s) associated with this quote item
      attachment:
        type: array
        items:
          $ref: '#/definitions/AttachmentRefOrValue'
        description: A reference to attachment(s) associated with this quote item
      note:
        type: array
        items:
          $ref: '#/definitions/Note'
        description: Free form text associated with the quote item
      product:
        $ref: '#/definitions/ProductRefOrValue'
      productOffering:
        $ref: '#/definitions/ProductOfferingRef'
      productOfferingQualificationItem:
        $ref: '#/definitions/ProductOfferingQualificationItemRef'
        description: A reference to a previously done POQ with item specified
      quoteItem:
        type: array
        items:
          $ref: '#/definitions/QuoteItem'
        description: A structure to embedded quote item within quote item
      quoteItemAuthorization:
        type: array
        items:
          $ref: '#/definitions/Authorization'
        description: Authorization related to this quote item
      quoteItemPrice:
        type: array
        items:
          $ref: '#/definitions/QuotePrice'
        description: Price for this quote item
      quoteItemRelationship:
        type: array
        items:
          $ref: '#/definitions/QuoteItemRelationship'
        description: A relationship from item within a quote
      relatedParty:
        type: array
        items:
          $ref: '#/definitions/RelatedParty'
        description: A reference to a party playing a role in this quote item
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  Quantity:
    type: object
    description: An amount in a given unit
    properties:
      amount:
        default: 1
        type: number
        format: float
        description: Numeric value in a given unit
      units:
        type: string
        description: Unit
  ProductRelationship:
    type: object
    description: Linked products to the one instantiate, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful
    required:
    - product
    - relationshipType
    properties:
      relationshipType:
        type: string
        description: Type of the product relationship, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful
      product:
        $ref: '#/definitions/ProductRefOrValue'
      '@baseType':
        type: string
        description: When sub-classing, this defines the super-class
      '@schemaLocation':
        type: string
        format: uri
        description: A URI to a JSON-Schema file that defines additional attributes and relationships
      '@type':
        type: string
        description: When sub-classing, this defines the sub-class entity name
  TimePeriod:
    type: object
    description: A period of time, either as a deadline (endDateTime only) a startDateTime only, or both
    properties:
      endDateTime:
        type: string
        format: date-time
        description: End of the time period, using IETC-RFC-3339 format
      startDateTime:
        type: string
        format: date-time
        description: Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end
  MediumCharacteristic:
    type: object
    description: Describes the contact medium characteristics that could be used to contact a party (an individual or an organization)
    properties:
      city:
        type: string
        description: The city
      contactType:
        type: string
        description: 'The type of contact, for example: phone number such as mobile, fixed home, fixed office. postal address such as shipping instalation…'
      count

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/openapi/tm-forum-quote-api-openapi.yml