Implemented API calls\r
===\r
-The Friendica API aims to be compatible to the [GNU Social API](http://skilledtests.com/wiki/Twitter-compatible_API) and the [Twitter API](https://dev.twitter.com/rest/public). \r
+The Friendica API aims to be compatible to the [GNU Social API](http://skilledtests.com/wiki/Twitter-compatible_API) and the [Twitter API](https://dev.twitter.com/rest/public).\r
\r
Please refer to the linked documentation for further information.\r
\r
* cid: Contact id of the user (important for "contact_allow" and "contact_deny")\r
* network: network of the user\r
\r
+#### Errors\r
+When an error occour in API call, an HTTP error code is returned, with an error message\r
+Usually:\r
+- 400 Bad Request: if parameter are missing or items can't be found\r
+- 403 Forbidden: if authenticated user is missing\r
+- 405 Method Not Allowed: if API was called with invalid method, eg. GET when API require POST\r
+- 501 Not Implemented: if requested API doesn't exists\r
+- 500 Internal Server Error: on other error contitions\r
+\r
+Error body is\r
+\r
+json:\r
+```\r
+ {\r
+ "error": "Specific error message",\r
+ "request": "API path requested",\r
+ "code": "HTTP error code"\r
+ }\r
+```\r
+\r
+xml:\r
+```\r
+ <status>\r
+ <error>Specific error message</error>\r
+ <request>API path requested</request>\r
+ <code>HTTP error code</code>\r
+ </status>\r
+```\r
+\r
+---\r
### account/rate_limit_status\r
\r
+---\r
### account/verify_credentials\r
#### Parameters\r
* skip_status: Don't show the "status" field. (Default: false)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### conversation/show\r
Unofficial Twitter command. It shows all direct answers (excluding the original post) to a given id.\r
\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### direct_messages\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* skip_status \r
+* skip_status\r
\r
+---\r
### direct_messages/all\r
#### Parameters\r
* count: Items per page (default: 20)\r
* max_id: maximum id\r
* getText: Defines the format of the status field. Can be "html" or "plain"\r
\r
+---\r
### direct_messages/conversation\r
Shows all direct messages of a conversation\r
#### Parameters\r
* getText: Defines the format of the status field. Can be "html" or "plain"\r
* uri: URI of the conversation\r
\r
+---\r
### direct_messages/new\r
#### Parameters\r
-* user_id: id of the user \r
+* user_id: id of the user\r
* screen_name: screen name (for technical reasons, this value is not unique!)\r
* text: The message\r
* replyto: ID of the replied direct message\r
* title: Title of the direct message\r
\r
+---\r
### direct_messages/sent\r
#### Parameters\r
* count: Items per page (default: 20)\r
* getText: Defines the format of the status field. Can be "html" or "plain"\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### favorites\r
#### Parameters\r
* count: Items per page (default: 20)\r
\r
Favorites aren't displayed to other users, so "user_id" and "screen_name". So setting this value will result in an empty array.\r
\r
+---\r
### favorites/create\r
#### Parameters\r
* id\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### favorites/destroy\r
#### Parameters\r
* id\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### followers/ids\r
#### Parameters\r
* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false)\r
#### Unsupported parameters\r
* user_id\r
* screen_name\r
-* cursor \r
+* cursor\r
\r
Friendica doesn't allow showing followers of other users.\r
\r
+---\r
+### friendica/activity/<verb>\r
+#### parameters\r
+* id: item id\r
+\r
+Add or remove an activity from an item.\r
+'verb' can be one of:\r
+- like\r
+- dislike\r
+- attendyes\r
+- attendno\r
+- attendmaybe\r
+\r
+To remove an activity, prepend the verb with "un", eg. "unlike" or "undislike"\r
+Attend verbs disable eachother: that means that if "attendyes" was added to an item,\r
+adding "attendno" remove previous "attendyes".\r
+Attend verbs should be used only with event-related items (there is no check at the moment)\r
+\r
+#### Return values\r
+\r
+On success:\r
+json\r
+```"ok"```\r
+\r
+xml\r
+```<ok>true</ok>```\r
+\r
+On error:\r
+HTTP 400 BadRequest\r
+\r
+---\r
### friendica/photo\r
#### Parameters\r
* photo_id: Resource id of a photo.\r
+* scale: (optional) scale value of the photo\r
\r
Returns data of a picture with the given resource.\r
+If 'scale' isn't provided, returned data include full url to each scale of the photo.\r
+If 'scale' is set, returned data include image data base64 encoded.\r
+\r
+possibile scale value are:\r
+0: original or max size by server settings\r
+1: image with or height at <= 640\r
+2: image with or height at <= 320\r
+3: thumbnail 160x160\r
+\r
+4: Profile image at 175x175\r
+5: Profile image at 80x80\r
+6: Profile image at 48x48\r
+\r
+An image used as profile image has only scale 4-6, other images only 0-3\r
+\r
+#### Return values\r
+\r
+json\r
+```\r
+ {\r
+ "id": "photo id"\r
+ "created": "date(YYYY-MM-GG HH:MM:SS)",\r
+ "edited": "date(YYYY-MM-GG HH:MM:SS)",\r
+ "title": "photo title",\r
+ "desc": "photo description",\r
+ "album": "album name",\r
+ "filename": "original file name",\r
+ "type": "mime type",\r
+ "height": "number",\r
+ "width": "number",\r
+ "profile": "1 if is profile photo",\r
+ "link": {\r
+ "<scale>": "url to image"\r
+ ...\r
+ },\r
+ // if 'scale' is set\r
+ "datasize": "size in byte",\r
+ "data": "base64 encoded image data"\r
+ }\r
+```\r
+\r
+xml\r
+```\r
+ <photo>\r
+ <id>photo id</id>\r
+ <created>date(YYYY-MM-GG HH:MM:SS)</created>\r
+ <edited>date(YYYY-MM-GG HH:MM:SS)</edited>\r
+ <title>photo title</title>\r
+ <desc>photo description</desc>\r
+ <album>album name</album>\r
+ <filename>original file name</filename>\r
+ <type>mime type</type>\r
+ <height>number</height>\r
+ <width>number</width>\r
+ <profile>1 if is profile photo</profile>\r
+ <links type="array">\r
+ <link type="mime type" scale="scale number" href="image url"/>\r
+ ...\r
+ </links>\r
+ </photo>\r
+```\r
\r
### friendica/photos/list\r
\r
Returns a list of all photo resources of the logged in user.\r
\r
+#### Return values\r
+\r
+json\r
+```\r
+ [\r
+ {\r
+ id: "resource_id",\r
+ album: "album name",\r
+ filename: "original file name",\r
+ type: "image mime type",\r
+ thumb: "url to thumb sized image"\r
+ },\r
+ ...\r
+ ]\r
+```\r
+\r
+xml\r
+```\r
+ <photos type="array">\r
+ <photo id="resource_id"\r
+ album="album name"\r
+ filename="original file name"\r
+ type="image mime type">\r
+ "url to thumb sized image"\r
+ </photo>\r
+ ...\r
+ </photos>\r
+```\r
+\r
+---\r
### friends/ids\r
#### Parameters\r
* stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false)\r
#### Unsupported parameters\r
* user_id\r
* screen_name\r
-* cursor \r
+* cursor\r
\r
Friendica doesn't allow showing friends of other users.\r
\r
+---\r
### help/test\r
\r
+---\r
### media/upload\r
#### Parameters\r
* media: image data\r
\r
+---\r
### oauth/request_token\r
#### Parameters\r
-* oauth_callback \r
+* oauth_callback\r
\r
#### Unsupported parameters\r
-* x_auth_access_type \r
+* x_auth_access_type\r
\r
+---\r
### oauth/access_token\r
#### Parameters\r
-* oauth_verifier \r
+* oauth_verifier\r
\r
#### Unsupported parameters\r
-* x_auth_password \r
-* x_auth_username \r
-* x_auth_mode \r
+* x_auth_password\r
+* x_auth_username\r
+* x_auth_mode\r
\r
+---\r
### statuses/destroy\r
#### Parameters\r
* id: message number\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* trim_user \r
+* trim_user\r
\r
+---\r
### statuses/followers\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### statuses/friends\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
+---\r
### statuses/friends_timeline\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### statuses/home_timeline\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### statuses/mentions\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### statuses/public_timeline\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* trim_user \r
+* trim_user\r
\r
+---\r
### statuses/replies\r
#### Parameters\r
* count: Items per page (default: 20)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### statuses/retweet\r
#### Parameters\r
* id: message number\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* trim_user \r
+* trim_user\r
\r
+---\r
### statuses/show\r
#### Parameters\r
* id: message number\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_my_retweet \r
-* trim_user \r
+* include_my_retweet\r
+* trim_user\r
\r
+---\r
### statuses/update, statuses/update_with_media\r
#### Parameters\r
* title: Title of the status\r
* contact_deny\r
* network\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
-* media_ids: (By now only a single value, no array) \r
+* media_ids: (By now only a single value, no array)\r
\r
#### Unsupported parameters\r
* trim_user\r
* place_id\r
* display_coordinates\r
\r
+---\r
### statuses/user_timeline\r
#### Parameters\r
-* user_id: id of the user \r
+* user_id: id of the user\r
* screen_name: screen name (for technical reasons, this value is not unique!)\r
* count: Items per page (default: 20)\r
* page: page number\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
-* include_rts \r
-* trim_user \r
-* contributor_details \r
+* include_rts\r
+* trim_user\r
+* contributor_details\r
\r
+---\r
### statusnet/config\r
\r
+---\r
### statusnet/version\r
\r
#### Unsupported parameters\r
* user_id\r
* screen_name\r
-* cursor \r
+* cursor\r
\r
Friendica doesn't allow showing followers of other users.\r
\r
+---\r
### users/search\r
#### Parameters\r
-* q: name of the user \r
+* q: name of the user\r
\r
#### Unsupported parameters\r
* page\r
* count\r
* include_entities\r
\r
+---\r
### users/show\r
#### Parameters\r
-* user_id: id of the user \r
+* user_id: id of the user\r
* screen_name: screen name (for technical reasons, this value is not unique!)\r
* include_entities: "true" shows entities for pictures and links (Default: false)\r
\r
#### Unsupported parameters\r
* user_id\r
* screen_name\r
-* cursor \r
+* cursor\r
\r
Friendica doesn't allow showing friends of other users.\r
\r
\r
## Implemented API calls (not compatible with other APIs)\r
\r
+---\r
### friendica/group_show\r
Return all or a specified group of the user with the containing contacts as array.\r
\r
* user: array of group members (return from api_get_user() function for each member)\r
\r
\r
+---\r
### friendica/group_delete\r
delete the specified group of contacts; API call need to include the correct gid AND name of the group to be deleted.\r
\r
+---\r
### Parameters\r
* gid: id of the group to be deleted\r
-* name: name of the group to be deleted \r
+* name: name of the group to be deleted\r
\r
#### Return values\r
Array of:\r
* wrong users: empty array\r
\r
\r
+---\r
### friendica/group_create\r
-Create the group with the posted array of contacts as members. \r
+Create the group with the posted array of contacts as members.\r
#### Parameters\r
* name: name of the group to be created\r
\r
* gid: gid of the created group\r
* name: name of the created group\r
* status: „missing user“ | „reactivated“ | „ok“\r
-* wrong users: array of users, which were not available in the contact table \r
+* wrong users: array of users, which were not available in the contact table\r
\r
\r
+---\r
### friendica/group_update\r
-Update the group with the posted array of contacts as members (post all members of the group to the call; function will remove members not posted). \r
+Update the group with the posted array of contacts as members (post all members of the group to the call; function will remove members not posted).\r
#### Parameters\r
* gid: id of the group to be changed\r
* name: name of the group to be changed\r
* gid: gid of the changed group\r
* name: name of the changed group\r
* status: „missing user“ | „ok“\r
-* wrong users: array of users, which were not available in the contact table \r
-\r
+* wrong users: array of users, which were not available in the contact table\r
\r
+---\r
## Not Implemented API calls\r
The following API calls are implemented in GNU Social but not in Friendica: (incomplete)\r
\r
* trends/closest\r
* users/report_spam\r
\r
+---\r
+\r
+---\r
+\r
## Usage Examples\r
### BASH / cURL\r
Betamax has documentated some example API usage from a [bash script](https://en.wikipedia.org/wiki/Bash_(Unix_shell) employing [curl](https://en.wikipedia.org/wiki/CURL) (see [his posting](https://betamax65.de/display/betamax65/43539)).\r