[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/sergen.json","title":"Serenity Code Generator (sergen) Configuration","type":"object","additionalProperties":false,"description":"Serenity code generator (sergen) configuration","definitions":{"Table":{"type":"object","title":"Table","additionalProperties":false,"required":["Tablename","Identifier","Module","PermissionKey"],"properties":{"Tablename":{"type":"string","description":"Table name","minLength":1},"Identifier":{"type":"string","description":"Row identifier without Row suffix","minLength":1},"Module":{"type":"string","description":"Module name","minLength":1},"PermissionKey":{"type":"string","description":"Permission key","minLength":1}}},"Connection":{"type":"object","title":"Connection","description":"Connection information","additionalProperties":false,"required":["Key"],"properties":{"Key":{"type":"string","description":"Key of connection","minLength":1},"ConnectionString":{"type":"string","description":"Connection string","minLength":1},"ProviderName":{"type":"string","description":"Provider name","minLength":1},"Dialect":{"type":"string","title":"Dialect","minLength":1,"description":"Dialect","anyOf":[{"enum":["SqlServer","SqlServer2012","SqlServer2008","SqlServer2005","SqlServer2000","Sqlite","Postgres","Oracle","Oracle12c","MySql","Firebird"]},{"type":"string"}]},"Tables":{"type":"array","uniqueItems":true,"title":"Tables","description":"Generated table information","items":{"$ref":"#/definitions/Table"}}}},"BaseRowClass":{"type":"object","title":"BaseRowClass","additionalProperties":false,"required":["ClassName","Fields"],"properties":{"ClassName":{"type":"string","description":"The class name","minLength":1},"Fields":{"type":"array","uniqueItems":true,"description":"The base class fields that should exists in a table for this base class to be used","items":{"type":"string","minLength":1}}}}},"properties":{"Extends":{"type":"string","title":"Extends","minLength":1,"description":"If specified, the settings in this file extends settings in a base file similar to tsconfig.json\nYou can also use Sergen defaults by specifying this like \"defaults@x.y.z\"","anyOf":[{"type":"string","pattern":"\\.json$"},{"enum":["defaults@6.6.0"]}]},"RootNamespace":{"type":"string","description":"The root namespace for the target project. It is recommended to have this in sergen.json. If not there, it will be auto calculated from root namespace in CSPROJ file, or derived from project file name by removing .Web suffix. Generated code will be placed under this namespace and project's own types are assumed to be under this namespace as well","minLength":1},"DeclareJoinConstants":{"type":"boolean","description":"If true, generated code will declare and use jFKTable type of constants for expressions in entities"},"EnableGenerateFields":{"type":"boolean","description":"If this is true, it allows the use of [GenerateFields] attributes on rows, which automatically generates the fields using a source generator. This should only be used when Serenity.Pro.Coder is enabled in the project"},"EnableRowTemplates":{"type":"boolean","description":"If true, enables RowTemplate class generation. This should only be used when Serenity.Pro.Coder is enabled in the project. Has no effect when EnableGenerateFields is true. EnableGenerateFields should be preferred over this as RowTemplate might cause some issues"},"EndOfLine":{"type":"string","title":"EndOfLine","description":"End of line character to use in generated files. If not specified, it will be auto detected from the environment. It is recommended to have \"lf\" for multi platform projects","enum":["LF","CRLF"]},"FileScopedNamespaces":{"type":"boolean","description":"If true, generated code will use file scoped namespaces"},"ParseGlobalUsings":{"type":"boolean","description":"If true, generated code will parse global usings from the current project"},"IncludeGlobalUsings":{"type":"array","uniqueItems":true,"description":"If specified, generated code will assume these usings are in global using scope","items":{"type":"string","minLength":1}},"ExcludeGlobalUsings":{"type":"array","uniqueItems":true,"description":"If specified, generated code will assume these usings are not in global using scope even if they are in global using scope","items":{"type":"string","minLength":1}},"OmitDefaultSchema":{"type":"boolean","description":"If true, the default schema name, e.g. \"dbo\" for SQL Server won't be emitted in generated field expressions in Row.cs files. This is true by default only for MySql as in MySql schema names are actually database names"},"UseOriginAttribute":{"type":"boolean","description":"If true, instead of using [Expression] attributes for foreign view fields, it will use Origin(nameof(jFK), nameof(FKRow.ViewField)) if the FKRow is already generated in the project. It will also use ForeignKey(typeof(FKRow)) type of foreign keys instead of strings"},"SaveGeneratedTables":{"type":"boolean","description":"If true, generated table options like Identity, Module etc. will be saved to the Connections array in sergen.json after code generation. Default is true"},"ClientTypes":{"type":"object","title":"ClientTypes","description":"Client types code generation related configuration","additionalProperties":false,"properties":{"OutDir":{"type":"string","description":"The output directory for generated client types .cs files","minLength":1},"SourceGenerator":{"type":"boolean","description":"If false, the client types source generator in Serenity.Pro.Coder will be disabled"}}},"MVC":{"type":"object","title":"MVC","description":"MVC (e.g. view locations) related configuration","additionalProperties":false,"properties":{"UseRootNamespace":{"type":"boolean","description":"If true, generated MVC views will be placed under the root namespace of the project"},"OutDir":{"type":"string","description":"The output directory for MVC.cs","minLength":1},"SearchViewPaths":{"type":"array","uniqueItems":true,"description":"View paths to search for, defaults to \"Modules\" and \"Views\". \"ProjectName\" is used instead of \"Modules\" if Razor SDK is used for the project, e.g. a Razor class library","items":{"type":"string","minLength":1}},"StripViewPaths":{"type":"array","uniqueItems":true,"description":"Strip view paths from generated files. Defaults to \"Modules\", \"Views\". E.g. a subclass for Modules and Views won't be generated","items":{"type":"string","minLength":1}},"SourceGenerator":{"type":"boolean","description":"If false, the view paths source generator in Serenity.Pro.Coder will be disabled"}}},"ServerTypings":{"type":"object","title":"ServerTypings","description":"Server typings code generation related configuration","additionalProperties":false,"properties":{"Assemblies":{"type":"array","uniqueItems":true,"description":"Assemblies for server typings generation. Specify only if Sergen can't auto determine your project output file","items":{"type":"string","minLength":1}},"OutDir":{"type":"string","description":"The output directory for generated server typings files. Not used for modules","minLength":1},"LocalTexts":{"type":"boolean","description":"If true, local texts will be generated"},"ModuleReExports":{"type":"boolean","description":"If true, module re-exports will be generated. Defaults to true"},"ModuleTypings":{"type":"boolean","description":"If true, module typings will be generated. Defaults to true if you have \"module\" defined in tsconfig.json. Deprecated as only ES modules style code generation is supported now","deprecated":true},"NamespaceTypings":{"type":"boolean","description":"If true, namespace typings will be generated. Defaults to true if you don't have \"module\" defined in tsconfig.json. Deprecated as only ES modules style code generation is supported now","deprecated":true},"PreferRelativePaths":{"type":"boolean","description":"If true, generated typings will use relative paths instead of paths from tsconfig.json, e.g. \"../ServerTypes/\" instead of \"@/ServerTypes/\""},"SourceGenerator":{"type":"boolean","description":"If false, the server typings source generator in Serenity.Pro.Coder will be disabled"}}},"Restore":{"type":"object","title":"Restore","description":"Sergen restore command related configuration. Deprecated as Sergen no longer supports restoring static content","deprecated":true,"additionalProperties":false,"properties":{"Include":{"type":"array","uniqueItems":true,"description":"List of files (git ignore like) to include while restoring","items":{"type":"string","minLength":1}},"Exclude":{"type":"array","uniqueItems":true,"description":"List of files (git ignore like) to exclude while restoring","items":{"type":"string","minLength":1}},"Typings":{"type":"boolean","description":"Set false to disable namespace typings restore to typings/ folder"}}},"TSBuild":{"type":"object","title":"TSBuild","additionalProperties":true,"properties":{"EntryPoints":{"type":"array","uniqueItems":true,"description":"List of entry point globs, default is \"Modules/**/*Page.ts\", \"Modules/**/*Page.tsx\", \"Modules/**/ScriptInit.ts\"","items":{"type":"string","minLength":1}},"SourceGenerator":{"type":"boolean","description":"Should the list of entry points, e.g. ESM be generated, only available with Serenity.Pro.Coder"}}},"Connections":{"type":"array","uniqueItems":true,"title":"Connections","description":"List of connections. It is only needed when it is desired to work / generated code based on a connection string that is not in appsettings.json","items":{"$ref":"#/definitions/Connection"}},"KDiff3Path":{"type":"string","description":"Path to KDiff3 executable. If not specified, it will be auto detected from the environment. (deprecated)","minLength":1,"deprecated":true},"TSCPath":{"type":"string","description":"Full path to TypeScript compiler. It is assumed to be in path if not specified. (deprecated)","minLength":1,"deprecated":true},"BaseRowClasses":{"type":"array","uniqueItems":true,"title":"BaseRowClasses","description":"List of base row classes to be used instead of Row. They are matched by list of base properties","items":{"$ref":"#/definitions/BaseRowClass"}},"ForeignFieldSelection":{"type":"string","title":"ForeignFieldSelection","description":"The set of foreign fields to generate, default is NameOnly.\n\nNone: Don't generate any foreign view fields except the ones explicitly included via IncludeForeignFields\nAll: Generate all the foreign view fields, except ones excluded explicitly via RemoveForeignFields\nNameOnly: Don't generate any foreign view fields except the Name property of the target row and ones explicitly included via IncludeForeignFields","enum":["None","All","NameOnly"]},"IncludeForeignFields":{"type":"array","uniqueItems":true,"description":"A list of foreign fields to include in generated code. This could be used to include some additional fields This could be used to include some additional fields. Not so useful if ForeignFieldSelection is All","items":{"type":"string","minLength":1}},"RemoveForeignFields":{"type":"array","uniqueItems":true,"description":"A list of foreign fields to omit from generated code. This could be used to disable generating code for join fields like CreatedBy, ModifiedBy etc, so properties like CustomerCreatedBy, CustomerModifiedBy etc. won't be generated in OrderRow. Not so useful if ForeignFieldSelection is None or NameOnly","items":{"type":"string","minLength":1}},"CustomTemplates":{"type":"string","description":"The location of custom templates folder. The files in this folder will override the default scriban templates in Sergen. You may also include additional files to be generated. Their names must match the names at \nhttps://github.com/serenity-is/Serenity/tree/master/src/Serenity.Net.CodeGenerator/Templates \nYou may also include additional files to be generated","minLength":1},"CustomGenerate":{"type":"object","title":"CustomGenerate","description":"The relative paths of custom generated files","additionalProperties":{"type":"string","minLength":1}},"CustomSettings":{"type":"object","title":"CustomSettings","description":"Custom settings to be passed to and used in custom templates"},"AppSettingFiles":{"type":"array","uniqueItems":true,"description":"The list of appsettings.json files in order. Default is appsettings.json, appsettings.machine.json","items":{"type":"string","minLength":1}},"UpgradeInfo":{"type":"object","title":"UpgradeInfo","description":"The upgrade / migration related information used by stargen to determine the base version of template used, and already applied upgrades","additionalProperties":false,"properties":{"InitialType":{"type":"string","title":"InitialType","description":"Initial type of project. Available options are \"Community\" e.g. Serene, \"Premium\" e.g. StartSharp","enum":["Community","Premium"]},"InitialVersion":{"type":"string","description":"Version this project is created from. Used to determine which migrations should be applied to project (starting from)","title":"InitialVersion","pattern":"^(\\d+.)?(\\d+.)?(\\d+.)?(\\d+)?$","minLength":1},"AppliedUpgrades":{"type":"array","items":{"type":"string","minLength":1},"title":"AppliedUpgrades","uniqueItems":true,"description":"List of already applied upgrades if any"}}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "Serenity Code Generator (sergen) Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Serenity code generator (sergen) configuration

Table

Tablename Identifier Module PermissionKey

Table name

Row identifier without Row suffix

Module name

Permission key

Connection

Connection information

Key of connection

Connection string

Provider name

Dialect

Dialect

Tables

Generated table information

BaseRowClass

The class name

The base class fields that should exists in a table for this base class to be used

Extends

If specified, the settings in this file extends settings in a base file similar to tsconfig.json
You can also use Sergen defaults by specifying this like "defaults@x.y.z"

The root namespace for the target project. It is recommended to have this in sergen.json. If not there, it will be auto calculated from root namespace in CSPROJ file, or derived from project file name by removing .Web suffix. Generated code will be placed under this namespace and project's own types are assumed to be under this namespace as well

If true, generated code will declare and use jFKTable type of constants for expressions in entities

If this is true, it allows the use of [GenerateFields] attributes on rows, which automatically generates the fields using a source generator. This should only be used when Serenity.Pro.Coder is enabled in the project

If true, enables RowTemplate class generation. This should only be used when Serenity.Pro.Coder is enabled in the project. Has no effect when EnableGenerateFields is true. EnableGenerateFields should be preferred over this as RowTemplate might cause some issues

EndOfLine

End of line character to use in generated files. If not specified, it will be auto detected from the environment. It is recommended to have "lf" for multi platform projects

If true, generated code will use file scoped namespaces

If true, generated code will parse global usings from the current project

If specified, generated code will assume these usings are in global using scope

If specified, generated code will assume these usings are not in global using scope even if they are in global using scope

If true, the default schema name, e.g. "dbo" for SQL Server won't be emitted in generated field expressions in Row.cs files. This is true by default only for MySql as in MySql schema names are actually database names

If true, instead of using [Expression] attributes for foreign view fields, it will use Origin(nameof(jFK), nameof(FKRow.ViewField)) if the FKRow is already generated in the project. It will also use ForeignKey(typeof(FKRow)) type of foreign keys instead of strings

If true, generated table options like Identity, Module etc. will be saved to the Connections array in sergen.json after code generation. Default is true

ClientTypes

Client types code generation related configuration

The output directory for generated client types .cs files

If false, the client types source generator in Serenity.Pro.Coder will be disabled

MVC

MVC (e.g. view locations) related configuration

If true, generated MVC views will be placed under the root namespace of the project

The output directory for MVC.cs

View paths to search for, defaults to "Modules" and "Views". "ProjectName" is used instead of "Modules" if Razor SDK is used for the project, e.g. a Razor class library

Strip view paths from generated files. Defaults to "Modules", "Views". E.g. a subclass for Modules and Views won't be generated

If false, the view paths source generator in Serenity.Pro.Coder will be disabled

ServerTypings

Server typings code generation related configuration

Assemblies for server typings generation. Specify only if Sergen can't auto determine your project output file

The output directory for generated server typings files. Not used for modules

If true, local texts will be generated

If true, module re-exports will be generated. Defaults to true

If true, module typings will be generated. Defaults to true if you have "module" defined in tsconfig.json. Deprecated as only ES modules style code generation is supported now

If true, namespace typings will be generated. Defaults to true if you don't have "module" defined in tsconfig.json. Deprecated as only ES modules style code generation is supported now

If true, generated typings will use relative paths instead of paths from tsconfig.json, e.g. "../ServerTypes/" instead of "@/ServerTypes/"

If false, the server typings source generator in Serenity.Pro.Coder will be disabled

Restore

Sergen restore command related configuration. Deprecated as Sergen no longer supports restoring static content

List of files (git ignore like) to include while restoring

List of files (git ignore like) to exclude while restoring

Set false to disable namespace typings restore to typings/ folder

TSBuild

List of entry point globs, default is "Modules/**/*Page.ts", "Modules/**/*Page.tsx", "Modules/**/ScriptInit.ts"

Should the list of entry points, e.g. ESM be generated, only available with Serenity.Pro.Coder

Connections

List of connections. It is only needed when it is desired to work / generated code based on a connection string that is not in appsettings.json

Path to KDiff3 executable. If not specified, it will be auto detected from the environment. (deprecated)

Full path to TypeScript compiler. It is assumed to be in path if not specified. (deprecated)

BaseRowClasses

List of base row classes to be used instead of Row. They are matched by list of base properties

ForeignFieldSelection

The set of foreign fields to generate, default is NameOnly.

None: Don't generate any foreign view fields except the ones explicitly included via IncludeForeignFields
All: Generate all the foreign view fields, except ones excluded explicitly via RemoveForeignFields
NameOnly: Don't generate any foreign view fields except the Name property of the target row and ones explicitly included via IncludeForeignFields

A list of foreign fields to include in generated code. This could be used to include some additional fields This could be used to include some additional fields. Not so useful if ForeignFieldSelection is All

A list of foreign fields to omit from generated code. This could be used to disable generating code for join fields like CreatedBy, ModifiedBy etc, so properties like CustomerCreatedBy, CustomerModifiedBy etc. won't be generated in OrderRow. Not so useful if ForeignFieldSelection is None or NameOnly

The location of custom templates folder. The files in this folder will override the default scriban templates in Sergen. You may also include additional files to be generated. Their names must match the names at
https://github.com/serenity-is/Serenity/tree/master/src/Serenity.Net.CodeGenerator/Templates
You may also include additional files to be generated

CustomGenerate

The relative paths of custom generated files

CustomSettings

Custom settings to be passed to and used in custom templates

The list of appsettings.json files in order. Default is appsettings.json, appsettings.machine.json

UpgradeInfo

The upgrade / migration related information used by stargen to determine the base version of template used, and already applied upgrades

InitialType

Initial type of project. Available options are "Community" e.g. Serene, "Premium" e.g. StartSharp

Version this project is created from. Used to determine which migrations should be applied to project (starting from)

InitialVersion

AppliedUpgrades

List of already applied upgrades if any

Provide a JSON object that satisfies the schema "Serenity Code Generator (sergen) Configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"dolittle.io/schemas/Runtime/Server/server.json","title":"Server Configuration","description":"The event horizon server configuration","type":"object","properties":{"interaction":{"description":"The configuration for the interaction server","type":"object","properties":{"enabled":{"description":"Whether or not the interaction server is enabled","type":"boolean"},"port":{"description":"The port to use for exposing the interaction server","type":"number"},"unixSocket":{"description":"The unix socket to use for exposing the interaction server on","type":"string","format":"uri-reference"}}},"management":{"port":{"description":"The port to use for exposing the management server","type":"number"},"unixSocket":{"description":"The unix socket to use for exposing the management server on","type":"string","format":"uri-reference"}}},"required":["interaction","management"]}
</schema>

[User] Provide a JSON object that satisfies the schema "Server Configuration". Here are the required top‑level fields: interaction, management. Return only the valid JSON object.

Server Configuration

The event horizon server configuration

The configuration for the interaction server

Whether or not the interaction server is enabled

The port to use for exposing the interaction server

The unix socket to use for exposing the interaction server on

The port to use for exposing the management server

The unix socket to use for exposing the management server on

Provide a JSON object that satisfies the schema "Server Configuration". Here are the required top‑level fields: interaction, management. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-06/schema#","definitions":{"trayOptionsItem":{"title":"Tray Option","description":"An object that represents a single tray menu item","type":"object","properties":{"label":{"title":"Label","description":"Text of menu item","type":"string"},"action":{"title":"Action","description":"Action to perform when user clicks this menu item. 'openfilesystem', 'openbrowser', or 'stopserver'","type":"string"},"url":{"title":"URL","description":"Url to open for 'openbrowser' action","type":"string"},"disabled":{"title":"Disabled","description":"Turn menu item grey and nothing happens when clicking on it","type":"boolean","default":false},"image":{"title":"Image","description":"Path to PNG image to display on menu item next to the label","type":"string","default":""},"hotkey":{"title":"Hotkey","description":"Keyboard shortcut to choose this menu item","type":"string","default":""},"path":{"title":"Path","description":"Filesystem path to open for 'openfilesystem' action","type":"string","default":""},"items":{"title":"Items","description":"Nested menu items","type":"array","minItems":0,"items":{"$ref":"#/definitions/trayOptionsItem"},"default":[]}}}},"title":"CommandBox Server","description":"Configuration file for a CommandBox server","type":"object","properties":{"name":{"title":"Name","description":"The name of the server","type":"string","default":""},"openBrowser":{"title":"Open Browser","description":"Controls whether browser opens by default when starting server","type":"boolean","default":true},"openBrowserURL":{"title":"Open Browser URL","description":"Override the URL to open when starting the server","type":"string","default":""},"startTimeout":{"title":"Server start timeout","description":"The length of time in seconds to wait for the server to start","type":"number","default":240},"stopsocket":{"title":"Stop Socket","description":"The port the server listens on to receive a stop command","type":"number","default":0},"debug":{"title":"Debug","description":"Enable debug level logging for server","type":"boolean","default":false},"trace":{"title":"Trace","description":"Enable trace level logging for server","type":"boolean","default":false},"console":{"title":"Console","description":"Start the server in console mode instead of in the background","type":"boolean","default":false},"trayEnable":{"title":"Tray Enable","description":"Control whether the server has an associated icon in the system tray","type":"boolean","default":true},"trayicon":{"title":"Tray Icon","description":"Path to the server's tray icon","type":"string","default":""},"trayOptions":{"title":"Tray Options","description":"An array of custom menu items to be added to the server's tray menu","type":"array","minItems":0,"items":{"$ref":"#/definitions/trayOptionsItem"},"default":[]},"jvm":{"title":"JVM","description":"JVM Options","type":"object","properties":{"heapSize":{"title":"Max Heap Size","description":"The max heap size of the server","type":["number","string"],"default":""},"minHeapSize":{"title":"Min Heap Size","description":"The starting heap size for the server","type":["number","string"],"default":""},"args":{"title":"JVM Arguments","description":"Ad-hoc JVM args for the server such as -X:name","type":"string","default":""},"javaHome":{"title":"Java Home Path","description":"Path to custom JRE. Default is the one that the CommandBox CLI is using","type":"string","default":""},"javaVersion":{"title":"Java Version","description":"A Java installation ID. In its entirety, it has the form <version>_<type>_<arch>_<os>_<jvm-implementation>_<release>","type":"string","default":""}}},"web":{"title":"Web","description":"Web Server Options","type":"object","properties":{"host":{"title":"Host","description":"The default host name of the server","type":"string","default":"127.0.0.1"},"webroot":{"title":"Webroot","description":"Webroot directory","type":"string","default":""},"directoryBrowsing":{"title":"Directory Browsing","description":"Enables file listing for directories with no welcome file","type":"boolean","default":false},"accessLogEnable":{"title":"Access Log Enable","description":"Enable web server access log","type":"boolean","default":true},"GZIPEnable":{"title":"GZIP Enable","description":"Enable GZip compression in HTTP responses","type":"boolean","default":true},"welcomeFiles":{"title":"Welcome Files","description":"A comma-delimited list of files that you would like CommandBox to look for when a user hits a directory","type":"string","default":""},"aliases":{"title":"Aliases","description":"Web aliases for the web server, similar to virtual directories","type":"object","patternProperties":{"^(/[^/]+)+$":{"title":"Alias","description":"The key is the web-accessible virtual path and the value is the relative or absolute path to the folder the alias points to","type":"string"}},"additionalProperties":false,"default":{}},"errorPages":{"title":"Error Pages","description":"The error pages that CommandBox servers return. You can have a setting for each status code including a default error page to be used if no other setting applies","type":"object","properties":{"default":{"title":"Default","description":"Path to default error page","type":"string","default":""}},"patternProperties":{"^[1-5][0-9]{2}$":{"title":"Error Page","description":"The key is the status code integer and the value is a relative (to the web root) path to be loaded for that status code","type":"string"}},"additionalProperties":false,"default":{}},"HTTP":{"title":"HTTP Settings","description":"Configure the HTTP listener on the server","type":"object","properties":{"enable":{"title":"Enable","description":"Enable HTTP for this serer","type":"boolean","default":true},"port":{"title":"Port","description":"HTTP port to use","type":"number","default":0}}},"SSL":{"title":"SSL","description":"Configure the HTTPS listener on the server","type":"object","properties":{"enable":{"title":"Enable","description":"Enable HTTPS for this server","type":"boolean","default":false},"port":{"title":"Port","description":"HTTPS port to use","type":"number","default":1443},"certFile":{"title":"Cert File","description":"Path to SSL cert file","type":"string","default":""},"keyFile":{"title":"Key File","description":"Path to SSL key file","type":"string","default":""},"keyPass":{"title":"Key Pass","description":"Password for SSL key file","type":"string","default":""}}},"AJP":{"title":"AJP","description":"Configure the AJP listener on the server","type":"object","properties":{"enable":{"title":"Enable","description":"Enable AJP for this server","type":"boolean","default":false},"port":{"title":"Port","description":"AJP port to use","type":"number","default":8009}}},"rewrites":{"title":"Rewrites","description":"Configure URL Rewrites","type":"object","properties":{"enable":{"title":"Enable","description":"Enable URL Rewrites on this server","type":"boolean","default":false},"logEnable":{"title":"Log Enable","description":"Enable Rewrite log file","type":"boolean","default":false},"config":{"title":"Config","description":"Path to xml config file or .htaccess","type":"string","default":""},"statusPath":{"title":"Tuckey Status Path","description":"URL path to visit Tuckey status page like '/tuckey-status'","type":"string","default":"/tuckey-status"},"configReloadSeconds":{"title":"Config Reload Seconds","description":"Number of seconds to check rewrite config file for changes","type":"number"}}},"basicAuth":{"title":"Configure basic authentication","description":"","type":"object","properties":{"enable":{"title":"Enable","description":"Enable basic auth for this server","type":"boolean","default":true},"users":{"title":"Users","description":"Users who can authenticate to basic auth","type":"object","additionalProperties":{"title":"User","description":"The key is the user name and the value is the password.","type":"string"},"default":{}}}}}},"app":{"title":"Application","description":"Application Server Options","type":"object","properties":{"logDir":{"title":"Log Directory","description":"The folder path where the servlet out, rewrite, and access log are written to","type":"string","default":""},"libDirs":{"title":"Jar lib Directories","description":"A comma-delimited list of directories from which CommandBox will load JARs","type":"string","default":""},"webConfigDir":{"title":"Web Context Directory","description":"Directory for Lucee/Railo web context","type":"string","default":""},"serverConfigDir":{"title":"Server Context Directory","description":"Directory for Lucee/Railo server context","type":"string","default":""},"webXML":{"title":"Web XML","description":"Path to web.xml file","type":"string","default":""},"WARPath":{"title":"WAR Path","description":"Path to a local WAR archive or exploded WAR folder.  Mutually exclusive with cfengine.","type":"string","default":""},"cfengine":{"title":"CFML Engine","description":"An Endpoint ID that resolves to a CF engine such as 'adobe' or 'lucee'. Include version as 'adobe@2016'","type":"string","default":""},"restMappings":{"title":"REST Mappings","description":"Comma delimited list of paths to map to the CF engine's REST servlet such as '/rest/*,/api/*'","type":"string","default":""},"serverHomeDirectory":{"title":"Server Home Directory","description":"Path to folder where the server WAR will be expanded","type":"string","default":""},"sessionCookieSecure":{"title":"Session Cookie Secure","description":"Enable secure session cookies","type":"boolean","default":false},"sessionCookieHTTPOnly":{"title":"Session Cookie HttpOnly","description":"Enable HTTP-only session cookies","type":"boolean","default":false}}},"runwar":{"title":"Configure RunWar","description":"These settings apply to the underlying Runwar library that starts servers","type":"object","properties":{"args":{"title":"Arguments","description":"Ad-hoc options for the underlying Runwar library","type":"string","default":""}}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "CommandBox Server". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Tray Option

An object that represents a single tray menu item

Label

Text of menu item

Action

Action to perform when user clicks this menu item. 'openfilesystem', 'openbrowser', or 'stopserver'

URL

Url to open for 'openbrowser' action

Disabled

Turn menu item grey and nothing happens when clicking on it

Image

Path to PNG image to display on menu item next to the label

Hotkey

Keyboard shortcut to choose this menu item

Path

Filesystem path to open for 'openfilesystem' action

Items

Nested menu items

CommandBox Server

Configuration file for a CommandBox server

Name

The name of the server

Open Browser

Controls whether browser opens by default when starting server

Open Browser URL

Override the URL to open when starting the server

Server start timeout

The length of time in seconds to wait for the server to start

Stop Socket

The port the server listens on to receive a stop command

Debug

Enable debug level logging for server

Trace

Enable trace level logging for server

Console

Start the server in console mode instead of in the background

Tray Enable

Control whether the server has an associated icon in the system tray

Tray Icon

Path to the server's tray icon

Tray Options

An array of custom menu items to be added to the server's tray menu

JVM

JVM Options

Max Heap Size

The max heap size of the server

Min Heap Size

The starting heap size for the server

JVM Arguments

Ad-hoc JVM args for the server such as -X:name

Java Home Path

Path to custom JRE. Default is the one that the CommandBox CLI is using

Java Version

A Java installation ID. In its entirety, it has the form <version>_<type>_<arch>_<os>_<jvm-implementation>_<release>

Web

Web Server Options

Host

The default host name of the server

Webroot

Webroot directory

Directory Browsing

Enables file listing for directories with no welcome file

Access Log Enable

Enable web server access log

GZIP Enable

Enable GZip compression in HTTP responses

Welcome Files

A comma-delimited list of files that you would like CommandBox to look for when a user hits a directory

Aliases

Web aliases for the web server, similar to virtual directories

Alias

The key is the web-accessible virtual path and the value is the relative or absolute path to the folder the alias points to

Error Pages

The error pages that CommandBox servers return. You can have a setting for each status code including a default error page to be used if no other setting applies

Default

Path to default error page

Error Page

The key is the status code integer and the value is a relative (to the web root) path to be loaded for that status code

HTTP Settings

Configure the HTTP listener on the server

Enable

Enable HTTP for this serer

Port

HTTP port to use

SSL

Configure the HTTPS listener on the server

Enable

Enable HTTPS for this server

Port

HTTPS port to use

Cert File

Path to SSL cert file

Key File

Path to SSL key file

Key Pass

Password for SSL key file

AJP

Configure the AJP listener on the server

Enable

Enable AJP for this server

Port

AJP port to use

Rewrites

Configure URL Rewrites

Enable

Enable URL Rewrites on this server

Log Enable

Enable Rewrite log file

Config

Path to xml config file or .htaccess

Tuckey Status Path

URL path to visit Tuckey status page like '/tuckey-status'

Config Reload Seconds

Number of seconds to check rewrite config file for changes

Configure basic authentication

Enable

Enable basic auth for this server

Users

Users who can authenticate to basic auth

User

The key is the user name and the value is the password.

Application

Application Server Options

Log Directory

The folder path where the servlet out, rewrite, and access log are written to

Jar lib Directories

A comma-delimited list of directories from which CommandBox will load JARs

Web Context Directory

Directory for Lucee/Railo web context

Server Context Directory

Directory for Lucee/Railo server context

Web XML

Path to web.xml file

WAR Path

Path to a local WAR archive or exploded WAR folder.  Mutually exclusive with cfengine.

CFML Engine

An Endpoint ID that resolves to a CF engine such as 'adobe' or 'lucee'. Include version as 'adobe@2016'

REST Mappings

Comma delimited list of paths to map to the CF engine's REST servlet such as '/rest/*,/api/*'

Server Home Directory

Path to folder where the server WAR will be expanded

Session Cookie Secure

Enable secure session cookies

Session Cookie HttpOnly

Enable HTTP-only session cookies

Configure RunWar

These settings apply to the underlying Runwar library that starts servers

Arguments

Ad-hoc options for the underlying Runwar library

Provide a JSON object that satisfies the schema "CommandBox Server". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.