diff options
| author | Mark Felder <feld@FreeBSD.org> | 2019-06-03 09:12:17 -0500 | 
|---|---|---|
| committer | Mark Felder <feld@FreeBSD.org> | 2019-06-03 09:12:17 -0500 | 
| commit | f4e2595592ccca6cedd64669baef7bdd2a6547d0 (patch) | |
| tree | 6806a79345c7599b0d436df8b6c46e75b54d1292 /docs/api | |
| parent | 3c4cab9be18ff543d025177b418ddd0b16050e68 (diff) | |
| parent | 9789e000b05621435dc0c03833f564481e0b80e6 (diff) | |
| download | pleroma-f4e2595592ccca6cedd64669baef7bdd2a6547d0.tar.gz pleroma-f4e2595592ccca6cedd64669baef7bdd2a6547d0.zip  | |
Merge branch 'develop' into update-oauth-template
Diffstat (limited to 'docs/api')
| -rw-r--r-- | docs/api/admin_api.md | 328 | ||||
| -rw-r--r-- | docs/api/differences_in_mastoapi_responses.md | 19 | ||||
| -rw-r--r-- | docs/api/pleroma_api.md | 62 | 
3 files changed, 371 insertions, 38 deletions
diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 8befa8ea0..b45c5e285 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -8,18 +8,23 @@ Authentication is required and the user must be an admin.  - Method `GET`  - Query Params: -  - *optional* `query`: **string** search term +  - *optional* `query`: **string** search term (e.g. nickname, domain, nickname@domain)    - *optional* `filters`: **string** comma-separated string of filters:      - `local`: only local users      - `external`: only external users      - `active`: only active users      - `deactivated`: only deactivated users +    - `is_admin`: users with admin role +    - `is_moderator`: users with moderator role    - *optional* `page`: **integer** page number    - *optional* `page_size`: **integer** number of users per page (default is `50`) -- Example: `https://mypleroma.org/api/pleroma/admin/users?query=john&filters=local,active&page=1&page_size=10` +  - *optional* `tags`: **[string]** tags list +  - *optional* `name`: **string** user display name +  - *optional* `email`: **string** user email +- Example: `https://mypleroma.org/api/pleroma/admin/users?query=john&filters=local,active&page=1&page_size=10&tags[]=some_tag&tags[]=another_tag&name=display_name&email=email@example.com`  - Response: -```JSON +```json  {    "page_size": integer,    "count": integer, @@ -40,7 +45,7 @@ Authentication is required and the user must be an admin.  }  ``` -## `/api/pleroma/admin/user` +## `/api/pleroma/admin/users`  ### Remove a user @@ -58,7 +63,7 @@ Authentication is required and the user must be an admin.    - `password`  - Response: User’s nickname -## `/api/pleroma/admin/user/follow` +## `/api/pleroma/admin/users/follow`  ### Make a user follow another user  - Methods: `POST` @@ -68,7 +73,7 @@ Authentication is required and the user must be an admin.  - Response:   - "ok" -## `/api/pleroma/admin/user/unfollow` +## `/api/pleroma/admin/users/unfollow`  ### Make a user unfollow another user  - Methods: `POST` @@ -87,7 +92,7 @@ Authentication is required and the user must be an admin.    - `nickname`  - Response: User’s object -```JSON +```json  {    "deactivated": bool,    "id": integer, @@ -101,17 +106,17 @@ Authentication is required and the user must be an admin.  - Method: `PUT`  - Params: -  - `nickname` -  - `tags` +  - `nicknames` (array) +  - `tags` (array)  ### Untag a list of users  - Method: `DELETE`  - Params: -  - `nickname` -  - `tags` +  - `nicknames` (array) +  - `tags` (array) -## `/api/pleroma/admin/permission_group/:nickname` +## `/api/pleroma/admin/users/:nickname/permission_group`  ### Get user user permission groups membership @@ -119,14 +124,14 @@ Authentication is required and the user must be an admin.  - Params: none  - Response: -```JSON +```json  {    "is_moderator": bool,    "is_admin": bool  }  ``` -## `/api/pleroma/admin/permission_group/:nickname/:permission_group` +## `/api/pleroma/admin/users/:nickname/permission_group/:permission_group`  Note: Available `:permission_group` is currently moderator and admin. 404 is returned when the permission group doesn’t exist. @@ -136,7 +141,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret  - Params: none  - Response: -```JSON +```json  {    "is_moderator": bool,    "is_admin": bool @@ -160,7 +165,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret    - On success: JSON of the `user.info`  - Note: An admin cannot revoke their own admin status. -## `/api/pleroma/admin/activation_status/:nickname` +## `/api/pleroma/admin/users/:nickname/activation_status`  ### Active or deactivate a user @@ -198,7 +203,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret  - Response:    - On success: URL of the unfollowed relay -## `/api/pleroma/admin/invite_token` +## `/api/pleroma/admin/users/invite_token`  ### Get an account registration invite token @@ -210,7 +215,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret    ]  - Response: invite token (base64 string) -## `/api/pleroma/admin/invites` +## `/api/pleroma/admin/users/invites`  ### Get a list of generated invites @@ -218,7 +223,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret  - Params: none  - Response: -```JSON +```json  {    "invites": [ @@ -236,7 +241,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret  }  ``` -## `/api/pleroma/admin/revoke_invite` +## `/api/pleroma/admin/users/revoke_invite`  ### Revoke invite by token @@ -245,7 +250,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret    - `token`  - Response: -```JSON +```json  {    "id": integer,    "token": string, @@ -259,7 +264,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret  ``` -## `/api/pleroma/admin/email_invite` +## `/api/pleroma/admin/users/email_invite`  ### Sends registration invite via email @@ -268,10 +273,287 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret    - `email`    - `name`, optional -## `/api/pleroma/admin/password_reset` +## `/api/pleroma/admin/users/:nickname/password_reset`  ### Get a password reset token for a given nickname  - Methods: `GET`  - Params: none  - Response: password reset token (base64 string) + +## `/api/pleroma/admin/reports` +### Get a list of reports +- Method `GET` +- Params: +  - `state`: optional, the state of reports. Valid values are `open`, `closed` and `resolved` +  - `limit`: optional, the number of records to retrieve +  - `since_id`: optional, returns results that are more recent than the specified id +  - `max_id`: optional, returns results that are older than the specified id +- Response:  +  - On failure: 403 Forbidden error `{"error": "error_msg"}` when requested by anonymous or non-admin +  - On success: JSON, returns a list of reports, where: +    - `account`: the user who has been reported +    - `actor`: the user who has sent the report +    - `statuses`: list of statuses that have been included to the report + +```json +{ +  "reports": [ +    { +      "account": { +        "acct": "user", +        "avatar": "https://pleroma.example.org/images/avi.png", +        "avatar_static": "https://pleroma.example.org/images/avi.png", +        "bot": false, +        "created_at": "2019-04-23T17:32:04.000Z", +        "display_name": "User", +        "emojis": [], +        "fields": [], +        "followers_count": 1, +        "following_count": 1, +        "header": "https://pleroma.example.org/images/banner.png", +        "header_static": "https://pleroma.example.org/images/banner.png", +        "id": "9i6dAJqSGSKMzLG2Lo", +        "locked": false, +        "note": "", +        "pleroma": { +          "confirmation_pending": false, +          "hide_favorites": true, +          "hide_followers": false, +          "hide_follows": false, +          "is_admin": false, +          "is_moderator": false, +          "relationship": {}, +          "tags": [] +        }, +        "source": { +          "note": "", +          "pleroma": {}, +          "sensitive": false +        }, +        "statuses_count": 3, +        "url": "https://pleroma.example.org/users/user", +        "username": "user" +      }, +      "actor": { +        "acct": "lain", +        "avatar": "https://pleroma.example.org/images/avi.png", +        "avatar_static": "https://pleroma.example.org/images/avi.png", +        "bot": false, +        "created_at": "2019-03-28T17:36:03.000Z", +        "display_name": "Roger Braun", +        "emojis": [], +        "fields": [], +        "followers_count": 1, +        "following_count": 1, +        "header": "https://pleroma.example.org/images/banner.png", +        "header_static": "https://pleroma.example.org/images/banner.png", +        "id": "9hEkA5JsvAdlSrocam", +        "locked": false, +        "note": "", +        "pleroma": { +          "confirmation_pending": false, +          "hide_favorites": false, +          "hide_followers": false, +          "hide_follows": false, +          "is_admin": false, +          "is_moderator": false, +          "relationship": {}, +          "tags": [] +        }, +        "source": { +          "note": "", +          "pleroma": {}, +          "sensitive": false +        }, +        "statuses_count": 1, +        "url": "https://pleroma.example.org/users/lain", +        "username": "lain" +      }, +      "content": "Please delete it", +      "created_at": "2019-04-29T19:48:15.000Z", +      "id": "9iJGOv1j8hxuw19bcm", +      "state": "open", +      "statuses": [ +        { +          "account": { ... }, +          "application": { +            "name": "Web", +            "website": null +          }, +          "bookmarked": false, +          "card": null, +          "content": "<span class=\"h-card\"><a data-user=\"9hEkA5JsvAdlSrocam\" class=\"u-url mention\" href=\"https://pleroma.example.org/users/lain\">@<span>lain</span></a></span> click on my link <a href=\"https://www.google.com/\">https://www.google.com/</a>", +          "created_at": "2019-04-23T19:15:47.000Z", +          "emojis": [], +          "favourited": false, +          "favourites_count": 0, +          "id": "9i6mQ9uVrrOmOime8m", +          "in_reply_to_account_id": null, +          "in_reply_to_id": null, +          "language": null, +          "media_attachments": [], +          "mentions": [ +            { +              "acct": "lain", +              "id": "9hEkA5JsvAdlSrocam", +              "url": "https://pleroma.example.org/users/lain", +              "username": "lain" +            }, +            { +              "acct": "user", +              "id": "9i6dAJqSGSKMzLG2Lo", +              "url": "https://pleroma.example.org/users/user", +              "username": "user" +            } +          ], +          "muted": false, +          "pinned": false, +          "pleroma": { +            "content": { +              "text/plain": "@lain click on my link https://www.google.com/" +            }, +            "conversation_id": 28, +            "in_reply_to_account_acct": null, +            "local": true, +            "spoiler_text": { +              "text/plain": "" +            } +          }, +          "reblog": null, +          "reblogged": false, +          "reblogs_count": 0, +          "replies_count": 0, +          "sensitive": false, +          "spoiler_text": "", +          "tags": [], +          "uri": "https://pleroma.example.org/objects/8717b90f-8e09-4b58-97b0-e3305472b396", +          "url": "https://pleroma.example.org/notice/9i6mQ9uVrrOmOime8m", +          "visibility": "direct" +        } +      ] +    } +  ] +} +``` + +## `/api/pleroma/admin/reports/:id` +### Get an individual report +- Method `GET` +- Params: +  - `id` +- Response: +  - On failure:  +    - 403 Forbidden `{"error": "error_msg"}` +    - 404 Not Found `"Not found"` +  - On success: JSON, Report object (see above) + +## `/api/pleroma/admin/reports/:id` +### Change the state of the report +- Method `PUT` +- Params: +  - `id` +  - `state`: required, the new state. Valid values are `open`, `closed` and `resolved` +- Response:  +  - On failure:  +    - 400 Bad Request `"Unsupported state"` +    - 403 Forbidden `{"error": "error_msg"}` +    - 404 Not Found `"Not found"` +  - On success: JSON, Report object (see above) + +## `/api/pleroma/admin/reports/:id/respond` +### Respond to a report +- Method `POST` +- Params: +  - `id` +  - `status`: required, the message +- Response:  +  - On failure:  +    - 400 Bad Request `"Invalid parameters"` when `status` is missing  +    - 403 Forbidden `{"error": "error_msg"}`  +    - 404 Not Found `"Not found"` +  - On success: JSON, created Mastodon Status entity + +```json +{ +  "account": { ... }, +  "application": { +    "name": "Web", +    "website": null +  }, +  "bookmarked": false, +  "card": null, +  "content": "Your claim is going to be closed", +  "created_at": "2019-05-11T17:13:03.000Z", +  "emojis": [], +  "favourited": false, +  "favourites_count": 0, +  "id": "9ihuiSL1405I65TmEq", +  "in_reply_to_account_id": null, +  "in_reply_to_id": null, +  "language": null, +  "media_attachments": [], +  "mentions": [ +    { +      "acct": "user", +      "id": "9i6dAJqSGSKMzLG2Lo", +      "url": "https://pleroma.example.org/users/user", +      "username": "user" +    }, +    { +      "acct": "admin", +      "id": "9hEkA5JsvAdlSrocam", +      "url": "https://pleroma.example.org/users/admin", +      "username": "admin" +    } +  ], +  "muted": false, +  "pinned": false, +  "pleroma": { +    "content": { +      "text/plain": "Your claim is going to be closed" +    }, +    "conversation_id": 35, +    "in_reply_to_account_acct": null, +    "local": true, +    "spoiler_text": { +      "text/plain": "" +    } +  }, +  "reblog": null, +  "reblogged": false, +  "reblogs_count": 0, +  "replies_count": 0, +  "sensitive": false, +  "spoiler_text": "", +  "tags": [], +  "uri": "https://pleroma.example.org/objects/cab0836d-9814-46cd-a0ea-529da9db5fcb", +  "url": "https://pleroma.example.org/notice/9ihuiSL1405I65TmEq", +  "visibility": "direct" +} +``` + +## `/api/pleroma/admin/statuses/:id` +### Change the scope of an individual reported status +- Method `PUT` +- Params: +  - `id` +  - `sensitive`: optional, valid values are `true` or `false` +  - `visibility`: optional, valid values are `public`, `private` and `unlisted` +- Response:  +  - On failure:  +    - 400 Bad Request `"Unsupported visibility"` +    - 403 Forbidden `{"error": "error_msg"}`  +    - 404 Not Found `"Not found"` +  - On success: JSON, Mastodon Status entity + +## `/api/pleroma/admin/statuses/:id` +### Delete an individual reported status +- Method `DELETE` +- Params: +  - `id` +- Response:  +  - On failure:  +    - 403 Forbidden `{"error": "error_msg"}`  +    - 404 Not Found `"Not found"` +  - On success: 200 OK `{}` diff --git a/docs/api/differences_in_mastoapi_responses.md b/docs/api/differences_in_mastoapi_responses.md index 1350ace43..36b47608e 100644 --- a/docs/api/differences_in_mastoapi_responses.md +++ b/docs/api/differences_in_mastoapi_responses.md @@ -1,6 +1,6 @@  # Differences in Mastodon API responses from vanilla Mastodon -A Pleroma instance can be identified by "<Mastodon version> (compatible; Pleroma <version>)" present in `version` field in response from `/api/v1/instance`  +A Pleroma instance can be identified by "<Mastodon version> (compatible; Pleroma <version>)" present in `version` field in response from `/api/v1/instance`  ## Flake IDs @@ -80,3 +80,20 @@ Additional parameters can be added to the JSON body/Form data:  - `hide_favorites` - if true, user's favorites timeline will be hidden  - `show_role` - if true, user's role (e.g admin, moderator) will be exposed to anyone in the API  - `default_scope` - the scope returned under `privacy` key in Source subentity + +## Authentication + +*Pleroma supports refreshing tokens. + +`POST /oauth/token` +Post here request with grant_type=refresh_token to obtain new access token. Returns an access token. + +## Account Registration +`POST /api/v1/accounts` + +Has theses additionnal parameters (which are the same as in Pleroma-API): +    * `fullname`: optional +    * `bio`: optional +    * `captcha_solution`: optional, contains provider-specific captcha solution, +    * `captcha_token`: optional, contains provider-specific captcha token +    * `token`: invite token required when the registerations aren't public. diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index 190846de9..edc62727a 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -61,6 +61,15 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi  * Response: JSON. Returns `{"status": "success"}` if the deletion was successful, `{"error": "[error message]"}` otherwise  * Example response: `{"error": "Invalid password."}` +## `/api/pleroma/disable_account` +### Disable an account +* Method `POST` +* Authentication: required +* Params: +    * `password`: user's password +* Response: JSON. Returns `{"status": "success"}` if the account was successfully disabled, `{"error": "[error message]"}` otherwise +* Example response: `{"error": "Invalid password."}` +  ## `/api/account/register`  ### Register a new user  * Method `POST` @@ -117,20 +126,6 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi  ## `/api/pleroma/admin/`…  See [Admin-API](Admin-API.md) -## `/api/v1/pleroma/flavour/:flavour` -* Method `POST` -* Authentication: required -* Response: JSON string. Returns the user flavour or the default one on success, otherwise returns `{"error": "error_msg"}` -* Example response: "glitch" -* Note: This is intended to be used only by mastofe - -## `/api/v1/pleroma/flavour` -* Method `GET` -* Authentication: required -* Response: JSON string. Returns the user flavour or the default one. -* Example response: "glitch" -* Note: This is intended to be used only by mastofe -  ## `/api/pleroma/notifications/read`  ### Mark a single notification as read  * Method `POST` @@ -243,6 +238,45 @@ See [Admin-API](Admin-API.md)  ]  ``` +## `/api/v1/pleroma/mascot` +### Gets user mascot image +* Method `GET` +* Authentication: required + +* Response: JSON. Returns a mastodon media attachment entity. +* Example response: +```json +{ +    "id": "abcdefg", +    "url": "https://pleroma.example.org/media/abcdefg.png", +    "type": "image", +    "pleroma": { +        "mime_type": "image/png" +    } +} +``` + +### Updates user mascot image +* Method `PUT` +* Authentication: required +* Params: +    * `image`: Multipart image +* Response: JSON. Returns a mastodon media attachment entity +  when successful, otherwise returns HTTP 415 `{"error": "error_msg"}` +* Example response: +```json +{ +    "id": "abcdefg", +    "url": "https://pleroma.example.org/media/abcdefg.png", +    "type": "image", +    "pleroma": { +        "mime_type": "image/png" +    } +} +``` +* Note: Behaves exactly the same as `POST /api/v1/upload`. +  Can only accept images - any attempt to upload non-image files will be met with `HTTP 415 Unsupported Media Type`. +  ## `/api/pleroma/notification_settings`  ### Updates user notification settings  * Method `PUT`  | 
