Product Offering Use Cases
I want to
Request Type
Example URL
Retrieve and display details of a requested product offering. GET by ID {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}NOTE: For invalid category ID, you will receive HTTP 404 error.Based on the provided field values, retrieve and display details of a particular product offering ID. GET by ID and Fields {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}?fields=name,description,isBundleList all the product offerings present in the system. GET List {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingList all the product offerings present in the system based on the provided field values. GET List with Fields {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?fields=name,description,isBundleList all the product offerings present in the inventory based on the provided field values and filter applied. GET List by Fields and Filtering {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?lifecycleStatus=Active&fields=lifecycleStatus,name,descriptionLimit the number of product offering to a maximum of specified limit and display results from the page specified by an offset. GET List by limit and offset {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?offset=1&limit=2Create a product offering. POST {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOfferingUpdate a product offering. PATCH {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}Delete a product offering. DELETE {https://MyDomainLoginUrl} /services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/{ID}
GET by ID
Consider you want to retrieve details of a product offering from the inventory.
Context-Based Override Resolution
The TMF620 Product Catalog Management API now supports accurate resolution of product configurations, attributes, and pricing within specific bundle contexts through enhanced override handling capabilities.
What’s Changed
Previously, when retrieving product details from bundled product hierarchies, the API would:
Return duplicate records for child products that were overridden at multiple hierarchy levels
Resolve child product attributes using only the immediate parent context
The enhanced API now correctly resolves a single, contextually accurate representation of products and their configurations based on the specified bundle hierarchy.
Key Capabilities
The API supports three types of context-specific overrides:
Child Item Overrides : Retrieve bundle-specific child product configurations, including quantity, selling periods, and inclusion/exclusion rules
Attribute Overrides : Access characteristic values (such as data balance, speed, or capacity) that differ within specific bundle contexts
Price List Entry Overrides : Retrieve bundle-specific pricing instead of standard product pricing
New Query Parameters
Three new query parameters enable context-based resolution:
Parameter Type Description handleOverridesBoolean Controls override resolution behavior. When true, returns only contextually relevant overrides; when false or omitted, returns all configurations including base and overridden values. parentContextString The unique product ID of the root or bundle product providing context for override resolution. hierarchyString The complete path from root product to target product, used when a child product appears multiple times in the bundle structure. Format: rootProductId<parentProductId<childProductId
Usage Examples
Consider a product hierarchy: Triple Play Bundle → Internet Services → Fiber Internet 1Gbps
Example 1: Retrieve standalone product with all attributes (default behavior)
1 GET /productOffering/{productId}
Returns all attributes (base + all overridden values from all contexts)
Example 2: Retrieve product with base attributes only
1 GET /productOffering/{productId}?handleOverrides=true
Returns only the base product attributes without any overrides
Example 3: Retrieve product in specific bundle context
1 GET /productOffering/{productId}?handleOverrides=true&parentContext={bundleProductId}
Returns the product with attributes and configurations as overridden within the specified parent bundle
Example 4: Retrieve product with explicit hierarchy path
1 GET /productOffering/{productId}?handleOverrides=true&hierarchy={rootId}<{parentId}<{productId}
Returns the product resolved through the specified hierarchy path, useful when a product appears multiple times in the bundle structure
When handleOverrides is set to true, the API retrieves all overridden price list entries regardless of hierarchy position within the bundle
Accurate override resolution requires passing the correct parentContext or hierarchy parameters
Without context parameters, the API defaults to standalone product resolution
Context-based resolution applies to GET operations on the productOffering resource
GET by ID and Fields
Consider you want to retrieve details of the product offer ID = 0b1a75ff-f9ee-2547-2c57-e2f27b860356 and get the name, description and isBundle details in the output.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/0b1a75ff-f9ee-2547-2c57-e2f27b860356?fields=name,description,isBundle
Sample Response
1 200 OK
2 {
3 {
4 "PageInfo": "Page 1 of 1",
5 "PageSize": 50,
6 "result": {
7 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
8 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/0b1a75ff-f9ee-2547-2c57-e2f27b860356",
9 "isBundle": false,
10 "name": "Airtel Wifi Router"
11 }
12 }
13 }
GET List
Consider you want to retrieve details of all the product offerings in the inventory.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering
Sample Response
1 200 OK
2 {
3 "PageInfo": "Page 1 of 1",
4 "PageSize": 50,
5 "result": [
6 {
7 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
8 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE",
9 "id": "0b1a75ff-f9ee-2547-2c57-e2f27b860356",
10 "isBundle": false,
11 "isSellable": true,
12 "lastUpdate": "2023-08-24T06:49:33.000+0000",
13 "lifecycleStatus": "Active",
14 "name": "Airtel Wifi Router",
15 "productNumber": "Airtel_Wifi_Router",
16 "version": "1.0",
17 "validFor": {
18 "endDateTime": "2022-08-25T00:00:00.000+0000",
19 "startDateTime": "2022-05-23T00:00:00.000+0000"
20 },
21 "productOfferingPrice": [
22 {
23 "version": "1.0",
24 "priceType": "One-time",
25 "name": "a3GDo0000008rT3",
26 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT3MAI",
27 "isBundle": false,
28 "price": {
29 "amount": "0"
30 }
31 }
32 ]
33 },
34 {
35 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
36 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfmIAE",
37 "id": "829c48a3-6b85-5d49-1f1f-9589b7d42816",
38 "isBundle": false,
39 "isSellable": true,
40 "lastUpdate": "2023-08-24T06:49:46.000+0000",
41 "lifecycleStatus": "Active",
42 "name": "Airtel Wifi Router",
43 "productNumber": "Airtel_Wifi_Router",
44 "version": "1.0",
45 "validFor": {
46 "endDateTime": "2022-08-25T00:00:00.000+0000",
47 "startDateTime": "2022-05-23T00:00:00.000+0000"
48 },
49 "productOfferingPrice": [
50 {
51 "version": "1.0",
52 "priceType": "One-time",
53 "name": "a3GDo0000008rT8",
54 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT8MAI",
55 "isBundle": false,
56 "price": {
57 "amount": "0"
58 }
59 }
60 ]
61 }
62 ]
63 }
GET List with Fields
Consider you want to retrieve all the product offerings by applying the requested fields.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?fields=name,description,isBundle
Sample Response
1 200 OK
2
3 {
4 "PageInfo": "Page 1 of 1",
5 "PageSize": 50,
6 "result": [
7 {
8 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
9 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE",
10 "isBundle": false,
11 "name": "Airtel Wifi Router"
12 },
13 {
14 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
15 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfmIAE",
16 "isBundle": false,
17 "name": "Airtel Wifi Router"
18 },
19 {
20 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
21 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfrIAE",
22 "isBundle": false,
23 "name": "Airtel Wifi Router"
24 }
25 ]
26 }
GET List by Fields and Filtering
Consider you want to retrieve all the product offerings by a specified filter.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?lifecycleStatus=Active&fields=lifecycleStatus,name,description
Sample Response
1 200 OK
2 {
3 "PageInfo": "Page 1 of 1",
4 "PageSize": 50,
5 "result": [
6 {
7 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
8 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE",
9 "lifecycleStatus": "Active",
10 "name": "Airtel Wifi Router"
11 },
12 {
13 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
14 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfmIAE",
15 "lifecycleStatus": "Active",
16 "name": "Airtel Wifi Router"
17 },
18 {
19 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
20 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfrIAE",
21 "lifecycleStatus": "Active",
22 "name": "Airtel Wifi Router"
23 }
24 ]
25 }
GET List by limit and offset
Consider you want to retrieve perform the following.
Limit the number of product offerings to a maximum of specified limit
Display results from the page specified by an offset
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering?offset=1&limit=2
Sample Response
1 200 OK
2
3 {
4 "PageInfo": "Page 1 of 4",
5 "PageSize": 2,
6 "result": [
7 {
8 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
9 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfhIAE",
10 "id": "0b1a75ff-f9ee-2547-2c57-e2f27b860356",
11 "isBundle": false,
12 "isSellable": true,
13 "lastUpdate": "2023-08-24T06:49:33.000+0000",
14 "lifecycleStatus": "Active",
15 "name": "Airtel Wifi Router",
16 "productNumber": "Airtel_Wifi_Router",
17 "version": "1.0",
18 "validFor": {
19 "endDateTime": "2022-08-25T00:00:00.000+0000",
20 "startDateTime": "2022-05-23T00:00:00.000+0000"
21 },
22 "productOfferingPrice": [
23 {
24 "version": "1.0",
25 "priceType": "One-time",
26 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT3MAI",
27 "isBundle": false,
28 "name": "a3GDo0000008rT3",
29 "price": {
30 "amount": "0"
31 }
32 }
33 ]
34 },
35 {
36 "description": "Airtel Wifi Router with 1000Mbps Bandwidth",
37 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iAfmIAE",
38 "id": "829c48a3-6b85-5d49-1f1f-9589b7d42816",
39 "isBundle": false,
40 "isSellable": true,
41 "lastUpdate": "2023-08-24T06:49:46.000+0000",
42 "lifecycleStatus": "Active",
43 "name": "Airtel Wifi Router",
44 "productNumber": "Airtel_Wifi_Router",
45 "version": "1.0",
46 "validFor": {
47 "endDateTime": "2022-08-25T00:00:00.000+0000",
48 "startDateTime": "2022-05-23T00:00:00.000+0000"
49 },
50 "productOfferingPrice": [
51 {
52 "version": "1.0",
53 "priceType": "One-time",
54 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo0000008rT8MAI",
55 "isBundle": false,
56 "name": "a3GDo0000008rT8",
57 "price": {
58 "amount": "0"
59 }
60 }
61 ]
62 }
63 ]
64 }
POST
Consider you want to create a new product offering.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering
Sample Request
1 {
2 "productOfferingPrice": [
3 {
4 "price": {
5 "amount": "0"
6 },
7 "name": "a3GDo00000090sT",
8 "isBundle": false,
9 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sTMAQ",
10 "priceType": "One-time",
11 "version": "1.0"
12 }
13 ],
14 "version": "1.0 ",
15 "lifecycleStatus": "Active",
16 "validFor": {
17 "endDateTime": "2022-08-25T00:00:00Z",
18 "startDateTime": "2022-05-23T00:00:00Z"
19 },
20 "isSellable": "true",
21 "isBundle": "false",
22 "productNumber": "Airtel_Wifi_Router",
23 "name": "Airtel Wifi Router",
24 "description": "Airtel Wifi Router with 1000Mbps Bandwidth"
25 }
Sample Response
1 200 OK
2 {
3 "productOfferingPrice": [
4 {
5 "price": {
6 "amount": "0"
7 },
8 "name": "a3GDo00000090sT",
9 "isBundle": *false*,
10 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sYMAQ",
11 "priceType": "One-time",
12 "version": "1.0"
13 }
14 ],
15 "validFor": {
16 "startDateTime": "2022-05-23T00:00:00.000+0000",
17 "endDateTime": "2022-08-25T00:00:00.000+0000"
18 },
19 "version": "1.0",
20 "productNumber": "Airtel_Wifi_Router",
21 "name": "Airtel Wifi Router",
22 "lifecycleStatus": "Active",
23 "lastUpdate": "2023-09-27T09:42:58.000+0000",
24 "isSellable": *true*,
25 "isBundle": *false*,
26 "id": "1f00a691-650f-ce61-d3f3-53b6f988cb9c",
27 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iQGbIAM",
28 "description": "Airtel Wifi Router with 1000Mbps Bandwidth"
29 }
PATCH
Consider for the product offer ID = 1f00a691-650f-ce61-d3f3-53b6f988cb9c you want to update first level attributes and sub-resources.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/{namespace}/tmforum/productopenapi/v1/productOffering/1f00a691-650f-ce61-d3f3-53b6f988cb9c
Sample Request
1 {
2 "version": "2.0 ",
3 "lifecycleStatus": "Active",
4 "validFor": {
5 "endDateTime": "2022-08-31T00:00:00Z",
6 "startDateTime": "2022-05-23T00:00:00Z"
7 },
8 "productNumber": "Airtel_Wifi_Router",
9 "name": "updated - Airtel Wifi Router",
10 "description": "updated - Airtel Wifi Router with 1000Mbps Bandwidth"
11 }
Sample Response
1 {
2 "productOfferingPrice": [
3 {
4 "price": {
5 "amount": "0"
6 },
7 "name": "a3GDo00000090sd",
8 "isBundle": false,
9 "href": "/services/data/v57.0/sobjects/vlocity_cmt__PriceListEntry__c/a3GDo00000090sdMAA",
10 "priceType": "One-time",
11 "version": "2.0"
12 }
13 ],
14 "validFor": {
15 "startDateTime": "2022-05-23T00:00:00.000+0000",
16 "endDateTime": "2022-08-31T00:00:00.000+0000"
17 },
18 "version": "2.0",
19 "productNumber": "Airtel_Wifi_Router",
20 "name": "updated - Airtel Wifi Router",
21 "lifecycleStatus": "Active",
22 "lastUpdate": "2023-09-27T09:45:44.000+0000",
23 "isSellable": true,
24 "isBundle": false,
25 "id": "1f00a691-650f-ce61-d3f3-53b6f988cb9c",
26 "href": "/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/01tDo000000iQGbIAM",
27 "description": "updated - Airtel Wifi Router with 1000Mbps Bandwidth"
28 }
DELETE
Consider you want to delete a product offering ID: 3830.
Sample URL
https://vlocity-1f5-dev-ed.develop.my.salesforce.com/services/apexrest/vlocity_cmt/tmforum/productopenapi/v1/productOffering/3830
Sample Response