1 changed files with 513 additions and 0 deletions
@ -0,0 +1,513 @@
@@ -0,0 +1,513 @@
|
||||
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' |
||||
servers: [] |
||||
|
||||
tags: |
||||
- name: Admin |
||||
description: Admin operations requiring authentication. |
||||
- name: Chat |
||||
description: Endpoints related to the chat interface. |
||||
|
||||
components: |
||||
schemas: |
||||
BasicResponse: |
||||
type: object |
||||
properties: |
||||
success: |
||||
type: boolean |
||||
message: |
||||
type: string |
||||
InstanceDetails: |
||||
type: object |
||||
properties: |
||||
name: |
||||
type: string |
||||
title: |
||||
type: string |
||||
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 |
||||
items: |
||||
type: string |
||||
socialHandles: |
||||
type: array |
||||
items: |
||||
type: object |
||||
properties: |
||||
platform: |
||||
type: string |
||||
example: github |
||||
url: |
||||
type: string |
||||
example: http://github.com/owncast/owncast |
||||
extraUserInfoFileName: |
||||
type: string |
||||
description: Path to additional content about the server. |
||||
version: |
||||
type: string |
||||
example: Owncast v0.0.2-macOS (ef3796a033b32a312ebf5b334851cbf9959e7ecb) |
||||
S3: |
||||
type: object |
||||
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 |
||||
audioPassthrough: |
||||
type: boolean |
||||
videoBitrate: |
||||
type: integer |
||||
audioBitrate: |
||||
type: integer |
||||
scaledWidth: |
||||
type: integer |
||||
scaledHeight: |
||||
type: integer |
||||
framerate: |
||||
type: integer |
||||
encoderPreset: |
||||
type: string |
||||
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: |
||||
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 |
||||
description: "TODO" |
||||
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: |
||||
remoteAddr: 127.0.0.1 |
||||
time: "TODO" |
||||
streamDetails: |
||||
width: 640 |
||||
height: 480 |
||||
frameRate: 24 |
||||
videoBitrate: 1500 |
||||
videoCodec: "todo" |
||||
audioBitrate: 256 |
||||
audioCodec: "aac" |
||||
encoder: "todo" |
||||
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" |
||||
|
||||
|
||||
/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 |
||||
webServerPort: |
||||
type: integer |
||||
s3: |
||||
$ref: "#/components/schemas/S3" |
||||
videoSettings: |
||||
type: object |
||||
properties: |
||||
videoQualityVariants: |
||||
type: array |
||||
items: |
||||
$ref: "#/components/schemas/StreamQuality" |
||||
segmentLengthSeconds: |
||||
type: integer |
||||
numberOfPlaylistItems: |
||||
type: integer |
||||
|
||||
/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 |
Loading…
Reference in new issue