forked from AkkomaGang/akkoma
Document subscription endpoints, fix typos
Also adds a quick error case on the subscription endpoints to avoid 500s
This commit is contained in:
parent
ffac2593ea
commit
c05fe4da0a
2 changed files with 64 additions and 8 deletions
|
@ -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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
|
@ -864,22 +864,30 @@ def unblock_domain(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) d
|
||||||
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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue