Confirmed users
98
edits
(describe a little about the api mechanics) |
|||
Line 54: | Line 54: | ||
Raindrop has been designed to be highly extensible. Third parties can easily and simply add extensions to raindrop which add further attributes to contacts or messages. This introduces come conflict with the requirement to deal with 'application concepts' - we must design our API such that it works with entities like 'message' or 'conversation', while still allowing for extensions to change exactly what attributes and properties these entities possess. | Raindrop has been designed to be highly extensible. Third parties can easily and simply add extensions to raindrop which add further attributes to contacts or messages. This introduces come conflict with the requirement to deal with 'application concepts' - we must design our API such that it works with entities like 'message' or 'conversation', while still allowing for extensions to change exactly what attributes and properties these entities possess. | ||
== The extensible 'api' mechanism == | |||
Like much of raindrop, individual APIs can be defined simply by adding new schema instances to the database. The schema ''rd.ext.api'' defines both the desired entry-point name(s) and the API implementation. As a result, it is possible for an 'extension' to also provide an API to the features that extension provides. | |||
The API will be implemented by way of couchdb [http://wiki.apache.org/couchdb/ExternalProcesses externals processes]. Raindrop provides an "api-runner" which knows how to load API implementations from the database and expose them. | |||
== The 'inflow api' == | == The 'inflow api' == | ||
Line 60: | Line 66: | ||
As of the [[Raindrop/Milestone/Maple|Maple]] milestone there is a start to the server API. Right now it is just focused on conversations, not contacts/identities. | As of the [[Raindrop/Milestone/Maple|Maple]] milestone there is a start to the server API. Right now it is just focused on conversations, not contacts/identities. | ||
This API is implemented using the mechanisms described above - look for the ''couch_docs/api'' files in the raindrop source tree. | |||
Inflow API entry point: '''/raindrop/_api/inflow''' | Inflow API entry point: '''/raindrop/_api/inflow''' |