431 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			431 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ## Authentication
 | ||
| 
 | ||
| ### HTTP Basic authentication
 | ||
| 
 | ||
| The API uses [HTTP Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).
 | ||
| Note that this means that users with only an OpenID login cannot use the API; they have to add a
 | ||
| password to their account using the control panel on the site.
 | ||
| 
 | ||
| ### OAuth authentication
 | ||
| 
 | ||
| OAuth 1.0a authentication for API resources is also supported. Generally, StatusNet's
 | ||
| UI and API are similar to Twitter's for OAuth applications (if you're new to OAuth
 | ||
| check out [Beginner’s Guide to OAuth](http://hueniverse.com/oauth/)).
 | ||
| 
 | ||
| To use OAuth, you'll need to register your client application via the web interface
 | ||
| and obtain a consumer key and secret. You can find the interface for application
 | ||
| registration at [http://%%site.server%%/%%site.path%%settings/oauthapps](http://%%site.server%%/%%site.path%%settings/oauthapps).
 | ||
| 
 | ||
| ## JSONP callbacks
 | ||
| 
 | ||
| For API methods that return [JSON](https://en.wikipedia.org/wiki/JSON), an optional
 | ||
| JSONP-style callback parameter is supported. If supplied, the response will be in
 | ||
| JSONP format with a callback of the given name. To make it easier for clients to
 | ||
| handle error conditions, HTTP error codes are suppressed, and the errors will be
 | ||
| returned in the response body when using JSONP.
 | ||
| 
 | ||
| ## Rate limiting
 | ||
| 
 | ||
| There is currently no rate-limiting.
 | ||
| 
 | ||
| ## Gotchas
 | ||
| 
 | ||
| Some things to remember:
 | ||
| 
 | ||
| * %%site.name%% supports the
 | ||
|   [OStatus federation protocol](https://en.wikipedia.org/wiki/OStatus) (as well as
 | ||
|   [OpenMicroBlogging](https://en.wikipedia.org/wiki/OpenMicroBlogging) for backwards
 | ||
|   compatibility), so many notices and friends' profiles may come from other servers.
 | ||
| * User nicknames are unique, but they are not globally unique. Use the ID number
 | ||
|   instead.
 | ||
| * Private streams are not implemented yet.
 | ||
| * GNU social sites can be configured as private. In that case, all API methods
 | ||
|   require authentication, including the public timeline (see the 'config' method
 | ||
|   below).
 | ||
| * If "Fancy URLs" are not enabled, urls from above need to include "index.php" at
 | ||
|   the root. ( e.g. http://example.org/statusnet/api becomes http://www.example.org/statusnet/index.php/api )
 | ||
| * The `since_id` parameter does not work as documented by Twitter. Twitter says of
 | ||
|   `since_id`: "There are limits to the number of Tweets which can be accessed
 | ||
|   through the API. If the limit of Tweets has occured since the `since_id`, the
 | ||
|   `since_id` will be forced to the oldest ID available." However, GNU social will
 | ||
|   return the newest notices (or the newest back from max_id, if present)! Also, a
 | ||
|   `since_id` <= 0 will be ignored.
 | ||
| 
 | ||
| ## Timeline resources
 | ||
| 
 | ||
| ### statuses/public_timeline
 | ||
| 
 | ||
| Returns the 20 most recent notices, including repeats if they exist, from
 | ||
| non-protected users.
 | ||
| 
 | ||
| ### statuses/home_timeline
 | ||
| 
 | ||
| Returns the 20 most recent notices, including repeats if they exist, posted by the
 | ||
| authenticating user and the users they follow. This is the same timeline seen by a
 | ||
| user when they login to their instance. This method is identical to
 | ||
| statuses/friends_timeline, except that this method always includes repeats.
 | ||
| 
 | ||
| ### statuses/friends_timeline
 | ||
| 
 | ||
| Alias of statuses/home_timeline
 | ||
| 
 | ||
| ### statuses/friends_timeline/:username
 | ||
| 
 | ||
| Alias of statuses/home_timeline for the specified username
 | ||
| 
 | ||
| ### statuses/mentions
 | ||
| 
 | ||
| Returns the 20 most recent mentions (notices containing @username) for the
 | ||
| authenticating user.
 | ||
| 
 | ||
| This method will not include repeats in the XML and JSON responses unless the
 | ||
| include_rts parameter is set. The RSS and Atom responses will always include repeats
 | ||
| as notices prefixed with RT.
 | ||
| 
 | ||
| ### statuses/replies
 | ||
| 
 | ||
| Alias of statuses/mentions
 | ||
| 
 | ||
| ### statuses/replies/:username
 | ||
| 
 | ||
| Alias of statuses/mentions for the specified username
 | ||
| 
 | ||
| ### statuses/user_timeline
 | ||
| 
 | ||
| Returns the 20 most recent notices posted by the authenticating user. It is also
 | ||
| possible to request another user's timeline by using the screen\_name or user_id
 | ||
| parameter. The other users timeline will only be visible if they are not protected,
 | ||
| or if the authenticating user's follow request was accepted by the protected user.
 | ||
| 
 | ||
| This method will not include repeats in the XML and JSON responses unless the
 | ||
| include_rts parameter is set. The RSS and Atom responses will always include
 | ||
| repeats as notices prefixed with RT, regardless of provided parameters.
 | ||
| 
 | ||
| ### statuses/retweeted\_to_me
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### statuses/retweeted\_by_me
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### statuses/retweets\_of_me
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ## Status resources
 | ||
| 
 | ||
| ### statuses/show/:id
 | ||
| 
 | ||
| Returns a single notice, specified by the id parameter. The notice's author will be
 | ||
| returned inline.
 | ||
| 
 | ||
| ### statuses/update
 | ||
| 
 | ||
| Post a new notice as the authenticating user.
 | ||
| 
 | ||
| Additional 'media' parameter allows binary multimedia uploads (images, etc.). Format
 | ||
| post data as multipart/form-data when using the 'media' parameter.
 | ||
| 
 | ||
| ### statuses/destroy/:id
 | ||
| 
 | ||
| Destroys the notice specified by the required ID parameter. The authenticating user
 | ||
| must be the author of the specified notice. Returns the destroyed notice if successful.
 | ||
| 
 | ||
| ### statuses/retweet/:id
 | ||
| 
 | ||
| Repeats a notice. Returns the original notice with repeat details embedded.
 | ||
| 
 | ||
| ## User resources
 | ||
| 
 | ||
| ### statuses/friends
 | ||
| 
 | ||
| Returns the user's subscriptions (friends) as an array of profiles.
 | ||
| 
 | ||
| ### statuses/followers
 | ||
| 
 | ||
| Returns the user's subscribers (followers) as an array of profiles.
 | ||
| 
 | ||
| ### users/show
 | ||
| 
 | ||
| Returns extended information of a given user, specified by ID or screen name as per
 | ||
| the required id parameter.
 | ||
| 
 | ||
| ## Direct message resources
 | ||
| 
 | ||
| ### direct_messages
 | ||
| 
 | ||
| Returns the 20 most recent direct messages sent to the authenticating user. The XML
 | ||
| and JSON versions include detailed information about the sender and recipient user.
 | ||
| 
 | ||
| ### direct_messages/sent
 | ||
| 
 | ||
| Returns the 20 most recent direct messages sent by the authenticating user. The XML
 | ||
| and JSON versions include detailed information about the sender and recipient user.
 | ||
| 
 | ||
| ### direct_messages/new
 | ||
| 
 | ||
| Sends a new direct message to the specified user from the authenticating user.
 | ||
| Requires both the user and text parameters and must be a POST. Returns the sent
 | ||
| message in the requested format if successful.
 | ||
| 
 | ||
| ### direct_messages/destroy
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ## Friendships resources
 | ||
| 
 | ||
| ### friendships/create
 | ||
| 
 | ||
| Allows the authenticating users to follow the user specified in the ID parameter.
 | ||
| Returns the befriended user in the requested format when successful. Returns a
 | ||
| string describing the failure condition when unsuccessful.
 | ||
| 
 | ||
| If you are already friends with the user a HTTP 403 may be returned, though for
 | ||
| performance reasons you may get a 200 OK message even if the friendship already
 | ||
| exists.
 | ||
| 
 | ||
| Note that users cannot subscribe to remote profiles using this API.
 | ||
| 
 | ||
| ### friendships/destroy
 | ||
| 
 | ||
| Allows the authenticating users to unfollow the user specified in the ID parameter.
 | ||
| Returns the unfollowed user in the requested format when successful. Returns a
 | ||
| string describing the failure condition when unsuccessful.
 | ||
| 
 | ||
| Users can unsubscribe to a remote profile using this API, but it's preferred to use
 | ||
| numeric IDs to nicknames.
 | ||
| 
 | ||
| ### friendships/exists
 | ||
| 
 | ||
| Test for the existence of friendship between two users. Will return true if user\_a
 | ||
| follows user_b, otherwise will return false. Authentication is required if either
 | ||
| user A or user B are protected. Additionally the authenticating user must be a
 | ||
| follower of the protected user.
 | ||
| 
 | ||
| ### friendships/show
 | ||
| 
 | ||
| Returns detailed information about the relationship between two users.
 | ||
| 
 | ||
| ## Friends and subscribers resources
 | ||
| 
 | ||
| ### friends/ids
 | ||
| 
 | ||
| Returns an array of numeric IDs for every user the specified user is subscribed to.
 | ||
| This method is powerful when used in conjunction with users/lookup.
 | ||
| 
 | ||
| ### followers/ids
 | ||
| 
 | ||
| Returns an array of numeric IDs for every user subscsribed to the specified user.
 | ||
| This method is powerful when used in conjunction with users/lookup.
 | ||
| 
 | ||
| ## Account resources
 | ||
| 
 | ||
| ### account/verify_credentials
 | ||
| 
 | ||
| Returns an HTTP 200 OK response code and a representation of the requesting user if
 | ||
| authentication was successful; returns a 401 status code and an error message if
 | ||
| not. Use this method to test if supplied user credentials are valid.
 | ||
| 
 | ||
| ### account/end_session
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### account/update\_delivery_device
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### account/rate\_limit_status
 | ||
| 
 | ||
| Returns the remaining number of API requests available to the requesting user before
 | ||
| the API limit is reached.
 | ||
| 
 | ||
| We have no rate limit, so this always returns 150 hits left.
 | ||
| 
 | ||
| ### account/update\_profile\_background_image
 | ||
| 
 | ||
| Updates the authenticating user's profile background image. This method can also be
 | ||
| used to enable or disable the profile background image.
 | ||
| 
 | ||
| ### account/update\_profile_image
 | ||
| 
 | ||
| Updates the authenticating user's profile image. Note that this method expects raw
 | ||
| multipart data, not a URL to an image.
 | ||
| 
 | ||
| ## Favorite resources
 | ||
| 
 | ||
| ### favorites
 | ||
| 
 | ||
| Returns the 20 most recent favorite statuses for the authenticating or specified
 | ||
| user in the requested format.
 | ||
| 
 | ||
| ### favorites/create/:id
 | ||
| 
 | ||
| Favorites the status specified in the ID parameter as the authenticating user.
 | ||
| Returns the favorite status when successful.
 | ||
| 
 | ||
| ### favorites/destroy/:id
 | ||
| 
 | ||
| Un-favorites the status specified in the ID parameter as the authenticating user.
 | ||
| Returns the un-favorited status in the requested format when successful.
 | ||
| 
 | ||
| ## Notification resources
 | ||
| 
 | ||
| ### notifications/follow
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### notifications/leave
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ## Block resources
 | ||
| 
 | ||
| ### blocks/create
 | ||
| 
 | ||
| Blocks the specified user from following the authenticating user. In addition the
 | ||
| blocked user will not show in the authenticating users mentions or timeline (unless
 | ||
| retweeted by another user). If a follow or friend relationship exists it is
 | ||
| destroyed.
 | ||
| 
 | ||
| ### blocks/destroy
 | ||
| 
 | ||
| Un-blocks the user specified in the ID parameter for the authenticating user.
 | ||
| Returns the un-blocked user in the requested format when successful. If
 | ||
| relationships existed before the block was instated, they will not be restored.
 | ||
| 
 | ||
| ### blocks/exists
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ### blocks/blocking
 | ||
| 
 | ||
| Not implemented.
 | ||
| 
 | ||
| ## Help resources
 | ||
| 
 | ||
| ### help/test
 | ||
| 
 | ||
| Returns the string "ok" in the requested format with a 200 OK HTTP status code. This
 | ||
| method is great for sending a HEAD request to determine our servers current time.
 | ||
| 
 | ||
| ## OAuth resources
 | ||
| 
 | ||
| It is strongly recommended you use HTTPS for all OAuth authorization steps.
 | ||
| 
 | ||
| ### oauth/request_token
 | ||
| 
 | ||
| Allows a Consumer application to obtain an OAuth Request Token to request user
 | ||
| authorization. This method fulfills Section 6.1 of the OAuth 1.0 authentication
 | ||
| flow. It is strongly recommended you use HTTPS for all OAuth authorization steps.
 | ||
| 
 | ||
| ### oauth/authorize
 | ||
| 
 | ||
| Allows a Consumer application to use an OAuth Request Token to request user
 | ||
| authorization. This method fulfills Section 6.2 of the OAuth 1.0 authentication
 | ||
| flow. Desktop applications must use this method (and cannot use GET oauth/authenticate).
 | ||
| 
 | ||
| ### oauth/access_token
 | ||
| 
 | ||
| Allows a Consumer application to exchange the OAuth Request Token for an OAuth
 | ||
| Access Token. This method fulfills Section 6.3 of the OAuth 1.0 authentication flow.
 | ||
| The OAuth access token may also be used for xAuth operations.
 | ||
| 
 | ||
| ## Search
 | ||
| 
 | ||
| The search method supports the following optional URL parameters:
 | ||
| 
 | ||
| * **callback**: if supplied when using the JSON format, the response will use the
 | ||
|   JSONP format with a callback of the given name.
 | ||
| * **rpp**: the number of notices to return per page, up to a max of 100.
 | ||
| * **page**: the page number (starting at 1) to return.
 | ||
| * **since_id:**: returns notices with ids greater than the given id.
 | ||
| 
 | ||
| Note:
 | ||
| 
 | ||
| * The search does not support operators, such as "from:", "to:" and booleans.
 | ||
| * Notice content is HTML-encoded.
 | ||
| 
 | ||
| ### search
 | ||
| 
 | ||
| Returns relevant notices that match a specified query.
 | ||
| 
 | ||
| ### Atom
 | ||
| 
 | ||
| To request search results in Atom, append your URL-encoded query as a parameter to
 | ||
| the search method and specify the Atom format:
 | ||
| 
 | ||
| `%%site.server%%/%%site.path%%api/search.atom?q=<query>`
 | ||
| 
 | ||
| ### JSON
 | ||
| 
 | ||
| To request search results in JSON, append your URL-encoded query as a parameter to
 | ||
| the search method and specify the JSON format:
 | ||
| 
 | ||
| `%%site.server%%/%%site.path%%api/search.json?q=<query>`
 | ||
| 
 | ||
| ## Additional resources
 | ||
| 
 | ||
| These are extensions to the Twitter API that expose additional functionality.
 | ||
| 
 | ||
| ### Group resources
 | ||
| 
 | ||
| #### statusnet/groups/timeline
 | ||
| 
 | ||
| Shows a group's timeline. Similar to other timeline resources.
 | ||
| 
 | ||
| #### statusnet/groups/show
 | ||
| 
 | ||
| Show a groups profile.
 | ||
| 
 | ||
| #### statusnet/groups/create
 | ||
| 
 | ||
| Create a new group.
 | ||
| 
 | ||
| #### statusnet/groups/join
 | ||
| 
 | ||
| Join a group.
 | ||
| 
 | ||
| #### statusnet/groups/leave
 | ||
| 
 | ||
| Leave a group.
 | ||
| 
 | ||
| #### statusnet/groups/list
 | ||
| 
 | ||
| Show the groups a given user is a member of.
 | ||
| 
 | ||
| #### statusnet/groups/list_all
 | ||
| 
 | ||
| List all local groups.
 | ||
| 
 | ||
| #### statusnet/groups/membership
 | ||
| 
 | ||
| List the members of a given group.
 | ||
| 
 | ||
| #### statusnet/groups/is_member
 | ||
| 
 | ||
| Determine whether a given user is a member of a given group.
 | ||
| 
 | ||
| ### Tag resources
 | ||
| 
 | ||
| #### statusnet/tags/timeline
 | ||
| 
 | ||
| Shows a tag's timeline. Similar to other timeline resources.
 | ||
| 
 | ||
| ### Media resources
 | ||
| 
 | ||
| #### statusnet/media/upload
 | ||
| 
 | ||
| Endpoint for uploading an image. Returns a URL that can be used in a status update.
 | ||
| Format post data as multipart/form-data.
 | ||
| 
 | ||
| ### Configuration
 | ||
| 
 | ||
| #### statusnet/config
 | ||
| 
 | ||
| Show an instance's configuration information.
 | ||
| 
 | ||
| Of special note is the `<private>` element (config/site/private), which indicates
 | ||
| whether a site is private. When a site is configured as private every other API
 | ||
| method requires authentication, including the public timeline (`/api/statuses/public_timeline.format`).
 |