Document subscription endpoints, fix typos

Also adds a quick error case on the subscription endpoints
to avoid 500s
This commit is contained in:
Sadposter 2019-04-06 16:20:06 +01:00
parent ffac2593ea
commit c05fe4da0a
No known key found for this signature in database
GPG key ID: 6F3BAD60DE190290
2 changed files with 64 additions and 8 deletions

View file

@ -52,7 +52,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi
* `confirm` * `confirm`
* `captcha_solution`: optional, contains provider-specific captcha solution, * `captcha_solution`: optional, contains provider-specific captcha solution,
* `captcha_token`: optional, contains provider-specific captcha token * `captcha_token`: optional, contains provider-specific captcha token
* `token`: invite token required when the registerations aren't public. * `token`: invite token required when the registrations aren't public.
* Response: JSON. Returns a user object on success, otherwise returns `{"error": "error_msg"}` * Response: JSON. Returns a user object on success, otherwise returns `{"error": "error_msg"}`
* Example response: * Example response:
``` ```
@ -114,5 +114,53 @@ See [Admin-API](Admin-API.md)
* Method `POST` * Method `POST`
* Authentication: required * Authentication: required
* Params: * Params:
* `id`: notifications's id * `id`: notification's id
* Response: JSON. Returns `{"status": "success"}` if the reading was successful, otherwise returns `{"error": "error_msg"}` * Response: JSON. Returns `{"status": "success"}` if the reading was successful, otherwise returns `{"error": "error_msg"}`
## `/api/v1/pleroma/accounts/:id/subscribe`
### Subscribe to receive notifications for all statuses posted by a user
* Method `POST`
* Authentication: required
* Params:
* `id`: account id to subscribe to
* Response: JSON, returns a mastodon relationship object on success, otherwise returns `{"error": "error_msg"}`
* Example response:
```json
{
id: "abcdefg",
following: true,
followed_by: false,
blocking: false,
muting: false,
muting_notifications: false,
subscribing: true,
requested: false,
domain_blocking: false,
showing_reblogs: true,
endorsed: false
}
```
## `/api/v1/pleroma/accounts/:id/unsubscribe`
### Unsubscribe to stop receiving notifications from user statuses
* Method `POST`
* Authentication: required
* Params:
* `id`: account id to unsubscribe from
* Response: JSON, returns a mastodon relationship object on success, otherwise returns `{"error": "error_msg"}`
* Example response:
```json
{
id: "abcdefg",
following: true,
followed_by: false,
blocking: false,
muting: false,
muting_notifications: false,
subscribing: false,
requested: false,
domain_blocking: false,
showing_reblogs: true,
endorsed: false
}
```

View file

@ -864,22 +864,30 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end end
def subscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do def subscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %User{} = subscription_target <- User.get_by_id(id) do with %User{} = subscription_target <- User.get_by_id(id),
{:ok, subscription_target} = User.subscribe(user, subscription_target) {:ok, subscription_target} = User.subscribe(user, subscription_target) do
conn conn
|> put_view(AccountView) |> put_view(AccountView)
|> render("relationship.json", %{user: user, target: subscription_target}) |> render("relationship.json", %{user: user, target: subscription_target})
else
{:error, message} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(403, Jason.encode!(%{"error" => message}))
end end
end end
def unsubscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do def unsubscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do
with %User{} = subscription_target <- User.get_by_id(id) do with %User{} = subscription_target <- User.get_by_id(id),
{:ok, subscription_target} = User.unsubscribe(user, subscription_target) {:ok, subscription_target} = User.unsubscribe(user, subscription_target) do
conn conn
|> put_view(AccountView) |> put_view(AccountView)
|> render("relationship.json", %{user: user, target: subscription_target}) |> render("relationship.json", %{user: user, target: subscription_target})
else
{:error, message} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(403, Jason.encode!(%{"error" => message}))
end end
end end