owncast/openapi.yaml

4413 lines
126 KiB
YAML

openapi: 3.1.0
info:
version: 0.2.0
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
tags: ['Internal']
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
tags: ['Internal', 'Chat']
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
tags: ['Internal', 'Chat']
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
tags: ['Internal', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204Options'
/chat/messagevisibility:
post:
summary: Update chat message visibility
operationId: UpdateMessageVisibility
tags: ['Internal', 'Chat']
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
tags: ['Internal', 'Chat']
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
tags: ['Internal']
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
tags: ['Internal']
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
tags: ['Internal']
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
tags: ['Internal', 'Video']
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
tags: ['Internal', 'Video']
responses:
'200':
description: Added as an active viewer
/remotefollow:
post:
summary: Request remote follow
operationId: RemoteFollow
tags: ['Internal', 'Social']
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
tags: ['Internal', 'Social']
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
tags: ['Internal']
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
tags: ['Internal']
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
tags: ['Internal', 'Admin']
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
tags: ['Objects']
responses:
'204':
$ref: '#/components/responses/204'
/admin/disconnect:
get:
summary: Disconnect inbound stream
operationId: DisconnectInboundConnection
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/serverconfig:
get:
summary: Get the current server config
operationId: GetServerConfig
tags: ['Internal', 'Admin']
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
tags: ['Objects']
responses:
'204':
$ref: '#/components/responses/204'
/admin/viewersOverTime:
get:
summary: Get viewer count over time
operationId: GetViewersOverTime
tags: ['Internal', 'Admin']
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
tags: ['Objects']
responses:
'204':
$ref: '#/components/responses/204'
/admin/viewers:
get:
summary: Get active viewers
operationId: GetActiveViewers
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/hardwarestats:
get:
summary: Get the current hardware stats
operationId: GetHardwareStats
tags: ['Internal', 'Admin']
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
tags: ['Objects']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/clients:
get:
summary: Get a detailed list of currently connected chat clients
operationId: GetConnectedChatClients
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/messages:
get:
summary: Get all chat messages for the admin, unfiltered
operationId: GetChatMessagesAdmin
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/messagevisibility:
post:
summary: Update visibility of chat messages
operationId: UpdateMessageVisibilityAdmin
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/setenabled:
post:
summary: Enable or disable a user
operationId: UpdateUserEnabledAdmin
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/disabled:
get:
summary: Get a list of disabled users
operationId: GetDisabledUsers
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/ipbans/create:
post:
summary: Ban an IP address
operationId: BanIPAddress
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/ipbans/remove:
post:
summary: Remove an IP ban
operationId: UnbanIPAddress
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/ipbans:
get:
summary: Get all banned IP addresses
operationId: GetIPAddressBans
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/setmoderator:
post:
summary: Set moderator status for a user
operationId: UpdateUserModerator
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/chat/users/moderators:
get:
summary: Get a list of moderator users
operationId: GetModerators
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/logs:
get:
summary: Get all logs
operationId: GetLogs
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/logs/warnings:
get:
summary: Get warning/error logs
operationId: GetWarnings
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/followers:
get:
summary: Get followers
operationId: GetFollowersAdmin
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/followers/pending:
get:
summary: Get a list of pending follow requests
operationId: GetPendingFollowRequests
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/followers/blocked:
get:
summary: Get a list of rejected or blocked follows
operationId: GetBlockedAndRejectedFollowers
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/followers/approve:
post:
summary: Set the following state of a follower or follow request
operationId: ApproveFollower
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/emoji/upload:
post:
summary: Upload custom emoji
operationId: UploadCustomEmoji
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/emoji/delete:
post:
summary: Delete custom emoji
operationId: DeleteCustomEmoji
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/adminpass:
post:
summary: Change the current admin password
operationId: SetAdminPassword
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/streamkeys:
post:
summary: Set an array of valid stream keys
operationId: SetStreamKeys
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/pagecontent:
post:
summary: Change the extra page content in memory
operationId: SetExtraPageContent
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/streamtitle:
post:
summary: Change the stream title
operationId: SetStreamTitle
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/name:
post:
summary: Change the server name
operationId: SetServerName
tags: ['Objects', 'Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/serversummary:
post:
summary: Change the server summary
operationId: SetServerSummary
tags: ['Objects', 'Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/offlinemessage:
post:
summary: Change the offline message
operationId: SetCustomOfflineMessage
tags: ['Objects', 'Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/welcomemessage:
post:
summary: Change the welcome message
operationId: SetServerWelcomeMessage
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/disable:
post:
summary: Disable chat
operationId: SetChatDisabled
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/joinmessagesenabled:
post:
summary: Enable chat for user join messages
operationId: SetChatJoinMessagesEnabled
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/establishedusermode:
post:
summary: Enable/disable chat established user mode
operationId: SetEnableEstablishedChatUserMode
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/forbiddenusernames:
post:
summary: Set chat usernames that are not allowed
operationId: SetForbiddenUsernameList
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/suggestedusernames:
post:
summary: Set the suggested chat usernames that will be assigned automatically
operationId: SetSuggestedUsernameList
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/spamprotectionenabled:
post:
summary: Set spam protection enabled
operationId: SetChatSpamProtectionEnabled
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/chat/slurfilterenabled:
post:
summary: Set slur filter enabled
operationId: SetChatSlurFilterEnabled
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/video/codec:
post:
summary: Set video codec
operationId: SetVideoCodec
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
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
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/video/streamoutputvariants:
post:
summary: Set an array of video output configurations
operationId: SetStreamOutputVariants
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/appearance:
post:
summary: Set style/color/css values
operationId: SetCustomColorVariableValues
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/logo:
post:
summary: Update logo
operationId: SetLogo
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/tags:
post:
summary: Update server tags
operationId: SetTags
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/ffmpegpath:
post:
summary: Update FFMPEG path
operationId: SetFfmpegPath
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/webserverport:
post:
summary: Update server port
operationId: SetWebServerPort
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/webserverip:
post:
summary: Update server IP address
operationId: SetWebServerIP
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/rtmpserverport:
post:
summary: Update RTMP post
operationId: SetRTMPServerPort
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/sockethostoverride:
post:
summary: Update websocket host override
operationId: SetSocketHostOverride
tags: ['Internal', 'Admin', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/videoservingendpoint:
post:
summary: Update custom video serving endpoint
operationId: SetVideoServingEndpoint
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/nsfw:
post:
summary: Update NSFW marking
operationId: SetNSFW
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/directoryenabled:
post:
summary: Update directory enabled
operationId: SetDirectoryEnabled
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/socialhandles:
post:
summary: Update social handles
operationId: SetSocialHandles
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/s3:
post:
summary: Update S3 configuration
operationId: SetS3Configuration
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/serverurl:
post:
summary: Update server url
operationId: SetServerURL
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/externalactions:
post:
summary: Update external action links
operationId: SetExternalActions
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/customstyles:
post:
summary: Update custom styles
operationId: SetCustomStyles
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/customjavascript:
post:
summary: Update custom JavaScript
operationId: SetCustomJavascript
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/hideviewercount:
post:
summary: Update hide viewer count
operationId: SetHideViewerCount
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/disablesearchindexing:
post:
summary: Update search indexing
operationId: SetDisableSearchIndexing
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/enable:
post:
summary: Enable/disable federation features
operationId: SetFederationEnabled
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/private:
post:
summary: Set if federation activities are private
operationId: SetFederationActivityPrivate
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/showengagement:
post:
summary: Set if fediverse engagement appears in chat
operationId: SetFederationShowEngagement
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/username:
post:
summary: Set local federated username
operationId: SetFederationUsername
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/livemessage:
post:
summary: Set federated go live message
operationId: SetFederationGoLiveMessage
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/federation/blockdomains:
post:
summary: Set Federation blocked domains
operationId: SetFederationBlockDomains
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/notifications/discord:
post:
summary: Configure Discord notifications
operationId: SetDiscordNotificationConfiguration
tags: ['Internal', 'Admin', 'Notifications']
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
tags: ['Objects', 'Internal', 'Admin', 'Notifications']
responses:
'204':
$ref: '#/components/responses/204'
/admin/config/notifications/browser:
post:
summary: Configure Browser notifications
operationId: SetBrowserNotificationConfiguration
tags: ['Internal', 'Admin', 'Notifications']
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
tags: ['Objects', 'Internal', 'Admin', 'Notifications']
responses:
'204':
$ref: '#/components/responses/204'
/admin/webhooks:
get:
summary: Get all the webhooks
operationId: GetWebhooks
tags: ['Internal', 'Admin', 'Notifications']
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
tags: ['Objects', 'Internal', 'Admin', 'Notifications']
responses:
'204':
$ref: '#/components/responses/204'
/admin/webhooks/delete:
post:
summary: Delete a single webhook
operationId: DeleteWebhook
tags: ['Internal', 'Admin', 'Notifications']
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
tags: ['Objects', 'Internal', 'Admin', 'Notifications']
responses:
'204':
$ref: '#/components/responses/204'
/admin/webhooks/create:
post:
summary: Create a single webhook
operationId: CreateWebhook
tags: ['Internal', 'Admin', 'Notifications']
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
tags: ['Objects', 'Internal', 'Admin', 'Notifications']
responses:
'204':
$ref: '#/components/responses/204'
/admin/accesstokens:
get:
summary: Get all access tokens
operationId: GetExternalAPIUsers
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/accesstokens/delete:
post:
summary: Delete a single external API user
operationId: DeleteExternalAPIUser
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/accesstokens/create:
post:
summary: Create a single access token
operationId: CreateExternalAPIUser
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/update/options:
get:
summary: Return the auto-update features that are supported for this instance
operationId: AutoUpdateOptions
tags: ['Internal', 'Admin']
x-internal: true
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/update/start:
get:
summary: Begin the auto-update
operationId: AutoUpdateStart
tags: ['Internal', 'Admin']
x-internal: true
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
tags: ['Objects', 'Internal', 'Admin']
x-internal: true
responses:
'204':
$ref: '#/components/responses/204'
/admin/update/forcequit:
get:
summary: Force quit the server and restart it
operationId: AutoUpdateForceQuit
x-internal: true
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
x-internal: true
responses:
'204':
$ref: '#/components/responses/204'
/admin/yp/reset:
get:
summary: Reset YP configuration
operationId: ResetYPRegistration
tags: ['Internal', 'Admin']
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
tags: ['Objects', 'Internal', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/admin/metrics/video:
get:
summary: Get video playback metrics
operationId: GetVideoPlaybackMetrics
tags: ['Internal', 'Admin', 'Video']
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
tags: ['Objects', 'Internal', 'Admin', 'Video']
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
tags: ['Internal', 'Admin']
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
tags: ['Internal', 'Admin']
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
tags: ['Internal', 'Admin']
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
tags: ['Internal', 'Admin']
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
tags: ['Internal', 'Admin']
/admin/federation/send:
post:
summary: Send a public message to the Fediverse from the server's user
operationId: SendFederatedMessage
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/admin/federation/actions:
get:
summary: Get a paginated list of federated activities
operationId: GetFederatedActions
tags: ['Internal', 'Admin', 'Social']
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
tags: ['Objects', 'Internal', 'Admin', 'Social']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/chat/system:
post:
summary: Send a system message to the chat
operationId: SendSystemMessage
tags: ['External', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/chat/system/client/{clientId}:
post:
summary: Send a system message to a single client
operationId: SendSystemMessageToConnectedClient
tags: ['External', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
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
tags: ['External', 'Chat']
security:
- BearerAuth: []
responses:
'400':
$ref: '#/components/responses/400'
options:
deprecated: true
operationId: SendUserMessageOptions
tags: ['Objects', 'Internal', 'Admin', 'Chat']
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
tags: ['External', 'Chat']
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
tags: ['Objects', 'External', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/chat/action:
post:
summary: Send a user action to chat
operationId: SendChatAction
tags: ['External', 'Chat']
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
tags: ['Objects', 'Internal', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/chat/messagevisibility:
post:
summary: Hide chat message
operationId: ExternalUpdateMessageVisibility
tags: ['External', 'Chat']
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
tags: ['Objects', 'External', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/streamtitle:
post:
summary: Stream title
operationId: ExternalSetStreamTitle
tags: ['External']
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
tags: ['Objects', 'External', 'Admin']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/chat:
get:
summary: Get chat history
operationId: ExternalGetChatMessages
tags: ['External', 'Chat']
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
tags: ['Objects', 'External', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/integrations/clients:
get:
summary: Connected clients
operationId: ExternalGetConnectedChatClients
tags: ['External', 'Chat']
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
tags: ['Objects', 'External', 'Admin', 'Chat']
responses:
'204':
$ref: '#/components/responses/204'
/moderation/chat/user/{userId}:
get:
summary: Get a user's details
operationId: GetUserDetails
tags: ['External', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Internal', 'Auth', 'Chat']
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
tags: ['Objects']
properties:
error:
type: string
BaseAPIResponse:
type: object
description: Simple API response
tags: ['Objects']
properties:
message:
type: string
success:
type: boolean
Status:
type: object
description: Response for status
tags: ['Objects']
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
tags: ['Objects']
properties:
name:
type: string
description: The name of the emoji
url:
type: string
description: URL for the emoji image
AnonymousUser:
type: object
tags: ['Objects']
properties:
id:
type: string
accessToken:
type: string
displayName:
type: string
User:
type: object
tags: ['Objects']
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
tags: ['Objects']
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
tags: ['Objects']
items:
$ref: '#/components/schemas/Follower'
PaginatedFollowers:
type: object
tags: ['Objects']
properties:
total:
type: integer
results:
$ref: '#/components/schemas/Followers'
Event:
type: object
tags: ['Objects']
properties:
timestamp:
type: string
type:
type: string
id:
type: string
UserEvent:
type: object
tags: ['Objects']
properties:
user:
$ref: '#/components/schemas/User'
hiddenAt:
type: string
clientId:
type: integer
MessageEvent:
type: object
tags: ['Objects']
properties:
body:
type: string
ChatMessages:
type: array
tags: ['Objects']
items:
anyOf:
- $ref: '#/components/schemas/UserMessage'
- $ref: '#/components/schemas/SystemMessage'
- $ref: '#/components/schemas/ActionMessage'
- $ref: '#/components/schemas/FederatedAction'
UserMessage:
type: object
tags: ['Objects']
allOf:
- $ref: '#/components/schemas/Event'
- $ref: '#/components/schemas/UserEvent'
- $ref: '#/components/schemas/MessageEvent'
SystemMessage:
type: object
tags: ['Objects']
allOf:
- $ref: '#/components/schemas/Event'
- $ref: '#/components/schemas/MessageEvent'
SystemActionEvent:
type: object
tags: ['Objects']
allOf:
- $ref: '#/components/schemas/Event'
- $ref: '#/components/schemas/MessageEvent'
ActionMessage:
type: object
tags: ['Objects']
allOf:
- $ref: '#/components/schemas/Event'
- $ref: '#/components/schemas/MessageEvent'
FederatedAction:
type: object
tags: ['Objects']
allOf:
- $ref: '#/components/schemas/Event'
- $ref: '#/components/schemas/MessageEvent'
- type: object
properties:
image:
type: string
link:
type: string
title:
type: string
WebConfig:
type: object
tags: ['Objects']
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
tags: ['Objects']
properties:
platform:
type: string
url:
type: string
icon:
type: string
ExternalAction:
type: object
tags: ['Objects']
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
tags: ['Objects']
properties:
browser:
$ref: '#/components/schemas/BrowserConfig'
BrowserConfig:
type: object
tags: ['Objects']
properties:
publicKey:
type: string
enabled:
type: boolean
FederationConfig:
type: object
tags: ['Objects']
properties:
account:
type: string
followerCount:
type: integer
enabled:
type: boolean
AuthenticationConfig:
type: object
tags: ['Objects']
properties:
indieAuthEnabled:
type: boolean
YPDetails:
type: object
tags: ['Objects']
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
tags: ['Objects', 'Video']
properties:
index:
type: integer
name:
type: string
PlaybackMetrics:
type: object
tags: ['Objects', 'Video']
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
tags: ['Objects', 'Video']
properties:
time:
type: string
format: date-time
remoteAddr:
type: string
streamDetails:
$ref: '#/components/schemas/InboundStreamDetails'
InboundStreamDetails:
type: object
tags: ['Objects', 'Video']
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
tags: ['Objects', 'Video']
properties:
outputSettings:
type: array
items:
$ref: '#/components/schemas/StreamOutputVariant'
latencyLevel:
$ref: '#/components/schemas/LatencyLevel'
StreamOutputVariant:
type: object
tags: ['Objects', 'Video']
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
tags: ['Objects', 'Video']
properties:
message:
type: string
healthPercentage:
type: integer
representation:
type: integer
healthy:
type: boolean
BrowserNotificationConfiguration:
type: object
tags: ['Objects', 'Notifications']
properties:
goLiveMessage:
type: string
enabled:
type: boolean
DiscordNotificationConfiguration:
type: object
tags: ['Objects', 'Notifications']
properties:
webhook:
type: string
goLiveMessage:
type: string
enabled:
type: boolean
S3Info:
type: object
tags: ['Objects']
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
tags: ['Objects']
properties:
key:
type: string
comment:
type: string
TimestampedValue:
type: object
tags: ['Objects']
properties:
time:
type: string
format: date-time
value:
type: number
format: double
Viewer:
type: object
tags: ['Objects', 'Video']
properties:
firstSeen:
type: string
format: date-time
geo:
$ref: '#/components/schemas/GeoDetails'
userAgent:
type: string
ipAddress:
type: string
clientID:
type: string
GeoDetails:
type: object
tags: ['Objects']
properties:
countryCode:
type: string
regionName:
type: string
timeZone:
type: string
CollectedMetrics:
tags: ['Objects']
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
tags: ['Objects', 'Chat']
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
tags: ['Objects', 'Chat']
items:
$ref: '#/components/schemas/ChatClient'
IPAddress:
type: object
tags: ['Objects', 'Chat']
properties:
createdAt:
type: string
format: date-time
ipAddress:
type: string
notes:
type: string
Webhook:
type: object
tags: ['Objects', 'Notifications']
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
tags: ['Objects', 'Notifications']
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
tags: ['Objects', 'Chat']
properties:
idArray:
type: array
items:
type: string
visible:
type: boolean
ModerationUserDetails:
type: object
tags: ['Objects', 'Chat']
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
tags: ['Objects', 'Chat']
properties:
connectedAt:
type: string
format: date-time
userAgent:
type: string
geo:
type: string
id:
type: integer
format: int64
messageCount:
type: integer
FederatedActivity:
type: object
tags: ['Objects', 'Social']
properties:
timestamp:
type: string
format: date-time
iri:
type: string
actorIRI:
type: string
type:
type: string
PaginatedFederatedActivity:
type: object
tags: ['Objects', 'Social']
properties:
total:
type: integer
results:
$ref: '#/components/schemas/FederatedActivity'
AdminStatus:
type: object
tags: ['Objects']
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
tags: ['Objects']
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
tags: ['Objects']
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
tags: ['Objects', 'Notifications']
properties:
browser:
$ref: '#/components/schemas/BrowserNotificationConfiguration'
discord:
$ref: '#/components/schemas/DiscordNotificationConfiguration'
AdminYPInfo:
type: object
tags: ['Objects']
properties:
instanceUrl:
type: string
enabled:
type: boolean
AdminFederationConfig:
tags: ['Objects', 'Social']
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
tags: ['Objects', 'Video']
properties:
videoQualityVariants:
type: array
items:
$ref: '#/components/schemas/StreamOutputVariant'
latencyLevel:
type: integer
AdminLog:
type: object
tags: ['Objects']
properties:
time:
type: string
format: date-time
message:
type: string
level:
type: string
AdminConfigValue:
type: object
tags: ['Objects']
properties:
value:
oneOf:
- type: string
- type: boolean
- type: array
items:
type: string
- type: number
IndieAuthResponse:
type: object
tags: ['Objects', 'Auth']
properties:
me:
type: string
profile:
$ref: '#/components/schemas/IndieAuthProfile'
error:
type: string
errorDescription:
type: string
IndieAuthProfile:
type: object
tags: ['Objects', 'Auth']
properties:
name:
type: string
url:
type: string
photo:
type: string
IndieAuthServerProfileResponse:
type: object
tags: ['Objects', 'Auth']
properties:
me:
type: string
profile:
$ref: '#/components/schemas/IndieAuthServerProfile'
error:
type: string
errorDescription:
type: string
IndieAuthServerProfile:
type: object
tags: ['Objects', 'Auth']
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
tags:
- name: External
description: |-
These APIs are specifically exposed for building third party applications or tooling. They use auth tokens to authenticate and are designed to be stable and reliable.
- name: Internal
description: |-
These APIs are used internally for the operation of the application. They should not be used by third party clients or tooling, as they may require sharing your admin password, and additionally may change at any time.
- name: Auth
description: Authentication API
- name: Chat
description: APIs related to operating the chat system.
- name: Objects
description: Object definitions
- name: Video
description: Video API
- name: Notifications
description: Notification API
- name: Social
description: Social API