owncast/spec/openapi.yaml
Brenden Ehlers 2513b15b40
Spec-based API (#3653)
* chore(deps): update dependency sass to v1.74.1

* Bundle embedded web app

* chore(deps): update dependency typescript to v5.4.4

* Bundle embedded web app

* Commit screenshots

* fix(deps): update module github.com/yuin/goldmark to v1.7.1

* chore(deps): lock file maintenance (#3662)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency @types/node to v20.12.5

* Bundle embedded web app

* fix(deps): update module github.com/shirou/gopsutil/v3 to v3.24.3

* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.17

* fix(deps): update module golang.org/x/net to v0.24.0

* fix(deps): update module golang.org/x/mod to v0.17.0

* add get admin chat clients

* comment out old code

* add get admin logs

* add get admin warnings

* add get admin chat

* add post admin chat messageVisibility

* add post admin chat users enabled

* add post admin chat users ipban create

* add post admin chat users ipban remove

* add get admin chat users ipbans

* chore(deps): update dependency sass-loader to v14 (#3674)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update typescript-eslint monorepo to v7 (#3680)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency less-loader to v12 (#3673)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency chromatic to v11 (#3669)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency knip to v5 (#3672)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update nick-fields/retry action to v3 (#3678)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/markdown-it to v14 (#3668)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update chromaui/action action to v11 (#3666)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* Bump version number

* Bundle embedded web app

* Bundle embedded web app

* Bundle embedded web app

* fix(deps): update dependency react-virtuoso to v4.7.8

* Commit screenshots

* Bundle embedded web app

* Optionally disable chat rate limiter and add optional chat slur/language filter (#3681)

* feat(chat): basic profanity filter. For #3139

* feat(chat): add setting for disabling chat spam protection. Closes #3523

* feat(chat): wire up the new chat slur filter to admin and chat. Closes #3139

* Bundle embedded web app

* chore(deps): update peter-evans/create-or-update-comment digest to 48bb05b

* fix(deps): update dependency @codemirror/language-data to v6.5.0

* Bundle embedded web app

* chore(deps): update dependency css-loader to v7 (#3670)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* add get admin chat users disabled

* add get admin chat users setModerator

* add get admin chat users moderators

* add get admin followers

* chore(deps): update tj-actions/changed-files action to v44 (#3679)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Fix for copying stream key without revealing it only copies asterisks (#3663)

* asterisk copy fix for #3460

* rename text to keys for consistency + linting fix

* make onCopy spawn an antd message directly, remove redundant copyText function

---------

Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>

* Commit updated Storybook stories

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency css-loader to v7.1.0

* Bundle embedded web app

* chore(deps): update typescript-eslint monorepo to v7.6.0

* Bundle embedded web app

* chore(deps): update dependency @types/react to v18.2.75 (#3686)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* stream offline status embed updated (#3684)

* Commit screenshots

* add get admin followers pending

* add get admin followers blocked

* add post admin followers approve

* add 400 error to admin requests

* add post admin emoji upload

* add post admin emoji delete

* add post admin config adminpass

* add post admin config streamkeys

* add post admin config pagecontent

* add post admin config streamtitle

* add post admin config streamtitle

* add post admin config serversummary

* add post admin config offlinemessage

* add post admin config welcomemessage

* add post admin config chat disable

* add post admin config chat joinmessageenabled

* add post admin config chat establishedusermode

* add post admin config chat forbiddenusernames

* add post admin config chat suggestedusernames

* add post admin config video codec

* add post admin config appearance

* Allow react/no-danger

* Commit screenshots

* Change tag to self-closing since the linter complains otherwise (#3690)

Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>

* Bundle embedded web app

* chore(deps): update dependency css-loader to v7.1.1 (#3691)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* chore(deps): update dependency @types/node to v20.12.7 (#3688)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency npm to v10.5.2

* Bundle embedded web app

* chore(deps): update dependency knip to v5.9.4

* Bundle embedded web app

* chore(deps): update dependency typescript to v5.4.5

* Bundle embedded web app

* prevent css-loader v7 renaming default to _default, needed for storybook (#3692)

Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>

* Bundle embedded web app

* chore(deps): update dependency cypress to v13.7.3

* Bundle embedded web app

* Fix custom runtimeCaching rules, default runtimeCaching rule order (#3685)

Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>

* Bundle embedded web app

* Fixes for aria-live bugs (#3694)

* make the aria-live text adhere to the last message's username

* Wrap lastMessage in an Interweave to handle pre-encoded characters properly

---------

Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>

* Bundle embedded web app

* chore(deps): update dependency @types/react to v18.2.77

* Bundle embedded web app

* chore(deps): update dependency @storybook/addon-styling-webpack to v1 (#3667)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* chore(deps): update dependency storybook-addon-fetch-mock to v2 (#3675)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* chore(deps): update dependency sass to v1.75.0

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency sass-loader to v14.2.0

* Bundle embedded web app

* fix(deps): update codemirror

* add get admin webhooks

* add create and delete webhooks

* add get, delete, create access token endpoints

* add update endpoints

* Bundle embedded web app

* fix(deps): update nextjs monorepo to v14.2.0

* Bundle embedded web app

* fix(deps): update nextjs monorepo to v14.2.1

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency @types/markdown-it to v14.0.1

* Bundle embedded web app

* chore(deps): update dependency @types/react to v18.2.78

* Bundle embedded web app

* add send message to connected client

* add deprecated send user message

* add send message to 3rd party

* add send user action

* add update external message visibility

* add update external stream title

* add external get chat messages and fixed error with chat

* add external get clients

* remove options request

* add update logo

* add update tags

* add update ffmpeg path

* add update server port

* add update server ip

* add update rtmp port

* add update websocket host override

* add update custom video serving endpoint

* add update nsfw

* add update directory enabled

* Commit screenshots

* add update social handles

* add update stream latency level

* add update stream output variants

* add update s3 config

* add update server url

* add reset yp registration

* add update external action links

* add update custom styles

* add update custom javascript

* add get video metrics

* add update hide viewer count

* add update search indexing

* Change fediAuth message to be more succinct (#3696)

* Change fediAuth message to be more succint

* Update controllers/auth/fediverse/fediverse.go

for -> from

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>

* Mute the 'stream ended' clip's audio (#3630)

* Mute the 'stream ended' clip's audio

The 'stream ended' clip plays at the at the end of every stream broadcast using owncast.
It currently contains audio that peaks at -7.1db. (according to ffmpeg's volumedetect audio filter)
This can result in a bad experience for viewers if the stream that they were just watching had a much lower average volume, and they had turned up their speakers or headphones to compensate. In extreme cases this could theoretically cause harm to viewers and/or their equipment.
As an admin running owncast, there is no way to remove this audio *except* for patching the file. Even if you do patch the file, you need to notify your viewers to clear their browser caches if they have ever seen the clip, because offline.ts has a cache-control max-age header specifying 365 days. The caching of the previous version of this clip is out of scope of this PR.

This issue is discussed in more detail in #1965.

Unlike my previous attempt in #3332, which removed the audio track, this PR *mutes* the audio.

Specifically, I used this ffmpeg command:
```
ffmpeg -i offline.ts -filter:a "volume=0.0" output.ts
```

There are no other modifications to the clip.

* Commit updated API documentation

* feat(video): make compatible muted offline clip. Rename clip as a v2 so it is not cached

* Fix conflict

* force add new offline file

---------

Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>

* Commit screenshots

* chore(tests): retry cypress tests on failure

* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.23

* chore(deps): update dependency @types/video.js to v7.3.58 (#3705)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* fix(deps): update dependency @codemirror/language-data to v6.5.1 (#3706)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* add update message visibility

* add update user status

* add get moderation user details

* create file for /admin/config endpoints

* chore(deps): update dependency style-loader to v4 (#3703)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Bundle embedded web app

* chore(deps): update typescript-eslint monorepo to v7.7.0

* Bundle embedded web app

* add non-api endpoints to new router

* add set federation enabled

* add set federation private

* chore(tests): attempt to clean up test flakiness (#3710)

* chore(deps): update dependency @types/react to v18.2.79

* add show federation engagement

* add set federation username

* add set federation go live message

* add set federation blocked domains

* add set discord notification configuration

* add set browser notification configuration

* add prometheus endpoint

* add send federation message

* add get federation activities

* add indie auth documentation

* add changes to indie auth server

* Bundle embedded web app

* add fediverse auth

* add spam protection and slur filter

* Commit screenshots

* fix bug with hls endpoint

* Add effect to set media session metadata (#3713)

* Bundle embedded web app

* chore(deps): update dependency sass-loader to v14.2.1

* Bundle embedded web app

* Commit screenshots

* fix(deps): update nextjs monorepo to v14.2.2

* Bundle embedded web app

* Commit screenshots

* fix(deps): update dependency react-virtuoso to v4.7.9

* Bundle embedded web app

* chore(deps): update dependency cypress to v13.8.0

* Bundle embedded web app

* Commit screenshots

* chore(deps): lock file maintenance

* Bundle embedded web app

* add options requests and reformat operationIds

* chore(go): update to go 1.22 (#3708)

* chore(go): update to go 1.22

* fix: install go before running codeql to fix autobild

* chore(test): explicitly set base crosscompile image

* fix(test): do not point at image with incorrect version of Go

* chore: troubleshoot js autoformating in workflow

* Commit screenshots

* add wildcard to index path

* give /admin/ routes precedence

* fix(deps): update dependency @fontsource/poppins to v5.0.14

* Bundle embedded web app

* Bump formidable and artillery in /test/load (#3718)

Removes [formidable](https://github.com/node-formidable/formidable). It's no longer used after updating ancestor dependency [artillery](https://github.com/artilleryio/artillery). These dependencies need to be updated together.

Removes `formidable`

Updates `artillery` from 2.0.2 to 2.0.10
- [Release notes](https://github.com/artilleryio/artillery/releases)
- [Commits](https://github.com/artilleryio/artillery/compare/artillery-2.0.2...artillery-2.0.10)

---
updated-dependencies:
- dependency-name: formidable
  dependency-type: indirect
- dependency-name: artillery
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Commit screenshots

* chore(deps): update peter-evans/create-or-update-comment digest to da12db3

* fix(deps): update dependency react-virtuoso to v4.7.10

* add verbose logging and update handler precedence

* Bundle embedded web app

* Commit screenshots

* chore(deps): update golangci/golangci-lint-action action to v5 (#3722)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update typescript-eslint monorepo to v7.7.1

* Bundle embedded web app

* Commit screenshots

* chore(deps): update dependency knip to v5.10.0

* Bundle embedded web app

* add federation routers

* updated comments to pass linter

* fix bug with mount

* fix linting errors

* add router logs to log files

* update emoji dir

* fixed linting error

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: mahmed2000 <49453542+mahmed2000@users.noreply.github.com>
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
Co-authored-by: Jeet Chawda <68128367+Jeetch8@users.noreply.github.com>
Co-authored-by: Vivian Lim  <1565930+vivlim@users.noreply.github.com>
Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 19:22:27 -07:00

4114 lines
114 KiB
YAML

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