Open theosanderson opened 1 year ago
I think it needs a name. Until now I considered "backend" the name, but it's not a very good one. Pathoplexus API might be suitable (or whatever the future name of the application might be).
I guess it will be confusing (regardless of branding) if we end up with two APIs, LAPIS and Pathoplexus. I don't know if we want to consider somehow placing the LAPIS API under the same umbella API at the same hostname
Maybe we should think a bit more systematically about which components we have, what they (currently and in the near-mid future) do, and what the different terms really mean.
An API is an interface for computer programs to interact. At the moment, to fully use Loculus, programs need to communicate with the backend, LAPIS, and Keycloak, so I would say that the Loculus API is the union of the APIs of these programs. I agree with Theo that post-MVP, we might want to have a more uniform API. Maybe we will extend the Kotlin software but I can also imagine using some existing proxy software (either a dedicated API gateway software or possibly just nginx).
The Kotlin software currently known as "backend" does a bit more than providing an API. It is the centerpiece between LAPIS, submitters, the preprocessing pipeline, the ENA uploader, etc. As such, I think that the piece of software deserves a broader name than just "API". "Backend" is not a good name either because the Kotlin software is just a part of the backend which also consists of LAPIS, Keycloak, and the preprocessing pipelines.
What's a good name then? I'm not sure but a few considerations:
What I think users should see when they open the documentation: There is a section about the "API". There are sub-sections about submission, data fetching, authentication, group creation, etc.
We and others may refer to the overall API as the Loculus API or the Pathoplexus API (if referring to the specific instance). Most users don't need to know that there are different pieces of software underlying different parts of the API.
I mostly think that's a really useful way to think about it Chaoran
Normal users don't need to care, they either use the web interface or the API to work with Loculus, they don't need to know the names of the sub-components of Loculus.
I was going to slightly disagree with that, saying that we'll need to refer to this in some of the docs about submission. But actually I think you're right that this is the evidence that we will need a more uniform API to avoid that (for me the fastest way to initially get there will be with a CLI client, but that's for another issue).
So I agree with your suggestion, provided that we really won't expose this to users.
Avantguardian
was the one I liked most from my ChatGPT brainstorm
I also agree with those thoughts :+1:
Just to add a datapoint: Keycloak (which itself is a huge API) has a "Admin REST API" (which is a certain subset of the API). It has a name that clearly distinguishes it from the rest of the API and the docs quite often reference this name. So something in that spirit is probably a good fit.
retro
, stagehand
I think that this is not required/blocking a release, so I'll move it to post-MVP. Please shout if you have a different opinion!
From the point of view of users it may be better to call our backend an API - and we could make that change throughout the codebase?