Open knz opened 4 years ago
Hi @knz, I've guessed the C-ategory of your issue and suitably labeled it. Please re-label if inaccurate.
While you're here, please consider adding an A- label to help keep our repository tidy.
:owl: Hoot! I am a Blathers, a bot for CockroachDB. My owner is otan.
@bdarnell this issue reflects what we talked about last week.
@itsbilal as you have expressed interest in this, I'd ask you to review the issue, check whether the overall direction makes sense, and whether you have any improvements to the proposed plan. If it all makes sense, then I'd encourage you to file more fined grained issues that identify the individual steps we'd need to carry out, and for each of them describe the specific direct outcomes we're expecting (so that it's clear when we can close the issue).
@taroface I encourage you too to look at the "summary" at the top of this issue, as it follows up on the initiatives in the Dev Interfaces team and suggests how we're going to move forward. If you have any suggestions about UX for end-users, we'll take them too.
We have marked this issue as stale because it has been inactive for 18 months. If this issue is still relevant, removing the stale label or adding a comment will keep it active. Otherwise, we'll close it in 10 days to keep the issue queue tidy. Thank you for your contribution to CockroachDB!
This issue is an "epic" that describes what we are aiming for through the 21.1 cycle and beyond.
Summary: in v21.1 we are going to:
/_admin/v1
, and/_status
URL prefixes for consumption by end-users. In particular/_status
will be eventually removed e.g. in v21.2./api/v2
URL prefix under which all public services will be available. From then on, all API additions for end-users will go under/api
and follow our general API versioning rules. It will be possible for multiple versions to co-exist side-by-side to offer forward and backward compatibility to clients./_admin
which will not be versioned and will evolve in lock-step with the UI code, for simplicity by CockroachDB developers. There will be no guarantees offered to external users about the behavior of/_admin
. We will also migrate anything under/_status
and/debug
used by the admin UI to live under/_admin
./api
and one under/_admin
. Only the former will be public and documented./debug
will continue to be a special "anything goes" so that CockroachDB developers can quickly add or change troubleshooting endpoints there. However, any debug endpoint useful for the admin UI will also have an entry point under/_admin
and any debug endpoint with value to end-users will need to be "promoted" under the/api
tree./health
will also continue to be special and will not change URLs nor behavior in this cycle. However, we're going to attempt to pull it out of mandatory TLS, so that non-TLS HTTP clients can check health too. (This is a separate project)Internal changes
We acknowledge that all our HTTP APIs today are also not used internally by RPC clients inside CockroachDB; and conversely all RPC services are otherwise not used by HTTP clients. Therefore:
This will greatly reduce the complexity of the server code, and also ensure that our RPC and HTTP authentication mechanisms are clearly separate.
Then at a later phase (see separate issue TBD) connect the SQL layer to the (new) HTTP methods via the new HTTP-over-SQL gateway (new project/component).
Possible strategy (needs to be discussed / refined further)
/api/v1
tree with just a few of the APIs we already know are popular and need to be provided:/_admin
(i.e. bring all uses of/_status
under/_admin
, and add URL aliases accordinglyRelated wiki pages:
Related github issues:
Jira issue: CRDB-3609