diff --git a/spec/gen-api.sh b/build/gen-api.sh
similarity index 70%
rename from spec/gen-api.sh
rename to build/gen-api.sh
index 5d7057ef2..aa216285d 100755
--- a/spec/gen-api.sh
+++ b/build/gen-api.sh
@@ -4,27 +4,24 @@
# setup
package="generated"
-folderPath="handler/generated"
-specPath="spec/openapi.yaml"
+folderPath="webserver/handlers/generated"
+specPath="openapi.yaml"
# validate scripts are installed
-if ! command -v swagger-cli &> /dev/null
-then
+if ! command -v swagger-cli &>/dev/null; then
echo "Please install \`swagger-cli\` before running this script"
exit 1
fi
-if ! command -v oapi-codegen &> /dev/null
-then
+if ! command -v oapi-codegen &>/dev/null; then
echo "Please install \`oapi-codegen\` before running this script"
- echo "Hint: run \`go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@latest\` to install"
+ echo "Hint: run \`go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest\` to install"
exit 1
fi
# validate schema
swagger-cli validate $specPath
-if [ $? -ne 0 ];
-then
+if [ $? -ne 0 ]; then
echo "Open API specification is not valid"
exit 1
fi
diff --git a/controllers/admin/serverConfig.go b/controllers/admin/serverConfig.go
index 43e2720df..880905888 100644
--- a/controllers/admin/serverConfig.go
+++ b/controllers/admin/serverConfig.go
@@ -8,8 +8,8 @@ import (
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/core/transcoder"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/admin/status.go b/controllers/admin/status.go
index 373a79aaa..55769288a 100644
--- a/controllers/admin/status.go
+++ b/controllers/admin/status.go
@@ -8,7 +8,7 @@ import (
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/metrics"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/auth/indieauth/server.go b/controllers/auth/indieauth/server.go
index 68078e8de..15780543c 100644
--- a/controllers/auth/indieauth/server.go
+++ b/controllers/auth/indieauth/server.go
@@ -6,7 +6,7 @@ import (
ia "github.com/owncast/owncast/auth/indieauth"
"github.com/owncast/owncast/controllers"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
// HandleAuthEndpoint will handle the IndieAuth auth endpoint.
diff --git a/controllers/chat.go b/controllers/chat.go
index 80662413e..a4c983404 100644
--- a/controllers/chat.go
+++ b/controllers/chat.go
@@ -9,8 +9,8 @@ import (
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
"github.com/owncast/owncast/persistence/userrepository"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/config.go b/controllers/config.go
index a8ea9f599..cd2fac3ce 100644
--- a/controllers/config.go
+++ b/controllers/config.go
@@ -10,8 +10,8 @@ import (
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/controllers.go b/controllers/controllers.go
index e5fb368fb..09f0311a1 100644
--- a/controllers/controllers.go
+++ b/controllers/controllers.go
@@ -5,7 +5,7 @@ import (
"net/http"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/emoji.go b/controllers/emoji.go
index 745ae66c5..e12c68078 100644
--- a/controllers/emoji.go
+++ b/controllers/emoji.go
@@ -8,7 +8,7 @@ import (
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/data"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
// GetCustomEmojiList returns a list of emoji via the API.
diff --git a/controllers/hls.go b/controllers/hls.go
index 8b9651677..e3df46fa9 100644
--- a/controllers/hls.go
+++ b/controllers/hls.go
@@ -11,8 +11,8 @@ import (
"github.com/owncast/owncast/core"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
// HandleHLSRequest will manage all requests to HLS content.
diff --git a/controllers/index.go b/controllers/index.go
index 23c2e581d..e20cd6f6d 100644
--- a/controllers/index.go
+++ b/controllers/index.go
@@ -15,9 +15,9 @@ import (
"github.com/owncast/owncast/core/cache"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/static"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
log "github.com/sirupsen/logrus"
)
diff --git a/controllers/status.go b/controllers/status.go
index 3914167f3..f074dafc3 100644
--- a/controllers/status.go
+++ b/controllers/status.go
@@ -7,8 +7,8 @@ import (
"github.com/owncast/owncast/core"
"github.com/owncast/owncast/core/data"
- "github.com/owncast/owncast/router/middleware"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
// GetStatus gets the status of the server.
diff --git a/main.go b/main.go
index 726121556..e3ac8180b 100644
--- a/main.go
+++ b/main.go
@@ -12,8 +12,8 @@ import (
"github.com/owncast/owncast/core"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/metrics"
- "github.com/owncast/owncast/router"
"github.com/owncast/owncast/utils"
+ "github.com/owncast/owncast/webserver/router"
)
var (
diff --git a/openapi.yaml b/openapi.yaml
index 0e32448ac..2293ee037 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -1,172 +1,3770 @@
-openapi: 3.0.1
+openapi: 3.1.0
+
info:
- title: Owncast
- description: Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
Take note that only APIs listed specifically for external use, 3rd parties or for integration purposes are encouraged for external use. Internal APIs may change at any time and are used by the server and frontend itself.
- version: '0.1.3'
+ version: 0.2.0
+ title: Owncast APIs
+ description: |-
+ Internal
+ The APIs required to make the Owncast web interface and internal functionality work. These APIs will never reach stability and will always change as Owncast features and functionality change. This means these endpoints are not good options to build your own tooling and features on top of. You can, however, of course can if that risk is acceptable to you.
+
+ Admin
+ The APIs used to configure the Owncast server, as well as power the web admin interface. These APIs are protected by the admin password, using HTTP Basic authentication. They should not be used by external tools or integrations as it would require you to give your admin password to a third party.
contact:
name: Gabe Kangas
email: gabek@real-ity.com
- url: http://owncast.online
- x-logo:
- url: >-
- data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEvmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyOCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjEyOCIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOkltYWdlV2lkdGg9IjEyOCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTI4IgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA2LTE4VDAwOjQ2OjEyLTA3OjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA2LTE4VDAwOjQ2OjEyLTA3OjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5IERlc2lnbmVyIChNYXIgMzEgMjAyMCkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjAtMDYtMThUMDA6NDY6MTItMDc6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/Pn6jclUAAAGCaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRzytEURTHPzODESPCwsLipWE15EdNbJSZNNSkaYwy2Mw880PNj9d7I8lW2SpKbPxa8BewVdZKESlZWVgTG/ScZ6Zmkjm3c8/nfu89p3vPBXsko2aNmn7I5gp6OOBTZqNzivOZOlpx0oESUw1tLBQKUtU+7rBZ8abXqlX93L/WuJgwVLDVC4+qml4QnhAOrhQ0i7eF29V0bFH4VNijywWFby09XuQXi1NF/rJYj4T9YG8RVlIVHK9gNa1nheXluLOZZbV0H+slrkRuZlpil3gnBmEC+FCYZBw/XgYYkdlLL4P0yYoq+f2/+VPkJVeVWWMVnSVSpCngEXVZqickJkVPyMiwavX/b1+N5NBgsbrLB7VPpvnWDc4t+N40zc9D0/w+AscjXOTK+fkDGH4XfbOsufeheR3OLstafAfON6DjQYvpsV/JIW5PJuH1BJqi0HYNDfPFnpX2Ob6HyJp81RXs7kGPnG9e+AEyv2fOZnRq6wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAHBpJREFUeJztfXl8VEW69vO852QhYYcAIRsGRETZ3BURRXGcn5/bOKPOOPPduRevv9EZh3tdRp1x+bjM6FXGXcdt3HGDO7ij1w0XRnHBBTAoypJASEjYlyzdp+r9/ugEmqQ7fbrTnaQDz+9XhD6n6q23u556q+qtDdiP/diPfRfsbAU6Gx/fpz36ZeJiUM8EMAzEAADZADIBGADbAdRCdbW1mFdXL88eMZ07O1PnZGKfJcA395sCOJgmgisB9vKbThXbVfF3Nfr4oZc4S1OpY0dgnyPAkpuV2sc7WRx5kURuO0RZazDLqN444VK3MWkKdjD2KQJ8ebe6jmsegMNfAshKgkhVq8uMxRmH/dYtT4K8Dsc+Q4DF93m9BXyIDs5PunBFuXp69oTL3K+SLjvF2CcI8Pm9XhbJJ0mcl8JsKuxOjD/iD86WFOaRdLidrUBHQIFZUJynmtJsitEDLwKYnNJckoxubwE+uSt4CYX3ApAOyM5aq78/ZnrGfR2QV1LQrQnw/h1eYabgGxK9OzDbOmtQeNx/umnRFHTbJuDD24MZQl1glb2RWtPfEjmATgPw1w7NNUF0hFnsFFiLi6xyuFWgwwN4w/uzgh1pdRJGt7QA784yBaC5z2qnNXG9VDgBwPudlL9vdEsCKM1lBmQHm/69dVA7FfsJ0PF4878bR1rldHZi4QOAgqcDuK5ztYiNbtcHUPLfVTXbqqKTw9hXbmzo2dm/Ryx0Kwsw50Z1rQYv7mw9miDM5kgAX3S2Im2hWxGgR3bwcgPt6GFfVKjaodhPgI6DVf1FZ+sQDlUO6GwdYqHbEGDOH+0gq8ExXaX2A4CiQz2QCaHbEAAZjXdZZRfr1GqXd7V3CwI886eGbHVxqulsRVpCaTtbhVjoFgQIKAZkqfbpSuYfAAit62wdYqFbEMDJ0EuMwulsPVpB0eVXD6c9Ae6+fHumAX6TqOfPGsAYQA1grUIt0HLhCAlQQkGEEAdwHPiYTNcNiWnVcUh7AuTkOMUWOqAt868aKmhrgWCjorEOCDQogoFQwScEAhlZQFY2kdkDyOxBiADihAgDANagKkHpHYa0J4ASw02kwlegfqdi145QQTcToBXaMW4wAaAhoMB2gNCQhXCAzCwgpxdMrpO1JnHpHYO0J4BRPaX5/8FGoKFO0VAfquGt1gCmelCmADwg4AE7d7Lsz89mBFKcY7uR9gQIGJwaaFDs2KoIdvT2jDYJZRd1lBrtQVoT4PLzt/WrWqdjdtd0n+ZcFQECj0J1IYB6BU6h8NcAeiRLN1V8lCxZqURaE0AcHGKgjMO0e7CYoca5f9ZzuZvCns+74hfbb3Cov4TwLwBy2qubiv2uvTI6AmlNABWMtv4Lvw5WfvPXp3s+Fenlbc/03gjgzssv3L5IHLyDdpBAQ/+sSjR9R6KL+c7jgzp6iKXCT/BUb/zr7MiFH47bn+69yBhztqWqX9kRwne3ze7b5X0AQJpbAAMe6Mv8q75sa/vc7luu4D1C14EsSkgxq7MSStcJSGsLYEVHKENzbtGCJRqt8vp73vA/MXP3U/2Clrg3luwoIaiC11L5vZOJtCXA+ecZscQBhoq2goU+cM+TfZbEK7+xUR6OJTtK2GVpN6fiO6cCaUuAXjnbhlvCtaFaHj2oPpKI/Iee7b3FEttjym8ZgAfufax/l3cANSNt+wB0dKSNMQOkiiWeeN8kmoel7kJ8q3oaxGTdkmh+nYG0JQDIEbGGgAr5/aOP5CW8KCOOIWYzvnnw8ZytiebXGUhbAnjUIrZRQATqAPN1e/Iw0Ky45g+Us9uTX2cgYQLMuP760szMzCtF5DQSRQTqAXwL1QVq7Wu7Nm7654y77krZKi0Fh7ZVOBZYr3C3Jyr/Zz+rcFXg+/QwADX0vIcSza+zkBAB/uuGG452MtyPFBCrFlSAQC+SRxI4UkT+0HPgwA9uufHGaXXAyhkzZiR9sZY66N+WUGv10ace6p2w+c/s13OsJTL8xrdq5zz1aF6XXwLWEnGPAq675pphCsw3nhFjPBjPgzEmFDwPxoQ+q9oT6MrXOYInZv7pT0lvagw1q42hmEqCvf9mkHpWPMM/haZd7QcSGQaKzDTW9je2qdCN3UOA8M/WwBqTA8WvMjOcT278w+Xjkqm4JbLbGI7VPPHwwJpEZZ9/8QZaB+f6H/rp/8x+MC8tD42MiwBXTp9eZK29wDYVtm1Z+DYCGaxBY2PjYW+9+uqno4fknZYsxS01sw1f/Pr2yFbX6WGphf59//TtZu5qiM8CuO7vjTFuyPQbeGaPyW/ZBBjPwBgPwUAAr7/4IrZt3ZopIi+MyR/0n8lQ3AJOtBppoJXtkq1abInefmq/Ib60MJ8m4zt1BuJqm9XaiQYKi9AUPImmv02fm/4vCH1Qa/HJwg+xdesWCAES2SRvHjt0cG6Q5qbllRsTH6OLRiWvEu0yx9bFzT539XgW+PW8vw3qcntS/CIuC2CMKQiZfgNrm9t7G/psDKzd0/4bz2BFWRkqVq9uKSZLhDOyIf8+bmhewmv5TdttcsIEOOeyjUNAnO2r9gPLgsYm7GnsCojLAhhrB9GGvjzB3RZAEfoPAQhDn6vXV+KrxYujDdWFIve7BvUAnkxEcQVstDpqIAmvxjGik33WikBjUH70+v15aVv7gTgIMG3atJ7GmOw9pj+MAGFNgJIINDTgy88/g6qiDW8d4fDhIwoH13++bsPceBU3olGbDxOUNfHKA4DJ01dnKO0M48f9p/ri6/fnJTzS6Crw3QRYa3vtHvM3dfBCf1t2/jx89ski1O3aFVMmgUyKPHRkweC4h4hKBKLM/wfn/21AQtOxucw5Q8mDfKwx2OxRktKZ7Wz4tgCe57kOuafD12QFQiYfAAEBUbm2AjXV1RCfPnQCfek6LwMoiUdxQwSjvNoWj5xwWOF0Xy5LxazX78xr11Czq8A3Aay1QWNtq8K3CBU8CTQGGrH064ROTC8+piT/HevZH31aucHzpQ+j7rytT0SBqVds+IlCj49JAMXXVu09ieTRFeG7CQgGgzt3m/qmJsDzQr1/Yzx4wSC++uILeF6o/Kzq6xb2/1iDCap6iaq+D0XUwiV4kuM4F/nVxxCbI4/LNZplaBMKvcESEqPnr0Hg0rfuzI/dvqUJfBNgzpw5Oz1j6vf29O0JmzZtRG1NqE9kVZesrNl0+g8bNr22orb2q2+rax8oq6o90RhzLlSj1VCK8P6JJflj/OhjoWsjeeWU8W8TP/HKDRepYFwsj5+Bvf3d2wenxYYPv4jXD1DVsuA9YxAMevhm6bLd8aj4I9B6v27Zho0vq9XRsPpxtDwIzj5+yJDsmLoQK6J45mKmDcfkq6p6QnRW7DG/VnvGuzEe2emA+AjgeT/scfuGTL81HirXrUVd3R6raKFRnSNLq2vXKOxJanUuIpCEwrHMdq6MpYvSLI9cWOp7CdfxV1ZnqvBxJfq2TQDd4VFP/eCOom5j+psRFwE8z3ve2z3xE5oMCgYNKsrL945ndFMUEQCAr9fXNn5ZueE8QF+O1Okied3xxYPaXJMfCJqvDNVGaAJ6HHVlua/j2dTV05V6bgzTrwZ618Jbh6blbF8sxGcBNPCM8czG8MmgtRXlaGjYu1kX8Xz5+NUGfwHV+S2fk8hynYy/t5V20R3FuyxRYUJmf68grjsqVt7HXVs9ToknIqVvEV60NjjDz/dJR8RFgFdeeaPBGPN8+BqADdXVreIRbn8/8hZXbqpTi4ugWtZaCKecOKzg+LbSW+pSpaJVEBzdVrojr1k3wNI+qtReEdPvCd9bay/7aFaJr6FpOiLuBSEWuMcYEzDGYNPGja1qPwA4Igf5lfd5ZXWVVVwAoOVaepfCZycXF0RdlmVgv4pUaxU6JVqasddWZUI4xxKHxaj5DR5w/qJbCto1tdzVETcB5s+f/50x3i3GeChfsyZiHAUuj0fmrgZvmar9OVp0CkkOFdojoqUzlE8jttvCiEPJCddXu5mOma+Ck2K0+8ajPb2xkWl3D2C8SGhnkDXm3vr6hppgMLLPheRppXn9f+RXXlltrRJ4RVtfsCDiOk+cUloY8ZZPemaRJTwrQItQNO66ymnhccdct7YY8F615MlWwAhpQoEIWuAKbTQLltyW38VOHkw+fHrsW6Mgb+ARxpiPhXClaX5AGHIPCwhCyxT2uJU1W3z75o8v7tMTTs8Kh+wXLk+tTnxn1bqIDpjxN1TOB/DjCK8aLexPAZQTPAHAzYx9SbSB4o6vZhZc5VfndEfCewMDgeBiVXtrtPckRwuc/4lH5sKKbTth7QMtnwtwabQ0Ru1DUcx4FsiXQX6hoZ2+vWKeIQDcErTe1fHonO5I2AI0I79/32cdkQtaWgAJTRgpYF8EcMGKDZt8bZg8tiS/Z4bIUiGHNcsjEFTPlry9prLVuXsHX792sDhYHzrGsR1Q/ZNCby2bUdxte/yR0O7dwVWbt/5SVV+N8ppCOUfI90YN6e9ruvfj8qqdqnhsLyFghrgSsU+xfGbRBqO4ox2neTQY6mXfzCi6aV8rfCA528NN0LPnQDXqoQikHCt0lx88ZGDU4dle8Y3OaS2DJ0WLbwUzLbEz7q3cxE7jmaO+vbHoXn9ftfshKecD1Gzb5sHi59bqfYjg3wcAEj0cceaPHTro6dFD8wrbkkdZ/x20xdJu1ajDwRU3Fm0zVn9rqcaKwk8w0LcscPiKmcO6pYvXL9rdBwhHSZ8+ggznekfkKofIbV40wua+QfNoAWgEcStUnwsE9Nuy2tq9XMcjRoAFpuA7R+TA3aMKImDMjty3V22JaqZLZ5bPIvkfaHuhS7kC9+4Ibr+zdsah+5zJb4mkEqAZJQP6jMlwMhYIOSAiAfYeLi4B7UyHzosE1AktI73IdeT+veIR8BqR/05FRWvfcxiGzSz/FQWPAHTDvp8FsNNac0PAy7ynakZBl7/IoaOQEgIAQOmg/vkO5GpHOL0tAuwmCFBPcqsAmUL2F4KtCBAMDnlnTVXM49eKbyofBIuRJAcpdCeAalpZVX59UZc/v7+jkTICNGPk4AFTHcp1IpwopNMGAfY8j2QpiJ1rv6/oWwak9Tr8roaUnxCyYsOmtwC8dfCQgWeIyL0gC4D4l22p6oKuXvhHH3W8S6Hr0HFE6IAUUsR4nus4zKLQccTxHMmoB6lCGhFaKDwReq/978sJrWdsD1JuAcJxSF7/XCfDPYrk1Y7wVAHpxwIQqKfi2DdXrm3XkS/JxoQJxw12XZ0kkKNBjnFEBlPYk5QeBHIokiVkBikZoWaQQOivJcUj2UiygeROEdkBYLOAnynxgQYC77369qspb7I6lADhGJ8/aJQIz3ZEThBynBBDIxDAI7CQ1l759urKxZ2lKwCMHTs+B3CPEPJIER4rIkeRLCIJEQEQKmAKQUp4YYMUtCBA6JkQ0uTAFAnFCcUTgAwIuBjCBSQXBAONH708f17STyDpNAK0xPghgwf3yJIjHCAfBBxwvbG7PlxYsW1HZ+l08MFje4lghFAuofDfRBwnVDiAMKzAUkOApngERUBgE4DrhM7c5+c91eaSu3jQZQjQlVBaOmJAVlaPW0XkVJJDhHQpElY4HU8AIUN5CGuVfEGN9/s5855p9xUZ+wkQhgMPPHiSiFwqIj8l6Yo0/ejNtbBrEKBZ3kpVXP3s3Mf/0Z7vvJ8AAIYPP6hABLeIOBcyvMC6NgEgJBR6k1r9r2fmPpGQNUjbs4KThQNKR5wnwmWkXNjZuiQCUq5xXOe5hNMnU5l0wrBhw3pQ3Fki8tvw2pxuFqApnoJ8UI3+7qnnH4nLV5K2R8W2ByUlJQ7o3E3S92bUJmxT1c0kdwLYpaF9jlus1QYhqERPgn0B9FDV3iQHAOiP1Fc0ErxYROYBeCuuhClSqEujuPiA/3Ac53YK2Vzj2rAAtQQeouhskYxKVQQFMBaO+frrT1pNKh04/AQOHmgFjuuKiGsMhrkZcpUjzoVCuimyAM3PGoJA/tNPP+T7wOp9kgDDDhheQbAoZK5bEwBgNcDbSLxLmmVlZWXtPv9/8uST81y4P6YjfxJyZIoIAFX91yeeefhxv3p1OAGOL+4juRm5fRXSG2CGUusCwcaa98trO8QPXlhYMsnNcD8gmtvrvQjQAPABx9GrysrKUrJWYMqU0/o4lEeF8pNUEIDkJ4/NfvAYv/p0GAGOKSzM7JWJ34GcTmlxGZOiTlWf21RXP/2Lqo0p3YFbXDzsJnGcayMRQBXXf//98j+nMn8AyMs7h+PHBN5wXDk12QQQEXjBYO6Tzz3iy22c8mHgpNL8/JOHF72Umy0bVeQ2JYutgnsFIFfJaf1yc2pOKi2cnkp9NNSBiwhr9fFU5t2M2toXlGJ/BiAll0uI6/bzHTcVCjTjhNLC0xy6Kyx5pgV6GYTmc6MFC+SAcucJpYVnpEonqnkF0dctHpKqfFvizbdf366qn6RCNkHfV+CmjAATSwqPBmW+BXsaBcKCGsUOz9gHg9abbLVxUDBgS4JqrzIKYwAoeUOq9KqoqFgKxQ+R3onI7SNHHpyZqrxbg3EN2fzD1zG3AFJIAHV4s1GwReHXG7XTrLFFH65e95uFq9Z/8P7KDbULK9ZVWM/eZtR+bkJHgE44sniwbzMWL6zaiKd7kxhNyj9HjBgRz0VRCYOavMuqw6GIeoReK6SEAEcXDB5qgckWivBgrPnNP1ete2zhmnWt9gt+VL5ejaK+Ka5DyJBU6AYAFeWrH1ToK5HekTjCzcheMWrUIWcedNBBCZ9l7AcKTEqNXOt7IUlKPIHWdcZTW5BL1XqN9ploaQ4rLMi04Jjm1jmg6uu+n5OGD5UMOjlUiLXB+rdWV/thv6r1/gXM/BpEq6NoCA6myEuk849DDhlzmaqpLisrS+pO4VOm/DibgsOSKRMAVDVQ18gtfuOnxAJYsK6F6YcBoW4gavtqiJFG0TcUX6sDa6tjnsQ5tbRweCbdN0gpg8hycTK/mDqi+HfwMbwtLy/fYq2eAEXUH4vkuaRT5jqZz4wePdrXqSd+QcrZAHydZRQf9M25cx/yPR+QEgI02MBio1pnEVqQ3xTESvb5keKPKy7oR+E8CzgWgFG8Wxalp96MU4YXn0xHPgI5FUARgKEgDxXynqkjij+ZOrzoyFh6rlnzwxprvUNUta2rZfsCvCDD7VE5btzhj40be8TUUaMOb1dH8ZQppx0t5ONIgR9GVZ+NJ37KHEFjigtfIHl2+DMFak3QO6ZsfdWq5meji/L7OHQeIXnu7niqZyytWBdtwylOHl7QW8RdAWBwGyoEDLypYuzCt1dVxdoIwgNHjnpTKFMYWskbazZwPYDbSHlJgE0Wsn3x4o9ibjaZMnlqH4pzloj8XSgZKfAEehYsefLpB32fY5wyAowuHjqZlPcivNqsaq8NqPdmJt0TAP4/kgc0v1TVD9TTk5evXx/RFXt8cTGzMvE+ST8dqACs/fnbK9fOixWxdOTILEedSx1Hbo9jOjhAcgvADUK+Q2KhUpYaU1/+2WefBUaPHi0Dew4cqllZx2Q4PI+USSQHSTPJkkwAqM564tm//8HH77IbKXUFH1RUcDfJy/zGV8Cq2sNXrF0f9Wyek4YVFjHD+QGAXzPcoKo/XfBDha8r3UeOPPhYx3FvI3lse9YDEDAUkdCEY8rXAwBkgzW2ePbzj9b6/F1C+cYTOV4EPXudtfqtVcBHMNbaS9sqfACAw2uhyIQCYaHOGnMmgma4qs6DQsPeZQN4YtKwolI/Oq9YsfzjYNBMUtU/qyKuHzMcJB103FyLVcXMeAsfSDEBVlVVbQ9anRi0ujGGG1iN2msUaPPyxRNKhuQq5eIWnUtYY65+b9W6V95ds26VWj3fWntH+HsFBziuvORX7x9+KDPLly+93lp7IBK80qYjodCFDd62mxNJm1JHBwBs3bGjvmdu7pMgBqniUAVlr8qrusJanba6cv1jm7e3vQWgeEC/g0m2PC+ounbV2p/XNo0a1mzZbov69fqIkB+BGBoWb1BJ395Dh/TNnl+5dZevMf3GjTWNNTXVL+UNyn+ZpENwDEkHTbuZWqwhaP2MPp8hgryI8SI++1SVZz43Z3ZCm0Y6dD1AQX7+UUL+K8hSBTZD9TXP2rnV1dW+VrROHF50jkPZq0Oniv/9cGV5qwspJxUXDGGmuwrYy90atNYcvnDVuoQOhRgz5vBhjsOZInKyUPI7e00gycXGBs98bu7shG8v6dA1gZVVVZ8CSPiSRSEPa1l1VfX9SHE/rKisnlha9DcRuSLscQYobx+en1+0uKoq7lU+S5cuXgPgV2PHTMh03Yx/EZE7SebEKycpUPtqQ9D52T9emN3QHjFptSzcWoxq1XkkonYa6fFaq1gbHl/BQZk93Avao8eSpV8Gvvjy04cDwfp+UExS1f8GUNEemX6hinJr7E+M1XP+8cJj7Sp8IM3WBB5XWryI5F4HQRuYCYtWrotKguNKi/9C8o/hzxSo9Iwd/ematb7mG/xg7NixTm5278kUOUtEDid5IEXykjQMDArwlSqfrwvqfa+99ky7C74ZabUs3AK9WzLWeLbNH6MRO/6Sob0uJxl+k0iBkL8GcHeydFuyZIkB8G5TAABMOu6kA63wQhGcTjpjEOp0s0VoCUXTAEZVN1H1vu317l1vvjk7JZtk08oCHF1a/D3JEeHPVM1hn6xa92WMdLNJ7r3zR1G2aFV5h60AmjJxSg91M/o5In0p7EUwh8IsQnoISQo9gg10WC+QLQBqGs3O2jfeeCOl5xWnlQVQoNWCUVUUAWiTAKp4GcTeBCBGH3lA0VmfrV7r2z/QHrz7z3frEbrSrkvdN5henUBgSysnEGR8zHTWe88C2jItyG5x+2d7kFYEUMVKVSA8gJwYK93n5etr1OqylmkVHI80awaTjfQiALBs7ykAQIFD/aS10M8ipO1z2LDCX6dI3bRAdyDA0HHDin4ROy3XR0gLpVwxqmDQPmsF0ooAVrGmdR8AoMhd4w8o6tlmWiA7UlolizPdrNzUat51kV4EgFehQE2EmjzQgnMPKS7sGyUpAZwY0QIAORb+L5vsbkj5bGAyUbN1hxnUp48FGOHuAI6gyKl5fXovzuvdZ0vt9u0eAJSUlLCwX++zSIl2kZWo8r2abdtWpFD1Lou0a/tGFxcNcBxZC0TdVBGAosaqLiBZDegxJI8Eot8prNb+dVn52n3mnqBwpJUjCADE2C2GfJfC06NEyQRRCPJXIRca215eDADk2GTqmE5Iqz4AACyrrLRBY/+vAr5vI4sFBfKSJSvdkHYEAIDv163bbI3eE6lXn1BQ/3vpuhvSkgAAUAfMsKovtvLuJRBAfNvZ36ezkLYEqKio8Dwb/DdrdVGU4Z3v4FlE3Ci6LyBtCQAAKyuqtjQAJ1qri9tBgEYC73WC+l0CaU0AAKioqGisa2g41lh7mQV2xtv+G7XzPGs3d472nY+0cgRFw45du+yWbds/7ZPbcy6FOUrmA4h1TzCgusCDnLtm7doufRNJKpF2jiA/GNG/v2tzcs5Tx7maZClC/o5msltVbYDqTasrKqLefbyvoFsSIBwlBQWOuK6rqkIAULVBY4Lr1q/ff3XcfuzH/wfoPFiLyqlaYQAAAABJRU5ErkJggg==
-servers: []
-tags:
- - name: Admin
- description: Admin operations requiring authentication.
- - name: Chat
- description: Endpoints related to the chat interface.
- - name: Integrations
- description: APIs built to allow 3rd parties to interact with an Owncast server.
- - name: Moderation
- description: Chat-related actions that can take place by a moderator.
+ url: 'http://owncast.online'
+ license:
+ url: 'https://github.com/owncast/owncast/blob/develop/LICENSE'
+ name: MIT
+servers:
+ - url: 'http://localhost:8080/api'
+ description: Localhost port 8080
+
+paths:
+ /status:
+ get:
+ summary: Get the status of the server
+ operationId: GetStatus
+ tags: ['Internal']
+ responses:
+ '200':
+ description: Successful response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /emoji:
+ get:
+ summary: Get list of custom emojis supported in the chat
+ operationId: GetCustomEmojiList
+ tags: ['Internal', 'Chat']
+ responses:
+ '200':
+ description: List of valid emojis
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Emojis'
+ '500':
+ $ref: '#/components/responses/500'
+ /chat:
+ get:
+ summary: Gets a list of chat messages
+ operationId: GetChatMessages
+ tags: ['Internal', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ responses:
+ '200':
+ description: List of chat messages
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChatMessages'
+ '401':
+ $ref: '#/components/responses/401'
+ '501':
+ $ref: '#/components/responses/501'
+ /chat/register:
+ post:
+ summary: Registers an anonymous chat user
+ operationId: RegisterAnonymousChatUser
+ tags: ['Internal', 'Chat']
+ parameters:
+ - in: header
+ name: X-Forwarded-User
+ schema:
+ type: string
+ required: false
+ requestBody:
+ description: The display name of the new user
+ required: false
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ displayName:
+ type: string
+ responses:
+ '200':
+ description: Anonymous user information
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AnonymousUser'
+ '400':
+ $ref: '#/components/responses/400'
+ options:
+ operationId: RegisterAnonymousChatUserOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204Options'
+ /chat/messagevisibility:
+ post:
+ summary: Update chat message visibility
+ operationId: UpdateMessageVisibility
+ tags: ['Internal', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MessageVisibilityUpdate'
+ responses:
+ '200':
+ description: Message visibility updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ default:
+ $ref: '#/components/responses/Default'
+ /chat/users/setenabled:
+ post:
+ summary: Enable/disable a user
+ operationId: UpdateUserEnabled
+ tags: ['Internal', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ userId:
+ type: string
+ enabled:
+ type: boolean
+ responses:
+ '200':
+ description: User status has been updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ default:
+ $ref: '#/components/responses/Default'
+ /config:
+ get:
+ summary: Get the web config
+ operationId: GetWebConfig
+ tags: ['Internal']
+ responses:
+ '200':
+ description: The current web config
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WebConfig'
+ '500':
+ $ref: '#/components/responses/500'
+ /yp:
+ get:
+ summary: Get the YP protocol data
+ operationId: GetYPResponse
+ tags: ['Internal']
+ responses:
+ '200':
+ description: The current YP protocol configuration
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/YPDetails'
+ '404':
+ $ref: '#/components/responses/404'
+ /socialplatforms:
+ get:
+ summary: Get all social platforms
+ operationId: GetAllSocialPlatforms
+ tags: ['Internal']
+ responses:
+ '200':
+ description: The list of social platforms
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/SocialHandle'
+ '500':
+ $ref: '#/components/responses/500'
+ /video/variants:
+ get:
+ summary: Get a list of video variants available
+ operationId: GetVideoStreamOutputVariants
+ tags: ['Internal', 'Video']
+ responses:
+ '200':
+ description: List of available video variants
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/VideoVariant'
+ /ping:
+ get:
+ summary: Tell the backend you're an active viewer
+ operationId: Ping
+ tags: ['Internal', 'Video']
+ responses:
+ '200':
+ description: Added as an active viewer
+ /remotefollow:
+ post:
+ summary: Request remote follow
+ operationId: RemoteFollow
+ tags: ['Internal', 'Social']
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ account:
+ type: string
+ responses:
+ '200':
+ description: Contains redirect URL remote follow follow
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ redirectUrl:
+ type: string
+ '400':
+ $ref: '#/components/responses/400'
+ /followers:
+ get:
+ summary: Gets the list of followers
+ operationId: GetFollowers
+ tags: ['Internal', 'Social']
+ parameters:
+ - $ref: '#/components/parameters/Offset'
+ - $ref: '#/components/parameters/Limit'
+ responses:
+ '200':
+ description: Paginated follower count
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PaginatedFollowers'
+ '400':
+ $ref: '#/components/responses/400'
+ /metrics/playback:
+ post:
+ summary: Save video playback metrics for future video health recording
+ operationId: ReportPlaybackMetrics
+ tags: ['Internal']
+ requestBody:
+ description: Video metrics to record
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PlaybackMetrics'
+ responses:
+ '200':
+ description: Metrics successfully recorded
+ '400':
+ $ref: '#/components/responses/400'
+ /notifications/register:
+ post:
+ summary: Register for notifications
+ operationId: RegisterForLiveNotifications
+ tags: ['Internal']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ requestBody:
+ description: Information for notification
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ channel:
+ type: string
+ description: Name of notification channel
+ destination:
+ type: string
+ description: Target of the notification in the channel
+ responses:
+ '200':
+ description: Successfully added notification channel
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ /admin/status:
+ get:
+ summary: Get current inboard broadcaster
+ operationId: StatusAdmin
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Gives the status of the system
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AdminStatus'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: StatusAdminOptions
+ tags: ['Objects']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/disconnect:
+ get:
+ summary: Disconnect inbound stream
+ operationId: DisconnectInboundConnection
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Contains information about disconnection status
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: DisconnectInboundConnectionOptions
+ tags: ['Objects', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/serverconfig:
+ get:
+ summary: Get the current server config
+ operationId: GetServerConfig
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Current server config
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AdminServerConfig'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetServerConfigOptions
+ tags: ['Objects']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/viewersOverTime:
+ get:
+ summary: Get viewer count over time
+ operationId: GetViewersOverTime
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ parameters:
+ - in: query
+ name: windowStart
+ description: Start date in unix time
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Viewer count over time
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetViewersOverTimeOptions
+ tags: ['Objects']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/viewers:
+ get:
+ summary: Get active viewers
+ operationId: GetActiveViewers
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of active viewers
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Viewer'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetActiveViewersOptions
+ tags: ['Objects', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/hardwarestats:
+ get:
+ summary: Get the current hardware stats
+ operationId: GetHardwareStats
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Current hardware stats
+ content:
+ application/json:
+ schema:
+ allOf:
+ - $ref: '#/components/schemas/StreamHealthOverview'
+ - $ref: '#/components/schemas/CollectedMetrics'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetHardwareStatsOptions
+ tags: ['Objects']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/clients:
+ get:
+ summary: Get a detailed list of currently connected chat clients
+ operationId: GetConnectedChatClients
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of chat clients
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChatClients'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetConnectedChatClientsOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/messages:
+ get:
+ summary: Get all chat messages for the admin, unfiltered
+ operationId: GetChatMessagesAdmin
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of chat messages for the admin
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChatMessages'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetChatMessagesAdminOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/messagevisibility:
+ post:
+ summary: Update visibility of chat messages
+ operationId: UpdateMessageVisibilityAdmin
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MessageVisibilityUpdate'
+ responses:
+ '200':
+ description: Messages updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: UpdateMessageVisibilityAdminOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/setenabled:
+ post:
+ summary: Enable or disable a user
+ operationId: UpdateUserEnabledAdmin
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ userId:
+ type: string
+ enabled:
+ type: boolean
+ responses:
+ '200':
+ description: Successfully updated the user
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: UpdateUserEnabledAdminOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/disabled:
+ get:
+ summary: Get a list of disabled users
+ operationId: GetDisabledUsers
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of disabled users
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Users'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetDisabledUsersOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/ipbans/create:
+ post:
+ summary: Ban an IP address
+ operationId: BanIPAddress
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: IP was successfully banned
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: BanIPAddressOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/ipbans/remove:
+ post:
+ summary: Remove an IP ban
+ operationId: UnbanIPAddress
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AdminConfigValue'
+ responses:
+ '200':
+ description: IP ban was successfully removed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: UnbanIPAddressOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/ipbans:
+ get:
+ summary: Get all banned IP addresses
+ operationId: GetIPAddressBans
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of banned IP addresses
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/IPAddress'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetIPAddressBansOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/setmoderator:
+ post:
+ summary: Set moderator status for a user
+ operationId: UpdateUserModerator
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ userId:
+ type: string
+ isModerator:
+ type: boolean
+ responses:
+ '200':
+ description: Successfully update the moderator status of the user
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: UpdateUserModeratorOptions
+ tags: ['Objects', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/chat/users/moderators:
+ get:
+ summary: Get a list of moderator users
+ operationId: GetModerators
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of moderator users
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Users'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetModeratorsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/logs:
+ get:
+ summary: Get all logs
+ operationId: GetLogs
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of logs
+ headers:
+ 'Access-Control-Allow-Origin':
+ $ref: '#/components/headers/Access-Control-Allow-Origin'
+ 'Access-Control-Allow-Credentials':
+ $ref: '#/components/headers/Access-Control-Allow-Credentials'
+ 'Access-Control-Allow-Headers':
+ $ref: '#/components/headers/Access-Control-Allow-Headers'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/AdminLog'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetLogsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/logs/warnings:
+ get:
+ summary: Get warning/error logs
+ operationId: GetWarnings
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of warnings and errors
+ headers:
+ 'Access-Control-Allow-Origin':
+ $ref: '#/components/headers/Access-Control-Allow-Origin'
+ 'Access-Control-Allow-Credentials':
+ $ref: '#/components/headers/Access-Control-Allow-Credentials'
+ 'Access-Control-Allow-Headers':
+ $ref: '#/components/headers/Access-Control-Allow-Headers'
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/AdminLog'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetWarningsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/followers:
+ get:
+ summary: Get followers
+ operationId: GetFollowersAdmin
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ parameters:
+ - $ref: '#/components/parameters/Offset'
+ - $ref: '#/components/parameters/Limit'
+ responses:
+ '200':
+ description: Paginated follower count
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PaginatedFollowers'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetFollowersAdminOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/followers/pending:
+ get:
+ summary: Get a list of pending follow requests
+ operationId: GetPendingFollowRequests
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of pending followers
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Followers'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetPendingFollowRequestsOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/followers/blocked:
+ get:
+ summary: Get a list of rejected or blocked follows
+ operationId: GetBlockedAndRejectedFollowers
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of rejected or blocked follows
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Followers'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetBlockedAndRejectedFollowersOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/followers/approve:
+ post:
+ summary: Set the following state of a follower or follow request
+ operationId: ApproveFollower
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ actorIRI:
+ type: string
+ approved:
+ type: boolean
+ responses:
+ '200':
+ description: List of rejected or blocked follows
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ApproveFollowerOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/emoji/upload:
+ post:
+ summary: Upload custom emoji
+ operationId: UploadCustomEmoji
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ name:
+ type: string
+ data:
+ description: Base 64 encoded image data
+ type: string
+ responses:
+ '200':
+ description: Emoji has been uploaded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: UploadCustomEmojiOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/emoji/delete:
+ post:
+ summary: Delete custom emoji
+ operationId: DeleteCustomEmoji
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ name:
+ type: string
+ responses:
+ '200':
+ description: Emoji has been deleted
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: DeleteCustomEmojiOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/adminpass:
+ post:
+ summary: Change the current admin password
+ operationId: SetAdminPassword
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Admin password has been updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetAdminPasswordOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/streamkeys:
+ post:
+ summary: Set an array of valid stream keys
+ operationId: SetStreamKeys
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ $ref: '#/components/schemas/StreamKey'
+ responses:
+ '200':
+ description: Stream keys have been updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetStreamKeysOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/pagecontent:
+ post:
+ summary: Change the extra page content in memory
+ operationId: SetExtraPageContent
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Page content has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetExtraPageContentOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/streamtitle:
+ post:
+ summary: Change the stream title
+ operationId: SetStreamTitle
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Stream title has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetStreamTitleOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/name:
+ post:
+ summary: Change the server name
+ operationId: SetServerName
+ tags: ['Objects', 'Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Server name has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetServerNameOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/serversummary:
+ post:
+ summary: Change the server summary
+ operationId: SetServerSummary
+ tags: ['Objects', 'Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Server summary has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetServerSummaryOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/offlinemessage:
+ post:
+ summary: Change the offline message
+ operationId: SetCustomOfflineMessage
+ tags: ['Objects', 'Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Offline message has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetCustomOfflineMessageOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/welcomemessage:
+ post:
+ summary: Change the welcome message
+ operationId: SetServerWelcomeMessage
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Welcome message has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetServerWelcomeMessageOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/disable:
+ post:
+ summary: Disable chat
+ operationId: SetChatDisabled
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Chat has been disabled
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetChatDisabledOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/joinmessagesenabled:
+ post:
+ summary: Enable chat for user join messages
+ operationId: SetChatJoinMessagesEnabled
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: User join messages has been enabled
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetChatJoinMessagesEnabledOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/establishedusermode:
+ post:
+ summary: Enable/disable chat established user mode
+ operationId: SetEnableEstablishedChatUserMode
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Chat established user mode updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetEnableEstablishedChatUserModeOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/forbiddenusernames:
+ post:
+ summary: Set chat usernames that are not allowed
+ operationId: SetForbiddenUsernameList
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: Forbidden usernames updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetForbiddenUsernameListOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/suggestedusernames:
+ post:
+ summary: Set the suggested chat usernames that will be assigned automatically
+ operationId: SetSuggestedUsernameList
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: Suggested usernames updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetSuggestedUsernameListOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/spamprotectionenabled:
+ post:
+ summary: Set spam protection enabled
+ operationId: SetChatSpamProtectionEnabled
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Spam protection enabled updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetChatSpamProtectionEnabledOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/chat/slurfilterenabled:
+ post:
+ summary: Set slur filter enabled
+ operationId: SetChatSlurFilterEnabled
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Slur filter enabled updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetChatSlurFilterEnabledOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/video/codec:
+ post:
+ summary: Set video codec
+ operationId: SetVideoCodec
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Video codec updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetVideoCodecOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/video/streamlatencylevel:
+ post:
+ summary: Set the number of video segments and duration per segment in a playlist
+ operationId: SetStreamLatencyLevel
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Stream latency updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetStreamLatencyLevelOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/video/streamoutputvariants:
+ post:
+ summary: Set an array of video output configurations
+ operationId: SetStreamOutputVariants
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ $ref: '#/components/schemas/StreamOutputVariant'
+ responses:
+ '200':
+ description: Stream Output Variants updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetStreamOutputVariantsOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/appearance:
+ post:
+ summary: Set style/color/css values
+ operationId: SetCustomColorVariableValues
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: object
+ additionalProperties:
+ type: string
+ responses:
+ '200':
+ description: Appearance updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetCustomColorVariableValuesOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/logo:
+ post:
+ summary: Update logo
+ operationId: SetLogo
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Logo updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetLogoOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/tags:
+ post:
+ summary: Update server tags
+ operationId: SetTags
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Tags updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetTagsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/ffmpegpath:
+ post:
+ summary: Update FFMPEG path
+ operationId: SetFfmpegPath
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Path updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFfmpegPathOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/webserverport:
+ post:
+ summary: Update server port
+ operationId: SetWebServerPort
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Port updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetWebServerPortOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/webserverip:
+ post:
+ summary: Update server IP address
+ operationId: SetWebServerIP
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: IP Address updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetWebServerIPOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/rtmpserverport:
+ post:
+ summary: Update RTMP post
+ operationId: SetRTMPServerPort
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: RTMP port updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetRTMPServerPortOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/sockethostoverride:
+ post:
+ summary: Update websocket host override
+ operationId: SetSocketHostOverride
+ tags: ['Internal', 'Admin', 'Chat']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Websocket host override updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetSocketHostOverrideOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/videoservingendpoint:
+ post:
+ summary: Update custom video serving endpoint
+ operationId: SetVideoServingEndpoint
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Video Serving Endpoint updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetVideoServingEndpointOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/nsfw:
+ post:
+ summary: Update NSFW marking
+ operationId: SetNSFW
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: NSFW status updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetNSFWOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/directoryenabled:
+ post:
+ summary: Update directory enabled
+ operationId: SetDirectoryEnabled
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Directory Enabled updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetDirectoryEnabledOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/socialhandles:
+ post:
+ summary: Update social handles
+ operationId: SetSocialHandles
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ $ref: '#/components/schemas/SocialHandle'
+ responses:
+ '200':
+ description: Social handles updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetSocialHandlesOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/s3:
+ post:
+ summary: Update S3 configuration
+ operationId: SetS3Configuration
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ $ref: '#/components/schemas/S3Info'
+ responses:
+ '200':
+ description: Directory Enabled updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetS3ConfigurationOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/serverurl:
+ post:
+ summary: Update server url
+ operationId: SetServerURL
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Server URL updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetServerURLOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/externalactions:
+ post:
+ summary: Update external action links
+ operationId: SetExternalActions
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ type: array
+ items:
+ $ref: '#/components/schemas/ExternalAction'
+ responses:
+ '200':
+ description: External Action Links updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetExternalActionsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/customstyles:
+ post:
+ summary: Update custom styles
+ operationId: SetCustomStyles
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Custom styles updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetCustomStylesOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/customjavascript:
+ post:
+ summary: Update custom JavaScript
+ operationId: SetCustomJavascript
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Custom JavaScript updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetCustomJavascriptOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/hideviewercount:
+ post:
+ summary: Update hide viewer count
+ operationId: SetHideViewerCount
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Hide viewer count updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetHideViewerCountOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/disablesearchindexing:
+ post:
+ summary: Update search indexing
+ operationId: SetDisableSearchIndexing
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Search Indexing updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetDisableSearchIndexingOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/enable:
+ post:
+ summary: Enable/disable federation features
+ operationId: SetFederationEnabled
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Federation features enabled/disabled
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationEnabledOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/private:
+ post:
+ summary: Set if federation activities are private
+ operationId: SetFederationActivityPrivate
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Private status set
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationActivityPrivateOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/showengagement:
+ post:
+ summary: Set if fediverse engagement appears in chat
+ operationId: SetFederationShowEngagement
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Federation engagement set
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationShowEngagementOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/username:
+ post:
+ summary: Set local federated username
+ operationId: SetFederationUsername
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Federation username set
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationUsernameOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/livemessage:
+ post:
+ summary: Set federated go live message
+ operationId: SetFederationGoLiveMessage
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Federation username set
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationGoLiveMessageOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/federation/blockdomains:
+ post:
+ summary: Set Federation blocked domains
+ operationId: SetFederationBlockDomains
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Federation blocked domains set
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetFederationBlockDomainsOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/notifications/discord:
+ post:
+ summary: Configure Discord notifications
+ operationId: SetDiscordNotificationConfiguration
+ tags: ['Internal', 'Admin', 'Notifications']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ $ref: '#/components/schemas/DiscordNotificationConfiguration'
+ responses:
+ '200':
+ description: Discord notification configuration updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetDiscordNotificationConfigurationOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Notifications']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/config/notifications/browser:
+ post:
+ summary: Configure Browser notifications
+ operationId: SetBrowserNotificationConfiguration
+ tags: ['Internal', 'Admin', 'Notifications']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ value:
+ $ref: '#/components/schemas/BrowserNotificationConfiguration'
+ responses:
+ '200':
+ description: Browser notification configuration updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SetBrowserNotificationConfigurationOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Notifications']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/webhooks:
+ get:
+ summary: Get all the webhooks
+ operationId: GetWebhooks
+ tags: ['Internal', 'Admin', 'Notifications']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: All webhooks
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Webhook'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetWebhooksOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Notifications']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/webhooks/delete:
+ post:
+ summary: Delete a single webhook
+ operationId: DeleteWebhook
+ tags: ['Internal', 'Admin', 'Notifications']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ id:
+ type: integer
+ responses:
+ '200':
+ description: Webhook successfully deleted
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: DeleteWebhookOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Notifications']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/webhooks/create:
+ post:
+ summary: Create a single webhook
+ operationId: CreateWebhook
+ tags: ['Internal', 'Admin', 'Notifications']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ url:
+ type: string
+ events:
+ type: array
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ responses:
+ '200':
+ description: The new webhook
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Webhook'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: CreateWebhookOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Notifications']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/accesstokens:
+ get:
+ summary: Get all access tokens
+ operationId: GetExternalAPIUsers
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: List of external API users
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/ExternalAPIUser'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetExternalAPIUsersOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/accesstokens/delete:
+ post:
+ summary: Delete a single external API user
+ operationId: DeleteExternalAPIUser
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ token:
+ type: string
+ responses:
+ '200':
+ description: External API user successfully deleted
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: DeleteExternalAPIUserOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/accesstokens/create:
+ post:
+ summary: Create a single access token
+ operationId: CreateExternalAPIUser
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ name:
+ type: string
+ scopes:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: The new external API user
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ExternalAPIUser'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: CreateExternalAPIUserOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/update/options:
+ get:
+ summary: Return the auto-update features that are supported for this instance
+ operationId: AutoUpdateOptions
+ tags: ['Internal', 'Admin']
+ x-internal: true
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Current auto-update options
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ supportsUpdate:
+ type: boolean
+ canRestart:
+ type: boolean
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: AutoUpdateOptionsOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/update/start:
+ get:
+ summary: Begin the auto-update
+ operationId: AutoUpdateStart
+ tags: ['Internal', 'Admin']
+ x-internal: true
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Console output from update
+ content:
+ text/plain:
+ schema:
+ type: string
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: AutoUpdateStartOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ x-internal: true
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/update/forcequit:
+ get:
+ summary: Force quit the server and restart it
+ operationId: AutoUpdateForceQuit
+ x-internal: true
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Server force restart has been ordered
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: AutoUpdateForceQuitOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ x-internal: true
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/yp/reset:
+ get:
+ summary: Reset YP configuration
+ operationId: ResetYPRegistration
+ tags: ['Internal', 'Admin']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: YP Registration has been reset
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ResetYPRegistrationOptions
+ tags: ['Objects', 'Internal', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/metrics/video:
+ get:
+ summary: Get video playback metrics
+ operationId: GetVideoPlaybackMetrics
+ tags: ['Internal', 'Admin', 'Video']
+ security:
+ - BasicAuth: []
+ responses:
+ '200':
+ description: Video playback metrics
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ errors:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ qualityVariantChanges:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ highestLatency:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ medianLatency:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ lowestLatency:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ medianSegmentDownloadDuration:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ maximumSegmentDownloadDuration:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ minimumSegmentDownloadDuration:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ minPlayerBitrate:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ medianPlayerBitrate:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ maxPlayerBitrate:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ availableBitrates:
+ type: array
+ items:
+ type: integer
+ segmentLength:
+ type: integer
+ representation:
+ type: integer
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetVideoPlaybackMetricsOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Video']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/prometheus:
+ get:
+ summary: Endpoint to interface with Prometheus
+ description: |-
+ This endpoint interfaces with the Prometheus metrics API.
+
+ Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
+ operationId: GetPrometheusAPI
+ tags: ['Internal', 'Admin']
+ post:
+ summary: Endpoint to interface with Prometheus
+ description: |-
+ This endpoint interfaces with the Prometheus metrics API.
+
+ Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
+ operationId: PostPrometheusAPI
+ tags: ['Internal', 'Admin']
+ put:
+ summary: Endpoint to interface with Prometheus
+ description: |-
+ This endpoint interfaces with the Prometheus metrics API.
+
+ Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
+ operationId: PutPrometheusAPI
+ tags: ['Internal', 'Admin']
+ delete:
+ summary: Endpoint to interface with Prometheus
+ description: |-
+ This endpoint interfaces with the Prometheus metrics API.
+
+ Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
+ operationId: DeletePrometheusAPI
+ tags: ['Internal', 'Admin']
+ options:
+ summary: Endpoint to interface with Prometheus
+ description: |-
+ This endpoint interfaces with the Prometheus metrics API.
+
+ Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
+ operationId: OptionsPrometheusAPI
+ tags: ['Internal', 'Admin']
+ /admin/federation/send:
+ post:
+ summary: Send a public message to the Fediverse from the server's user
+ operationId: SendFederatedMessage
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Message sent
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SendFederatedMessageOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /admin/federation/actions:
+ get:
+ summary: Get a paginated list of federated activities
+ operationId: GetFederatedActions
+ tags: ['Internal', 'Admin', 'Social']
+ security:
+ - BasicAuth: []
+ parameters:
+ - $ref: '#/components/parameters/Offset'
+ - $ref: '#/components/parameters/Limit'
+ responses:
+ '200':
+ description: A paginated list of federated activities
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PaginatedFederatedActivity'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: GetFederatedActionsOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Social']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/system:
+ post:
+ summary: Send a system message to the chat
+ operationId: SendSystemMessage
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ requestBody:
+ description: The content of the system message
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SystemMessage'
+ responses:
+ '200':
+ description: Message sent successfully
+ headers:
+ 'Access-Control-Allow-Origin':
+ $ref: '#/components/headers/Access-Control-Allow-Origin'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ '500':
+ $ref: '#/components/responses/500'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SendSystemMessageOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/system/client/{clientId}:
+ post:
+ summary: Send a system message to a single client
+ operationId: SendSystemMessageToConnectedClient
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ parameters:
+ - in: path
+ name: clientId
+ required: true
+ schema:
+ type: integer
+ description: The ID of the specified client
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SystemMessage'
+ responses:
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ '500':
+ $ref: '#/components/responses/500'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SendSystemMessageToConnectedClientOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ parameters:
+ - in: path
+ name: clientId
+ required: true
+ schema:
+ type: integer
+ description: The ID of the specified client
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/user:
+ post:
+ deprecated: true
+ summary: Send a user message to chat
+ operationId: SendUserMessage
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ responses:
+ '400':
+ $ref: '#/components/responses/400'
+ options:
+ deprecated: true
+ operationId: SendUserMessageOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/send:
+ post:
+ summary: Send a message to chat as a specific 3rd party bot/integration based on its access token
+ operationId: SendIntegrationChatMessage
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserMessage'
+ responses:
+ '200':
+ description: Message sent successfully
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ '500':
+ $ref: '#/components/responses/500'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SendIntegrationChatMessageOptions
+ tags: ['Objects', 'External', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/action:
+ post:
+ summary: Send a user action to chat
+ operationId: SendChatAction
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SystemActionEvent'
+ responses:
+ '200':
+ description: Action sent successfully
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ '500':
+ $ref: '#/components/responses/500'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: SendChatActionOptions
+ tags: ['Objects', 'Internal', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat/messagevisibility:
+ post:
+ summary: Hide chat message
+ operationId: ExternalUpdateMessageVisibility
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MessageVisibilityUpdate'
+ responses:
+ '200':
+ description: Messages updated
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ExternalUpdateMessageVisibilityOptions
+ tags: ['Objects', 'External', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/streamtitle:
+ post:
+ summary: Stream title
+ operationId: ExternalSetStreamTitle
+ tags: ['External']
+ security:
+ - BearerAuth: []
+ requestBody:
+ $ref: '#/components/requestBodies/AdminConfigValue'
+ responses:
+ '200':
+ description: Stream title has been changed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ExternalSetStreamTitleOptions
+ tags: ['Objects', 'External', 'Admin']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/chat:
+ get:
+ summary: Get chat history
+ operationId: ExternalGetChatMessages
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ responses:
+ '200':
+ description: List of chat messages
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChatMessages'
+ '401':
+ $ref: '#/components/responses/401'
+ '501':
+ $ref: '#/components/responses/501'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ExternalGetChatMessagesOptions
+ tags: ['Objects', 'External', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /integrations/clients:
+ get:
+ summary: Connected clients
+ operationId: ExternalGetConnectedChatClients
+ tags: ['External', 'Chat']
+ security:
+ - BearerAuth: []
+ responses:
+ '200':
+ description: List of chat clients
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChatClients'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401BasicAuth'
+ default:
+ $ref: '#/components/responses/Default'
+ options:
+ operationId: ExternalGetConnectedChatClientsOptions
+ tags: ['Objects', 'External', 'Admin', 'Chat']
+ responses:
+ '204':
+ $ref: '#/components/responses/204'
+ /moderation/chat/user/{userId}:
+ get:
+ summary: Get a user's details
+ operationId: GetUserDetails
+ tags: ['External', 'Chat']
+ parameters:
+ - in: path
+ name: userId
+ schema:
+ type: string
+ description: The ID of the user to find
+ required: true
+ - $ref: '#/components/parameters/AccessToken'
+ responses:
+ '200':
+ description: User information
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ModerationUserDetails'
+ '401':
+ $ref: '#/components/responses/401'
+ '404':
+ $ref: '#/components/responses/404'
+ default:
+ $ref: '#/components/responses/Default'
+ /auth/indieauth:
+ post:
+ summary: Begins auth flow
+ operationId: StartIndieAuthFlow
+ tags: ['Internal', 'Auth', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ authHost:
+ type: string
+ responses:
+ '200':
+ description: Authentication redirect
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ redirect:
+ type: string
+ format: url
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ default:
+ $ref: '#/components/responses/Default'
+ /auth/indieauth/callback:
+ get:
+ summary: Handle the redirect from an IndieAuth server to continue the auth flow
+ operationId: HandleIndieAuthRedirect
+ tags: ['Internal', 'Auth', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/IndieAuthState'
+ - $ref: '#/components/parameters/IndieAuthCode'
+ responses:
+ '307':
+ description: Redirected to home page
+ '400':
+ $ref: '#/components/responses/400'
+ /auth/provider/indieauth:
+ get:
+ summary: Handles the IndieAuth auth endpoint
+ operationId: HandleIndieAuthEndpointGet
+ tags: ['Internal', 'Auth', 'Chat']
+ security:
+ - BasicAuth: []
+ parameters:
+ - $ref: '#/components/parameters/IndieAuthClientId'
+ - $ref: '#/components/parameters/IndieAuthRedirectURI'
+ - $ref: '#/components/parameters/IndieAuthCodeChallenge'
+ - $ref: '#/components/parameters/IndieAuthState'
+ - $ref: '#/components/parameters/IndieAuthCode'
+ responses:
+ '200':
+ description: IndieAuth flow concluded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IndieAuthResponse'
+ '307':
+ description: Redirected to redirect URI
+ '400':
+ $ref: '#/components/responses/400'
+ '500':
+ $ref: '#/components/responses/500'
+ post:
+ summary: Handles IndieAuth from form submission
+ operationId: HandleIndieAuthEndpointPost
+ tags: ['Internal', 'Auth', 'Chat']
+ requestBody:
+ $ref: '#/components/requestBodies/IndieAuthEndpointForm'
+ responses:
+ '200':
+ description: IndieAuth flow concluded
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '#/components/schemas/IndieAuthResponse'
+ - $ref: '#/components/schemas/IndieAuthServerProfileResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ /auth/fediverse:
+ post:
+ summary: Register a Fediverse OTP request
+ operationId: RegisterFediverseOTPRequest
+ tags: ['Internal', 'Auth', 'Chat']
+ parameters:
+ - $ref: '#/components/parameters/AccessToken'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ account:
+ type: string
+ responses:
+ '200':
+ description: OTP sent
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '401':
+ $ref: '#/components/responses/401'
+ /auth/fediverse/verify:
+ post:
+ summary: Verify Fediverse OTP code
+ operationId: VerifyFediverseOTPRequest
+ tags: ['Internal', 'Auth', 'Chat']
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ code:
+ type: string
+ responses:
+ '200':
+ description: OTP Verified
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '400':
+ $ref: '#/components/responses/400'
+ '403':
+ $ref: '#/components/responses/403'
components:
schemas:
- ClientArray:
- type: array
- items:
- $ref: '#/components/schemas/Client'
-
- UserArray:
- type: array
- items:
- $ref: '#/components/schemas/User'
-
- LogEntryArray:
- type: array
- items:
- $ref: '#/components/schemas/LogEntry'
-
- FollowerArray:
- type: array
- items:
- $ref: '#/components/schemas/Follower'
-
- StreamKeyArray:
- type: array
- items:
- $ref: '#/components/schemas/StreamKey'
-
- ChatMessageArray:
- type: array
- items:
- $ref: '#/components/schemas/ChatMessage'
-
- Client:
+ Error:
type: object
- description: A single representation of a client.
- example:
- connectedAt: '2020-10-06T23:20:44.588649-07:00'
- messageCount: 0
- userAgent: >-
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36
- (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
- ipAddress: '::1'
- clientID: 2ba20dd34f911c198df3218ddc64c740
- geo:
- countryCode: US
- regionName: California
- timeZone: America/Los_Angeles
+ description: Structure for an error response
+ tags: ['Objects']
properties:
- connectedAt:
+ error:
type: string
- format: date-time
- messageCount:
- description: Number of chat messages sent by user
- type: integer
- userAgent:
- description: The web client used to connect to this server
- type: string
- example: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
- ipAddress:
- description: The public IP address of this client
- type: string
- clientID:
- description: The value used to identify this client
- type: string
- geo:
- type: object
- description: Optional geographic data for the client
- properties:
- countryCode:
- type: string
- regionName:
- type: string
- timeZone:
- type: string
- user:
- $ref: '#/components/schemas/User'
- x-last-modified: 1602052347511
-
- BasicResponse:
+ BaseAPIResponse:
type: object
+ description: Simple API response
+ tags: ['Objects']
properties:
- success:
- type: boolean
message:
type: string
-
- InstanceDetails:
+ success:
+ type: boolean
+ Status:
type: object
- description: User-facing details about this server.
+ description: Response for status
+ tags: ['Objects']
+ properties:
+ serverTime:
+ type: string
+ lastConnectTime:
+ type: string
+ lastDisconnectTime:
+ type: string
+ versionNumber:
+ type: string
+ viewerCount:
+ type: integer
+ online:
+ type: boolean
+ Emojis:
+ type: array
+ items:
+ $ref: '#/components/schemas/Emoji'
+ Emoji:
+ type: object
+ description: Name and url for an emoji
+ tags: ['Objects']
properties:
name:
type: string
- description: Displayed as the header in the instance details.
- summary:
+ description: The name of the emoji
+ url:
+ type: string
+ description: URL for the emoji image
+ AnonymousUser:
+ type: object
+ tags: ['Objects']
+ properties:
+ id:
+ type: string
+ accessToken:
+ type: string
+ displayName:
+ type: string
+ User:
+ type: object
+ tags: ['Objects']
+ properties:
+ createdAt:
+ type: string
+ disabledAt:
+ type: string
+ nameChangedAt:
+ type: string
+ id:
+ type: string
+ displayName:
+ type: string
+ previousNames:
+ type: array
+ items:
+ type: string
+ scopes:
+ type: array
+ items:
+ type: string
+ displayColor:
+ type: integer
+ isBot:
+ type: boolean
+ authenticated:
+ type: boolean
+ Users:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ Follower:
+ type: object
+ tags: ['Objects']
+ properties:
+ link:
+ type: string
+ description: The IRI of the remote actor.
+ name:
+ type: string
+ description: The display name of the follower.
+ username:
+ type: string
+ description: The account username of the remote actor.
+ image:
+ type: string
+ description: The avatar image of the follower.
+ timestamp:
+ type: string
+ description: When this follow request was created.
+ disabledAt:
+ type: string
+ description: When this follower was rejected or disabled.
+ Followers:
+ type: array
+ tags: ['Objects']
+ items:
+ $ref: '#/components/schemas/Follower'
+ PaginatedFollowers:
+ type: object
+ tags: ['Objects']
+ properties:
+ total:
+ type: integer
+ results:
+ $ref: '#/components/schemas/Followers'
+ Event:
+ type: object
+ tags: ['Objects']
+ properties:
+ timestamp:
+ type: string
+ type:
+ type: string
+ id:
+ type: string
+ UserEvent:
+ type: object
+ tags: ['Objects']
+ properties:
+ user:
+ $ref: '#/components/schemas/User'
+ hiddenAt:
+ type: string
+ clientId:
+ type: integer
+ MessageEvent:
+ type: object
+ tags: ['Objects']
+ properties:
+ body:
+ type: string
+ ChatMessages:
+ type: array
+ tags: ['Objects']
+ items:
+ anyOf:
+ - $ref: '#/components/schemas/UserMessage'
+ - $ref: '#/components/schemas/SystemMessage'
+ - $ref: '#/components/schemas/ActionMessage'
+ - $ref: '#/components/schemas/FederatedAction'
+ UserMessage:
+ type: object
+ tags: ['Objects']
+ allOf:
+ - $ref: '#/components/schemas/Event'
+ - $ref: '#/components/schemas/UserEvent'
+ - $ref: '#/components/schemas/MessageEvent'
+ SystemMessage:
+ type: object
+ tags: ['Objects']
+ allOf:
+ - $ref: '#/components/schemas/Event'
+ - $ref: '#/components/schemas/MessageEvent'
+ SystemActionEvent:
+ type: object
+ tags: ['Objects']
+ allOf:
+ - $ref: '#/components/schemas/Event'
+ - $ref: '#/components/schemas/MessageEvent'
+ ActionMessage:
+ type: object
+ tags: ['Objects']
+ allOf:
+ - $ref: '#/components/schemas/Event'
+ - $ref: '#/components/schemas/MessageEvent'
+ FederatedAction:
+ type: object
+ tags: ['Objects']
+ allOf:
+ - $ref: '#/components/schemas/Event'
+ - $ref: '#/components/schemas/MessageEvent'
+ - type: object
+ properties:
+ image:
+ type: string
+ link:
+ type: string
+ title:
+ type: string
+ WebConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ appearanceVariables:
+ type: object
+ additionalProperties:
+ type: string
+ name:
+ type: string
+ customStyles:
+ type: string
+ streamTitle:
+ type: string
+ offlineMessage:
type: string
- description: This is brief summary of whom you are or what the stream is.
logo:
type: string
- description: Local file name of your logo image. We recommend a square image (150 x 150px) with ample padding around the important contents of the image, as it will be rendered as a circle.
+ version:
+ type: string
+ socketHostOverride:
+ type: string
+ extraPageContent:
+ type: string
+ summary:
+ type: string
tags:
type: array
- description: Categories of the content this instance focuses on.
items:
type: string
socialHandles:
type: array
- description: Links to social network urls.
items:
- type: object
- properties:
- platform:
- type: string
- example: github
- url:
- type: string
- example: http://github.com/owncast/owncast
- extraPageContent:
- type: string
- description: Additional HTML content to render in the body of the web interface.
- example: '
This page is super cool!'
- version:
- type: string
- example: Owncast v0.0.3-macOS (ef3796a033b32a312ebf5b334851cbf9959e7ecb)
-
- YP:
+ $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
- description: Configuration of the instance's registration to the Owncast Directory (YP API)
+ tags: ['Objects']
properties:
+ platform:
+ type: string
+ url:
+ type: string
+ icon:
+ type: string
+ ExternalAction:
+ type: object
+ tags: ['Objects']
+ properties:
+ url:
+ type: string
+ html:
+ type: string
+ title:
+ type: string
+ description:
+ type: string
+ icon:
+ type: string
+ color:
+ type: string
+ openExternally:
+ type: boolean
+ NotificationConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ browser:
+ $ref: '#/components/schemas/BrowserConfig'
+ BrowserConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ publicKey:
+ type: string
enabled:
type: boolean
- description: If YP support is on or off. Must be enabled to show in the directory.
- default: false
- instanceUrl:
- type: string
- description: The public URL of this owncast server, used for registration and linking with the directory. Must be publicly available.
-
- S3:
+ FederationConfig:
type: object
- description: Configuration of external storage using S3-compatible providers.
+ tags: ['Objects']
properties:
+ account:
+ type: string
+ followerCount:
+ type: integer
enabled:
type: boolean
+ AuthenticationConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ indieAuthEnabled:
+ type: boolean
+ YPDetails:
+ type: object
+ tags: ['Objects']
+ properties:
+ lastConnectTime:
+ type: string
+ name:
+ type: string
+ description:
+ type: string
+ streamTitle:
+ type: string
+ logo:
+ type: string
+ tags:
+ type: array
+ items:
+ type: string
+ social:
+ type: array
+ items:
+ $ref: '#/components/schemas/SocialHandle'
+ viewerCount:
+ type: integer
+ overallMaxViewerCount:
+ type: integer
+ sessionMaxViewerCount:
+ type: integer
+ nsfw:
+ type: boolean
+ online:
+ type: boolean
+ VideoVariant:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ index:
+ type: integer
+ name:
+ type: string
+ PlaybackMetrics:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ bandwidth:
+ type: number
+ format: double
+ latency:
+ type: number
+ format: double
+ errors:
+ type: number
+ format: double
+ downloadDuration:
+ type: number
+ format: double
+ qualityVariantChanges:
+ type: number
+ format: double
+ Broadcaster:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ time:
+ type: string
+ format: date-time
+ remoteAddr:
+ type: string
+ streamDetails:
+ $ref: '#/components/schemas/InboundStreamDetails'
+ InboundStreamDetails:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ videoCodec:
+ type: string
+ audioCodec:
+ type: string
+ encoder:
+ type: string
+ width:
+ type: integer
+ height:
+ type: integer
+ videoBitrate:
+ type: integer
+ audioBitrate:
+ type: integer
+ framerate:
+ type: number
+ format: float
+ CurrentBroadcast:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ outputSettings:
+ type: array
+ items:
+ $ref: '#/components/schemas/StreamOutputVariant'
+ latencyLevel:
+ $ref: '#/components/schemas/LatencyLevel'
+ StreamOutputVariant:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ name:
+ type: string
+ videoPassthrough:
+ type: boolean
+ audioPassthrough:
+ type: boolean
+ videoBitrate:
+ type: integer
+ audioBitrate:
+ type: integer
+ scaledWidth:
+ type: integer
+ scaledHeight:
+ type: integer
+ framerate:
+ type: integer
+ cpuUsageLevel:
+ type: integer
+ LatencyLevel:
+ type: object
+ properties:
+ level:
+ type: integer
+ StreamHealthOverview:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ message:
+ type: string
+ healthPercentage:
+ type: integer
+ representation:
+ type: integer
+ healthy:
+ type: boolean
+ BrowserNotificationConfiguration:
+ type: object
+ tags: ['Objects', 'Notifications']
+ properties:
+ goLiveMessage:
+ type: string
+ enabled:
+ type: boolean
+ DiscordNotificationConfiguration:
+ type: object
+ tags: ['Objects', 'Notifications']
+ properties:
+ webhook:
+ type: string
+ goLiveMessage:
+ type: string
+ enabled:
+ type: boolean
+ S3Info:
+ type: object
+ tags: ['Objects']
+ properties:
endpoint:
type: string
- servingEndpoint:
- type: string
accessKey:
type: string
secret:
@@ -177,2166 +3775,639 @@ components:
type: string
acl:
type: string
+ pathPrefix:
+ type: string
+ enabled:
+ type: boolean
forcePathStyle:
type: boolean
- required:
- - enabled
- StreamQuality:
+ StreamKey:
type: object
+ tags: ['Objects']
properties:
- videoPassthrough:
- type: boolean
- description: If enabled video transcoding is disabled and the video is passed along in its original format.
- audioPassthrough:
- type: boolean
- description: If enabled audio transcoding is disabled and the audio is passed along in its original format.
- videoBitrate:
- type: integer
- description: The video quality, in kbps.
- audioBitrate:
- type: integer
- description: The audio quality, in kbps.
- scaledWidth:
- type: integer
- description: The resized video width.
- scaledHeight:
- type: integer
- description: The resized video height.
- framerate:
- type: integer
- description: The target frames per second of the video.
- cpuUsageLevel:
- type: integer
- description: 'The amount of hardware utilization selected for this HLS variant.'
-
+ key:
+ type: string
+ comment:
+ type: string
TimestampedValue:
type: object
+ tags: ['Objects']
properties:
time:
type: string
format: date-time
value:
- type: integer
-
- ConfigValue:
- description: A wrapper object used to set values in many config endpoints.
+ type: number
+ format: double
+ Viewer:
type: object
+ tags: ['Objects', 'Video']
+ properties:
+ firstSeen:
+ type: string
+ format: date-time
+ geo:
+ $ref: '#/components/schemas/GeoDetails'
+ userAgent:
+ type: string
+ ipAddress:
+ type: string
+ clientID:
+ type: string
+ GeoDetails:
+ type: object
+ tags: ['Objects']
+ properties:
+ countryCode:
+ type: string
+ regionName:
+ type: string
+ timeZone:
+ type: string
+ CollectedMetrics:
+ tags: ['Objects']
+ type: object
+ properties:
+ disk:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ memory:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ cpu:
+ type: array
+ items:
+ $ref: '#/components/schemas/TimestampedValue'
+ ChatClient:
+ type: object
+ tags: ['Objects', 'Chat']
+ properties:
+ connectedAt:
+ type: string
+ format: date-time
+ user:
+ $ref: '#/components/schemas/User'
+ geo:
+ $ref: '#/components/schemas/GeoDetails'
+ userAgent:
+ type: string
+ messageCount:
+ type: integer
+ ChatClients:
+ type: array
+ tags: ['Objects', 'Chat']
+ items:
+ $ref: '#/components/schemas/ChatClient'
+ IPAddress:
+ type: object
+ tags: ['Objects', 'Chat']
+ properties:
+ createdAt:
+ type: string
+ format: date-time
+ ipAddress:
+ type: string
+ notes:
+ type: string
+ Webhook:
+ type: object
+ tags: ['Objects', 'Notifications']
+ properties:
+ timestamp:
+ type: string
+ format: date-time
+ lastUsed:
+ type: string
+ format: date-time
+ url:
+ type: string
+ events:
+ type: array
+ items:
+ $ref: '#/components/schemas/WebhookEventType'
+ id:
+ type: integer
+ WebhookEventType:
+ type: string
+ tags: ['Objects', 'Notifications']
+ enum:
+ - CHAT
+ - USER_JOINED
+ - USER_PARTED
+ - NAME_CHANGE
+ - VISIBILITY-UPDATE
+ - PING
+ - PONG
+ - STREAM_STARTED
+ - STREAM_STOPPED
+ - STREAM_TITLE_UPDATED
+ - SYSTEM
+ - CHAT_ACTION
+ ExternalAPIUser:
+ type: object
+ properties:
+ createdAt:
+ type: string
+ format: date-time
+ lastUsedAt:
+ type: string
+ format: date-time
+ id:
+ type: string
+ accessToken:
+ type: string
+ displayName:
+ type: string
+ type:
+ type: string
+ scopes:
+ type: array
+ items:
+ type: string
+ displayColor:
+ type: integer
+ isBot:
+ type: boolean
+ MessageVisibilityUpdate:
+ type: object
+ tags: ['Objects', 'Chat']
+ properties:
+ idArray:
+ type: array
+ items:
+ type: string
+ visible:
+ type: boolean
+ ModerationUserDetails:
+ type: object
+ tags: ['Objects', 'Chat']
+ properties:
+ user:
+ $ref: '#/components/schemas/User'
+ connectedClients:
+ type: array
+ items:
+ $ref: '#/components/schemas/ModerationConnectedClient'
+ messages:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserMessage'
+ ModerationConnectedClient:
+ type: object
+ tags: ['Objects', 'Chat']
+ properties:
+ connectedAt:
+ type: string
+ format: date-time
+ userAgent:
+ type: string
+ geo:
+ type: string
+ id:
+ type: integer
+ format: int64
+ messageCount:
+ type: integer
+ FederatedActivity:
+ type: object
+ tags: ['Objects', 'Social']
+ properties:
+ timestamp:
+ type: string
+ format: date-time
+ iri:
+ type: string
+ actorIRI:
+ type: string
+ type:
+ type: string
+ PaginatedFederatedActivity:
+ type: object
+ tags: ['Objects', 'Social']
+ properties:
+ total:
+ type: integer
+ results:
+ $ref: '#/components/schemas/FederatedActivity'
+ AdminStatus:
+ type: object
+ tags: ['Objects']
+ properties:
+ broadcaster:
+ $ref: '#/components/schemas/Broadcaster'
+ currentBroadcast:
+ $ref: '#/components/schemas/CurrentBroadcast'
+ health:
+ $ref: '#/components/schemas/StreamHealthOverview'
+ streamTitle:
+ type: string
+ versionNumber:
+ type: string
+ viewerCount:
+ type: integer
+ overallPeakViewerCount:
+ type: integer
+ sessionPeakViewerCount:
+ type: integer
+ online:
+ type: boolean
+ AdminServerConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ instanceDetails:
+ $ref: '#/components/schemas/AdminWebConfig'
+ notifications:
+ $ref: '#/components/schemas/AdminNotificationsConfig'
+ yp:
+ $ref: '#/components/schemas/AdminYPInfo'
+ ffmpegPath:
+ type: string
+ adminPassword:
+ type: string
+ socketHostOverride:
+ type: string
+ webServerIP:
+ type: string
+ videoCodec:
+ type: string
+ videoServingEndpoint:
+ type: string
+ s3:
+ $ref: '#/components/schemas/S3Info'
+ federation:
+ $ref: '#/components/schemas/AdminFederationConfig'
+ supportedCodecs:
+ type: array
+ items:
+ type: string
+ externalActions:
+ type: array
+ items:
+ $ref: '#/components/schemas/ExternalAction'
+ forbiddenUsernames:
+ type: array
+ items:
+ type: string
+ suggestedUsernames:
+ type: array
+ items:
+ type: string
+ streamKeys:
+ type: array
+ items:
+ $ref: '#/components/schemas/StreamKey'
+ videoSettings:
+ $ref: '#/components/schemas/AdminVideoSettings'
+ rtmpServerPort:
+ type: integer
+ webServerPort:
+ type: integer
+ chatDisabled:
+ type: boolean
+ chatJoinMessagesEnabled:
+ type: boolean
+ chatEstablishedUserMode:
+ type: boolean
+ disableSearchIndexing:
+ type: boolean
+ streamKeyOverridden:
+ type: boolean
+ hideViewerCount:
+ type: boolean
+ AdminWebConfig:
+ type: object
+ tags: ['Objects']
+ properties:
+ appearanceVariables:
+ type: object
+ additionalProperties:
+ type: string
+ version:
+ type: string
+ welcomeMessage:
+ type: string
+ offlineMessage:
+ type: string
+ logo:
+ type: string
+ name:
+ type: string
+ extraPageContent:
+ type: string
+ streamTitle:
+ type: string
+ customStyles:
+ type: string
+ customJavascript:
+ type: string
+ summary:
+ type: string
+ tags:
+ type: array
+ items:
+ type: string
+ socialHandles:
+ type: array
+ items:
+ $ref: '#/components/schemas/SocialHandle'
+ nsfw:
+ type: boolean
+ AdminNotificationsConfig:
+ type: object
+ tags: ['Objects', 'Notifications']
+ properties:
+ browser:
+ $ref: '#/components/schemas/BrowserNotificationConfiguration'
+ discord:
+ $ref: '#/components/schemas/DiscordNotificationConfiguration'
+ AdminYPInfo:
+ type: object
+ tags: ['Objects']
+ properties:
+ instanceUrl:
+ type: string
+ enabled:
+ type: boolean
+ AdminFederationConfig:
+ tags: ['Objects', 'Social']
+ type: object
+ properties:
+ username:
+ type: string
+ goLiveMessage:
+ type: string
+ blockedDomains:
+ type: array
+ items:
+ type: string
+ enabled:
+ type: boolean
+ isPrivate:
+ type: boolean
+ showEngagement:
+ type: boolean
+ AdminVideoSettings:
+ type: object
+ tags: ['Objects', 'Video']
+ properties:
+ videoQualityVariants:
+ type: array
+ items:
+ $ref: '#/components/schemas/StreamOutputVariant'
+ latencyLevel:
+ type: integer
+ AdminLog:
+ type: object
+ tags: ['Objects']
+ properties:
+ time:
+ type: string
+ format: date-time
+ message:
+ type: string
+ level:
+ type: string
+ AdminConfigValue:
+ type: object
+ tags: ['Objects']
properties:
value:
oneOf:
- type: string
- - type: integer
- - type: object
- type: boolean
-
- BooleanValue:
- description: A wrapper object used to set boolean values in many config endpoints.
+ - type: array
+ items:
+ type: string
+ - type: number
+ IndieAuthResponse:
type: object
+ tags: ['Objects', 'Auth']
properties:
- value:
- type: boolean
- example:
- value: true
-
- LogEntry:
+ me:
+ type: string
+ profile:
+ $ref: '#/components/schemas/IndieAuthProfile'
+ error:
+ type: string
+ errorDescription:
+ type: string
+ IndieAuthProfile:
type: object
+ tags: ['Objects', 'Auth']
properties:
- time:
- type: string
- format: date-time
- description: 'Timestamp for this log entry'
- level:
- type: string
- description: 'The level of this log entry'
- message:
- type: string
- description: 'The log entry contents'
-
- Webhook:
- type: object
- properties:
- id:
- type: string
- description: The ID of this webhook.
- url:
- type: string
- description: The URL that events will be sent to.
- events:
- type: array
- items:
- type: string
- description: The events that will be sent to this webhook.
- timestamp:
- type: string
- format: date-time
- description: When this webhook was created.
- lastUsed:
- type: string
- format: date-time
- description: When this webhook was last used.
-
- User:
- type: object
- properties:
- id:
- type: string
- description: User ID
- example: yklw5Imng
- displayName:
- type: string
- description: The user-facing disaplay name for this user.
- example: awesome-pizza
- displayColor:
- type: integer
- description: Color name number for client rendering. theme-user-colors-n
- example: 3
- createdAt:
- type: string
- format: date-time
- description: When this account was originally registered/created.
- previousNames:
- type: string
- description: Comma separated list of names previously used by this user.
- example: 'awesome-pizza,user42'
- scopes:
- type: array
- items:
- description: A specific attribute assigned to this user
- type: string
- example: 'MODERATOR'
-
- Follower:
- type: object
- required:
- - link
- - username
- - timestamp
- properties:
- link:
- type: string
- description: URL linking to this follower
- example: https://mastodon.cloud/users/gabektest
name:
type: string
- description: Optional display name for this follower
- example: John Smith
- image:
+ url:
type: string
- description: Optional image for this follower
- example: http://mastodon.cloud/users/gabektest/avatar.png
- timestamp:
+ photo:
type: string
- format: date-time
- description: Timestamp of when the follow occurred
- disabledAt:
- type: string
- format: date-time
- description: Timestamp when the follow was removed
-
- FederatedAction:
+ IndieAuthServerProfileResponse:
type: object
+ tags: ['Objects', 'Auth']
properties:
- iri:
+ me:
type: string
- description: The unique identifier for this action.
- example: https://fediverse.server/jfk-3827
- actorIRI:
+ profile:
+ $ref: '#/components/schemas/IndieAuthServerProfile'
+ error:
type: string
- description: The identifier for the actor that performed this action.
- example: https://mastodon.cloud/users/gabektest
- type:
+ errorDescription:
type: string
- enum:
- [
- FEDIVERSE_ENGAGEMENT_FOLLOW,
- FEDIVERSE_ENGAGEMENT_LIKE,
- FEDIVERSE_ENGAGEMENT_REPOST,
- ]
-
- StreamKey:
+ IndieAuthServerProfile:
type: object
+ tags: ['Objects', 'Auth']
properties:
- key:
+ name:
type: string
- description: The key used for authing a stream.
- example: yklw5Imng
- comment:
+ url:
+ type: string
+ photo:
type: string
- description: The user-facing description or explanation of this single key
- example: Used by Tim.
- ChatMessage:
- type: array
- items:
- type: object
- properties:
- user:
- $ref: '#/components/schemas/User'
- body:
- type: string
- description: Escaped HTML of the chat message content.
- id:
- type: string
- description: Unique ID of the chat message.
- visible:
- type: boolean
- description: 'Should chat message be visibly rendered.'
- timestamp:
- type: string
- format: date-time
+ 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
- securitySchemes:
- AdminBasicAuth:
- type: http
- scheme: basic
- description: The username for admin basic auth is `admin`. Defaults to abc123.
- AccessToken:
- type: http
- scheme: bearer
- description: 3rd party integration auth where a service user must provide an access token.
- UserToken:
- type: apiKey
- name: accessToken
- in: query
- description: A standard user must provide a valid access token.
- ModeratorUserToken:
- type: apiKey
- name: accessToken
- in: query
- description: A moderator user must provide a valid access token.
+ 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:
- UsersResponse:
- description: A collection of users.
+ Default:
+ description: Unexpected error
content:
application/json:
schema:
- $ref: '#/components/schemas/UserArray'
-
- FollowersResponse:
- description: A collection of users.
+ $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/FollowerArray'
-
- ClientsResponse:
- description: Successful response of an array of clients
+ $ref: '#/components/schemas/BaseAPIResponse'
+ '401':
+ description: Unauthorized
content:
- application/json:
- schema:
- $ref: '#/components/schemas/ClientArray'
- example:
- - connectedAt: '2020-10-06T23:20:44.588649-07:00'
- messageCount: 3
- userAgent: >-
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36
- (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36
- ipAddress: '172.217.164.110'
- geo:
- countryCode: US
- regionName: California
- timeZone: America/Los_Angeles
- user:
- id: yklw5Imng
- displayName: awesome-pizza
- displayColor: 42
- createdAt: '2021-07-08T20:21:25.303402404-07:00'
- previousNames: 'awesome-pizza,coolPerson23'
-
- LogsResponse:
- description: Response of server log entries
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/LogEntryArray'
- examples:
- success:
- summary: Logs returned
- value:
- [
- {
- 'message': 'Owncast v0.0.0-localdev (unknown)',
- 'level': 'info',
- 'time': '2020-10-29T18:35:34.422386-07:00',
- },
- {
- 'message': 'Web server running on port: 8080',
- 'level': 'info',
- 'time': '2020-10-29T18:35:35.011731-07:00',
- },
- {
- 'message': 'RTMP server is listening for incoming stream on port: 1935',
- 'level': 'info',
- 'time': '2020-10-29T18:35:35.011823-07:00',
- },
- ]
-
- BasicResponse:
- description: Operation Success/Failure Response
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BasicResponse'
- examples:
- success:
- summary: Operation succeeded.
- value:
- {
- 'success': true,
- 'message': 'context specific success message',
- }
- failure:
- summary: Operation failed.
- value:
- {
- 'success': false,
- 'message': 'context specific failure message',
- }
-
-paths:
- /api/config:
- get:
- summary: Information
- description: The client configuration. Information useful for the user interface.
- tags: ['Server']
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InstanceDetails'
-
- /api/ping:
- get:
- summary: Mark the current viewer as active.
- description: For tracking viewer count, periodically hit the ping endpoint.
- tags: ['Server']
- responses:
- '200':
- description: 'Successful ping'
-
- /api/status:
- get:
- summary: Current Status
- description: This endpoint is used to discover when a server is broadcasting, the number of active viewers as well as other useful information for updating the user interface.
- tags: ['Server']
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: object
- properties:
- lastConnectTime:
- type: string
- nullable: true
- format: date-time
- overallMaxViewerCount:
- type: integer
- sessionMaxViewerCount:
- type: integer
- online:
- type: boolean
- viewerCount:
- type: integer
- lastDisconnectTime:
- type: string
- nullable: true
- format: date-time
- examples:
- online:
- value:
- lastConnectTime: '2020-10-03T21:36:22-05:00'
- lastDisconnectTime: null
- online: true
- overallMaxViewerCount: 420
- sessionMaxViewerCount: 12
- viewerCount: 7
-
- /api/customjavascript:
- get:
- summary: Custom Javascript to execute.
- description: Returns custom Javascript that was set in the Owncast admin to be run in the Owncast frontend.
- tags: ['Server']
- responses:
- '200':
- description: ''
- content:
- application/javascript:
- schema:
- type: string
- example: console.log("Hello World");
-
- /api/chat/register:
- post:
- summary: Register a chat user
- description: Register a user that returns an access token for accessing chat.
- tags: ['Chat']
- security:
- - UserToken: []
- requestBody:
- required: false
- content:
- application/json:
- schema:
- type: object
- properties:
- displayName:
- type: string
- description: Optionally provide a display name you want to assign to this user when registering.
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: object
- properties:
- id:
- type: string
- description: The new user's id.
- accessToken:
- type: string
- description: The access token used for accessing chat.
- displayName:
- type: string
- description: The user-facing name displayed for this user.
-
- /api/chat:
- get:
- summary: Chat Messages Backlog
- description: Used to get chat messages prior to connecting to the websocket.
- tags: ['Chat']
- security:
- - UserToken: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatMessageArray'
-
- /api/yp:
- get:
- summary: Yellow Pages Information
- description: Information to be used in the Yellow Pages service, a global directory of Owncast servers.
- tags: ['Server']
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- description:
- type: string
- logo:
- type: string
- nsfw:
- type: boolean
- tags:
- type: array
- items:
- type: string
- online:
- type: boolean
- viewerCount:
- type: integer
- overallMaxViewerCount:
- type: integer
- sessionMaxViewerCount:
- type: integer
- lastConnectTime:
- type: string
- nullable: true
- format: date-time
-
- /img/emoji/:
- get:
- parameters:
- - name: name
- in: path
- description: Emoji image name
- required: true
+ text/plain:
schema:
type: string
- example: test.svg
- summary: Get Emoji Image
- description: Get an emoji image.
- tags: ['Chat']
- responses:
- '200':
- description: 'Returns a single image'
-
- /api/emoji:
- get:
- summary: Get Custom Emoji
- description: Get a list of custom emoji that are supported in chat.
- tags: ['Chat']
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: array
- items:
- type: object
- properties:
- name:
- type: string
- description: The name of the Emoji
- emoji:
- type: string
- description: The relative path to the Emoji image file
- examples:
- default:
- value:
- items:
- - name: nicolas_cage_party
- emoji: /img/emoji/nicolas_cage_party.gif
- - name: parrot
- emoji: /img/emoji/parrot.gif
-
- /api/followers:
- get:
- summary: Get the public followers of this instance
- responses:
- '200':
- description: Followers
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Follower'
-
- /api/remotefollow:
- post:
- summary: Return the information needed to redirect a user to a fediverse server to perform a remote follow action.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- account:
- description: The fediverse username@server.tld account that wants to perform the remote follow action.
- type: string
- example: johnsmith@fediverse.biz
- responses:
- '200':
- description: Remote follow redirect details
- content:
- application/json:
- schema:
- type: object
- properties:
- redirectUrl:
- description: The URL the frontend should redirect to
- type: string
- example: https://fediverse.biz/authorize_interaction?uri=https://my.owncast.server/federation/user/streamer
-
- /api/chat/messagevisibility:
- post:
- summary: Update the visibility of chat messages.
- description: Pass an array of IDs you want to change the chat visibility of.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- visible:
- type: boolean
- description: Are these messages visible.
- idArray:
- type: array
- items:
- type: string
- description: IDs of the chat messages you wish to change the visibility of.
- tags: ['Moderation']
- security:
- - ModeratorUserToken: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/chat/users/setenabled:
- post:
- summary: Disable (block) or re-enable a chat user.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- description: User ID of the chat user you're changing.
- enabled:
- type: boolean
- description: State of this user. False to block/disable.
- tags: ['Moderation']
- security:
- - ModeratorUserToken: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/status:
- get:
- summary: 'Server status and broadcaster'
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: Server status and broadcaster details
- content:
- application/json:
- schema:
- type: object
- properties:
- broadcaster:
- type: object
- properties:
- remoteAddr:
- type: string
- time:
- type: string
- format: date-time
- streamDetails:
- type: object
- properties:
- width:
- type: integer
- height:
- type: integer
- frameRate:
- type: integer
- videoBitrate:
- type: integer
- videoCodec:
- type: string
- audioBitrate:
- type: integer
- audioCodec:
- type: string
- encoder:
- type: string
- online:
- type: boolean
- description: Is a stream currently active
- viewerCount:
- type: integer
- description: The current number of viewers
- sessionPeakViewerCount:
- type: integer
- description: The peak number of viewers this streaming session
- overallPeakViewerCount:
- type: integer
- description: The all-time peak number of viewers
- versionNumber:
- type: string
- description: The current version of the owncast software
- examples:
- connected:
- summary: 'Broadcaster Connected'
- value:
- broadcaster:
- remoteAddr: 172.217.164.110
- time: '2020-10-06T23:20:44.588649-07:00'
- streamDetails:
- width: 640
- height: 480
- frameRate: 24
- videoBitrate: 1500
- videoCodec: 'mp4a'
- audioBitrate: 256
- audioCodec: 'aac'
- encoder: 'obs-output module (libobs version 25.0.8)'
- online: true
- viewerCount: 3
- overallPeakViewerCount: 4
- sessionPeakViewerCount: 4
- versionNumber: '0.0.3'
-
- /api/admin/disconnect:
- post:
- summary: Disconnect Broadcaster
- description: Disconnect the active inbound stream, if one exists, and terminate the broadcast.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/yp/reset:
- post:
- summary: Reset your YP registration key.
- description: Used when there is a problem with your registration to the Owncast Directory via the YP APIs. This will reset your local registration key.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/chat/clients:
- get:
- summary: Return a list of currently connected clients
- description: Return a list of currently connected clients with optional geo details.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/ClientsResponse'
-
- /api/admin/users/disabled:
- get:
- summary: Return a list of currently connected clients
- description: Return a list of currently connected clients with optional geo details.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/UsersResponse'
-
- /api/admin/logs:
- get:
- summary: Return recent log entries
- description: Returns server logs.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/LogsResponse'
-
- /api/admin/logs/warnings:
- get:
- summary: Return recent warning and error logs.
- description: Return recent warning and error logs.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/LogsResponse'
-
- /api/admin/serverconfig:
- get:
- summary: Server Configuration
- description: Get the current configuration of the Owncast server.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: object
- properties:
- instanceDetails:
- $ref: '#/components/schemas/InstanceDetails'
- ffmpegPath:
- type: string
- description: The path to the copy of ffmpeg that this server is using.
- webServerPort:
- type: integer
- description: The port the public web server is listening on.
- rtmpServerPort:
- type: integer
- description: The port the inbound RTMP broadcast should be sent to.
- s3:
- $ref: '#/components/schemas/S3'
- videoSettings:
- type: object
- description: How the different variants of video streams are configured.
- properties:
- videoQualityVariants:
- type: array
- items:
- $ref: '#/components/schemas/StreamQuality'
- latencyLevel:
- type: integer
- description: The level of latency selected for streaming. Lower latency can create more buffering.
- yp:
- $ref: '#/components/schemas/YP'
-
- /api/admin/chat/messages:
- get:
- summary: Chat messages, unfiltered.
- description: Get a list of all chat messages with no filters applied.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: array
- items:
- type: object
- properties:
- user:
- $ref: '#/components/schemas/User'
- body:
- type: string
- description: Escaped HTML of the chat message content.
- id:
- type: string
- description: Unique ID of the chat message.
- visible:
- type: boolean
- description: 'Should chat message be visibly rendered.'
- timestamp:
- type: string
- format: date-time
-
- /api/admin/chat/messagevisibility:
- post:
- summary: Update the visibility of chat messages.
- description: Pass an array of IDs you want to change the chat visibility of.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- visible:
- type: boolean
- description: Are these messages visible.
- idArray:
- type: array
- items:
- type: string
- description: IDs of the chat messages you wish to change the visibility of.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/chat/users/setenabled:
- post:
- summary: Enable or disable a single user.
- description: Enable or disable a single user. Disabling will also hide all the user's chat messages.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- description: User ID to act upon.
- example: 'yklw5Imng'
- enabled:
- type: boolean
- description: Set the enabled state of this user.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/config/adminpass:
- post:
- summary: Set the admin password.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
-
- /api/admin/config/streamkeys:
- post:
- summary: Set the stream keys.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- $ref: '#/components/schemas/StreamKeyArray'
-
- /api/admin/config/pagecontent:
- post:
- summary: Set the custom page content.
- description: Set the custom page content using markdown.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: '# Welcome to my cool server!
I _hope_ you enjoy it.'
-
- /api/admin/config/streamtitle:
- post:
- summary: Set the stream title.
- description: Set the title of the currently streaming content.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: Streaming my favorite game, Desert Bus.
-
- /api/admin/config/name:
- post:
- summary: Set the server name.
- description: Set the name associated with your server. Often is your name, username or identity.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
-
- /api/admin/config/serversummary:
- post:
- summary: Set the server summary.
- description: Set the summary of your server's streaming content.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: The best in Desert Bus Streaming
-
- /api/admin/config/offlinemessage:
- post:
- summary: Set the offline message.
- description: Set the message that is displayed when a stream is not live.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: Come back on Friday at 2pm, I'll be streaming then.
-
- /api/admin/config/logo:
- post:
- summary: Set the server logo.
- description: Set the logo for your server. Path is relative to webroot.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: '/img/mylogo.png'
-
- /api/admin/config/tags:
- post:
- summary: Set the server tags.
- description: Set the tags displayed for your server and the categories you can show up in on the directory.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value:
- - games
- - music
- - streaming
-
- /api/admin/config/ffmpegpath:
- post:
- summary: Set the ffmpeg binary path
- description: Set the path for a specific copy of ffmpeg on your system.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: '/home/owncast/ffmpeg'
-
- /api/admin/config/webserverport:
- post:
- summary: Set the owncast web port.
- description: Set the port the owncast web server should listen on.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: 8080
-
- /api/admin/config/rtmpserverport:
- post:
- summary: Set the inbound rtmp server port.
- description: Set the port where owncast service will listen for inbound broadcasts.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: 1935
-
- /api/admin/config/nsfw:
- post:
- summary: Mark if your stream is not safe for work
- description: Mark if your stream can be consitered not safe for work. Used in different contexts, including the directory for filtering purposes.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: false
-
- /api/admin/config/directoryenabled:
- post:
- summary: Set if this server supports the Owncast directory.
- description: If set to true the server will attempt to register itself with the [Owncast Directory](https://directory.owncast.online). Off by default.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: true
-
- /api/admin/config/serverurl:
- post:
- summary: Set the public url of this owncast server.
- description: Set the public url of this owncast server. Used for the directory and optional integrations.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: https://live.mycoolserver.biz
-
- /api/admin/config/video/streamlatencylevel:
- post:
- summary: Set the latency level for the stream.
- description: Sets the latency level that determines how much video is buffered between the server and viewer. Less latency can end up with more buffering.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- description: The latency level
- type: integer
- example:
- value: 4
-
- /api/admin/config/video/streamoutputvariants:
- post:
- summary: Set the configuration of your stream output.
- description: Sets the detailed configuration for all of the stream variants you support.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value:
- - framerate: 30
- videoPassthrough: false
- videoBitrate: 1800
- cpuUsageLevel: 2
- audioPassthrough: true
- - framerate: 24
- videoPassthrough: false
- videoBitrate: 1000
- cpuUsageLevel: 3
- audioPassthrough: true
-
- /api/admin/config/video/codec:
- post:
- summary: Set the video codec.
- description: Sets the specific video codec that will be used for video encoding. Some codecs will support hardware acceleration. Not all codecs will be supported for all systems.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- description: The video codec to change to.
- type: string
- example:
- value: libx264
-
- /api/admin/config/s3:
- post:
- summary: Set your storage configuration.
- description: Sets your S3 storage provider configuration details to enable external storage.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value:
- enabled: true
- endpoint: https://s3.us-west-000.backblazeb2.com
- accessKey: e1ac500y7000500047156bd060
- secret: 'H8FH8eSxM2K/S42CUg5K000Tt4WY2fI'
- bucket: 'video'
- region: us-west-000
-
- /api/admin/config/socialhandles:
- post:
- summary: Set your social handles.
- description: Sets the external links to social networks and profiles.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value:
- - platform: github
- url: https://github.com/owncast/owncast
- - platform: mastodon
- url: https://mastodon.social/@gabek
-
- /api/admin/config/customstyles:
- post:
- summary: Custom CSS styles to be used in the web front endpoints.
- description: Save a string containing CSS to be inserted in to the web frontend page.
- tags: ['Admin']
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: 'body { color: orange; background: black; }'
-
- /api/admin/config/customjavascript:
- post:
- summary: Custom Javascript to be inserted into the frontend
- description: Save a string containing Javascript to be inserted in to the web frontend page.
- tags: ['Admin']
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/javascript:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: console.log('Hello world.');
-
- /api/admin/config/appearance:
- post:
- summary: Save a map of variables and values to be used in the frontend.
- description: These values will override the default values in the frontend.
- tags: ['Admin']
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: object
- example:
- value:
- theme-color-components-primary-button-background: '#ff0000'
- theme-color-components-chat-background: '#000000'
-
- /api/admin/viewersOverTime:
- get:
- summary: Viewers Over Time
- description: Get the tracked viewer count over the collected period.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- examples:
- default:
- value:
- - time: '2020-10-03T21:41:00.381996-05:00'
- value: 50
- - time: '2020-10-03T21:42:00.381996-05:00'
- value: 52
-
- /api/admin/hardwarestats:
- get:
- summary: Hardware Stats
- description: 'Get the CPU, Memory and Disk utilization levels over the collected period.'
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: object
- properties:
- cpu:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- memory:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- disk:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- examples:
- default:
- value:
- cpu:
- - time: '2020-10-03T21:41:00.381996-05:00'
- value: 23
- - time: '2020-10-03T21:42:00.381996-05:00'
- value: 27
- - time: '2020-10-03T21:43:00.381996-05:00'
- value: 22
- memory:
- - time: '2020-10-03T21:41:00.381996-05:00'
- value: 65
- - time: '2020-10-03T21:42:00.381996-05:00'
- value: 66
- - time: '2020-10-03T21:43:00.381996-05:00'
- value: 72
- disk:
- - time: '2020-10-03T21:41:00.381996-05:00'
- value: 11
- - time: '2020-10-03T21:42:00.381996-05:00'
- value: 11
- - time: '2020-10-03T21:43:00.381996-05:00'
- value: 11
-
- /api/admin/config/hideviewercount:
- post:
- summary: Enable or disable showing the viewer count.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BooleanValue'
-
- /api/admin/config/federation/enable:
- post:
- summary: Enable or disable federated social features.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BooleanValue'
-
- /api/admin/config/federation/private:
- post:
- summary: Enable or disable private federation mode.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BooleanValue'
-
- /api/admin/config/federation/showengagement:
- post:
- summary: Enable or disable Federation activity showing in chat.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BooleanValue'
-
- /api/admin/config/federation/username:
- post:
- summary: Set the username you are seen as on the fediverse.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
-
- /api/admin/config/federation/livemessage:
- post:
- summary: Set the message sent to the fediverse when this instance goes live.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
-
- /api/admin/config/federation/blockdomains:
- post:
- summary: Save a collection of domains that should be ignored on the fediverse.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value:
- - guns.eagles.biz
- - freedom.us
-
- /api/admin/federation/send:
- post:
- summary: Manually send a message to the fediverse from this instance.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: I'm still streaming, you should come visit.
-
- /api/admin/federation/actions:
- get:
- summary: Get a list of accepted actions that took place on the Fediverse.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: Actions previously handled.
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/FederatedAction'
-
- /api/admin/emoji/upload:
- post:
- summary: Upload a single emoji image.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/emoji/delete:
- post:
- summary: Delete a single emoji image.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- example:
- name: test.svg
-
- /api/integrations/streamtitle:
- post:
- summary: Set the stream title.
- description: Set the title of the currently streaming content.
- tags: ['Integrations']
- security:
- - AccessToken: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigValue'
- example:
- value: Streaming my favorite game, Desert Bus.
-
- /api/integrations/chat/send:
- post:
- summary: Send a chat message.
- description: Send a chat message on behalf of a 3rd party integration, bot or service.
- tags: ['Integrations']
- security:
- - AccessToken: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- body:
- type: string
- description: The message text that will be sent as the user.
- responses:
- '200':
- description: Message was sent.
- content:
- application/json:
- schema:
- type: object
- properties:
- success:
- type: boolean
- example: true
- message:
- type: string
- example: sent
-
- /api/integrations/chat/system:
- post:
- summary: Send a system chat message.
- description: Send a chat message on behalf of the system/server.
- tags: ['Integrations']
- security:
- - AccessToken: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- body:
- type: string
- description: The message text that will be sent as the system user.
- responses:
- '200':
- description: Message was sent.
- content:
- application/json:
- schema:
- type: object
- properties:
- success:
- type: boolean
- example: true
- message:
- type: string
- example: sent
-
- /api/integrations/chat/action:
- post:
- summary: Send a chat action.
- description: Send an action that took place to the chat.
- tags: ['Integrations']
- security:
- - AccessToken: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- required:
- - 'body'
- properties:
- body:
- type: string
- description: The message text that will be sent as the system user.
- example: 'rolled a 15 on the dice'
- author:
- type: string
- description: An optional user name that performed the action.
- example: 'JohnSmith'
- responses:
- '200':
- description: Message was sent.
- content:
- application/json:
- schema:
- type: object
- properties:
- success:
- type: boolean
- example: true
- message:
- type: string
- example: sent
-
- /api/integrations/chat/system/client/{clientId}:
- post:
- summary: Send system chat message to a client, identified by its ClientId
- description: Send a chat message on behalf of the system/server to a single client.
- tags: ['Integrations']
- security:
- - AccessToken: []
- parameters:
- - name: clientId
- in: path
- description: Client ID (a unique numeric Id, identifying the client connection)
- required: true
- schema:
- type: integer
- format: int64
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- required:
- - 'body'
- properties:
- body:
- type: string
- description: The message text that will be sent to the client.
- example: 'What a beautiful day. I love it'
- responses:
- '200':
- description: Message was sent.
- content:
- application/json:
- schema:
- type: object
- properties:
- success:
- type: boolean
- example: true
- messages:
- type: string
- example: sent
- '500':
- description: Message was not sent to the client
- content:
- application/json:
- schema:
- type: object
- properties:
- error:
- type: string
- description: message explaining what went wrong sending the message to the client
-
- /api/admin/accesstokens/create:
- post:
- summary: Create an access token.
- description: Create a single access token that has access to the access scopes provided.
- tags: ['Integrations']
- security:
- - AdminBasicAuth: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- description: The human-readable name to give this access token.
- scopes:
- type: array
- items:
- type: string
-
- responses:
- '200':
- description: Token was created.
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- example: your new token
- token:
- type: string
- example: 'zG2xO-mHTFnelCp5xaIkYEFWcPhoOswOSRmFC1BkI='
-
- /api/admin/accesstokens/delete:
- post:
- summary: Delete an access token.
- description: Delete a single access token.
- tags: ['Integrations']
- security:
- - AdminBasicAuth: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- token:
- type: string
- description: The token to delete
-
- responses:
- '200':
- description: Token was deleted.
- content:
- application/json:
- schema:
- type: object
- properties:
- success:
- type: boolean
- example: true
- message:
- type: string
- example: deleted token
-
- /api/admin/accesstokens:
- get:
- summary: Return all access tokens.
- description: Return all of the available access tokens.
- tags: ['Integrations']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: Tokens are returned
- content:
- application/json:
- schema:
- type: array
- items:
- type: string
-
- /api/admin/webhooks:
- get:
- summary: Return all webhooks.
- description: Return all of the configured webhooks for external events.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- description: Webhooks are returned
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Webhook'
-
- /api/admin/config/externalactions:
- post:
- summary: Set external action URLs.
- description: Set a collection of external action URLs that are displayed in the UI.
- tags: ['Admin', 'Integrations']
- security:
- - AdminBasicAuth: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: array
- items:
- type: object
- properties:
- url:
- type: string
- description: URL of the external action content.
- title:
- type: string
- description: The title to put on the external action button.
- description:
- type: string
- description: Optional additional description to display in the UI.
- icon:
- type: string
- description: The URL to an image to place on the external action button.
- color:
- type: string
- description: Optional color to use for drawing the action button.
- openExternally:
- type: boolean
- description: If set this action will open in a new browser tab instead of an internal modal.
- responses:
- '200':
- description: Actions have been updated.
-
- /api/admin/webhooks/delete:
- post:
- summary: Delete a single webhook.
- description: Delete a single webhook by its ID.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- id:
- type: string
- description: The webhook id to delete
- responses:
- '200':
- description: Webhook is deleted
-
- /api/admin/webhooks/create:
- post:
- summary: Create a webhook.
- description: Create a single webhook that acts on the requested events.
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- properties:
- url:
- type: string
- description: The url to post the events to.
- events:
- description: The events to be notified about.
- type: array
- items:
- type: string
-
- responses:
- '200':
- description: Token was created.
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- example: your new token
- token:
- type: string
- example: 'zG2xO-mHTFnelCp5xaIkYEFWcPhoOswOSRmFC1BkI='
-
- /api/integrations/clients:
- get:
- summary: Return a list of currently connected clients
- description: Return a list of currently connected clients with optional geo details.
- tags: ['Integrations']
- security:
- - AccessToken: []
- responses:
- '200':
- $ref: '#/components/responses/ClientsResponse'
-
- /api/integrations/chat:
- get:
- summary: Historical Chat Messages
- description: Used to get the backlog of chat messages.
- tags: ['Integrations']
- security:
- - AccessToken: []
- responses:
- '200':
- description: ''
- content:
- application/json:
- schema:
- type: array
- items:
- type: object
- properties:
- user:
- $ref: '#/components/schemas/User'
- body:
- type: string
- description: Escaped HTML of the chat message content.
- id:
- type: string
- description: Unique ID of the chat message.
- visible:
- type: boolean
- description: 'Should chat message be visibly rendered.'
- timestamp:
- type: string
- format: date-time
-
- /api/integrations/chat/messagevisibility:
- post:
- summary: Update the visibility of chat messages.
- description: Pass an array of IDs you want to change the chat visibility of.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- visible:
- type: boolean
- description: Are these messages visible.
- idArray:
- type: array
- items:
- type: string
- description: IDs of the chat messages you wish to change the visibility of.
- tags: ['Integrations']
- security:
- - AccessToken: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/chat/users/setmoderator:
- post:
- summary: Set moderator privileges on a chat users.
- description: Give a chat user ID and be able to grant or remove moderator privileges to this user.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- description: User ID of the chat user you want to change moderation status of.
- example: xJ84_48Ghj
- isModerator:
- type: boolean
- description: The moderator status of this user.
- example: true
- tags: ['Admin', 'Moderation']
- security:
- - AdminBasicAuth: []
- responses:
- '200':
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/chat/users/moderators:
- get:
- tags: ['Admin', 'Moderation']
- security:
- - AdminBasicAuth: []
- summary: Get a list of chat moderator users.
- responses:
- '200':
- description: List of moderators
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/User'
-
- /api/moderation/chat/user/:
- get:
- tags: ['Moderation']
- parameters:
- - name: name
- in: path
- description: User ID
- required: true
+ '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
- example: USER-ID
- responses:
- '200':
- description: User
- content:
- application/json:
- schema:
- type: object
- properties:
- user:
- $ref: '#/components/schemas/User'
- connectClients:
- type: array
- items:
- $ref: '#/components/schemas/Client'
- messages:
- $ref: '#/components/schemas/ChatMessageArray'
+ '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'
- /api/admin/followers:
- get:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: Get the followers of this instance
- responses:
- '200':
- description: Followers
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Follower'
+ 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
- /api/admin/followers/pending:
- get:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: Get a list of follow requests that are pending.
- responses:
- '200':
- description: Followers
- $ref: '#/components/schemas/FollowerArray'
+ securitySchemes:
+ BasicAuth:
+ type: http
+ scheme: basic
+ BearerAuth:
+ type: http
+ scheme: bearer
- /api/admin/followers/blocked:
- get:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: Get a list of follow requests that have been blocked/rejected.
- responses:
- '200':
- description: Follower requests that have been rejected or blocked.
- $ref: '#/components/schemas/FollowerArray'
-
- /api/admin/followers/approve:
- post:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: Approve a pending follow request.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- actorIRI:
- type: string
- description: The requestor's remote IRI used to identify the user.
- responses:
- '200':
- description: The request has been successfully approved.
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/config/chat/suggestedusernames:
- post:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: A list of names to select from randomly for new chat users.
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- type: string
- responses:
- '200':
- description: The list of default names have been updated.
- $ref: '#/components/responses/BasicResponse'
-
- /api/admin/prometheus:
- get:
- tags: ['Admin']
- security:
- - AdminBasicAuth: []
- summary: Return Prometheus-compatible scraper metrics.
- responses:
- '200':
- description: Prometheus-compatible scraper values.
+tags:
+ - name: External
+ description: |-
+ These APIs are specifically exposed for building third party applications or tooling. They use auth tokens to authenticate and are designed to be stable and reliable.
+ - name: Internal
+ description: |-
+ These APIs are used internally for the operation of the application. They should not be used by third party clients or tooling, as they may require sharing your admin password, and additionally may change at any time.
+ - name: Auth
+ description: Authentication API
+ - name: Chat
+ description: APIs related to operating the chat system.
+ - name: Objects
+ description: Object definitions
+ - name: Video
+ description: Video API
+ - name: Notifications
+ description: Notification API
+ - name: Social
+ description: Social API
diff --git a/spec/openapi.yaml b/spec/openapi.yaml
deleted file mode 100644
index 2293ee037..000000000
--- a/spec/openapi.yaml
+++ /dev/null
@@ -1,4413 +0,0 @@
-openapi: 3.1.0
-
-info:
- version: 0.2.0
- title: Owncast APIs
- description: |-
- Internal
- The APIs required to make the Owncast web interface and internal functionality work. These APIs will never reach stability and will always change as Owncast features and functionality change. This means these endpoints are not good options to build your own tooling and features on top of. You can, however, of course can if that risk is acceptable to you.
-
- Admin
- The APIs used to configure the Owncast server, as well as power the web admin interface. These APIs are protected by the admin password, using HTTP Basic authentication. They should not be used by external tools or integrations as it would require you to give your admin password to a third party.
- contact:
- name: Gabe Kangas
- email: gabek@real-ity.com
- url: 'http://owncast.online'
- license:
- url: 'https://github.com/owncast/owncast/blob/develop/LICENSE'
- name: MIT
-servers:
- - url: 'http://localhost:8080/api'
- description: Localhost port 8080
-
-paths:
- /status:
- get:
- summary: Get the status of the server
- operationId: GetStatus
- tags: ['Internal']
- responses:
- '200':
- description: Successful response
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Status'
- /emoji:
- get:
- summary: Get list of custom emojis supported in the chat
- operationId: GetCustomEmojiList
- tags: ['Internal', 'Chat']
- responses:
- '200':
- description: List of valid emojis
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Emojis'
- '500':
- $ref: '#/components/responses/500'
- /chat:
- get:
- summary: Gets a list of chat messages
- operationId: GetChatMessages
- tags: ['Internal', 'Chat']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- responses:
- '200':
- description: List of chat messages
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatMessages'
- '401':
- $ref: '#/components/responses/401'
- '501':
- $ref: '#/components/responses/501'
- /chat/register:
- post:
- summary: Registers an anonymous chat user
- operationId: RegisterAnonymousChatUser
- tags: ['Internal', 'Chat']
- parameters:
- - in: header
- name: X-Forwarded-User
- schema:
- type: string
- required: false
- requestBody:
- description: The display name of the new user
- required: false
- content:
- application/json:
- schema:
- type: object
- properties:
- displayName:
- type: string
- responses:
- '200':
- description: Anonymous user information
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AnonymousUser'
- '400':
- $ref: '#/components/responses/400'
- options:
- operationId: RegisterAnonymousChatUserOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204Options'
- /chat/messagevisibility:
- post:
- summary: Update chat message visibility
- operationId: UpdateMessageVisibility
- tags: ['Internal', 'Chat']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/MessageVisibilityUpdate'
- responses:
- '200':
- description: Message visibility updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- default:
- $ref: '#/components/responses/Default'
- /chat/users/setenabled:
- post:
- summary: Enable/disable a user
- operationId: UpdateUserEnabled
- tags: ['Internal', 'Chat']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- enabled:
- type: boolean
- responses:
- '200':
- description: User status has been updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- default:
- $ref: '#/components/responses/Default'
- /config:
- get:
- summary: Get the web config
- operationId: GetWebConfig
- tags: ['Internal']
- responses:
- '200':
- description: The current web config
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/WebConfig'
- '500':
- $ref: '#/components/responses/500'
- /yp:
- get:
- summary: Get the YP protocol data
- operationId: GetYPResponse
- tags: ['Internal']
- responses:
- '200':
- description: The current YP protocol configuration
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/YPDetails'
- '404':
- $ref: '#/components/responses/404'
- /socialplatforms:
- get:
- summary: Get all social platforms
- operationId: GetAllSocialPlatforms
- tags: ['Internal']
- responses:
- '200':
- description: The list of social platforms
- content:
- application/json:
- schema:
- type: object
- additionalProperties:
- $ref: '#/components/schemas/SocialHandle'
- '500':
- $ref: '#/components/responses/500'
- /video/variants:
- get:
- summary: Get a list of video variants available
- operationId: GetVideoStreamOutputVariants
- tags: ['Internal', 'Video']
- responses:
- '200':
- description: List of available video variants
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/VideoVariant'
- /ping:
- get:
- summary: Tell the backend you're an active viewer
- operationId: Ping
- tags: ['Internal', 'Video']
- responses:
- '200':
- description: Added as an active viewer
- /remotefollow:
- post:
- summary: Request remote follow
- operationId: RemoteFollow
- tags: ['Internal', 'Social']
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- account:
- type: string
- responses:
- '200':
- description: Contains redirect URL remote follow follow
- content:
- application/json:
- schema:
- type: object
- properties:
- redirectUrl:
- type: string
- '400':
- $ref: '#/components/responses/400'
- /followers:
- get:
- summary: Gets the list of followers
- operationId: GetFollowers
- tags: ['Internal', 'Social']
- parameters:
- - $ref: '#/components/parameters/Offset'
- - $ref: '#/components/parameters/Limit'
- responses:
- '200':
- description: Paginated follower count
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PaginatedFollowers'
- '400':
- $ref: '#/components/responses/400'
- /metrics/playback:
- post:
- summary: Save video playback metrics for future video health recording
- operationId: ReportPlaybackMetrics
- tags: ['Internal']
- requestBody:
- description: Video metrics to record
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PlaybackMetrics'
- responses:
- '200':
- description: Metrics successfully recorded
- '400':
- $ref: '#/components/responses/400'
- /notifications/register:
- post:
- summary: Register for notifications
- operationId: RegisterForLiveNotifications
- tags: ['Internal']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- requestBody:
- description: Information for notification
- content:
- application/json:
- schema:
- type: object
- properties:
- channel:
- type: string
- description: Name of notification channel
- destination:
- type: string
- description: Target of the notification in the channel
- responses:
- '200':
- description: Successfully added notification channel
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- /admin/status:
- get:
- summary: Get current inboard broadcaster
- operationId: StatusAdmin
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Gives the status of the system
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AdminStatus'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: StatusAdminOptions
- tags: ['Objects']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/disconnect:
- get:
- summary: Disconnect inbound stream
- operationId: DisconnectInboundConnection
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Contains information about disconnection status
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: DisconnectInboundConnectionOptions
- tags: ['Objects', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/serverconfig:
- get:
- summary: Get the current server config
- operationId: GetServerConfig
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Current server config
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AdminServerConfig'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetServerConfigOptions
- tags: ['Objects']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/viewersOverTime:
- get:
- summary: Get viewer count over time
- operationId: GetViewersOverTime
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- parameters:
- - in: query
- name: windowStart
- description: Start date in unix time
- schema:
- type: string
- responses:
- '200':
- description: Viewer count over time
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetViewersOverTimeOptions
- tags: ['Objects']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/viewers:
- get:
- summary: Get active viewers
- operationId: GetActiveViewers
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of active viewers
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Viewer'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetActiveViewersOptions
- tags: ['Objects', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/hardwarestats:
- get:
- summary: Get the current hardware stats
- operationId: GetHardwareStats
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Current hardware stats
- content:
- application/json:
- schema:
- allOf:
- - $ref: '#/components/schemas/StreamHealthOverview'
- - $ref: '#/components/schemas/CollectedMetrics'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetHardwareStatsOptions
- tags: ['Objects']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/clients:
- get:
- summary: Get a detailed list of currently connected chat clients
- operationId: GetConnectedChatClients
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of chat clients
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatClients'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetConnectedChatClientsOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/messages:
- get:
- summary: Get all chat messages for the admin, unfiltered
- operationId: GetChatMessagesAdmin
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of chat messages for the admin
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatMessages'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetChatMessagesAdminOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/messagevisibility:
- post:
- summary: Update visibility of chat messages
- operationId: UpdateMessageVisibilityAdmin
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/MessageVisibilityUpdate'
- responses:
- '200':
- description: Messages updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: UpdateMessageVisibilityAdminOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/setenabled:
- post:
- summary: Enable or disable a user
- operationId: UpdateUserEnabledAdmin
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- enabled:
- type: boolean
- responses:
- '200':
- description: Successfully updated the user
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: UpdateUserEnabledAdminOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/disabled:
- get:
- summary: Get a list of disabled users
- operationId: GetDisabledUsers
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of disabled users
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Users'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetDisabledUsersOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/ipbans/create:
- post:
- summary: Ban an IP address
- operationId: BanIPAddress
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: IP was successfully banned
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: BanIPAddressOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/ipbans/remove:
- post:
- summary: Remove an IP ban
- operationId: UnbanIPAddress
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AdminConfigValue'
- responses:
- '200':
- description: IP ban was successfully removed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: UnbanIPAddressOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/ipbans:
- get:
- summary: Get all banned IP addresses
- operationId: GetIPAddressBans
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of banned IP addresses
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/IPAddress'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetIPAddressBansOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/setmoderator:
- post:
- summary: Set moderator status for a user
- operationId: UpdateUserModerator
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- userId:
- type: string
- isModerator:
- type: boolean
- responses:
- '200':
- description: Successfully update the moderator status of the user
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: UpdateUserModeratorOptions
- tags: ['Objects', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/chat/users/moderators:
- get:
- summary: Get a list of moderator users
- operationId: GetModerators
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of moderator users
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Users'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetModeratorsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/logs:
- get:
- summary: Get all logs
- operationId: GetLogs
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of logs
- headers:
- 'Access-Control-Allow-Origin':
- $ref: '#/components/headers/Access-Control-Allow-Origin'
- 'Access-Control-Allow-Credentials':
- $ref: '#/components/headers/Access-Control-Allow-Credentials'
- 'Access-Control-Allow-Headers':
- $ref: '#/components/headers/Access-Control-Allow-Headers'
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/AdminLog'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetLogsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/logs/warnings:
- get:
- summary: Get warning/error logs
- operationId: GetWarnings
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of warnings and errors
- headers:
- 'Access-Control-Allow-Origin':
- $ref: '#/components/headers/Access-Control-Allow-Origin'
- 'Access-Control-Allow-Credentials':
- $ref: '#/components/headers/Access-Control-Allow-Credentials'
- 'Access-Control-Allow-Headers':
- $ref: '#/components/headers/Access-Control-Allow-Headers'
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/AdminLog'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetWarningsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/followers:
- get:
- summary: Get followers
- operationId: GetFollowersAdmin
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- parameters:
- - $ref: '#/components/parameters/Offset'
- - $ref: '#/components/parameters/Limit'
- responses:
- '200':
- description: Paginated follower count
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PaginatedFollowers'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetFollowersAdminOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/followers/pending:
- get:
- summary: Get a list of pending follow requests
- operationId: GetPendingFollowRequests
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of pending followers
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Followers'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetPendingFollowRequestsOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/followers/blocked:
- get:
- summary: Get a list of rejected or blocked follows
- operationId: GetBlockedAndRejectedFollowers
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of rejected or blocked follows
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Followers'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetBlockedAndRejectedFollowersOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/followers/approve:
- post:
- summary: Set the following state of a follower or follow request
- operationId: ApproveFollower
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- actorIRI:
- type: string
- approved:
- type: boolean
- responses:
- '200':
- description: List of rejected or blocked follows
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ApproveFollowerOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/emoji/upload:
- post:
- summary: Upload custom emoji
- operationId: UploadCustomEmoji
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- data:
- description: Base 64 encoded image data
- type: string
- responses:
- '200':
- description: Emoji has been uploaded
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: UploadCustomEmojiOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/emoji/delete:
- post:
- summary: Delete custom emoji
- operationId: DeleteCustomEmoji
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- responses:
- '200':
- description: Emoji has been deleted
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: DeleteCustomEmojiOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/adminpass:
- post:
- summary: Change the current admin password
- operationId: SetAdminPassword
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Admin password has been updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetAdminPasswordOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/streamkeys:
- post:
- summary: Set an array of valid stream keys
- operationId: SetStreamKeys
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- $ref: '#/components/schemas/StreamKey'
- responses:
- '200':
- description: Stream keys have been updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetStreamKeysOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/pagecontent:
- post:
- summary: Change the extra page content in memory
- operationId: SetExtraPageContent
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Page content has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetExtraPageContentOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/streamtitle:
- post:
- summary: Change the stream title
- operationId: SetStreamTitle
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Stream title has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetStreamTitleOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/name:
- post:
- summary: Change the server name
- operationId: SetServerName
- tags: ['Objects', 'Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Server name has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetServerNameOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/serversummary:
- post:
- summary: Change the server summary
- operationId: SetServerSummary
- tags: ['Objects', 'Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Server summary has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetServerSummaryOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/offlinemessage:
- post:
- summary: Change the offline message
- operationId: SetCustomOfflineMessage
- tags: ['Objects', 'Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Offline message has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetCustomOfflineMessageOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/welcomemessage:
- post:
- summary: Change the welcome message
- operationId: SetServerWelcomeMessage
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Welcome message has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetServerWelcomeMessageOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/disable:
- post:
- summary: Disable chat
- operationId: SetChatDisabled
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Chat has been disabled
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetChatDisabledOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/joinmessagesenabled:
- post:
- summary: Enable chat for user join messages
- operationId: SetChatJoinMessagesEnabled
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: User join messages has been enabled
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetChatJoinMessagesEnabledOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/establishedusermode:
- post:
- summary: Enable/disable chat established user mode
- operationId: SetEnableEstablishedChatUserMode
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Chat established user mode updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetEnableEstablishedChatUserModeOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/forbiddenusernames:
- post:
- summary: Set chat usernames that are not allowed
- operationId: SetForbiddenUsernameList
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- type: string
- responses:
- '200':
- description: Forbidden usernames updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetForbiddenUsernameListOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/suggestedusernames:
- post:
- summary: Set the suggested chat usernames that will be assigned automatically
- operationId: SetSuggestedUsernameList
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- type: string
- responses:
- '200':
- description: Suggested usernames updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetSuggestedUsernameListOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/spamprotectionenabled:
- post:
- summary: Set spam protection enabled
- operationId: SetChatSpamProtectionEnabled
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Spam protection enabled updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetChatSpamProtectionEnabledOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/chat/slurfilterenabled:
- post:
- summary: Set slur filter enabled
- operationId: SetChatSlurFilterEnabled
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Slur filter enabled updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetChatSlurFilterEnabledOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/video/codec:
- post:
- summary: Set video codec
- operationId: SetVideoCodec
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Video codec updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetVideoCodecOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/video/streamlatencylevel:
- post:
- summary: Set the number of video segments and duration per segment in a playlist
- operationId: SetStreamLatencyLevel
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Stream latency updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetStreamLatencyLevelOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/video/streamoutputvariants:
- post:
- summary: Set an array of video output configurations
- operationId: SetStreamOutputVariants
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- $ref: '#/components/schemas/StreamOutputVariant'
- responses:
- '200':
- description: Stream Output Variants updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetStreamOutputVariantsOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/appearance:
- post:
- summary: Set style/color/css values
- operationId: SetCustomColorVariableValues
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: object
- additionalProperties:
- type: string
- responses:
- '200':
- description: Appearance updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetCustomColorVariableValuesOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/logo:
- post:
- summary: Update logo
- operationId: SetLogo
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Logo updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetLogoOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/tags:
- post:
- summary: Update server tags
- operationId: SetTags
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Tags updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetTagsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/ffmpegpath:
- post:
- summary: Update FFMPEG path
- operationId: SetFfmpegPath
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Path updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFfmpegPathOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/webserverport:
- post:
- summary: Update server port
- operationId: SetWebServerPort
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Port updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetWebServerPortOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/webserverip:
- post:
- summary: Update server IP address
- operationId: SetWebServerIP
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: IP Address updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetWebServerIPOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/rtmpserverport:
- post:
- summary: Update RTMP post
- operationId: SetRTMPServerPort
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: RTMP port updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetRTMPServerPortOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/sockethostoverride:
- post:
- summary: Update websocket host override
- operationId: SetSocketHostOverride
- tags: ['Internal', 'Admin', 'Chat']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Websocket host override updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetSocketHostOverrideOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/videoservingendpoint:
- post:
- summary: Update custom video serving endpoint
- operationId: SetVideoServingEndpoint
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Video Serving Endpoint updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetVideoServingEndpointOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/nsfw:
- post:
- summary: Update NSFW marking
- operationId: SetNSFW
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: NSFW status updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetNSFWOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/directoryenabled:
- post:
- summary: Update directory enabled
- operationId: SetDirectoryEnabled
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Directory Enabled updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetDirectoryEnabledOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/socialhandles:
- post:
- summary: Update social handles
- operationId: SetSocialHandles
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- $ref: '#/components/schemas/SocialHandle'
- responses:
- '200':
- description: Social handles updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetSocialHandlesOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/s3:
- post:
- summary: Update S3 configuration
- operationId: SetS3Configuration
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- $ref: '#/components/schemas/S3Info'
- responses:
- '200':
- description: Directory Enabled updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetS3ConfigurationOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/serverurl:
- post:
- summary: Update server url
- operationId: SetServerURL
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Server URL updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetServerURLOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/externalactions:
- post:
- summary: Update external action links
- operationId: SetExternalActions
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- type: array
- items:
- $ref: '#/components/schemas/ExternalAction'
- responses:
- '200':
- description: External Action Links updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetExternalActionsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/customstyles:
- post:
- summary: Update custom styles
- operationId: SetCustomStyles
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Custom styles updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetCustomStylesOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/customjavascript:
- post:
- summary: Update custom JavaScript
- operationId: SetCustomJavascript
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Custom JavaScript updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetCustomJavascriptOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/hideviewercount:
- post:
- summary: Update hide viewer count
- operationId: SetHideViewerCount
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Hide viewer count updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetHideViewerCountOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/disablesearchindexing:
- post:
- summary: Update search indexing
- operationId: SetDisableSearchIndexing
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Search Indexing updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetDisableSearchIndexingOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/enable:
- post:
- summary: Enable/disable federation features
- operationId: SetFederationEnabled
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Federation features enabled/disabled
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationEnabledOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/private:
- post:
- summary: Set if federation activities are private
- operationId: SetFederationActivityPrivate
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Private status set
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationActivityPrivateOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/showengagement:
- post:
- summary: Set if fediverse engagement appears in chat
- operationId: SetFederationShowEngagement
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Federation engagement set
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationShowEngagementOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/username:
- post:
- summary: Set local federated username
- operationId: SetFederationUsername
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Federation username set
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationUsernameOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/livemessage:
- post:
- summary: Set federated go live message
- operationId: SetFederationGoLiveMessage
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Federation username set
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationGoLiveMessageOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/federation/blockdomains:
- post:
- summary: Set Federation blocked domains
- operationId: SetFederationBlockDomains
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Federation blocked domains set
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetFederationBlockDomainsOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/notifications/discord:
- post:
- summary: Configure Discord notifications
- operationId: SetDiscordNotificationConfiguration
- tags: ['Internal', 'Admin', 'Notifications']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- $ref: '#/components/schemas/DiscordNotificationConfiguration'
- responses:
- '200':
- description: Discord notification configuration updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetDiscordNotificationConfigurationOptions
- tags: ['Objects', 'Internal', 'Admin', 'Notifications']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/config/notifications/browser:
- post:
- summary: Configure Browser notifications
- operationId: SetBrowserNotificationConfiguration
- tags: ['Internal', 'Admin', 'Notifications']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- value:
- $ref: '#/components/schemas/BrowserNotificationConfiguration'
- responses:
- '200':
- description: Browser notification configuration updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SetBrowserNotificationConfigurationOptions
- tags: ['Objects', 'Internal', 'Admin', 'Notifications']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/webhooks:
- get:
- summary: Get all the webhooks
- operationId: GetWebhooks
- tags: ['Internal', 'Admin', 'Notifications']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: All webhooks
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Webhook'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetWebhooksOptions
- tags: ['Objects', 'Internal', 'Admin', 'Notifications']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/webhooks/delete:
- post:
- summary: Delete a single webhook
- operationId: DeleteWebhook
- tags: ['Internal', 'Admin', 'Notifications']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- id:
- type: integer
- responses:
- '200':
- description: Webhook successfully deleted
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: DeleteWebhookOptions
- tags: ['Objects', 'Internal', 'Admin', 'Notifications']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/webhooks/create:
- post:
- summary: Create a single webhook
- operationId: CreateWebhook
- tags: ['Internal', 'Admin', 'Notifications']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- url:
- type: string
- events:
- type: array
- items:
- $ref: '#/components/schemas/WebhookEventType'
- responses:
- '200':
- description: The new webhook
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Webhook'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: CreateWebhookOptions
- tags: ['Objects', 'Internal', 'Admin', 'Notifications']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/accesstokens:
- get:
- summary: Get all access tokens
- operationId: GetExternalAPIUsers
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: List of external API users
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/ExternalAPIUser'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetExternalAPIUsersOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/accesstokens/delete:
- post:
- summary: Delete a single external API user
- operationId: DeleteExternalAPIUser
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- token:
- type: string
- responses:
- '200':
- description: External API user successfully deleted
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: DeleteExternalAPIUserOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/accesstokens/create:
- post:
- summary: Create a single access token
- operationId: CreateExternalAPIUser
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- name:
- type: string
- scopes:
- type: array
- items:
- type: string
- responses:
- '200':
- description: The new external API user
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ExternalAPIUser'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: CreateExternalAPIUserOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/update/options:
- get:
- summary: Return the auto-update features that are supported for this instance
- operationId: AutoUpdateOptions
- tags: ['Internal', 'Admin']
- x-internal: true
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Current auto-update options
- content:
- application/json:
- schema:
- type: object
- properties:
- supportsUpdate:
- type: boolean
- canRestart:
- type: boolean
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: AutoUpdateOptionsOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/update/start:
- get:
- summary: Begin the auto-update
- operationId: AutoUpdateStart
- tags: ['Internal', 'Admin']
- x-internal: true
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Console output from update
- content:
- text/plain:
- schema:
- type: string
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: AutoUpdateStartOptions
- tags: ['Objects', 'Internal', 'Admin']
- x-internal: true
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/update/forcequit:
- get:
- summary: Force quit the server and restart it
- operationId: AutoUpdateForceQuit
- x-internal: true
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Server force restart has been ordered
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: AutoUpdateForceQuitOptions
- tags: ['Objects', 'Internal', 'Admin']
- x-internal: true
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/yp/reset:
- get:
- summary: Reset YP configuration
- operationId: ResetYPRegistration
- tags: ['Internal', 'Admin']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: YP Registration has been reset
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ResetYPRegistrationOptions
- tags: ['Objects', 'Internal', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/metrics/video:
- get:
- summary: Get video playback metrics
- operationId: GetVideoPlaybackMetrics
- tags: ['Internal', 'Admin', 'Video']
- security:
- - BasicAuth: []
- responses:
- '200':
- description: Video playback metrics
- content:
- application/json:
- schema:
- type: object
- properties:
- errors:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- qualityVariantChanges:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- highestLatency:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- medianLatency:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- lowestLatency:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- medianSegmentDownloadDuration:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- maximumSegmentDownloadDuration:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- minimumSegmentDownloadDuration:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- minPlayerBitrate:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- medianPlayerBitrate:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- maxPlayerBitrate:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- availableBitrates:
- type: array
- items:
- type: integer
- segmentLength:
- type: integer
- representation:
- type: integer
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetVideoPlaybackMetricsOptions
- tags: ['Objects', 'Internal', 'Admin', 'Video']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/prometheus:
- get:
- summary: Endpoint to interface with Prometheus
- description: |-
- This endpoint interfaces with the Prometheus metrics API.
-
- Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
- operationId: GetPrometheusAPI
- tags: ['Internal', 'Admin']
- post:
- summary: Endpoint to interface with Prometheus
- description: |-
- This endpoint interfaces with the Prometheus metrics API.
-
- Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
- operationId: PostPrometheusAPI
- tags: ['Internal', 'Admin']
- put:
- summary: Endpoint to interface with Prometheus
- description: |-
- This endpoint interfaces with the Prometheus metrics API.
-
- Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
- operationId: PutPrometheusAPI
- tags: ['Internal', 'Admin']
- delete:
- summary: Endpoint to interface with Prometheus
- description: |-
- This endpoint interfaces with the Prometheus metrics API.
-
- Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
- operationId: DeletePrometheusAPI
- tags: ['Internal', 'Admin']
- options:
- summary: Endpoint to interface with Prometheus
- description: |-
- This endpoint interfaces with the Prometheus metrics API.
-
- Learn more about it on the [Prometheus API docs](https://prometheus.io/docs/prometheus/latest/querying/api/)
- operationId: OptionsPrometheusAPI
- tags: ['Internal', 'Admin']
- /admin/federation/send:
- post:
- summary: Send a public message to the Fediverse from the server's user
- operationId: SendFederatedMessage
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Message sent
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SendFederatedMessageOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /admin/federation/actions:
- get:
- summary: Get a paginated list of federated activities
- operationId: GetFederatedActions
- tags: ['Internal', 'Admin', 'Social']
- security:
- - BasicAuth: []
- parameters:
- - $ref: '#/components/parameters/Offset'
- - $ref: '#/components/parameters/Limit'
- responses:
- '200':
- description: A paginated list of federated activities
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PaginatedFederatedActivity'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: GetFederatedActionsOptions
- tags: ['Objects', 'Internal', 'Admin', 'Social']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/system:
- post:
- summary: Send a system message to the chat
- operationId: SendSystemMessage
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- requestBody:
- description: The content of the system message
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/SystemMessage'
- responses:
- '200':
- description: Message sent successfully
- headers:
- 'Access-Control-Allow-Origin':
- $ref: '#/components/headers/Access-Control-Allow-Origin'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- '500':
- $ref: '#/components/responses/500'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SendSystemMessageOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/system/client/{clientId}:
- post:
- summary: Send a system message to a single client
- operationId: SendSystemMessageToConnectedClient
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- parameters:
- - in: path
- name: clientId
- required: true
- schema:
- type: integer
- description: The ID of the specified client
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/SystemMessage'
- responses:
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- '500':
- $ref: '#/components/responses/500'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SendSystemMessageToConnectedClientOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- parameters:
- - in: path
- name: clientId
- required: true
- schema:
- type: integer
- description: The ID of the specified client
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/user:
- post:
- deprecated: true
- summary: Send a user message to chat
- operationId: SendUserMessage
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- responses:
- '400':
- $ref: '#/components/responses/400'
- options:
- deprecated: true
- operationId: SendUserMessageOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/send:
- post:
- summary: Send a message to chat as a specific 3rd party bot/integration based on its access token
- operationId: SendIntegrationChatMessage
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UserMessage'
- responses:
- '200':
- description: Message sent successfully
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- '500':
- $ref: '#/components/responses/500'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SendIntegrationChatMessageOptions
- tags: ['Objects', 'External', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/action:
- post:
- summary: Send a user action to chat
- operationId: SendChatAction
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/SystemActionEvent'
- responses:
- '200':
- description: Action sent successfully
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- '500':
- $ref: '#/components/responses/500'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: SendChatActionOptions
- tags: ['Objects', 'Internal', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat/messagevisibility:
- post:
- summary: Hide chat message
- operationId: ExternalUpdateMessageVisibility
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/MessageVisibilityUpdate'
- responses:
- '200':
- description: Messages updated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ExternalUpdateMessageVisibilityOptions
- tags: ['Objects', 'External', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/streamtitle:
- post:
- summary: Stream title
- operationId: ExternalSetStreamTitle
- tags: ['External']
- security:
- - BearerAuth: []
- requestBody:
- $ref: '#/components/requestBodies/AdminConfigValue'
- responses:
- '200':
- description: Stream title has been changed
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ExternalSetStreamTitleOptions
- tags: ['Objects', 'External', 'Admin']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/chat:
- get:
- summary: Get chat history
- operationId: ExternalGetChatMessages
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- responses:
- '200':
- description: List of chat messages
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatMessages'
- '401':
- $ref: '#/components/responses/401'
- '501':
- $ref: '#/components/responses/501'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ExternalGetChatMessagesOptions
- tags: ['Objects', 'External', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /integrations/clients:
- get:
- summary: Connected clients
- operationId: ExternalGetConnectedChatClients
- tags: ['External', 'Chat']
- security:
- - BearerAuth: []
- responses:
- '200':
- description: List of chat clients
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ChatClients'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401BasicAuth'
- default:
- $ref: '#/components/responses/Default'
- options:
- operationId: ExternalGetConnectedChatClientsOptions
- tags: ['Objects', 'External', 'Admin', 'Chat']
- responses:
- '204':
- $ref: '#/components/responses/204'
- /moderation/chat/user/{userId}:
- get:
- summary: Get a user's details
- operationId: GetUserDetails
- tags: ['External', 'Chat']
- parameters:
- - in: path
- name: userId
- schema:
- type: string
- description: The ID of the user to find
- required: true
- - $ref: '#/components/parameters/AccessToken'
- responses:
- '200':
- description: User information
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ModerationUserDetails'
- '401':
- $ref: '#/components/responses/401'
- '404':
- $ref: '#/components/responses/404'
- default:
- $ref: '#/components/responses/Default'
- /auth/indieauth:
- post:
- summary: Begins auth flow
- operationId: StartIndieAuthFlow
- tags: ['Internal', 'Auth', 'Chat']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- authHost:
- type: string
- responses:
- '200':
- description: Authentication redirect
- content:
- application/json:
- schema:
- type: object
- properties:
- redirect:
- type: string
- format: url
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- default:
- $ref: '#/components/responses/Default'
- /auth/indieauth/callback:
- get:
- summary: Handle the redirect from an IndieAuth server to continue the auth flow
- operationId: HandleIndieAuthRedirect
- tags: ['Internal', 'Auth', 'Chat']
- parameters:
- - $ref: '#/components/parameters/IndieAuthState'
- - $ref: '#/components/parameters/IndieAuthCode'
- responses:
- '307':
- description: Redirected to home page
- '400':
- $ref: '#/components/responses/400'
- /auth/provider/indieauth:
- get:
- summary: Handles the IndieAuth auth endpoint
- operationId: HandleIndieAuthEndpointGet
- tags: ['Internal', 'Auth', 'Chat']
- security:
- - BasicAuth: []
- parameters:
- - $ref: '#/components/parameters/IndieAuthClientId'
- - $ref: '#/components/parameters/IndieAuthRedirectURI'
- - $ref: '#/components/parameters/IndieAuthCodeChallenge'
- - $ref: '#/components/parameters/IndieAuthState'
- - $ref: '#/components/parameters/IndieAuthCode'
- responses:
- '200':
- description: IndieAuth flow concluded
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/IndieAuthResponse'
- '307':
- description: Redirected to redirect URI
- '400':
- $ref: '#/components/responses/400'
- '500':
- $ref: '#/components/responses/500'
- post:
- summary: Handles IndieAuth from form submission
- operationId: HandleIndieAuthEndpointPost
- tags: ['Internal', 'Auth', 'Chat']
- requestBody:
- $ref: '#/components/requestBodies/IndieAuthEndpointForm'
- responses:
- '200':
- description: IndieAuth flow concluded
- content:
- application/json:
- schema:
- oneOf:
- - $ref: '#/components/schemas/IndieAuthResponse'
- - $ref: '#/components/schemas/IndieAuthServerProfileResponse'
- '400':
- $ref: '#/components/responses/400'
- /auth/fediverse:
- post:
- summary: Register a Fediverse OTP request
- operationId: RegisterFediverseOTPRequest
- tags: ['Internal', 'Auth', 'Chat']
- parameters:
- - $ref: '#/components/parameters/AccessToken'
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- account:
- type: string
- responses:
- '200':
- description: OTP sent
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- /auth/fediverse/verify:
- post:
- summary: Verify Fediverse OTP code
- operationId: VerifyFediverseOTPRequest
- tags: ['Internal', 'Auth', 'Chat']
- requestBody:
- content:
- application/json:
- schema:
- type: object
- properties:
- code:
- type: string
- responses:
- '200':
- description: OTP Verified
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '400':
- $ref: '#/components/responses/400'
- '403':
- $ref: '#/components/responses/403'
-
-components:
- schemas:
- Error:
- type: object
- description: Structure for an error response
- tags: ['Objects']
- properties:
- error:
- type: string
- BaseAPIResponse:
- type: object
- description: Simple API response
- tags: ['Objects']
- properties:
- message:
- type: string
- success:
- type: boolean
- Status:
- type: object
- description: Response for status
- tags: ['Objects']
- properties:
- serverTime:
- type: string
- lastConnectTime:
- type: string
- lastDisconnectTime:
- type: string
- versionNumber:
- type: string
- viewerCount:
- type: integer
- online:
- type: boolean
- Emojis:
- type: array
- items:
- $ref: '#/components/schemas/Emoji'
- Emoji:
- type: object
- description: Name and url for an emoji
- tags: ['Objects']
- properties:
- name:
- type: string
- description: The name of the emoji
- url:
- type: string
- description: URL for the emoji image
- AnonymousUser:
- type: object
- tags: ['Objects']
- properties:
- id:
- type: string
- accessToken:
- type: string
- displayName:
- type: string
- User:
- type: object
- tags: ['Objects']
- properties:
- createdAt:
- type: string
- disabledAt:
- type: string
- nameChangedAt:
- type: string
- id:
- type: string
- displayName:
- type: string
- previousNames:
- type: array
- items:
- type: string
- scopes:
- type: array
- items:
- type: string
- displayColor:
- type: integer
- isBot:
- type: boolean
- authenticated:
- type: boolean
- Users:
- type: array
- items:
- $ref: '#/components/schemas/User'
- Follower:
- type: object
- tags: ['Objects']
- properties:
- link:
- type: string
- description: The IRI of the remote actor.
- name:
- type: string
- description: The display name of the follower.
- username:
- type: string
- description: The account username of the remote actor.
- image:
- type: string
- description: The avatar image of the follower.
- timestamp:
- type: string
- description: When this follow request was created.
- disabledAt:
- type: string
- description: When this follower was rejected or disabled.
- Followers:
- type: array
- tags: ['Objects']
- items:
- $ref: '#/components/schemas/Follower'
- PaginatedFollowers:
- type: object
- tags: ['Objects']
- properties:
- total:
- type: integer
- results:
- $ref: '#/components/schemas/Followers'
- Event:
- type: object
- tags: ['Objects']
- properties:
- timestamp:
- type: string
- type:
- type: string
- id:
- type: string
- UserEvent:
- type: object
- tags: ['Objects']
- properties:
- user:
- $ref: '#/components/schemas/User'
- hiddenAt:
- type: string
- clientId:
- type: integer
- MessageEvent:
- type: object
- tags: ['Objects']
- properties:
- body:
- type: string
- ChatMessages:
- type: array
- tags: ['Objects']
- items:
- anyOf:
- - $ref: '#/components/schemas/UserMessage'
- - $ref: '#/components/schemas/SystemMessage'
- - $ref: '#/components/schemas/ActionMessage'
- - $ref: '#/components/schemas/FederatedAction'
- UserMessage:
- type: object
- tags: ['Objects']
- allOf:
- - $ref: '#/components/schemas/Event'
- - $ref: '#/components/schemas/UserEvent'
- - $ref: '#/components/schemas/MessageEvent'
- SystemMessage:
- type: object
- tags: ['Objects']
- allOf:
- - $ref: '#/components/schemas/Event'
- - $ref: '#/components/schemas/MessageEvent'
- SystemActionEvent:
- type: object
- tags: ['Objects']
- allOf:
- - $ref: '#/components/schemas/Event'
- - $ref: '#/components/schemas/MessageEvent'
- ActionMessage:
- type: object
- tags: ['Objects']
- allOf:
- - $ref: '#/components/schemas/Event'
- - $ref: '#/components/schemas/MessageEvent'
- FederatedAction:
- type: object
- tags: ['Objects']
- allOf:
- - $ref: '#/components/schemas/Event'
- - $ref: '#/components/schemas/MessageEvent'
- - type: object
- properties:
- image:
- type: string
- link:
- type: string
- title:
- type: string
- WebConfig:
- type: object
- tags: ['Objects']
- properties:
- appearanceVariables:
- type: object
- additionalProperties:
- type: string
- name:
- type: string
- customStyles:
- type: string
- streamTitle:
- type: string
- offlineMessage:
- type: string
- logo:
- type: string
- version:
- type: string
- socketHostOverride:
- type: string
- extraPageContent:
- type: string
- summary:
- type: string
- tags:
- type: array
- items:
- type: string
- socialHandles:
- type: array
- items:
- $ref: '#/components/schemas/SocialHandle'
- externalActions:
- type: array
- items:
- $ref: '#/components/schemas/ExternalAction'
- notifications:
- $ref: '#/components/schemas/NotificationConfig'
- federation:
- $ref: '#/components/schemas/FederationConfig'
- maxSocketPayloadSize:
- type: integer
- hideViewerCount:
- type: boolean
- chatDisabled:
- type: boolean
- nsfw:
- type: boolean
- authentication:
- $ref: '#/components/schemas/AuthenticationConfig'
- SocialHandle:
- type: object
- tags: ['Objects']
- properties:
- platform:
- type: string
- url:
- type: string
- icon:
- type: string
- ExternalAction:
- type: object
- tags: ['Objects']
- properties:
- url:
- type: string
- html:
- type: string
- title:
- type: string
- description:
- type: string
- icon:
- type: string
- color:
- type: string
- openExternally:
- type: boolean
- NotificationConfig:
- type: object
- tags: ['Objects']
- properties:
- browser:
- $ref: '#/components/schemas/BrowserConfig'
- BrowserConfig:
- type: object
- tags: ['Objects']
- properties:
- publicKey:
- type: string
- enabled:
- type: boolean
- FederationConfig:
- type: object
- tags: ['Objects']
- properties:
- account:
- type: string
- followerCount:
- type: integer
- enabled:
- type: boolean
- AuthenticationConfig:
- type: object
- tags: ['Objects']
- properties:
- indieAuthEnabled:
- type: boolean
- YPDetails:
- type: object
- tags: ['Objects']
- properties:
- lastConnectTime:
- type: string
- name:
- type: string
- description:
- type: string
- streamTitle:
- type: string
- logo:
- type: string
- tags:
- type: array
- items:
- type: string
- social:
- type: array
- items:
- $ref: '#/components/schemas/SocialHandle'
- viewerCount:
- type: integer
- overallMaxViewerCount:
- type: integer
- sessionMaxViewerCount:
- type: integer
- nsfw:
- type: boolean
- online:
- type: boolean
- VideoVariant:
- type: object
- tags: ['Objects', 'Video']
- properties:
- index:
- type: integer
- name:
- type: string
- PlaybackMetrics:
- type: object
- tags: ['Objects', 'Video']
- properties:
- bandwidth:
- type: number
- format: double
- latency:
- type: number
- format: double
- errors:
- type: number
- format: double
- downloadDuration:
- type: number
- format: double
- qualityVariantChanges:
- type: number
- format: double
- Broadcaster:
- type: object
- tags: ['Objects', 'Video']
- properties:
- time:
- type: string
- format: date-time
- remoteAddr:
- type: string
- streamDetails:
- $ref: '#/components/schemas/InboundStreamDetails'
- InboundStreamDetails:
- type: object
- tags: ['Objects', 'Video']
- properties:
- videoCodec:
- type: string
- audioCodec:
- type: string
- encoder:
- type: string
- width:
- type: integer
- height:
- type: integer
- videoBitrate:
- type: integer
- audioBitrate:
- type: integer
- framerate:
- type: number
- format: float
- CurrentBroadcast:
- type: object
- tags: ['Objects', 'Video']
- properties:
- outputSettings:
- type: array
- items:
- $ref: '#/components/schemas/StreamOutputVariant'
- latencyLevel:
- $ref: '#/components/schemas/LatencyLevel'
- StreamOutputVariant:
- type: object
- tags: ['Objects', 'Video']
- properties:
- name:
- type: string
- videoPassthrough:
- type: boolean
- audioPassthrough:
- type: boolean
- videoBitrate:
- type: integer
- audioBitrate:
- type: integer
- scaledWidth:
- type: integer
- scaledHeight:
- type: integer
- framerate:
- type: integer
- cpuUsageLevel:
- type: integer
- LatencyLevel:
- type: object
- properties:
- level:
- type: integer
- StreamHealthOverview:
- type: object
- tags: ['Objects', 'Video']
- properties:
- message:
- type: string
- healthPercentage:
- type: integer
- representation:
- type: integer
- healthy:
- type: boolean
- BrowserNotificationConfiguration:
- type: object
- tags: ['Objects', 'Notifications']
- properties:
- goLiveMessage:
- type: string
- enabled:
- type: boolean
- DiscordNotificationConfiguration:
- type: object
- tags: ['Objects', 'Notifications']
- properties:
- webhook:
- type: string
- goLiveMessage:
- type: string
- enabled:
- type: boolean
- S3Info:
- type: object
- tags: ['Objects']
- properties:
- endpoint:
- type: string
- accessKey:
- type: string
- secret:
- type: string
- bucket:
- type: string
- region:
- type: string
- acl:
- type: string
- pathPrefix:
- type: string
- enabled:
- type: boolean
- forcePathStyle:
- type: boolean
- StreamKey:
- type: object
- tags: ['Objects']
- properties:
- key:
- type: string
- comment:
- type: string
- TimestampedValue:
- type: object
- tags: ['Objects']
- properties:
- time:
- type: string
- format: date-time
- value:
- type: number
- format: double
- Viewer:
- type: object
- tags: ['Objects', 'Video']
- properties:
- firstSeen:
- type: string
- format: date-time
- geo:
- $ref: '#/components/schemas/GeoDetails'
- userAgent:
- type: string
- ipAddress:
- type: string
- clientID:
- type: string
- GeoDetails:
- type: object
- tags: ['Objects']
- properties:
- countryCode:
- type: string
- regionName:
- type: string
- timeZone:
- type: string
- CollectedMetrics:
- tags: ['Objects']
- type: object
- properties:
- disk:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- memory:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- cpu:
- type: array
- items:
- $ref: '#/components/schemas/TimestampedValue'
- ChatClient:
- type: object
- tags: ['Objects', 'Chat']
- properties:
- connectedAt:
- type: string
- format: date-time
- user:
- $ref: '#/components/schemas/User'
- geo:
- $ref: '#/components/schemas/GeoDetails'
- userAgent:
- type: string
- messageCount:
- type: integer
- ChatClients:
- type: array
- tags: ['Objects', 'Chat']
- items:
- $ref: '#/components/schemas/ChatClient'
- IPAddress:
- type: object
- tags: ['Objects', 'Chat']
- properties:
- createdAt:
- type: string
- format: date-time
- ipAddress:
- type: string
- notes:
- type: string
- Webhook:
- type: object
- tags: ['Objects', 'Notifications']
- properties:
- timestamp:
- type: string
- format: date-time
- lastUsed:
- type: string
- format: date-time
- url:
- type: string
- events:
- type: array
- items:
- $ref: '#/components/schemas/WebhookEventType'
- id:
- type: integer
- WebhookEventType:
- type: string
- tags: ['Objects', 'Notifications']
- enum:
- - CHAT
- - USER_JOINED
- - USER_PARTED
- - NAME_CHANGE
- - VISIBILITY-UPDATE
- - PING
- - PONG
- - STREAM_STARTED
- - STREAM_STOPPED
- - STREAM_TITLE_UPDATED
- - SYSTEM
- - CHAT_ACTION
- ExternalAPIUser:
- type: object
- properties:
- createdAt:
- type: string
- format: date-time
- lastUsedAt:
- type: string
- format: date-time
- id:
- type: string
- accessToken:
- type: string
- displayName:
- type: string
- type:
- type: string
- scopes:
- type: array
- items:
- type: string
- displayColor:
- type: integer
- isBot:
- type: boolean
- MessageVisibilityUpdate:
- type: object
- tags: ['Objects', 'Chat']
- properties:
- idArray:
- type: array
- items:
- type: string
- visible:
- type: boolean
- ModerationUserDetails:
- type: object
- tags: ['Objects', 'Chat']
- properties:
- user:
- $ref: '#/components/schemas/User'
- connectedClients:
- type: array
- items:
- $ref: '#/components/schemas/ModerationConnectedClient'
- messages:
- type: array
- items:
- $ref: '#/components/schemas/UserMessage'
- ModerationConnectedClient:
- type: object
- tags: ['Objects', 'Chat']
- properties:
- connectedAt:
- type: string
- format: date-time
- userAgent:
- type: string
- geo:
- type: string
- id:
- type: integer
- format: int64
- messageCount:
- type: integer
- FederatedActivity:
- type: object
- tags: ['Objects', 'Social']
- properties:
- timestamp:
- type: string
- format: date-time
- iri:
- type: string
- actorIRI:
- type: string
- type:
- type: string
- PaginatedFederatedActivity:
- type: object
- tags: ['Objects', 'Social']
- properties:
- total:
- type: integer
- results:
- $ref: '#/components/schemas/FederatedActivity'
- AdminStatus:
- type: object
- tags: ['Objects']
- properties:
- broadcaster:
- $ref: '#/components/schemas/Broadcaster'
- currentBroadcast:
- $ref: '#/components/schemas/CurrentBroadcast'
- health:
- $ref: '#/components/schemas/StreamHealthOverview'
- streamTitle:
- type: string
- versionNumber:
- type: string
- viewerCount:
- type: integer
- overallPeakViewerCount:
- type: integer
- sessionPeakViewerCount:
- type: integer
- online:
- type: boolean
- AdminServerConfig:
- type: object
- tags: ['Objects']
- properties:
- instanceDetails:
- $ref: '#/components/schemas/AdminWebConfig'
- notifications:
- $ref: '#/components/schemas/AdminNotificationsConfig'
- yp:
- $ref: '#/components/schemas/AdminYPInfo'
- ffmpegPath:
- type: string
- adminPassword:
- type: string
- socketHostOverride:
- type: string
- webServerIP:
- type: string
- videoCodec:
- type: string
- videoServingEndpoint:
- type: string
- s3:
- $ref: '#/components/schemas/S3Info'
- federation:
- $ref: '#/components/schemas/AdminFederationConfig'
- supportedCodecs:
- type: array
- items:
- type: string
- externalActions:
- type: array
- items:
- $ref: '#/components/schemas/ExternalAction'
- forbiddenUsernames:
- type: array
- items:
- type: string
- suggestedUsernames:
- type: array
- items:
- type: string
- streamKeys:
- type: array
- items:
- $ref: '#/components/schemas/StreamKey'
- videoSettings:
- $ref: '#/components/schemas/AdminVideoSettings'
- rtmpServerPort:
- type: integer
- webServerPort:
- type: integer
- chatDisabled:
- type: boolean
- chatJoinMessagesEnabled:
- type: boolean
- chatEstablishedUserMode:
- type: boolean
- disableSearchIndexing:
- type: boolean
- streamKeyOverridden:
- type: boolean
- hideViewerCount:
- type: boolean
- AdminWebConfig:
- type: object
- tags: ['Objects']
- properties:
- appearanceVariables:
- type: object
- additionalProperties:
- type: string
- version:
- type: string
- welcomeMessage:
- type: string
- offlineMessage:
- type: string
- logo:
- type: string
- name:
- type: string
- extraPageContent:
- type: string
- streamTitle:
- type: string
- customStyles:
- type: string
- customJavascript:
- type: string
- summary:
- type: string
- tags:
- type: array
- items:
- type: string
- socialHandles:
- type: array
- items:
- $ref: '#/components/schemas/SocialHandle'
- nsfw:
- type: boolean
- AdminNotificationsConfig:
- type: object
- tags: ['Objects', 'Notifications']
- properties:
- browser:
- $ref: '#/components/schemas/BrowserNotificationConfiguration'
- discord:
- $ref: '#/components/schemas/DiscordNotificationConfiguration'
- AdminYPInfo:
- type: object
- tags: ['Objects']
- properties:
- instanceUrl:
- type: string
- enabled:
- type: boolean
- AdminFederationConfig:
- tags: ['Objects', 'Social']
- type: object
- properties:
- username:
- type: string
- goLiveMessage:
- type: string
- blockedDomains:
- type: array
- items:
- type: string
- enabled:
- type: boolean
- isPrivate:
- type: boolean
- showEngagement:
- type: boolean
- AdminVideoSettings:
- type: object
- tags: ['Objects', 'Video']
- properties:
- videoQualityVariants:
- type: array
- items:
- $ref: '#/components/schemas/StreamOutputVariant'
- latencyLevel:
- type: integer
- AdminLog:
- type: object
- tags: ['Objects']
- properties:
- time:
- type: string
- format: date-time
- message:
- type: string
- level:
- type: string
- AdminConfigValue:
- type: object
- tags: ['Objects']
- properties:
- value:
- oneOf:
- - type: string
- - type: boolean
- - type: array
- items:
- type: string
- - type: number
- IndieAuthResponse:
- type: object
- tags: ['Objects', 'Auth']
- properties:
- me:
- type: string
- profile:
- $ref: '#/components/schemas/IndieAuthProfile'
- error:
- type: string
- errorDescription:
- type: string
- IndieAuthProfile:
- type: object
- tags: ['Objects', 'Auth']
- properties:
- name:
- type: string
- url:
- type: string
- photo:
- type: string
- IndieAuthServerProfileResponse:
- type: object
- tags: ['Objects', 'Auth']
- properties:
- me:
- type: string
- profile:
- $ref: '#/components/schemas/IndieAuthServerProfile'
- error:
- type: string
- errorDescription:
- type: string
- IndieAuthServerProfile:
- type: object
- tags: ['Objects', 'Auth']
- properties:
- name:
- type: string
- url:
- type: string
- photo:
- type: string
-
- headers:
- 'Access-Control-Allow-Origin':
- schema:
- type: string
- 'Access-Control-Allow-Credentials':
- schema:
- type: string
- format: boolean
- 'Access-Control-Allow-Headers':
- schema:
- type: string
- 'WWW-Authenticate':
- schema:
- type: string
- 'X-Content-Type-Options':
- schema:
- type: string
-
- requestBodies:
- AdminConfigValue:
- description: A single value that is used in the request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AdminConfigValue'
- IndieAuthEndpointForm:
- description: Form submission from IndieAuth
- content:
- application/x-www-form-urlencoded:
- schema:
- type: object
- properties:
- code:
- type: string
- redirect_uri:
- type: string
- client_id:
- type: string
- codeVerifier:
- type: string
-
- responses:
- Default:
- description: Unexpected error
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '204':
- description: No Content
- '204Options':
- description: No Content
- headers:
- 'Access-Control-Allow-Origin':
- $ref: '#/components/headers/Access-Control-Allow-Origin'
- '400':
- description: Bad request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BaseAPIResponse'
- '401':
- description: Unauthorized
- content:
- text/plain:
- schema:
- type: string
- '401BasicAuth':
- description: Basic auth failure
- headers:
- 'Access-Control-Allow-Origin':
- $ref: '#/components/headers/Access-Control-Allow-Origin'
- 'Access-Control-Allow-Credentials':
- $ref: '#/components/headers/Access-Control-Allow-Credentials'
- 'Access-Control-Allow-Headers':
- $ref: '#/components/headers/Access-Control-Allow-Headers'
- 'WWW-Authenticate':
- $ref: '#/components/headers/WWW-Authenticate'
- 'X-Content-Type-Options':
- $ref: '#/components/headers/X-Content-Type-Options'
- content:
- text/plain:
- schema:
- type: string
- '403':
- description: Forbidden
- '404':
- description: Not found
- '500':
- description: Internal Server Error
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '501':
- description: Not Implemented
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
-
- parameters:
- Offset:
- in: query
- name: offset
- schema:
- type: integer
- description: The number of items to skip before starting to collect the result set
- Limit:
- in: query
- name: limit
- schema:
- type: integer
- description: The numbers of items to return
- AccessToken:
- in: query
- name: accessToken
- schema:
- type: string
- required: true
- IndieAuthClientId:
- in: query
- name: client_id
- schema:
- type: string
- required: true
- IndieAuthRedirectURI:
- in: query
- name: redirect_uri
- schema:
- type: string
- required: true
- IndieAuthCodeChallenge:
- in: query
- name: code_challenge
- schema:
- type: string
- required: true
- IndieAuthState:
- in: query
- name: state
- schema:
- type: string
- required: true
- IndieAuthCode:
- in: query
- name: code
- schema:
- type: string
- required: true
- IndieAuthMe:
- in: query
- name: me
- schema:
- type: string
- required: true
-
- securitySchemes:
- BasicAuth:
- type: http
- scheme: basic
- BearerAuth:
- type: http
- scheme: bearer
-
-tags:
- - name: External
- description: |-
- These APIs are specifically exposed for building third party applications or tooling. They use auth tokens to authenticate and are designed to be stable and reliable.
- - name: Internal
- description: |-
- These APIs are used internally for the operation of the application. They should not be used by third party clients or tooling, as they may require sharing your admin password, and additionally may change at any time.
- - name: Auth
- description: Authentication API
- - name: Chat
- description: APIs related to operating the chat system.
- - name: Objects
- description: Object definitions
- - name: Video
- description: Video API
- - name: Notifications
- description: Notification API
- - name: Social
- description: Social API
diff --git a/handler/admin.go b/webserver/handlers/admin.go
similarity index 98%
rename from handler/admin.go
rename to webserver/handlers/admin.go
index 04d1c06e4..ed8e2922d 100644
--- a/handler/admin.go
+++ b/webserver/handlers/admin.go
@@ -1,12 +1,12 @@
-package handler
+package handlers
import (
"net/http"
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/controllers/admin"
- "github.com/owncast/owncast/handler/generated"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/handlers/generated"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
func (*ServerInterfaceImpl) StatusAdmin(w http.ResponseWriter, r *http.Request) {
diff --git a/handler/auth.go b/webserver/handlers/auth.go
similarity index 90%
rename from handler/auth.go
rename to webserver/handlers/auth.go
index 2f47b4b5c..ffa9eb7d1 100644
--- a/handler/auth.go
+++ b/webserver/handlers/auth.go
@@ -1,12 +1,12 @@
-package handler
+package handlers
import (
"net/http"
"github.com/owncast/owncast/controllers/auth/fediverse"
"github.com/owncast/owncast/controllers/auth/indieauth"
- "github.com/owncast/owncast/handler/generated"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/handlers/generated"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
func (*ServerInterfaceImpl) StartIndieAuthFlow(w http.ResponseWriter, r *http.Request, params generated.StartIndieAuthFlowParams) {
diff --git a/handler/config.go b/webserver/handlers/config.go
similarity index 99%
rename from handler/config.go
rename to webserver/handlers/config.go
index 6a73fed8b..f0bef91f9 100644
--- a/handler/config.go
+++ b/webserver/handlers/config.go
@@ -1,10 +1,10 @@
-package handler
+package handlers
import (
"net/http"
"github.com/owncast/owncast/controllers/admin"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
func (*ServerInterfaceImpl) SetAdminPassword(w http.ResponseWriter, r *http.Request) {
diff --git a/handler/generated/generated-types.gen.go b/webserver/handlers/generated/generated-types.gen.go
similarity index 99%
rename from handler/generated/generated-types.gen.go
rename to webserver/handlers/generated/generated-types.gen.go
index 3a14dce46..9e0d70762 100644
--- a/handler/generated/generated-types.gen.go
+++ b/webserver/handlers/generated/generated-types.gen.go
@@ -1,6 +1,6 @@
// Package generated provides primitives to interact with the openapi HTTP API.
//
-// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT.
+// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.3.0 DO NOT EDIT.
package generated
import (
diff --git a/handler/generated/generated.gen.go b/webserver/handlers/generated/generated.gen.go
similarity index 99%
rename from handler/generated/generated.gen.go
rename to webserver/handlers/generated/generated.gen.go
index 1fc4cea8e..419954464 100644
--- a/handler/generated/generated.gen.go
+++ b/webserver/handlers/generated/generated.gen.go
@@ -1,6 +1,6 @@
// Package generated provides primitives to interact with the openapi HTTP API.
//
-// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT.
+// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.3.0 DO NOT EDIT.
package generated
import (
@@ -4593,7 +4593,6 @@ func (siw *ServerInterfaceWrapper) RegisterFediverseOTPRequest(w http.ResponseWr
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -4643,7 +4642,6 @@ func (siw *ServerInterfaceWrapper) StartIndieAuthFlow(w http.ResponseWriter, r *
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -4678,7 +4676,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthRedirect(w http.ResponseWriter
// ------------- Required query parameter "state" -------------
if paramValue := r.URL.Query().Get("state"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "state"})
return
@@ -4693,7 +4690,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthRedirect(w http.ResponseWriter
// ------------- Required query parameter "code" -------------
if paramValue := r.URL.Query().Get("code"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "code"})
return
@@ -4730,7 +4726,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthEndpointGet(w http.ResponseWri
// ------------- Required query parameter "client_id" -------------
if paramValue := r.URL.Query().Get("client_id"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "client_id"})
return
@@ -4745,7 +4740,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthEndpointGet(w http.ResponseWri
// ------------- Required query parameter "redirect_uri" -------------
if paramValue := r.URL.Query().Get("redirect_uri"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "redirect_uri"})
return
@@ -4760,7 +4754,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthEndpointGet(w http.ResponseWri
// ------------- Required query parameter "code_challenge" -------------
if paramValue := r.URL.Query().Get("code_challenge"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "code_challenge"})
return
@@ -4775,7 +4768,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthEndpointGet(w http.ResponseWri
// ------------- Required query parameter "state" -------------
if paramValue := r.URL.Query().Get("state"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "state"})
return
@@ -4790,7 +4782,6 @@ func (siw *ServerInterfaceWrapper) HandleIndieAuthEndpointGet(w http.ResponseWri
// ------------- Required query parameter "code" -------------
if paramValue := r.URL.Query().Get("code"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "code"})
return
@@ -4840,7 +4831,6 @@ func (siw *ServerInterfaceWrapper) GetChatMessages(w http.ResponseWriter, r *htt
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -4875,7 +4865,6 @@ func (siw *ServerInterfaceWrapper) UpdateMessageVisibility(w http.ResponseWriter
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -4966,7 +4955,6 @@ func (siw *ServerInterfaceWrapper) UpdateUserEnabled(w http.ResponseWriter, r *h
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -5401,7 +5389,6 @@ func (siw *ServerInterfaceWrapper) GetUserDetails(w http.ResponseWriter, r *http
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
@@ -5436,7 +5423,6 @@ func (siw *ServerInterfaceWrapper) RegisterForLiveNotifications(w http.ResponseW
// ------------- Required query parameter "accessToken" -------------
if paramValue := r.URL.Query().Get("accessToken"); paramValue != "" {
-
} else {
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "accessToken"})
return
diff --git a/handler/handler.go b/webserver/handlers/handler.go
similarity index 95%
rename from handler/handler.go
rename to webserver/handlers/handler.go
index 97cb1dc52..df83187f5 100644
--- a/handler/handler.go
+++ b/webserver/handlers/handler.go
@@ -1,12 +1,13 @@
-package handler
+package handlers
import (
"net/http"
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/controllers/admin"
- "github.com/owncast/owncast/handler/generated"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/handlers/generated"
+ "github.com/owncast/owncast/webserver/router/middleware"
+
"github.com/owncast/owncast/yp"
)
diff --git a/handler/integrations.go b/webserver/handlers/integrations.go
similarity index 98%
rename from handler/integrations.go
rename to webserver/handlers/integrations.go
index 4d5307462..701c2e6a5 100644
--- a/handler/integrations.go
+++ b/webserver/handlers/integrations.go
@@ -1,4 +1,4 @@
-package handler
+package handlers
import (
"net/http"
@@ -6,7 +6,7 @@ import (
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/controllers/admin"
"github.com/owncast/owncast/models"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/router/middleware"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
diff --git a/handler/moderation.go b/webserver/handlers/moderation.go
similarity index 69%
rename from handler/moderation.go
rename to webserver/handlers/moderation.go
index 2bfa636be..91c8c126e 100644
--- a/handler/moderation.go
+++ b/webserver/handlers/moderation.go
@@ -1,11 +1,11 @@
-package handler
+package handlers
import (
"net/http"
"github.com/owncast/owncast/controllers/moderation"
- "github.com/owncast/owncast/handler/generated"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/handlers/generated"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
func (*ServerInterfaceImpl) GetUserDetails(w http.ResponseWriter, r *http.Request, userId string, params generated.GetUserDetailsParams) {
diff --git a/router/middleware/activityPub.go b/webserver/router/middleware/activityPub.go
similarity index 100%
rename from router/middleware/activityPub.go
rename to webserver/router/middleware/activityPub.go
diff --git a/router/middleware/auth.go b/webserver/router/middleware/auth.go
similarity index 100%
rename from router/middleware/auth.go
rename to webserver/router/middleware/auth.go
diff --git a/router/middleware/caching.go b/webserver/router/middleware/caching.go
similarity index 100%
rename from router/middleware/caching.go
rename to webserver/router/middleware/caching.go
diff --git a/router/middleware/cors.go b/webserver/router/middleware/cors.go
similarity index 100%
rename from router/middleware/cors.go
rename to webserver/router/middleware/cors.go
diff --git a/router/middleware/headers.go b/webserver/router/middleware/headers.go
similarity index 100%
rename from router/middleware/headers.go
rename to webserver/router/middleware/headers.go
diff --git a/router/middleware/pagination.go b/webserver/router/middleware/pagination.go
similarity index 100%
rename from router/middleware/pagination.go
rename to webserver/router/middleware/pagination.go
diff --git a/router/router.go b/webserver/router/router.go
similarity index 96%
rename from router/router.go
rename to webserver/router/router.go
index 0a4570227..7fc947d59 100644
--- a/router/router.go
+++ b/webserver/router/router.go
@@ -19,8 +19,8 @@ import (
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/core/chat"
"github.com/owncast/owncast/core/data"
- "github.com/owncast/owncast/handler"
- "github.com/owncast/owncast/router/middleware"
+ "github.com/owncast/owncast/webserver/handlers"
+ "github.com/owncast/owncast/webserver/router/middleware"
)
// Start starts the router for the http, ws, and rtmp.
@@ -59,7 +59,7 @@ func Start(enableVerboseLogging bool) error {
r.HandleFunc("/*", controllers.IndexHandler)
// mount the api
- r.Mount("/api/", handler.New().Handler())
+ r.Mount("/api/", handlers.New().Handler())
// ActivityPub has its own router
activitypub.Start(data.GetDatastore())