This repository has been archived on 2026-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
robigan 366502cef4
Init of the openapi.yml file
Needs some checking and isn't exactly swagger compliant but should be ok
2021-07-05 18:40:43 +02:00

527 lines
26 KiB
YAML

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/"