{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Configuration file schema",
    "type": "object",
    "properties": {
        "httpsCertificatePath": {
            "description": "Path to the certificate",
            "type": "string"
        },
        "databaseFileName": {
            "description": "Path to SQLite database",
            "type": "string"
        },
        "enableHtmlEmail": {
            "description": "Determines if HTML email should be sent",
            "type": "boolean",
            "default": true
        },
        "enableHttp": {
            "description": "Determines if HTTP is enabled",
            "type": "boolean"
        },
        "enableHttps": {
            "description": "Determines if HTTPS is enabled",
            "type": "boolean"
        },
        "httpListenIP": {
            "description": "HTTP listen IP",
            "type": "string"
        },
        "httpsListenIP": {
            "description": "HTTPS listen IP",
            "type": "string"
        },
        "httpListenPort": {
            "description": "HTTP listen port",
            "type": "integer"
        },
        "httpsListenPort": {
            "description": "HTTPS listen port",
            "type": "integer"
        },
        "enableWebInterface": {
            "description": "Determines if sent email history should be accessible for view",
            "type": "boolean"
        },
        "webInterfaceIP": {
            "description": "Web Interface IP",
            "type": "string"
        },
        "webInterfacePort": {
            "description": "Web Interface port",
            "type": "integer"
        },
        "recipientEmails": {
            "description": "Recipient emails",
            "type": [
                "string",
                "array"
            ]
        },
        "smtpOptions": {
            "description": "Nodemailer SMTP options",
            "type": "object",
            "properties": {
                "port": {
                    "description": "SMTP Port",
                    "type": "integer"
                },
                "host": {
                    "description": "SMTP Host",
                    "type": "string"
                },
                "tls": {
                    "description": "Defines additional node.js TLSSocket options to be passed to the socket constructor",
                    "type": "object",
                    "properties": {
                        "rejectUnauthorized": {
                            "description": "If not false, the server certificate is verified against the list of supplied CAs",
                            "type": "boolean"
                        }
                    }
                },
                "auth": {
                    "description": "Defines authentication data",
                    "type": "object",
                    "properties": {
                        "user": {
                            "description": "User name",
                            "type": "string"
                        },
                        "pass": {
                            "description": "The password for the user if normal login is used"
                        }
                    }
                }
            }
        },
        "formTargets": {
            "description": "Form keys",
            "type": "object",
            "patternProperties": {
                ".*": {
                    "oneOf": [
                        {
                            "type": "object",
                            "properties": {
                                "subject": {
                                    "type": "string"
                                },
                                "recipient": {
                                    "type": [
                                        "array",
                                        "string"
                                    ]
                                }
                            }
                        },
                        {
                            "type": "array"
                        },
                        {
                            "type": "string"
                        }
                    ]
                }
            }
        },
        "fromEmail": {
            "description": "Sender's email",
            "type": "string"
        },
        "subject": {
            "description": "Email subject",
            "type": "string"
        },
        "maxHttpRequestSize": {
            "description": "Maximum HTTP Request Size",
            "type": "string"
        },
        "httpsPrivateKeyPath": {
            "description": "Path to the certificate private key",
            "type": "string"
        },
        "logLevel": {
            "description": "Log level",
            "type": "string"
        },
        "redirectFieldName": {
            "description": "Page to be redirected after the form is submitted.",
            "type": "string"
        },
        "reCaptchaSiteKey": {
            "description": "Recaptcha Site Key.",
            "type": "string"
        },
        "reCaptchaSecret": {
            "description": "Recaptcha Secret Key",
            "type": "string"
        },
        "enableRecaptcha": {
            "description": "Determines if g-recaptcha-response checking should be enabled.",
            "type": "boolean"
        }
    },
    "required": [
        "recipientEmails"
    ]
}