[Owncloud] ownCloud API
Klaas Freitag
freitag at owncloud.com
Thu Jun 28 09:33:46 UTC 2012
On 26.06.2012 17:17, Tom Needham wrote:
> On 26 Jun 2012, at 16:06, Michael Gapczynski wrote:
>
>> We've briefly discussed the implementation of a REST API for ownCloud, but
>> haven't formed any distinct plans for it. I believe we need to set something
>> in place now so developers can start using it and have some nice
>> desktop and mobile integration for the next release. Besides desktop and
>> mobile clients, two Google Summer of Code students also require an API to
>> complete their projects.
>>
>> What we need is a REST API that can handle user authentication and ownCloud
>> instance to instance communication. My idea is that the API is defined by the
>> apps, in which they register actions and requests for the API to listen to.
>> The API will handle the authentication and pass on the actions and requests
>> back to the apps. To ensure a stable API, I believe that actions and requests
>> should be defined in appinfo/info.xml and registered when the app is enabled.
>>
>> An example of an action to revert a file back to a previous version:
>>
>> files_versions/appinfo/info.xml:
>> <api>
>> <action>
>> <name>revert</name>
>> <parameter>
>> <type>string</type>
>> <name>file</name>
>> </parameter>
>> <parameter>
>> <type>int</type>
>> <name>revision</name>
>> </parameter>
>> <class>OCA_Versions</class>
>> <function>rollback</function>
>> </action>
>> </api>
>>
>> The call to the action by a client using the API:
>> POST API/action/revert/
>> file:test.txt
>> revision:1340670981
I like this general idea as this sounds like we can export a whole bunch
of functionality with a couple of XML scripts. Cool.
I don't want to nitpick or start something big on this, however we
should be aware of the fact that this is probably not a REST API, but
rather an exported ownCloud API.
A REST API is a resource based API with a couple of concepts behind [1].
To do the example above REST conform, you could for example POST a
'revert order' in XML on the document, ie.
POST "<file="test.txt"><date ../><reason../></file>" => API/files/reverts
A GET on API/files/reverts will give a list of all reverts done etc. pp.
I am not saying we should to do it this way, yet it makes a difference.
And we should think once in a while if we're REST conform or not. Maybe
calling 'it' the 'ownCloud Exported API' OCEA is also fine.
Two other questions with your proposal:
- How do we do error handling?
- Can/do we need more complex parameters passed to the functions, like
arrays at least? Maybe we can find a standard for this?
What do you think?
Klaas
More information about the Owncloud
mailing list