- The TMF648 API provides a standardized client interface for placing a customer quote with all of the necessary quote parameters. The API consists of a simple set of operations that interact with CRM/Order Negotiation systems in a consistent manner.
- A customer quote is created based on a product offer that is defined in a catalog (POST). The quote identifies the product or set of products that are available to a customer, and includes characteristics such as pricing (eventually special pricing for the customer described in the quote), product options and agreement. You can also retrieve a customer quote or a collection of customer quotes (GET List) depending on the filter criteria.
In general, we can consider the various use cases listed based on the operation you want to perform.
important: Starting from the Winter ’27 release, only the Direct Access option will be supported. The MuleSoft gateway option will be deprecated, and customers must update their integrations to use the Connect/Apex REST endpoints for continued access to the inbound APIs.
Assumptions
It is assumed that you have completed the following.
- Enabling Access to Industry APIs
- Ensuring that the required licenses and data packs are installed. For more information, see Before you begin.
Sequence of Operations
Following block diagram provides a sequence of operations involved.
NOTE:
- For mandatory fields and resource mappings, refer TMF648 Resource Mappings.
- For more information on supported Integration Procedures, Data Raptors, Apex Interfaces, Custom Metadata, refer Extend TMF648 API documentation.
Use Cases
| I want to | Request Type | Example URL |
|---|---|---|
| Retrieve and display details of a particular customer quote. | GET by ID | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote/{ID}<br><br>NOTE:<br>For invalid product ID, you will receive HTTP 404 error. |
| Based on the provided field values, retrieve and display details of a particular product order ID. | GET by ID and Fields | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote/00001205?fields=category,description,state<br><br>NOTE:<br>The requested fields will be part of output, if they have value. |
| List all the customer quotes present in the system. | GET List | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote |
| List all the customer quotes present in the system based on the provided field values and filter applied. | GET List by Fields and Filtering | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote?fields=category,description,state&state=Draft<br><br>NOTE:<br>The requested fields will be part of output, if they have value. |
| List customer quotes based on the date of creation, limit the number of customer quotes to a maximum of specified limit, and<br>starts the results display from page specified by offset. | GET List by limit and offset | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote?limit=2&offset=2<br><br>NOTE:<br>The pagination query mentioned above - limit=2&offset=2 will start display from page 2 and will have 2 records. |
| Create a new customer quote by providing the required details. | POST | {{orgendpoint}}/services/apexrest/{{namespace}}/tmforum/quoteManagement/v1/quote<br>NOTE:<br>A new customer quote gets created based on the values mentioned for the mandatory fields. |
GET by ID
Consider you want to retrieve details of a particular customer quote.
- QuoteNumber is used as quote identifier
- Retrieve and display all the not-null first level attributes and sub-resources of the requested entity
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote/00003486
Sample Response
200 OK
{
"PageInfo": "Page 1",
"PageSize": 50,
"result": {
"id": "00003486",
"description": "TMF648",
"category": "New Customer",
"quoteDate": "2023-10-26T13:56:49.000+0000",
"state": "Draft",
"agreement": [
{
"id": "00000100",
"name": "TMForum",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000100"
}
],
"billingAccount": [
{
"id": "CD451791",
"name": "Test Sh1",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD451791"
}
],
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00003486",
"version": "V1",
"relatedParty": [
{
"id": "CD3344",
"name": "Test Account",
"role": "Account",
"@referredType": "Account",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD3344"
},
{
"id": "003Dp000007ElkNIAS",
"name": "jgfhd kuyf",
"role": "Contact",
"@referredType": "Contact",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Dp000007ElkNIAS"
}
],
"quoteTotalPrice": [
{
"price": {
"taxIncludedAmount": {
"unit": "$",
"value": 10.00
}
},
"priceType": "Recurring"
},
{
"price": {
"taxIncludedAmount": {
"unit": "$",
"value": 0.00
}
},
"priceType": "One-time"
}
],
"quoteItem": [
{
"id": "00001933",
"action": "Add",
"quantity": 1.00,
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933",
"relatedParty": [
{
"id": "001Dp00000JGwiTIAT",
"name": "Test Account",
"role": "Service Account",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT",
"@referredType": "Account"
}
],
"productOffering": [
{
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5",
"name": "TMF648 Product",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5",
"@type": "Product2"
}
]
}
],
"contactMedium": [
{
"mediumType": "Email",
"characteristic": {
"emailAddress": "abc@salesforce.com",
"contactType": "Email"
}
},
{
"mediumType": "Phone",
"characteristic": {
"phoneNumber": "(990) 099-7788",
"contactType": "Phone"
}
},
{
"mediumType": "Fax",
"characteristic": {
"faxNumber": "abc",
"contactType": "Fax"
}
}
]
}
}
GET by ID and Fields
Consider you want to retrieve details of the customer quote ID = 00001205. Get the following details in the output.
- category
- description
- state
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote/00001205?fields=category,description,state
Sample Response
200 OK
{
"PageInfo": "Page 1",
"PageSize": 50,
"result": {
"category": "Existing Customer - Downgrade",
"description": "TMF648 testing",
"id": "00001205",
"state": "In Review",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001205"
}
}
GET List
Consider there are multiple customer quotes in the system and you want to list all of them.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote
Sample Response
The sample response is assuming there are 3 quotes in system, displaying all the sub-resources, if present.
200 OK
{
"PageInfo": "Page 1",
"PageSize": 50,
"result": [
{
"category": "Existing Customer - Upgrade",
"description": "TMF648 testing 1",
"id": "00001204",
"quoteDate": "2023-09-13T03:46:02.000+0000",
"state": "Draft",
"agreement": [
{
"id": "00000945",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000945"
}
],
"billingAccount": [
{
"id": "CD123",
"name": "Acme",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123"
}
],
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001204",
"version": "V1",
"relatedParty": [
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234",
"id": "1234",
"name": "Common Org Account",
"role": "Account",
"@referredType": "Account",
},
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD",
"id": "003Do00000PSgbhIAD",
"name": "common",
"role": "Contact",
"@referredType": "Account",
}
],
"contactMedium": [
{
"mediumType": "Email",
"characteristic": {
"contactType": "Email",
"emailAddress": "abc@salesforce.com"
}
},
{
"mediumType": "Phone",
"characteristic": {
"contactType": "Phone",
"phoneNumber": "(990) 099-7788"
}
},
{
"mediumType": "Fax",
"characteristic": {
"contactType": "Fax",
"faxNumber": "abc"
}
}
],
"quoteTotalPrice": [
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 10.00
}
},
"priceType": "Recurring"
},
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 0.00
}
},
"priceType": "One-time"
}
],
"quoteItem": [
{
"id": "00001933",
"action": "Add",
"quantity": 1.00,
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933",
"relatedParty": [
{
"id": "001Dp00000JGwiTIAT",
"name": "Test Account",
"role": "Service Account",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT",
"@referredType": "Account"
}
],
"productOffering": [
{
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5",
"name": "TMF648 Product",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5",
"@type": "Product2"
}
]
}
]
},
{
"category": "Existing Customer - Downgrade",
"description": "TMF648 testing",
"id": "00001205",
"quoteDate": "2023-09-13T03:46:20.000+0000",
"state": "In Review",
"agreement": [
{
"id": "00000944",
"name": "TMForum",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944"
}
],
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001205",
"version": "V1",
"contactMedium": [
{
"mediumType": "Email",
"characteristic": {
"contactType": "Email",
"emailAddress": "abc@salesforce.com"
}
},
{
"mediumType": "Phone",
"characteristic": {
"contactType": "Phone",
"phoneNumber": "(887) 788-5566"
}
},
{
"mediumType": "Fax",
"characteristic": {
"contactType": "Fax",
"faxNumber": "xyz"
}
}
],
"quoteTotalPrice": [
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 10.00
}
},
"priceType": "Recurring"
},
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 0.00
}
},
"priceType": "One-time"
}
],
"quoteItem": [
{
"id": "00001933",
"action": "Add",
"quantity": 1.00,
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933",
"relatedParty": [
{
"id": "001Dp00000JGwiTIAT",
"name": "Test Account",
"role": "Service Account",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT",
"@referredType": "Account"
}
],
"productOffering": [
{
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5",
"name": "TMF648 Product",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5",
"@type": "Product2"
}
]
}
]
},
{
"category": "New Customer",
"description": "TMF648 Testing 3",
"id": "00001206",
"quoteDate": "2023-09-13T03:46:35.000+0000",
"state": "Accepted",
"agreement": [
{
"id": "00000944",
"name": "TMForum",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contract/00000944"
}
],
"billingAccount": [
{
"id": "CD123",
"name": "Acme",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/CD123"
}
],
"quoteTotalPrice": [
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 10.00
}
},
"priceType": "Recurring"
},
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 0.00
}
},
"priceType": "One-time"
}
],
"effectiveQuoteCompletionDate": "2023-09-19T13:58:29.000Z",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/quote/00001206",
"version": "V1",
"relatedParty": [
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/1234",
"id": "1234",
"name": "Common Org Account",
"role": "Account",
"@referredType": "Account",
},
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Contact/003Do00000PSgbhIAD",
"id": "003Do00000PSgbhIAD",
"name": "common",
"role": "Contact",
"@referredType": "Account",
}
],
,
"quoteItem": [
{
"id": "00001933",
"action": "Add",
"quantity": 1.00,
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/QuoteLineItem/00001933",
"relatedParty": [
{
"id": "001Dp00000JGwiTIAT",
"name": "Test Account",
"role": "Service Account",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Account/001Dp00000JGwiTIAT",
"@referredType": "Account"
}
],
"productOffering": [
{
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5",
"name": "TMF648 Product",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5",
"@type": "Product2"
}
]
}
],
"contactMedium": [
{
"mediumType": "Email",
"characteristic": {
"contactType": "Email",
"emailAddress": "xyz@salesforce.com"
}
},
{
"mediumType": "Phone",
"characteristic": {
"contactType": "Phone",
"phoneNumber": "(999) 222-8881"
}
},
{
"mediumType": "Fax",
"characteristic": {
"contactType": "Fax",
"faxNumber": "xyz"
}
}
]
}
]
}
GET List by Fields and Filtering
Consider you want to retrieve all the customer quotes present in the system with applied filter values.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote?fields=category,description,state&state=Draft
Sample Response
200 OK
{
"PageInfo": "Page 1",
"PageSize": 50,
"result": {
"category": "Existing Customer - Upgrade",
"description": "TMF648 testing 1",
"id": "00001204",
"state": "Draft",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001204"
}
}
GET List by limit and offset
Consider you want to
- Retrieve a list of quotes ordered by Date of Creation
- Limit the number of quotes to a maximum of specified limit
- Start the results display from page specified by offset
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote?limit=2&offset=2
NOTE: If there are multiple quotes, the above pagination query - limit=2&offset=2 will start display from page 2 and will have 2 records.
Sample Response
200 OK
{
"PageInfo": "Page 2",
"PageSize": 2,
"result": {
"category": "New Customer",
"description": "TMF648 Testing 3",
"id": "00001206",
"quoteDate": "2023-09-13T03:46:35.000+0000",
"state": "Accepted",
"agreement": [
{
"id": "00000944",
"name": "TMForum",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Contract/00000944"
}
],
"billingAccount": [
{
"id": "CD123",
"name": "Acme",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Account/CD123"
}
],
"effectiveQuoteCompletionDate": "2023-09-19T13:58:29.000Z",
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/quote/00001206",
"version": "V1",
"relatedParty": [
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Account/1234",
"id": "1234",
"name": "Common Org Account",
"role": "Account",
"@referredType": "Account",
},
{
"href": "/services/apexrest/vlocity_cmt/tmforum/quotemanagement/v60.0/Contact/003Do00000PSgbhIAD",
"id": "003Do00000PSgbhIAD",
"name": "common",
"role": "Contact",
"@referredType": "Account",
}
],
"contactMedium": [
{
"mediumType": "Email",
"characteristic": {
"contactType": "Email",
"emailAddress": "xyz@salesforce.com"
}
},
{
"mediumType": "Phone",
"characteristic": {
"contactType": "Phone",
"phoneNumber": "(999) 222-8881"
}
},
{
"mediumType": "Fax",
"characteristic": {
"contactType": "Fax",
"faxNumber": "xyz"
}
}
]
}
}
POST
Consider you want to create a new customer quote with all first level attributes.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v60.0/quote
Sample Request
{
"description": "TMF648",
"category": "New Customer",
"quoteItem": [
{
"quantity": 1,
"action": "add",
"productOffering": [
{
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5",
"name": "TMF648 Product",
"@type": "Product2"
}
]
}
]
}
Sample Response
{
"quoteItem": [
{
"productOffering": [
{
"@type": "Product2",
"name": "TMF648 Product",
"href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/Product2/686c69b9-9def-2dc2-4f69-11141e9f92c5",
"id": "686c69b9-9def-2dc2-4f69-11141e9f92c5"
}
],
"quantity": 1.00,
"action": "Add",
"href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/QuoteLineItem/00001121",
"id": "00001121"
}
],
"quoteTotalPrice": [
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 10.00
}
},
"priceType": "Recurring"
},
{
"price": {
"taxIncludedAmount": {
"unit" : "$",
"value": 0.00
}
},
"priceType": "One-time"
}
],
"version": "V1",
"href": "/services/apexrest/vlocity_cmt/tmforum/quoteManagement/v57.0/quote/00002527",
"state": "Draft",
"quoteDate": "2023-10-09T15:04:57.000+0000",
"category": "New Customer",
"description": "TMF648",
"id": "00002527"
}