-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Broadcasting an API implementation's optional capabilities #45
Comments
As discussed in the meeting, here are more possible use cases. These are all from the Cloud WS - perhaps others can add more for other products:
Not saying that all (or any) of them should necessarily be added as extensions. That would need to be discussed on an individual basis. |
This was referenced Sep 20, 2024
Open
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Problem
There are situations where managers of GA4GH API products deem certain functionalities "nice to have", but feel that they may not be necessary for all implementations or that they would unduly raise the bar for new implementers. In such cases, product managers/contributors may recommend or even specify support for such features if implementers (or administrators of individual instances) choose to adopt/provide them.
Currently, there is no common method for service instances to broadcast any such optional capabilities to make clients aware of such support.
An example
A Driver Project may be interested in the GA4GH Task Execution Service (TES) API providing dedicated support for Crypt4GH-encrypted inputs. Such support may require changes to the TES specification, e.g., additional properties in the task resource creation schema). TES product managers may agree that specific Crypt4GH support is useful but find it unreasonable to mandate that all TES implementations provide such support. They would now have at least two options to provide/specify support:
Either way, if TES implementers choose to provide Crypt4GH support, there is currently no common way of letting clients know about this support.
A possible solution
Broadcast optional, but clearly defined capabilities via an API service instance's
GET /service-info
endpoint. To make it easy for clients to consume (identify and understand) such capabitlies, at least the following requirements have to be met:crypt4gh
.This defines an interface for any named
Capability
, listed under propertycapabilities
. The generic interface would require, for any listed capability, at least information on whether that capability issupported
and either or both of adocumentationUrl
and/or aspecificationUrl
(in case there is a specific extension defined).Then, in TES, one could further specify the general interface (this shows the general pattern of how the service info's
Capability
schema could be extended, if necessary; details would of course differ for each capability):Note that the suggested (ad hoc) solution does not support nesting of capabilities. For example,
crypt4gh-decrypt
andcrypt4gh-encrypt
capabilities would have to be listed separately, rathan than as:If support for nesting is desired, this will need additional work and decisions on whether there is a pre-defined number of nestings, whether nesting is always required and so on.
Possible alternatives
I was considering raising this issue in the Service Info API. However, I am not sure whether the service info is definitely the way to go here. Also, I feel that a solution should be dicussed and agreed upon by a wide range of GA4GH API product managers.
Additional context
Broadcasting capabilities via the
/service-info
endpoint would have the additional strong benefit that capabilities would become discoverable through Service Registry API implementations.The text was updated successfully, but these errors were encountered: