[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"title":"Upsun configuration file","$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"applications":{"description":"For more information, see https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#primary-application-properties","additionalProperties":{"type":"object","properties":{"resources":{"$ref":"#/definitions/deprecated/resources"},"container_profile":{"$ref":"#/definitions/container_profile"},"access":{"type":"object","additionalProperties":{"type":"string"},"title":"Access control for roles accessing app environments","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access","default":{"ssh":"contributor"}},"relationships":{"$ref":"#/definitions/relationships"},"mounts":{"$ref":"#/definitions/mounts"},"timezone":{"type":"string","title":"The timezone of the application","description":"This primarily affects the timezone in which cron tasks will run. It will not affect the application itself. Defaults to UTC if not specified. \nSee also: \nhttps://docs.upsun.com/create-apps/timezone.html","default":null},"variables":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"title":"Variables to control the environment","description":"Variables provide environment-sensitive information to control how your application behaves. To set a Unix environment variable, specify a key of `env:`, and then each sub-item of that is a key/value pair that will be injected into the environment. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#variables","default":{}},"firewall":{"$ref":"#/definitions/firewall"},"type":{"type":"string","title":"The base runtime (language) and version to use for this application","description":"The base image to use with a specific app language.  \nFormat: runtime:version. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#types"},"runtime":{"type":"object","title":"Runtime-specific configuration","description":"Customizations to your PHP or Lisp runtime. \nContains a runtime dictionary: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#runtime","properties":{"extensions":{"type":"array","title":"PHP extensions to enable","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#extensions","default":[]},"disabled_extensions":{"type":"array","title":"PHP extensions to disable","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#extensions","default":[]},"request_terminate_timeout":{"type":"integer","title":"PHP timeout to terminate requests","description":"The timeout in seconds for serving a single request after which the PHP-FPM worker process is killed."},"sizing_hints":{"type":"object","title":"A sizing hints definition","description":"The assumptions for setting the number of workers in your PHP-FPM runtime. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#sizing-hints","properties":{"request_memory":{"type":"integer","title":"The average memory consumed per request in MB","description":"Minimum to 10","default":45,"minimum":10},"reserved_memory":{"type":"integer","title":"The amount of memory reserved in MB","description":"Minimum to 70","default":70,"minimum":70}},"additionalProperties":false},"xdebug":{"type":"object","title":"An Xdebug definition","description":"The setting to turn on Xdebug. \nMore information: \nhttps://docs.upsun.com/languages/php/xdebug.html","properties":{"idekey":{"type":"string","title":"Your Xdebug key"}}},"quicklisp":{"type":"object","title":"Distributions for QuickLisp to use","description":"More information: \nhttps://docs.upsun.com/languages/lisp.html#quicklisp-options","deprecationMessage":"Lisp image no longer exists, please see \nhttps://devcenter.upsun.com/posts/deploying-with-lisp/ \n for more information"}}},"preflight":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether the preflight security blocks are enabled","description":"Must be a boolean"},"ignored_rules":{"type":"array","items":{"type":"string"},"title":"Specific rules to ignore during preflight security checks","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"Configuration for pre-flight checks","default":{"enabled":true,"ignored_rules":[]}},"dependencies":{"type":"object","additionalProperties":{"type":"object"},"title":"External global dependencies of this application","description":"What global dependencies to install before the build `hook` is run. They will be downloaded by the language's package manager.  \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#dependencies","default":{}},"build":{"type":"object","properties":{"flavor":{"type":"string","description":"The pre-set build tasks to use for this application","default":null}},"additionalProperties":false,"title":"The build configuration of the application","description":"It contains a build dictionary.  \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#build","default":{"flavor":null}},"source":{"type":"object","properties":{"root":{"type":"string","title":"The root of the application relative to the repository root","description":" \nDefaults to the root project directory.  \nUseful for multi-app setups: \nhttps://docs.upsun.com/create-apps/multi-app.html","default":null},"operations":{"type":"object","additionalProperties":{"type":"object","properties":{"command":{"type":"string","title":"Operations that can be applied to the source code","description":"More information: \nhttps://docs.upsun.com/create-apps/source-operations.html"}},"required":["command"],"additionalProperties":false},"title":"Operations that can be applied to the source code","default":{}}},"additionalProperties":false,"title":"Information on the app\u2019s source code and operations that can be run on it","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#source","default":{"operations":{},"root":null}},"web":{"type":"object","title":"How the web application is served","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#web","properties":{"variables":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"title":"Variables provide environment-sensitive information to control how your application behaves","description":"To set a Unix environment variable, specify a key of `env:`, and then each sub-item of that is a key/value pair that will be injected into the environment."},"timezone":{"type":"string","title":"The timezone of the application","description":"This primarily affects the timezone in which cron tasks will run. It will not affect the application itself. Defaults to UTC if not specified."},"mounts":{"$ref":"#/definitions/mounts"},"relationships":{"$ref":"#/definitions/relationships"},"access":{"type":"object","additionalProperties":{"type":"string"},"title":"Access information, a mapping between access type and roles","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access"},"size":{"$ref":"#/definitions/deprecated/size"},"resources":{"$ref":"#/definitions/deprecated/resources"},"locations":{"type":"object","additionalProperties":{"type":"object","properties":{"root":{"type":"string","title":"The folder from which to serve static assets for this location relative to the application root","description":"The directory to serve static assets for this location relative to the app\u2019s root directory. Must be an actual directory inside the root directory. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#root-directory","default":"public"},"expires":{"type":["integer","string"],"title":"Amount of time to cache static assets","description":"How long static assets are cached. The default means no caching. Setting it to a value enables the `Cache-Control` and `Expires` headers. Times can be suffixed with `ms` = milliseconds, `s` = seconds, `m` = minutes, `h` = hours, `d` = days, `w` = weeks, `M` = months/30d, or `y` = years/365d. If a `Cache-Control` appears on the `headers` configuration, `expires`, if set, will be ignored. Thus, make sure to set the `Cache-Control`\u2019s `max-age` value when specifying a the header.","default":-1},"passthru":{"type":["string","boolean"],"title":"Whether to forward disallowed and missing resources from this location to the app","description":"Whether to forward disallowed and missing resources from this location to the application. On PHP, set to the PHP front controller script, as a URL fragment. Otherwise set to `true`/`false`.","default":false},"scripts":{"type":"boolean","title":"Whether to allow scripts to run","description":"Doesn't apply to paths specified in `passthru`. Meaningful only on PHP containers.","default":true},"index":{"type":"array","items":{"type":"string"},"title":"Files to look for to serve directories","description":"Files to consider when serving a request for a directory. When set, requires access to the files through the `allow` or `rules` keys."},"allow":{"type":"boolean","title":"Whether to allow serving files which don\u2019t match a rule","default":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"title":"A set of header fields set to the HTTP response","description":"Any additional headers to apply to static assets, mapping header names to values. Responses from the app aren\u2019t affected. \nSee how to set custom headers on static content: \nhttps://docs.upsun.com/create-apps/web/custom-headers.html","default":{}},"rules":{"type":"object","additionalProperties":{"type":"object","properties":{"expires":{"type":["integer","string"],"title":"Amount of time to cache static assets","description":"How long static assets are cached. The default means no caching. Setting it to a value enables the `Cache-Control` and `Expires` headers. Times can be suffixed with `ms` = milliseconds, `s` = seconds, `m` = minutes, `h` = hours, `d` = days, `w` = weeks, `M` = months/30d, or `y` = years/365d. If a `Cache-Control` appears on the `headers` configuration, `expires`, if set, will be ignored. Thus, make sure to set the `Cache-Control`\u2019s `max-age` value when specifying a the header.","default":-1},"passthru":{"type":["string","boolean"],"title":"Whether to forward disallowed and missing resources from this location to the app","description":"On PHP, set to the PHP front controller script, as a URL fragment. Otherwise set to `true`/`false`.","default":true},"scripts":{"type":"boolean","title":"Whether to allow scripts to run","description":"Doesn't apply to paths specified in `passthru`. Meaningful only on PHP containers.","default":true},"allow":{"type":"boolean","title":"Whether to allow serving files which don\u2019t match a rule","default":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"title":"A set of header fields set to the HTTP response","description":"Any additional headers to apply to static assets, mapping header names to values. Responses from the app aren\u2019t affected. \nSee how to set custom headers on static content: \nhttps://docs.upsun.com/create-apps/web/custom-headers.html"}},"additionalProperties":false},"title":"Specific overrides for specific locations","description":"Contains a rules dictionary. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#rules","default":{}},"request_buffering":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Enable request buffering","default":true},"max_request_size":{"type":"string","title":"The maximum size request that can be buffered","description":"Supports K, M, and G suffixes. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#request-buffering","default":262144000}},"additionalProperties":false,"title":"Configuration for supporting request buffering.","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#request-buffering"}},"additionalProperties":false},"title":"The specification of the web locations served by this application","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#web","default":{}},"commands":{"type":"object","properties":{"pre_start":{"type":"string","title":"Command run just prior to `start`","description":"Which can be useful when you need to run per-instance actions."},"start":{"type":"string","title":"The command used to start the application","description":"It will be restarted if it terminates. Do not use on PHP unless using a custom persistent process like React PHP or FrankenPHP. \nSee note: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#required-command"}},"required":["start"],"additionalProperties":false,"title":"The command to launch your app","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#web-commands"},"upstream":{"type":"object","properties":{"socket_family":{"type":"string","title":"Whether your app listens on a Unix or TCP socket","description":"If `tcp`, check the PORT environment variable on application startup. If `unix`, check SOCKET. \nMore Information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#upstream","default":"tcp"},"protocol":{"type":"string","title":"Protocol","default":null}},"additionalProperties":false,"title":"Configuration on how the web server communicates with the application","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#upstream"},"document_root":{"type":"string","title":"The document root of this application, relative to its root","deprecationMessage":"Deprecated"},"passthru":{"type":"string","title":"The URL to use as a passthru if a file doesn't match the whitelist","deprecationMessage":"Deprecated"},"index_files":{"type":"array","items":{"type":"string"},"title":"Files to look for to serve directories","deprecationMessage":"Deprecated"},"whitelist":{"type":"array","items":{"type":"string"},"title":"Whitelisted entries","deprecationMessage":"Deprecated"},"blacklist":{"type":"array","items":{"type":"string"},"title":"Blacklisted entries","deprecationMessage":"Deprecated"},"expires":{"type":["integer","string"],"title":"Amount of time to cache static assets","deprecationMessage":"Deprecated"},"move_to_root":{"type":"boolean","title":"Whether to move the whole root of the app to the document root","default":false,"deprecationMessage":"Deprecated"}},"additionalProperties":false,"default":{"locations":{}}},"operations":{"type":"object","additionalProperties":{"type":"object","properties":{"commands":{"type":"object","properties":{"start":{"type":"string","title":"The command used to start the application","description":"It will be restarted if it terminates. Do not use on PHP unless using a custom persistent process like React PHP."}},"required":["start"]},"role":{"type":"string","title":"which users can trigger it according to their user role","description":"More information: \nhttps://docs.upsun.com/create-apps/runtime-operations.html#define-a-runtime-operation","enum":["viewer","contributor","admin"]}},"required":["commands"],"additionalProperties":false},"title":"Runtime operations that can be executed in the application container","description":"More information: \nhttps://docs.upsun.com/create-apps/runtime-operations.html","default":{}},"hooks":{"type":"object","properties":{"build":{"type":"string","title":"Hook executed after the build process","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#hooks","default":null},"deploy":{"type":"string","title":"Hook executed after the deployment of new code","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#hooks","default":null},"post_deploy":{"type":"string","title":"Hook executed after an environment is fully deployed","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#hooks","default":null}},"additionalProperties":false,"title":"What commands run at different stages in the `build`, `deploy` and `post_deploy` process","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#hooks","default":{}},"crons":{"type":"object","additionalProperties":{"type":"object","properties":{"spec":{"type":"string","title":"The cron schedule specification","description":"The cron specification. To prevent competition for resources that might hurt performance, use `H` in definitions to indicate an unspecified but invariant time. For example, instead of using `0 * * * *` to indicate the cron job runs at the start of every hour, you can use `H * * * *` to indicate it runs every hour, but not necessarily at the start. This prevents multiple cron jobs from trying to start at the same time. \nMore information: \nhttps://en.wikipedia.org/wiki/Cron#Cron_expression"},"commands":{"type":"object","properties":{"start":{"type":"string","title":"The command used to start the cron job","description":"By default, the command is run in Dash (till you specify something else): \nhttps://en.wikipedia.org/wiki/Almquist_shell"},"stop":{"type":"string","title":"The command used to stop the cron job","description":"The command that\u2019s issued to give the cron command a chance to shutdown gracefully, such as to finish an active item in a list of tasks. Issued when a cron task is interrupted by a user through the CLI or Console. If not specified, a `SIGTERM` signal is sent to the process.","default":null}},"required":["start"],"additionalProperties":false,"title":"A definition of what commands to run when starting and stopping the cron job","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#cron-commands"},"shutdown_timeout":{"type":"integer","title":"The timeout in seconds after which the cron job will be forcefully killed","description":"When a cron is canceled, this represents the number of seconds after which a `SIGKILL` signal is sent to the process to force terminate it. The default is `10` seconds.","default":10},"timeout":{"type":"integer","title":"The cron timeout","description":"The maximum amount of time a cron can run before it\u2019s terminated. Defaults to the maximum allowed value of `86400` seconds (24 hours).","maximum":86400},"cmd":{"type":"string","title":"The command to execute","deprecationMessage":"Deprecated, please use `commands.start` instead."}},"required":["spec"],"additionalProperties":false},"title":"Scheduled cron tasks executed by this application","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#crons","default":{}},"workers":{"type":"object","additionalProperties":{"type":"object","properties":{"firewall":{"$ref":"#/definitions/firewall"},"variables":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"title":"Variables to control the environment","description":"Variables provide environment-sensitive information to control how your application behaves. To set a Unix environment variable, specify a key of `env:`, and then each sub-item of that is a key/value pair that will be injected into the environment. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#variables","default":{}},"timezone":{"type":"string","title":"The timezone of the application","description":"This primarily affects the timezone in which cron tasks will run.  It will not affect the application itself. Defaults to UTC if not specified. \nSee also: \nhttps://docs.upsun.com/create-apps/timezone.html","default":null},"mounts":{"type":"object","additionalProperties":{"type":"object","properties":{"source":{"type":"string","title":"The type of mount that will provide the data","description":"- By design, `storage` mounts can be shared between instances of the same app \n- `instance` mounts are local mounts \n- `tmp` (or `temporary`) mounts are local ephemeral mounts \n- `service` mounts can be useful if you want to explicitly define and use a Network Storage service","enum":["instance","service","storage","temporary","tmp"]},"source_path":{"type":"string","title":"The path to be mounted","description":"Path relative to the root directory of the volume that's being mounted from.  \nWARNING: Changing the name of your mount affects the source_path when it\u2019s undefined. See how to ensure continuity and maintain access to your files \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#ensure-continuity-when-changing-the-name-of-your-mount"},"service":{"type":"string","title":"The name of the service that the volume will be mounted from","description":"Must be a service in `services.yaml` of type `network-storage`."}},"required":["source"],"additionalProperties":false},"title":"Filesystem mounts of this application","description":"Directories that are writable even after the app is built. Allocated disk for mounts is defined with a separate resource configuration call using `upsun resources:set`. \nContains a dictionary of mounts: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#mounts","default":{}},"relationships":{"$ref":"#/definitions/relationships"},"access":{"type":"object","additionalProperties":{"type":"string"},"title":"Access control for roles accessing app environments","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access","default":{"ssh":"contributor"}},"size":{"$ref":"#/definitions/deprecated/size"},"resources":{"$ref":"#/definitions/deprecated/resources"},"commands":{"type":"object","properties":{"pre_start":{"type":"string","title":"The command used to run before starting the application","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers"},"start":{"type":"string","title":"The command used to start the application","description":"It will be restarted if it terminates. Do not use on PHP unless using a custom persistent process like React PHP. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers"},"post_start":{"type":"string","title":"A command executed after the application is started","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers"}},"required":["start"],"additionalProperties":false,"title":"The commands to manage the worker","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers"}},"required":["commands"],"additionalProperties":false},"title":"Alternate copies of the application to run as background processes","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers","default":{}},"additional_hosts":{"type":"object","additionalProperties":{"type":"string"},"title":"Maps of hostnames to IP addresses","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#additional-hosts"},"stack":{"oneOf":[{"type":"string"},{"type":"object"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object"}]}}],"title":"Composable Image definition","description":"A list of packages from the Upsun collection of supported runtimes and/or from NixPkgs.  \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/composable-image.html"}},"oneOf":[{"required":["type"]},{"required":["stack"]}],"additionalProperties":false}},"routes":{"title":"The routes of the project","description":"Each route describes how an incoming URL is going to be processed by Upsun. \nMore information:  \nhttps://docs.upsun.com/define-routes.html","type":["object","null"],"additionalProperties":{"oneOf":[{"type":"object","title":"Route identifier","description":"More information: \nhttps://docs.upsun.com/define-routes.html#route-identifiers","properties":{"primary":{"$ref":"#/definitions/routes/primary"},"id":{"$ref":"#/definitions/routes/id"},"attributes":{"$ref":"#/definitions/routes/attributes"},"type":{"$ref":"#/definitions/routes/route_type"},"redirects":{"$ref":"#/definitions/routes/redirects"},"tls":{"$ref":"#/definitions/routes/tls"},"to":{"$ref":"#/definitions/routes/to"}},"required":["type","to"],"additionalProperties":false},{"type":"object","properties":{"primary":{"$ref":"#/definitions/routes/primary"},"id":{"$ref":"#/definitions/routes/id"},"attributes":{"$ref":"#/definitions/routes/attributes"},"type":{"$ref":"#/definitions/routes/route_type"},"redirects":{"$ref":"#/definitions/routes/redirects"},"tls":{"$ref":"#/definitions/routes/tls"},"cache":{"$ref":"#/definitions/routes/cache"},"ssi":{"$ref":"#/definitions/routes/ssi"},"upstream":{"$ref":"#/definitions/routes/upstream"}},"required":["type","upstream"],"additionalProperties":false}]}},"services":{"title":"The services of the project","description":"Each service listed will be deployed to power your Upsun project.  \nMore information:  \nhttps://docs.upsun.com/add-services.html \nFull list of available services:  \nhttps://docs.upsun.com/add-services.html#available-services","type":["object","null"],"additionalProperties":{"type":"object","properties":{"type":{"type":"string","title":"The service type","description":"One of the available services in the format `type:version`. \nMore information:  \nhttps://docs.upsun.com/add-services.html#available-services","default":{}},"size":{"$ref":"#/definitions/deprecated/size"},"access":{"type":"object","title":"The configuration of the service","default":{},"deprecationMessage":"Deprecated"},"configuration":{"type":"object","title":"The configuration of the service","description":"Some services have additional specific configuration options that can be defined here, such as specific endpoints. \nSee the given service page for more details:  \nhttps://docs.upsun.com/add-services.html#available-services.","default":{}},"relationships":{"$ref":"#/definitions/relationships"},"firewall":{"$ref":"#/definitions/firewall"},"resources":{"$ref":"#/definitions/deprecated/resources"},"container_profile":{"$ref":"#/definitions/container_profile"}},"required":["type"],"additionalProperties":false}}},"required":["applications"],"additionalProperties":true,"definitions":{"container_profile":{"type":["string","null"],"title":"The container profile for this application/service in production","description":"Leave blank to allow it to be set dynamically. \nMore information: \nhttps://docs.upsun.com/manage-resources/adjust-resources.html#adjust-a-container-profile","default":"","anyOf":[{"type":"string","enum":["HIGH_CPU","BALANCED","HIGH_MEMORY","HIGHER_MEMORY"]},{"type":"null"}]},"routes":{"primary":{"type":"boolean","title":"Whether the route is the primary route for the project","description":"If true, this route is the primary route of the environment","default":true},"id":{"type":"string","title":"Route Identifier","description":"A unique identifier for the route. See route identifiers: \nhttps://docs.upsun.com/define-routes.html#route-identifiers","default":null},"attributes":{"type":"object","title":"Attributes of the route","additionalProperties":{"type":"string"},"description":"Arbitrary attributes attached to this resource: \nhttps://docs.upsun.com/define-routes.html#route-attributes","default":{}},"route_type":{"type":["string","null"],"title":"Route type","description":"More information: \nhttps://docs.upsun.com/define-routes.html#route-configuration-reference","enum":["proxy","redirect","upstream"],"default":"upstream"},"redirects":{"type":"object","title":"The configuration of the redirects","description":"Defines redirects for partial routes. For definition and options, see the redirect rules: \nhttps://docs.upsun.com/define-routes/redirects.html","properties":{"expires":{"type":["integer","string"],"title":"The duration the redirect is cached","description":"Examples of valid values include 3600s, 1d, 2w, 3m. \nTo disable caching for all your redirects, set expires to 0. You can also disable caching on a specific redirect:  \nhttps://docs.upsun.com/define-routes/redirects.html#disable-caching-on-your-redirects","default":-1},"paths":{"type":"object","title":"The paths to redirect","description":"More information: \nhttps://docs.upsun.com/define-routes/redirects.html#partial-redirects","additionalProperties":{"type":"object","properties":{"regexp":{"type":"boolean","title":"Whether the path is a regular expression","description":"Specifies whether the path key should be interpreted as a PCRE regular expression. \nMore information: \nhttps://docs.upsun.com/define-routes/redirects.html#partial-redirects","default":false},"to":{"type":"string","title":"The URL to redirect to","description":"A relative URL - '/destination',  \nor absolute URL - 'https://example.com/'. \nMore information: \nhttps://docs.upsun.com/define-routes/redirects.html#partial-redirects"},"prefix":{"type":"boolean","title":"Prefix of the redirect path","description":"Specifies whether both the path and all its children or just the path itself should be redirected.  \nMore information: \nhttps://docs.upsun.com/define-routes/redirects.html#redirects-using-prefix-and-append_suffix","default":null},"append_suffix":{"type":"boolean","title":"Suffix of the redirect path","description":"Determines if the suffix is carried over with the redirect. More information. \nhttps://docs.upsun.com/define-routes/redirects.html#redirects-using-prefix-and-append_suffix","default":null},"code":{"type":"integer","title":"The redirect HTTP status code to use","description":"Valid status codes are 301, 302, 307, and 308.  \nDefaults to 302 for Partial redirects: \nhttps://docs.upsun.com/define-routes/redirects.html#partial-redirects \nand 301 for Whole-route redirects: \nhttps://docs.upsun.com/define-routes/redirects.html#whole-route-redirects \nMore information:  \nhttps://docs.upsun.com/define-routes/redirects.html#specify-a-http-status-code","default":302},"expires":{"type":["integer","string"],"title":"The amount of time, in seconds, to cache the redirects","description":"The duration the redirect is cached for.  \nMore information: \nhttps://docs.upsun.com/define-routes/redirects.html#manage-caching","default":null}},"required":["to"],"additionalProperties":false}}},"required":["paths"],"additionalProperties":false,"default":{}},"tls":{"type":"object","title":"TLS settings for the route","description":"The absolute URL or other route to which the given route should be redirected with an HTTP 301 status code. \nhttps://docs.upsun.com/define-routes/https.html#optional-configure-tls-connections","properties":{"strict_transport_security":{"type":"object","title":"Strict-Transport-Security options","description":"https://docs.upsun.com/define-routes/https.html#optional-configure-tls-connections","properties":{"enabled":{"type":"boolean","title":"Whether strict transport security is enabled or not","description":"If set to true, HSTS is enabled for 1 year.  \nIf set to false, other properties are ignored.","default":null},"include_subdomains":{"type":"boolean","title":"Whether the strict transport security policy should include all subdomains","description":"More information: \nhttps://docs.upsun.com/define-routes/https.html#enable-http-strict-transport-security-hsts","default":false},"preload":{"type":"boolean","title":"Whether the strict transport security policy should be preloaded in browsers","description":"To add your website to the HSTS preload list: \nhttps://hstspreload.org/. \nThanks to this list, most browsers are informed that your site requires HSTS before an HSTS header response is even issued.\n","default":false}},"additionalProperties":false,"default":{"preload":null,"include_subdomains":false,"enabled":false}},"min_version":{"type":"string","enum":["TLSv1.1","TLSv1.0","TLSv1.3","TLSv1.2"],"title":"The minimum TLS version to support.","description":"Note that TLS versions older than 1.2 are deprecated and are rejected by default.","default":null},"client_authentication":{"type":"string","description":"The type of client authentication to request.","default":null},"client_certificate_authorities":{"type":"array","items":{"type":"string"},"title":"Certificate authorities to validate the client certificate against","description":"If not specified, a default set of trusted CAs will be used. \nMore Information: \nhttps://docs.upsun.com/define-routes/https.html#enable-mtls","default":[]}},"additionalProperties":false,"default":{"client_authentication":null,"min_version":null,"client_certificate_authorities":[],"strict_transport_security":{"preload":null,"include_subdomains":null,"enabled":null}}},"to":{"type":"string","title":"Redirect destination","description":"The absolute URL or other route to which the given route should be redirected with an HTTP 301 status code. \nA relative URL - '/destination', or absolute URL - 'https://example.com/' \nMore information: \nhttps://docs.upsun.com/define-routes/redirects.html#partial-redirects"},"cache":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether the cache is enabled"},"default_ttl":{"type":"integer","title":"The TTL to apply when the response doesn't specify one. Only applies to static files","default":0},"cookies":{"type":"array","items":{"type":"string"},"title":"The cookies to take into account for the cache key","default":["*"]},"headers":{"type":"array","items":{"type":"string"},"title":"The headers to take into account for the cache key","default":["Accept","Accept-Language"]}},"required":["enabled"],"additionalProperties":false,"title":"Cache configuration","default":{"default_ttl":0,"cookies":["*"],"enabled":true,"headers":["Accept","Accept-Language"]}},"ssi":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether SSI include is enabled","description":"More information: \nhttps://docs.upsun.com/define-routes/ssi.html"}},"required":["enabled"],"additionalProperties":false,"title":"Server-Side Include configuration.","description":"More information: \nhttps://docs.upsun.com/define-routes.html#route-configuration-reference","default":{"enabled":false}},"upstream":{"type":"string","title":"The upstream to use for this route","description":"The name of the app to be served (as defined in your app configuration) followed by :http. Example: app:http \nMore information: \nhttps://docs.upsun.com/define-routes.html#route-configuration-reference"}},"relationships":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"null"},{"type":"object","properties":{"service":{"type":"string"},"endpoint":{"type":"string"}}}]},"title":"The relationships of the application/service to other services","description":"Contains a dictionary of relationships: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#relationships","default":{}},"firewall":{"type":"object","properties":{"outbound":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","title":"The IP protocol to apply the restriction on","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers","default":"tcp"},"ips":{"type":"array","items":{"type":"string"},"title":"The IP range in CIDR notation to apply the restriction on","description":"See a CIDR format converter: \nhttps://www.ipaddressguide.com/cidr \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers","default":[]},"domains":{"type":"array","items":{"type":"string"},"title":"Domains of the restriction","description":"Fully qualified domain names to specify specific destinations by hostname \nhttps://en.wikipedia.org/wiki/Fully_qualified_domain_name \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers","default":[]},"ports":{"type":"array","items":{"type":"integer"},"title":"The port to apply the restriction on","description":"Ports from 1 to 65535 that are allowed. If any ports are specified, all unspecified ports are blocked. If no ports are specified, all ports are allowed. Port 25, the SMTP port for sending email, is always blocked.","default":[]}},"additionalProperties":false},"title":"Outbound firewall restrictions","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers","default":[]}},"additionalProperties":false,"nullable":true,"title":"Outbound firewall rules for the application","description":"More information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#firewall","default":null},"mounts":{"type":"object","additionalProperties":{"type":"object","properties":{"source":{"type":"string","title":"The type of mount that will provide the data","description":"- By design, `storage` mounts can be shared between instances of the same app \n- `instance` mounts are local mounts \n- `tmp` (or `temporary`) mounts are local ephemeral mounts \n- `service` mounts can be useful if you want to explicitly define and use a Network Storage service","enum":["instance","service","storage","temporary","tmp"]},"source_path":{"type":"string","title":"The path to be mounted, relative to the root directory of the volume that's being mounted from","description":"WARNING: Changing the name of your mount affects the source_path when it\u2019s undefined. See how to ensure continuity and maintain access to your files \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#ensure-continuity-when-changing-the-name-of-your-mount"},"service":{"type":"string","title":"The name of the service that the volume will be mounted from","description":" Must be a service in `services.yaml` of type `network-storage`. \nMore information: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#mounts"}},"required":["source"],"additionalProperties":false},"title":"Filesystem mounts of this application","description":"Directories that are writable even after the app is built. Allocated disk for mounts is defined with a separate resource configuration call using `upsun resources:set`. \nContains a dictionary of mounts: \nhttps://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#mounts","default":{}},"deprecated":{"size":{"type":"string","title":"The container size for this application in production","description":"Leave blank to allow it to be set dynamically.","deprecationMessage":"Deprecated"},"resources":{"type":"object","properties":{"base_memory":{"type":"integer","title":"The base memory for the container","default":64,"deprecationMessage":"Deprecated"},"memory_ratio":{"type":"integer","title":"The amount of memory to allocate per units of CPU","default":128,"deprecationMessage":"Deprecated"}},"additionalProperties":false,"nullable":true,"title":"Resources","deprecationMessage":"Deprecated"}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "Upsun configuration file". Here are the required top‑level fields: applications. Return only the valid JSON object.

Upsun configuration file

For more information, see https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#primary-application-properties

Access control for roles accessing app environments

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access

The timezone of the application

This primarily affects the timezone in which cron tasks will run. It will not affect the application itself. Defaults to UTC if not specified.
See also:
https://docs.upsun.com/create-apps/timezone.html

Variables to control the environment

Variables provide environment-sensitive information to control how your application behaves. To set a Unix environment variable, specify a key of `env:`, and then each sub-item of that is a key/value pair that will be injected into the environment.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#variables

The base runtime (language) and version to use for this application

The base image to use with a specific app language.
Format: runtime:version.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#types

Runtime-specific configuration

Customizations to your PHP or Lisp runtime.
Contains a runtime dictionary:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#runtime

PHP extensions to enable

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#extensions

PHP extensions to disable

PHP timeout to terminate requests

The timeout in seconds for serving a single request after which the PHP-FPM worker process is killed.

A sizing hints definition

The assumptions for setting the number of workers in your PHP-FPM runtime.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#sizing-hints

The average memory consumed per request in MB

Minimum to 10

The amount of memory reserved in MB

Minimum to 70

An Xdebug definition

The setting to turn on Xdebug.
More information:
https://docs.upsun.com/languages/php/xdebug.html

Your Xdebug key

Distributions for QuickLisp to use

More information:
https://docs.upsun.com/languages/lisp.html#quicklisp-options

Lisp image no longer exists, please see
https://devcenter.upsun.com/posts/deploying-with-lisp/
 for more information

Whether the preflight security blocks are enabled

Must be a boolean

Specific rules to ignore during preflight security checks

Configuration for pre-flight checks

External global dependencies of this application

What global dependencies to install before the build `hook` is run. They will be downloaded by the language's package manager.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#dependencies

The pre-set build tasks to use for this application

The build configuration of the application

It contains a build dictionary.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#build

The root of the application relative to the repository root

Defaults to the root project directory.
Useful for multi-app setups:
https://docs.upsun.com/create-apps/multi-app.html

Operations that can be applied to the source code

More information:
https://docs.upsun.com/create-apps/source-operations.html

Information on the app’s source code and operations that can be run on it

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#source

How the web application is served

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#web

Variables provide environment-sensitive information to control how your application behaves

The timezone of the application

Access information, a mapping between access type and roles

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access

The folder from which to serve static assets for this location relative to the application root

The directory to serve static assets for this location relative to the app’s root directory. Must be an actual directory inside the root directory.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#root-directory

Amount of time to cache static assets

How long static assets are cached. The default means no caching. Setting it to a value enables the `Cache-Control` and `Expires` headers. Times can be suffixed with `ms` = milliseconds, `s` = seconds, `m` = minutes, `h` = hours, `d` = days, `w` = weeks, `M` = months/30d, or `y` = years/365d. If a `Cache-Control` appears on the `headers` configuration, `expires`, if set, will be ignored. Thus, make sure to set the `Cache-Control`’s `max-age` value when specifying a the header.

Whether to forward disallowed and missing resources from this location to the app

Whether to forward disallowed and missing resources from this location to the application. On PHP, set to the PHP front controller script, as a URL fragment. Otherwise set to `true`/`false`.

Whether to allow scripts to run

Doesn't apply to paths specified in `passthru`. Meaningful only on PHP containers.

Files to look for to serve directories

Files to consider when serving a request for a directory. When set, requires access to the files through the `allow` or `rules` keys.

Whether to allow serving files which don’t match a rule

A set of header fields set to the HTTP response

Any additional headers to apply to static assets, mapping header names to values. Responses from the app aren’t affected.
See how to set custom headers on static content:
https://docs.upsun.com/create-apps/web/custom-headers.html

Amount of time to cache static assets

On PHP, set to the PHP front controller script, as a URL fragment. Otherwise set to `true`/`false`.

Whether to allow scripts to run

Specific overrides for specific locations

Contains a rules dictionary.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#rules

Enable request buffering

The maximum size request that can be buffered

Supports K, M, and G suffixes.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#request-buffering

Configuration for supporting request buffering.

The specification of the web locations served by this application

Command run just prior to `start`

Which can be useful when you need to run per-instance actions.

The command used to start the application

It will be restarted if it terminates. Do not use on PHP unless using a custom persistent process like React PHP or FrankenPHP.
See note:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#required-command

The command to launch your app

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#web-commands

Whether your app listens on a Unix or TCP socket

If `tcp`, check the PORT environment variable on application startup. If `unix`, check SOCKET.
More Information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#upstream

Protocol

Configuration on how the web server communicates with the application

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#upstream

The document root of this application, relative to its root

The URL to use as a passthru if a file doesn't match the whitelist

Files to look for to serve directories

Whitelisted entries

Blacklisted entries

Amount of time to cache static assets

Whether to move the whole root of the app to the document root

which users can trigger it according to their user role

More information:
https://docs.upsun.com/create-apps/runtime-operations.html#define-a-runtime-operation

Runtime operations that can be executed in the application container

More information:
https://docs.upsun.com/create-apps/runtime-operations.html

Hook executed after the build process

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#hooks

Hook executed after the deployment of new code

Hook executed after an environment is fully deployed

What commands run at different stages in the `build`, `deploy` and `post_deploy` process

The cron schedule specification

The cron specification. To prevent competition for resources that might hurt performance, use `H` in definitions to indicate an unspecified but invariant time. For example, instead of using `0 * * * *` to indicate the cron job runs at the start of every hour, you can use `H * * * *` to indicate it runs every hour, but not necessarily at the start. This prevents multiple cron jobs from trying to start at the same time.
More information:
https://en.wikipedia.org/wiki/Cron#Cron_expression

The command used to start the cron job

By default, the command is run in Dash (till you specify something else):
https://en.wikipedia.org/wiki/Almquist_shell

The command used to stop the cron job

The command that’s issued to give the cron command a chance to shutdown gracefully, such as to finish an active item in a list of tasks. Issued when a cron task is interrupted by a user through the CLI or Console. If not specified, a `SIGTERM` signal is sent to the process.

A definition of what commands to run when starting and stopping the cron job

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#cron-commands

The timeout in seconds after which the cron job will be forcefully killed

When a cron is canceled, this represents the number of seconds after which a `SIGKILL` signal is sent to the process to force terminate it. The default is `10` seconds.

The cron timeout

The maximum amount of time a cron can run before it’s terminated. Defaults to the maximum allowed value of `86400` seconds (24 hours).

The command to execute

Deprecated, please use `commands.start` instead.

Scheduled cron tasks executed by this application

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#crons

Variables to control the environment

The timezone of the application

The type of mount that will provide the data

- By design, `storage` mounts can be shared between instances of the same app
- `instance` mounts are local mounts
- `tmp` (or `temporary`) mounts are local ephemeral mounts
- `service` mounts can be useful if you want to explicitly define and use a Network Storage service

The path to be mounted

Path relative to the root directory of the volume that's being mounted from.
WARNING: Changing the name of your mount affects the source_path when it’s undefined. See how to ensure continuity and maintain access to your files
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#ensure-continuity-when-changing-the-name-of-your-mount

The name of the service that the volume will be mounted from

Must be a service in `services.yaml` of type `network-storage`.

Filesystem mounts of this application

Directories that are writable even after the app is built. Allocated disk for mounts is defined with a separate resource configuration call using `upsun resources:set`.
Contains a dictionary of mounts:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#mounts

Access control for roles accessing app environments

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#access

The command used to run before starting the application

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers

The command used to start the application

It will be restarted if it terminates. Do not use on PHP unless using a custom persistent process like React PHP.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers

A command executed after the application is started

The commands to manage the worker

Alternate copies of the application to run as background processes

Maps of hostnames to IP addresses

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#additional-hosts

Composable Image definition

A list of packages from the Upsun collection of supported runtimes and/or from NixPkgs.
More information:
https://docs.upsun.com/create-apps/app-reference/composable-image.html

The routes of the project

Each route describes how an incoming URL is going to be processed by Upsun.
More information:
https://docs.upsun.com/define-routes.html

Route identifier

More information:
https://docs.upsun.com/define-routes.html#route-identifiers

The services of the project

Each service listed will be deployed to power your Upsun project.
More information:
https://docs.upsun.com/add-services.html
Full list of available services:
https://docs.upsun.com/add-services.html#available-services

The service type

One of the available services in the format `type:version`.
More information:
https://docs.upsun.com/add-services.html#available-services

The configuration of the service

The configuration of the service

Some services have additional specific configuration options that can be defined here, such as specific endpoints.
See the given service page for more details:
https://docs.upsun.com/add-services.html#available-services.

The container profile for this application/service in production

Leave blank to allow it to be set dynamically.
More information:
https://docs.upsun.com/manage-resources/adjust-resources.html#adjust-a-container-profile

Whether the route is the primary route for the project

If true, this route is the primary route of the environment

Route Identifier

A unique identifier for the route. See route identifiers:
https://docs.upsun.com/define-routes.html#route-identifiers

Attributes of the route

Arbitrary attributes attached to this resource:
https://docs.upsun.com/define-routes.html#route-attributes

Route type

More information:
https://docs.upsun.com/define-routes.html#route-configuration-reference

The configuration of the redirects

Defines redirects for partial routes. For definition and options, see the redirect rules:
https://docs.upsun.com/define-routes/redirects.html

The duration the redirect is cached

Examples of valid values include 3600s, 1d, 2w, 3m.
To disable caching for all your redirects, set expires to 0. You can also disable caching on a specific redirect:
https://docs.upsun.com/define-routes/redirects.html#disable-caching-on-your-redirects

The paths to redirect

More information:
https://docs.upsun.com/define-routes/redirects.html#partial-redirects

Whether the path is a regular expression

Specifies whether the path key should be interpreted as a PCRE regular expression.
More information:
https://docs.upsun.com/define-routes/redirects.html#partial-redirects

The URL to redirect to

A relative URL - '/destination',
or absolute URL - 'https://example.com/'.
More information:
https://docs.upsun.com/define-routes/redirects.html#partial-redirects

Prefix of the redirect path

Specifies whether both the path and all its children or just the path itself should be redirected.
More information:
https://docs.upsun.com/define-routes/redirects.html#redirects-using-prefix-and-append_suffix

Suffix of the redirect path

Determines if the suffix is carried over with the redirect. More information.
https://docs.upsun.com/define-routes/redirects.html#redirects-using-prefix-and-append_suffix

The redirect HTTP status code to use

Valid status codes are 301, 302, 307, and 308.
Defaults to 302 for Partial redirects:
https://docs.upsun.com/define-routes/redirects.html#partial-redirects
and 301 for Whole-route redirects:
https://docs.upsun.com/define-routes/redirects.html#whole-route-redirects
More information:
https://docs.upsun.com/define-routes/redirects.html#specify-a-http-status-code

The amount of time, in seconds, to cache the redirects

The duration the redirect is cached for.
More information:
https://docs.upsun.com/define-routes/redirects.html#manage-caching

TLS settings for the route

The absolute URL or other route to which the given route should be redirected with an HTTP 301 status code.
https://docs.upsun.com/define-routes/https.html#optional-configure-tls-connections

Strict-Transport-Security options

Whether strict transport security is enabled or not

If set to true, HSTS is enabled for 1 year.
If set to false, other properties are ignored.

Whether the strict transport security policy should include all subdomains

More information:
https://docs.upsun.com/define-routes/https.html#enable-http-strict-transport-security-hsts

Whether the strict transport security policy should be preloaded in browsers

To add your website to the HSTS preload list:
https://hstspreload.org/.
Thanks to this list, most browsers are informed that your site requires HSTS before an HSTS header response is even issued.

The minimum TLS version to support.

Note that TLS versions older than 1.2 are deprecated and are rejected by default.

The type of client authentication to request.

Certificate authorities to validate the client certificate against

If not specified, a default set of trusted CAs will be used.
More Information:
https://docs.upsun.com/define-routes/https.html#enable-mtls

Redirect destination

The absolute URL or other route to which the given route should be redirected with an HTTP 301 status code.
A relative URL - '/destination', or absolute URL - 'https://example.com/'
More information:
https://docs.upsun.com/define-routes/redirects.html#partial-redirects

Whether the cache is enabled

The TTL to apply when the response doesn't specify one. Only applies to static files

The cookies to take into account for the cache key

The headers to take into account for the cache key

Cache configuration

Whether SSI include is enabled

More information:
https://docs.upsun.com/define-routes/ssi.html

Server-Side Include configuration.

More information:
https://docs.upsun.com/define-routes.html#route-configuration-reference

The upstream to use for this route

The name of the app to be served (as defined in your app configuration) followed by :http. Example: app:http
More information:
https://docs.upsun.com/define-routes.html#route-configuration-reference

The relationships of the application/service to other services

Contains a dictionary of relationships:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#relationships

The IP protocol to apply the restriction on

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers

The IP range in CIDR notation to apply the restriction on

See a CIDR format converter:
https://www.ipaddressguide.com/cidr
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers

Domains of the restriction

Fully qualified domain names to specify specific destinations by hostname
https://en.wikipedia.org/wiki/Fully_qualified_domain_name
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#workers

The port to apply the restriction on

Ports from 1 to 65535 that are allowed. If any ports are specified, all unspecified ports are blocked. If no ports are specified, all ports are allowed. Port 25, the SMTP port for sending email, is always blocked.

Outbound firewall restrictions

Outbound firewall rules for the application

More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#firewall

The type of mount that will provide the data

The path to be mounted, relative to the root directory of the volume that's being mounted from

The name of the service that the volume will be mounted from

 Must be a service in `services.yaml` of type `network-storage`.
More information:
https://docs.upsun.com/create-apps/app-reference/single-runtime-image.html#mounts

Filesystem mounts of this application

The container size for this application in production

Leave blank to allow it to be set dynamically.

The base memory for the container

The amount of memory to allocate per units of CPU

Resources

Provide a JSON object that satisfies the schema "Upsun configuration file". Here are the required top‑level fields: applications. 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":"https://json.schemastore.org/usf.json","title":"Universal Schedule Format (USF)","description":"A compact and efficient format for storing school schedules.","type":"object","properties":{"version":{"type":"integer","description":"USF version"},"subjects":{"type":"object","additionalProperties":{"type":"object","properties":{"simplified_name":{"type":"string"},"teacher":{"type":"string"},"room":{"type":"string"}},"additionalProperties":false},"description":"Mapping of subject names to their details."},"periods":{"type":"array","items":{"type":"array","items":[{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$"},{"type":"string","pattern":"^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$"}],"minItems":2,"maxItems":2},"description":"List of time periods, each containing a start and end time."},"timetable":{"type":"array","items":{"type":"array","items":[{"type":"integer","minimum":1,"maximum":7,"description":"Day of the week (1=Monday, 7=Sunday)."},{"type":"string","enum":["all","even","odd"],"description":"Week type."},{"type":"string","description":"Subject name (must match keys in 'subjects')."},{"type":"integer","minimum":1,"description":"Class period (1-based index, must match 'periods')."}],"minItems":4,"maxItems":4},"description":"Schedule entries, each defining a class occurrence."}},"required":["version","subjects","periods","timetable"],"additionalProperties":false}
</schema>

[User] Provide a JSON object that satisfies the schema "Universal Schedule Format (USF)". Here are the required top‑level fields: version, subjects, periods, timetable. Return only the valid JSON object.

Universal Schedule Format (USF)

A compact and efficient format for storing school schedules.

USF version

Mapping of subject names to their details.

List of time periods, each containing a start and end time.

Day of the week (1=Monday, 7=Sunday).

Week type.

Subject name (must match keys in 'subjects').

Class period (1-based index, must match 'periods').

Schedule entries, each defining a class occurrence.

Provide a JSON object that satisfies the schema "Universal Schedule Format (USF)". Here are the required top‑level fields: version, subjects, periods, timetable. 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":"https://json.schemastore.org/utam-page-object.json","allOf":[{"if":{"properties":{"interface":{"const":false}}},"then":{"$ref":"#/definitions/pageObject"}},{"if":{"properties":{"interface":{"const":true}},"required":["interface"]},"then":{"$ref":"#/definitions/pageObjectInterface"}}],"definitions":{"pageObject":{"type":"object","additionalProperties":false,"title":"Page Object","description":"An object representing a page or a UI element in a web page","properties":{"description":{"$ref":"#/definitions/rootDescription"},"root":{"$ref":"#/definitions/root"},"selector":{"$ref":"#/definitions/selector"},"exposeRootElement":{"$ref":"#/definitions/exposeRootElement"},"type":{"$ref":"#/definitions/type"},"implements":{"description":"reference to the interface implemented by the page object","type":"string"},"profile":{"title":"Page Object Profile","description":"list of profiles that can use this page object implementation.","type":"array","items":{"type":"object","additionalProperties":{"type":"array","contains":{"type":"string"}}}},"platform":{"title":"Page Object Platform","description":"Declares the page context type (WebView or native).","enum":["web","native"],"default":"web"},"beforeLoad":{"title":"Preload Criteria","description":"The beforeLoad array sets the criteria to be satisfied before the load method completes. If you don't specify a beforeLoad array, the load method finds a root element for a regular page object, or waits for the root element to be present for a root page object), by default.","type":["array"],"items":{"allOf":[{"$ref":"#/definitions/predicateStatement"},{"properties":{"element":{"type":"string","enum":["document","root","navigation"]}}}]}},"elements":{"$ref":"#/definitions/elementsArray"},"methods":{"title":"Methods","description":"An array of methods performing actions on this page object's elements.","type":"array","items":{"$ref":"#/definitions/composeMethod"}},"shadow":{"title":"Shadow Boundary","description":"A shadow boundary at the root of the page object.","type":"object","properties":{"elements":{"$ref":"#/definitions/elementsArray"}},"default":{"elements":[]}},"metadata":{"$ref":"#/definitions/metadata"}},"dependencies":{"selector":["root"],"root":["selector"],"profile":["implements"]}},"pageObjectInterface":{"type":"object","additionalProperties":false,"title":"Page Object Interface","description":"An interface to abstract page object APIs for page objects with similar structure and function.","properties":{"interface":{"description":"Indicates that this page object describes an interface.","type":"boolean","default":false},"root":{"$ref":"#/definitions/root"},"exposeRootElement":{"$ref":"#/definitions/exposeRootElement"},"type":{"$ref":"#/definitions/type"},"methods":{"title":"Interface Methods","description":"An array of method declarations that page objects implementing this interface must define.","type":"array","items":{"$ref":"#/definitions/interfaceMethod"}},"description":{"$ref":"#/definitions/rootDescription"},"metadata":{"$ref":"#/definitions/metadata"}}},"element":{"title":"Element","description":"An interface to abstract page object APIs for page objects with similar structure and function.","type":"object","properties":{"name":{"type":"string"},"type":{"type":["string","array"],"items":[{"enum":["actionable","clickable","editable","draggable","touchable"]}]},"selector":{"$ref":"#/definitions/selector"},"nullable":{"type":"boolean"},"shadow":{"type":"object","properties":{"elements":{"$ref":"#/definitions/elementsArray"}}},"elements":{"$ref":"#/definitions/elementsArray"},"public":{"type":"boolean"},"filter":{"$ref":"#/definitions/filter"},"description":{"$ref":"#/definitions/methodDescription"},"wait":{"type":"boolean","default":true},"load":{"type":"boolean","default":true}},"required":["name"],"additionalProperties":false},"elementsArray":{"title":"Elements","description":"A nested tree of element objects.","type":"array","items":{"$ref":"#/definitions/element"}},"selector":{"$defs":{"args":{"description":"Parameters to the methods that access this element or its nested elements.","type":"array","items":{"$ref":"#/definitions/arg"}},"returnAll":{"description":"Returns a list of elements","type":"boolean","default":true}},"title":"Selector","description":"An object that locates an element or a list of elements at run time.","type":"object","oneOf":[{"type":"object","properties":{"css":{"description":"Standard CSS selector.","type":"string"},"args":{"$ref":"#/definitions/selector/$defs/args"},"returnAll":{"$ref":"#/definitions/selector/$defs/returnAll"}},"required":["css"],"additionalProperties":false},{"type":"object","properties":{"accessid":{"description":"Accessibility ID selector, a unique identifier for a UI element for Mobile Platform only.","type":"string"},"args":{"$ref":"#/definitions/selector/$defs/args"},"returnAll":{"$ref":"#/definitions/selector/$defs/returnAll"}},"required":["accessid"],"additionalProperties":false},{"type":"object","properties":{"classchain":{"description":"Class chain selector, a unique identifier for a window element from the root of the page for iOS platform only.","type":"string"},"args":{"$ref":"#/definitions/selector/$defs/args"},"returnAll":{"$ref":"#/definitions/selector/$defs/returnAll"}},"required":["classchain"],"additionalProperties":false},{"type":"object","properties":{"uiautomator":{"description":"A UIAutomator selector to enable search through UiSelectors for Android platform only","type":"string"},"args":{"$ref":"#/definitions/selector/$defs/args"},"returnAll":{"$ref":"#/definitions/selector/$defs/returnAll"}},"required":["uiautomator"],"additionalProperties":false}]},"pageObjectType":{"type":"object","properties":{"type":{"type":"string","description":"URI-like type value of the page object"}},"required":["type"],"additionalProperties":false},"filter":{"type":"object","properties":{"args":{"type":"array","items":{"$ref":"#/definitions/arg"}},"apply":{"type":"string"},"matcher":{"$ref":"#/definitions/matcher"},"findFirst":{"description":"Return only the first match result.","type":"boolean","default":true}},"additionalProperties":false},"matcher":{"type":"object","properties":{"type":{"type":"string","enum":["isTrue","isFalse","notNull","stringContains","stringEquals"]},"args":{"type":"array","items":{"$ref":"#/definitions/arg"}}},"additionalProperties":false},"interfaceMethod":{"title":"Interface Method","description":"A declarative, interface method definition.","type":"object","properties":{"name":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/definitions/arg"}},"returnType":{"type":["string","array"],"items":[{"enum":["actionable","clickable","editable","draggable","touchable"]}]},"returnAll":{"type":"boolean","default":false},"description":{"$ref":"#/definitions/methodDescription"}},"required":["name"],"dependencies":{"returnAll":["returnType"]},"additionalProperties":false},"composeMethod":{"title":"Method","description":"A method definition, composed of element actions.","type":"object","properties":{"name":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/definitions/arg"}},"compose":{"type":"array","items":{"$ref":"#/definitions/action","type":"object"}},"description":{"$ref":"#/definitions/methodDescription"}},"required":["name","compose"],"additionalProperties":false},"action":{"type":"object","title":"Element Action","description":"An action to be performed on an element.","additionalProperties":false,"properties":{"element":{"type":"string"},"apply":{"type":"string"},"applyExternal":{"type":"object"},"args":{"type":"array","items":{"$ref":"#/definitions/arg"}},"matcher":{"$ref":"#/definitions/matcher","type":"object"},"chain":{"type":"boolean"},"returnType":{"type":"string","default":"void"},"returnAll":{"type":"boolean","default":false}},"allOf":[{"if":{"required":["apply"]},"then":{"not":{"required":["applyExternal"]}}},{"if":{"required":["applyExternal"]},"then":{"properties":{"applyExternal":{"type":"object","properties":{"type":{"type":"string"},"invoke":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/definitions/arg"}}},"required":["type","invoke"],"additionalProperties":false}},"required":["applyExternal"],"not":{"required":["apply"]}}}]},"arg":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["string","boolean","number","elementReference","argumentReference","function","locator","frame","pageObject","rootPageObject"]},"value":{"type":["integer","string","boolean","number","object"]},"predicate":{"type":"array"},"args":{"description":"element reference can have nested literal args (hardcoded values for its getter)","type":"array","items":{"$ref":"#/definitions/arg"}},"description":{"type":"string"}},"oneOf":[{"properties":{"type":{"type":"string","enum":["string","boolean","number","locator","pageObject","rootPageObject","frame","argumentReference"]},"name":{"type":["string"]}},"required":["type","name"]},{"properties":{"type":{"type":"string","enum":["locator","elementReference","pageObject","rootPageObject"]},"value":{"anyOf":[{"type":["integer","string","boolean","number"]},{"$ref":"#/definitions/selector","type":"object"},{"$ref":"#/definitions/pageObjectType","type":"object"}]}},"required":["value"]},{"properties":{"type":{"const":"function"},"name":{"type":"string"},"predicate":{"type":["array"],"items":{"$ref":"#/definitions/predicateStatement"}}},"required":["type","predicate"]}],"additionalProperties":false},"predicateStatement":{"$ref":"#/definitions/action"},"root":{"type":"boolean","default":false},"exposeRootElement":{"type":"boolean","default":true},"name":{"type":"string"},"type":{"type":["string","array"],"items":[{"enum":["actionable","clickable","editable","draggable","touchable"]}]},"shadow":{"type":"object","title":"Shadow Root","description":"A shadow boundary at the root of the page object.","properties":{"elements":{"type":"array","items":{"$ref":"#/definitions/element"}}},"default":{"elements":[]}},"elements":{"type":"array","items":{"$ref":"#/definitions/element"}},"methods":{"type":"array"},"rootDescription":{"title":"Root element description","description":"summary of the functionality and use cases","type":["object","string"],"properties":{"text":{"type":"array","items":{"type":"string"}},"author":{"type":"string"},"deprecated":{"type":"string"}},"required":["text"],"additionalProperties":false},"metadata":{"title":"Page Object Metadata","description":"track miscellaneous information for the page object","type":["object"],"properties":{"status":{"type":"string"},"teamOwner":{"type":"string"}},"additionalProperties":false},"methodDescription":{"title":"Method description","description":"summary at the method or element level","type":["object","string"],"properties":{"text":{"type":"array","items":{"type":"string"}},"return":{"type":"string"},"throws":{"type":"string"},"deprecated":{"type":"string"}},"required":["text"],"additionalProperties":false}},"properties":{"interface":{"type":"boolean"}},"title":"UI Test Automation Model Page Object","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "UI Test Automation Model Page Object". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Page Object

An object representing a page or a UI element in a web page

reference to the interface implemented by the page object

Page Object Profile

list of profiles that can use this page object implementation.

Page Object Platform

Declares the page context type (WebView or native).

Preload Criteria

The beforeLoad array sets the criteria to be satisfied before the load method completes. If you don't specify a beforeLoad array, the load method finds a root element for a regular page object, or waits for the root element to be present for a root page object), by default.

Methods

An array of methods performing actions on this page object's elements.

Shadow Boundary

A shadow boundary at the root of the page object.

Page Object Interface

An interface to abstract page object APIs for page objects with similar structure and function.

Indicates that this page object describes an interface.

Interface Methods

An array of method declarations that page objects implementing this interface must define.

Element

actionable clickable editable draggable touchable

Elements

A nested tree of element objects.

Parameters to the methods that access this element or its nested elements.

Returns a list of elements

Selector

An object that locates an element or a list of elements at run time.

Standard CSS selector.

Accessibility ID selector, a unique identifier for a UI element for Mobile Platform only.

Class chain selector, a unique identifier for a window element from the root of the page for iOS platform only.

A UIAutomator selector to enable search through UiSelectors for Android platform only

URI-like type value of the page object

Return only the first match result.

isTrue isFalse notNull stringContains stringEquals

Interface Method

A declarative, interface method definition.

Method

A method definition, composed of element actions.

Element Action

An action to be performed on an element.

string boolean number elementReference argumentReference function locator frame pageObject rootPageObject

element reference can have nested literal args (hardcoded values for its getter)

string boolean number locator pageObject rootPageObject frame argumentReference

locator elementReference pageObject rootPageObject

Shadow Root

Root element description

summary of the functionality and use cases

Page Object Metadata

track miscellaneous information for the page object

Method description

summary at the method or element level

UI Test Automation Model Page Object

Provide a JSON object that satisfies the schema "UI Test Automation Model Page Object". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.