Github user aledsage commented on the issue:
https://github.com/apache/brooklyn-server/pull/810
TL;DR: I propose we split this PR into two. The `/bundles` part we can
merge pretty quickly. However, the `/types` and `/subtypes` is too
controversial - it probably deserves a `/v2/` of the REST api.
---
I don't want to lose the word "catalog" in the REST api - it's so good at
getting across the meaning for users! The alternative `/type` is just not as
good, in my opinion.
The multiple endpoints of `/types` and `/subtypes` is confusing. I'd model
the latter as just a filter on `/type`. It would be better achieved with an
additional query parameter rather than a separate endpoint.
If designing a `/v2` REST api, we could use `/catalog` instead of `/type`.
However, it will likely take a while to get to a stable and good `/v2` api.
There are other cleanup/improvements we should probably do to the REST api if
we're releasing a new version of it (e.g. exclude the deprecated stuff, get rid
of `/locations` but figure out if we really need to support locations from
brooklyn.properties, find out from the community about other inconsistencies or
hard-to-understand parts of the api).
The meaning of `GET /subtypes/application` looks completely different from
`GET /catalog/applications`. The latter retrieves the catalog items marked as
`template`, but the new api returns everything that implements `Application`.
Perhaps this is an opportunity to get rid of the "entity" versus "template"
distinction (at least in the REST api). The original meaning/intent of
"template" has entirely changed / been misused! I believe it was originally
intended as a partially-complete YAML blueprint that someone would retrieve via
the REST api, and then modify. They'd then POST their .yaml file to deploy
their app. It has now been used as the list of apps to include in a "quick
launch" view. If designing a new `/v2` api, I'd explicitly support a "quick
launch" list and would get rid of the "template" versus "application" versus
"entity" distinction in the REST api (anywhere you can use an entity, you can
use an app; anywhere you need an app then a non-app entity will be auto-wrapped
in a basic-app).
---