basePath: / definitions: api.AVstream: properties: aqueue: type: integer drop: type: integer dup: type: integer duplicating: type: boolean enc: type: integer gop: type: string input: $ref: '#/definitions/api.AVstreamIO' looping: type: boolean output: $ref: '#/definitions/api.AVstreamIO' queue: type: integer type: object api.AVstreamIO: properties: packet: type: integer size_kb: type: integer state: enum: - running - idle type: string time: type: integer type: object api.About: properties: app: type: string auths: items: type: string type: array created_at: type: string id: type: string name: type: string uptime_seconds: type: integer version: $ref: '#/definitions/api.Version' type: object api.Command: properties: command: enum: - start - stop - restart - reload type: string required: - command type: object api.Config: properties: config: $ref: '#/definitions/api.ConfigData' created_at: type: string loaded_at: type: string overrides: items: type: string type: array updated_at: type: string type: object api.ConfigData: properties: address: type: string api: properties: access: properties: http: properties: allow: items: type: string type: array block: items: type: string type: array type: object https: properties: allow: items: type: string type: array block: items: type: string type: array type: object type: object auth: properties: auth0: properties: enable: type: boolean tenants: items: $ref: '#/definitions/config.Auth0Tenant' type: array type: object disable_localhost: type: boolean enable: type: boolean jwt: properties: secret: type: string type: object password: type: string username: type: string type: object read_only: type: boolean type: object created_at: type: string db: properties: dir: type: string type: object debug: properties: force_gc: type: integer profiling: type: boolean type: object ffmpeg: properties: access: properties: input: properties: allow: items: type: string type: array block: items: type: string type: array type: object output: properties: allow: items: type: string type: array block: items: type: string type: array type: object type: object binary: type: string log: properties: max_history: type: integer max_lines: type: integer type: object max_processes: type: integer type: object host: properties: auto: type: boolean name: items: type: string type: array type: object id: type: string log: properties: level: enum: - debug - info - warn - error - silent type: string max_lines: type: integer topics: items: type: string type: array type: object metrics: properties: enable: type: boolean enable_prometheus: type: boolean interval_sec: description: seconds type: integer range_sec: description: seconds type: integer type: object name: type: string playout: properties: enable: type: boolean max_port: type: integer min_port: type: integer type: object router: properties: blocked_prefixes: items: type: string type: array routes: additionalProperties: type: string type: object ui_path: type: string type: object rtmp: properties: address: type: string app: type: string enable: type: boolean enable_tls: type: boolean token: type: string type: object service: properties: enable: type: boolean token: type: string url: type: string type: object sessions: properties: enable: type: boolean ip_ignorelist: items: type: string type: array max_bitrate_mbit: type: integer max_sessions: type: integer persist: type: boolean persist_interval_sec: type: integer session_timeout_sec: type: integer type: object srt: properties: address: type: string enable: type: boolean log: properties: enable: type: boolean topics: items: type: string type: array type: object passphrase: type: string token: type: string type: object storage: properties: cors: properties: origins: items: type: string type: array type: object disk: properties: cache: properties: enable: type: boolean max_file_size_mbytes: type: integer max_size_mbytes: type: integer ttl_seconds: type: integer types: items: type: string type: array type: object dir: type: string max_size_mbytes: type: integer type: object memory: properties: auth: properties: enable: type: boolean password: type: string username: type: string type: object max_size_mbytes: type: integer purge: type: boolean type: object mimetypes_file: type: string type: object tls: properties: address: type: string auto: type: boolean cert_file: type: string enable: type: boolean key_file: type: string type: object update_check: type: boolean version: type: integer type: object api.ConfigError: additionalProperties: items: type: string type: array type: object api.Error: properties: code: type: integer details: items: type: string type: array message: type: string type: object api.FileInfo: properties: last_modified: type: integer name: type: string size_bytes: type: integer type: object api.GraphQuery: properties: query: type: string variables: {} type: object api.GraphResponse: properties: data: {} errors: items: {} type: array type: object api.JWT: properties: access_token: type: string refresh_token: type: string type: object api.JWTRefresh: properties: access_token: type: string type: object api.LogEvent: additionalProperties: true type: object api.Login: properties: password: type: string username: type: string required: - password - username type: object api.MetricsQuery: properties: interval_sec: type: integer metrics: items: $ref: '#/definitions/api.MetricsQueryMetric' type: array timerange_sec: type: integer type: object api.MetricsQueryMetric: properties: labels: additionalProperties: type: string type: object name: type: string type: object api.MetricsResponse: properties: interval_sec: type: integer metrics: items: $ref: '#/definitions/api.MetricsResponseMetric' type: array timerange_sec: type: integer type: object api.MetricsResponseMetric: properties: labels: additionalProperties: type: string type: object name: type: string values: items: $ref: '#/definitions/api.MetricsResponseValue' type: array type: object api.MetricsResponseValue: properties: ts: type: string value: type: number type: object api.PlayoutStatus: properties: aqueue: type: integer debug: {} drop: type: integer dup: type: integer duplicating: type: boolean enc: type: integer gop: type: string id: type: string input: $ref: '#/definitions/api.PlayoutStatusIO' looping: type: boolean output: $ref: '#/definitions/api.PlayoutStatusIO' queue: type: integer stream: type: integer swap: $ref: '#/definitions/api.PlayoutStatusSwap' url: type: string type: object api.PlayoutStatusIO: properties: packet: type: integer size_kb: type: integer state: enum: - running - idle type: string time: type: integer type: object api.PlayoutStatusSwap: properties: lasterror: type: string lasturl: type: string status: type: string url: type: string type: object api.Probe: properties: log: items: type: string type: array streams: items: $ref: '#/definitions/api.ProbeIO' type: array type: object api.ProbeIO: properties: bitrate_kbps: type: number channels: type: integer codec: type: string coder: type: string duration_sec: type: number format: type: string fps: description: video type: number height: type: integer index: type: integer language: type: string layout: type: string pix_fmt: type: string sampling_hz: description: audio type: integer stream: type: integer type: type: string url: description: common type: string width: type: integer type: object api.Process: properties: config: $ref: '#/definitions/api.ProcessConfig' created_at: type: integer id: type: string metadata: {} reference: type: string report: $ref: '#/definitions/api.ProcessReport' state: $ref: '#/definitions/api.ProcessState' type: type: string type: object api.ProcessConfig: properties: autostart: type: boolean id: type: string input: items: $ref: '#/definitions/api.ProcessConfigIO' type: array limits: $ref: '#/definitions/api.ProcessConfigLimits' options: items: type: string type: array output: items: $ref: '#/definitions/api.ProcessConfigIO' type: array reconnect: type: boolean reconnect_delay_seconds: type: integer reference: type: string stale_timeout_seconds: type: integer type: enum: - ffmpeg - "" type: string required: - input - output type: object api.ProcessConfigIO: properties: address: type: string cleanup: items: $ref: '#/definitions/api.ProcessConfigIOCleanup' type: array id: type: string options: items: type: string type: array required: - address type: object api.ProcessConfigIOCleanup: properties: max_file_age_seconds: type: integer max_files: type: integer pattern: type: string purge_on_delete: type: boolean required: - pattern type: object api.ProcessConfigLimits: properties: cpu_usage: type: number memory_mbytes: type: integer waitfor_seconds: type: integer type: object api.ProcessReport: properties: created_at: type: integer history: items: $ref: '#/definitions/api.ProcessReportHistoryEntry' type: array log: items: items: type: string type: array type: array prelude: items: type: string type: array type: object api.ProcessReportHistoryEntry: properties: created_at: type: integer log: items: items: type: string type: array type: array prelude: items: type: string type: array type: object api.ProcessState: properties: command: items: type: string type: array cpu_usage: type: number exec: type: string last_logline: type: string memory_bytes: type: integer order: type: string progress: $ref: '#/definitions/api.Progress' reconnect_seconds: type: integer runtime_seconds: type: integer type: object api.Progress: properties: bitrate_kbit: description: kbit/s type: number drop: type: integer dup: type: integer fps: type: number frame: type: integer inputs: items: $ref: '#/definitions/api.ProgressIO' type: array outputs: items: $ref: '#/definitions/api.ProgressIO' type: array packet: type: integer q: type: number size_kb: description: kbytes type: integer speed: type: number time: type: number type: object api.ProgressIO: properties: address: type: string avstream: $ref: '#/definitions/api.AVstream' description: avstream bitrate_kbit: description: kbit/s type: number channels: type: integer codec: type: string coder: type: string format: type: string fps: type: number frame: type: integer height: type: integer id: type: string index: description: General type: integer layout: type: string packet: type: integer pix_fmt: description: Video type: string pps: type: number q: type: number sampling_hz: description: Audio type: integer size_kb: description: kbytes type: integer stream: type: integer type: type: string width: type: integer type: object api.RTMPChannel: properties: name: type: string type: object api.SRTChannels: properties: connections: additionalProperties: $ref: '#/definitions/api.SRTConnection' type: object log: additionalProperties: items: $ref: '#/definitions/api.SRTLog' type: array type: object publisher: additionalProperties: type: integer type: object subscriber: additionalProperties: items: type: integer type: array type: object type: object api.SRTConnection: properties: log: additionalProperties: items: $ref: '#/definitions/api.SRTLog' type: array type: object stats: $ref: '#/definitions/api.SRTStatistics' type: object api.SRTLog: properties: msg: items: type: string type: array ts: type: integer type: object api.SRTStatistics: properties: avail_recv_buf_bytes: description: The available space in the receiver's buffer, in bytes type: integer avail_send_buf_bytes: description: The available space in the sender's buffer, in bytes type: integer bandwidth_mbit: description: Estimated bandwidth of the network link, in Mbps type: number flight_size_pkt: description: The number of packets in flight type: integer flow_window_pkt: description: The maximum number of packets that can be "in flight" type: integer max_bandwidth_mbit: description: Transmission bandwidth limit, in Mbps type: number mss_bytes: description: Maximum Segment Size (MSS), in bytes type: integer pkt_recv_avg_belated_time_ms: description: Accumulated difference between the current time and the time-to-play of a packet that is received late type: integer pkt_send_period_us: description: Current minimum time interval between which consecutive packets are sent, in microseconds type: number recv_ack_pkt: description: The total number of received ACK (Acknowledgement) control packets type: integer recv_buf_bytes: description: Instantaneous (current) value of pktRcvBuf, expressed in bytes, including payload and all headers (IP, TCP, SRT) type: integer recv_buf_ms: description: The timespan (msec) of acknowledged packets in the receiver's buffer type: integer recv_buf_pkt: description: The number of acknowledged packets in receiver's buffer type: integer recv_bytes: description: Same as pktRecv, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer recv_drop_bytes: description: Same as pktRcvDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer recv_drop_pkt: description: The total number of dropped by the SRT receiver and, as a result, not delivered to the upstream application DATA packets type: integer recv_km_pkt: description: The total number of received KM (Key Material) control packets type: integer recv_loss__bytes: description: Same as pktRcvLoss, but expressed in bytes, including payload and all the headers (IP, TCP, SRT), bytes for the presently missing (either reordered or lost) packets' payloads are estimated based on the average packet size type: integer recv_loss_pkt: description: The total number of SRT DATA packets detected as presently missing (either reordered or lost) at the receiver side type: integer recv_nak_pkt: description: The total number of received NAK (Negative Acknowledgement) control packets type: integer recv_pkt: description: The total number of received DATA packets, including retransmitted packets type: integer recv_retran_pkts: description: The total number of retransmitted packets registered at the receiver side type: integer recv_tsbpd_delay_ms: description: Timestamp-based Packet Delivery Delay value set on the socket via SRTO_RCVLATENCY or SRTO_LATENCY type: integer recv_undecrypt_bytes: description: Same as pktRcvUndecrypt, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer recv_undecrypt_pkt: description: The total number of packets that failed to be decrypted at the receiver side type: integer recv_unique_bytes: description: Same as pktRecvUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer recv_unique_pkt: description: The total number of unique original, retransmitted or recovered by the packet filter DATA packets received in time, decrypted without errors and, as a result, scheduled for delivery to the upstream application by the SRT receiver. type: integer reorder_tolerance_pkt: description: Instant value of the packet reorder tolerance type: integer rtt_ms: description: Smoothed round-trip time (SRTT), an exponentially-weighted moving average (EWMA) of an endpoint's RTT samples, in milliseconds type: number send_buf_bytes: description: Instantaneous (current) value of pktSndBuf, but expressed in bytes, including payload and all headers (IP, TCP, SRT) type: integer send_buf_ms: description: The timespan (msec) of packets in the sender's buffer (unacknowledged packets) type: integer send_buf_pkt: description: The number of packets in the sender's buffer that are already scheduled for sending or even possibly sent, but not yet acknowledged type: integer send_drop_bytes: description: Same as pktSndDrop, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer send_drop_pkt: description: The total number of dropped by the SRT sender DATA packets that have no chance to be delivered in time type: integer send_duration_us: description: The total accumulated time in microseconds, during which the SRT sender has some data to transmit, including packets that have been sent, but not yet acknowledged type: integer send_km_pkt: description: The total number of sent KM (Key Material) control packets type: integer send_loss_pkt: description: The total number of data packets considered or reported as lost at the sender side. Does not correspond to the packets detected as lost at the receiver side. type: integer send_tsbpd_delay_ms: description: Timestamp-based Packet Delivery Delay value of the peer type: integer sent_ack_pkt: description: The total number of sent ACK (Acknowledgement) control packets type: integer sent_bytes: description: Same as pktSent, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer sent_nak_pkt: description: The total number of sent NAK (Negative Acknowledgement) control packets type: integer sent_pkt: description: The total number of sent DATA packets, including retransmitted packets type: integer sent_retrans_bytes: description: Same as pktRetrans, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer sent_retrans_pkt: description: The total number of retransmitted packets sent by the SRT sender type: integer sent_unique__bytes: description: Same as pktSentUnique, but expressed in bytes, including payload and all the headers (IP, TCP, SRT) type: integer sent_unique_pkt: description: The total number of unique DATA packets sent by the SRT sender type: integer timestamp_ms: description: The time elapsed, in milliseconds, since the SRT socket has been created type: integer type: object api.Session: properties: bandwidth_rx_kbit: description: kbit/s type: number bandwidth_tx_kbit: description: kbit/s type: number bytes_rx: type: integer bytes_tx: type: integer created_at: type: integer extra: type: string id: type: string local: type: string reference: type: string remote: type: string type: object api.SessionPeers: properties: local: additionalProperties: $ref: '#/definitions/api.SessionStats' type: object sessions: type: integer traffic_rx_mb: type: integer traffic_tx_mb: type: integer type: object api.SessionStats: properties: sessions: type: integer traffic_rx_mb: type: integer traffic_tx_mb: type: integer type: object api.SessionSummary: properties: active: $ref: '#/definitions/api.SessionSummaryActive' summary: $ref: '#/definitions/api.SessionSummarySummary' type: object api.SessionSummaryActive: properties: bandwidth_rx_mbit: description: mbit/s type: number bandwidth_tx_mbit: description: mbit/s type: number list: items: $ref: '#/definitions/api.Session' type: array max_bandwidth_rx_mbit: description: mbit/s type: number max_bandwidth_tx_mbit: description: mbit/s type: number max_sessions: type: integer sessions: type: integer type: object api.SessionSummarySummary: properties: local: additionalProperties: $ref: '#/definitions/api.SessionStats' type: object reference: additionalProperties: $ref: '#/definitions/api.SessionStats' type: object remote: additionalProperties: $ref: '#/definitions/api.SessionPeers' type: object sessions: type: integer traffic_rx_mb: type: integer traffic_tx_mb: type: integer type: object api.SessionsActive: additionalProperties: items: $ref: '#/definitions/api.Session' type: array type: object api.SessionsSummary: additionalProperties: $ref: '#/definitions/api.SessionSummary' type: object api.SetConfig: properties: address: type: string api: properties: access: properties: http: properties: allow: items: type: string type: array block: items: type: string type: array type: object https: properties: allow: items: type: string type: array block: items: type: string type: array type: object type: object auth: properties: auth0: properties: enable: type: boolean tenants: items: $ref: '#/definitions/config.Auth0Tenant' type: array type: object disable_localhost: type: boolean enable: type: boolean jwt: properties: secret: type: string type: object password: type: string username: type: string type: object read_only: type: boolean type: object created_at: type: string db: properties: dir: type: string type: object debug: properties: force_gc: type: integer profiling: type: boolean type: object ffmpeg: properties: access: properties: input: properties: allow: items: type: string type: array block: items: type: string type: array type: object output: properties: allow: items: type: string type: array block: items: type: string type: array type: object type: object binary: type: string log: properties: max_history: type: integer max_lines: type: integer type: object max_processes: type: integer type: object host: properties: auto: type: boolean name: items: type: string type: array type: object id: type: string log: properties: level: enum: - debug - info - warn - error - silent type: string max_lines: type: integer topics: items: type: string type: array type: object metrics: properties: enable: type: boolean enable_prometheus: type: boolean interval_sec: description: seconds type: integer range_sec: description: seconds type: integer type: object name: type: string playout: properties: enable: type: boolean max_port: type: integer min_port: type: integer type: object router: properties: blocked_prefixes: items: type: string type: array routes: additionalProperties: type: string type: object ui_path: type: string type: object rtmp: properties: address: type: string app: type: string enable: type: boolean enable_tls: type: boolean token: type: string type: object service: properties: enable: type: boolean token: type: string url: type: string type: object sessions: properties: enable: type: boolean ip_ignorelist: items: type: string type: array max_bitrate_mbit: type: integer max_sessions: type: integer persist: type: boolean persist_interval_sec: type: integer session_timeout_sec: type: integer type: object srt: properties: address: type: string enable: type: boolean log: properties: enable: type: boolean topics: items: type: string type: array type: object passphrase: type: string token: type: string type: object storage: properties: cors: properties: origins: items: type: string type: array type: object disk: properties: cache: properties: enable: type: boolean max_file_size_mbytes: type: integer max_size_mbytes: type: integer ttl_seconds: type: integer types: items: type: string type: array type: object dir: type: string max_size_mbytes: type: integer type: object memory: properties: auth: properties: enable: type: boolean password: type: string username: type: string type: object max_size_mbytes: type: integer purge: type: boolean type: object mimetypes_file: type: string type: object tls: properties: address: type: string auto: type: boolean cert_file: type: string enable: type: boolean key_file: type: string type: object update_check: type: boolean version: type: integer type: object api.Skills: properties: codecs: properties: audio: items: $ref: '#/definitions/api.SkillsCodec' type: array subtitle: items: $ref: '#/definitions/api.SkillsCodec' type: array video: items: $ref: '#/definitions/api.SkillsCodec' type: array type: object devices: properties: demuxers: items: $ref: '#/definitions/api.SkillsDevice' type: array muxers: items: $ref: '#/definitions/api.SkillsDevice' type: array type: object ffmpeg: properties: compiler: type: string configuration: type: string libraries: items: $ref: '#/definitions/api.SkillsLibrary' type: array version: type: string type: object filter: items: $ref: '#/definitions/api.SkillsFilter' type: array formats: properties: demuxers: items: $ref: '#/definitions/api.SkillsFormat' type: array muxers: items: $ref: '#/definitions/api.SkillsFormat' type: array type: object hwaccels: items: $ref: '#/definitions/api.SkillsHWAccel' type: array protocols: properties: input: items: $ref: '#/definitions/api.SkillsProtocol' type: array output: items: $ref: '#/definitions/api.SkillsProtocol' type: array type: object type: object api.SkillsCodec: properties: decoders: items: type: string type: array encoders: items: type: string type: array id: type: string name: type: string type: object api.SkillsDevice: properties: devices: items: $ref: '#/definitions/api.SkillsHWDevice' type: array id: type: string name: type: string type: object api.SkillsFilter: properties: id: type: string name: type: string type: object api.SkillsFormat: properties: id: type: string name: type: string type: object api.SkillsHWAccel: properties: id: type: string name: type: string type: object api.SkillsHWDevice: properties: extra: type: string id: type: string media: type: string name: type: string type: object api.SkillsLibrary: properties: compiled: type: string linked: type: string name: type: string type: object api.SkillsProtocol: properties: id: type: string name: type: string type: object api.Version: properties: arch: type: string build_date: type: string compiler: type: string number: type: string repository_branch: type: string repository_commit: type: string type: object api.WidgetProcess: properties: current_sessions: type: integer total_sessions: type: integer uptime: type: integer type: object config.Auth0Tenant: properties: audience: type: string clientid: type: string domain: type: string users: items: type: string type: array type: object info: contact: email: hello@datarhei.com name: datarhei Core Support url: https://www.datarhei.com description: Expose REST API for the datarhei Core license: name: Apache 2.0 url: https://github.com/datarhei/core/v16/blob/main/LICENSE title: datarhei Core API version: "3.0" paths: /{path}: get: description: Fetch a file from the filesystem. If the file is a directory, a index.html is returned, if it exists. operationId: diskfs-get-file parameters: - description: Path to file in: path name: path required: true type: string produces: - application/data - application/json responses: "200": description: OK schema: type: file "301": description: Moved Permanently schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' summary: Fetch a file from the filesystem /api: get: description: API version and build infos in case auth is valid or not required. If auth is required, just the name field is populated. operationId: about produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.About' security: - ApiKeyAuth: [] summary: API version and build infos /api/graph: get: description: Load GraphQL playground operationId: graph-playground produces: - text/html responses: "200": description: "" security: - ApiKeyAuth: [] summary: Load GraphQL playground /api/graph/query: post: consumes: - application/json description: Query the GraphAPI operationId: graph-query parameters: - description: GraphQL Query in: body name: query required: true schema: $ref: '#/definitions/api.GraphQuery' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.GraphResponse' "400": description: Bad Request schema: $ref: '#/definitions/api.GraphResponse' security: - ApiKeyAuth: [] summary: Query the GraphAPI /api/login: post: description: Retrieve valid JWT access and refresh tokens to use for accessing the API. Login either by username/password or Auth0 token operationId: jwt-login parameters: - description: Login data in: body name: data required: true schema: $ref: '#/definitions/api.Login' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.JWT' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "403": description: Forbidden schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - Auth0KeyAuth: [] summary: Retrieve an access and a refresh token /api/login/refresh: get: description: Retrieve a new access token by providing the refresh token operationId: jwt-refresh produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.JWTRefresh' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiRefreshKeyAuth: [] summary: Retrieve a new access token /api/swagger: get: description: Swagger UI for this API operationId: swagger produces: - text/html responses: "200": description: OK schema: type: string summary: Swagger UI for this API /api/v3/config: get: description: Retrieve the currently active Restreamer configuration operationId: config-3-get produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Config' security: - ApiKeyAuth: [] summary: Retrieve the currently active Restreamer configuration put: consumes: - application/json description: Update the current Restreamer configuration by providing a complete or partial configuration. Fields that are not provided will not be changed. operationId: config-3-set parameters: - description: Restreamer configuration in: body name: config required: true schema: $ref: '#/definitions/api.SetConfig' produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "409": description: Conflict schema: $ref: '#/definitions/api.ConfigError' security: - ApiKeyAuth: [] summary: Update the current Restreamer configuration /api/v3/config/reload: get: description: Reload the currently active configuration. This will trigger a restart of the Restreamer. operationId: config-3-reload produces: - text/plain responses: "200": description: OK schema: type: string security: - ApiKeyAuth: [] summary: Reload the currently active configuration /api/v3/fs/disk/: get: description: List all files on the filesystem. The listing can be ordered by name, size, or date of last modification in ascending or descending order. operationId: diskfs-3-list-files parameters: - description: glob pattern for file names in: query name: glob type: string - description: none, name, size, lastmod in: query name: sort type: string - description: asc, desc in: query name: order type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.FileInfo' type: array security: - ApiKeyAuth: [] summary: List all files on the filesystem /api/v3/fs/disk/{path}: delete: description: Remove a file from the filesystem operationId: diskfs-3-delete-file parameters: - description: Path to file in: path name: path required: true type: string produces: - text/plain responses: "200": description: OK schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Remove a file from the filesystem get: description: Fetch a file from the filesystem. The contents of that file are returned. operationId: diskfs-3-get-file parameters: - description: Path to file in: path name: path required: true type: string produces: - application/data - application/json responses: "200": description: OK schema: type: file "301": description: Moved Permanently schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Fetch a file from the filesystem put: consumes: - application/data description: Writes or overwrites a file on the filesystem operationId: diskfs-3-put-file parameters: - description: Path to file in: path name: path required: true type: string - description: File data in: body name: data required: true schema: items: type: integer type: array produces: - text/plain - application/json responses: "201": description: Created schema: type: string "204": description: No Content schema: type: string "507": description: Insufficient Storage schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Add a file to the filesystem /api/v3/fs/mem/: get: description: List all files on the memory filesystem. The listing can be ordered by name, size, or date of last modification in ascending or descending order. operationId: memfs-3-list-files parameters: - description: glob pattern for file names in: query name: glob type: string - description: none, name, size, lastmod in: query name: sort type: string - description: asc, desc in: query name: order type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.FileInfo' type: array security: - ApiKeyAuth: [] summary: List all files on the memory filesystem /api/v3/fs/mem/{path}: delete: description: Remove a file from the memory filesystem operationId: memfs-delete-file-api parameters: - description: Path to file in: path name: path required: true type: string produces: - text/plain responses: "200": description: OK schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Remove a file from the memory filesystem get: description: Fetch a file from the memory filesystem operationId: memfs-3-get-file-api parameters: - description: Path to file in: path name: path required: true type: string produces: - application/data - application/json responses: "200": description: OK schema: type: file "301": description: Moved Permanently schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Fetch a file from the memory filesystem patch: consumes: - application/data description: Create a link to a file in the memory filesystem. The file linked to has to exist. operationId: memfs-3-patch parameters: - description: Path to file in: path name: path required: true type: string - description: Path to the file to link to in: body name: url required: true schema: type: string produces: - text/plain - application/json responses: "201": description: Created schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Create a link to a file in the memory filesystem put: consumes: - application/data description: Writes or overwrites a file on the memory filesystem operationId: memfs-3-put-file-api parameters: - description: Path to file in: path name: path required: true type: string - description: File data in: body name: data required: true schema: items: type: integer type: array produces: - text/plain - application/json responses: "201": description: Created schema: type: string "204": description: No Content schema: type: string "507": description: Insufficient Storage schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Add a file to the memory filesystem /api/v3/log: get: description: Get the last log lines of the Restreamer application operationId: log-3 parameters: - description: Format of the list of log events (*console, raw) in: query name: format type: string produces: - application/json responses: "200": description: application log schema: items: type: string type: array security: - ApiKeyAuth: [] summary: Application log /api/v3/metadata/{key}: get: description: Retrieve the previously stored JSON metadata under the given key. If the key is empty, all metadata will be returned. operationId: metadata-3-get parameters: - description: Key for data store in: path name: key required: true type: string produces: - application/json responses: "200": description: OK schema: {} "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Retrieve JSON metadata from a key put: description: Add arbitrary JSON metadata under the given key. If the key exists, all already stored metadata with this key will be overwritten. If the key doesn't exist, it will be created. operationId: metadata-3-set parameters: - description: Key for data store in: path name: key required: true type: string - description: Arbitrary JSON data in: body name: data required: true schema: {} produces: - application/json responses: "200": description: OK schema: {} "400": description: Bad Request schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Add JSON metadata under the given key /api/v3/metrics: post: consumes: - application/json description: Query the collected metrics operationId: metrics-3-metrics parameters: - description: Metrics query in: body name: config required: true schema: $ref: '#/definitions/api.MetricsQuery' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.MetricsResponse' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Query the collected metrics /api/v3/process: get: description: List all known processes. Use the query parameter to filter the listed processes. operationId: restream-3-get-all parameters: - description: Comma separated list of fields (config, state, report, metadata) that will be part of the output. If empty, all fields will be part of the output in: query name: filter type: string - description: Return only these process that have this reference value. Overrides a list of IDs. If empty, the reference will be ignored in: query name: reference type: string - description: Comma separated list of process ids to list in: query name: id type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.Process' type: array security: - ApiKeyAuth: [] summary: List all known processes post: consumes: - application/json description: Add a new FFmpeg process operationId: restream-3-add parameters: - description: Process config in: body name: config required: true schema: $ref: '#/definitions/api.ProcessConfig' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.ProcessConfig' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Add a new process /api/v3/process/{id}: delete: description: Delete a process by its ID operationId: restream-3-delete parameters: - description: Process ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Delete a process by its ID get: description: List a process by its ID. Use the filter parameter to specifiy the level of detail of the output. operationId: restream-3-get parameters: - description: Process ID in: path name: id required: true type: string - description: Comma separated list of fields (config, state, report, metadata) to be part of the output. If empty, all fields will be part of the output in: query name: filter type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Process' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: List a process by its ID put: consumes: - application/json description: Replace an existing process. This is a shortcut for DELETE+POST. operationId: restream-3-update parameters: - description: Process ID in: path name: id required: true type: string - description: Process config in: body name: config required: true schema: $ref: '#/definitions/api.ProcessConfig' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.ProcessConfig' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Replace an existing process /api/v3/process/{id}/command: put: consumes: - application/json description: 'Issue a command to a process: start, stop, reload, restart' operationId: restream-3-command parameters: - description: Process ID in: path name: id required: true type: string - description: Process command in: body name: command required: true schema: $ref: '#/definitions/api.Command' produces: - application/json responses: "200": description: OK schema: type: string "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Issue a command to a process /api/v3/process/{id}/config: get: description: Get the configuration of a process. This is the configuration as provided by Add or Update. operationId: restream-3-get-config parameters: - description: Process ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.ProcessConfig' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Get the configuration of a process /api/v3/process/{id}/metadata/{key}: get: description: Retrieve the previously stored JSON metadata under the given key. If the key is empty, all metadata will be returned. operationId: restream-3-get-process-metadata parameters: - description: Process ID in: path name: id required: true type: string - description: Key for data store in: path name: key required: true type: string produces: - application/json responses: "200": description: OK schema: {} "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Retrieve JSON metadata stored with a process under a key put: description: Add arbitrary JSON metadata under the given key. If the key exists, all already stored metadata with this key will be overwritten. If the key doesn't exist, it will be created. operationId: restream-3-set-process-metadata parameters: - description: Process ID in: path name: id required: true type: string - description: Key for data store in: path name: key required: true type: string - description: Arbitrary JSON data. The null value will remove the key and its contents in: body name: data required: true schema: {} produces: - application/json responses: "200": description: OK schema: {} "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Add JSON metadata with a process under the given key /api/v3/process/{id}/playout/{inputid}/errorframe/{name}: post: consumes: - application/octet-stream description: Upload an error frame which will be encoded immediately operationId: restream-3-playout-errorframe parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string - description: Any filename with a suitable extension in: path name: name required: true type: string - description: Image to be used a error frame in: body name: image required: true schema: items: type: integer type: array produces: - text/plain - application/json responses: "204": description: No Content schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Upload an error frame /api/v3/process/{id}/playout/{inputid}/errorframe/encode: get: description: Immediately encode the errorframe (if available and looping) operationId: restream-3-playout-errorframencode parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string produces: - text/plain - application/json responses: "204": description: No Content schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Encode the errorframe /api/v3/process/{id}/playout/{inputid}/keyframe/{name}: get: description: Get the last keyframe of an input of a process. The extension of the name determines the return type. operationId: restream-3-playout-keyframe parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string - description: Any filename with an extension of .jpg or .png in: path name: name required: true type: string produces: - image/jpeg - image/png - application/json responses: "200": description: OK schema: type: file "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Get the last keyframe /api/v3/process/{id}/playout/{inputid}/reopen: get: description: Close the current input stream such that it will be automatically re-opened operationId: restream-3-playout-reopen-input parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string produces: - text/plain responses: "200": description: OK schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Close the current input stream /api/v3/process/{id}/playout/{inputid}/status: get: description: Get the current playout status of an input of a process operationId: restream-3-playout-status parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.PlayoutStatus' "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Get the current playout status /api/v3/process/{id}/playout/{inputid}/stream: put: consumes: - text/plain description: Replace the current stream with the one from the given URL. The switch will only happen if the stream parameters match. operationId: restream-3-playout-stream parameters: - description: Process ID in: path name: id required: true type: string - description: Process Input ID in: path name: inputid required: true type: string - description: URL of the new stream in: body name: url required: true schema: type: string produces: - text/plain - application/json responses: "204": description: No Content schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' "500": description: Internal Server Error schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Switch to a new stream /api/v3/process/{id}/probe: get: description: Probe an existing process to get a detailed stream information on the inputs operationId: restream-3-probe parameters: - description: Process ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Probe' security: - ApiKeyAuth: [] summary: Probe a process /api/v3/process/{id}/report: get: description: Get the logs and the log history of a process operationId: restream-3-get-report parameters: - description: Process ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.ProcessReport' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Get the logs of a process /api/v3/process/{id}/state: get: description: Get the state and progress data of a process operationId: restream-3-get-state parameters: - description: Process ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.ProcessState' "400": description: Bad Request schema: $ref: '#/definitions/api.Error' "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - ApiKeyAuth: [] summary: Get the state of a process /api/v3/rtmp: get: description: List all currently publishing RTMP streams operationId: rtmp-3-list-channels produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.RTMPChannel' type: array security: - ApiKeyAuth: [] summary: List all publishing RTMP streams /api/v3/session: get: description: Get a summary of all active and past sessions of the given collector operationId: session-3-summary parameters: - description: Comma separated list of collectors in: query name: collectors type: string produces: - application/json responses: "200": description: Sessions summary schema: $ref: '#/definitions/api.SessionsSummary' security: - ApiKeyAuth: [] summary: Get a summary of all active and past sessions /api/v3/session/active: get: description: Get a minimal summary of all active sessions (i.e. number of sessions, bandwidth) operationId: session-3-current parameters: - description: Comma separated list of collectors in: query name: collectors type: string produces: - application/json responses: "200": description: Active sessions listing schema: $ref: '#/definitions/api.SessionsActive' security: - ApiKeyAuth: [] summary: Get a minimal summary of all active sessions /api/v3/skills: get: description: List all detected FFmpeg capabilities operationId: skills-3 produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Skills' security: - ApiKeyAuth: [] summary: FFmpeg capabilities /api/v3/skills/reload: get: description: Refresh the available FFmpeg capabilities operationId: skills-3-reload produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.Skills' security: - ApiKeyAuth: [] summary: Refresh FFmpeg capabilities /api/v3/srt: get: description: List all currently publishing SRT streams. This endpoint is EXPERIMENTAL and may change in future. operationId: srt-3-list-channels produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/api.SRTChannels' type: array security: - ApiKeyAuth: [] summary: List all publishing SRT treams /api/v3/widget/process/{id}: get: description: Fetch minimal statistics about a process, which is not protected by any auth. operationId: widget-3-get parameters: - description: ID of a process in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api.WidgetProcess' "404": description: Not Found schema: $ref: '#/definitions/api.Error' summary: Fetch minimal statistics about a process /memfs/{path}: delete: description: Remove a file from the memory filesystem operationId: memfs-delete-file parameters: - description: Path to file in: path name: path required: true type: string produces: - text/plain responses: "200": description: OK schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' security: - BasicAuth: [] summary: Remove a file from the memory filesystem get: description: Fetch a file from the memory filesystem operationId: memfs-get-file parameters: - description: Path to file in: path name: path required: true type: string produces: - application/data - application/json responses: "200": description: OK schema: type: file "301": description: Moved Permanently schema: type: string "404": description: Not Found schema: $ref: '#/definitions/api.Error' summary: Fetch a file from the memory filesystem put: consumes: - application/data description: Writes or overwrites a file on the memory filesystem operationId: memfs-put-file parameters: - description: Path to file in: path name: path required: true type: string - description: File data in: body name: data required: true schema: items: type: integer type: array produces: - text/plain - application/json responses: "201": description: Created schema: type: string "204": description: No Content schema: type: string "507": description: Insufficient Storage schema: $ref: '#/definitions/api.Error' security: - BasicAuth: [] summary: Add a file to the memory filesystem /metrics: get: description: Prometheus metrics operationId: metrics produces: - text/plain responses: "200": description: OK schema: type: string summary: Prometheus metrics /ping: get: description: Liveliness check operationId: ping produces: - text/plain responses: "200": description: pong schema: type: string summary: Liveliness check /profiling: get: description: Retrieve profiling data from the application operationId: profiling produces: - text/html responses: "200": description: OK schema: type: string "404": description: Not Found schema: type: string summary: Retrieve profiling data from the application securityDefinitions: ApiKeyAuth: in: header name: Authorization type: apiKey ApiRefreshKeyAuth: in: header name: Authorization type: apiKey Auth0KeyAuth: in: header name: Authorization type: apiKey BasicAuth: type: basic swagger: "2.0"