2020-10-05 04:59:43 +03:00
openapi : 3.0 .1
info :
title : Owncast
description : Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
version : '0.0.2'
2020-10-08 03:04:06 +03:00
x-logo :
url : >-
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEvmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyOCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjEyOCIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOkltYWdlV2lkdGg9IjEyOCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTI4IgogICB0aWZmOlJlc29sdXRpb25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI5Ni4wIgogICB0aWZmOllSZXNvbHV0aW9uPSI5Ni4wIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIw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
2020-10-05 04:59:43 +03:00
servers : [ ]
tags :
- name : Admin
description : Admin operations requiring authentication.
- name : Chat
description : Endpoints related to the chat interface.
components :
schemas :
2020-10-08 03:04:06 +03:00
ClientArray :
type : array
items :
$ref : '#/components/schemas/Client'
Client :
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'
username : null
clientID : 2ba20dd34f911c198df3218ddc64c740
geo :
countryCode : US
regionName : California
timeZone : America/Los_Angeles
properties :
connectedAt :
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
ipAddress :
description : The public IP address of this client
type : string
username :
description : The username for this client in chat if available
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
x-last-modified : 1602052347511
2020-10-05 04:59:43 +03:00
BasicResponse :
type : object
properties :
success :
type : boolean
message :
type : string
InstanceDetails :
type : object
2020-10-08 03:04:06 +03:00
description : User-facing details about this server.
2020-10-05 04:59:43 +03:00
properties :
name :
type : string
2020-10-08 03:04:06 +03:00
description : Displayed as the header in the instance details.
2020-10-05 04:59:43 +03:00
title :
type : string
2020-10-08 03:04:06 +03:00
description : Displayed in the document title and header.
2020-10-05 04:59:43 +03:00
summary :
type : string
description : This is brief summary of whom you are or what the stream is.
logo :
type : object
properties :
large :
type : string
small :
type : string
tags :
type : array
2020-10-08 03:04:06 +03:00
description : Categories of the content this instance focuses on.
2020-10-05 04:59:43 +03:00
items :
type : string
socialHandles :
type : array
2020-10-08 03:04:06 +03:00
description : Links to social network urls.
2020-10-05 04:59:43 +03:00
items :
type : object
properties :
platform :
type : string
example : github
url :
type : string
example : http://github.com/owncast/owncast
extraUserInfoFileName :
type : string
2020-10-08 03:04:06 +03:00
description : Path to markdown file that has additional rich content about the server.
2020-10-05 04:59:43 +03:00
version :
type : string
example : Owncast v0.0.2-macOS (ef3796a033b32a312ebf5b334851cbf9959e7ecb)
2020-10-08 08:42:14 +03:00
YP :
type : object
description : Configuration of the instance's registration to the Owncast Directory (YP API)
properties :
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.
2020-10-05 04:59:43 +03:00
S3 :
type : object
2020-10-08 03:04:06 +03:00
description : Configuration of external storage using S3-compatible providers.
2020-10-05 04:59:43 +03:00
properties :
enabled :
type : boolean
endpoint :
type : string
servingEndpoint :
type : string
accessKey :
type : string
secret :
type : string
bucket :
type : string
region :
type : string
acl :
type : string
required :
- enabled
StreamQuality :
type : object
properties :
videoPassthrough :
type : boolean
2020-10-08 03:04:06 +03:00
description : If enabled video transcoding is disabled and the video is passed along in its original format.
2020-10-05 04:59:43 +03:00
audioPassthrough :
type : boolean
2020-10-08 03:04:06 +03:00
description : If enabled audio transcoding is disabled and the audio is passed along in its original format.
2020-10-05 04:59:43 +03:00
videoBitrate :
type : integer
2020-10-08 03:04:06 +03:00
description : The video quality, in kbps.
2020-10-05 04:59:43 +03:00
audioBitrate :
type : integer
2020-10-08 03:04:06 +03:00
description : The audio quality, in kbps.
2020-10-05 04:59:43 +03:00
scaledWidth :
type : integer
2020-10-08 03:04:06 +03:00
description : The resized video width.
2020-10-05 04:59:43 +03:00
scaledHeight :
type : integer
2020-10-08 03:04:06 +03:00
description : The resized video height.
2020-10-05 04:59:43 +03:00
framerate :
type : integer
2020-10-08 03:04:06 +03:00
description : The target frames per second of the video.
2020-10-05 04:59:43 +03:00
encoderPreset :
type : string
2020-10-08 03:04:06 +03:00
description : "The [H.264 preset value](https://trac.ffmpeg.org/wiki/Encode/H.264) selected for this HLS variant."
2020-10-05 04:59:43 +03:00
TimestampedValue :
type : object
properties :
time :
type : string
format : date-time
value :
type : integer
securitySchemes :
AdminBasicAuth :
type : http
scheme : basic
description : The username for admin basic auth is `admin` and the password is the stream key.
responses :
2020-10-08 03:04:06 +03:00
ClientsResponse :
description : Successful response of an array of clients
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'
username : coolperson42
clientID : 2ba20dd34f911c198df3218ddc64c740
geo :
countryCode : US
regionName : California
timeZone : America/Los_Angeles
2020-10-05 04:59:43 +03:00
BasicResponse :
description : Operation Success/Failure Response
content :
application/json :
schema :
$ref : "#/components/schemas/BasicResponse"
examples :
success :
summary : Operation succeeded.
value : {"success": true, "message": "inbound stream disconnected" }
failure :
summary : Operation failed.
value : {"success": false, "message": "no inbound stream connected" }
paths :
/api/config :
get :
summary : Information
description : Get the public information about the server. Adds context to the server, as well as information useful for the user interface.
tags : [ "Server" ]
responses :
'200' :
description : ""
content :
application/json :
schema :
$ref : "#/components/schemas/InstanceDetails"
/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/chat :
get :
summary : Historical Chat Messages
description : Used to get all chat messages prior to connecting to the websocket.
tags : [ "Chat" ]
responses :
'200' :
description : ""
content :
application/json :
schema :
type : array
items :
type : object
properties :
author :
type : string
description : Username of the chat message poster.
body :
type : string
description : Escaped HTML of the chat message content.
image :
type : string
description : URL of the chat user avatar.
id :
type : string
description : Unique ID of the chat message.
visible :
type : boolean
2020-10-08 03:04:06 +03:00
description : "Should chat message be visibly rendered."
2020-10-05 04:59:43 +03:00
timestamp :
type : string
format : date-time
/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
/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/admin/broadcaster :
get :
summary : "Broadcaster Details"
tags : [ "Admin" ]
security :
- AdminBasicAuth : [ ]
responses :
'200' :
description : Connected Broadcaster Details
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
message :
type : string
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
examples :
connected :
summary : "Broadcaster Connected"
value :
success : true
message : ""
broadcaster :
2020-10-08 09:27:42 +03:00
remoteAddr : 172.217 .164 .110
2020-10-08 03:04:06 +03:00
time : "2020-10-06T23:20:44.588649-07:00"
2020-10-05 04:59:43 +03:00
streamDetails :
width : 640
height : 480
frameRate : 24
videoBitrate : 1500
2020-10-08 03:04:06 +03:00
videoCodec : "mp4a"
2020-10-05 04:59:43 +03:00
audioBitrate : 256
audioCodec : "aac"
2020-10-08 03:04:06 +03:00
encoder : "obs-output module (libobs version 25.0.8)"
2020-10-05 04:59:43 +03:00
not-connected :
summary : "Broadcaster Not Connected"
value :
success : false
message : "no broadcaster connected"
/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"
2020-10-08 03:04:06 +03:00
/api/admin/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"
2020-10-05 04:59:43 +03:00
/api/admin/changekey :
post :
summary : Update Stream Key
description : Change the stream key in memory, but not in the config file. This will require all broadcasters to be reconfigured to connect again.
tags : [ "Admin" ]
security :
- AdminBasicAuth : [ ]
requestBody :
description : ""
required : true
content :
application/json :
schema :
type : object
properties :
key :
type : string
responses :
'200' :
description : Stream was disconnected.
content :
application/json :
schema :
type : object
properties :
success :
type : boolean
example : true
message :
type : string
example : changed
/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
2020-10-08 03:04:06 +03:00
description : The path to the copy of ffmpeg that this server is using.
2020-10-05 04:59:43 +03:00
webServerPort :
type : integer
2020-10-08 03:04:06 +03:00
description : The port the public web server is listening on.
2020-10-05 04:59:43 +03:00
s3 :
$ref : "#/components/schemas/S3"
videoSettings :
type : object
2020-10-08 03:04:06 +03:00
description : How the different variants of video streams are configured.
2020-10-05 04:59:43 +03:00
properties :
videoQualityVariants :
type : array
items :
$ref : "#/components/schemas/StreamQuality"
segmentLengthSeconds :
type : integer
2020-10-08 03:04:06 +03:00
description : The target number of seconds each HLS video segment of video will last.
2020-10-05 04:59:43 +03:00
numberOfPlaylistItems :
type : integer
2020-10-08 03:04:06 +03:00
description : The maximum number of HLS video segments we will keep referenced in the playlist.
2020-10-08 08:42:14 +03:00
yp :
$ref : "#/components/schemas/YP"
2020-10-05 04:59:43 +03:00
/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