{
    "jellyfin": {
        "meta": {
            "name": "Jellyfin",
            "description": "Settings for connecting to Jellyfin"
        },
        "username": {
            "name": "Jellyfin Username",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "username",
            "description": "It is recommended to create a limited admin account for this program."
        },
        "password": {
            "name": "Jellyfin Password",
            "required": true,
            "requires_restart": true,
            "type": "password",
            "value": "password"
        },
        "server": {
            "name": "Server address",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "http://jellyfin.local:8096",
            "description": "Jellyfin server address. Can be public, or local for security purposes."
        },
        "public_server": {
            "name": "Public address",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "https://jellyf.in:443",
            "description": "Publicly accessible Jellyfin address for invite form. Leave blank to reuse the above address."
        },
        "client": {
            "name": "Client Name",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "jfa-go",
            "description": "This and below settings will show on the Jellyfin dashboard when the program connects. You may as well leave them alone."
        },
        "version": {
            "name": "Version Number",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "{version}"
        },
        "device": {
            "name": "Device Name",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "jfa-go"
        },
        "device_id": {
            "name": "Device ID",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "jfa-go-{version}"
        }
    },
    "ui": {
        "meta": {
            "name": "General",
            "description": "Settings related to the UI and program functionality."
        },
        "theme": {
            "name": "Default Look",
            "required": false,
            "requires_restart": true,
            "type": "select",
            "options": [
                "Bootstrap (Light)",
                "Jellyfin (Dark)",
                "Custom CSS"
            ],
            "value": "Jellyfin (Dark)",
            "description": "Default appearance for all users."
        },
        "host": {
            "name": "Address",
            "required": true,
            "requires_restart": true,
            "type": "text",
            "value": "0.0.0.0",
            "description": "Set 0.0.0.0 to run on localhost"
        },
        "port": {
            "name": "Port",
            "required": true,
            "requires_restart": true,
            "type": "number",
            "value": 8056
        },
        "jellyfin_login": {
            "name": "Use Jellyfin for authentication",
            "required": false,
            "requires_restart": true,
            "type": "bool",
            "value": true,
            "description": "Enable this to use Jellyfin users instead of the below username and pw."
        },
        "admin_only": {
            "name": "Allow admin users only",
            "required": false,
            "requires_restart": true,
            "depends_true": "jellyfin_login",
            "type": "bool",
            "value": true,
            "description": "Allows only admin users on Jellyfin to access the admin page."
        },
        "username": {
            "name": "Web Username",
            "required": true,
            "requires_restart": true,
            "depends_false": "jellyfin_login",
            "type": "text",
            "value": "your username",
            "description": "Username for admin page (Leave blank if using jellyfin_login)"
        },
        "password": {
            "name": "Web Password",
            "required": true,
            "requires_restart": true,
            "depends_false": "jellyfin_login",
            "type": "password",
            "value": "your password",
            "description": "Password for admin page (Leave blank if using jellyfin_login)"
        },
        "email": {
            "name": "Admin email address",
            "required": false,
            "requires_restart": false,
            "depends_false": "jellyfin_login",
            "type": "text",
            "value": "example@example.com",
            "description": "Address to send notifications to (Leave blank if using jellyfin_login)"
        },
        "debug": {
            "name": "Debug logging",
            "required": false,
            "requires_restart": true,
            "type": "bool",
            "value": false,
            "description": "Enables debug logging and exposes pprof as a route (Don't use in production!)"
        },
        "contact_message": {
            "name": "Contact message",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "Need help? contact me.",
            "description": "Displayed at bottom of all pages except admin"
        },
        "help_message": {
            "name": "Help message",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "Enter your details to create an account.",
            "description": "Displayed at top of invite form."
        },
        "success_message": {
            "name": "Success message",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "Your account has been created. Click below to continue to Jellyfin.",
            "description": "Displayed when a user creates an account"
        },
        "bs5": {
            "name": "Use Bootstrap 5",
            "required": false,
            "requires_restart": false,
            "type": "bool",
            "value": false,
            "description": "Use Bootstrap 5 (currently in alpha). This also removes the need for jQuery, so the page should load faster."
        }
    },
    "password_validation": {
        "meta": {
            "name": "Password Validation",
            "description": "Password validation (minimum length, etc.)"
        },
        "enabled": {
            "name": "Enabled",
            "required": false,
            "requires_restart": false,
            "type": "bool",
            "value": true
        },
        "min_length": {
            "name": "Minimum Length",
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "8"
        },
        "upper": {
            "name": "Minimum uppercase characters",
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "1"
        },
        "lower": {
            "name": "Minimum lowercase characters",
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "0"
        },
        "number": {
            "name": "Minimum number count",
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "1"
        },
        "special": {
            "name": "Minimum number of special characters",
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "0"
        }
    },
    "email": {
        "meta": {
            "name": "Email",
            "description": "General email settings. Ignore if not using email features."
        },
        "no_username": {
            "name": "Use email addresses as username",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "bool",
            "value": false,
            "description": "Use email address from invite form as username on Jellyfin."
        },
        "use_24h": {
            "name": "Use 24h time",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "bool",
            "value": true
        },
        "date_format": {
            "name": "Date format",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "text",
            "value": "%d/%m/%y",
            "description": "Date format used in emails. Follows datetime.strftime format."
        },
        "message": {
            "name": "Help message",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "text",
            "value": "Need help? contact me.",
            "description": "Message displayed at bottom of emails."
        },
        "method": {
            "name": "Email method",
            "required": false,
            "requires_restart": false,
            "type": "select",
            "options": [
                "smtp",
                "mailgun"
            ],
            "value": "smtp",
            "description": "Method of sending email to use."
        },
        "address": {
            "name": "Sent from (address)",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "email",
            "value": "jellyfin@jellyf.in",
            "description": "Address to send emails from"
        },
        "from": {
            "name": "Sent from (name)",
            "required": false,
            "requires_restart": false,
            "depends_true": "method",
            "type": "text",
            "value": "Jellyfin",
            "description": "The name of the sender"
        }
    },
    "password_resets": {
        "meta": {
            "name": "Password Resets",
            "description": "Settings for the password reset handler."
        },
        "enabled": {
            "name": "Enabled",
            "required": false,
            "requires_restart": true,
            "type": "bool",
            "value": true,
            "description": "Enable to store provided email addresses, monitor Jellyfin directory for pw-resets, and send reset pins"
        },
        "watch_directory": {
            "name": "Jellyfin directory",
            "required": false,
            "requires_restart": true,
            "depends_true": "enabled",
            "type": "text",
            "value": "/path/to/jellyfin",
            "description": "Path to the folder Jellyfin puts password-reset files."
        },
        "email_html": {
            "name": "Custom email (HTML)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to custom email html"
        },
        "email_text": {
            "name": "Custom email (plaintext)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to custom email in plain text"
        },
        "subject": {
            "name": "Email subject",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "Password Reset - Jellyfin",
            "description": "Subject of password reset emails."
        }
    },
    "invite_emails": {
        "meta": {
            "name": "Invite emails",
            "description": "Settings for sending invites directly to users."
        },
        "enabled": {
            "name": "Enabled",
            "required": false,
            "requires_restart": false,
            "type": "bool",
            "value": true
        },
        "email_html": {
            "name": "Custom email (HTML)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to custom email HTML"
        },
        "email_text": {
            "name": "Custom email (plaintext)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to custom email in plain text"
        },
        "subject": {
            "name": "Email subject",
            "required": true,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "Invite - Jellyfin",
            "description": "Subject of invite emails."
        },
        "url_base": {
            "name": "URL Base",
            "required": true,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "http://accounts.jellyf.in:8056/invite",
            "description": "Base URL for jfa-go. This is necessary because using a reverse proxy means the program has no way of knowing the URL itself."
        }
    },
    "notifications": {
        "meta": {
            "name": "Notifications",
            "description": "Notification related settings."
        },
        "enabled": {
            "name": "Enabled",
            "required": "false",
            "requires_restart": true,
            "type": "bool",
            "value": true,
            "description": "Enabling adds optional toggles to invites to notify on expiry and user creation."
        },
        "expiry_html": {
            "name": "Expiry email (HTML)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to expiry notification email HTML."
        },
        "expiry_text": {
            "name": "Expiry email (Plaintext)",
            "required": false,
            "requires_restart": "false",
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to expiry notification email in plaintext."
        },
        "created_html": {
            "name": "User created email (HTML)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to user creation notification email HTML."
        },
        "created_text": {
            "name": "User created email (Plaintext)",
            "required": false,
            "requires_restart": false,
            "depends_true": "enabled",
            "type": "text",
            "value": "",
            "description": "Path to user creation notification email in plaintext."
        }
    },
    "mailgun": {
        "meta": {
            "name": "Mailgun (Email)",
            "description": "Mailgun API connection settings"
        },
        "api_url": {
            "name": "API URL",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "https://api.mailgun.net..."
        },
        "api_key": {
            "name": "API Key",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "your api key"
        }
    },
    "smtp": {
        "meta": {
            "name": "SMTP (Email)",
            "description": "SMTP Server connection settings."
        },
        "encryption": {
            "name": "Encryption Method",
            "required": false,
            "requires_restart": false,
            "type": "select",
            "options": [
                "ssl_tls",
                "starttls"
            ],
            "value": "starttls",
            "description": "Your email provider should provide different ports for each encryption method. Generally 465 for ssl_tls, 587 for starttls."
        },
        "server": {
            "name": "Server address",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "smtp.jellyf.in",
            "description": "SMTP Server address."
        },
        "port": {
            "name": "Port",
            "required": false,
            "requires_restart": false,
            "type": "number",
            "value": 465
        },
        "password": {
            "name": "Password",
            "required": false,
            "requires_restart": false,
            "type": "password",
            "value": "smtp password"
        }
    },
    "ombi": {
        "meta": {
            "name": "Ombi Integration",
            "description": "Connect to Ombi to automatically create a new user's account. You'll need to create an Ombi user template."
        },
        "enabled": {
            "name": "Enabled",
            "required": false,
            "requires_restart": true,
            "type": "bool",
            "value": false,
            "description": "Enable to create an Ombi account for new Jellyfin users"
        },
        "server": {
            "name": "URL",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "localhost:5000",
            "depends_true": "enabled",
            "description": "Ombi server URL, including http(s)://."
        },
        "api_key": {
            "name": "API Key",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "depends_true": "enabled",
            "description": "API Key. Get this from the first tab in Ombi settings."
        }
    },
    "deletion": {
        "meta": {
            "name": "Account Deletion",
            "description": "Subject/email files for account deletion emails."
        },
        "subject": {
            "name": "Email subject",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "Your account was deleted - Jellyfin",
            "description": "Subject of account deletion emails."
        },
        "email_html": {
            "name": "Custom email (HTML)",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "",
            "description": "Path to custom email html"
        },
        "email_text": {
            "name": "Custom email (plaintext)",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "",
            "description": "Path to custom email in plain text"
        }
    },
    "files": {
        "meta": {
            "name": "File Storage",
            "description": "Optional settings for changing storage locations."
        },
        "invites": {
            "name": "Invite Storage",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored invites (json)."
        },
        "emails": {
            "name": "Email Addresses",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored email addresses (json)."
        },
        "ombi_template": {
            "name": "Ombi user template",
            "required": false,
            "requires_restart": false,
            "type": "text",
            "value": "",
            "description": "Location of stored Ombi user template."
        },
        "user_template": {
            "name": "User Template",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored user policy template (json)."
        },
        "user_configuration": {
            "name": "userConfiguration",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored user configuration template (used for setting homescreen layout) (json)"
        },
        "user_displayprefs": {
            "name": "displayPreferences",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored displayPreferences template (also used for homescreen layout) (json)"
        },
        "user_profiles": {
            "name": "User Profiles",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of stored user profiles (encompasses template and homescreen) (json)"
        },
        "custom_css": {
            "name": "Custom CSS",
            "required": false,
            "requires_restart": true,
            "type": "text",
            "value": "",
            "description": "Location of custom bootstrap CSS."
        }
    }
}
