]> git.mxchange.org Git - friendica.git/commitdiff
Update API docs
authorFabrixxm <fabrix.xm@gmail.com>
Mon, 8 Feb 2016 09:22:12 +0000 (10:22 +0100)
committerFabrixxm <fabrix.xm@gmail.com>
Mon, 8 Feb 2016 09:22:12 +0000 (10:22 +0100)
Add `friendica/notification` and `friendica/notification/seen` endpoints

Fix some list rendering issues

Move all `friendica/*` endpoints under "Implemented API calls (not compatible with other APIs)" section

Add info about permitted HTTP methods and required auth

doc/api.md

index ced078f55669860ccd6d77a9542e43f72d616420..f050ae4304f98d7682003100eee6781ce2c63aff 100644 (file)
@@ -7,6 +7,21 @@ Please refer to the linked documentation for further information.
 ## Implemented API calls\r
 \r
 ### General\r
+#### HTTP Method\r
+\r
+API endpoints can restrict the method used to request them.\r
+Using an invalid method results in HTTP error 405 "Method Not Allowed".\r
+\r
+In this document, the required method is listed after the endpoint name. "*" means every method can be used.\r
+\r
+#### Auth\r
+\r
+Friendica supports basic http auth and OAuth 1 to authenticate the user to the api.\r
+\r
+OAuth settings can be added by the user in web UI under /settings/oauth/\r
+\r
+In this document, endpoints which requires auth are marked with "AUTH" after endpoint name\r
+\r
 #### Unsupported parameters\r
 * cursor: Not implemented in GNU Social\r
 * trim_user: Not implemented in GNU Social\r
@@ -37,36 +52,37 @@ Error body is
 \r
 json:\r
 ```\r
-       {\r
-         "error": "Specific error message",\r
-         "request": "API path requested",\r
-         "code": "HTTP error code"\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
+<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
+### account/rate_limit_status (*; AUTH)\r
 \r
 ---\r
-### account/verify_credentials\r
+### account/verify_credentials (*; AUTH)\r
 #### Parameters\r
+\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
+### conversation/show (*; AUTH)\r
 Unofficial Twitter command. It shows all direct answers (excluding the original post) to a given id.\r
 \r
-#### Parameters\r
+#### Parameter\r
 * id: id of the post\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -80,7 +96,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original
 * contributor_details\r
 \r
 ---\r
-### direct_messages\r
+### direct_messages (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -93,7 +109,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original
 * skip_status\r
 \r
 ---\r
-### direct_messages/all\r
+### direct_messages/all (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -102,7 +118,7 @@ Unofficial Twitter command. It shows all direct answers (excluding the original
 * getText: Defines the format of the status field. Can be "html" or "plain"\r
 \r
 ---\r
-### direct_messages/conversation\r
+### direct_messages/conversation (*; AUTH)\r
 Shows all direct messages of a conversation\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
@@ -113,7 +129,7 @@ Shows all direct messages of a conversation
 * uri: URI of the conversation\r
 \r
 ---\r
-### direct_messages/new\r
+### direct_messages/new (POST,PUT; AUTH)\r
 #### Parameters\r
 * user_id: id of the user\r
 * screen_name: screen name (for technical reasons, this value is not unique!)\r
@@ -122,7 +138,7 @@ Shows all direct messages of a conversation
 * title: Title of the direct message\r
 \r
 ---\r
-### direct_messages/sent\r
+### direct_messages/sent (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -132,7 +148,7 @@ Shows all direct messages of a conversation
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 ---\r
-### favorites\r
+### favorites (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -144,22 +160,23 @@ Shows all direct messages of a conversation
 * user_id\r
 * screen_name\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
+Favorites aren't displayed to other users, so "user_id" and "screen_name" are unsupported.\r
+Set this values will result in an empty array.\r
 \r
 ---\r
-### favorites/create\r
+### favorites/create (POST,PUT; AUTH)\r
 #### Parameters\r
 * id\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 ---\r
-### favorites/destroy\r
+### favorites/destroy (POST,DELETE; AUTH)\r
 #### Parameters\r
 * id\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 ---\r
-### followers/ids\r
+### followers/ids (*; AUTH)\r
 #### Parameters\r
 * stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false)\r
 \r
@@ -171,139 +188,7 @@ Favorites aren't displayed to other users, so "user_id" and "screen_name". So se
 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, 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
----\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
+### friends/ids (*; AUTH)\r
 #### Parameters\r
 * stringify_ids: Should the id numbers be sent as text (true) or number (false)? (default: false)\r
 \r
@@ -315,15 +200,15 @@ xml
 Friendica doesn't allow showing friends of other users.\r
 \r
 ---\r
-### help/test\r
+### help/test (*)\r
 \r
 ---\r
-### media/upload\r
+### media/upload (POST,PUT; AUTH)\r
 #### Parameters\r
 * media: image data\r
 \r
 ---\r
-### oauth/request_token\r
+### oauth/request_token (*)\r
 #### Parameters\r
 * oauth_callback\r
 \r
@@ -331,7 +216,7 @@ Friendica doesn't allow showing friends of other users.
 * x_auth_access_type\r
 \r
 ---\r
-### oauth/access_token\r
+### oauth/access_token (*)\r
 #### Parameters\r
 * oauth_verifier\r
 \r
@@ -341,7 +226,7 @@ Friendica doesn't allow showing friends of other users.
 * x_auth_mode\r
 \r
 ---\r
-### statuses/destroy\r
+### statuses/destroy (POST,DELETE; AUTH)\r
 #### Parameters\r
 * id: message number\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
@@ -350,15 +235,21 @@ Friendica doesn't allow showing friends of other users.
 * trim_user\r
 \r
 ---\r
-### statuses/followers\r
+### statuses/followers (*; AUTH)\r
+\r
+#### Parameters\r
+\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 ---\r
-### statuses/friends\r
+### statuses/friends (*; AUTH)\r
+\r
+#### Parameters\r
+\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 ---\r
-### statuses/friends_timeline\r
+### statuses/friends_timeline (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -374,7 +265,7 @@ Friendica doesn't allow showing friends of other users.
 * contributor_details\r
 \r
 ---\r
-### statuses/home_timeline\r
+### statuses/home_timeline (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -390,7 +281,7 @@ Friendica doesn't allow showing friends of other users.
 * contributor_details\r
 \r
 ---\r
-### statuses/mentions\r
+### statuses/mentions (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -404,7 +295,7 @@ Friendica doesn't allow showing friends of other users.
 * contributor_details\r
 \r
 ---\r
-### statuses/public_timeline\r
+### statuses/public_timeline (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -418,7 +309,7 @@ Friendica doesn't allow showing friends of other users.
 * trim_user\r
 \r
 ---\r
-### statuses/replies\r
+### statuses/replies (*; AUTH)\r
 #### Parameters\r
 * count: Items per page (default: 20)\r
 * page: page number\r
@@ -432,7 +323,7 @@ Friendica doesn't allow showing friends of other users.
 * contributor_details\r
 \r
 ---\r
-### statuses/retweet\r
+### statuses/retweet (POST,PUT; AUTH)\r
 #### Parameters\r
 * id: message number\r
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
@@ -441,7 +332,7 @@ Friendica doesn't allow showing friends of other users.
 * trim_user\r
 \r
 ---\r
-### statuses/show\r
+### statuses/show (*; AUTH)\r
 #### Parameters\r
 * id: message number\r
 * conversation: if set to "1" show all messages of the conversation with the given id\r
@@ -476,7 +367,7 @@ Friendica doesn't allow showing friends of other users.
 * display_coordinates\r
 \r
 ---\r
-### statuses/user_timeline\r
+### statuses/user_timeline (*; AUTH)\r
 #### Parameters\r
 * user_id: id of the user\r
 * screen_name: screen name (for technical reasons, this value is not unique!)\r
@@ -489,15 +380,16 @@ Friendica doesn't allow showing friends of other users.
 * include_entities: "true" shows entities for pictures and links (Default: false)\r
 \r
 #### Unsupported parameters\r
+\r
 * include_rts\r
 * trim_user\r
 * contributor_details\r
 \r
 ---\r
-### statusnet/config\r
+### statusnet/config (*)\r
 \r
 ---\r
-### statusnet/version\r
+### statusnet/version (*)\r
 \r
 #### Unsupported parameters\r
 * user_id\r
@@ -507,7 +399,7 @@ Friendica doesn't allow showing friends of other users.
 Friendica doesn't allow showing followers of other users.\r
 \r
 ---\r
-### users/search\r
+### users/search (*)\r
 #### Parameters\r
 * q: name of the user\r
 \r
@@ -517,7 +409,7 @@ Friendica doesn't allow showing followers of other users.
 * include_entities\r
 \r
 ---\r
-### users/show\r
+### users/show (*)\r
 #### Parameters\r
 * user_id: id of the user\r
 * screen_name: screen name (for technical reasons, this value is not unique!)\r
@@ -533,8 +425,39 @@ Friendica doesn't allow showing friends of other users.
 \r
 ## Implemented API calls (not compatible with other APIs)\r
 \r
+\r
 ---\r
-### friendica/group_show\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
+\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, 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/group_show (*; AUTH)\r
 Return all or a specified group of the user with the containing contacts as array.\r
 \r
 #### Parameters\r
@@ -542,22 +465,23 @@ Return all or a specified group of the user with the containing contacts as arra
 \r
 #### Return values\r
 Array of:\r
+\r
 * name: name of the group\r
 * gid: id of the group\r
 * user: array of group members (return from api_get_user() function for each member)\r
 \r
 \r
 ---\r
-### friendica/group_delete\r
+### friendica/group_delete (POST,DELETE; AUTH)\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
+#### Parameters\r
 * gid: id of the group to be deleted\r
 * name: name of the group to be deleted\r
 \r
 #### Return values\r
 Array of:\r
+\r
 * success: true if successfully deleted\r
 * gid: gid of the deleted group\r
 * name: name of the deleted group\r
@@ -566,19 +490,22 @@ Array of:
 \r
 \r
 ---\r
-### friendica/group_create\r
+### friendica/group_create (POST,PUT; AUTH)\r
 Create the group with the posted array of contacts as members.\r
+\r
 #### Parameters\r
 * name: name of the group to be created\r
 \r
 #### POST data\r
-JSON data as Array like the result of „users/group_show“:\r
+JSON data as Array like the result of "users/group_show":\r
+\r
 * gid\r
 * name\r
 * array of users\r
 \r
 #### Return values\r
 Array of:\r
+\r
 * success: true if successfully created or reactivated\r
 * gid: gid of the created group\r
 * name: name of the created group\r
@@ -587,26 +514,175 @@ Array of:
 \r
 \r
 ---\r
-### friendica/group_update\r
+### friendica/group_update (POST)\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
+\r
 #### Parameters\r
 * gid: id of the group to be changed\r
 * name: name of the group to be changed\r
 \r
 #### POST data\r
 JSON data as array like the result of „users/group_show“:\r
+\r
 * gid\r
 * name\r
 * array of users\r
 \r
 #### Return values\r
 Array of:\r
+\r
 * success: true if successfully updated\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
+\r
+\r
+---\r
+### friendica/notifications (GET)\r
+Return last 50 notification for current user, ordered by date with unseen item on top\r
+\r
+#### Parameters\r
+none\r
+\r
+#### Return values\r
+Array of:\r
+\r
+* id: id of the note\r
+* type: type of notification as int (see NOTIFY_* constants in boot.php)\r
+* name: full name of the contact subject of the note\r
+* url: contact's profile url\r
+* photo: contact's profile photo\r
+* date: datetime string of the note\r
+* timestamp: timestamp of the node\r
+* date_rel: relative date of the note (eg. "1 hour ago")\r
+* msg: note message in bbcode\r
+* msg_html: note message in html\r
+* msg_plain: note message in plain text\r
+* link: link to note\r
+* seen: seen state: 0 or 1\r
+\r
+\r
+---\r
+### friendica/notifications/seen (POST)\r
+Set note as seen, returns item object if possible\r
+\r
+#### Parameters\r
+id: id of the note to set seen\r
+\r
+#### Return values\r
+If the note is linked to an item, the item is returned, just like one of the "statuses/*_timeline" api.\r
+\r
+If the note is not linked to an item, a success status is returned:\r
+\r
+* "success" (json) | "&lt;status&gt;success&lt;/status&gt;" (xml)\r
+\r
+\r
+---\r
+### friendica/photo (*; AUTH)\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
+\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
+* 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
+---\r
+### friendica/photos/list (*; AUTH)\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
 ---\r
 ## Not Implemented API calls\r
 The following API calls are implemented in GNU Social but not in Friendica: (incomplete)\r
@@ -702,13 +778,13 @@ The following API calls from the Twitter API aren't implemented neither in Frien
 ### 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
 \r
-    /usr/bin/curl -u USER:PASS https://YOUR.FRIENDICA.TLD/api/statuses/update.xml -d source="some source id" -d status="the status you want to post"\r
+/usr/bin/curl -u USER:PASS https://YOUR.FRIENDICA.TLD/api/statuses/update.xml -d source="some source id" -d status="the status you want to post"\r
 \r
 ### Python\r
 The [RSStoFriedika](https://github.com/pafcu/RSStoFriendika) code can be used as an example of how to use the API with python. The lines for posting are located at [line 21](https://github.com/pafcu/RSStoFriendika/blob/master/RSStoFriendika.py#L21) and following.\r
 \r
-    def tweet(server, message, group_allow=None):\r
-        url = server + '/api/statuses/update'\r
-        urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True))\r
+def tweet(server, message, group_allow=None):\r
+url = server + '/api/statuses/update'\r
+urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True))\r
 \r
 There is also a [module for python 3](https://bitbucket.org/tobiasd/python-friendica) for using the API.\r