Open APIs

  • 1.  TMF620: ProductSpecification API for Devices

    TM Forum Member
    Posted Oct 13, 2021 10:10

    What are the recommendation to model the following case:
    We have a iPhone 11 which is defined as :

    • iPhone 11  comes in two storage sizes: 128GB and  64GB
    • iPhone 11  comes in three colors : Black, White and Purple


    There are four SKUs available for this phone

    sku

    color

    memory

    sku_1

    Black

    128GB

    sku_2

    Purple

    64GB

    sku_3

    Black

    64GB

    sku_4

    White

    64GB

     

    Getting and listing all Color and Memory values  at productSpecification.productSpecCharacteristic[*]. productSpecCharacteristicValue[*] is not usable to us as not all the color – memory  combinations are valid.

    Design Patter described at IG1261 Product Catalog Commercial Modeling Patterns v1.0.0 | TM Forum  section 3.5.7 is relevant to our case.  However, providing the Searchable characteristic: [ color + memory]  as ProductSpecificationCharacteristic is  not clear.

    One option we are thinking is the following:

     "productSpecCharacteristic": [

    {

                "configurable": false,

                "extensible": false,

                "name""SKU",

                "minCardinality": 1,

                "maxCardinality": 1,

                "productSpecCharacteristicValue": [

                    {

                        "valueType""list",

                        "value": [

                            {

                                "name": "productOfferingRef",

                                "type": "object",

                                "value": {

                                    "href": "/productOffering/sku_1",

                                    "name": "iPhone 11 balck 128GB",

                                    "id": "sku_1"

                                }

                            },

                            {

                                "name": "color",

                                "type": "object",

                                "value": {

                                    "key": "black",

                                    "name": "Black",

                                    "id": "black"

                                }

                            },

                            {

                                "name": "memory",

                                "type": "object",

                                "value": {

                                    "key": "128gb",

                                    "name": "128GB",

                                    "id": "128gb"

                                }

                            }

                        ],

                        "validFor": {

                            "endDateTime": "",

                            "startDateTime": "2019-09-11T09:30Z"

                        }

                    },

                    …

                   ]

                  }

      }



    ------------------------------
    Jimmy Kongoli
    Epam Systems, Inc.
    ------------------------------


  • 2.  RE: TMF620: ProductSpecification API for Devices

    TM Forum Member
    Posted Oct 26, 2021 03:32
    Hi Jimmy

    I'm not sure that this approach is the best way to go (having the SKU as the lead characteristic, and embedding the color and memory within that). Given the tools we currently have in the TMF620 catalog model, I would suggest the following:
    • Define a single product specification for iPhone 11
    • Define separate characteristic specifications for memory and color, set them both to configurable false, and given them the list of characteristic spec values
    • Define a characteristic specification for SKU, and give it a list of characteristic spec values (the allowed SKUs)
    • Define a product offering for each SKU, with an appropriate product offering price (the 128gb will be more expensive than 64gb, and if there was a premium color - gold - that would also be more expensive)
    • Now here's the tricky bit. In the product offering, use the ProductSpecificationCharacteristicValueUse to restrict the valid value list in each of your characteristic specs (color, memory, SKU) to a single value, so that the color and memory will match the SKU
    In this way, you have captured the technical definition of an iPhone 11 in the product specification (allowable memories and colors), and dealt with the commercial aspects in the product offerings (the price, and the available combinations of memory/color - depending on your supply chain or business the available combinations might change in the future).

    Hope it helps

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
    ------------------------------



  • 3.  RE: TMF620: ProductSpecification API for Devices

    TM Forum Member
    Posted Oct 26, 2021 09:48
    Edited by Jimmy Kongoli Oct 26, 2021 09:56
    thank you @Jonathan Goldberg

    Few comments below:

    • Our product catalog is not TMF compliant. We are using Commercetools for the product catalog. The data model is simple: product.sku[*]. The product, which could have been close to TMF productSpecification does not encapsulate "characteristic specifications".
    • We are implementing a TMF layer which consumes CommerceToosls API and maps the data to TMF compliance resource data model.
    • To meet UX requirements, TMF approach for rendering a simple PDP page, is not very efficient in our case.

    The implementation would be chatty and there are unnecessary http calls we need to be able to render a simple PDP compared to the tradition hardgoods catalog browsing.

     

    If we follow TMF, the sequence of http calls we need to render a PDP page [ we need to render all valid combinations of characteristic specifications values and the cheapest price ] would be

    • Get /productSpecification/{id}.  Get the list of characteristic specifications for memory and color values. We will actually build this from commerceTools: get all SKUs for a device and build the list of unique values for each of product specification characteristic.
    • Iterate though values of one of the characteristics (for example the color) and Get all respective /productOffering (n http calls)
    • Implement logic to find the cheapest productOffering
    • Aggregate and render PDP page.

                 A more efficient option for us would be to request the list of productOfferings for a given device ( we have here for each productOffering ProductSpecificationCharacteristicValueUse and productOfferingPrice. That is all we need for the PDP page) . In this case we have only one HTTP request call.  




    ------------------------------
    Jimmy Kongoli
    Epam Systems, Inc.
    ------------------------------



  • 4.  RE: TMF620: ProductSpecification API for Devices

    TM Forum Member
    Posted Oct 26, 2021 12:08
    Well Jimmy, you should do what's best for you. There are many ways to skin a cat :) .

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
    ------------------------------