{
	"properties": [
		{
			"name": "DOTENV_PATH",
			"type": "java.lang.String",
			"description": "Path to the .env configuration file"
		},
		{
			"name": "KMS_URIS",
			"type": "java.lang.String",
			"description": "KMS URL's to which OpenVidu Server will try to connect. They are tested in order until a valid one is found",
			"defaultValue": "[\"ws://localhost:8888/kurento\"]"
		},
		{
			"name": "OPENVIDU_SECRET",
			"type": "java.lang.String",
			"description": "Secret used to connect to OpenVidu Server. This value is required when using the REST API or any server client, as well as when connecting to openvidu-server dashboard",
			"defaultValue": "MY_SECRET"
		},
		{
			"name": "OPENVIDU_PUBLICURL",
			"type": "java.lang.String",
			"description": "URL to connect clients to OpenVidu Server. This must be the full IP of your OpenVidu Server, including protocol, host and port (for example: https://my.openvidu.server.ip:4443). If no port argument is provided, 'server.port' param will be appended to it",
			"defaultValue": "local"
		},
		{
			"name": "OPENVIDU_CDR",
			"type": "java.lang.Boolean",
			"description": "Whether to enable Call Detail Record or not",
			"defaultValue": false
		},
		{
			"name": "OPENVIDU_CDR_PATH",
			"type": "java.lang.String",
			"description": "Where to store CDR files",
			"defaultValue": "/opt/openvidu/cdr"
		},
		{
			"name": "OPENVIDU_RECORDING",
			"type": "java.lang.Boolean",
			"description": "Whether to start OpenVidu Server with recording module service available or not (a Docker image will be downloaded during the first execution). Apart from setting this param to true, it is also necessary to explicitly configure sessions to be recorded",
			"defaultValue": false
		},
		{
			"name": "OPENVIDU_RECORDING_PATH",
			"type": "java.lang.String",
			"description": "Where to store the recorded video files",
			"defaultValue": "/opt/openvidu/recordings"
		},
		{
			"name": "OPENVIDU_RECORDING_PUBLIC_ACCESS",
			"type": "java.lang.Boolean",
			"description": "'true' to allow public access to the video files specified in 'openviu.recording.path'. 'false' to only allow access to authenticated users",
			"defaultValue": false
		},
		{
			"name": "OPENVIDU_RECORDING_NOTIFICATION",
			"type": "java.lang.String",
			"description": "Which users will receive a notfication (client events 'recordingStarted' and 'recordingStopped') when recording starts and stops: 'none', 'publisher_moderator', 'all'",
			"defaultValue": "publisher_moderator"
		},
		{
			"name": "OPENVIDU_RECORDING_CUSTOM_LAYOUT",
			"type": "java.lang.String",
			"description": "Where should OpenVidu Server look for custom recording layouts",
			"defaultValue": "/opt/openvidu/custom-layout"
		},
		{
			"name": "OPENVIDU_RECORDING_VERSION",
			"type": "java.lang.String",
			"description": "Tag for openvidu/openvidu-recording Docker image"
		},
		{
			"name": "OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT",
			"type": "java.lang.Integer",
			"description": "Timeout in seconds for automatically stopping the recording of a session when last user disconnects or when it starts and no user is publishing (only if RecordingMode.MANUAL)",
			"defaultValue": 120
		},
		{
			"name": "OPENVIDU_RECORDING_COMPOSED_URL",
			"type": "java.lang.String",
			"description": "URL the composed-video recording dockerized Chrome will use to connect to the recording layouts inside OpenVidu Server host. This will affect all video recording layouts (default one BEST_FIT, all CUSTOM layouts). This allows changing the default URL, which is 'OPENVIDU_PUBLICURL', for those cases where OpenVidu Server host does not allow back and forth connections using the public url from inside the host",
			"defaultValue": ""
		},
		{
			"name": "OPENVIDU_WEBHOOK",
			"type": "java.lang.Boolean",
			"description": "'true' to enable OpenVidu Server Webhook service. 'false' otherwise",
			"defaultValue": false
		},
		{
			"name": "OPENVIDU_WEBHOOK_ENDPOINT",
			"type": "java.lang.String",
			"description": "HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages",
			"defaultValue": ""
		},
		{
			"name": "OPENVIDU_WEBHOOK_HEADERS",
			"type": "java.lang.String",
			"description": "List of headers that OpenVidu Server Webhook service will attach to HTTP POST messages",
			"defaultValue": "[]"
		},
		{
			"name": "OPENVIDU_WEBHOOK_EVENTS",
			"type": "java.lang.String",
			"description": "List of events that will be sent by OpenVidu Server Webhook service",
			"defaultValue": "[\"sessionCreated\",\"sessionDestroyed\",\"participantJoined\",\"participantLeft\",\"webrtcConnectionCreated\",\"webrtcConnectionDestroyed\",\"recordingStatusChanged\"]"
		},
		{
			"name": "OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH",
			"type": "java.lang.Integer",
			"description": "Maximum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
			"defaultValue": 1000
		},
		{
			"name": "OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH",
			"type": "java.lang.Integer",
			"description": "Minimum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained",
			"defaultValue": 300
		},
		{
			"name": "OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH",
			"type": "java.lang.Integer",
			"description": "Maximum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
			"defaultValue": 1000
		},
		{
			"name": "OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH",
			"type": "java.lang.Integer",
			"description": "Minimum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained",
			"defaultValue": 300
		},
		{
			"name": "OPENVIDU_SESSIONS_GARBAGE_INTERVAL",
			"type": "java.lang.Integer",
			"description": "How often the garbage collector of non active sessions runs. This helps cleaning up sessions that have been initialized through REST API (and maybe tokens have been created for them) but have had no users connected. Default to 900s (15 mins). 0 to disable non active sessions garbage collector",
			"defaultValue": 900
		},
		{
			"name": "OPENVIDU_SESSIONS_GARBAGE_THRESHOLD",
			"type": "java.lang.Integer",
			"description": "Minimum time in seconds that a non active session must have been in existence for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour). If non active sessions garbage collector is disabled (property 'OPENVIDU_SESSIONS_GARBAGE_INTERVAL' to 0) this property is ignored",
			"defaultValue": 3600
		},
		{
			"name": "COTURN_IP",
			"type": "java.lang.String",
			"description": "Coturn IP of a deployed coturn server"
		},
		{
			"name": "COTURN_REDIS_IP",
			"type": "java.lang.String",
			"description": "Redis IP where OpenVidu Server should connect to store TURN credentials",
			"defaultValue": "127.0.0.1"
		},
		{
			"name": "COTURN_REDIS_DBNAME",
			"type": "java.lang.String",
			"description": "Redis database where to store TURN credentials",
			"defaultValue": "0"
		},
		{
			"name": "COTURN_REDIS_PASSWORD",
			"type": "java.lang.String",
			"description": "Password to connect OpenVidu Server to Redis database to store TURN credentials",
			"defaultValue": "turn"
		},
		{
			"name": "COTURN_REDIS_CONNECT_TIMEOUT",
			"type": "java.lang.Integer",
			"description": "Timeout in seconds when OpenVidu Server is connecting to Redis database to store TURN credentials",
			"defaultValue": 30
		},
		{
			"name": "CERTIFICATE_TYPE",
			"type": "java.lang.String",
			"description": "Which kind of certificate shall be used by OpenVidu in production mode [selfsigned,letsencrypt,owncert]"
		},
		{
			"name": "jsonRpcClientWebSocket.reconnectionDelay",
			"type": "java.lang.Integer",
			"description": "Reconnection delay when Kurento Media Server connection is lost (ms)",
			"defaultValue": 2000
		},
		{
			"name": "jsonRpcClientWebSocket.timeout",
			"type": "java.lang.Integer",
			"description": "Timeout for RPC operations sent to KMS through websocket (ms)",
			"defaultValue": 60000
		},
		{
			"name": "jsonRpcClientWebSocket.packetSize",
			"type": "java.lang.Integer",
			"description": "Maximum size of packets sent through websocket",
			"defaultValue": 1000000
		},
		{
			"name": "jsonRpcClientWebSocket.connectionTimeout",
			"type": "java.lang.Integer",
			"description": "Timeout for openvidu-server to connect through websocket to KMS (ms)",
			"defaultValue": 5000
		},
		{
			"name": "kurento.client.keepAliveTime",
			"type": "java.lang.Integer",
			"description": "Heartbeat frecuency between openvidu-server and KMS (ms)",
			"defaultValue": 240000
		},
		{
			"name": "ws.sessionReconnectionTime",
			"type": "java.lang.Integer",
			"description": "Reconnection timeout between clients and openvidu-server (seconds)",
			"defaultValue": 10
		},
		{
			"name": "ws.maxSessions",
			"type": "java.lang.Long",
			"description": "Maximum number of websocket sessions that openvidu-server will be able to hold",
			"defaultValue": 9223372036854775807
		}
	]
}