summary refs log tree commit diff
path: root/api/assets/openapi.yml
blob: 957b6d16ade596e9bdf066d6534960978ad1674d (plain) (blame)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
swagger: "2.0"
info:
    description: "Fosscord backend api docs"
    version: "1.0.0"
    title: "Fosscord Backend API"
    termsOfService: "https://github.com/fosscord/fosscord/blob/master/LICENSE"
    license:
        name: "AGPL 3.0"
        url: "https://www.gnu.org/licenses/agpl-3.0.html"
host: "dev.fosscord.com"
basePath: "/api/v9"
tags:
  - name: "Audit Log"
    description: "Guild Audit Log resource"
    externalDocs:
        description: "Find out more"
        url: "https://discord.com/developers/docs/resources/audit-log"
  - name: "Channel"
    description: "Channel resource"
    externalDocs:
        description: "Find out more"
        url: "https://discord.com/developers/docs/resources/channel"
schemes:
  - "https"
  - "http"
paths:
    /guilds/{guildId}/audit-logs:
        get:
            summary: "Returns an audit log object for the guild. Requires the 'VIEW_AUDIT_LOG' permission."
            tags:
              - Audit Log
            parameters:
              - $ref: "#/definitionsParam/guildId"
              - name: user_id
                in: query
                type: string
                description: "Type of snowflake - Filter the log for actions made by a user"
              - name: action_type
                in: query
                type: integer
                description: "The type of audit log event"
              - name: before
                in: query
                type: string
                description: "Type of snowflake - Filter the log before a certain entry id"
              - name: limit
                in: query
                type: integer
                description: "How many entries are returned (default 50, minimum 1, maximum 100)"
            responses:
                '200': 
                    description: "Audit Log Object"
                    schema:
                        $ref: "#/definitions/Audit%20Log"
    /channels/{channelId}:
        get:
            summary: "Get a channel by ID. Returns a channel object. If the channel is a thread, a thread member object is included in the returned result."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
            responses:
                '200':
                    description: "Channel Object"
                    schema:
                        $ref: "#/definitions/Channel"
        patch:
            summary: "Update a channel's settings. Returns a channel on success, and a 400 BAD REQUEST on invalid parameters. All JSON parameters are optional."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - name: body (Group DM)
                in: body
                description: "The request body when modifying Group DM channels - Fires a Channel Update Gateway event."
                schema:
                    type: object
                    properties:
                        name:
                            type: string
                            description: "1-100 character channel name"
                        icon:
                            type: string
                            format: byte
                            description: "base64 encoded icon"
              - name: body (Guild channel)
                in: body
                description: "Requires the MANAGE_CHANNELS permission for the guild. Fires a Channel Update Gateway event. If modifying a category, individual Channel Update events will fire for each child channel that also changes. If modifying permission overwrites, the MANAGE_ROLES permission is required. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a MANAGE_ROLES overwrite in the channel)."
                schema:
                    type: object
                    properties:
                        name:
                            type: string
                            description: "1-100 character channel name"
                        type:
                            type: integer
                            description: "The type of channel; only conversion between text and news is supported and only in guilds with the \"NEWS\" feature"
                        position:
                            type: integer
                            default: null
                            description: "The position of the channel in the left-hand listing"
                        topic:
                            type: string
                            default: null
                            description: "0-1024 character channel topic"
                        nsfw:
                            type: boolean
                            default: null
                            description: "Whether the channel is nsfw"
                        rate_limit_per_user:
                            type: integer
                            default: null
                            description: "Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected"
                        bitrate:
                            type: integer
                            default: null
                            description: "The bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers)"
                        user_limit:
                            type: integer
                            default: null
                            description: "The user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit"
                        permission_overwrites:
                            type: array
                            items:
                                $ref: "#/definitions/Overwrite"
                            default: null
                            description: "Channel or category-specific permissions"
                        parent_id:
                            $ref: "#/definitions/Snowflake"
                            default: null
                            description: "Id of the new parent category for a channel"
                        rtc_region:
                            type: string
                            default: null
                            description: "Channel voice region id, automatic when set to null"
                        video_quality_mode:
                            type: integer
                            default: null
                            description: "The camera video quality mode of the voice channel"
                        default_auto_archive_duration:
                            type: integer
                            default: null
                            description: "The default duration for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity"
              - name: body (Thread)
                in: body
                description: "When setting archived to false, when locked is also false, only the SEND_MESSAGES permission is required.Otherwise, requires the MANAGE_THREADS permission. Fires a Thread Update Gateway event. Requires the thread to have archived set to false or be set to false in the request."
                schema:
                    type: object
                    properties:
                        name:
                            type: string
                            description: "1-100 character channel name"
                        archived:
                            type: boolean
                            description: "Whether the channel is archived"
                        auto_archive_duration:
                            type: integer
                            description: "Duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 (The 3 day and 7 day archive durations require the server to be boosted. The guild features will indicate if a server is able to use those settings)"
                        locked:
                            type: boolean
                            description: "When a thread is locked, only users with MANAGE_THREADS can unarchive it"
                        rate_limit_per_user:
                            type: integer
                            default: null
                            description: "Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected"
            responses:
                '200':
                    description: "Channel Object"
                    schema:
                        $ref: "#/definitions/Channel"
                '400':
                    description: "Bad Request due to invalid parameters"
        delete:
            summary: "Delete a channel, or close a private message. Requires the MANAGE_CHANNELS permission for the guild, or MANAGE_THREADS if the channel is a thread. Deleting a category does not delete its child channels; they will have their parent_id removed and a Channel Update Gateway event will fire for each of them. Returns a channel object on success. Fires a Channel Delete Gateway event (or Thread Delete if the channel was a thread)."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
            responses:
                '200':
                    description: "Channel deleted sucessfully"
    /channels/{channelId}/messages:
        get:
            summary: "Returns the messages for a channel. If operating on a guild channel, this endpoint requires the VIEW_CHANNEL permission to be present on the current user. If the current user is missing the 'READ_MESSAGE_HISTORY' permission in the channel then this will return no messages (since they cannot read the message history). Returns an array of message objects on success."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - name: around
                in: query
                type: string
                description: "Type of snowflake - Get messages around this message ID"
              - name: before
                in: query
                type: string
                description: "Type of snowflake - Get messages before this message ID"
              - name: after
                in: query
                type: string
                description: "Type of snowflake - Get messages after this message ID"
              - name: limit
                in: query
                type: integer
                description: "Max number of messages to return (1-100)"
                default: 50
            responses:
                '200':
                    description: "Returns an array of message objects on success"
                    schema:
                        type: array
                        items:
                            $ref: "#/definitions/Message"
    /channels/{channelId}/messages/{messageId}:
        get:
            summary: "Returns a specific message in the channel. If operating on a guild channel, this endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Returns a message object on success."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
            responses:
                '200':
                    description: "Returns a message object on success"
                    schema:
                        $ref: "#/definitions/Message"
        post:
            summary: "Post a message to a guild text or DM channel. Returns a message object. Fires a Message Create Gateway event. See message formatting for more information on how to properly format messages."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - name: body
                in: body
                required: true
                description: "Request body that contains the necessary data for creating messages"
                schema:
                    type: object
                    properties:
                        content:
                            type: string
                            description: "The message contents (up to 2000 characters)"
                        tts:
                            type: boolean
                            description: "True if this is a TTS message"
                            default: null
                        file:
                            type: string
                            format: binary
                            description: "The contents of the file being sent"
                        embeds:
                            type: array
                            items:
                                $ref: "#/definitions/Embed"
                            description: "Embedded rich content (up to 6000 characters)"
                        payload_json:
                            type: string
                            description: "JSON encoded body of non-file params"
                            default: null
                        allowed_mentions:
                            $ref: "#/definitions/Allowed%20Mention"
                            description: "Allowed mentions for the message"
                            default: null
                        message_refrence:
                            $ref: "#/definitions/Message%20Refrence"
                            description: "Include to make your message a reply"
                            default: null
                        components:
                            type: array
                            items:
                                $ref: "#/definitions/Message%20Component"
                            default: null
            responses:
                '200':
                    description: "Returns a message object on success"
                    schema:
                        $ref: "#/definitions/Message"
        patch:
            summary: "Edit a previously sent message. The fields content, embeds, and flags can be edited by the original message author. Other users can only edit flags and only if they have the MANAGE_MESSAGES permission in the corresponding channel. When specifying flags, ensure to include all previously set flags/bits in addition to ones that you are modifying. Only flags documented in the table below may be modified by users (unsupported flag changes are currently ignored without error)."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - name: body
                in: body
                required: true
                description: "Request body that contains the necessary data for editing messages"
                schema:
                    type: object
                    properties:
                        content:
                            type: string
                            description: "The message contents (up to 2000 characters)"
                        embeds:
                            type: array
                            items:
                                $ref: "#/definitions/Embed"
                            description: "Embedded rich content (up to 6000 characters)"
                        flags:
                            type: integer
                            description: "Edit the flags of a message (only SUPPRESS_EMBEDS can currently be set/unset)"
                        file:
                            type: string
                            format: binary
                            description: "The contents of the file being sent/edited"
                        payload_json:
                            type: string
                            description: "JSON encoded body of non-file params (multipart/form-data only)"
                            default: null
                        allowed_mentions:
                            $ref: "#/definitions/Allowed%20Mention"
                            description: "Allowed mentions for the message"
                            default: null
                        message_refrence:
                            $ref: "#/definitions/Message%20Refrence"
                            description: "Include to make your message a reply"
                            default: null
                        components:
                            type: array
                            items:
                                $ref: "#/definitions/Message%20Component"
                            default: null
            responses:
                '200':
                    description: "Message edited"
        delete:
            summary: "Delete a message. If operating on a guild channel and trying to delete a message that was not sent by the current user, this endpoint requires the MANAGE_MESSAGES permission. Returns a 204 empty response on success. Fires a Message Delete Gateway event."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
    /channels/{channelId}/messages/{messageId}/crosspost:
        post:
            summary: "Crosspost a message in a News Channel to following channels. This endpoint requires the 'SEND_MESSAGES' permission, if the current user sent the message, or additionally the 'MANAGE_MESSAGES' permission, for all other messages, to be present for the current user."
            tags:
                - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
            responses:
                '200':
                    description: "Returns a message object on success"
                    schema:
                        $ref: "#/definitions/Message"
    /channels/{channelId}/messages/{messageId}/reactions/{emoji}/@me:
        put:
            summary: "Create a reaction for the message. This endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Additionally, if nobody else has reacted to the message using this emoji, this endpoint requires the 'ADD_REACTIONS' permission to be present on the current user. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - $ref: "#/definitionsParam/emoji"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
        delete:
            summary: "Delete a reaction the current user has made for the message. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - $ref: "#/definitionsParam/emoji"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
    /channels/{channelId}/messages/{messageId}/reactions/{emoji}/{userId}:
        delete:
            summary: "Deletes another user's reaction. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - $ref: "#/definitionsParam/emoji"
              - $ref: "#/definitionsParam/userId"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
    /channels/{channelId}/messages/{messageId}/reactions/{emoji}:
        get:
            summary: "Get a list of users that reacted with this emoji. Returns an array of user objects on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - $ref: "#/definitionsParam/emoji"
              - name: after
                in: query
                type: string
                description: "Type of snowflake - Get users after this user ID"
              - name: limit
                in: query
                type: integer
                description: "Max number of users to return (1-100)"
                default: 25
            responses:
                '200':
                    description: "Returns an array of user objects on success"
                    schema:
                        type: array
                        items:
                            $ref: "#/definitions/User"
        delete:
            summary: "Deletes all the reactions for a given emoji on a message. This endpoint requires the MANAGE_MESSAGES permission to be present on the current user. Fires a Message Reaction Remove Emoji Gateway event. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
              - $ref: "#/definitionsParam/emoji"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
    /channels/{channelId}/messages/{messageId}/reactions:
        delete:
            summary: "Deletes all reactions on a message. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Fires a Message Reaction Remove All Gateway event."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
              - $ref: "#/definitionsParam/messageId"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
    /channels/{channelId}/messages/bulk-delete:
        post:
            summary: "Delete multiple messages in a single request. This endpoint can only be used on guild channels and requires the MANAGE_MESSAGES permission. Returns a 204 empty response on success. Fires a Message Delete Bulk Gateway event."
            tags:
              - Channel
            parameters:
              - $ref: "#/definitionsParam/channelId"
            responses:
                '204':
                    description: "Returns a 204 empty response on success."
definitions:
    Snowflake:
        type: string
        pattern: "^\\d+$"
    Audit Log:
        type: object
        properties:
            webhooks:
                type: array
                items:
                    $ref: "#/definitions/Webhook"
                description: "List of webhooks found in the audit log"
            users:
                type: array
                items:
                    $ref: "#/definitions/User"
                description: "List of users found in the audit log"
            audit_log_entries:
                type: array
                items:
                    $ref: "#/definitions/Audit%20Log%20Entry"
                description: "List of audit log entries"
            integrations:
                type: array
                items:
                    $ref: "#/definitions/Integration"
                description: "List of partial integration objects"
    Audit Log Entry:
        type: object
    Webhook:
        type: object
    User:
        type: object
    Integration:
        type: object
    Channel:
        type: object
    Overwrite:
        type: object
    Message:
        type: object
    Embed:
        type: object
    Allowed Mention:
        type: object
    Message Refrence:
        type: object
    Message Component:
        type: object
definitionsParam:
    channelId:
        name: channelId
        in: path
        required: true
        type: string
        description: "Type of snowflake - A channel Id"
    messageId:
        name: messageId
        in: path
        required: true
        type: string
        description: "Type of snowflake - A message ID"
    guildId:
        name: guildId
        in: path
        required: true
        type: string
        description: "Type of snowflake - A guild ID"
    emoji:
        name: emoji
        in: path
        required: true
        type: string
        format: url
        description: "The emoji ID to use"
    userId:
        name: userId
        in: path
        required: true
        type: string
        description: "Type of snowflake - A user ID"
externalDocs:
    description: "Discord API"
    url: "https://discord.com/developers/docs/"