{"openapi":"3.0.3","info":{"title":"Tennessee Management API","version":"1.0.0","description":"Gateway reference. Bot-specific behavior depends on the running upstream service. Authentication is enforced by each upstream bot."},"servers":[{"url":"https://api.tennesseemanagement.xyz"}],"tags":[{"name":"Gateway"},{"name":"Management Bot"},{"name":"Utilities Bot"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/bots/management/api/health":{"get":{"tags":["Management Bot"],"summary":"Public bot health","operationId":"management_get__bots_management_api_health","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}}}},"/bots/management/api/admin/login":{"post":{"tags":["Management Bot"],"summary":"Password sign-in","operationId":"management_post__bots_management_api_admin_login","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["password"],"properties":{"password":{"type":"string","format":"password"}}}}}}}},"/bots/management/api/admin/servers":{"get":{"tags":["Management Bot"],"summary":"Bearer token required","operationId":"management_get__bots_management_api_admin_servers","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}]}},"/bots/management/api/settings/{guildId}":{"get":{"tags":["Management Bot"],"summary":"Bearer token required","operationId":"management_get__bots_management_api_settings_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"tags":["Management Bot"],"summary":"Bearer token required","operationId":"management_post__bots_management_api_settings_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"delete":{"tags":["Management Bot"],"summary":"Bearer token required; bot may leave guild","operationId":"management_delete__bots_management_api_settings_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/management/api/commands":{"get":{"tags":["Management Bot"],"summary":"Bearer token required","operationId":"management_get__bots_management_api_commands","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}]}},"/bots/management/api/status":{"post":{"tags":["Management Bot"],"summary":"Bearer token required","operationId":"management_post__bots_management_api_status","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}]}},"/bots/utilities/api/auth/config":{"get":{"tags":["Utilities Bot"],"summary":"Public authentication configuration","operationId":"utilities_get__bots_utilities_api_auth_config","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}}}},"/bots/utilities/api/admin/login":{"post":{"tags":["Utilities Bot"],"summary":"Password sign-in if enabled","operationId":"utilities_post__bots_utilities_api_admin_login","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["password"],"properties":{"password":{"type":"string","format":"password"}}}}}}}},"/bots/utilities/api/admin/servers":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_admin_servers","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}]}},"/bots/utilities/api/commands":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_commands","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}]}},"/bots/utilities/api/settings/{guildId}/general":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_settings_guildId_general","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_settings_guildId_general","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/settings/{guildId}/logging":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_settings_guildId_logging","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_settings_guildId_logging","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/settings/{guildId}/integrations":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_settings_guildId_integrations","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_settings_guildId_integrations","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/settings/{guildId}/commands":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_settings_guildId_commands","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_settings_guildId_commands","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/suggestion-protection/{guildId}":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_suggestion_protection_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]},"put":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_put__bots_utilities_api_suggestion_protection_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/suggestion-blocks/{guildId}":{"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_suggestion_blocks_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/suggestion-blocks/{guildId}/{userId}":{"delete":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_delete__bots_utilities_api_suggestion_blocks_guildId_userId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/suggestions/{guildId}":{"get":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_get__bots_utilities_api_suggestions_guildId","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}}]}},"/bots/utilities/api/suggestions/{guildId}/{id}/review":{"post":{"tags":["Utilities Bot"],"summary":"Bearer token required","operationId":"utilities_post__bots_utilities_api_suggestions_guildId_id_review","responses":{"200":{"description":"JSON response from the bot API","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Unauthorized"},"502":{"description":"Bot upstream unreachable"},"503":{"description":"Bot upstream not configured"}},"security":[{"bearerAuth":[]}],"parameters":[{"name":"guildId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/api/health":{"get":{"tags":["Gateway"],"summary":"Gateway health","responses":{"200":{"description":"Gateway is online"}}}},"/api/services":{"get":{"tags":["Gateway"],"summary":"Management and Utilities upstream connectivity","responses":{"200":{"description":"Service connectivity results"}}}}}}