[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#","title":"IBM zCodeFormatSettings","description":"JSON schema for zcodeformat.yaml or zcodeformat.json code formatter preferences files. Version 0.0.1 -- Licensed Materials - Property of IBM - (c) Copyright IBM Corporation 2022. All Rights Reserved.","type":"object","properties":{"additionalProperties":false,"cobol":{"$ref":"#/definitions/cobol"},"copybook":{"$ref":"#/definitions/copybook"}},"definitions":{"copybookCapitalizationOptions":{"enum":["upper","lower"]},"cobolCapitalizationOptions":{"enum":["none","upper","lower","mixed"]},"cobol":{"additionalProperties":false,"type":"object","properties":{"dataDivision":{"additionalProperties":false,"type":"object","properties":{"enableIndentation":{"type":"boolean","description":"Enable indentation of record descriptions\nIf false, startOfAreaA and indentLength are not allowed","default":true},"indentation":{"type":"object","description":"Indentation objects based on enableIndentation","$ref":"#/definitions/dataDivIndent"},"alignPictureClauses":{"type":"boolean","description":"Align PICTURE Clauses","default":true},"alignValueClauses":{"type":"boolean","description":"Align VALUE Clauses","default":true}},"anyOf":[{"properties":{"enableIndentation":{"const":false},"indentation":{"type":"object","additionalProperties":false}}},{"properties":{"enableIndentation":{"const":true},"indentation":{"$ref":"#/definitions/dataDivIndent"}}}]},"procedureDivision":{"additionalProperties":false,"type":"object","properties":{"enableIndentation":{"type":"boolean","description":"Enable indentation of procedure divisions","default":true},"indentation":{"type":"object","description":"Indentation objects based on enableIndentation","$ref":"#/definitions/procDivIndent"}},"anyOf":[{"properties":{"enableIndentation":{"const":false},"indentation":{"type":"object","additionalProperties":false}}},{"properties":{"enableIndentation":{"const":true},"indentation":{"$ref":"#/definitions/procDivIndent"}}}]},"reservedWordCase":{"type":"string","description":"Reserved words","default":"upper","$ref":"#/definitions/cobolCapitalizationOptions"},"userDefinedWordCase":{"type":"string","description":"User-defined words","default":"upper","$ref":"#/definitions/cobolCapitalizationOptions"},"commentCase":{"type":"string","description":"Comment","default":"none","$ref":"#/definitions/cobolCapitalizationOptions"},"functionCase":{"type":"string","description":"Function","default":"upper","$ref":"#/definitions/cobolCapitalizationOptions"},"dateFormatCase":{"type":"string","description":"Date format","default":"upper","$ref":"#/definitions/cobolCapitalizationOptions"},"compilerDirectiveCase":{"type":"string","description":"Compiler directive","default":"upper","$ref":"#/definitions/cobolCapitalizationOptions"},"endOfAreaB":{"type":"integer","description":"End of Area B\n\nIf -1, will use Margin R as the end of Area B","default":-1,"oneOf":[{"minimum":-1,"maximum":-1},{"minimum":50,"maximum":100}]},"lineWrappingStyle":{"type":"string","description":"If indentation moves code beyond Area B","default":"wrapToNextLine","enum":["wrapToNextLine","noIndent","indentToAreaB","indentPastAreaB"]}}},"copybook":{"additionalProperties":false,"type":"object","properties":{"codeCase":{"type":"string","description":"Format copybook code in uppercase","default":"upper","$ref":"#/definitions/copybookCapitalizationOptions"},"commentCase":{"type":"string","description":"Format copybook comments in uppercase","default":"upper","$ref":"#/definitions/copybookCapitalizationOptions"}}},"dataDivIndent":{"type":"object","additionalProperties":false,"properties":{"startOfAreaA":{"type":"integer","description":"Start of Area A\nCannot be used if enableIndentation is false","default":8,"minimum":8,"maximum":11},"indentLength":{"type":"integer","description":"Indent Length\nCannot be used if enableIndentation is false","default":3,"minimum":0,"maximum":10}}},"procDivIndent":{"type":"object","additionalProperties":false,"properties":{"startOfAreaA":{"type":"integer","description":"Start of Area A\nCannot be used if enableIndentation is false","default":8,"minimum":8,"maximum":11},"startOfAreaB":{"type":"integer","description":"Start of Area B\nCannot be used if enableIndentation is false","default":12,"minimum":12,"maximum":16},"indentMultipleLineStatements":{"type":"integer","description":"Multiple line statement indent length\nCannot be used if enableIndentation is false\nuse -1 to disable","default":3,"minimum":0,"maximum":10},"alignLists":{"type":"boolean","description":"Align lists\nCannot be used if enableIndentation is false","default":true},"indentForAllBlocks":{"type":"integer","description":"Fixed indent length to use for all blocks\nCannot be used if enableIndentation is false\nCannot be used with other individual block indent values","default":3,"minimum":0,"maximum":10},"blocks":{"type":"object","description":"Individual block indent values","$ref":"#/definitions/blockIndent"}},"anyOf":[{"properties":{"indentForAllBlocks":{"type":"number"},"blocks":{"type":"object","additionalProperties":false}}},{"properties":{"indentForAllBlocks":false,"blocks":{"$ref":"#/definitions/blockIndent"}}}]},"blockIndent":{"type":"object","additionalProperties":false,"properties":{"indentAtEndBlock":{"type":"integer","description":"Indent length of AT END block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentAtEndOfPageBlock":{"type":"integer","description":"Indent length of AT END OF PAGE block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentExecBlock":{"type":"integer","description":"Indent length of EXEC block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":5,"minimum":0,"maximum":10},"indentEndExecPhrase":{"type":"boolean","description":"Indent END-EXEC phrase\nCannot be used if enableIndentation is false\nEND-EXEC phrase will be indented with Exec Block","default":true},"indentIfBlock":{"type":"integer","description":"Indent length of IF block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentInvalidKeyBlock":{"type":"integer","description":"Indent length of INVALID KEY block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":8,"minimum":0,"maximum":10},"indentNotAtEndBlock":{"type":"integer","description":"Indent length of NOT AT END block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentNotAtEndOfPageBlock":{"type":"integer","description":"Indent length of NOT AT END OF PAGE block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentNotInvalidKeyBlock":{"type":"integer","description":"Indent length of INVALID KEY\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentNotOnExceptionBlock":{"type":"integer","description":"Indent length of NOT ON EXCEPTION block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentNotOnOverflowBlock":{"type":"integer","description":"Indent length of NOT ON OVERFLOW block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentNotOnSizeErrorBlock":{"type":"integer","description":"Indent length of NOT ON SIZE ERROR block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":4,"minimum":0,"maximum":10},"indentOnExceptionBlock":{"type":"integer","description":"Indent length of ON EXCEPTION block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentOnOverflowBlock":{"type":"integer","description":"Indent length of ON OVERFLOW block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentOnSizeErrorBlock":{"type":"integer","description":"Indent length of ON SIZE ERROR block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":3,"minimum":0,"maximum":10},"indentPerformBlock":{"type":"integer","description":"Indent length of PERFORM block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":8,"minimum":0,"maximum":10},"indentWhenBlock":{"type":"integer","description":"Indent length of WHEN block\nCannot be used if enableIndentation is false\nCannot be used if indentForAllBlocks is used","default":5,"minimum":0,"maximum":10}}}}}
</schema>

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

IBM zCodeFormatSettings

JSON schema for zcodeformat.yaml or zcodeformat.json code formatter preferences files. Version 0.0.1 -- Licensed Materials - Property of IBM - (c) Copyright IBM Corporation 2022. All Rights Reserved.

Enable indentation of record descriptions
If false, startOfAreaA and indentLength are not allowed

Indentation objects based on enableIndentation

Align PICTURE Clauses

Align VALUE Clauses

Enable indentation of procedure divisions

Reserved words

User-defined words

Comment

Function

Date format

Compiler directive

End of Area B

If -1, will use Margin R as the end of Area B

If indentation moves code beyond Area B

wrapToNextLine noIndent indentToAreaB indentPastAreaB

Format copybook code in uppercase

Format copybook comments in uppercase

Start of Area A
Cannot be used if enableIndentation is false

Indent Length
Cannot be used if enableIndentation is false

Start of Area B
Cannot be used if enableIndentation is false

Multiple line statement indent length
Cannot be used if enableIndentation is false
use -1 to disable

Align lists
Cannot be used if enableIndentation is false

Fixed indent length to use for all blocks
Cannot be used if enableIndentation is false
Cannot be used with other individual block indent values

Individual block indent values

Indent length of AT END block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of AT END OF PAGE block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of EXEC block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent END-EXEC phrase
Cannot be used if enableIndentation is false
END-EXEC phrase will be indented with Exec Block

Indent length of IF block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of INVALID KEY block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of NOT AT END block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of NOT AT END OF PAGE block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of INVALID KEY
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of NOT ON EXCEPTION block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of NOT ON OVERFLOW block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of NOT ON SIZE ERROR block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of ON EXCEPTION block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of ON OVERFLOW block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of ON SIZE ERROR block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of PERFORM block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Indent length of WHEN block
Cannot be used if enableIndentation is false
Cannot be used if indentForAllBlocks is used

Provide a JSON object that satisfies the schema "IBM zCodeFormatSettings". 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":"https://json-schema.org/draft/2020-12/schema","$id":"https://api.app-prg1.zerops.io/api/rest/public/settings/zerops-yaml-json-schema.json","properties":{"zerops":{"items":{"properties":{"setup":{"type":"string","description":"The first element setup contains the hostname of your service. A runtime service with the same hostname must exist in Zerops. Zerops supports the definition of multiple runtime services in a single zerops.yml. This is useful when you use a monorepo. Just add multiple setup elements in your zerops.yml."},"build":{"properties":{"os":{"type":"string","enum":["alpine","ubuntu"],"description":"Sets the operating system for the runtime environment."},"base":{"oneOf":[{"type":"string","enum":["22.04","24.04","3.17","3.18","3.19","3.20","3.21","alpine@3.17","alpine@3.18","alpine@3.19","alpine@3.20","alpine@3.21","alpine@latest","bun@1.1","bun@1.1.34","bun@1.2","bun@1.2.2","bun@canary","bun@latest","bun@nightly","deno@1","deno@1.45.5","deno@2.0.0","deno@latest","dotnet@6","dotnet@7","dotnet@8","dotnet@9","dotnet@latest","elixir@1","elixir@1.16","elixir@1.16.2","elixir@latest","gleam@1","gleam@1.5","gleam@1.5.1","gleam@latest","go@1","go@1.22","go@latest","golang@1","golang@latest","java@17","java@21","java@latest","nodejs@18","nodejs@20","nodejs@22","nodejs@latest","php@8.1","php@8.3","php@8.4","php@latest","python@3.11","python@3.12","python@latest","ruby@3.2","ruby@3.3","ruby@3.4","rust@1","rust@1.78","rust@1.80","rust@1.86","rust@latest","rust@nightly","rust@stable","ubuntu@22.04","ubuntu@24.04","ubuntu@latest"]},{"items":{"type":"string","enum":["22.04","24.04","3.17","3.18","3.19","3.20","3.21","alpine@3.17","alpine@3.18","alpine@3.19","alpine@3.20","alpine@3.21","alpine@latest","bun@1.1","bun@1.1.34","bun@1.2","bun@1.2.2","bun@canary","bun@latest","bun@nightly","deno@1","deno@1.45.5","deno@2.0.0","deno@latest","dotnet@6","dotnet@7","dotnet@8","dotnet@9","dotnet@latest","elixir@1","elixir@1.16","elixir@1.16.2","elixir@latest","gleam@1","gleam@1.5","gleam@1.5.1","gleam@latest","go@1","go@1.22","go@latest","golang@1","golang@latest","java@17","java@21","java@latest","nodejs@18","nodejs@20","nodejs@22","nodejs@latest","php@8.1","php@8.3","php@8.4","php@latest","python@3.11","python@3.12","python@latest","ruby@3.2","ruby@3.3","ruby@3.4","rust@1","rust@1.78","rust@1.80","rust@1.86","rust@latest","rust@nightly","rust@stable","ubuntu@22.04","ubuntu@24.04","ubuntu@latest"]},"type":"array"}],"description":"Sets the base technology for the build environment. If you need to install more technologies to the build environment, set multiple values as a yaml array."},"prepareCommands":{"items":{"type":"string"},"type":"array","description":"Customises the build environment by installing additional dependencies or tools to the base build environment."},"buildCommands":{"items":{"type":"string"},"type":"array","description":"Defines build commands. Zerops triggers each command in the defined order in a dedicated build container."},"deploy":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"deprecated":true},"deployFiles":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Selects which files or folders will be deployed after the build has successfully finished. To filter out specific files or folders, use .deployignore file."},"cache":{"oneOf":[{"type":"boolean"},{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Defines which files or folders will be cached for the next build."},"addToRunPrepare":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Defines what files or folders will be copied from the build container to the prepare runtime container. The prepare runtime container is used to customize your runtime environment."},"envVariables":{"additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"type":"object","description":"Defines the environment variables for the build environment."}},"additionalProperties":false,"type":"object","required":["deployFiles"],"description":"Build pipeline configuration."},"deploy":{"properties":{"readinessCheck":{"properties":{"httpGet":{"properties":{"scheme":{"type":"string","description":"The readiness check is triggered from inside of your runtime container so no https is required. If your application requires a https request, set scheme: https"},"host":{"type":"string","description":"The readiness check is triggered from inside of your runtime container so it always uses the localhost (127.0.0.1). If you need to add a host to the request header, specify it in the host attribute."},"port":{"type":"integer","description":"Defines the port of the HTTP GET request."},"path":{"type":"string","description":"Defines the URL path of the HTTP GET request."}},"additionalProperties":false,"type":"object","required":["port","path"],"description":"Configures the readiness check to request a local URL using a http GET method."},"exec":{"properties":{"command":{"type":"string","description":"Defines a local command to be run. The command has access to the same environment variables. A single string is required. If you need to run multiple commands create a shell script or, use a multiline format as in the example below."}},"additionalProperties":false,"type":"object","required":["command"],"description":"Configures the readiness check to run a local command."},"failureTimeout":{"type":"integer","description":"Time until container is marked as failed."},"retryPeriod":{"type":"integer","description":"Time interval between readiness check attempts."}},"additionalProperties":false,"type":"object","description":"Defines a readiness check. Requires either httpGet object or exec object."},"temporaryShutdown":{"type":"boolean"}},"additionalProperties":false,"type":"object","description":"Deploy configuration."},"run":{"properties":{"initCommands":{"items":{"type":"string"},"type":"array","description":"Defines one or more commands to be run each time a new runtime container is started or a container is restarted."},"prepareCommands":{"items":{"type":"string"},"type":"array","description":"Customises the runtime environment by installing additional dependencies or tools to the base runtime environment."},"os":{"type":"string","enum":["alpine","ubuntu"],"description":"Sets the operating system for the runtime environment."},"base":{"type":"string","enum":["22.04","24.04","3.17","3.18","3.19","3.20","3.21","alpine@3.17","alpine@3.18","alpine@3.19","alpine@3.20","alpine@3.21","alpine@latest","bun@1.1","bun@1.1.34","bun@1.2","bun@1.2.2","bun@canary","bun@latest","bun@nightly","deno@1","deno@1.45.5","deno@2.0.0","deno@latest","docker@26","docker@26.1","docker@26.1.5","docker@latest","dotnet@6","dotnet@7","dotnet@8","dotnet@9","dotnet@latest","elixir@1","elixir@1.16","elixir@1.16.2","elixir@latest","gleam@1","gleam@1.5","gleam@1.5.1","gleam@latest","go@1","go@1.22","go@latest","golang@1","golang@latest","java@17","java@21","java@latest","nginx@1.22","nginx@latest","nodejs@18","nodejs@20","nodejs@22","nodejs@latest","php-apache@8.1","php-apache@8.3","php-apache@8.4","php-apache@latest","php-nginx@8.1","php-nginx@8.3","php-nginx@8.4","php-nginx@latest","python@3.11","python@3.12","python@latest","ruby@3.2","ruby@3.3","ruby@3.4","ruby@latest","runtime@latest","rust@1","rust@1.78","rust@1.80","rust@1.86","rust@latest","rust@nightly","rust@stable","static","static@1.0","static@latest","ubuntu@22.04","ubuntu@24.04","ubuntu@latest"],"description":"Sets the base technology for the runtime environment. If you don't specify the run.base attribute, Zerops keeps the current version for your runtime."},"start":{"type":"string","description":"Defines the start command for your application."},"documentRoot":{"type":"string","description":"Customizes the folder that will be used as the root of the publicly accessible web server content. This attribute is available only for runtimes with webservers."},"siteConfigPath":{"type":"string","description":"Sets the custom webserver configuration. This attribute is available only for runtimes with webservers."},"envReplace":{"properties":{"target":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]},"delimiter":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]}},"additionalProperties":false,"type":"object","required":["target","delimiter"]},"healthCheck":{"properties":{"httpGet":{"properties":{"scheme":{"type":"string","description":"The readiness check is triggered from inside of your runtime container so no https is required. If your application requires a https request, set scheme: https"},"host":{"type":"string","description":"The readiness check is triggered from inside of your runtime container so it always uses the localhost (127.0.0.1). If you need to add a host to the request header, specify it in the host attribute."},"port":{"type":"integer","description":"Defines the port of the HTTP GET request."},"path":{"type":"string","description":"Defines the URL path of the HTTP GET request."}},"additionalProperties":false,"type":"object","required":["port","path"],"description":"Configures the health check to request a local URL using a http GET method."},"exec":{"properties":{"command":{"type":"string","description":"Defines a local command to be run. The command has access to the same environment variables. A single string is required. If you need to run multiple commands create a shell script or, use a multiline format as in the example below."}},"additionalProperties":false,"type":"object","required":["command"],"description":"Configures the health check to run a local command."},"failureTimeout":{"type":"integer","description":"Time until container fails after consecutive health check failures (reset by success)."},"disconnectTimeout":{"type":"integer","description":"Time until container is disconnected and becomes publicly unavailable."},"recoveryTimeout":{"type":"integer","description":"Time until container is connected and becomes publicly available."},"execPeriod":{"type":"integer","description":"Time interval between health check attempts."}},"additionalProperties":false,"type":"object","description":"Defines a health check."},"routing":{"properties":{"root":{"type":"string"},"cors":{"type":"string","description":"Content of default Access-Control headers (Allow-Origin, Allow-Methods, Allow-Headers and Expose-Headers), e.g. \"'*' always\""},"redirects":{"items":{"properties":{"from":{"type":"string","description":"Relative or an absolute (defined by with http://) path to be matched against request location. May contain * at the end for regex."},"to":{"type":"string","description":"Relative or an absolute (defined by with http://) path to redirect user to."},"status":{"type":"integer","description":"Which HTTP status code to use for the redirect. If not set, and To and From are relative, an internal/masked redirect will be used."},"preservePath":{"type":"boolean","description":"Whether part of the path after From should be preserved. Used to forward contents of one directory to another in non-masked redirects."},"preserveQuery":{"type":"boolean","description":"Whether query parameters should be preserved. Used in non-masked redirects."}},"additionalProperties":false,"type":"object","required":["from","to"]},"type":"array"},"headers":{"items":{"properties":{"for":{"type":"string","description":"Relative path to be matched against request location. May contain * at the end for prefix-based match."},"values":{"additionalProperties":{"type":"string"},"type":"object","description":"Header name as Key and raw content as Value, e.g. \"Access-Control-Allow-Origin\": \"'*' always\""}},"additionalProperties":false,"type":"object","required":["for","values"]},"type":"array"}},"additionalProperties":false,"type":"object"},"ports":{"items":{"properties":{"protocol":{"type":"string","enum":["tcp","udp"],"description":"Defines the protocol. Allowed values are TCP or UDP. Default value is TCP."},"port":{"type":"integer","description":"Defines the port number. You can set any port number between 10 and 65435. Ports outside this interval are reserved for internal Zerops systems."},"description":{"type":"string"},"httpSupport":{"type":"boolean","description":"Set to true if a web server is running on the port. Zerops uses this information for the configuration of public access. True is available only in combination with the TCP protocol. Default value is false."}},"additionalProperties":false,"type":"object","required":["port"]},"type":"array","description":"Specifies one or more internal ports on which your application will listen."},"envVariables":{"additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]},"type":"object","description":"Defines the environment variables for the runtime environment."},"startCommands":{"items":{"properties":{"name":{"type":"string"},"command":{"type":"string"},"workingDir":{"type":"string"},"initCommands":{"items":{"type":"string"},"type":"array","description":"Defines one or more commands to be run each time a new runtime container is started or a container is restarted."}},"additionalProperties":false,"type":"object","required":["command"]},"type":"array","description":"Defines the start commands for the runtime environment."},"crontab":{"items":{"properties":{"timing":{"type":"string","description":"Defines when the cron job runs in standard cron format."},"command":{"type":"string","description":"Specifies the shell command to run at the scheduled time."},"workingDir":{"type":"string","description":"The directory where the command will be executed (default: /var/www)"},"allContainers":{"type":"boolean","description":"If set to true, the job runs on all containers; otherwise, it runs on a single container (default: false)"}},"additionalProperties":false,"type":"object","required":["timing","command","allContainers"]},"type":"array","description":"A list of cron jobs with their respective schedule (timing), the command to run (command), and additional options like allContainers and workingDir."}},"additionalProperties":false,"type":"object","description":"Runtime configuration."},"extends":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]}},"additionalProperties":false,"type":"object","required":["setup"]},"type":"array","description":"The top-level element is always zerops."}},"additionalProperties":false,"type":"object","required":["zerops"]}
</schema>

[User] Provide a JSON object that satisfies the schema "zerops-yml-json-schema". Here are the required top‑level fields: zerops. Return only the valid JSON object.

The first element setup contains the hostname of your service. A runtime service with the same hostname must exist in Zerops. Zerops supports the definition of multiple runtime services in a single zerops.yml. This is useful when you use a monorepo. Just add multiple setup elements in your zerops.yml.

Sets the operating system for the runtime environment.

Sets the base technology for the build environment. If you need to install more technologies to the build environment, set multiple values as a yaml array.

Customises the build environment by installing additional dependencies or tools to the base build environment.

Defines build commands. Zerops triggers each command in the defined order in a dedicated build container.

Selects which files or folders will be deployed after the build has successfully finished. To filter out specific files or folders, use .deployignore file.

Defines which files or folders will be cached for the next build.

Defines what files or folders will be copied from the build container to the prepare runtime container. The prepare runtime container is used to customize your runtime environment.

Defines the environment variables for the build environment.

Build pipeline configuration.

The readiness check is triggered from inside of your runtime container so no https is required. If your application requires a https request, set scheme: https

The readiness check is triggered from inside of your runtime container so it always uses the localhost (127.0.0.1). If you need to add a host to the request header, specify it in the host attribute.

Defines the port of the HTTP GET request.

Defines the URL path of the HTTP GET request.

Configures the readiness check to request a local URL using a http GET method.

Defines a local command to be run. The command has access to the same environment variables. A single string is required. If you need to run multiple commands create a shell script or, use a multiline format as in the example below.

Configures the readiness check to run a local command.

Time until container is marked as failed.

Time interval between readiness check attempts.

Defines a readiness check. Requires either httpGet object or exec object.

Deploy configuration.

Defines one or more commands to be run each time a new runtime container is started or a container is restarted.

Customises the runtime environment by installing additional dependencies or tools to the base runtime environment.

Sets the base technology for the runtime environment. If you don't specify the run.base attribute, Zerops keeps the current version for your runtime.

Defines the start command for your application.

Customizes the folder that will be used as the root of the publicly accessible web server content. This attribute is available only for runtimes with webservers.

Sets the custom webserver configuration. This attribute is available only for runtimes with webservers.

Configures the health check to request a local URL using a http GET method.

Configures the health check to run a local command.

Time until container fails after consecutive health check failures (reset by success).

Time until container is disconnected and becomes publicly unavailable.

Time until container is connected and becomes publicly available.

Time interval between health check attempts.

Defines a health check.

Content of default Access-Control headers (Allow-Origin, Allow-Methods, Allow-Headers and Expose-Headers), e.g. "'*' always"

Relative or an absolute (defined by with http://) path to be matched against request location. May contain * at the end for regex.

Relative or an absolute (defined by with http://) path to redirect user to.

Which HTTP status code to use for the redirect. If not set, and To and From are relative, an internal/masked redirect will be used.

Whether part of the path after From should be preserved. Used to forward contents of one directory to another in non-masked redirects.

Whether query parameters should be preserved. Used in non-masked redirects.

Relative path to be matched against request location. May contain * at the end for prefix-based match.

Header name as Key and raw content as Value, e.g. "Access-Control-Allow-Origin": "'*' always"

Defines the protocol. Allowed values are TCP or UDP. Default value is TCP.

Defines the port number. You can set any port number between 10 and 65435. Ports outside this interval are reserved for internal Zerops systems.

Set to true if a web server is running on the port. Zerops uses this information for the configuration of public access. True is available only in combination with the TCP protocol. Default value is false.

Specifies one or more internal ports on which your application will listen.

Defines the environment variables for the runtime environment.

Defines the start commands for the runtime environment.

Defines when the cron job runs in standard cron format.

Specifies the shell command to run at the scheduled time.

The directory where the command will be executed (default: /var/www)

If set to true, the job runs on all containers; otherwise, it runs on a single container (default: false)

A list of cron jobs with their respective schedule (timing), the command to run (command), and additional options like allContainers and workingDir.

Runtime configuration.

The top-level element is always zerops.

Provide a JSON object that satisfies the schema "zerops-yml-json-schema". Here are the required top‑level fields: zerops. 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#","title":"Project","description":"Schema of the build flow configuration file `zinoma.yml`.\n\nIn order to use \u017dinoma with your project, you need to create a file named `zinoma.yml`. We recommend putting this file in the root directory of your project.\n\nThis struct describes the schema expected for this file. It assumes prior knowledge of the Yaml format.\n\n__Example__\n\n`zinoma.yml`:\n\n```yaml targets: download_dependencies: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install\n\ntest: input: - download_dependencies.output - paths: [package.json, src, test] build: npm test\n\nlint: input: - download_dependencies.output - paths: [package.json, src, test] build: npm run lint\n\ncheck: dependencies: [test, lint]\n\nstart: input: - download_dependencies.output - paths: [package.json, src] service: exec npm run start\n\nbuild: dependencies: [check] input: - paths: - Dockerfile - package.json - package-lock.json - src output: - paths: [lambda.zip] build: | docker build -t build-my-project:latest . docker create -ti --name build-my-project build-my-project:latest bash docker cp build-my-project:/var/task/lambda.zip ./ docker rm -f build-my-project ```\n\nIn this example:\n\n- `zinoma check` will ensure the code complies to the test suites and the coding standards. - `zinoma start --watch` will run the application and restart it whenever the sources are updated. - `zinoma --clean build` will generate a clean artifact, ready to be deployed.\n\nA fully functional and more advanced example project is available in [fbecart/zinoma-node-example](https://github.com/fbecart/zinoma-node-example).","type":"object","properties":{"imports":{"description":"Import definitions from other \u017dinoma projects.\n\n`imports` should be an object, the keys being the project names and the values their respective paths.\n\nBefore importing a project, you should make sure this project has its name defined. You should use the same name as key in the `imports` object.\n\nOnce a project is imported, targets from that project can be referenced by specifying their fully qualified name: `imported_project_name::target_name`.\n\n__Example__\n\n`packages/api/zinoma.yml`:\n\n```yaml name: api\n\ntargets: test: build: cargo test ```\n\n`packages/webapp/zinoma.yml`:\n\n```yaml name: webapp\n\ntargets: test: build: cargo test ```\n\n`./zinoma.yml`:\n\n```yaml imports: api: packages/api webapp: packages/webapp\n\ntargets: test_all: dependencies: [api::test, webapp::test] ```\n\nIn this example, the target `test_all` depend from targets defined in different projects.","default":{},"type":"object","additionalProperties":{"type":"string"}},"name":{"description":"Name of the project.\n\nA project name must be a string. It should start with an alphanumeric character or `_` and contain only alphanumeric characters, `-`, or `_`.\n\nProject names should be unique. Two projects cannot have the same name.\n\n__Example__\n\n```yaml name: my_project ```","default":null,"type":["string","null"]},"targets":{"description":"Targets (aka tasks) of this project.\n\n[`Targets`] represent commands and scripts to execute in your build flow.\n\n[`Targets`]: struct.Target.html\n\nTargets run in parallel by default. To force targets to run sequentially, you can define [`dependencies`] on other targets.\n\n[`dependencies`]: enum.Target.html#variant.Build.field.dependencies\n\nEach target must have a unique name inside the project. The target name must be a string. It should start with an alphanumeric character or `_` and contain only alphanumeric characters, `-`, or `_`.\n\n__Example__\n\n```yaml targets: speak_cow: build: echo 'Moo' speak_dog: build: echo 'Woof!' ```\n\nIn this example:\n\n- `zinoma speak_cow` will print `Moo` - `zinoma speak_dog` will print `Woof!` - `zinoma speak_cow speak_dog` will print both `Moo` and `Woof!` (not necessarily in this order)","default":{},"type":"object","additionalProperties":{"$ref":"#/definitions/Target"}}},"additionalProperties":false,"definitions":{"Dependencies":{"description":"List of [`targets`] that must complete successfully before this target can be built.\n\n[`targets`]: enum.Target.html\n\nIt should be an array of strings.\n\nIf any of the dependencies fails to complete, this target will not be executed.\n\n__Example__\n\n```yaml targets: target1: dependencies: [] target2: dependencies: [target1] target3: dependencies: [target2] ```\n\nIn this example, `target1` must complete successfully before `target2` begins, while `target3` waits for `target2` to complete.\n\n`zinoma target2` will run sequentially `target1` and `target2`.\n\n`zinoma target3` will run sequentially `target1`, `target2` and `target3`.","type":"array","items":{"type":"string"}},"InputResource":{"anyOf":[{"description":"Output resources of another target.\n\nIt should be a string with the format `<project_name>::<target_name>.output`. If the other target is located in the same project, the project name can be skipped. The `input` would then have this format: `<target_name>.output`.\n\nWhen such an input is used:\n\n- all the output resources of the other target become input resources for this target; - the other target implicitly becomes a dependency to this target.\n\n__Example__\n\n```yaml targets: node_dependencies: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install\n\ncompile: input: - node_dependencies.output - paths: [package.json, tsconfig.json, src] output: - paths: [dist] build: tsc\n\nrun: input: - node_dependencies.output - paths: [package.json] - compile.output service: node dist/index.js ```","type":"string"},{"type":"object","required":["paths"],"properties":{"extensions":{"description":"Filter files resource by file extensions.\n\nIt should be an array of strings.\n\nIf `extensions` are specified, only files matching at least one of the extensions will be included in the resource.\n\n__Example__\n\n```yaml targets: fmt: input: - paths: [src, tests] extensions: [rs] build: exec cargo fmt --all -- --check","type":["array","null"],"items":{"type":"string"}},"paths":{"description":"Paths to files or directories.\n\nIt should be an array of strings.\n\nEach element of the array should be a path to a file or directory.\n\n__Example__\n\n```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```","type":"array","items":{"type":"string"}}},"additionalProperties":false},{"type":"object","required":["cmd_stdout"],"properties":{"cmd_stdout":{"description":"Shell script whose output identifies the state of a resource.\n\nIt should be a string.\n\n__Example__\n\n```yaml targets: build_docker_image: input: - paths: [Dockerfile, src] - cmd_stdout: 'docker image ls base:latest --format \"{{.ID}}\"' output: - cmd_stdout: 'docker image ls webapp:latest --format \"{{.ID}}\"' build: docker build -t webapp . ```","type":"string"}},"additionalProperties":false}]},"InputResources":{"description":"List of artifacts that this target depends on.\n\n`input` should be an array of [`resources`].\n\n[`resources`]: enum.InputResource.html\n\nSpecifying a target's `input` enables the incremental build for this target. This means that, at the time of executing the target, \u017dinoma will skip its build if its input resources (and [`output`] resources, if any) have not changed since its last successful completion.\n\n[`output`]: struct.OutputResources.html\n\n__Example__\n\n```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] build: npm install ```\n\nIn this example, running `zinoma npm_install` once will execute `npm install`. Subsequent runs of `zinoma npm_install` will return immediately \u2014 until the content of `package.json` or `package-lock.json` is modified.","type":"array","items":{"$ref":"#/definitions/InputResource"}},"OutputResource":{"anyOf":[{"type":"object","required":["paths"],"properties":{"extensions":{"description":"Filter files resource by file extensions.\n\nIt should be an array of strings.\n\nIf `extensions` are specified, only files matching at least one of the extensions will be included in the resource.\n\n__Example__\n\n```yaml targets: protoc: input: - paths: [protos] extensions: [proto] output: - paths: [protos] extensions: [go] build: | cd protos docker run -v `pwd`:/defs namely/protoc-all -d . -o . -l go","type":["array","null"],"items":{"type":"string"}},"paths":{"description":"Paths to files or directories.\n\nIt should be an array of strings. Each element of the array should be a path to a file or directory.\n\nIf the `--clean` flag is provided to `zinoma`, the files or directories specified in `paths` will be deleted before running the build flow.\n\n__Example__\n\n```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```\n\nIn this example, as the target specifies an `input`, `zinoma npm_install` is incremental. The script `npm install` will be skipped until `package.json`, `package-lock.json` or `node_modules` are modified.\n\nAdditionally:\n\n- the command `zinoma --clean` will delete `node_modules`; - the command `zinoma --clean npm_install` will delete `node_modules`, then run `npm install`.","type":"array","items":{"type":"string"}}},"additionalProperties":false},{"type":"object","required":["cmd_stdout"],"properties":{"cmd_stdout":{"description":"Shell script whose output identifies the state of a resource.\n\nIt should be a string.\n\n__Example__\n\n```yaml targets: build_docker_image: input: - paths: [Dockerfile, src] - cmd_stdout: 'docker image ls base:latest --format \"{{.ID}}\"' output: - cmd_stdout: 'docker image ls webapp:latest --format \"{{.ID}}\"' build: docker build -t webapp . ```","type":"string"}},"additionalProperties":false}]},"OutputResources":{"description":"List of artifacts produced by this target.\n\nIt should be an array of [`resources`].\n\n[`resources`]: enum.OutputResource.html\n\nThe incremental build takes in account the target `output`. Just like with [`input`], if any of the target output resources were altered since its previous successful execution, the target state will be invalidated and its build will be run again.\n\n[`input`]: struct.InputResources.html\n\n__Example__\n\n```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```\n\nIn this example, running `zinoma npm_install` will return immediately in case `package.json`, `package-lock.json` and `node_modules` were not modified since the last completion of the target.\n\nRunning `zinoma --clean npm_install` will start by deleting `node_modules`, then will run `npm install`.","type":"array","items":{"$ref":"#/definitions/OutputResource"}},"Target":{"description":"A target is a command or a set of commands to run as part of your build flow.\n\nTargets run in parallel by default. To force targets to run sequentially, you can define [`dependencies`] on other targets.\n\n[`dependencies`]: struct.Dependencies.html","anyOf":[{"description":"A build target represents a shell script to run as part of your build flow.\n\nThis build script is expected to eventually complete, as opposed to the run script of a [`service`] target.\n\n[`service`]: #variant.Service.field.service","type":"object","required":["build"],"properties":{"build":{"description":"The shell script to run in order to build this target.\n\nIt should be a string. This string can be multi-line, in case of scripts with multiple commands.\n\n__Example__\n\n```yaml targets: create_file_deep: build: | mkdir -p deep/dir touch deep/dir/file output: - paths: [deep/dir/file] ```\n\nIn this example, running `zinoma create_file_deep` will execute the commands `mkdir -p deep/dir` and `touch deep/dir/my_file` sequentially.","type":"string"},"dependencies":{"description":"Dependencies of the target.","default":[],"allOf":[{"$ref":"#/definitions/Dependencies"}]},"input":{"description":"Input resources of the target.","default":[],"allOf":[{"$ref":"#/definitions/InputResources"}]},"output":{"description":"Output resources of the target.","default":[],"allOf":[{"$ref":"#/definitions/OutputResources"}]}},"additionalProperties":false},{"description":"Service targets are useful to run scripts that do not complete.\n\nThey enable the execution of long-lasting commands, such as servers.","type":"object","required":["service"],"properties":{"dependencies":{"description":"Dependencies of the target.","default":[],"allOf":[{"$ref":"#/definitions/Dependencies"}]},"input":{"description":"Input resources of the target.","default":[],"allOf":[{"$ref":"#/definitions/InputResources"}]},"service":{"description":"Shell script starting a long-lasting service.\n\nIt should be a string.\n\nIf `zinoma` has no service target to run, it will automatically exit after all build targets ran to completion. On the contrary, if at least one service target is specified in the command line, `zinoma` will keep running even after all build targets completed, so that the services can remain alive.\n\nIn watch mode (when the `--watch` flag is passed to `zinoma`), services are restarted when the relevant paths are modified.\n\n__Example__\n\n```yaml targets: npm_server: input: - paths: [package.json, index.js] service: npm start ```\n\nIn this example, `zinoma npm_server --watch` will run `npm start`, and will restart this process every time `package.json` or `index.js` are updated.","type":"string"}},"additionalProperties":false},{"description":"Aggregates other targets.\n\n__Example__\n\n```yaml targets: fmt: build: cargo fmt -- --check lint: build: cargo clippy test: build: cargo test check: dependencies: [fmt, lint, test] ```\n\nIn this example, the target named `check` aggregates the 3 other targets. `zinoma check` is equivalent to running `zinoma fmt lint test`.","type":"object","required":["dependencies"],"properties":{"dependencies":{"description":"Dependencies of the target.","allOf":[{"$ref":"#/definitions/Dependencies"}]}},"additionalProperties":false}]}}}
</schema>

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

Project

Schema of the build flow configuration file `zinoma.yml`.

In order to use Žinoma with your project, you need to create a file named `zinoma.yml`. We recommend putting this file in the root directory of your project.

This struct describes the schema expected for this file. It assumes prior knowledge of the Yaml format.

__Example__

`zinoma.yml`:

```yaml targets: download_dependencies: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install

test: input: - download_dependencies.output - paths: [package.json, src, test] build: npm test

lint: input: - download_dependencies.output - paths: [package.json, src, test] build: npm run lint

check: dependencies: [test, lint]

start: input: - download_dependencies.output - paths: [package.json, src] service: exec npm run start

build: dependencies: [check] input: - paths: - Dockerfile - package.json - package-lock.json - src output: - paths: [lambda.zip] build: | docker build -t build-my-project:latest . docker create -ti --name build-my-project build-my-project:latest bash docker cp build-my-project:/var/task/lambda.zip ./ docker rm -f build-my-project ```

In this example:

- `zinoma check` will ensure the code complies to the test suites and the coding standards. - `zinoma start --watch` will run the application and restart it whenever the sources are updated. - `zinoma --clean build` will generate a clean artifact, ready to be deployed.

A fully functional and more advanced example project is available in [fbecart/zinoma-node-example](https://github.com/fbecart/zinoma-node-example).

Import definitions from other Žinoma projects.

`imports` should be an object, the keys being the project names and the values their respective paths.

Before importing a project, you should make sure this project has its name defined. You should use the same name as key in the `imports` object.

Once a project is imported, targets from that project can be referenced by specifying their fully qualified name: `imported_project_name::target_name`.

__Example__

`packages/api/zinoma.yml`:

```yaml name: api

targets: test: build: cargo test ```

`packages/webapp/zinoma.yml`:

```yaml name: webapp

targets: test: build: cargo test ```

`./zinoma.yml`:

```yaml imports: api: packages/api webapp: packages/webapp

targets: test_all: dependencies: [api::test, webapp::test] ```

In this example, the target `test_all` depend from targets defined in different projects.

Name of the project.

A project name must be a string. It should start with an alphanumeric character or `_` and contain only alphanumeric characters, `-`, or `_`.

Project names should be unique. Two projects cannot have the same name.

__Example__

```yaml name: my_project ```

Targets (aka tasks) of this project.

[`Targets`] represent commands and scripts to execute in your build flow.

[`Targets`]: struct.Target.html

Targets run in parallel by default. To force targets to run sequentially, you can define [`dependencies`] on other targets.

[`dependencies`]: enum.Target.html#variant.Build.field.dependencies

Each target must have a unique name inside the project. The target name must be a string. It should start with an alphanumeric character or `_` and contain only alphanumeric characters, `-`, or `_`.

__Example__

```yaml targets: speak_cow: build: echo 'Moo' speak_dog: build: echo 'Woof!' ```

In this example:

- `zinoma speak_cow` will print `Moo` - `zinoma speak_dog` will print `Woof!` - `zinoma speak_cow speak_dog` will print both `Moo` and `Woof!` (not necessarily in this order)

List of [`targets`] that must complete successfully before this target can be built.

[`targets`]: enum.Target.html

It should be an array of strings.

If any of the dependencies fails to complete, this target will not be executed.

__Example__

```yaml targets: target1: dependencies: [] target2: dependencies: [target1] target3: dependencies: [target2] ```

In this example, `target1` must complete successfully before `target2` begins, while `target3` waits for `target2` to complete.

`zinoma target2` will run sequentially `target1` and `target2`.

`zinoma target3` will run sequentially `target1`, `target2` and `target3`.

Output resources of another target.

It should be a string with the format `<project_name>::<target_name>.output`. If the other target is located in the same project, the project name can be skipped. The `input` would then have this format: `<target_name>.output`.

When such an input is used:

- all the output resources of the other target become input resources for this target; - the other target implicitly becomes a dependency to this target.

__Example__

```yaml targets: node_dependencies: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install

compile: input: - node_dependencies.output - paths: [package.json, tsconfig.json, src] output: - paths: [dist] build: tsc

run: input: - node_dependencies.output - paths: [package.json] - compile.output service: node dist/index.js ```

Filter files resource by file extensions.

It should be an array of strings.

If `extensions` are specified, only files matching at least one of the extensions will be included in the resource.

__Example__

```yaml targets: fmt: input: - paths: [src, tests] extensions: [rs] build: exec cargo fmt --all -- --check

Paths to files or directories.

It should be an array of strings.

Each element of the array should be a path to a file or directory.

__Example__

```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```

Shell script whose output identifies the state of a resource.

It should be a string.

__Example__

```yaml targets: build_docker_image: input: - paths: [Dockerfile, src] - cmd_stdout: 'docker image ls base:latest --format "{{.ID}}"' output: - cmd_stdout: 'docker image ls webapp:latest --format "{{.ID}}"' build: docker build -t webapp . ```

List of artifacts that this target depends on.

`input` should be an array of [`resources`].

[`resources`]: enum.InputResource.html

Specifying a target's `input` enables the incremental build for this target. This means that, at the time of executing the target, Žinoma will skip its build if its input resources (and [`output`] resources, if any) have not changed since its last successful completion.

[`output`]: struct.OutputResources.html

__Example__

```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] build: npm install ```

In this example, running `zinoma npm_install` once will execute `npm install`. Subsequent runs of `zinoma npm_install` will return immediately — until the content of `package.json` or `package-lock.json` is modified.

Filter files resource by file extensions.

It should be an array of strings.

If `extensions` are specified, only files matching at least one of the extensions will be included in the resource.

__Example__

```yaml targets: protoc: input: - paths: [protos] extensions: [proto] output: - paths: [protos] extensions: [go] build: | cd protos docker run -v `pwd`:/defs namely/protoc-all -d . -o . -l go

Paths to files or directories.

It should be an array of strings. Each element of the array should be a path to a file or directory.

If the `--clean` flag is provided to `zinoma`, the files or directories specified in `paths` will be deleted before running the build flow.

__Example__

```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```

In this example, as the target specifies an `input`, `zinoma npm_install` is incremental. The script `npm install` will be skipped until `package.json`, `package-lock.json` or `node_modules` are modified.

Additionally:

- the command `zinoma --clean` will delete `node_modules`; - the command `zinoma --clean npm_install` will delete `node_modules`, then run `npm install`.

List of artifacts produced by this target.

It should be an array of [`resources`].

[`resources`]: enum.OutputResource.html

The incremental build takes in account the target `output`. Just like with [`input`], if any of the target output resources were altered since its previous successful execution, the target state will be invalidated and its build will be run again.

[`input`]: struct.InputResources.html

__Example__

```yaml targets: npm_install: input: - paths: [package.json, package-lock.json] output: - paths: [node_modules] build: npm install ```

In this example, running `zinoma npm_install` will return immediately in case `package.json`, `package-lock.json` and `node_modules` were not modified since the last completion of the target.

Running `zinoma --clean npm_install` will start by deleting `node_modules`, then will run `npm install`.

A target is a command or a set of commands to run as part of your build flow.

Targets run in parallel by default. To force targets to run sequentially, you can define [`dependencies`] on other targets.

[`dependencies`]: struct.Dependencies.html

A build target represents a shell script to run as part of your build flow.

This build script is expected to eventually complete, as opposed to the run script of a [`service`] target.

[`service`]: #variant.Service.field.service

The shell script to run in order to build this target.

It should be a string. This string can be multi-line, in case of scripts with multiple commands.

__Example__

```yaml targets: create_file_deep: build: | mkdir -p deep/dir touch deep/dir/file output: - paths: [deep/dir/file] ```

In this example, running `zinoma create_file_deep` will execute the commands `mkdir -p deep/dir` and `touch deep/dir/my_file` sequentially.

Dependencies of the target.

Input resources of the target.

Output resources of the target.

Service targets are useful to run scripts that do not complete.

They enable the execution of long-lasting commands, such as servers.

Dependencies of the target.

Input resources of the target.

Shell script starting a long-lasting service.

It should be a string.

If `zinoma` has no service target to run, it will automatically exit after all build targets ran to completion. On the contrary, if at least one service target is specified in the command line, `zinoma` will keep running even after all build targets completed, so that the services can remain alive.

In watch mode (when the `--watch` flag is passed to `zinoma`), services are restarted when the relevant paths are modified.

__Example__

```yaml targets: npm_server: input: - paths: [package.json, index.js] service: npm start ```

In this example, `zinoma npm_server --watch` will run `npm start`, and will restart this process every time `package.json` or `index.js` are updated.

Aggregates other targets.

__Example__

```yaml targets: fmt: build: cargo fmt -- --check lint: build: cargo clippy test: build: cargo test check: dependencies: [fmt, lint, test] ```

In this example, the target named `check` aggregates the 3 other targets. `zinoma check` is equivalent to running `zinoma fmt lint test`.

Dependencies of the target.

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


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

JobEntry

Abstract

Allowed-Projects

Ansible-Version

Attempts

Branches

Description

Files

Failure-Url

Files

Final

Host-Vars

Irrelevant-Files

Name

Nodeset

Override-Checkout

Parent

Post-Run

Post-Timeout

Pre-Run

Provides

Required-Projects

Requires

Roles

Run

Secrets

Semaphore(s)

Success-Url

Tags

Timeout

Vars

Voting

Workspace Scheme

JobModel

Name

Soft

JobDependencyModel

Name

Pass-To-Parent

Secret

JobSecretModel

Name

Resources-First

JobSemaphoreModel

Fail Fast

Jobs

Queue

PipelineModel

ProjectEntry

Default-Branch

Description

Name

Queue

Templates

Vars

ProjectModel

ProjectTemplateEntry

Default-Branch

Description

Name

Queue

Vars

ProjectTemplateModel

Name

Override-Checkout

RequiredProjectModel

SecretEntry

Data

Name

SecretModel

Zuul

ZuulRoleModel

Zuul Config Schema

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