owncast/openapi.yaml

668 lines
33 KiB
YAML
Raw Normal View History

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. The following APIs represent the state in the development master branch.
version: '0.0.3-development'
contact:
name: Gabe Kangas
email: gabek@real-ity.com
url: http://owncast.online
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
extraPageContent:
2020-10-05 04:59:43 +03:00
type: string
description: Additional HTML content to render in the body of the web interface.
example: "<p>This page is <strong>super</strong> cool!"
2020-10-05 04:59:43 +03:00
version:
type: string
example: Owncast v0.0.2-macOS (ef3796a033b32a312ebf5b334851cbf9959e7ecb)
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: The client configuration. Information useful for the user interface.
2020-10-05 04:59:43 +03:00
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.
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. Pre-release, do not use.
2020-10-05 04:59:43 +03:00
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: Key was changed.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
message:
type: string
example: changed
/api/admin/changeExtraPageContent:
post:
summary: Change the extra page content. Pre-release, do not use.
description: Change the extra page content in memory, but not on disk.
tags: ["Admin"]
security:
- AdminBasicAuth: []
requestBody:
description: ""
required: true
content:
application/json:
schema:
type: object
properties:
content:
type: string
responses:
'200':
description: Page content was changed.
2020-10-05 04:59:43 +03:00
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.
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