openapi: 3.0.0 info: version: 1.0.0 title: rtsp-simple-server API description: API of rtsp-simple-server, a RTSP / RTMP / HLS server and proxy. license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: http://localhost:9997 components: schemas: Conf: type: object properties: # general logLevel: type: string logDestinations: type: array items: type: string logFile: type: string readTimeout: type: integer writeTimeout: type: integer readBufferCount: type: integer api: type: boolean apiAddress: type: string metrics: type: boolean metricsAddress: type: string pprof: type: boolean pprofAddress: type: string runOnConnect: type: string runOnConnectRestart: type: boolean # rtsp rtspDisable: type: boolean protocols: type: array items: type: string encryption: type: string rtspAddress: type: string rtspsAddress: type: string rtpAddress: type: string rtcpAddress: type: string multicastIPRange: type: string multicastRTPPort: type: integer multicastRTCPPort: type: integer serverKey: type: string serverCert: type: string authMethods: type: array items: type: string readBufferSize: type: integer # rtmp rtmpDisable: type: boolean rtmpAddress: type: string # hls hlsDisable: type: boolean hlsAddress: type: string hlsAlwaysRemux: type: boolean hlsSegmentCount: type: integer hlsSegmentDuration: type: integer hlsAllowOrigin: type: string paths: type: object additionalProperties: $ref: '#/components/schemas/PathConf' PathConf: type: object properties: # source source: type: string sourceProtocol: type: string sourceAnyPortEnable: type: boolean sourceFingerprint: type: string sourceOnDemand: type: boolean sourceOnDemandStartTimeout: type: integer sourceOnDemandCloseAfter: type: integer sourceRedirect: type: string disablePublisherOverride: type: boolean fallback: type: string # authentication publishUser: type: string publishPass: type: string publishIPs: type: array items: type: string readUser: type: string readPass: type: string readIPs: type: array items: type: string # custom commands runOnInit: type: string runOnInitRestart: type: boolean runOnDemand: type: string runOnDemandRestart: type: boolean runOnDemandStartTimeout: type: integer runOnDemandCloseAfter: type: integer runOnPublish: type: string runOnPublishRestart: type: boolean runOnRead: type: string runOnReadRestart: type: boolean Path: type: object properties: confName: type: string conf: $ref: '#/components/schemas/PathConf' source: oneOf: - $ref: '#/components/schemas/PathSourceRTSPSession' - $ref: '#/components/schemas/PathSourceRTSPSSession' - $ref: '#/components/schemas/PathSourceRTMPConn' - $ref: '#/components/schemas/PathSourceRTSPSource' - $ref: '#/components/schemas/PathSourceRTMPSource' sourceReady: type: boolean readers: type: array items: oneOf: - $ref: '#/components/schemas/PathReaderRTSPSession' - $ref: '#/components/schemas/PathReaderRTSPSSession' - $ref: '#/components/schemas/PathReaderRTMPConn' - $ref: '#/components/schemas/PathReaderHLSMuxer' PathSourceRTSPSession: type: object properties: type: type: string enum: [rtspsession] id: type: string PathSourceRTSPSSession: type: object properties: type: type: string enum: [rtspssession] id: type: string PathSourceRTMPConn: type: object properties: type: type: string enum: [rtmpconn] id: type: string PathSourceRTSPSource: type: object properties: type: type: string enum: [rtspSource] PathSourceRTMPSource: type: object properties: type: type: string enum: [rtmpSource] PathReaderRTSPSession: type: object properties: type: type: string enum: [rtspsession] id: type: string PathReaderRTSPSSession: type: object properties: type: type: string enum: [rtspssession] id: type: string PathReaderRTMPConn: type: object properties: type: type: string enum: [rtmpconn] id: type: string PathReaderHLSMuxer: type: object properties: type: type: string enum: [hlsMuxer] RTSPSession: type: object properties: remoteAddr: type: string state: type: string enum: [idle, read, publish] RTSPSSession: type: object properties: remoteAddr: type: string state: type: string enum: [idle, read, publish] RTMPConn: type: object properties: remoteAddr: type: string state: type: string enum: [idle, read, publish] paths: /v1/config/get: get: operationId: configGet summary: returns the current configuration. description: '' responses: '200': description: the request was successful. content: application/json: schema: $ref: '#/components/schemas/Conf' '500': description: internal server error. /v1/config/set: post: operationId: configSet summary: changes the current configuration. description: all fields are optional. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Conf' responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/config/paths/add/{name}: post: operationId: configPathsAdd summary: adds the configuration of a path. description: all fields are optional. parameters: - name: name in: path required: true description: the name of the path. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PathConf' responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/config/paths/edit/{name}: post: operationId: configPathsEdit summary: changes the configuration of a path. description: all fields are optional. parameters: - name: name in: path required: true description: the name of the path. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PathConf' responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/config/paths/remove/{name}: post: operationId: configPathsRemove summary: removes the configuration of a path. description: '' parameters: - name: name in: path required: true description: the name of the path. schema: type: string responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/paths/list: get: operationId: pathsList summary: returns all active paths. description: '' responses: '200': description: the request was successful. content: application/json: schema: items: type: object additionalProperties: $ref: '#/components/schemas/Path' '400': description: invalid request. '500': description: internal server error. /v1/rtspsessions/list: get: operationId: rtspSessionsList summary: returns all active RTSP sessions. description: '' responses: '200': description: the request was successful. content: application/json: schema: items: type: object additionalProperties: $ref: '#/components/schemas/RTSPSession' '400': description: invalid request. '500': description: internal server error. /v1/rtspsessions/kick/{id}: post: operationId: rtspSessionsKick summary: kicks out a RTSP session from the server. description: '' parameters: - name: id in: path required: true description: the ID of the session. schema: type: string responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/rtspssessions/list: get: operationId: rtspsSessionsList summary: returns all active RTSPS sessions. description: '' responses: '200': description: the request was successful. content: application/json: schema: items: type: object additionalProperties: $ref: '#/components/schemas/RTSPSSession' '400': description: invalid request. '500': description: internal server error. /v1/rtspssessions/kick/{id}: post: operationId: rtspsSessionsKick summary: kicks out a RTSPS session from the server. description: '' parameters: - name: id in: path required: true description: the ID of the session. schema: type: string responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error. /v1/rtmpconns/list: get: operationId: rtmpConnsList summary: returns all active RTMP connections. description: '' responses: '200': description: the request was successful. content: application/json: schema: items: type: object additionalProperties: $ref: '#/components/schemas/RTMPConn' '400': description: invalid request. '500': description: internal server error. /v1/rtmpconns/kick/{id}: post: operationId: rtmpConnsKick summary: kicks out a RTMP connection from the server. description: '' parameters: - name: id in: path required: true description: the ID of the connection. schema: type: string responses: '200': description: the request was successful. '400': description: invalid request. '500': description: internal server error.