summaryrefslogtreecommitdiffstats
path: root/docs/avatar.md
blob: c1594892478beeae0312c7815b15a0f9caaccba8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Conversation avatar API

* API v1: Base endpoint `/ocs/v2.php/apps/spreed/api/v1`: since Nextcloud 27

## Set conversations avatar

* Required capability: `avatar`
* Method: `POST`
* Endpoint: `/room/{token}/avatar`
* Data:

| field  | type   | Description                                                                                                                         |
|--------|--------|-------------------------------------------------------------------------------------------------------------------------------------|
| `file` | string | Blob of image in a multipart/form-data request. Only accept images with mimetype equal to PNG or JPEG and need to be squared image. |

* Response:
    - Status code:
        + `200 OK`
        + `400 Bad Request` When: is one-to-one, no image, file is too big, invalid mimetype or resource, isn't square, unknown error
        + `403 Forbidden` When the current user is not a moderator, owner or guest moderator
        + `404 Not Found` When the conversation could not be found for the participant

    - Data:
        + `200 OK`: See array definition in `Get user´s conversations`
        + `400 Bad Request`: Array with a `message` field contain the error in user language

## Set emoji as avatar

* Required capability: `avatar`
* Method: `POST`
* Endpoint: `/room/{token}/avatar/emoji`
* Data:

| field   | type        | Description                                                                                                                                |
|---------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| `emoji` | string      | A single emoji being used as avatar (can contain properties like gender, skin color, age, job, etc.)                                       |
| `color` | string/null | HEX color code (6 times 0-9A-F) without the leading `#` character (omit to fallback to the default bright/dark mode icon background color) |

* Response:
    - Status code:
        + `200 OK`
        + `400 Bad Request` When the conversation is a one-to-one conversation
        + `400 Bad Request` When the emoji is not a single emoji
        + `400 Bad Request` When color was provided but is not matching the expected pattern
        + `403 Forbidden` When the current user is not a moderator, owner or guest moderator
        + `404 Not Found` When the conversation could not be found for the participant

    - Data:
        + `200 OK`: See array definition in `Get user´s conversations`
        + `400 Bad Request`: Array with a `message` field contain the error in user language

## Delete conversations avatar

!!! note
    To determine if the delete option should be presented to the user, it's recommended to check the `isCustomAvatar` property of the [Get user´s conversations](conversation.md#get-user-s-conversations) API.


* Required capability: `avatar`
* Method: `DELETE`
* Endpoint: `/room/{token}/avatar`

* Response:
    - Status code:
        + `200 OK`
        + `403 Forbidden` When the current user is not a moderator, owner or guest moderator
        + `404 Not Found` When the conversation could not be found for the participant

    - Data: See array definition in `Get user´s conversations`

## Get conversations avatar (binary)

* Required capability: `avatar`
* Federation capability: `federation-v1`
* Method: `GET`
* Endpoint: `/room/{token}/avatar`

* Response:
    - Status code:
        + `200 OK`
        + `404 Not Found` When the conversation could not be found for the participant
    - Body: the image file

## Get dark mode conversations avatar (binary)

* Required capability: `avatar`
* Federation capability: `federation-v1`
* Method: `GET`
* Endpoint: `/room/{token}/avatar/dark`

* Response:
    - Status code:
        + `200 OK`
        + `404 Not Found` When the conversation could not be found for the participant
    - Body: the image file

## Get federated user avatar (binary)

* Required capability: `federation-v1`
* Method: `GET`
* Endpoint: `/proxy/{token}/user-avatar/{size}`
* Data:

| field     | type   | Description                              |
|-----------|--------|------------------------------------------|
| `size`    | int    | Only 64 and 512 are supported            |
| `cloudId` | string | Federation CloudID to get the avatar for |

* Response:
    - Status code:
        + `200 OK`
        + `404 Not Found` When the conversation could not be found for the participant
    - Body: the image file

## Get dark mode federated user avatar (binary)

* Required capability: `federation-v1`
* Method: `GET`
* Endpoint: `/proxy/{token}/user-avatar/{size}/dark`
* Data:

| field     | type   | Description                              |
|-----------|--------|------------------------------------------|
| `size`    | int    | Only 64 and 512 are supported            |
| `cloudId` | string | Federation CloudID to get the avatar for |

* Response:
    - Status code:
        + `200 OK`
        + `404 Not Found` When the conversation could not be found for the participant
    - Body: the image file