openapi: 3.1.0 info: version: 0.1.2 title: Owncast APIs description: |- Internal The APIs required to make the Owncast web interface and internal functionality work. These APIs will never reach stability and will always change as Owncast features and functionality change. This means these endpoints are not good options to build your own tooling and features on top of. You can, however, of course can if that risk is acceptable to you. Admin The APIs used to configure the Owncast server, as well as power the web admin interface. These APIs are protected by the admin password, using HTTP Basic authentication. They should not be used by external tools or integrations as it would require you to give your admin password to a third party. contact: name: Gabe Kangas email: gabek@real-ity.com url: 'http://owncast.online' license: url: 'https://github.com/owncast/owncast/blob/develop/LICENSE' name: MIT servers: - url: 'http://localhost:8080/api' description: Localhost port 8080 paths: /status: get: summary: Get the status of the server operationId: GetStatus responses: '200': description: Successful response content: application/json: schema: $ref: "#/components/schemas/Status" /emoji: get: summary: Get list of custom emojis supported in the chat operationId: GetCustomEmojiList responses: '200': description: List of valid emojis content: application/json: schema: $ref: "#/components/schemas/Emojis" '500': $ref: "#/components/responses/500" /chat: get: summary: Gets a list of chat messages operationId: GetChatMessages parameters: - $ref: "#/components/parameters/AccessToken" responses: '200': description: List of chat messages content: application/json: schema: $ref: "#/components/schemas/ChatMessages" '401': $ref: "#/components/responses/401" '501': $ref: "#/components/responses/501" /chat/register: post: summary: Registers an anonymous chat user operationId: RegisterAnonymousChatUser parameters: - in: header name: X-Forwarded-User schema: type: string required: false requestBody: description: The display name of the new user required: false content: application/json: schema: type: object properties: displayName: type: string responses: '200': description: Anonymous user information content: application/json: schema: $ref: "#/components/schemas/AnonymousUser" '400': $ref: "#/components/responses/400" options: operationId: RegisterAnonymousChatUserOptions responses: '204': $ref: "#/components/responses/204Options" /chat/messagevisibility: post: summary: Update chat message visibility operationId: UpdateMessageVisibility parameters: - $ref: "#/components/parameters/AccessToken" requestBody: content: application/json: schema: $ref: "#/components/schemas/MessageVisibilityUpdate" responses: '200': description: Message visibility updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" default: $ref: "#/components/responses/Default" /chat/users/setenabled: post: summary: Enable/disable a user operationId: UpdateUserEnabled parameters: - $ref: "#/components/parameters/AccessToken" requestBody: content: application/json: schema: type: object properties: userId: type: string enabled: type: boolean responses: '200': description: User status has been updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" default: $ref: "#/components/responses/Default" /config: get: summary: Get the web config operationId: GetWebConfig responses: '200': description: The current web config content: application/json: schema: $ref: "#/components/schemas/WebConfig" '500': $ref: "#/components/responses/500" /yp: get: summary: Get the YP protocol data operationId: GetYPResponse responses: '200': description: The current YP protocol configuration content: application/json: schema: $ref: "#/components/schemas/YPDetails" '404': $ref: "#/components/responses/404" /socialplatforms: get: summary: Get all social platforms operationId: GetAllSocialPlatforms responses: '200': description: The list of social platforms content: application/json: schema: type: object additionalProperties: $ref: '#/components/schemas/SocialHandle' '500': $ref: "#/components/responses/500" /video/variants: get: summary: Get a list of video variants available operationId: GetVideoStreamOutputVariants responses: '200': description: List of available video variants content: application/json: schema: type: array items: $ref: "#/components/schemas/VideoVariant" /ping: get: summary: Tell the backend you're an active viewer operationId: Ping responses: '200': description: Added as an active viewer /remotefollow: post: summary: Request remote follow operationId: RemoteFollow requestBody: content: application/json: schema: type: object properties: account: type: string responses: '200': description: Contains redirect URL remote follow follow content: application/json: schema: type: object properties: redirectUrl: type: string '400': $ref: "#/components/responses/400" /followers: get: summary: Gets the list of followers operationId: GetFollowers parameters: - $ref: "#/components/parameters/Offset" - $ref: "#/components/parameters/Limit" responses: '200': description: Paginated follower count content: application/json: schema: $ref: "#/components/schemas/PaginatedFollowers" '400': $ref: "#/components/responses/400" /metrics/playback: post: summary: Save video playback metrics for future video health recording operationId: ReportPlaybackMetrics requestBody: description: Video metrics to record content: application/json: schema: $ref: "#/components/schemas/PlaybackMetrics" responses: '200': description: Metrics successfully recorded '400': $ref: "#/components/responses/400" /notifications/register: post: summary: Register for notifications operationId: RegisterForLiveNotifications parameters: - $ref: "#/components/parameters/AccessToken" requestBody: description: Information for notification content: application/json: schema: type: object properties: channel: type: string description: Name of notification channel destination: type: string description: Target of the notification in the channel responses: '200': description: Successfully added notification channel '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" /admin/status: get: summary: Get current inboard broadcaster operationId: StatusAdmin security: - BasicAuth: [] responses: '200': description: Gives the status of the system content: application/json: schema: $ref: "#/components/schemas/AdminStatus" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: StatusAdminOptions responses: '204': $ref: "#/components/responses/204" /admin/disconnect: get: summary: Disconnect inbound stream operationId: DisconnectInboundConnection security: - BasicAuth: [] responses: '200': description: Contains information about disconnection status content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: DisconnectInboundConnectionOptions responses: '204': $ref: "#/components/responses/204" /admin/serverconfig: get: summary: Get the current server config operationId: GetServerConfig security: - BasicAuth: [] responses: '200': description: Current server config content: application/json: schema: $ref: "#/components/schemas/AdminServerConfig" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetServerConfigOptions responses: '204': $ref: "#/components/responses/204" /admin/viewersOverTime: get: summary: Get viewer count over time operationId: GetViewersOverTime security: - BasicAuth: [] parameters: - in: query name: windowStart description: Start date in unix time schema: type: string responses: '200': description: Viewer count over time content: application/json: schema: type: array items: $ref: "#/components/schemas/TimestampedValue" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetViewersOverTimeOptions responses: '204': $ref: "#/components/responses/204" /admin/viewers: get: summary: Get active viewers operationId: GetActiveViewers security: - BasicAuth: [] responses: '200': description: List of active viewers content: application/json: schema: type: array items: $ref: "#/components/schemas/Viewer" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetActiveViewersOptions responses: '204': $ref: "#/components/responses/204" /admin/hardwarestats: get: summary: Get the current hardware stats operationId: GetHardwareStats security: - BasicAuth: [] responses: '200': description: Current hardware stats content: application/json: schema: allOf: - $ref: "#/components/schemas/StreamHealthOverview" - $ref: "#/components/schemas/CollectedMetrics" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetHardwareStatsOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/clients: get: summary: Get a detailed list of currently connected chat clients operationId: GetConnectedChatClients security: - BasicAuth: [] responses: '200': description: List of chat clients content: application/json: schema: $ref: "#/components/schemas/ChatClients" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetConnectedChatClientsOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/messages: get: summary: Get all chat messages for the admin, unfiltered operationId: GetChatMessagesAdmin security: - BasicAuth: [] responses: '200': description: List of chat messages for the admin content: application/json: schema: $ref: "#/components/schemas/ChatMessages" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetChatMessagesAdminOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/messagevisibility: post: summary: Update visibility of chat messages operationId: UpdateMessageVisibilityAdmin security: - BasicAuth: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/MessageVisibilityUpdate" responses: '200': description: Messages updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: UpdateMessageVisibilityAdminOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/setenabled: post: summary: Enable or disable a user operationId: UpdateUserEnabledAdmin security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: userId: type: string enabled: type: boolean responses: '200': description: Successfully updated the user content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: UpdateUserEnabledAdminOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/disabled: get: summary: Get a list of disabled users operationId: GetDisabledUsers security: - BasicAuth: [] responses: '200': description: List of disabled users content: application/json: schema: $ref: "#/components/schemas/Users" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetDisabledUsersOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/ipbans/create: post: summary: Ban an IP address operationId: BanIPAddress security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: IP was successfully banned content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: BanIPAddressOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/ipbans/remove: post: summary: Remove an IP ban operationId: UnbanIPAddress security: - BasicAuth: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/AdminConfigValue" responses: '200': description: IP ban was successfully removed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: UnbanIPAddressOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/ipbans: get: summary: Get all banned IP addresses operationId: GetIPAddressBans security: - BasicAuth: [] responses: '200': description: List of banned IP addresses content: application/json: schema: type: array items: $ref: "#/components/schemas/IPAddress" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetIPAddressBansOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/setmoderator: post: summary: Set moderator status for a user operationId: UpdateUserModerator security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: userId: type: string isModerator: type: boolean responses: '200': description: Successfully update the moderator status of the user content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: UpdateUserModeratorOptions responses: '204': $ref: "#/components/responses/204" /admin/chat/users/moderators: get: summary: Get a list of moderator users operationId: GetModerators security: - BasicAuth: [] responses: '200': description: List of moderator users content: application/json: schema: $ref: "#/components/schemas/Users" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetModeratorsOptions responses: '204': $ref: "#/components/responses/204" /admin/logs: get: summary: Get all logs operationId: GetLogs security: - BasicAuth: [] responses: '200': description: List of logs headers: 'Access-Control-Allow-Origin': $ref: "#/components/headers/Access-Control-Allow-Origin" 'Access-Control-Allow-Credentials': $ref: "#/components/headers/Access-Control-Allow-Credentials" 'Access-Control-Allow-Headers': $ref: "#/components/headers/Access-Control-Allow-Headers" content: application/json: schema: type: array items: $ref: "#/components/schemas/AdminLog" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetLogsOptions responses: '204': $ref: "#/components/responses/204" /admin/logs/warnings: get: summary: Get warning/error logs operationId: GetWarnings security: - BasicAuth: [] responses: '200': description: List of warnings and errors headers: 'Access-Control-Allow-Origin': $ref: "#/components/headers/Access-Control-Allow-Origin" 'Access-Control-Allow-Credentials': $ref: "#/components/headers/Access-Control-Allow-Credentials" 'Access-Control-Allow-Headers': $ref: "#/components/headers/Access-Control-Allow-Headers" content: application/json: schema: type: array items: $ref: "#/components/schemas/AdminLog" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetWarningsOptions responses: '204': $ref: "#/components/responses/204" /admin/followers: get: summary: Get followers operationId: GetFollowersAdmin security: - BasicAuth: [] parameters: - $ref: "#/components/parameters/Offset" - $ref: "#/components/parameters/Limit" responses: '200': description: Paginated follower count content: application/json: schema: $ref: "#/components/schemas/PaginatedFollowers" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetFollowersAdminOptions responses: '204': $ref: "#/components/responses/204" /admin/followers/pending: get: summary: Get a list of pending follow requests operationId: GetPendingFollowRequests security: - BasicAuth: [] responses: '200': description: List of pending followers content: application/json: schema: $ref: "#/components/schemas/Followers" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetPendingFollowRequestsOptions responses: '204': $ref: "#/components/responses/204" /admin/followers/blocked: get: summary: Get a list of rejected or blocked follows operationId: GetBlockedAndRejectedFollowers security: - BasicAuth: [] responses: '200': description: List of rejected or blocked follows content: application/json: schema: $ref: "#/components/schemas/Followers" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetBlockedAndRejectedFollowersOptions responses: '204': $ref: "#/components/responses/204" /admin/followers/approve: post: summary: Set the following state of a follower or follow request operationId: ApproveFollower security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: actorIRI: type: string approved: type: boolean responses: '200': description: List of rejected or blocked follows content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: ApproveFollowerOptions responses: '204': $ref: "#/components/responses/204" /admin/emoji/upload: post: summary: Upload custom emoji operationId: UploadCustomEmoji security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: name: type: string data: description: Base 64 encoded image data type: string responses: '200': description: Emoji has been uploaded content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: UploadCustomEmojiOptions responses: '204': $ref: "#/components/responses/204" /admin/emoji/delete: post: summary: Delete custom emoji operationId: DeleteCustomEmoji security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: name: type: string responses: '200': description: Emoji has been deleted content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: DeleteCustomEmojiOptions responses: '204': $ref: "#/components/responses/204" /admin/config/adminpass: post: summary: Change the current admin password operationId: SetAdminPassword security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Admin password has been updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetAdminPasswordOptions responses: '204': $ref: "#/components/responses/204" /admin/config/streamkeys: post: summary: Set an array of valid stream keys operationId: SetStreamKeys security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: $ref: "#/components/schemas/StreamKey" responses: '200': description: Stream keys have been updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetStreamKeysOptions responses: '204': $ref: "#/components/responses/204" /admin/config/pagecontent: post: summary: Change the extra page content in memory operationId: SetExtraPageContent security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Page content has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetExtraPageContentOptions responses: '204': $ref: "#/components/responses/204" /admin/config/streamtitle: post: summary: Change the stream title operationId: SetStreamTitle security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Stream title has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetStreamTitleOptions responses: '204': $ref: "#/components/responses/204" /admin/config/name: post: summary: Change the server name operationId: SetServerName security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Server name has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetServerNameOptions responses: '204': $ref: "#/components/responses/204" /admin/config/serversummary: post: summary: Change the server summary operationId: SetServerSummary security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Server summary has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetServerSummaryOptions responses: '204': $ref: "#/components/responses/204" /admin/config/offlinemessage: post: summary: Change the offline message operationId: SetCustomOfflineMessage security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Offline message has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetCustomOfflineMessageOptions responses: '204': $ref: "#/components/responses/204" /admin/config/welcomemessage: post: summary: Change the welcome message operationId: SetServerWelcomeMessage security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Welcome message has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetServerWelcomeMessageOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/disable: post: summary: Disable chat operationId: SetChatDisabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Chat has been disabled content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetChatDisabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/joinmessagesenabled: post: summary: Enable chat for user join messages operationId: SetChatJoinMessagesEnabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: User join messages has been enabled content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetChatJoinMessagesEnabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/establishedusermode: post: summary: Enable/disable chat established user mode operationId: SetEnableEstablishedChatUserMode security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Chat established user mode updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetEnableEstablishedChatUserModeOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/forbiddenusernames: post: summary: Set chat usernames that are not allowed operationId: SetForbiddenUsernameList security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: type: string responses: '200': description: Forbidden usernames updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetForbiddenUsernameListOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/suggestedusernames: post: summary: Set the suggested chat usernames that will be assigned automatically operationId: SetSuggestedUsernameList security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: type: string responses: '200': description: Suggested usernames updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetSuggestedUsernameListOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/spamprotectionenabled: post: summary: Set spam protection enabled operationId: SetChatSpamProtectionEnabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Spam protection enabled updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetChatSpamProtectionEnabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/chat/slurfilterenabled: post: summary: Set slur filter enabled operationId: SetChatSlurFilterEnabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Slur filter enabled updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetChatSlurFilterEnabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/video/codec: post: summary: Set video codec operationId: SetVideoCodec security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Video codec updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetVideoCodecOptions responses: '204': $ref: "#/components/responses/204" /admin/config/video/streamlatencylevel: post: summary: Set the number of video segments and duration per segment in a playlist operationId: SetStreamLatencyLevel security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Stream latency updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetStreamLatencyLevelOptions responses: '204': $ref: "#/components/responses/204" /admin/config/video/streamoutputvariants: post: summary: Set an array of video output configurations operationId: SetStreamOutputVariants security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: $ref: '#/components/schemas/StreamOutputVariant' responses: '200': description: Stream Output Variants updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetStreamOutputVariantsOptions responses: '204': $ref: "#/components/responses/204" /admin/config/appearance: post: summary: Set style/color/css values operationId: SetCustomColorVariableValues security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: object additionalProperties: type: string responses: '200': description: Appearance updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetCustomColorVariableValuesOptions responses: '204': $ref: "#/components/responses/204" /admin/config/logo: post: summary: Update logo operationId: SetLogo security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Logo updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetLogoOptions responses: '204': $ref: "#/components/responses/204" /admin/config/tags: post: summary: Update server tags operationId: SetTags security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Tags updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetTagsOptions responses: '204': $ref: "#/components/responses/204" /admin/config/ffmpegpath: post: summary: Update FFMPEG path operationId: SetFfmpegPath security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Path updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFfmpegPathOptions responses: '204': $ref: "#/components/responses/204" /admin/config/webserverport: post: summary: Update server port operationId: SetWebServerPort security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Port updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetWebServerPortOptions responses: '204': $ref: "#/components/responses/204" /admin/config/webserverip: post: summary: Update server IP address operationId: SetWebServerIP security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: IP Address updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetWebServerIPOptions responses: '204': $ref: "#/components/responses/204" /admin/config/rtmpserverport: post: summary: Update RTMP post operationId: SetRTMPServerPort security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: RTMP port updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetRTMPServerPortOptions responses: '204': $ref: "#/components/responses/204" /admin/config/sockethostoverride: post: summary: Update websocket host override operationId: SetSocketHostOverride security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Websocket host override updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetSocketHostOverrideOptions responses: '204': $ref: "#/components/responses/204" /admin/config/videoservingendpoint: post: summary: Update custom video serving endpoint operationId: SetVideoServingEndpoint security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Video Serving Endpoint updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetVideoServingEndpointOptions responses: '204': $ref: "#/components/responses/204" /admin/config/nsfw: post: summary: Update NSFW marking operationId: SetNSFW security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: NSFW status updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetNSFWOptions responses: '204': $ref: "#/components/responses/204" /admin/config/directoryenabled: post: summary: Update directory enabled operationId: SetDirectoryEnabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Directory Enabled updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetDirectoryEnabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/socialhandles: post: summary: Update social handles operationId: SetSocialHandles security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: $ref: "#/components/schemas/SocialHandle" responses: '200': description: Social handles updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetSocialHandlesOptions responses: '204': $ref: "#/components/responses/204" /admin/config/s3: post: summary: Update S3 configuration operationId: SetS3Configuration security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: $ref: "#/components/schemas/S3Info" responses: '200': description: Directory Enabled updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetS3ConfigurationOptions responses: '204': $ref: "#/components/responses/204" /admin/config/serverurl: post: summary: Update server url operationId: SetServerURL security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Server URL updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetServerURLOptions responses: '204': $ref: "#/components/responses/204" /admin/config/externalactions: post: summary: Update external action links operationId: SetExternalActions security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: type: array items: $ref: "#/components/schemas/ExternalAction" responses: '200': description: External Action Links updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetExternalActionsOptions responses: '204': $ref: "#/components/responses/204" /admin/config/customstyles: post: summary: Update custom styles operationId: SetCustomStyles security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Custom styles updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetCustomStylesOptions responses: '204': $ref: "#/components/responses/204" /admin/config/customjavascript: post: summary: Update custom JavaScript operationId: SetCustomJavascript security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Custom JavaScript updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetCustomJavascriptOptions responses: '204': $ref: "#/components/responses/204" /admin/config/hideviewercount: post: summary: Update hide viewer count operationId: SetHideViewerCount security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Hide viewer count updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetHideViewerCountOptions responses: '204': $ref: "#/components/responses/204" /admin/config/disablesearchindexing: post: summary: Update search indexing operationId: SetDisableSearchIndexing security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Search Indexing updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetDisableSearchIndexingOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/enable: post: summary: Enable/disable federation features operationId: SetFederationEnabled security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Federation features enabled/disabled content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationEnabledOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/private: post: summary: Set if federation activities are private operationId: SetFederationActivityPrivate security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Private status set content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationActivityPrivateOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/showengagement: post: summary: Set if fediverse engagement appears in chat operationId: SetFederationShowEngagement security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Federation engagement set content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationShowEngagementOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/username: post: summary: Set local federated username operationId: SetFederationUsername security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Federation username set content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationUsernameOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/livemessage: post: summary: Set federated go live message operationId: SetFederationGoLiveMessage security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Federation username set content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationGoLiveMessageOptions responses: '204': $ref: "#/components/responses/204" /admin/config/federation/blockdomains: post: summary: Set Federation blocked domains operationId: SetFederationBlockDomains security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Federation blocked domains set content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetFederationBlockDomainsOptions responses: '204': $ref: "#/components/responses/204" /admin/config/notifications/discord: post: summary: Configure Discord notifications operationId: SetDiscordNotificationConfiguration security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: $ref: "#/components/schemas/DiscordNotificationConfiguration" responses: '200': description: Discord notification configuration updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetDiscordNotificationConfigurationOptions responses: '204': $ref: "#/components/responses/204" /admin/config/notifications/browser: post: summary: Configure Browser notifications operationId: SetBrowserNotificationConfiguration security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: value: $ref: "#/components/schemas/BrowserNotificationConfiguration" responses: '200': description: Browser notification configuration updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SetBrowserNotificationConfigurationOptions responses: '204': $ref: "#/components/responses/204" /admin/webhooks: get: summary: Get all the webhooks operationId: GetWebhooks security: - BasicAuth: [] responses: '200': description: All webhooks content: application/json: schema: type: array items: $ref: "#/components/schemas/Webhook" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetWebhooksOptions responses: '204': $ref: "#/components/responses/204" /admin/webhooks/delete: post: summary: Delete a single webhook operationId: DeleteWebhook security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: id: type: integer responses: '200': description: Webhook successfully deleted content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: DeleteWebhookOptions responses: '204': $ref: "#/components/responses/204" /admin/webhooks/create: post: summary: Create a single webhook operationId: CreateWebhook security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: url: type: string events: type: array items: $ref: "#/components/schemas/WebhookEventType" responses: '200': description: The new webhook content: application/json: schema: $ref: "#/components/schemas/Webhook" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: CreateWebhookOptions responses: '204': $ref: "#/components/responses/204" /admin/accesstokens: get: summary: Get all access tokens operationId: GetExternalAPIUsers security: - BasicAuth: [] responses: '200': description: List of external API users content: application/json: schema: type: array items: $ref: "#/components/schemas/ExternalAPIUser" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetExternalAPIUsersOptions responses: '204': $ref: "#/components/responses/204" /admin/accesstokens/delete: post: summary: Delete a single external API user operationId: DeleteExternalAPIUser security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: token: type: string responses: '200': description: External API user successfully deleted content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: DeleteExternalAPIUserOptions responses: '204': $ref: "#/components/responses/204" /admin/accesstokens/create: post: summary: Create a single access token operationId: CreateExternalAPIUser security: - BasicAuth: [] requestBody: content: application/json: schema: type: object properties: name: type: string scopes: type: array items: type: string responses: '200': description: The new external API user content: application/json: schema: $ref: "#/components/schemas/ExternalAPIUser" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: CreateExternalAPIUserOptions responses: '204': $ref: "#/components/responses/204" /admin/update/options: get: summary: Return the auto-update features that are supported for this instance operationId: AutoUpdateOptions security: - BasicAuth: [] responses: '200': description: Current auto-update options content: application/json: schema: type: object properties: supportsUpdate: type: boolean canRestart: type: boolean '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: AutoUpdateOptionsOptions responses: '204': $ref: "#/components/responses/204" /admin/update/start: get: summary: Begin the auto-update operationId: AutoUpdateStart security: - BasicAuth: [] responses: '200': description: Console output from update content: text/plain: schema: type: string '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: AutoUpdateStartOptions responses: '204': $ref: "#/components/responses/204" /admin/update/forcequit: get: summary: Force quit the server and restart it operationId: AutoUpdateForceQuit security: - BasicAuth: [] responses: '200': description: Server force restart has been ordered content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: AutoUpdateForceQuitOptions responses: '204': $ref: "#/components/responses/204" /admin/yp/reset: get: summary: Reset YP configuration operationId: ResetYPRegistration security: - BasicAuth: [] responses: '200': description: YP Registration has been reset content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: ResetYPRegistrationOptions responses: '204': $ref: "#/components/responses/204" /admin/metrics/video: get: summary: Get video playback metrics operationId: GetVideoPlaybackMetrics security: - BasicAuth: [] responses: '200': description: Video playback metrics content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/TimestampedValue' qualityVariantChanges: type: array items: $ref: '#/components/schemas/TimestampedValue' highestLatency: type: array items: $ref: '#/components/schemas/TimestampedValue' medianLatency: type: array items: $ref: '#/components/schemas/TimestampedValue' lowestLatency: type: array items: $ref: '#/components/schemas/TimestampedValue' medianSegmentDownloadDuration: type: array items: $ref: '#/components/schemas/TimestampedValue' maximumSegmentDownloadDuration: type: array items: $ref: '#/components/schemas/TimestampedValue' minimumSegmentDownloadDuration: type: array items: $ref: '#/components/schemas/TimestampedValue' minPlayerBitrate: type: array items: $ref: '#/components/schemas/TimestampedValue' medianPlayerBitrate: type: array items: $ref: '#/components/schemas/TimestampedValue' maxPlayerBitrate: type: array items: $ref: '#/components/schemas/TimestampedValue' availableBitrates: type: array items: type: integer segmentLength: type: integer representation: type: integer '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetVideoPlaybackMetricsOptions responses: '204': $ref: "#/components/responses/204" /admin/prometheus: get: summary: Endpoint to interface with Prometheus description: |- This endpoint interfaces with the Prometheus metrics API. Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/) operationId: GetPrometheusAPI post: summary: Endpoint to interface with Prometheus description: |- This endpoint interfaces with the Prometheus metrics API. Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/) operationId: PostPrometheusAPI put: summary: Endpoint to interface with Prometheus description: |- This endpoint interfaces with the Prometheus metrics API. Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/) operationId: PutPrometheusAPI delete: summary: Endpoint to interface with Prometheus description: |- This endpoint interfaces with the Prometheus metrics API. Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/) operationId: DeletePrometheusAPI options: summary: Endpoint to interface with Prometheus description: |- This endpoint interfaces with the Prometheus metrics API. Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/) operationId: OptionsPrometheusAPI /admin/federation/send: post: summary: Send a public message to the Fediverse from the server's user operationId: SendFederatedMessage security: - BasicAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Message sent content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: SendFederatedMessageOptions responses: '204': $ref: "#/components/responses/204" /admin/federation/actions: get: summary: Get a paginated list of federated activities operationId: GetFederatedActions security: - BasicAuth: [] parameters: - $ref: "#/components/parameters/Offset" - $ref: "#/components/parameters/Limit" responses: '200': description: A paginated list of federated activities content: application/json: schema: $ref: "#/components/schemas/PaginatedFederatedActivity" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: GetFederatedActionsOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat/system: post: summary: Send a system message to the chat operationId: SendSystemMessage security: - BearerAuth: [] requestBody: description: The content of the system message content: application/json: schema: $ref: "#/components/schemas/SystemMessage" responses: '200': description: Message sent successfully headers: 'Access-Control-Allow-Origin': $ref: "#/components/headers/Access-Control-Allow-Origin" content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" '500': $ref: "#/components/responses/500" default: $ref: "#/components/responses/Default" options: operationId: SendSystemMessageOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat/system/client/{clientId}: post: summary: Send a system message to a single client operationId: SendSystemMessageToConnectedClient security: - BearerAuth: [] parameters: - in: path name: clientId required: true schema: type: integer description: The ID of the specified client requestBody: content: application/json: schema: $ref: "#/components/schemas/SystemMessage" responses: '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" '500': $ref: "#/components/responses/500" default: $ref: "#/components/responses/Default" options: operationId: SendSystemMessageToConnectedClientOptions parameters: - in: path name: clientId required: true schema: type: integer description: The ID of the specified client responses: '204': $ref: "#/components/responses/204" /integrations/chat/user: post: deprecated: true summary: Send a user message to chat operationId: SendUserMessage security: - BearerAuth: [] responses: '400': $ref: "#/components/responses/400" options: deprecated: true operationId: SendUserMessageOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat/send: post: summary: Send a message to chat as a specific 3rd party bot/integration based on its access token operationId: SendIntegrationChatMessage security: - BearerAuth: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/UserMessage" responses: '200': description: Message sent successfully content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" '500': $ref: "#/components/responses/500" default: $ref: "#/components/responses/Default" options: operationId: SendIntegrationChatMessageOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat/action: post: summary: Send a user action to chat operationId: SendChatAction security: - BearerAuth: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/SystemActionEvent" responses: '200': description: Action sent successfully content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" '500': $ref: "#/components/responses/500" default: $ref: "#/components/responses/Default" options: operationId: SendChatActionOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat/messagevisibility: post: summary: Hide chat message operationId: ExternalUpdateMessageVisibility security: - BearerAuth: [] requestBody: content: application/json: schema: $ref: "#/components/schemas/MessageVisibilityUpdate" responses: '200': description: Messages updated content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: ExternalUpdateMessageVisibilityOptions responses: '204': $ref: "#/components/responses/204" /integrations/streamtitle: post: summary: Stream title operationId: ExternalSetStreamTitle security: - BearerAuth: [] requestBody: $ref: "#/components/requestBodies/AdminConfigValue" responses: '200': description: Stream title has been changed content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: ExternalSetStreamTitleOptions responses: '204': $ref: "#/components/responses/204" /integrations/chat: get: summary: Get chat history operationId: ExternalGetChatMessages security: - BearerAuth: [] responses: '200': description: List of chat messages content: application/json: schema: $ref: "#/components/schemas/ChatMessages" '401': $ref: "#/components/responses/401" '501': $ref: "#/components/responses/501" default: $ref: "#/components/responses/Default" options: operationId: ExternalGetChatMessagesOptions responses: '204': $ref: "#/components/responses/204" /integrations/clients: get: summary: Connected clients operationId: ExternalGetConnectedChatClients security: - BearerAuth: [] responses: '200': description: List of chat clients content: application/json: schema: $ref: "#/components/schemas/ChatClients" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401BasicAuth" default: $ref: "#/components/responses/Default" options: operationId: ExternalGetConnectedChatClientsOptions responses: '204': $ref: "#/components/responses/204" /moderation/chat/user/{userId}: get: summary: Get a user's details operationId: GetUserDetails parameters: - in: path name: userId schema: type: string description: The ID of the user to find required: true - $ref: "#/components/parameters/AccessToken" responses: '200': description: User information content: application/json: schema: $ref: "#/components/schemas/ModerationUserDetails" '401': $ref: "#/components/responses/401" '404': $ref: "#/components/responses/404" default: $ref: "#/components/responses/Default" /auth/indieauth: post: summary: Begins auth flow operationId: StartIndieAuthFlow parameters: - $ref: "#/components/parameters/AccessToken" requestBody: content: application/json: schema: type: object properties: authHost: type: string responses: '200': description: Authentication redirect content: application/json: schema: type: object properties: redirect: type: string format: url '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" default: $ref: "#/components/responses/Default" /auth/indieauth/callback: get: summary: Handle the redirect from an IndieAuth server to continue the auth flow operationId: HandleIndieAuthRedirect parameters: - $ref: "#/components/parameters/IndieAuthState" - $ref: "#/components/parameters/IndieAuthCode" responses: '307': description: Redirected to home page '400': $ref: "#/components/responses/400" /auth/provider/indieauth: get: summary: Handles the IndieAuth auth endpoint operationId: HandleIndieAuthEndpointGet security: - BasicAuth: [] parameters: - $ref: "#/components/parameters/IndieAuthClientId" - $ref: "#/components/parameters/IndieAuthRedirectURI" - $ref: "#/components/parameters/IndieAuthCodeChallenge" - $ref: "#/components/parameters/IndieAuthState" - $ref: "#/components/parameters/IndieAuthCode" responses: '200': description: IndieAuth flow concluded content: application/json: schema: $ref: "#/components/schemas/IndieAuthResponse" '307': description: Redirected to redirect URI '400': $ref: "#/components/responses/400" '500': $ref: "#/components/responses/500" post: summary: Handles IndieAuth from form submission operationId: HandleIndieAuthEndpointPost requestBody: $ref: "#/components/requestBodies/IndieAuthEndpointForm" responses: '200': description: IndieAuth flow concluded content: application/json: schema: oneOf: - $ref: "#/components/schemas/IndieAuthResponse" - $ref: "#/components/schemas/IndieAuthServerProfileResponse" '400': $ref: "#/components/responses/400" /auth/fediverse: post: summary: Register a Fediverse OTP request operationId: RegisterFediverseOTPRequest parameters: - $ref: "#/components/parameters/AccessToken" requestBody: content: application/json: schema: type: object properties: account: type: string responses: '200': description: OTP sent content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '401': $ref: "#/components/responses/401" /auth/fediverse/verify: post: summary: Verify Fediverse OTP code operationId: VerifyFediverseOTPRequest requestBody: content: application/json: schema: type: object properties: code: type: string responses: '200': description: OTP Verified content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '400': $ref: "#/components/responses/400" '403': $ref: "#/components/responses/403" components: schemas: Error: type: object description: Structure for an error response properties: error: type: string BaseAPIResponse: type: object description: Simple API response properties: message: type: string success: type: boolean Status: type: object description: Response for status properties: serverTime: type: string lastConnectTime: type: string lastDisconnectTime: type: string versionNumber: type: string viewerCount: type: integer online: type: boolean Emojis: type: array items: $ref: "#/components/schemas/Emoji" Emoji: type: object description: Name and url for an emoji properties: name: type: string description: The name of the emoji url: type: string description: URL for the emoji image AnonymousUser: type: object properties: id: type: string accessToken: type: string displayName: type: string User: type: object properties: createdAt: type: string disabledAt: type: string nameChangedAt: type: string id: type: string displayName: type: string previousNames: type: array items: type: string scopes: type: array items: type: string displayColor: type: integer isBot: type: boolean authenticated: type: boolean Users: type: array items: $ref: "#/components/schemas/User" Follower: type: object properties: link: type: string description: The IRI of the remote actor. name: type: string description: The display name of the follower. username: type: string description: The account username of the remote actor. image: type: string description: The avatar image of the follower. timestamp: type: string description: When this follow request was created. disabledAt: type: string description: When this follower was rejected or disabled. Followers: type: array items: $ref: "#/components/schemas/Follower" PaginatedFollowers: type: object properties: total: type: integer results: $ref: "#/components/schemas/Followers" Event: type: object properties: timestamp: type: string type: type: string id: type: string UserEvent: type: object properties: user: $ref: "#/components/schemas/User" hiddenAt: type: string clientId: type: integer MessageEvent: type: object properties: body: type: string ChatMessages: type: array items: anyOf: - $ref: "#/components/schemas/UserMessage" - $ref: "#/components/schemas/SystemMessage" - $ref: "#/components/schemas/ActionMessage" - $ref: "#/components/schemas/FederatedAction" UserMessage: type: object allOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/UserEvent" - $ref: "#/components/schemas/MessageEvent" SystemMessage: type: object allOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/MessageEvent" SystemActionEvent: type: object allOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/MessageEvent" ActionMessage: type: object allOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/MessageEvent" FederatedAction: type: object allOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/MessageEvent" - type: object properties: image: type: string link: type: string title: type: string WebConfig: type: object properties: appearanceVariables: type: object additionalProperties: type: string name: type: string customStyles: type: string streamTitle: type: string offlineMessage: type: string logo: type: string version: type: string socketHostOverride: type: string extraPageContent: type: string summary: type: string tags: type: array items: type: string socialHandles: type: array items: $ref: "#/components/schemas/SocialHandle" externalActions: type: array items: $ref: "#/components/schemas/ExternalAction" notifications: $ref: "#/components/schemas/NotificationConfig" federation: $ref: "#/components/schemas/FederationConfig" maxSocketPayloadSize: type: integer hideViewerCount: type: boolean chatDisabled: type: boolean nsfw: type: boolean authentication: $ref: "#/components/schemas/AuthenticationConfig" SocialHandle: type: object properties: platform: type: string url: type: string icon: type: string ExternalAction: type: object properties: url: type: string html: type: string title: type: string description: type: string icon: type: string color: type: string openExternally: type: boolean NotificationConfig: type: object properties: browser: $ref: "#/components/schemas/BrowserConfig" BrowserConfig: type: object properties: publicKey: type: string enabled: type: boolean FederationConfig: type: object properties: account: type: string followerCount: type: integer enabled: type: boolean AuthenticationConfig: type: object properties: indieAuthEnabled: type: boolean YPDetails: type: object properties: lastConnectTime: type: string name: type: string description: type: string streamTitle: type: string logo: type: string tags: type: array items: type: string social: type: array items: $ref: '#/components/schemas/SocialHandle' viewerCount: type: integer overallMaxViewerCount: type: integer sessionMaxViewerCount: type: integer nsfw: type: boolean online: type: boolean VideoVariant: type: object properties: index: type: integer name: type: string PlaybackMetrics: type: object properties: bandwidth: type: number format: double latency: type: number format: double errors: type: number format: double downloadDuration: type: number format: double qualityVariantChanges: type: number format: double Broadcaster: type: object properties: time: type: string format: date-time remoteAddr: type: string streamDetails: $ref: '#/components/schemas/InboundStreamDetails' InboundStreamDetails: type: object properties: videoCodec: type: string audioCodec: type: string encoder: type: string width: type: integer height: type: integer videoBitrate: type: integer audioBitrate: type: integer framerate: type: number format: float CurrentBroadcast: type: object properties: outputSettings: type: array items: $ref: '#/components/schemas/StreamOutputVariant' latencyLevel: $ref: '#/components/schemas/LatencyLevel' StreamOutputVariant: type: object properties: name: type: string videoPassthrough: type: boolean audioPassthrough: type: boolean videoBitrate: type: integer audioBitrate: type: integer scaledWidth: type: integer scaledHeight: type: integer framerate: type: integer cpuUsageLevel: type: integer LatencyLevel: type: object properties: level: type: integer StreamHealthOverview: type: object properties: message: type: string healthPercentage: type: integer representation: type: integer healthy: type: boolean BrowserNotificationConfiguration: type: object properties: goLiveMessage: type: string enabled: type: boolean DiscordNotificationConfiguration: type: object properties: webhook: type: string goLiveMessage: type: string enabled: type: boolean S3Info: type: object properties: endpoint: type: string accessKey: type: string secret: type: string bucket: type: string region: type: string acl: type: string pathPrefix: type: string enabled: type: boolean forcePathStyle: type: boolean StreamKey: type: object properties: key: type: string comment: type: string TimestampedValue: type: object properties: time: type: string format: date-time value: type: number format: double Viewer: type: object properties: firstSeen: type: string format: date-time geo: $ref: '#/components/schemas/GeoDetails' userAgent: type: string ipAddress: type: string clientID: type: string GeoDetails: type: object properties: countryCode: type: string regionName: type: string timeZone: type: string CollectedMetrics: type: object properties: disk: type: array items: $ref: '#/components/schemas/TimestampedValue' memory: type: array items: $ref: '#/components/schemas/TimestampedValue' cpu: type: array items: $ref: '#/components/schemas/TimestampedValue' ChatClient: type: object properties: connectedAt: type: string format: date-time user: $ref: '#/components/schemas/User' geo: $ref: '#/components/schemas/GeoDetails' userAgent: type: string messageCount: type: integer ChatClients: type: array items: $ref: "#/components/schemas/ChatClient" IPAddress: type: object properties: createdAt: type: string format: date-time ipAddress: type: string notes: type: string Webhook: type: object properties: timestamp: type: string format: date-time lastUsed: type: string format: date-time url: type: string events: type: array items: $ref: '#/components/schemas/WebhookEventType' id: type: integer WebhookEventType: type: string enum: - CHAT - USER_JOINED - USER_PARTED - NAME_CHANGE - VISIBILITY-UPDATE - PING - PONG - STREAM_STARTED - STREAM_STOPPED - STREAM_TITLE_UPDATED - SYSTEM - CHAT_ACTION ExternalAPIUser: type: object properties: createdAt: type: string format: date-time lastUsedAt: type: string format: date-time id: type: string accessToken: type: string displayName: type: string type: type: string scopes: type: array items: type: string displayColor: type: integer isBot: type: boolean MessageVisibilityUpdate: type: object properties: idArray: type: array items: type: string visible: type: boolean ModerationUserDetails: type: object properties: user: $ref: "#/components/schemas/User" connectedClients: type: array items: $ref: "#/components/schemas/ModerationConnectedClient" messages: type: array items: $ref: "#/components/schemas/UserMessage" ModerationConnectedClient: type: object properties: connectedAt: type: string format: date-time userAgent: type: string geo: type: string id: type: integer format: int64 messageCount: type: integer FederatedActivity: type: object properties: timestamp: type: string format: date-time iri: type: string actorIRI: type: string type: type: string PaginatedFederatedActivity: type: object properties: total: type: integer results: $ref: "#/components/schemas/FederatedActivity" AdminStatus: type: object properties: broadcaster: $ref: '#/components/schemas/Broadcaster' currentBroadcast: $ref: '#/components/schemas/CurrentBroadcast' health: $ref: '#/components/schemas/StreamHealthOverview' streamTitle: type: string versionNumber: type: string viewerCount: type: integer overallPeakViewerCount: type: integer sessionPeakViewerCount: type: integer online: type: boolean AdminServerConfig: type: object properties: instanceDetails: $ref: '#/components/schemas/AdminWebConfig' notifications: $ref: '#/components/schemas/AdminNotificationsConfig' yp: $ref: '#/components/schemas/AdminYPInfo' ffmpegPath: type: string adminPassword: type: string socketHostOverride: type: string webServerIP: type: string videoCodec: type: string videoServingEndpoint: type: string s3: $ref: '#/components/schemas/S3Info' federation: $ref: '#/components/schemas/AdminFederationConfig' supportedCodecs: type: array items: type: string externalActions: type: array items: $ref: '#/components/schemas/ExternalAction' forbiddenUsernames: type: array items: type: string suggestedUsernames: type: array items: type: string streamKeys: type: array items: $ref: '#/components/schemas/StreamKey' videoSettings: $ref: '#/components/schemas/AdminVideoSettings' rtmpServerPort: type: integer webServerPort: type: integer chatDisabled: type: boolean chatJoinMessagesEnabled: type: boolean chatEstablishedUserMode: type: boolean disableSearchIndexing: type: boolean streamKeyOverridden: type: boolean hideViewerCount: type: boolean AdminWebConfig: type: object properties: appearanceVariables: type: object additionalProperties: type: string version: type: string welcomeMessage: type: string offlineMessage: type: string logo: type: string name: type: string extraPageContent: type: string streamTitle: type: string customStyles: type: string customJavascript: type: string summary: type: string tags: type: array items: type: string socialHandles: type: array items: $ref: '#/components/schemas/SocialHandle' nsfw: type: boolean AdminNotificationsConfig: type: object properties: browser: $ref: '#/components/schemas/BrowserNotificationConfiguration' discord: $ref: '#/components/schemas/DiscordNotificationConfiguration' AdminYPInfo: type: object properties: instanceUrl: type: string enabled: type: boolean AdminFederationConfig: type: object properties: username: type: string goLiveMessage: type: string blockedDomains: type: array items: type: string enabled: type: boolean isPrivate: type: boolean showEngagement: type: boolean AdminVideoSettings: type: object properties: videoQualityVariants: type: array items: $ref: '#/components/schemas/StreamOutputVariant' latencyLevel: type: integer AdminLog: type: object properties: time: type: string format: date-time message: type: string level: type: string AdminConfigValue: type: object properties: value: oneOf: - type: string - type: boolean - type: array items: type: string - type: number IndieAuthResponse: type: object properties: me: type: string profile: $ref: "#/components/schemas/IndieAuthProfile" error: type: string errorDescription: type: string IndieAuthProfile: type: object properties: name: type: string url: type: string photo: type: string IndieAuthServerProfileResponse: type: object properties: me: type: string profile: $ref: "#/components/schemas/IndieAuthServerProfile" error: type: string errorDescription: type: string IndieAuthServerProfile: type: object properties: name: type: string url: type: string photo: type: string headers: 'Access-Control-Allow-Origin': schema: type: string 'Access-Control-Allow-Credentials': schema: type: string format: boolean 'Access-Control-Allow-Headers': schema: type: string 'WWW-Authenticate': schema: type: string 'X-Content-Type-Options': schema: type: string requestBodies: AdminConfigValue: description: A single value that is used in the request content: application/json: schema: $ref: "#/components/schemas/AdminConfigValue" IndieAuthEndpointForm: description: Form submission from IndieAuth content: application/x-www-form-urlencoded: schema: type: object properties: code: type: string redirect_uri: type: string client_id: type: string codeVerifier: type: string responses: Default: description: Unexpected error content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '204': description: No Content '204Options': description: No Content headers: 'Access-Control-Allow-Origin': $ref: "#/components/headers/Access-Control-Allow-Origin" '400': description: Bad request content: application/json: schema: $ref: "#/components/schemas/BaseAPIResponse" '401': description: Unauthorized content: text/plain: schema: type: string '401BasicAuth': description: Basic auth failure headers: 'Access-Control-Allow-Origin': $ref: "#/components/headers/Access-Control-Allow-Origin" 'Access-Control-Allow-Credentials': $ref: "#/components/headers/Access-Control-Allow-Credentials" 'Access-Control-Allow-Headers': $ref: "#/components/headers/Access-Control-Allow-Headers" 'WWW-Authenticate': $ref: "#/components/headers/WWW-Authenticate" 'X-Content-Type-Options': $ref: "#/components/headers/X-Content-Type-Options" content: text/plain: schema: type: string '403': description: Forbidden '404': description: Not found '500': description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/Error" '501': description: Not Implemented content: application/json: schema: $ref: "#/components/schemas/Error" parameters: Offset: in: query name: offset schema: type: integer description: The number of items to skip before starting to collect the result set Limit: in: query name: limit schema: type: integer description: The numbers of items to return AccessToken: in: query name: accessToken schema: type: string required: true IndieAuthClientId: in: query name: client_id schema: type: string required: true IndieAuthRedirectURI: in: query name: redirect_uri schema: type: string required: true IndieAuthCodeChallenge: in: query name: code_challenge schema: type: string required: true IndieAuthState: in: query name: state schema: type: string required: true IndieAuthCode: in: query name: code schema: type: string required: true IndieAuthMe: in: query name: me schema: type: string required: true securitySchemes: BasicAuth: type: http scheme: basic BearerAuth: type: http scheme: bearer