mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
docs(api): 📝 Document Reactions API
This commit is contained in:
parent
6f97f9f8f1
commit
98d63d85d4
|
|
@ -58,6 +58,10 @@ export default defineConfig({
|
||||||
text: "Emojis",
|
text: "Emojis",
|
||||||
link: "/api/emojis",
|
link: "/api/emojis",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: "Reactions",
|
||||||
|
link: "/api/reactions",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: "Roles",
|
text: "Roles",
|
||||||
link: "/api/roles",
|
link: "/api/roles",
|
||||||
|
|
|
||||||
|
|
@ -369,6 +369,49 @@ An array of [`Roles`](./roles.md#role) that the user has.
|
||||||
|
|
||||||
URI of the account's Versia entity (for federation). Similar to Mastodon's `uri` field on notes.
|
URI of the account's Versia entity (for federation). Similar to Mastodon's `uri` field on notes.
|
||||||
|
|
||||||
|
## `Status`
|
||||||
|
|
||||||
|
One attribute has been added to all returned [`Status`](https://docs.joinmastodon.org/entities/Status/) objects.
|
||||||
|
|
||||||
|
This object is returned on routes such as `/api/v1/statuses/:id`, `/api/v1/statuses/:id/context`, etc.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
type URL = string;
|
||||||
|
|
||||||
|
interface NoteReaction {
|
||||||
|
name: string;
|
||||||
|
count: number;
|
||||||
|
me: boolean;
|
||||||
|
url: URL;
|
||||||
|
}
|
||||||
|
|
||||||
|
type ExtendedStatus = Status & {
|
||||||
|
reactions: NoteReaction[];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
...
|
||||||
|
"reactions": [
|
||||||
|
{
|
||||||
|
"name": "like",
|
||||||
|
"count": 3,
|
||||||
|
"me": true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blobfox",
|
||||||
|
"count": 1,
|
||||||
|
"me": false,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### `reactions`
|
||||||
|
|
||||||
|
An array of all the [`NoteReactions`](./reactions.md#reaction) for the note. Data for the custom emoji (e.g. URL) can be found in the `emojis` field of the [`Status`](https://docs.joinmastodon.org/entities/Status#emojis).
|
||||||
|
|
||||||
## `/api/v1/accounts/update_credentials`
|
## `/api/v1/accounts/update_credentials`
|
||||||
|
|
||||||
The `username` parameter can now (optionally) be set to change the user's handle.
|
The `username` parameter can now (optionally) be set to change the user's handle.
|
||||||
|
|
|
||||||
176
docs/api/reactions.md
Normal file
176
docs/api/reactions.md
Normal file
|
|
@ -0,0 +1,176 @@
|
||||||
|
# Reactions API
|
||||||
|
|
||||||
|
This API is used to send reactions to notes.
|
||||||
|
|
||||||
|
## Reaction
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
type UUID = string;
|
||||||
|
|
||||||
|
interface NoteReaction {
|
||||||
|
name: string;
|
||||||
|
count: number;
|
||||||
|
me: boolean;
|
||||||
|
url: URL;
|
||||||
|
}
|
||||||
|
|
||||||
|
type NoteReactionWithAccounts = NoteReaction & {
|
||||||
|
account_ids: UUID[];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get Reactions
|
||||||
|
|
||||||
|
All reactions attached to a [`Status`](https://docs.joinmastodon.org/entities/Status) can be found on the note itself, [in the `reactions` field](./mastodon.md#reactions).
|
||||||
|
|
||||||
|
## Get Users Who Reacted
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/statuses/:id/reactions
|
||||||
|
```
|
||||||
|
|
||||||
|
Get a list of all the users who reacted to a note. Only IDs are returned, not full account objects, to improve performance on very popular notes.
|
||||||
|
|
||||||
|
- **Returns:** [`NoteReactionWithAccounts[]`](#reaction)
|
||||||
|
- **Authentication:** Not required
|
||||||
|
- **Permissions:** `read:reaction`
|
||||||
|
- **Version History**:
|
||||||
|
- `0.8.0`: Added.
|
||||||
|
|
||||||
|
### Request
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/statuses/123/reactions
|
||||||
|
```
|
||||||
|
|
||||||
|
### Response
|
||||||
|
|
||||||
|
#### `200 OK`
|
||||||
|
|
||||||
|
List of reactions and associated users. The `me` field is `true` if the current user has reacted with that emoji.
|
||||||
|
|
||||||
|
Data for the custom emoji (e.g. URL) can be found in the `emojis` field of the [`Status`](https://docs.joinmastodon.org/entities/Status#emojis).
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "like",
|
||||||
|
"count": 3,
|
||||||
|
"me": true,
|
||||||
|
"account_ids": ["1", "2", "3"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blobfox-coffee",
|
||||||
|
"count": 1,
|
||||||
|
"me": false,
|
||||||
|
"account_ids": ["4"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Add Reaction
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/v1/statuses/:id/reactions/:name
|
||||||
|
```
|
||||||
|
|
||||||
|
Add a reaction to a note.
|
||||||
|
|
||||||
|
- **Returns:** [`Status`](https://docs.joinmastodon.org/entities/Status)
|
||||||
|
- **Authentication:** Required
|
||||||
|
- **Permissions:** `owner:reaction`
|
||||||
|
- **Version History**:
|
||||||
|
- `0.8.0`: Added.
|
||||||
|
|
||||||
|
### Request
|
||||||
|
|
||||||
|
- `name` (string, required): Either a custom emoji shortcode or a Unicode emoji.
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/v1/statuses/123/reactions/blobfox-coffee
|
||||||
|
Authorization: Bearer ...
|
||||||
|
```
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/v1/statuses/123/reactions/👍
|
||||||
|
Authorization: Bearer ...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Response
|
||||||
|
|
||||||
|
#### `201 Created`
|
||||||
|
|
||||||
|
Returns the updated note.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "123",
|
||||||
|
...
|
||||||
|
"reactions": [
|
||||||
|
{
|
||||||
|
"name": "👍",
|
||||||
|
"count": 3,
|
||||||
|
"me": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blobfox-coffee",
|
||||||
|
"count": 1,
|
||||||
|
"me": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Remove Reaction
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/statuses/:id/reactions/:name
|
||||||
|
```
|
||||||
|
|
||||||
|
Remove a reaction from a note.
|
||||||
|
|
||||||
|
- **Returns:** [`Status`](https://docs.joinmastodon.org/entities/Status)
|
||||||
|
- **Authentication:** Required
|
||||||
|
- **Permissions:** `owner:reaction`
|
||||||
|
- **Version History**:
|
||||||
|
- `0.8.0`: Added.
|
||||||
|
|
||||||
|
### Request
|
||||||
|
|
||||||
|
- `name` (string, required): Either a custom emoji shortcode or a Unicode emoji.
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/statuses/123/reactions/blobfox-coffee
|
||||||
|
Authorization: Bearer ...
|
||||||
|
```
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/statuses/123/reactions
|
||||||
|
Authorization: Bearer ...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Response
|
||||||
|
|
||||||
|
#### `200 OK`
|
||||||
|
|
||||||
|
Returns the updated note. If the reaction was not found, the note is returned as is.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "123",
|
||||||
|
...
|
||||||
|
"reactions": [
|
||||||
|
{
|
||||||
|
"name": "👍",
|
||||||
|
"count": 3,
|
||||||
|
"me": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -39,6 +39,9 @@ ViewAccounts: "read:account",
|
||||||
ManageEmojis: "emojis",
|
ManageEmojis: "emojis",
|
||||||
ViewEmojis: "read:emoji",
|
ViewEmojis: "read:emoji",
|
||||||
ManageOwnEmojis: "owner:emoji",
|
ManageOwnEmojis: "owner:emoji",
|
||||||
|
ViewReactions: "read:reaction",
|
||||||
|
ManageReactions: "reactions",
|
||||||
|
ManageOwnReactions: "owner:reaction",
|
||||||
ManageMedia: "media",
|
ManageMedia: "media",
|
||||||
ManageOwnMedia: "owner:media",
|
ManageOwnMedia: "owner:media",
|
||||||
ManageBlocks: "blocks",
|
ManageBlocks: "blocks",
|
||||||
|
|
|
||||||
|
|
@ -526,6 +526,9 @@ export enum RolePermissions {
|
||||||
ManageEmojis = "emojis",
|
ManageEmojis = "emojis",
|
||||||
ViewEmojis = "read:emoji",
|
ViewEmojis = "read:emoji",
|
||||||
ManageOwnEmojis = "owner:emoji",
|
ManageOwnEmojis = "owner:emoji",
|
||||||
|
ViewReactions = "read:reaction",
|
||||||
|
ManageReactions = "reactions",
|
||||||
|
ManageOwnReactions = "owner:reaction",
|
||||||
ManageMedia = "media",
|
ManageMedia = "media",
|
||||||
ManageOwnMedia = "owner:media",
|
ManageOwnMedia = "owner:media",
|
||||||
ManageBlocks = "blocks",
|
ManageBlocks = "blocks",
|
||||||
|
|
@ -567,6 +570,8 @@ export const DEFAULT_ROLES = [
|
||||||
RolePermissions.ManageOwnBoosts,
|
RolePermissions.ManageOwnBoosts,
|
||||||
RolePermissions.ViewAccounts,
|
RolePermissions.ViewAccounts,
|
||||||
RolePermissions.ManageOwnEmojis,
|
RolePermissions.ManageOwnEmojis,
|
||||||
|
RolePermissions.ViewReactions,
|
||||||
|
RolePermissions.ManageOwnReactions,
|
||||||
RolePermissions.ViewEmojis,
|
RolePermissions.ViewEmojis,
|
||||||
RolePermissions.ManageOwnMedia,
|
RolePermissions.ManageOwnMedia,
|
||||||
RolePermissions.ManageOwnBlocks,
|
RolePermissions.ManageOwnBlocks,
|
||||||
|
|
@ -590,6 +595,7 @@ export const ADMIN_ROLES = [
|
||||||
RolePermissions.ManageLikes,
|
RolePermissions.ManageLikes,
|
||||||
RolePermissions.ManageBoosts,
|
RolePermissions.ManageBoosts,
|
||||||
RolePermissions.ManageEmojis,
|
RolePermissions.ManageEmojis,
|
||||||
|
RolePermissions.ManageReactions,
|
||||||
RolePermissions.ManageMedia,
|
RolePermissions.ManageMedia,
|
||||||
RolePermissions.ManageBlocks,
|
RolePermissions.ManageBlocks,
|
||||||
RolePermissions.ManageFilters,
|
RolePermissions.ManageFilters,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue