GraphQL is a significantly enhanced REST API. The GraphQL website outlines some of the benefits over standard REST services:
- Ask for what you need, get exactly that
- Get many resources in a single request
- Describe what’s possible with a type system
When coded properly, multiple resources are handled simultaneously on the server, making it more performant. The challenge is that GraphQL requires:
- a schema which many developers may have difficulty building
- server-side code to handle queries and mutations
- a GraphiQL server as documentation and test the APIs (like the Swagger UI provides for OpenAPI specifications)
A lot of this would be beyond many developers.
However, with a wizard or chatbot or other intelligent interface, it's possible to identify
- queries and mutations
- objects to return / pass
- arguments for querying those objects
- properties of those objects, descriptions and data types
- "meta-logic" to map between related object types (e.g. how to get Contacts for a Company in this application)
- query root for each "application's" GraphQL endpoint (e.g. https://server.com/PaulsApp/graphql). Bear in mind also that each "application" may cover multiple NSFs
Domino has the core CRUD / query API already there to intelligently map the schema to microfunctions to validate and process queries and mutations as a GraphQL server. The options available for GraphQL are not extensive, so I don't think the logic to convert the schema and associated meta-logic to actual code would not be too complex. The performance enhancements of gRPC / DQL may better handle parallel processing from a single GraphQL request.
Taking an innovative approach, the GraphiQL interface could be extended - for authorised users - to add / remove queries, mutations, objects, properties etc.
Of course this functionality could also be used to improve on the DAS APIs for mail, calendar and freebusy. That could provide a better performant Verse UI, as well as an API that pulls together multiple "mailboxes" into a single Verse UI for "team mailboxes", multiple calendar overlays etc.
Moving idea to product : Domino Designer