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