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).


---

Reply via email to