[
    {
        "DisplayName": "App Download Type",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "Sets how to download the app. Specify the App Download Source and the relevant Git repo, GitHub release or PyPI package settings accordingly. Update the app after changing this setting",
        "Keywords": "download,type,DownloadType",
        "FieldName": "DownloadType",
        "InputType": "enum",
        "ParamFieldName": "DownloadType",
        "DefaultValue": "",
        "Required": true,
        "EnumValues": {
            "": "--Please select--",
            "DownloadURL": "Download URL",
            "GithubRelease": "GitHub release",
            "GitRepo": "Git repo",
            "PyPIPackage": "PyPI package",
            "None": "None"
        }
    },
    {
        "DisplayName": "App Download Source",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "Sets the source for the App Download Type. Git repo = URL that ends in .git. GitHub release = User/Repo. Download URL = URL to a zip file. PyPI package = package name (and version if needed). Update the app after changing this setting",
        "Keywords": "download,source,DownloadSource",
        "FieldName": "DownloadSource",
        "InputType": "text",
        "ParamFieldName": "DownloadSource",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Branch",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the branch if required. Empty = default branch",
        "Keywords": "git,repo,branch,DownloadBranch",
        "FieldName": "DownloadBranch",
        "InputType": "text",
        "ParamFieldName": "DownloadBranch",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Username",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the username if login is required",
        "Keywords": "git,repo,username,DownloadUsername",
        "FieldName": "DownloadUsername",
        "InputType": "text",
        "ParamFieldName": "DownloadUsername",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "Git Repo Password/Token",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"Git repo\" is selected under App Download Type, sets the password/token if login is required",
        "Keywords": "git,repo,password,token,DownloadPassword",
        "FieldName": "DownloadPassword",
        "InputType": "Password",
        "ParamFieldName": "DownloadPassword",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "GitHub Release Filename",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"GitHub release\" is selected under App Download Type, sets the name of the zip file to download",
        "Keywords": "github,release,filename,DownloadFilename",
        "FieldName": "DownloadFilename",
        "InputType": "text",
        "ParamFieldName": "DownloadFilename",
        "DefaultValue": "",
        "Placeholder": "app.zip",
        "EnumValues": {}
    },
    {
        "DisplayName": "GitHub Release Version",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"GitHub release\" is selected under App Download Type, sets the release version to download. Empty = latest",
        "Keywords": "github,release,version,DownloadVersion",
        "FieldName": "DownloadVersion",
        "InputType": "text",
        "ParamFieldName": "DownloadVersion",
        "DefaultValue": "",
        "Placeholder": "1.0.0",
        "EnumValues": {}
    },
    {
        "DisplayName": "PyPI Package Installation Arguments",
        "Category": "Python App Runner:code",
        "Subcategory": "Download:download:2",
        "Description": "If \"PyPI package\" is selected under App Download Type, sets any required pip command line arguments when installing the package. The '-U' flag is passed by default",
        "Keywords": "pypi,install,package,command,line,arguments,flags,DownloadPackageArgs",
        "FieldName": "DownloadPackageArgs",
        "InputType": "text",
        "ParamFieldName": "DownloadPackageArgs",
        "DefaultValue": "",
        "Placeholder": "--force-reinstall --no-cache-dir",
        "EnumValues": {}
    },
    {
        "DisplayName": "Run App Setup Command",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "If enabled, the command specified under App Setup Command will be run when the server is updated and after the app is installed. Ensure that the app data is installed outside of the 'venv' directory",
        "Keywords": "app,setup,command,RunAppSetupCommand",
        "FieldName": "RunAppSetupCommand",
        "InputType": "checkbox",
        "ParamFieldName": "RunAppSetupCommand",
        "DefaultValue": "false",
        "EnumValues": {
            "False": "false",
            "True": "true"
        }
    },
    {
        "DisplayName": "App Setup Command",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets any required command to run in the activated virtual environment to set up the app after it is installed, if Run App Setup Command is enabled. For example, it can be a script or Python module installed in the virtual environment or a Python script installed in the root directory. Use the prefix 'python' as relevant",
        "Keywords": "app,setup,command,AppSetupCommand",
        "FieldName": "AppSetupCommand",
        "InputType": "text",
        "ParamFieldName": "AppSetupCommand",
        "DefaultValue": "",
        "Placeholder": "myapp-setup --no-prompt",
        "EnumValues": {}
    },
    {
        "DisplayName": "Python Version",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the specific Python 3 version to run the app with. The version must be installed on the system for all users (and in the System Path on Windows). Make sure the version is compatible with the app and any required packages. If using AMP's Docker, you will limited to its installed version",
        "Keywords": "python,version,PythonVersion",
        "FieldName": "PythonVersion",
        "InputType": "enum",
        "ParamFieldName": "PythonVersion",
        "DefaultValue": "3",
        "EnumValues": {
            "3": "System default",
            "3.8": "3.8",
            "3.9": "3.9",
            "3.10": "3.10",
            "3.11": "3.11",
            "3.12": "3.12",
            "3.13": "3.13",
            "3.14": "3.14"
        }
    },
    {
        "DisplayName": "Python Packages Install Method",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the method to install additional Python packages from PyPI to run the app. If \"Requirements specifier\" is selected, list the packages under Specific Python Package Requirements. Note: setuptools, wheel, discord.py and python-dotenv are installed by default",
        "Keywords": "python,install,method,packages,requirements,PackagesInstallType",
        "FieldName": "PackagesInstallType",
        "InputType": "enum",
        "ParamFieldName": "PackagesInstallType",
        "DefaultValue": "",
        "EnumValues": {
            "none": "None",
            "file": "Requirements.txt file",
            "specifier": "Requirements specifier"
        }
    },
    {
        "DisplayName": "Specific Python Package Requirements",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Specifies a space-separated list of additional Python packages to install. Select \"Requirements specifier\" under Python Packages Install Method. Otherwise select the \"Requirements.txt file\" method",
        "Keywords": "additional,python,packages,PythonPackages",
        "FieldName": "PythonPackages",
        "InputType": "text",
        "ParamFieldName": "PythonPackages",
        "DefaultValue": "",
        "Placeholder": "numpy requests",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Run Mode",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets the method to run the app, either as a Python script or a Python module (if the app was installed via pip)",
        "Keywords": "app,run,running,mode,AppRunMode",
        "FieldName": "AppRunMode",
        "InputType": "enum",
        "ParamFieldName": "AppRunMode",
        "DefaultValue": "{{AppScriptName}}",
        "EnumValues": {
            "{{AppScriptName}}": "Python script (default)",
            "-m {{AppModuleName}}": "Python module"
        }
    },
    {
        "DisplayName": "App Script Filename",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "If \"Python script\" is selected under App Run Mode, sets the script filename to run. Also set App Subdirectory as needed, or include the script path under the root directory here if App Subdirectory is not otherwise appropriate",
        "Keywords": "app,script,name,filename,AppScriptName",
        "FieldName": "AppScriptName",
        "InputType": "text",
        "ParamFieldName": "AppScriptName",
        "DefaultValue": "",
        "Placeholder": "myapp.py | venv/Scripts/myapp.exe",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Module Name",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "If \"Python module\" is selected under App Run Mode, sets the name of the app module to run",
        "Keywords": "app,package,module,AppModuleName",
        "FieldName": "AppModuleName",
        "InputType": "text",
        "ParamFieldName": "AppModuleName",
        "DefaultValue": "",
        "Placeholder": "myapp",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Subdirectory",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Sets any applicable subdirectory path under the root directory that the app is installed in, for the purpose of running a script selected under App Script Filename or installing packages with a 'requirements.txt' file under Python Packages Install Method. This will set the working directory for running the app accordingly",
        "Keywords": "app,directory,subdirectory,path,AppScriptName",
        "FieldName": "AppDir",
        "InputType": "text",
        "ParamFieldName": "AppDir",
        "DefaultValue": "",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Environment Variables",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "To set a list of environment variables to run the app with, create a '.env' file in the working directory. For example, this may include a [Discord bot token](https://discord.com/developers/applications/). Consult any example '.env' file included with the app for relevant variables to specify",
        "Keywords": "environment,variables,EnvVars",
        "FieldName": "EnvVars",
        "InputType": "hidden",
        "ParamFieldName": "EnvVars",
        "EnumValues": {}
    },
    {
        "DisplayName": "App Command Line Arguments",
        "Category": "Python App Runner:code",
        "Subcategory": "App:settings:1",
        "Description": "Specifies any command line arguments to include when running the app",
        "Keywords": "command,line,arguments,args,CommandLineArgs",
        "FieldName": "CommandLineArgs",
        "InputType": "text",
        "ParamFieldName": "CommandLineArgs",
        "DefaultValue": "",
        "Placeholder": "value1=foo value2=bar",
        "EnumValues": {}
    }
]