BrAPI
BrAPI copied to clipboard
Add compatibility checker to `/serverinfo`
While it's possible to manually do this inside a given implementation, this would more easily allow tools to determine if implementations contain the minimum implemented calls necessary for compatibility without having to parse the /serverinfo
results. We discussed this a bit at PAG, so I'm hoping that @BrapiCoordinatorSelby can add to the details.
The Problem: Two systems are reported to be BrAPI compatible, but support different sets of endpoints and are therefore not compatible with each other. For example, Field Book is BrAPI compatible requiring Studies, OUs, Variables, and Observations, and GIGWA is also BrAPI compatible supporting the Studies, AlleleMatrix, and Variants endpoints. Both BrAPI compatible, but not with each other. This causes confusion and frustration.
Solution:
The current solution is for every client application to access the /serverinfo
endpoint of a server it is pointed at. This happens before any other calls are made. The data returned by /serverinfo
should be enough information to determine compatibility, but it is clumsy to do, and the logic needs to be done on the client side.
The proposed solution is to make a modification to /serverinfo
or make a new endpoint to push this logic to the server side. Something where the client can submit the endpoints it requires, and the server can respond with a simpler 👍 or 👎. I have some ideas of what that might look like, including method (GET, POST, etc), endpoint, BrAPI version, and criticality(required vs optional).
This seems like an easy, low hanging fruit to improve the standard. Always open to ideas and opinions.