548 lines
15 KiB
JSON
548 lines
15 KiB
JSON
{
|
|
"openapi": "3.0.0",
|
|
"info": {
|
|
"title": "li'l Judd - OpenAPI 3.0",
|
|
"description": "None yet",
|
|
"termsOfService": "https://liljudd.ink/terms-of-service/",
|
|
"contact": {
|
|
"url": "https://liljudd.ink/contact/"
|
|
},
|
|
"version": "0.0.0"
|
|
},
|
|
"paths": {
|
|
"/api/boot": {
|
|
"get": {
|
|
"tags": ["Bot bootup"],
|
|
"summary": "Retrieve all guild's configs",
|
|
"description": "Returns all guild's configs.",
|
|
"operationId": "getGuildsForBoot",
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/guildConfig"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/{guildId}/config": {
|
|
"get": {
|
|
"tags": ["Guild config"],
|
|
"summary": "Find a guild's config by ID",
|
|
"description": "Returns a single guild's config.",
|
|
"operationId": "getGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of guild config to return",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/guildConfig"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": ["Guild config"],
|
|
"summary": "Deletes a guild's config by ID",
|
|
"description": "Delete a guild's config when the bot is removed from the guild.",
|
|
"operationId": "deleteGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of guild config to delete",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful operation"
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/{guildId}/tp_messages": {
|
|
"get": {
|
|
"tags": ["Time planning messages"],
|
|
"summary": "Find the tp_messages of guild by ID",
|
|
"description": "Returns tp_messages for a guild",
|
|
"operationId": "getTp_messagesOfGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of guild's tp_messages to return",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/tp_messages"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"204": {
|
|
"description": "Time planning not enabled for this guild"
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
},
|
|
"put": {
|
|
"tags": ["Time planning messages"],
|
|
"summary": "Put new message IDs for tp_messages of guild by ID",
|
|
"description": "Returns tp_messages for a guild",
|
|
"operationId": "putTp_messagesOfGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of guild's tp_messages to return",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Put new message IDs for tp_messages in channel",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/tp_messages"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful operation"
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"403": {
|
|
"description": "Time planning not enabled for this guild"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/api/{guildId}/matches": {
|
|
"get": {
|
|
"tags": ["Matches"],
|
|
"summary": "Find all matches of guild by ID",
|
|
"description": "Returns tp_messages for a guild",
|
|
"operationId": "getMatchesOfGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of guild's tp_messages to return",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "successful operation",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": ["matches", "timezone"],
|
|
"properties": {
|
|
"matches": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/match"
|
|
}
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"format": "text",
|
|
"example": "Europe/Berlin"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"204": {
|
|
"description": "Time planning not enabled for this guild"
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"tags": ["Matches"],
|
|
"summary": "Save a new created match of guild by ID",
|
|
"description": "Returns tp_messages for a guild",
|
|
"operationId": "postMatchOfGuildById",
|
|
"parameters": [
|
|
{
|
|
"name": "guildId",
|
|
"in": "path",
|
|
"description": "ID of match's guild to set",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "varchar(20)"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"description": "Save a new created match in channel",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": ["match", "timezone"],
|
|
"properties": {
|
|
"match": {
|
|
"$ref": "#/components/schemas/match"
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"format": "text",
|
|
"example": "Europe/Berlin",
|
|
"description": "Has to match guild tz"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "successful operation"
|
|
},
|
|
"400": {
|
|
"description": "Invalid ID supplied"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"404": {
|
|
"description": "Guild not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"basicAuth": []
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"guildConfig": {
|
|
"type": "object",
|
|
"required": ["guildId", "timezone", "features", "matches", "checksum"],
|
|
"properties": {
|
|
"guildId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"timezone": {
|
|
"type": "string",
|
|
"format": "text",
|
|
"example": "Europe/Berlin"
|
|
},
|
|
"features": {
|
|
"type": "object",
|
|
"required": ["timePlanning"],
|
|
"properties": {
|
|
"timePlanning": {
|
|
"type": "object",
|
|
"required": [
|
|
"enabled",
|
|
"channelId",
|
|
"targetMinute",
|
|
"targetHour",
|
|
"targetDay",
|
|
"roles"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"channelId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"targetMinute": {
|
|
"type": "number",
|
|
"example": 0
|
|
},
|
|
"targetHour": {
|
|
"type": "number",
|
|
"example": 1
|
|
},
|
|
"targetDay": {
|
|
"type": "number",
|
|
"example": 1
|
|
},
|
|
"roles": {
|
|
"type": "object",
|
|
"required": [
|
|
"enabled",
|
|
"isAvailableRoleId",
|
|
"wantsToBeNotifieRoledId"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"isAvailableRoleId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"wantsToBeNotifieRoledId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"matches": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/match"
|
|
}
|
|
},
|
|
"checksum": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"match": {
|
|
"type": "object",
|
|
"required": [
|
|
"channelId",
|
|
"matchType",
|
|
"createrId",
|
|
"roleId",
|
|
"opponentName",
|
|
"messageId",
|
|
"utc_ts"
|
|
],
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"createrId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"roleId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"messageId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"matchType": {
|
|
"type": "string",
|
|
"format": "varchar(50)",
|
|
"example": "Scrim"
|
|
},
|
|
"opponentName": {
|
|
"type": "string",
|
|
"format": "varchar(100)",
|
|
"example": "?"
|
|
},
|
|
"utc_ts": {
|
|
"type": "string",
|
|
"example": "2020-01-01T00:00:00Z"
|
|
}
|
|
}
|
|
},
|
|
"tp_messages": {
|
|
"type": "object",
|
|
"required": ["channelId", "messageIds"],
|
|
"properties": {
|
|
"channelId": {
|
|
"type": "number",
|
|
"example": 1234567890123456789
|
|
},
|
|
"messageIds": {
|
|
"type": "object",
|
|
"required": ["0", "1", "2", "3", "4", "5", "6"],
|
|
"properties": {
|
|
"0": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"1": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"2": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"3": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"4": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"5": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
},
|
|
"6": {
|
|
"type": "number",
|
|
"example": 1234567890123456789,
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"basicAuth": {
|
|
"type": "http",
|
|
"scheme": "basic"
|
|
}
|
|
}
|
|
}
|
|
}
|