Hi,
Yes - we (Vodafone) are investigating the use of GraphQL as a layer above TMF APIs in certain circumstances, as an alternative to the Composite API's like Customer360.
We would use it for data retrieval in the last-hop to a (typically but not exclusively) mobile presentation layer where (for example) an initial dashboard view needs to collate information from multiple sources like "Hi [Steve]1, your data use this month is [15.2Gb]2 out of your [30Gb]3 allowance, your current spend is [£6]4 with your next bill due on [25-Jan]5. [You are due an upgrade]6 Click here for offers" etc.
- TMF632-Party:
Individual.preferredGivenName
- TMF677-UsageConsumption:
ConsumptionSummary.bucket[name="data"].remainingValue
- TMF677-UsageConsumption:
ConsumptionSummary.bucket[name="data"].reservedValue
- TMF678-CustomerBill:
CustomerBill.remainingAmount
- TMF678-CustomerBill:
CustomerBill.nextDueDate
- TMF637-ProductInventory:
Product.productTerm[].validFor.endDate
Making all these TMF API calls from a mobile client over a radio network while the customer is watching their first app page load where "every millisecond counts" is obviously not a good-look. A specific BackEnd-For-Front-End API can fix this, but is statically bound to the dashboard content. GraphQL might give us a flexible alternative, with a carefully orchestrated query optimisation for maximum concurrency (eg: there is no dependency above between the results of UsageConsumption and ProductInventory - so the calls can be made in parallel) and caching strategy (eg: I expect my usage consumption to be changing by the minute, but my first name has not changed in decades).
As a bonus I might also want the GraphQL resolver to intelligently optimise the backend TMF API calls, to call UsageConsumption with ?fields=remainingValue,reservedValue
and CustomerBill with ?fields=remainingAmount,nextDueDate
- so that I only make one call, and only return the minimum content possible.
I made a brief pitch on this topic at TMF-Accelerate a couple of years ago and (I believe) it was well received - as in "This could be interesting, tell us more if you make progress". We are now making progress in a PoC and I could probably give an update at this year's TMF-Accelerate (February 2025) if there is a relevant slot. There may be feedback from this exercise back into TMForum assets (eg: production of GraphQL-schema, or best practices for dealing with (say) RefOrValue, pagination and other TMF API design patterns).
---
PS: I am acutely aware that I am using "top of my head" ConsumptionSummary/CustomerBill examples in front of Vance in a public forum - and so laying myself open to ridicule :-)
------------------------------
Steve Harrop
Principal Integration Architect
Vodafone Group
------------------------------
Original Message:
Sent: Jan 23, 2025 01:18
From: Vance Shipley
Subject: GraphQL TMF Open API Support
The challenge with using GraphQL is that it requires the existence of a GraphQL Type system describing the service offered. It would be an interesting exercise to try and autogenerate GraphQL Schema from the Open API data model, which exists in the form of a collection of JSON Schemas in a repository and made available publicly through OAS files.
------------------------------
Vance Shipley
SigScale
Original Message:
Sent: Jan 22, 2025 02:58
From: Lester Thomas
Subject: GraphQL TMF Open API Support
I would see value in adding GraphQL as a tool in TM Forum toolkit. I see it as complimentary to having REST APIs (and Async APIs). Our TM Forum guidance should also reflect best-practices for its use: It is not a replacement for REST and its use is limited to Engagement Management domain interactions where we want to empower developers to be responsive and agile in building our customer experiences. @Steve Harrop - do you have any comment?
------------------------------
Lester Thomas
Vodafone Group
Original Message:
Sent: Apr 05, 2024 02:40
From: Sanjay Vyas
Subject: GraphQL TMF Open API Support
Hello All,
Seeking assistance from anyone experienced with GraphQL for Resource Inventory, Location, etc., which aligns more closely with TMF Open API.
I see something define in TMF 630 but not concrete information similar to TMF 639
Regards
Sanjay Vyas
------------------------------
SV
------------------------------