diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-04-11 21:30:48 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-04-11 21:30:48 +0200 |
commit | 9f7ea77d0c2841fc911afe0485c27750b71e68c3 (patch) | |
tree | 1585a341c65ce99c7807a0a1807e60900a016bb4 /docs/Using-the-API/API.md | |
parent | 5f74397ef032948ec3c648cec209fd2a279d4dd1 (diff) | |
parent | 47aacb773bfde280fff3cb00d309a9eb7dc8783b (diff) |
Merge branch 'master' of github.com:tootsuite/mastodon
Diffstat (limited to 'docs/Using-the-API/API.md')
-rw-r--r-- | docs/Using-the-API/API.md | 536 |
1 files changed, 1 insertions, 535 deletions
diff --git a/docs/Using-the-API/API.md b/docs/Using-the-API/API.md index fee1fde94..6de61e196 100644 --- a/docs/Using-the-API/API.md +++ b/docs/Using-the-API/API.md @@ -1,535 +1 @@ -API overview -============ - -## Contents - -- [Available libraries](#available-libraries) -- [Notes](#notes) -- [Methods](#methods) - - [Accounts](#accounts) - - [Apps](#apps) - - [Blocks](#blocks) - - [Favourites](#favourites) - - [Follow Requests](#follow-requests) - - [Follows](#follows) - - [Instances](#instances) - - [Media](#media) - - [Mutes](#mutes) - - [Notifications](#notifications) - - [Reports](#reports) - - [Search](#search) - - [Statuses](#statuses) - - [Timelines](#timelines) -- [Entities](#entities) - - [Account](#account) - - [Application](#application) - - [Attachment](#attachment) - - [Card](#card) - - [Context](#context) - - [Error](#error) - - [Instance](#instance) - - [Mention](#mention) - - [Notification](#notification) - - [Relationship](#relationship) - - [Results](#results) - - [Status](#status) - - [Tag](#tag) - -___ - -## Available libraries - -- [For Ruby](https://github.com/tootsuite/mastodon-api) -- [For Python](https://github.com/halcy/Mastodon.py) -- [For JavaScript](https://github.com/Zatnosk/libodonjs) -- [For JavaScript (Node.js)](https://github.com/jessicahayley/node-mastodon) -- [For Elixir](https://github.com/milmazz/hunter) - -___ - -## Notes - -### Parameter types - -When an array parameter is mentioned, the Rails convention of specifying array parameters in query strings is meant. -For example, a ruby array like `foo = [1, 2, 3]` can be encoded in the params as `foo[]=1&foo[]=2&foo[]=3`. -Square brackets can be indexed but can also be empty. - -When a file parameter is mentioned, a form-encoded upload is expected. - -### Selecting ranges - -For most `GET` operations that return arrays, the query parameters `max_id` and `since_id` can be used to specify the range of IDs to return. -API methods that return collections of items can return a `Link` header containing URLs for the `next` and `prev` pages. -See the [Link header RFC](https://tools.ietf.org/html/rfc5988) for more information. - -### Errors - -If the request you make doesn't go through, Mastodon will usually respond with an [Error](#error). - -___ - -## Methods - -### Accounts - -#### Fetching an account: - - GET /api/v1/accounts/:id - -Returns an [Account](#account). - -#### Getting the current user: - - GET /api/v1/accounts/verify_credentials - -Returns the authenticated user's [Account](#account). - -#### Updating the current user: - - PATCH /api/v1/accounts/update_credentials - -Form data: - -- `display_name`: The name to display in the user's profile -- `note`: A new biography for the user -- `avatar`: A base64 encoded image to display as the user's avatar (e.g. `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADrCAYAAAA...`) -- `header`: A base64 encoded image to display as the user's header image (e.g. `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADrCAYAAAA...`) - -#### Getting an account's followers: - - GET /api/v1/accounts/:id/followers - -Returns an array of [Accounts](#account). - -#### Getting who account is following: - - GET /api/v1/accounts/:id/following - -Returns an array of [Accounts](#account). - -#### Getting an account's statuses: - - GET /api/v1/accounts/:id/statuses - -Query parameters: - -- `only_media` (optional): Only return statuses that have media attachments -- `exclude_replies` (optional): Skip statuses that reply to other statuses - -Returns an array of [Statuses](#status). - -#### Following/unfollowing an account: - - GET /api/v1/accounts/:id/follow - GET /api/v1/accounts/:id/unfollow - -Returns the target [Account](#account). - -#### Blocking/unblocking an account: - - GET /api/v1/accounts/:id/block - GET /api/v1/accounts/:id/unblock - -Returns the target [Account](#account). - -#### Muting/unmuting an account: - - GET /api/v1/accounts/:id/mute - GET /api/v1/accounts/:id/unmute - -Returns the target [Account](#account). - -#### Getting an account's relationships: - - GET /api/v1/accounts/relationships - -Query parameters: - -- `id` (can be array): Account IDs - -Returns an array of [Relationships](#relationships) of the current user to a list of given accounts. - -#### Searching for accounts: - - GET /api/v1/accounts/search - -Query parameters: - -- `q`: What to search for -- `limit`: Maximum number of matching accounts to return (default: `40`) - -Returns an array of matching [Accounts](#accounts). -Will lookup an account remotely if the search term is in the `username@domain` format and not yet in the database. - -### Apps - -#### Registering an application: - - POST /api/v1/apps - -Form data: - -- `client_name`: Name of your application -- `redirect_uris`: Where the user should be redirected after authorization (for no redirect, use `urn:ietf:wg:oauth:2.0:oob`) -- `scopes`: This can be a space-separated list of the following items: "read", "write" and "follow" (see [this page](OAuth-details.md) for details on what the scopes do) -- `website`: (optional) URL to the homepage of your app - -Creates a new OAuth app. -Returns `id`, `client_id` and `client_secret` which can be used with [OAuth authentication in your 3rd party app](Testing-with-cURL.md). - -These values should be requested in the app itself from the API for each new app install + mastodon domain combo, and stored in the app for future requests. - -### Blocks - -#### Fetching a user's blocks: - - GET /api/v1/blocks - -Returns an array of [Accounts](#account) blocked by the authenticated user. - -### Favourites - -#### Fetching a user's favourites: - - GET /api/v1/favourites - -Returns an array of [Statuses](#status) favourited by the authenticated user. - -### Follow Requests - -#### Fetching a list of follow requests: - - GET /api/v1/follow_requests - -Returns an array of [Accounts](#account) which have requested to follow the authenticated user. - -#### Authorizing or rejecting follow requests: - - POST /api/v1/follow_requests/authorize - POST /api/v1/follow_requests/reject - -Form data: - -- `id`: The id of the account to authorize or reject - -Returns an empty object. - -### Follows - -#### Following a remote user: - - POST /api/v1/follows - -Form data: - -- `uri`: `username@domain` of the person you want to follow - -Returns the local representation of the followed account, as an [Account](#account). - -### Instances - -#### Getting instance information: - - GET /api/v1/instance - -Returns the current [Instance](#instance). -Does not require authentication. - -### Media - -#### Uploading a media attachment: - - POST /api/v1/media - -Form data: - -- `file`: Media to be uploaded - -Returns an [Attachment](#attachment) that can be used when creating a status. - -### Mutes - -#### Fetching a user's mutes: - - GET /api/v1/mutes - -Returns an array of [Accounts](#account) muted by the authenticated user. - -### Notifications - -#### Fetching a user's notifications: - - GET /api/v1/notifications - -Returns a list of [Notifications](#notification) for the authenticated user. - -#### Getting a single notification: - - GET /api/v1/notifications/:id - -Returns the [Notification](#notification). - -#### Clearing notifications: - - POST /api/v1/notifications/clear - -Deletes all notifications from the Mastodon server for the authenticated user. -Returns an empty object. - -### Reports - -#### Fetching a user's reports: - - GET /api/v1/reports - -Returns a list of [Reports](#report) made by the authenticated user. - -#### Reporting a user: - - POST /api/v1/reports - -Form data: - -- `account_id`: The ID of the account to report -- `status_ids`: The IDs of statuses to report (can be an array) -- `comment`: A comment to associate with the report. - -Returns the finished [Report](#report). - -### Search - -#### Searching for content: - - GET /api/v1/search - -Form data: - -- `q`: The search query -- `resolve`: Whether to resolve non-local accounts - -Returns [Results](#results). -If `q` is a URL, Mastodon will attempt to fetch the provided account or status. -Otherwise, it will do a local account and hashtag search. - -### Statuses - -#### Fetching a status: - - GET /api/v1/statuses/:id - -Returns a [Status](#status). - -#### Getting status context: - - GET /api/v1/statuses/:id/context - -Returns a [Context](#context). - -#### Getting a card associated with a status: - - GET /api/v1/statuses/:id/card - -Returns a [Card](#card). - -#### Getting who reblogged/favourited a status: - - GET /api/v1/statuses/:id/reblogged_by - GET /api/v1/statuses/:id/favourited_by - -Returns an array of [Accounts](#account). - -#### Posting a new status: - - POST /api/v1/statuses - -Form data: - -- `status`: The text of the status -- `in_reply_to_id` (optional): local ID of the status you want to reply to -- `media_ids` (optional): array of media IDs to attach to the status (maximum 4) -- `sensitive` (optional): set this to mark the media of the status as NSFW -- `spoiler_text` (optional): text to be shown as a warning before the actual content -- `visibility` (optional): either "direct", "private", "unlisted" or "public" - -Returns the new [Status](#status). - -#### Deleting a status: - - DELETE /api/v1/statuses/:id - -Returns an empty object. - -#### Reblogging/unreblogging a status: - - POST /api/v1/statuses/:id/reblog - POST /api/v1/statuses/:id/unreblog - -Returns the target [Status](#status). - -#### Favouriting/unfavouriting a status: - - POST /api/v1/statuses/:id/favourite - POST /api/v1/statuses/:id/unfavourite - -Returns the target [Status](#status). - -### Timelines - -#### Retrieving a timeline: - - GET /api/v1/timelines/home - GET /api/v1/timelines/public - GET /api/v1/timelines/tag/:hashtag - -Query parameters: - -- `local` (optional; public and tag timelines only): Only return statuses originating from this instance - -Returns an array of [Statuses](#status), most recent ones first. -___ - -## Entities - -### Account - -| Attribute | Description | -| ------------------------ | ----------- | -| `id` | The ID of the account | -| `username` | The username of the account | -| `acct` | Equals `username` for local users, includes `@domain` for remote ones | -| `display_name` | The account's display name | -| `note` | Biography of user | -| `url` | URL of the user's profile page (can be remote) | -| `avatar` | URL to the avatar image | -| `header` | URL to the header image | -| `locked` | Boolean for when the account cannot be followed without waiting for approval first | -| `created_at` | The time the account was created | -| `followers_count` | The number of followers for the account | -| `following_count` | The number of accounts the given account is following | -| `statuses_count` | The number of statuses the account has made | - -### Application - -| Attribute | Description | -| ------------------------ | ----------- | -| `name` | Name of the app | -| `website` | Homepage URL of the app | - -### Attachment - -| Attribute | Description | -| ------------------------ | ----------- | -| `id` | ID of the attachment | -| `type` | One of: "image", "video", "gifv" | -| `url` | URL of the locally hosted version of the image | -| `remote_url` | For remote images, the remote URL of the original image | -| `preview_url` | URL of the preview image | -| `text_url` | Shorter URL for the image, for insertion into text (only present on local images) | - -### Card - -| Attribute | Description | -| ------------------------ | ----------- | -| `url` | The url associated with the card | -| `title` | The title of the card | -| `description` | The card description | -| `image` | The image associated with the card, if any | - -### Context - -| Attribute | Description | -| ------------------------ | ----------- | -| `ancestors` | The ancestors of the status in the conversation, as a list of [Statuses](#status) | -| `descendants` | The descendants of the status in the conversation, as a list of [Statuses](#status) | - -### Error - -| Attribute | Description | -| ------------------------ | ----------- | -| `error` | A textual description of the error | - -### Instance - -| Attribute | Description | -| ------------------------ | ----------- | -| `uri` | URI of the current instance | -| `title` | The instance's title | -| `description` | A description for the instance | -| `email` | An email address which can be used to contact the instance administrator | - -### Mention - -| Attribute | Description | -| ------------------------ | ----------- | -| `url` | URL of user's profile (can be remote) | -| `username` | The username of the account | -| `acct` | Equals `username` for local users, includes `@domain` for remote ones | -| `id` | Account ID | - -### Notification - -| Attribute | Description | -| ------------------------ | ----------- | -| `id` | The notification ID | -| `type` | One of: "mention", "reblog", "favourite", "follow" | -| `created_at` | The time the notification was created | -| `account` | The [Account](#account) sending the notification to the user | -| `status` | The [Status](#status) associated with the notification, if applicable | - -### Relationship - -| Attribute | Description | -| ------------------------ | ----------- | -| `following` | Whether the user is currently following the account | -| `followed_by` | Whether the user is currently being followed by the account | -| `blocking` | Whether the user is currently blocking the account | -| `muting` | Whether the user is currently muting the account | -| `requested` | Whether the user has requested to follow the account | - -### Report - -| Attribute | Description | -| ------------------------ | ----------- | -| `id` | The ID of the report | -| `action_taken` | The action taken in response to the report | - -### Results - -| Attribute | Description | -| ------------------------ | ----------- | -| `accounts` | An array of matched [Accounts](#account) | -| `statuses` | An array of matchhed [Statuses](#status) | -| `hashtags` | An array of matched hashtags, as strings | - -### Status - -| Attribute | Description | -| ------------------------ | ----------- | -| `id` | The ID of the status | -| `uri` | A Fediverse-unique resource ID | -| `url` | URL to the status page (can be remote) | -| `account` | The [Account](#account) which posted the status | -| `in_reply_to_id` | `null` or the ID of the status it replies to | -| `in_reply_to_account_id` | `null` or the ID of the account it replies to | -| `reblog` | `null` or the reblogged [Status](#status) | -| `content` | Body of the status; this will contain HTML (remote HTML already sanitized) | -| `created_at` | The time the status was created | -| `reblogs_count` | The number of reblogs for the status | -| `favourites_count` | The number of favourites for the status | -| `reblogged` | Whether the authenticated user has reblogged the status | -| `favourited` | Whether the authenticated user has favourited the status | -| `sensitive` | Whether media attachments should be hidden by default | -| `spoiler_text` | If not empty, warning text that should be displayed before the actual content | -| `visibility` | One of: `public`, `unlisted`, `private`, `direct` | -| `media_attachments` | An array of [Attachments](#attachment) | -| `mentions` | An array of [Mentions](#mention) | -| `tags` | An array of [Tags](#tag) | -| `application` | [Application](#application) from which the status was posted | - -### Tag - -| Attribute | Description | -| ------------------------ | ----------- | -| `name` | The hashtag, not including the preceding `#` | -| `url` | The URL of the hashtag | +[The documentation has moved to its own repository](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md) |