[ 
https://issues.apache.org/jira/browse/ACE-151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13054396#comment-13054396
 ] 

Marcel Offermans commented on ACE-151:
--------------------------------------

First of all, thanks for the feedback. In short, I like how you guys extended 
and detailed the interface. Between Bram's feedback and yours I think we nailed 
the main concepts pretty well this way and if nobody else objects (or adds to 
it) this is what I'm going to work on.

> Create a REST client API
> ------------------------
>
>                 Key: ACE-151
>                 URL: https://issues.apache.org/jira/browse/ACE-151
>             Project: Ace
>          Issue Type: New Feature
>            Reporter: Marcel Offermans
>            Assignee: Marcel Offermans
>
> After some discussion on the mailing list, we agreed that it makes sense to 
> add a REST based client API to ACE to make it easier to integrate ACE in 
> different environments.
> The main requirement for this API is that it should expose the whole client 
> API (currently available as OSGi services) using REST. Because each client 
> interacts with the server using a local checkout, this probably means some 
> means to work on sessions (which might seem like something that's not done in 
> REST but in this case a session is like a working area that you create for 
> manipulating its contents and finally commit back to the server and clean up. 
> Authentication can be added via normal basic authentication, so there's no 
> need to explicitly design that into the API.
> So an interaction with the server could start somewhat like this:
> POST /ace/client -> sessionid
> This will trigger a basic authentication, which, if it succeeds, will return 
> a session id. It makes sense to also implicitly do a checkout.
> GET /ace/client/mysessionid/feature -> list of feature id's
> Will return a list of features in the repository.
> PUT /ace/client/mysessionid/feature/MyCustomFeature
> Will create a new feature with a unique id called "MyCustomFeature". Maybe 
> the put will also contain some (JSON/XML) data to describe the feature.
> In general, we can map all our entities (artifacts, features, distributions 
> and targets) as well as all our associations (artifact2feature, 
> feature2distribution, distribution2target) to REST endpoints that are very 
> similar, so:
> /ace/client/<sessionid>
>    /artifact
>    /feature
>    ...
> And for each of those repository objects (as they're called in the code) we 
> can do things like:
> GET /ace/client/<sessionid>/<repositoryobjecttype>/<objectid>/tag
> To get a list of all tags associated with object "objectid".
> PUT /ace/client/<sessionid>/<repositoryobjecttype>/<objectid>/tag/description 
> "This is a description."
> To set/replace the description tag.
> Finally, for the 'checkout', 'revert' and 'commit' commands, we could do 
> something like this:
> GET /ace/client/<sessionid>/{commit,revert,update}
> Which will return success or failure.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to