diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0c95e316d..1c9c6a2f7 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,6 +10,9 @@ Unreleased .. vendor-insert-here +- Update vendored schemas: circle-ci, dependabot, meltano, mergify, renovate, snapcraft + (2025-10-26) + 0.34.1 ------ diff --git a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json index 7fced709c..6175cd37d 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json @@ -6,11 +6,11 @@ "oneOf": [ { "type": "string", - "description": "Job may be a string reference to another job" + "markdownDescription": "A reference to a job defined elsewhere in the configuration, either in the `jobs` section or from an orb (e.g., `my-job` or `orb-name/job-name`)." }, { "type": "object", - "description": "Job definition object", + "markdownDescription": "https://circleci.com/docs/creating-orbs#creating-inline-orbs\n\nInline orbs can be handy during development of an orb or as a convenience for name-spacing jobs and commands in lengthy configurations, particularly if you later intend to share the orb with others.", "properties": { "type": { "enum": [ @@ -21,7 +21,7 @@ "approval", "no-op" ], - "description": "The job type. If not specified, defaults to build." + "markdownDescription": "The job type. If not specified, defaults to build." } }, "if": { @@ -35,14 +35,14 @@ } }, "then": { - "description": "Release job.", + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nRelease job.", "required": [ "plan_name" ], "properties": { "plan_name": { "type": "string", - "description": "Required plan name for release jobs." + "markdownDescription": "Required plan name for release jobs." } }, "additionalProperties": true @@ -62,14 +62,14 @@ } }, "then": { - "description": "A lock/unlock job", + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nA lock/unlock job", "required": [ "key" ], "properties": { "key": { "type": "string", - "description": "Required key for lock/unlock jobs." + "markdownDescription": "Required key for lock/unlock jobs." } }, "additionalProperties": true @@ -89,12 +89,12 @@ } }, "then": { - "description": "Approval/no-op jobs primarily act as workflow markers. Other keys like `steps:` are permitted but will be ignored in the final pipeline.", + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nApproval/no-op jobs primarily act as workflow markers. Other keys like `steps:` are permitted but will be ignored in the final pipeline.", "additionalProperties": true }, "else": { "if": { - "description": "Condition: The job must be of type 'build' or have no type specified.", + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nA build job. The job explicitly has type 'build' or defaults to build when no type specified.", "anyOf": [ { "not": { @@ -116,17 +116,17 @@ ] }, "then": { - "description": "Validation: The job must adhere to the structure of a build job.", + "markdownDescription": "Validation: The job must adhere to the structure of a build job.", "properties": { "description": { "type": "string" }, "type": { "const": "build", - "description": "The job type. If not specified, defaults to build." + "markdownDescription": "The job type. If not specified, defaults to build." }, "parallelism": { - "description": "A integer or a parameter evaluating to a integer", + "markdownDescription": "A integer or a parameter evaluating to a integer", "anyOf": [ { "oneOf": [ @@ -213,14 +213,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -228,7 +228,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -303,7 +303,8 @@ "minItems": 1 }, "working_directory": { - "type": "string" + "type": "string", + "markdownDescription": "In which directory to run the steps. (default: `~/project`. `project` is a literal string, not the name of the project.) You can also refer the directory with `$CIRCLE_WORKING_DIRECTORY` environment variable." }, "retention": { "type": "object", @@ -316,13 +317,13 @@ "additionalProperties": false }, "circleci_ip_ranges": { - "type": "boolean" + "type": "boolean", + "markdownDescription": "Enable running jobs with a set of well-defined IP address ranges." }, "machine": { - "description": "Machine must be a boolean or a map", + "markdownDescription": "Use the default machine executor image", "oneOf": [ { - "description": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", @@ -343,7 +344,7 @@ "type": "object", "properties": { "enabled": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", @@ -364,7 +365,7 @@ "type": "string" }, "docker_layer_caching": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", @@ -395,14 +396,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -410,7 +411,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -426,11 +427,11 @@ "oneOf": [ { "type": "string", - "description": "short executor invocation, name of executor" + "markdownDescription": "https://circleci.com/docs/reference/reusing-config/#executor\n\nThe name of the executor to use (defined via the top level executors map or from an orb)." }, { "type": "object", - "description": "executor invocation with arguments, i.e. parameters", + "markdownDescription": "Executor stanza to use for the job, with optional parameter overrides.", "minProperties": 1, "additionalProperties": true, "properties": { @@ -458,7 +459,7 @@ ] }, "parameters": { - "description": "Parameters given to a job.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -473,7 +474,8 @@ "executor", "integer", "env_var_name" - ] + ], + "markdownDescription": "The parameter type. See [Parameter Types](https://circleci.com/docs/reusing-config#parameter-syntax) for details:\n- `boolean`: A boolean parameter\n- `string`: A string parameter \n- `integer`: An integer parameter\n- `enum`: An enum parameter (list of allowed string values)\n- `executor`: An executor parameter (allows job to choose executor)\n- `steps`: A steps parameter (allows mixing predefined and user-defined steps)\n- `env_var_name`: An environment variable name parameter (must match POSIX_NAME regexp)" }, "default": { "oneOf": [ @@ -495,13 +497,16 @@ ] }, "description": { - "type": "string" + "type": "string", + "markdownDescription": "A description of the parameter" }, "enum": { "type": "array", "items": { "type": "string" - } + }, + "minItems": 1, + "markdownDescription": "List of allowed values for an `enum` type parameter" } }, "additionalProperties": false, @@ -518,7 +523,7 @@ "additionalProperties": false, "anyOf": [ { - "description": "A job must have one of `docker`, `machine`, `macos` or `executor` (which can provide docker/machine/macos information).", + "markdownDescription": "A job that uses an executor defined elsewhere in the configuration.", "type": "object", "required": [ "executor" @@ -564,7 +569,7 @@ "type": "object", "properties": { "jobs": { - "description": "Any string key is allowed as job name.", + "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", @@ -588,7 +593,7 @@ "type": "string" }, "parameters": { - "description": "Parameters given to a step.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -656,7 +661,7 @@ }, { "type": "string", - "description": "Command may be a string reference to another command" + "markdownDescription": "Command may be a string reference to another command" } ] } @@ -742,14 +747,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -757,7 +762,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -828,10 +833,10 @@ "type": "string" }, "machine": { - "description": "Machine must be a boolean or a map", + "markdownDescription": "Use the default machine executor image", "oneOf": [ { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", @@ -852,7 +857,7 @@ "type": "object", "properties": { "enabled": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", @@ -873,7 +878,7 @@ "type": "string" }, "docker_layer_caching": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", @@ -904,14 +909,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -919,7 +924,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -945,7 +950,7 @@ ] }, "parameters": { - "description": "Parameters given to a job.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -1003,7 +1008,7 @@ }, { "type": "string", - "description": "Executor may be a string reference to another executor" + "markdownDescription": "Executor may be a string reference to another executor" } ] } @@ -1018,14 +1023,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -1033,7 +1038,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -1048,7 +1053,7 @@ "logic": { "oneOf": [ { - "description": "A boolean or a pipeline parameter evaluating to a boolean", + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nA value or parameter reference to be used in a logical statement.", "anyOf": [ { "type": "string", @@ -1067,7 +1072,7 @@ }, { "type": "object", - "description": "This is the object that represents the logical/comparison operators", + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nA logical operator (and, or, not, equal, matches) to be used in dynamic configuration.", "minProperties": 1, "maxProperties": 1, "additionalProperties": false, @@ -1077,34 +1082,41 @@ "items": { "$ref": "#/definitions/logic" }, - "minItems": 1 + "minItems": 1, + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical and: true when all statements in the list are true" }, "or": { "type": "array", "items": { "$ref": "#/definitions/logic" }, - "minItems": 1 + "minItems": 1, + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical or: true when at least one statement in the list is true" }, "not": { - "$ref": "#/definitions/logic" + "$ref": "#/definitions/logic", + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical not: true when statement is false" }, "equal": { "type": "array", "items": { "$ref": "#/definitions/logic" }, - "minItems": 1 + "minItems": 1, + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nTrue when all elements in the list are equal" }, "matches": { "type": "object", "additionalProperties": false, + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nTrue when value matches the pattern", "properties": { "pattern": { - "type": "string" + "type": "string", + "markdownDescription": "Regular expression pattern to match against" }, "value": { - "type": "string" + "type": "string", + "markdownDescription": "Value to test against the pattern" } }, "required": [ @@ -1116,7 +1128,7 @@ }, { "type": "object", - "description": "This is the object operand", + "markdownDescription": "A custom logic object with user-defined properties for conditional evaluation.", "propertyNames": { "not": { "pattern": "^(and|or|not|equal|matches)$" @@ -1129,11 +1141,11 @@ "oneOf": [ { "type": "string", - "description": "Shorthand commands, like `checkout`" + "markdownDescription": "A reference to a command or built-in step (e.g., `checkout`, `my-command`, or `orb-name/command-name`)." }, { "type": "object", - "description": "long form commands like `run:`", + "markdownDescription": "long form commands like `run:` or `checkout:", "propertyNames": { "pattern": "^[a-z][a-z\\d\/_-]*$", "not": { @@ -1144,6 +1156,7 @@ "maxProperties": 1, "properties": { "run": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#run\n\nUsed for invoking all command-line programs, taking either a map of configuration values, or, when called in its short-form, a string that will be used as both the `command` and `name`. Run commands are executed using non-login shells by default, so you must explicitly source any dotfiles as part of the command.", "oneOf": [ { "type": "string" @@ -1152,12 +1165,297 @@ "type": "object", "properties": { "command": { - "type": "string" + "type": "string", + "markdownDescription": "Command to run via the shell" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: full `command`)" + }, + "shell": { + "type": "string", + "markdownDescription": "Shell to use for execution command" + }, + "environment": { + "$ref": "#/definitions/environment", + "markdownDescription": "Additional environmental variables, locally scoped to command" + }, + "background": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether or not this step should run in the background (default: false)" + }, + "working_directory": { + "type": "string", + "markdownDescription": "In which directory to run this step (default: `working_directory` of the job)" + }, + "no_output_timeout": { + "type": "string", + "pattern": "\\d+(\\.\\d+)?[mhs]", + "default": "10m", + "markdownDescription": "Elapsed time the command can run without output. The string is a decimal with unit suffix, such as \"20m\", \"1.25h\", \"5s\" (default: 10 minutes)" + }, + "when": { + "enum": ["always", "on_success", "on_fail"], + "markdownDescription": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)" + }, + "max_auto_reruns": { + "type": "integer", + "minimum": 1, + "maximum": 5, + "markdownDescription": "Maximum number of automatic reruns for this step" + }, + "auto_rerun_delay": { + "type": "string", + "pattern": "^(10|[1-9])m|([1-9][0-9]*)s$", + "markdownDescription": "Delay before automatic rerun of this step" } }, "required": [ "command" - ] + ], + "if": { + "properties": { + "auto_rerun_delay": true + }, + "required": [ + "auto_rerun_delay" + ] + }, + "then": { + "required": [ + "max_auto_reruns" + ] + } + } + ] + }, + "checkout": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#checkout\n\nSpecial step used to check out source code to the configured `path` (defaults to the `working_directory`). The reason this is a special step is because it is more of a helper function designed to make checking out code easy for you. If you require doing git over HTTPS you should not use this step as it configures git to checkout over ssh.", + "oneOf": [ + { + "type": "string", + "enum": ["checkout"] + }, + { + "type": "object", + "properties": { + "path": { + "type": "string", + "markdownDescription": "Checkout directory (default: job's `working_directory`)" + }, + "method": { + "type": "string", + "markdownDescription": "The checkout method to be used ('blobless' or 'full', default 'full')" + } + }, + "additionalProperties": false + } + ] + }, + "setup_remote_docker": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#setup_remote_docker\n\nCreates a remote Docker environment configured to execute Docker commands.", + "oneOf": [ + { + "type": "string", + "enum": ["setup_remote_docker"] + }, + { + "type": "object", + "properties": { + "docker_layer_caching": { + "type": "boolean", + "default": false, + "markdownDescription": "When `docker_layer_caching` is set to `true`, CircleCI will try to reuse Docker Images (layers) built during a previous job or workflow (Paid feature)" + }, + "version": { + "markdownDescription": "If your build requires a specific docker image, you can set it as an image attribute", + "anyOf": [ + { + "type": "string", + "enum": [ + "20.10.24", + "20.10.23", + "20.10.18", + "20.10.17", + "20.10.14", + "20.10.12", + "20.10.11", + "20.10.7", + "20.10.6", + "20.10.2", + "19.03.13" + ] + }, + { + "type": "string" + } + ] + } + }, + "additionalProperties": false + } + ] + }, + "save_cache": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#save_cache\n\nGenerates and stores a cache of a file or directory of files such as dependencies or source code in our object storage. Later jobs can restore this cache using the `restore_cache` step.", + "type": "object", + "required": ["paths", "key"], + "properties": { + "paths": { + "type": "array", + "items": { + "type": "string" + }, + "markdownDescription": "List of directories which should be added to the cache" + }, + "key": { + "type": "string", + "markdownDescription": "Unique identifier for this cache" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Saving Cache')" + }, + "when": { + "enum": ["always", "on_success", "on_fail"], + "markdownDescription": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)" + } + }, + "additionalProperties": false + }, + "restore_cache": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#restore_cache\n\nRestores a previously saved cache based on a `key`. Cache needs to have been saved first for this key using the `save_cache` step.", + "oneOf": [ + { + "type": "object", + "required": ["key"], + "properties": { + "key": { + "type": "string", + "markdownDescription": "Single cache key to restore" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": ["keys"], + "properties": { + "keys": { + "type": "array", + "items": { + "type": "string" + }, + "markdownDescription": "List of cache keys to lookup for a cache to restore. Only first existing key will be restored." + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" + } + }, + "additionalProperties": false + } + ] + }, + "store_artifacts": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#store_artifacts\n\nStep to store artifacts (for example logs, binaries, etc) to be available in the web app or through the API.", + "type": "object", + "required": ["path"], + "properties": { + "path": { + "type": "string", + "markdownDescription": "Directory in the primary container to save as job artifacts" + }, + "destination": { + "type": "string", + "markdownDescription": "Prefix added to the artifact paths in the artifacts API (default: the directory of the file specified in `path`)" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI" + } + }, + "additionalProperties": false + }, + "store_test_results": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#storetestresults\n\nSpecial step used to upload test results so they display in builds' Test Summary section and can be used for timing analysis. To also see test result as build artifacts, please use the `store_artifacts` step.", + "type": "object", + "required": ["path"], + "properties": { + "path": { + "type": "string", + "markdownDescription": "Path (absolute, or relative to your `working_directory`) to directory containing subdirectories of JUnit XML or Cucumber JSON test metadata files" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI" + } + }, + "additionalProperties": false + }, + "persist_to_workspace": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#persist_to_workspace\n\nSpecial step used to persist a temporary file to be used by another job in the workflow", + "type": "object", + "required": ["root", "paths"], + "properties": { + "root": { + "type": "string", + "markdownDescription": "Either an absolute path or a path relative to `working_directory`" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + }, + "markdownDescription": "Glob identifying file(s), or a non-glob path to a directory to add to the shared workspace. Interpreted as relative to the workspace root. Must not be the workspace root itself." + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI" + } + }, + "additionalProperties": false + }, + "attach_workspace": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#attach_workspace\n\nSpecial step used to attach the workflow's workspace to the current container. The full contents of the workspace are downloaded and copied into the directory the workspace is being attached at.", + "type": "object", + "required": ["at"], + "properties": { + "at": { + "type": "string", + "markdownDescription": "Directory to attach the workspace to" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI" + } + }, + "additionalProperties": false + }, + "add_ssh_keys": { + "markdownDescription": "https://circleci.com/docs/configuration-reference#add_ssh_keys\n\nSpecial step that adds SSH keys from a project's settings to a container. Also configures SSH to use these keys.", + "oneOf": [ + { + "type": "string", + "enum": ["add_ssh_keys"] + }, + { + "type": "object", + "properties": { + "fingerprints": { + "type": "array", + "items": { + "type": "string" + }, + "markdownDescription": "List of fingerprints corresponding to the keys to be added" + } + }, + "additionalProperties": false } ] } @@ -1171,20 +1469,22 @@ }, { "type": "object", - "description": "`when`/`unless` step", + "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nA conditional step (`when` or `unless`) that runs based on a logical condition.", "additionalProperties": false, "minProperties": 1, "maxProperties": 1, "properties": { "when": { "type": "object", + "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run on custom conditions (determined at config-compile time) that are checked before a workflow runs", "required": [ "condition", "steps" ], "properties": { "condition": { - "$ref": "#/definitions/logic" + "$ref": "#/definitions/logic", + "markdownDescription": "A logical condition that must evaluate to true for the steps to run" }, "steps": { "oneOf": [ @@ -1197,19 +1497,22 @@ { "$ref": "#/definitions/step" } - ] + ], + "markdownDescription": "A list of steps to be performed when the condition is true" } } }, "unless": { "type": "object", + "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run when custom conditions aren't met (determined at config-compile time) that are checked before a workflow runs", "required": [ "condition", "steps" ], "properties": { "condition": { - "$ref": "#/definitions/logic" + "$ref": "#/definitions/logic", + "markdownDescription": "A logical condition that must evaluate to false for the steps to run" }, "steps": { "oneOf": [ @@ -1222,7 +1525,8 @@ { "$ref": "#/definitions/step" } - ] + ], + "markdownDescription": "A list of steps to be performed when the condition is false" } } } @@ -1238,6 +1542,7 @@ "object", "null" ], + "markdownDescription": "Executors define the environment in which the steps of a job will be run, allowing you to reuse a single executor definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, @@ -1251,12 +1556,14 @@ }, "macos": { "type": "object", + "markdownDescription": "Options for the [macOS executor](https://circleci.com/docs/configuration-reference#macos)", "properties": { "xcode": { "type": [ "string", "number" - ] + ], + "markdownDescription": "The version of Xcode that is installed on the virtual machine, see the [Supported Xcode Versions section of the Testing iOS](https://circleci.com/docs/testing-ios#supported-xcode-versions) document for the complete list." }, "resource_class": { "type": "string" @@ -1271,19 +1578,51 @@ "additionalProperties": false }, "resource_class": { - "type": "string" + "oneOf": [ + { + "type": "string", + "default": "medium", + "enum": [ + "small", + "medium", + "medium+", + "large", + "xlarge", + "2xlarge", + "2xlarge+", + "arm.medium", + "arm.large", + "arm.xlarge", + "arm.2xlarge", + "gpu.nvidia.small", + "gpu.nvidia.medium", + "windows.gpu.nvidia.medium", + "macos.m1.medium.gen1", + "macos.m1.large.gen1" + ] + }, + { + "title": "Self-hosted runner", + "type": "string", + "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$" + } + ], + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#resourceclass\n\nResource class for the job. Can be either a predefined resource class (e.g., `medium`, `large`) or a self-hosted runner in the format `/`." }, "docker": { "type": "array", "minItems": 1, + "markdownDescription": "Options for the [docker executor](https://circleci.com/docs/configuration-reference#docker)", "items": { "type": "object", "properties": { "image": { - "type": "string" + "type": "string", + "markdownDescription": "The name of a custom docker image to use" }, "name": { - "type": "string" + "type": "string", + "markdownDescription": "The name the container is reachable by. By default, container services are accessible through `localhost`" }, "entrypoint": { "oneOf": [ @@ -1296,7 +1635,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "The command used as executable when launching the container" }, "command": { "oneOf": [ @@ -1309,22 +1649,24 @@ "type": "string" } } - ] + ], + "markdownDescription": "The command used as pid 1 (or args for entrypoint) when launching the container" }, "user": { - "type": "string" + "type": "string", + "markdownDescription": "Which user to run the command as" }, "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -1332,7 +1674,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -1374,7 +1716,8 @@ ], "additionalProperties": false } - ] + ], + "markdownDescription": "Authentication for AWS EC2 Container Registry (ECR). You can use the access/secret keys or OIDC." }, "auth": { "type": "object", @@ -1390,7 +1733,8 @@ "username", "password" ], - "additionalProperties": false + "additionalProperties": false, + "markdownDescription": "Authentication for registries using standard `docker login` credentials" } }, "required": [ @@ -1400,13 +1744,14 @@ } }, "working_directory": { - "type": "string" + "type": "string", + "markdownDescription": "In which directory to run the steps." }, "machine": { - "description": "Machine must be a boolean or a map", + "markdownDescription": "Use the default machine executor image", "oneOf": [ { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", @@ -1427,7 +1772,7 @@ "type": "object", "properties": { "enabled": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", @@ -1445,10 +1790,11 @@ ] }, "image": { - "type": "string" + "type": "string", + "markdownDescription": "The VM image to use. View [available images](https://circleci.com/docs/configuration-reference#available-machine-images). **Note:** This key is **not** supported on the installable CircleCI. For information about customizing machine executor images on CircleCI installed on your servers, see our [VM provisioner documentation](https://circleci.com/docs/server-admin/latest/operator/manage-virtual-machines-with-machine-provisioner/)." }, "docker_layer_caching": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", @@ -1479,14 +1825,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -1494,7 +1840,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -1517,10 +1863,11 @@ "type": "string" } } - ] + ], + "markdownDescription": "Shell to use for execution command in all steps. Can be overridden by shell in each step (default: See [Default Shell Options](https://circleci.com/docs/configuration-reference#default-shell-options)" }, "parameters": { - "description": "Parameters given to a job.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -1578,7 +1925,7 @@ }, { "type": "string", - "description": "Executor may be a string reference to another executor" + "markdownDescription": "Executor may be a string reference to another executor" } ] } @@ -1591,6 +1938,7 @@ "properties": { "branches": { "type": "object", + "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "only": { "oneOf": [ @@ -1603,7 +1951,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, "ignore": { "oneOf": [ @@ -1616,7 +1965,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } }, "additionalProperties": false @@ -1640,7 +1990,8 @@ "type": [ "number", "string" - ] + ], + "markdownDescription": "The Workflows `version` field is used to issue warnings for deprecation or breaking changes during v2 Beta. It is deprecated as of CircleCI v2.1" } }, "propertyNames": { @@ -1656,15 +2007,19 @@ "properties": { "schedule": { "type": "object", + "markdownDescription": "A workflow may have a schedule indicating it runs at a certain time, for example a nightly build that runs every day at 12am UTC:", "properties": { "cron": { - "type": "string" + "type": "string", + "markdownDescription": "See the [crontab man page](http://pubs.opengroup.org/onlinepubs/7908799/xcu/crontab.html)" }, "filters": { "type": "object", + "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "branches": { "type": "object", + "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "only": { "oneOf": [ @@ -1677,7 +2032,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, "ignore": { "oneOf": [ @@ -1690,7 +2046,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } }, "additionalProperties": false @@ -1702,18 +2059,22 @@ } }, "additionalProperties": false - } + }, + "markdownDescription": "Specifies which triggers will cause this workflow to be executed. Default behavior is to trigger the workflow when pushing to a branch." }, "max_auto_reruns": { "type": "integer", "minimum": 1, - "maximum": 5 + "maximum": 5, + "markdownDescription": "The maximum number of times a workflow will be automatically rerun if it fails" }, "when": { - "$ref": "#/definitions/logic" + "$ref": "#/definitions/logic", + "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run on custom conditions (determined at config-compile time) that are checked before a workflow runs" }, "unless": { - "$ref": "#/definitions/logic" + "$ref": "#/definitions/logic", + "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run when custom conditions aren't met (determined at config-compile time) that are checked before a workflow runs" }, "jobs": { "type": "array", @@ -1732,6 +2093,7 @@ "properties": { "requires": { "type": "array", + "markdownDescription": "Jobs are run in parallel by default, so you must explicitly require any dependencies by their job name.", "items": { "oneOf": [ { @@ -1772,75 +2134,87 @@ } }, "filters": { - "type": "object", - "description": "This is similar to to other `filters` in config, but has an additional key, `tags`", - "properties": { - "branches": { + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#jobfilters \n\n A map or string to define filtering rules for job execution. Branch and tag filters require a map. Expression-based filters require a string.", + "oneOf": [ + { "type": "object", "properties": { - "only": { - "oneOf": [ - { - "type": "string" + "branches": { + "type": "object", + "markdownDescription": "A map defining rules for execution on specific branches", + "properties": { + "only": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, - { - "type": "array", - "items": { - "type": "string" - } + "ignore": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } - ] - }, - "ignore": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } - }, - "additionalProperties": false - }, - "tags": { - "type": "object", - "properties": { - "only": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] + }, + "additionalProperties": false }, - "ignore": { - "oneOf": [ - { - "type": "string" + "tags": { + "type": "object", + "markdownDescription": "A map defining rules for execution on specific tags", + "properties": { + "only": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "markdownDescription": "Either a single tag specifier, or a list of tag specifiers" }, - { - "type": "array", - "items": { - "type": "string" - } + "ignore": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "markdownDescription": "Either a single tag specifier, or a list of tag specifiers" } - ] + }, + "additionalProperties": false } - }, - "additionalProperties": false + } + }, + { + "type": "string" } - }, - "additionalProperties": false + ] }, "context": { "oneOf": [ @@ -1853,7 +2227,8 @@ "type": "string" } } - ] + ], + "markdownDescription": "Either a single context name, or a list of contexts. The default name is `org-global`" }, "type": { "type": "string" @@ -1883,18 +2258,22 @@ ], "properties": { "parameters": { - "type": "object" + "type": "object", + "markdownDescription": "A map of parameter names to every value the job should be called with" }, "exclude": { "type": "array", "items": { "type": "object" - } + }, + "markdownDescription": "A list of argument maps that should be excluded from the matrix" }, "alias": { - "type": "string" + "type": "string", + "markdownDescription": "An alias for the matrix, usable from another job's requires stanza. Defaults to the name of the job being executed" } - } + }, + "markdownDescription": "https://circleci.com/docs/configuration-reference#matrix-requires-version-21\n\nThe matrix stanza allows you to run a parameterized job multiple times with different arguments." }, "serial-group": { "type": "string", @@ -1914,7 +2293,7 @@ "jobs" ], "not": { - "description": "cannot use both 'when' and 'unless'", + "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements \n\nLogical not: true when statement is false", "allOf": [ { "required": [ @@ -1928,10 +2307,11 @@ } ] } - } + }, + "markdownDescription": "Used for orchestrating all jobs. Each workflow consists of the workflow name as a key and a map as a value" }, "jobs": { - "description": "Any string key is allowed as job name.", + "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", @@ -1946,452 +2326,35 @@ "object", "null" ], + "markdownDescription": "https://circleci.com/docs/configuration-reference#orbs-requires-version-21\n\nOrbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.", "additionalProperties": { + "markdownDescription": "An orb reference can be specified in multiple ways:\n\n**String with semantic version:**\n- `namespace/orb-name@1.2.3` - specific version\n- `namespace/orb-name@1.2` - latest patch version of 1.2.x\n- `namespace/orb-name@1` - latest minor and patch of 1.x.x\n- `namespace/orb-name@volatile` - most recent release\n- `namespace/orb-name@dev:branch-name` - development version\n\n**String with parameter substitution:**\n- `namespace/orb-name@<>`\n- `namespace/orb-name@<>`\n\n**Inline orb object:** Define jobs, commands, and executors directly in this configuration.\n\nSee [Orb Concepts](https://circleci.com/docs/orbs/author/orb-concepts/#semantic-versioning) and [Creating Inline Orbs](https://circleci.com/docs/reference/reusing-config/#writing-inline-orbs) for more details.", "oneOf": [ { - "type": "string" + "type": "string", + "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@(dev:[\\.a-z0-9_-]+|\\d+|\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+|volatile)$" + }, + { + "type": "string", + "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@ *<<.+>> *$" }, { "type": "object", "properties": { "jobs": { - "description": "Any string key is allowed as job name.", + "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" }, "additionalProperties": { - "oneOf": [ - { - "title": "CircleCI Orb: Jobs", - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "parallelism": { - "description": "A integer or a parameter evaluating to a integer", - "anyOf": [ - { - "oneOf": [ - { - "type": "string", - "pattern": " *<< *parameters.([^ ]+) *>> *" - }, - { - "type": "string", - "pattern": " *<< *pipeline.parameters.([^ ]+) *>> *" - } - ] - }, - { - "type": "integer" - } - ] - }, - "macos": { - "type": "object", - "properties": { - "xcode": { - "type": [ - "string", - "number" - ] - }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" - } - }, - "required": [ - "xcode" - ], - "additionalProperties": false - }, - "resource_class": { - "type": "string" - }, - "docker": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "name": { - "type": "string" - }, - "entrypoint": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "command": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "user": { - "type": "string" - }, - "environment": { - "oneOf": [ - { - "description": "Allow null to account for empty `environment:` declarations.", - "type": [ - "string", - "null" - ] - }, - { - "description": "An array of strings in the form KEY=VALUE", - "type": "array", - "items": { - "$ref": "#/definitions/environment" - } - }, - { - "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", - "additionalProperties": { - "type": [ - "string", - "boolean", - "number", - "null" - ] - } - } - ] - }, - "aws_auth": { - "oneOf": [ - { - "type": "object", - "properties": { - "aws_access_key_id": { - "type": "string" - }, - "aws_secret_access_key": { - "type": "string" - } - }, - "required": [ - "aws_access_key_id", - "aws_secret_access_key" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "oidc_role_arn": { - "type": "string" - } - }, - "required": [ - "oidc_role_arn" - ], - "additionalProperties": false - } - ] - }, - "auth": { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - }, - "required": [ - "username", - "password" - ], - "additionalProperties": false - } - }, - "required": [ - "image" - ], - "additionalProperties": false - } - }, - "steps": { - "type": "array", - "items": { - "$ref": "#/definitions/step" - }, - "minItems": 1 - }, - "working_directory": { - "type": "string" - }, - "circleci_ip_ranges": { - "type": "boolean" - }, - "machine": { - "description": "Machine must be a boolean or a map", - "oneOf": [ - { - "description": "A boolean or a template parameter evaluating to a boolean", - "anyOf": [ - { - "type": "string", - "pattern": " *<< *parameters.([^ ]+) *>> *" - }, - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - { - "type": "object", - "properties": { - "enabled": { - "description": "A boolean or a template parameter evaluating to a boolean", - "anyOf": [ - { - "type": "string", - "pattern": " *<< *parameters.([^ ]+) *>> *" - }, - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "image": { - "type": "string" - }, - "docker_layer_caching": { - "description": "A boolean or a template parameter evaluating to a boolean", - "anyOf": [ - { - "type": "string", - "pattern": " *<< *parameters.([^ ]+) *>> *" - }, - { - "type": "boolean" - }, - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "environment": { - "oneOf": [ - { - "description": "Allow null to account for empty `environment:` declarations.", - "type": [ - "string", - "null" - ] - }, - { - "description": "An array of strings in the form KEY=VALUE", - "type": "array", - "items": { - "$ref": "#/definitions/environment" - } - }, - { - "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", - "additionalProperties": { - "type": [ - "string", - "boolean", - "number", - "null" - ] - } - } - ] - }, - "executor": { - "oneOf": [ - { - "type": "string", - "description": "short executor invocation, name of executor" - }, - { - "type": "object", - "description": "executor invocation with arguments, i.e. parameters", - "minProperties": 1, - "additionalProperties": true, - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - } - ] - }, - "shell": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "parameters": { - "description": "Parameters given to a job.", - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "boolean", - "string", - "steps", - "enum", - "executor", - "integer", - "env_var_name" - ] - }, - "default": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "integer" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - } - ] - }, - "description": { - "type": "string" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "required": [ - "type" - ] - }, - "minProperties": 1 - } - }, - "required": [ - "steps" - ], - "additionalProperties": false, - "anyOf": [ - { - "description": "A job must have one of `docker`, `machine`, `macos` or `executor` (which can provide docker/machine/macos information).", - "type": "object", - "required": [ - "executor" - ] - }, - { - "oneOf": [ - { - "type": "object", - "required": [ - "machine" - ] - }, - { - "type": "object", - "required": [ - "docker" - ] - }, - { - "type": "object", - "required": [ - "macos" - ] - } - ] - } - ] - }, - { - "type": "string", - "description": "Job may be a string reference to another job" - } - ] + "$ref": "#/definitions/jobDefinition" } }, "commands": { "type": "object", + "markdownDescription": "https://circleci.com/docs/configuration-reference#commands-requires-version-21\n\nA command definition defines a sequence of steps as a map to be executed in a job, enabling you to reuse a single command definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, @@ -2401,10 +2364,11 @@ "type": "object", "properties": { "description": { - "type": "string" + "type": "string", + "markdownDescription": "A string that describes the purpose of the command." }, "parameters": { - "description": "Parameters given to a step.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -2462,7 +2426,8 @@ "items": { "$ref": "#/definitions/step" }, - "minItems": 1 + "minItems": 1, + "markdownDescription": "A sequence of steps run inside the calling job of the command." } }, "required": [ @@ -2472,13 +2437,14 @@ }, { "type": "string", - "description": "Command may be a string reference to another command" + "markdownDescription": "Command may be a string reference to another command" } ] } }, "executors": { "type": "object", + "markdownDescription": "Executors define the environment in which the steps of a job will be run, allowing you to reuse a single executor definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, @@ -2558,14 +2524,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -2573,7 +2539,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -2644,10 +2610,10 @@ "type": "string" }, "machine": { - "description": "Machine must be a boolean or a map", + "markdownDescription": "Use the default machine executor image", "oneOf": [ { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", @@ -2668,7 +2634,7 @@ "type": "object", "properties": { "enabled": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", @@ -2689,7 +2655,7 @@ "type": "string" }, "docker_layer_caching": { - "description": "A boolean or a template parameter evaluating to a boolean", + "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", @@ -2720,14 +2686,14 @@ "environment": { "oneOf": [ { - "description": "Allow null to account for empty `environment:` declarations.", + "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { - "description": "An array of strings in the form KEY=VALUE", + "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" @@ -2735,7 +2701,7 @@ }, { "type": "object", - "description": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", + "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", @@ -2761,7 +2727,7 @@ ] }, "parameters": { - "description": "Parameters given to a job.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -2819,7 +2785,7 @@ }, { "type": "string", - "description": "Executor may be a string reference to another executor" + "markdownDescription": "Executor may be a string reference to another executor" } ] } @@ -2837,6 +2803,7 @@ "object", "null" ], + "markdownDescription": "https://circleci.com/docs/configuration-reference#commands-requires-version-21\n\nA command definition defines a sequence of steps as a map to be executed in a job, enabling you to reuse a single command definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, @@ -2849,7 +2816,7 @@ "type": "string" }, "parameters": { - "description": "Parameters given to a step.", + "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", @@ -2907,7 +2874,8 @@ "items": { "$ref": "#/definitions/step" }, - "minItems": 1 + "minItems": 1, + "markdownDescription": "A sequence of steps run inside the calling job of the command." } }, "required": [ @@ -2917,7 +2885,7 @@ }, { "type": "string", - "description": "Command may be a string reference to another command" + "markdownDescription": "https://circleci.com/docs/creating-orbs#creating-inline-orbs\n\nInline orbs can be handy during development of an orb or as a convenience for name-spacing jobs and commands in lengthy configurations, particularly if you later intend to share the orb with others." } ] } @@ -2961,7 +2929,8 @@ "enum": [ "2.1", 2.1 - ] + ], + "markdownDescription": "The version field is intended to be used in order to issue warnings for deprecation or breaking changes." }, "parameters": { "type": [ @@ -3014,4 +2983,4 @@ "required": [ "version" ] -} \ No newline at end of file +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/dependabot.json b/src/check_jsonschema/builtin_schemas/vendor/dependabot.json index 17cd87e50..d7f23e4df 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/dependabot.json +++ b/src/check_jsonschema/builtin_schemas/vendor/dependabot.json @@ -1077,6 +1077,7 @@ "git", "hex-organization", "hex-repository", + "helm-registry", "maven-repository", "npm-registry", "nuget-feed", diff --git a/src/check_jsonschema/builtin_schemas/vendor/meltano.json b/src/check_jsonschema/builtin_schemas/vendor/meltano.json index 71fa985cb..e5a21cc5e 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/meltano.json +++ b/src/check_jsonschema/builtin_schemas/vendor/meltano.json @@ -7,7 +7,9 @@ "additionalProperties": false, "properties": { "version": { - "const": 1 + "const": 1, + "deprecated": true, + "description": "DEPRECATED: The meltano.yml version field is deprecated and will be removed in a future release. Please remove it from your meltano.yml file. To specify Meltano version requirements, use 'requires_meltano' instead." }, "annotations": { "$ref": "#/$defs/annotations" @@ -25,6 +27,14 @@ "type": "string", "description": "A globally unique project identifier. Defaults to a Meltano-generated unique GUID for each project." }, + "requires_meltano": { + "type": "string", + "description": "A version speficier for the Meltano version required by this project. If the version of Meltano being used does not satisfy this requirement, Meltano will exit with an error.", + "examples": [ + ">=3,<4", + ">=3.6,<3.7" + ] + }, "database_uri": { "type": "string", "description": "A database URI for the project system database. Defaults to a SQLite file stored at .meltano/meltano.db", @@ -536,6 +546,14 @@ "requires": { "$ref": "#/$defs/requires" }, + "requires_meltano": { + "type": "string", + "description": "A version specifier for the Meltano version required by this plugin. If the version of Meltano being used does not satisfy this requirement, Meltano will exit with an error.", + "examples": [ + ">=3,<4", + ">=3.6,<3.7" + ] + }, "env": { "$ref": "#/$defs/env" } @@ -763,6 +781,22 @@ }, { "$ref": "#/$defs/plugins/mapper_specific" + }, + { + "type": "object", + "properties": { + "capabilities": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "about", + "stream-maps", + "structured-logging" + ] + } + } + } } ], "unevaluatedProperties": false diff --git a/src/check_jsonschema/builtin_schemas/vendor/mergify.json b/src/check_jsonschema/builtin_schemas/vendor/mergify.json index fd624c076..a6908c7bf 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/mergify.json +++ b/src/check_jsonschema/builtin_schemas/vendor/mergify.json @@ -873,6 +873,7 @@ "type": "object" }, "DisabledDict": { + "additionalProperties": false, "properties": { "reason": { "title": "Reason", @@ -995,6 +996,28 @@ "title": "EditActionModel", "type": "object" }, + "FileFilters": { + "properties": { + "include": { + "description": "Glob patterns of files to include for this scope. Empty means 'include everything' before exclusions. Examples: ('src/**/*.py', 'Makefile')", + "items": { + "type": "string" + }, + "title": "Include", + "type": "array" + }, + "exclude": { + "description": "Glob patterns of files to exclude from this scope. Evaluated after `include` and takes precedence. Examples: ('**/tests/**', '*.md')", + "items": { + "type": "string" + }, + "title": "Exclude", + "type": "array" + } + }, + "title": "FileFilters", + "type": "object" + }, "GhaActionModel": { "additionalProperties": false, "properties": { @@ -1284,7 +1307,7 @@ "title": "MergeProtectionRulesModel", "type": "array" }, - "MergeProtectionsModel": { + "MergeProtections": { "additionalProperties": false, "properties": { "reporting_method": { @@ -1304,10 +1327,10 @@ "type": "boolean" } }, - "title": "MergeProtectionsModel", + "title": "MergeProtections", "type": "object" }, - "MergeQueueModel": { + "MergeQueue": { "additionalProperties": false, "properties": { "max_parallel_checks": { @@ -1340,9 +1363,32 @@ "default": "queued", "description": "The label to add on pull requests when they are added to the merge queue.", "title": "Queued Label" + }, + "dequeued_label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "dequeued", + "description": "The label to add on pull requests when they are removed from the merge queue.", + "title": "Dequeued Label" + }, + "mode": { + "default": "serial", + "description": "Defines how the merge queue schedules pull requests.\n- `serial`: PRs are tested cumulatively.\n- `parallel`: PRs whose scopes don't overlap are tested in parallel.\n", + "enum": [ + "serial", + "parallel" + ], + "title": "Mode", + "type": "string" } }, - "title": "MergeQueueModel", + "title": "MergeQueue", "type": "object" }, "NegationCondition": { @@ -2347,7 +2393,7 @@ }, "merge_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", - "description": "The list of conditions to match to get the queued pull request merged. This automatically includes the `queue_conditions`. In case of speculative merge pull request, the merge conditions starting by check- are evaluated against the temporary pull request instead of the original one." + "description": "The list of conditions to match to get the queued pull request merged. In case of draft pull request, the merge conditions for checks are evaluated against the temporary pull request instead of the original one." }, "branch_protection_injection_mode": { "default": "queue", @@ -2465,7 +2511,7 @@ } ], "default": null, - "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration. `fast-forward` is not supported on queues with `max_parallel_checks > 1`, `batch_size > 1`, or with `allow_inplace_checks` set to `false`.", + "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration. `fast-forward` is not supported on draft PR (`max_parallel_checks > 1`, or `batch_size > 1`, or two-step CI).", "title": "Merge Method" }, "autosquash": { @@ -2565,7 +2611,7 @@ }, "merge_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", - "description": "The list of conditions to match to get the queued pull request merged. This automatically includes the `queue_conditions`. In case of speculative merge pull request, the merge conditions starting by check- are evaluated against the temporary pull request instead of the original one." + "description": "The list of conditions to match to get the queued pull request merged. In case of draft pull request, the merge conditions for checks are evaluated against the temporary pull request instead of the original one." }, "branch_protection_injection_mode": { "default": "queue", @@ -2683,7 +2729,7 @@ } ], "default": null, - "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration. `fast-forward` is not supported on queues with `max_parallel_checks > 1`, `batch_size > 1`, or with `allow_inplace_checks` set to `false`.", + "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration. `fast-forward` is not supported on draft PR (`max_parallel_checks > 1`, or `batch_size > 1`, or two-step CI).", "title": "Merge Method" }, "autosquash": { @@ -2849,7 +2895,6 @@ }, { "additionalProperties": { - "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" @@ -2871,7 +2916,6 @@ }, { "additionalProperties": { - "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" @@ -2893,7 +2937,6 @@ }, { "additionalProperties": { - "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" @@ -2963,6 +3006,78 @@ "title": "RuleConditionModel", "type": "string" }, + "Scopes": { + "additionalProperties": false, + "properties": { + "source": { + "anyOf": [ + { + "$ref": "#/$defs/SourceFiles" + }, + { + "$ref": "#/$defs/SourceManual" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Where scopes come from. `files` uses file-pattern rules (`gha-mergify-ci-scopes` must have been setup on your pull request); `manual` uses scopes sent via API or `mergify scopes-send`; `None` disables scoping.", + "title": "Source" + }, + "merge_queue_scope": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "merge-queue", + "description": "Optional scope name automatically applied to merge queue PRs. Set to `None` to disable.", + "title": "Merge Queue Scope" + } + }, + "title": "Scopes", + "type": "object" + }, + "SourceFiles": { + "properties": { + "files": { + "description": "Mapping of scope name to its file filters. A file belongs to a scope if it matches the scope's `include` patterns and not its `exclude` patterns.", + "patternProperties": { + "^[A-Za-z0-9_-]+$": { + "$ref": "#/$defs/FileFilters" + } + }, + "propertyNames": { + "minLength": 1 + }, + "title": "Files", + "type": "object" + } + }, + "required": [ + "files" + ], + "title": "SourceFiles", + "type": "object" + }, + "SourceManual": { + "properties": { + "manual": { + "description": "Scopes are manually sent via API or `mergify scopes-send`", + "title": "Manual", + "type": "null" + } + }, + "required": [ + "manual" + ], + "title": "SourceManual", + "type": "object" + }, "SquashActionModel": { "additionalProperties": false, "properties": { @@ -3053,6 +3168,9 @@ "defaults": { "$ref": "#/$defs/DefaultsRulesModel" }, + "scopes": { + "$ref": "#/$defs/Scopes" + }, "commands_restrictions": { "$ref": "#/$defs/CommandsRestrictionsRulesModel" }, @@ -3072,10 +3190,10 @@ "$ref": "#/$defs/PriorityRulesModel" }, "merge_queue": { - "$ref": "#/$defs/MergeQueueModel" + "$ref": "#/$defs/MergeQueue" }, "merge_protections_settings": { - "$ref": "#/$defs/MergeProtectionsModel" + "$ref": "#/$defs/MergeProtections" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", diff --git a/src/check_jsonschema/builtin_schemas/vendor/renovate.json b/src/check_jsonschema/builtin_schemas/vendor/renovate.json index 62aed6047..f9cea36dc 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/renovate.json +++ b/src/check_jsonschema/builtin_schemas/vendor/renovate.json @@ -1,6 +1,8 @@ { - "title": "JSON schema for Renovate config files (https://renovatebot.com/)", - "$schema": "http://json-schema.org/draft-04/schema#", + "title": "JSON schema for Renovate 0.0.0-semantic-release config files (https://renovatebot.com/)", + "$schema": "http://json-schema.org/draft-07/schema#", + "x-renovate-version": "0.0.0-semantic-release", + "allowComments": true, "type": "object", "properties": { "abandonmentThreshold": { @@ -31,22 +33,22 @@ } }, "allowCustomCrateRegistries": { - "description": "Set this to `true` to allow custom crate registries.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet this to `true` to allow custom crate registries.", "type": "boolean", "default": false }, "allowPlugins": { - "description": "Set this to `true` if repositories are allowed to run install plugins.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet this to `true` if repositories are allowed to run install plugins.", "type": "boolean", "default": false }, "allowScripts": { - "description": "Set this to `true` if repositories are allowed to run install scripts.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet this to `true` if repositories are allowed to run install scripts.", "type": "boolean", "default": false }, "allowedCommands": { - "description": "A list of regular expressions that decide which commands are allowed in post-upgrade tasks.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nA list of regular expressions that decide which commands are allowed in post-upgrade tasks.", "type": "array", "items": { "type": "string" @@ -54,7 +56,7 @@ "default": [] }, "allowedEnv": { - "description": "List of allowed patterns for environment variable names in repository env config.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nList of allowed patterns for environment variable names in repository env config.", "type": "array", "items": { "type": "string" @@ -62,7 +64,7 @@ "default": [] }, "allowedHeaders": { - "description": "List of allowed patterns for header names in repository hostRules config.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nList of allowed patterns for header names in repository hostRules config.", "type": "array", "items": { "type": "string" @@ -317,12 +319,12 @@ "default": true }, "autodiscover": { - "description": "Autodiscover all repositories.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nAutodiscover all repositories.", "type": "boolean", "default": false }, "autodiscoverFilter": { - "description": "Filter the list of autodiscovered repositories.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nFilter the list of autodiscovered repositories.", "oneOf": [ { "type": "array", @@ -341,7 +343,7 @@ ] }, "autodiscoverNamespaces": { - "description": "Filter the list of autodiscovered repositories by namespaces.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nFilter the list of autodiscovered repositories by namespaces.", "type": [ "array", "null" @@ -352,7 +354,7 @@ "default": null }, "autodiscoverProjects": { - "description": "Filter the list of autodiscovered repositories by project names.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nFilter the list of autodiscovered repositories by project names.", "type": [ "array", "null" @@ -363,7 +365,7 @@ "default": null }, "autodiscoverRepoOrder": { - "description": "The order method for autodiscover server side repository search.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe order method for autodiscover server side repository search.", "type": [ "string", "null" @@ -375,7 +377,7 @@ "default": null }, "autodiscoverRepoSort": { - "description": "The sort method for autodiscover server side repository search.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe sort method for autodiscover server side repository search.", "type": [ "string", "null" @@ -390,7 +392,7 @@ "default": null }, "autodiscoverTopics": { - "description": "Filter the list of autodiscovered repositories by topics.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nFilter the list of autodiscovered repositories by topics.", "type": [ "array", "null" @@ -518,7 +520,7 @@ } }, "baseDir": { - "description": "The base directory for Renovate to store local files, including repository files and cache. If left empty, Renovate will create its own temporary directory to use.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe base directory for Renovate to store local files, including repository files and cache. If left empty, Renovate will create its own temporary directory to use.", "type": "string" }, "batect": { @@ -802,7 +804,7 @@ "default": true }, "bbUseDevelopmentBranch": { - "description": "Use the repository's [development branch](https://support.atlassian.com/bitbucket-cloud/docs/branch-a-repository/#The-branching-model) as the repository's default branch.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nUse the repository's [development branch](https://support.atlassian.com/bitbucket-cloud/docs/branch-a-repository/#The-branching-model) as the repository's default branch.", "type": "boolean", "default": false }, @@ -860,7 +862,7 @@ } }, "binarySource": { - "description": "Controls how third-party tools like npm or Gradle are called: directly, via Docker sidecar containers, or via dynamic install.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nControls how third-party tools like npm or Gradle are called: directly, via Docker sidecar containers, or via dynamic install.", "type": "string", "enum": [ "global", @@ -1352,21 +1354,21 @@ } }, "cacheDir": { - "description": "The directory where Renovate stores its cache. If left empty, Renovate creates a subdirectory within the `baseDir`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe directory where Renovate stores its cache. If left empty, Renovate creates a subdirectory within the `baseDir`.", "type": "string" }, "cacheHardTtlMinutes": { - "description": "Maximum duration in minutes to keep datasource cache entries.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nMaximum duration in minutes to keep datasource cache entries.", "type": "integer", "default": 10080 }, "cachePrivatePackages": { - "description": "Cache private packages in the datasource cache. This is useful for self-hosted setups", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nCache private packages in the datasource cache. This is useful for self-hosted setups", "type": "boolean", "default": false }, "cacheTtlOverride": { - "description": "An object that contains cache namespace TTL override values.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nAn object that contains cache namespace TTL override values.", "type": "object", "default": {}, "$ref": "#" @@ -1531,7 +1533,7 @@ } }, "checkedBranches": { - "description": "A list of branch names to mark for creation or rebasing as if it was selected in the Dependency Dashboard issue.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nA list of branch names to mark for creation or rebasing as if it was selected in the Dependency Dashboard issue.", "type": "array", "items": { "type": "string" @@ -1881,6 +1883,17 @@ "type": "boolean", "default": false }, + "configFileNames": { + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nList of filenames where repository config will be stored.", + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "default": null + }, "configMigration": { "description": "Enable this to get config migration PRs when needed.", "type": "boolean", @@ -1909,7 +1922,7 @@ "default": "none" }, "containerbaseDir": { - "description": "The directory where Renovate stores its containerbase cache. If left empty, Renovate creates a subdirectory within the `cacheDir`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe directory where Renovate stores its containerbase cache. If left empty, Renovate creates a subdirectory within the `cacheDir`.", "type": "string" }, "copier": { @@ -2176,7 +2189,7 @@ } }, "customEnvVariables": { - "description": "Custom environment variables for child processes and sidecar Docker containers.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nCustom environment variables for child processes and sidecar Docker containers.", "type": "object", "default": {}, "$ref": "#" @@ -2331,12 +2344,12 @@ "default": null }, "deleteAdditionalConfigFile": { - "description": "If set to `true`, Renovate tries to delete the additional self-hosted config file after reading it.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set to `true`, Renovate tries to delete the additional self-hosted config file after reading it.", "type": "boolean", "default": false }, "deleteConfigFile": { - "description": "If set to `true`, Renovate tries to delete the self-hosted config file after reading it.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set to `true`, Renovate tries to delete the self-hosted config file after reading it.", "type": "boolean", "default": false }, @@ -2472,12 +2485,12 @@ ] }, "detectGlobalManagerConfig": { - "description": "If `true`, Renovate tries to detect global manager configuration from the file system.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf `true`, Renovate tries to detect global manager configuration from the file system.", "type": "boolean", "default": false }, "detectHostRulesFromEnv": { - "description": "If `true`, Renovate tries to detect host rules from environment variables.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf `true`, Renovate tries to detect host rules from environment variables.", "type": "boolean", "default": false }, @@ -2681,26 +2694,26 @@ } }, "dockerChildPrefix": { - "description": "Change this value to add a prefix to the Renovate Docker sidecar container names and labels.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to add a prefix to the Renovate Docker sidecar container names and labels.", "type": "string", "default": "renovate_" }, "dockerCliOptions": { - "description": "Pass CLI flags to `docker run` command when `binarySource=docker`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPass CLI flags to `docker run` command when `binarySource=docker`.", "type": "string" }, "dockerMaxPages": { - "description": "By default, Renovate fetches up to 20 pages of Docker tags from registries. But you can set your own limit with this config option.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nBy default, Renovate fetches up to 20 pages of Docker tags from registries. But you can set your own limit with this config option.", "type": "integer", "default": 20 }, "dockerSidecarImage": { - "description": "Change this value to override the default Renovate sidecar image.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to override the default Renovate sidecar image.", "type": "string", - "default": "ghcr.io/containerbase/sidecar:13.20.2" + "default": "ghcr.io/containerbase/sidecar:13.23.10" }, "dockerUser": { - "description": "Set the `UID` and `GID` for Docker-based binaries if you use `binarySource=docker`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet the `UID` and `GID` for Docker-based binaries if you use `binarySource=docker`.", "type": "string" }, "dockerfile": { @@ -2816,7 +2829,7 @@ } }, "dryRun": { - "description": "If enabled, perform a dry run by logging messages instead of creating/updating/deleting branches and PRs.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf enabled, perform a dry run by logging messages instead of creating/updating/deleting branches and PRs.", "type": [ "string", "null" @@ -2850,11 +2863,11 @@ "$ref": "#" }, "encryptedWarning": { - "description": "Warning text to use if encrypted config is found.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nWarning text to use if encrypted config is found.", "type": "string" }, "endpoint": { - "description": "Custom endpoint to use.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nCustom endpoint to use.", "type": [ "string", "null" @@ -2876,7 +2889,7 @@ "default": [] }, "executionTimeout": { - "description": "Default execution timeout in minutes for child processes Renovate creates.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nDefault execution timeout in minutes for child processes Renovate creates.", "type": "integer", "default": 15 }, @@ -2886,7 +2899,7 @@ "default": false }, "exposeAllEnv": { - "description": "Set this to `true` to allow passing of all environment variables to package managers.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet this to `true` to allow passing of all environment variables to package managers.", "type": "boolean", "default": false }, @@ -3035,17 +3048,17 @@ "type": "string" }, "force": { - "description": "Any configuration set in this object will force override existing settings.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nAny configuration set in this object will force override existing settings.", "type": "object", "$ref": "#" }, "forceCli": { - "description": "Decides if CLI configuration options are moved to the `force` config section.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nDecides if CLI configuration options are moved to the `force` config section.", "type": "boolean", "default": true }, "forkCreation": { - "description": "Whether to create forks as needed at runtime when running in \"fork mode\".", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nWhether to create forks as needed at runtime when running in \"fork mode\".", "type": "boolean", "default": true }, @@ -3055,7 +3068,7 @@ "default": false }, "forkOrg": { - "description": "The preferred organization to create or find forked repositories, when in fork mode.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThe preferred organization to create or find forked repositories, when in fork mode.", "type": "string" }, "forkProcessing": { @@ -3069,7 +3082,7 @@ "default": "auto" }, "forkToken": { - "description": "Set a personal access token here to enable \"fork mode\".", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet a personal access token here to enable \"fork mode\".", "type": "string" }, "fvm": { @@ -3199,7 +3212,7 @@ "default": false }, "gitNoVerify": { - "description": "Which Git commands will be run with the `--no-verify` option.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nWhich Git commands will be run with the `--no-verify` option.", "oneOf": [ { "type": "array", @@ -3225,20 +3238,20 @@ ] }, "gitPrivateKey": { - "description": "PGP key to use for signing Git commits.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPGP key to use for signing Git commits.", "type": "string" }, "gitPrivateKeyPassphrase": { - "description": "Passphrase for the `gitPrivateKey`", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPassphrase for the `gitPrivateKey`", "type": "string" }, "gitTimeout": { - "description": "Configure the timeout with a number of milliseconds to wait for a Git task.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nConfigure the timeout with a number of milliseconds to wait for a Git task.", "type": "integer", "default": 0 }, "gitUrl": { - "description": "Overrides the default resolution for Git remote, e.g. to switch GitLab from HTTPS to SSH-based.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nOverrides the default resolution for Git remote, e.g. to switch GitLab from HTTPS to SSH-based.", "type": "string", "enum": [ "default", @@ -3302,7 +3315,7 @@ } }, "githubTokenWarn": { - "description": "Display warnings about GitHub token not being set.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nDisplay warnings about GitHub token not being set.", "type": "boolean", "default": true }, @@ -3518,7 +3531,7 @@ } }, "globalExtends": { - "description": "Configuration presets to use or extend for a self-hosted config.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nConfiguration presets to use or extend for a self-hosted config.", "type": "array", "items": { "type": "string" @@ -4385,7 +4398,7 @@ } }, "httpCacheTtlDays": { - "description": "Maximum duration in days to keep HTTP cache entries.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nMaximum duration in days to keep HTTP cache entries.", "type": "integer", "default": 90 }, @@ -4418,7 +4431,7 @@ "default": false }, "ignorePrAuthor": { - "description": "Set to `true` to fetch the entire list of PRs instead of only those authored by the Renovate user.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet to `true` to fetch the entire list of PRs instead of only those authored by the Renovate user.", "type": "boolean", "default": false }, @@ -4459,7 +4472,7 @@ "default": true }, "includeMirrors": { - "description": "Whether to process repositories that are mirrors. By default, repositories that are mirrors are skipped.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nWhether to process repositories that are mirrors. By default, repositories that are mirrors are skipped.", "type": "boolean", "default": false }, @@ -4472,22 +4485,22 @@ "default": [] }, "inheritConfig": { - "description": "If `true`, Renovate will inherit configuration from the `inheritConfigFileName` file in `inheritConfigRepoName`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf `true`, Renovate will inherit configuration from the `inheritConfigFileName` file in `inheritConfigRepoName`.", "type": "boolean", "default": false }, "inheritConfigFileName": { - "description": "Renovate will look for this config file name in the `inheritConfigRepoName`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nRenovate will look for this config file name in the `inheritConfigRepoName`.", "type": "string", "default": "org-inherited-config.json" }, "inheritConfigRepoName": { - "description": "Renovate will look in this repo for the `inheritConfigFileName`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nRenovate will look in this repo for the `inheritConfigFileName`.", "type": "string", "default": "{{parentOrg}}/renovate-config" }, "inheritConfigStrict": { - "description": "If `true`, any `inheritedConfig` fetch error will result in an aborted run.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf `true`, any `inheritedConfig` fetch error will result in an aborted run.", "type": "boolean", "default": false }, @@ -4895,7 +4908,7 @@ } }, "logContext": { - "description": "Add a global or per-repo log context to each log entry.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nAdd a global or per-repo log context to each log entry.", "type": [ "string", "null" @@ -5092,7 +5105,7 @@ } }, "mergeConfidenceDatasources": { - "description": "If set, Renovate will query the merge-confidence JSON API only for datasources that are part of this list.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set, Renovate will query the merge-confidence JSON API only for datasources that are part of this list.", "type": "array", "items": { "type": "string", @@ -5117,7 +5130,7 @@ ] }, "mergeConfidenceEndpoint": { - "description": "If set, Renovate will query this API for Merge Confidence data.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set, Renovate will query this API for Merge Confidence data.", "type": "string", "default": "https://developer.mend.io/" }, @@ -5175,7 +5188,7 @@ } }, "migratePresets": { - "description": "Define presets here which have been removed or renamed and should be migrated automatically.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nDefine presets here which have been removed or renamed and should be migrated automatically.", "type": "object", "default": {}, "additionalProperties": { @@ -5204,6 +5217,15 @@ ], "default": null }, + "minimumReleaseAgeBehaviour": { + "description": "When set in conjunction with `minimumReleaseAge`, controls whether the `releaseTimestamp` for a dependency update is required.", + "type": "string", + "enum": [ + "timestamp-required", + "timestamp-optional" + ], + "default": "timestamp-optional" + }, "minor": { "description": "Configuration to apply when an update type is `minor`.", "type": "object", @@ -5757,16 +5779,16 @@ } }, "onboarding": { - "description": "Require a Configuration PR first.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nRequire a Configuration PR first.", "type": "boolean" }, "onboardingBranch": { - "description": "Change this value to override the default onboarding branch name.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to override the default onboarding branch name.", "type": "string", "default": "renovate/configure" }, "onboardingCommitMessage": { - "description": "Change this value to override the default onboarding commit message.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to override the default onboarding commit message.", "type": [ "string", "null" @@ -5774,7 +5796,7 @@ "default": null }, "onboardingConfig": { - "description": "Configuration to use for onboarding PRs.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nConfiguration to use for onboarding PRs.", "type": "object", "default": { "$schema": "https://docs.renovatebot.com/renovate-schema.json" @@ -5782,12 +5804,12 @@ "$ref": "#" }, "onboardingConfigFileName": { - "description": "Change this value to override the default onboarding config file name.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to override the default onboarding config file name.", "type": "string", "default": "renovate.json" }, "onboardingNoDeps": { - "description": "Onboard the repository even if no dependencies are found.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nOnboard the repository even if no dependencies are found.", "type": "string", "enum": [ "auto", @@ -5797,17 +5819,17 @@ "default": "auto" }, "onboardingPrTitle": { - "description": "Change this value to override the default onboarding PR title.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nChange this value to override the default onboarding PR title.", "type": "string", "default": "Configure Renovate" }, "onboardingRebaseCheckbox": { - "description": "Set to enable rebase/retry markdown checkbox for onboarding PRs.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet to enable rebase/retry markdown checkbox for onboarding PRs.", "type": "boolean", "default": false }, "optimizeForDisabled": { - "description": "Set to `true` to perform a check for disabled config prior to cloning.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet to `true` to perform a check for disabled config prior to cloning.", "type": "boolean", "default": false }, @@ -6173,7 +6195,7 @@ } }, "password": { - "description": "Password for authentication.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPassword for authentication.", "type": "string" }, "patch": { @@ -6316,7 +6338,7 @@ } }, "persistRepoData": { - "description": "If set to `true`: keep repository data between runs instead of deleting the data.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set to `true`: keep repository data between runs instead of deleting the data.", "type": "boolean", "default": false }, @@ -6682,7 +6704,7 @@ } }, "platform": { - "description": "Platform type of repository.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPlatform type of repository.", "type": "string", "enum": [ "azure", @@ -6916,7 +6938,7 @@ "default": "{{{header}}}{{{table}}}{{{warnings}}}{{{notes}}}{{{changelogs}}}{{{configDescription}}}{{{controls}}}{{{footer}}}" }, "prCommitsPerRunLimit": { - "description": "Set the maximum number of commits per Renovate run. By default there is no limit.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet the maximum number of commits per Renovate run. By default there is no limit.", "type": "integer", "default": 0 }, @@ -7027,7 +7049,7 @@ } }, "presetCachePersistence": { - "description": "Cache resolved presets in package cache.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nCache resolved presets in package cache.", "type": "boolean", "default": false }, @@ -7037,23 +7059,23 @@ "default": false }, "privateKey": { - "description": "Server-side private key.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nServer-side private key.", "type": "string" }, "privateKeyOld": { - "description": "Secondary or old private key to try.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSecondary or old private key to try.", "type": "string" }, "privateKeyPath": { - "description": "Path to the Server-side private key.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPath to the Server-side private key.", "type": "string" }, "privateKeyPathOld": { - "description": "Path to the Server-side old private key.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPath to the Server-side old private key.", "type": "string" }, "processEnv": { - "description": "Environment variables to be used in global config only.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nEnvironment variables to be used in global config only.", "type": "object", "default": {}, "additionalProperties": { @@ -7062,7 +7084,7 @@ "$ref": "#" }, "productLinks": { - "description": "Links which are used in PRs, issues and comments.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nLinks which are used in PRs, issues and comments.", "type": "object", "default": { "documentation": "https://docs.renovatebot.com/", @@ -7091,8 +7113,7 @@ "default": { "managerFilePatterns": [ "/(^|/)pubspec\\.ya?ml$/" - ], - "versioning": "npm" + ] }, "$ref": "#", "items": { @@ -7344,11 +7365,11 @@ "default": "auto" }, "redisPrefix": { - "description": "Key prefix for redis cache entries.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nKey prefix for redis cache entries.", "type": "string" }, "redisUrl": { - "description": "If set, this Redis URL will be used for caching instead of the file system.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set, this Redis URL will be used for caching instead of the file system.", "type": "string" }, "regex": { @@ -7492,7 +7513,7 @@ "default": "replace" }, "reportPath": { - "description": "Path to where the file should be written. In case of `s3` this has to be a full S3 URI.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nPath to where the file should be written. In case of `s3` this has to be a full S3 URI.", "type": [ "string", "null" @@ -7500,7 +7521,7 @@ "default": null }, "reportType": { - "description": "Set how, or if, reports should be generated.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet how, or if, reports should be generated.", "type": [ "string", "null" @@ -7513,14 +7534,14 @@ "default": null }, "repositories": { - "description": "List of Repositories.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nList of Repositories.", "type": "array", "items": { "type": "string" } }, "repositoryCache": { - "description": "This option decides if Renovate uses a JSON cache to speed up extractions.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nThis option decides if Renovate uses a JSON cache to speed up extractions.", "type": "string", "enum": [ "disabled", @@ -7530,12 +7551,12 @@ "default": "disabled" }, "repositoryCacheType": { - "description": "Set the type of renovate repository cache if `repositoryCache` is enabled.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nSet the type of renovate repository cache if `repositoryCache` is enabled.", "type": "string", "default": "local" }, "requireConfig": { - "description": "Controls Renovate's behavior regarding repository config files such as `renovate.json`.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nControls Renovate's behavior regarding repository config files such as `renovate.json`.", "type": "string", "enum": [ "required", @@ -7722,11 +7743,11 @@ } }, "s3Endpoint": { - "description": "If set, Renovate will use this string as the `endpoint` when creating the AWS S3 client instance.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set, Renovate will use this string as the `endpoint` when creating the AWS S3 client instance.", "type": "string" }, "s3PathStyle": { - "description": "If set, Renovate will enable `forcePathStyle` when creating the AWS S3 client instance.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set, Renovate will enable `forcePathStyle` when creating the AWS S3 client instance.", "type": "boolean", "default": false }, @@ -7858,7 +7879,7 @@ ] }, "secrets": { - "description": "Object which holds secret name/value pairs.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nObject which holds secret name/value pairs.", "type": "object", "default": {}, "additionalProperties": { @@ -8445,7 +8466,7 @@ "type": "string" }, "token": { - "description": "Repository Auth Token.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nRepository Auth Token.", "type": "string" }, "travis": { @@ -8559,7 +8580,7 @@ } }, "unicodeEmoji": { - "description": "Enable or disable Unicode emoji.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nEnable or disable Unicode emoji.", "type": "boolean", "default": true }, @@ -8632,7 +8653,7 @@ "default": true }, "useBaseBranchConfig": { - "description": "Whether to read configuration from `baseBranches` instead of only the default branch.", + "description": "Whether to read configuration from base branches instead of only the default branch.", "type": "string", "enum": [ "merge", @@ -8641,12 +8662,12 @@ "default": "none" }, "useCloudMetadataServices": { - "description": "If `false`, Renovate does not try to access cloud metadata services.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf `false`, Renovate does not try to access cloud metadata services.", "type": "boolean", "default": true }, "userAgent": { - "description": "If set to any string, Renovate will use this as the `user-agent` it sends with HTTP requests.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nIf set to any string, Renovate will use this as the `user-agent` it sends with HTTP requests.", "type": [ "string", "null" @@ -8665,11 +8686,11 @@ } }, "username": { - "description": "Username for authentication.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nUsername for authentication.", "type": "string" }, "variables": { - "description": "Object which holds variable name/value pairs.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nObject which holds variable name/value pairs.", "type": "object", "default": {}, "additionalProperties": { @@ -8837,6 +8858,7 @@ "same-major", "semver", "semver-coerced", + "semver-partial", "swift", "ubuntu", "unity3d", @@ -8957,7 +8979,7 @@ } }, "writeDiscoveredRepos": { - "description": "Writes discovered repositories to a JSON file and then exit.", + "description": "Deprecated: This configuration option is only intended to be used with 'global' configuration when self-hosting, not used in a repository configuration file. Renovate likely won't use the configuration, and these fields will be removed from the repository configuration documentation in Renovate v43 (https://github.com/renovatebot/renovate/issues/38728)\n\nWrites discovered repositories to a JSON file and then exit.", "type": "string" } } diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 index 08ba0e3db..4da4cad27 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 @@ -1 +1 @@ -a88f73a58fbaf5fc6e804fca9eb0cea69aeffb9dc3e90f74309542391a4d5025 \ No newline at end of file +600c1ceb40b042c828806cc226f35daba88ad6c63cf1a220abe5ab930d4c89eb \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 index 96492ef40..bfc03fc3b 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 @@ -1 +1 @@ -600a76b1e6e95b838959f0a56fbdf08ebef74e30453fe11751f3a8f9775b4b4c \ No newline at end of file +27ba2e4bb8cde4545a71caada72c8d40d90f2481b8c253a669f5dfe79ff9fd23 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 index 276629d27..8b0f11be0 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 @@ -1 +1 @@ -059400067e260aa570e5a1d3db396ad19e96d3164505ea57fe9a1e17e22559bf \ No newline at end of file +07a45f7469f04e291461c17ce3e1df18e900e1399720fef00b7663274d8b06ba \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 index cb7445c04..73af84335 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 @@ -1 +1 @@ -179f7b5e9c261ac1abe3baac443b247a2ec4cfedd69629531f3d2a436ba8d501 \ No newline at end of file +b9fda13dfb5ba8bebe0739168aee1d4f87c147fc4fcede2ddbc345ffefa28957 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 index a6b56389d..74fec4fb5 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 @@ -1 +1 @@ -d79695731d4fece9f82f40fcc95c2f6c2843839c1571bbdffcd4f976ab9e294e \ No newline at end of file +6eb7b2bbbbfba7a18a27cb5f008620e09c5043e3f0578a1c4a40e779d8419b50 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 index 7d513ea07..254a4a910 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 @@ -1 +1 @@ -8eaa59fcb3ef9807b376b8700a810937318a7db44f212d25be29eb77fef37917 \ No newline at end of file +3a8dc27f8c5289432866f579d9a177992edc6117e44114a290fea2b6078f8ca7 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json b/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json index e07270364..358cbfdd1 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json +++ b/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json @@ -1,1103 +1,4981 @@ { - "$schema": "http://json-schema.org/draft-04/schema#", - "definitions": { - "grammar-string": { - "oneOf": [ - { - "type": "string", - "usage": "" + "$defs": { + "App": { + "additionalProperties": false, + "description": "Snapcraft project app definition.", + "properties": { + "command": { + "description": "The command to run inside the snap when the app is invoked.", + "examples": ["bin/foo-app"], + "title": "Command", + "type": "string" }, - { - "type": "array", - "items": { - "minitems": 1, - "uniqueItems": true, - "oneOf": [ - { - "type": "object", - "usage": "on [,...]:", - "additionalProperties": false, - "patternProperties": { - "^on\\s+.+$": { - "$ref": "#/definitions/grammar-string" - } - } - }, - { - "type": "object", - "usage": "to [,...]:", - "additionalProperties": false, - "patternProperties": { - "^to\\s+.+$": { - "$ref": "#/definitions/grammar-string" - } - } - }, - { - "type": "object", - "usage": "try:", - "additionalProperties": false, - "patternProperties": { - "^try$": { - "$ref": "#/definitions/grammar-string" - } - } - }, - { - "type": "object", - "usage": "else:", - "additionalProperties": false, - "patternProperties": { - "^else$": { - "$ref": "#/definitions/grammar-string" - } - } - }, - { - "type": "string", - "pattern": "else fail" - } - ] - } - } - ] - }, - "grammar-array": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "oneOf": [ - { - "type": "string", - "usage": "" - }, - { - "type": "object", - "usage": "on [,...]:", - "additionalProperties": false, - "patternProperties": { - "^on\\s+.+$": { - "$ref": "#/definitions/grammar-array" - } + "autostart": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "to [,...]:", - "additionalProperties": false, - "patternProperties": { - "^to\\s+.+$": { - "$ref": "#/definitions/grammar-array" - } + ], + "default": null, + "description": "The desktop file used to start an app when the desktop environment starts.", + "examples": ["foo-app.desktop"], + "title": "Autostart" + }, + "common-id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "try:", - "additionalProperties": false, - "patternProperties": { - "^try$": { - "$ref": "#/definitions/grammar-array" - } + ], + "default": null, + "description": "The identifier to a desktop ID within an external appstream file.", + "examples": ["org.canonical.foo"], + "title": "Common-Id" + }, + "bus-name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "else:", - "additionalProperties": false, - "patternProperties": { - "^else$": { - "$ref": "#/definitions/grammar-array" - } + ], + "default": null, + "description": "The bus name that the application or service exposes through D-Bus.", + "examples": ["org.bluez"], + "title": "Bus-Name" + }, + "desktop": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - } - ] - } - }, - "build-environment-grammar": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "oneOf": [ - { - "type": "object", - "minProperties": 1, - "maxProperties": 1, - "additionalProperties": { + ], + "default": null, + "description": "The desktop file used to start an app.", + "examples": ["my-app.desktop"], + "title": "Desktop" + }, + "completer": { + "anyOf": [ + { "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "on [,...]:", - "additionalProperties": false, - "patternProperties": { - "^on\\s+.+$": { - "$ref": "#/definitions/build-environment-grammar" - } + ], + "default": null, + "description": "The name of the bash completion script for the app.", + "examples": ["bash-complete.sh"], + "title": "Completer" + }, + "stop-command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "to [,...]:", - "additionalProperties": false, - "patternProperties": { - "^to\\s+.+$": { - "$ref": "#/definitions/build-environment-grammar" - } + ], + "default": null, + "description": "The command to run to stop the service.", + "examples": ["bin/foo-app --halt"], + "title": "Stop-Command" + }, + "post-stop-command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - { - "type": "object", - "usage": "else:", - "additionalProperties": false, - "patternProperties": { - "^else$": { - "$ref": "#/definitions/build-environment-grammar" - } + ], + "default": null, + "description": "The command to run after the service is stopped.", + "examples": ["bin/logrotate --force"], + "title": "Post-Stop-Command" + }, + "start-timeout": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" } - } - ] - } - }, - "apt-deb": { - "type": "object", - "description": "deb repositories", - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "enum": ["apt"] + ], + "default": null, + "description": "The maximum amount of time to wait for the service to start.", + "examples": ["10s", "2m"], + "title": "Start-Timeout" }, - "architectures": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "description": "Architectures to enable, or restrict to, for this repository. Defaults to host architecture." - } + "stop-timeout": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The maximum amount of time to wait for the service to stop.", + "examples": ["10s", "2m"], + "title": "Stop-Timeout" }, - "formats": { - "type": "array", - "description": "deb types to enable. Defaults to [deb, deb-src].", - "minItems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "enum": ["deb", "deb-src"] - } + "watchdog-timeout": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The maximum amount of time the service can run without sending a heartbeat to the watchdog.", + "examples": ["10s", "2m"], + "title": "Watchdog-Timeout" }, - "components": { + "reload-command": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The command to run to restart the service.", + "examples": ["bin/foo-app --restart"], + "title": "Reload-Command" + }, + "restart-delay": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The time to wait between service restarts.", + "examples": ["10s", "2m"], + "title": "Restart-Delay" + }, + "timer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The time or schedule to run a service.", + "examples": ["23:00", "00:00-24:00/24", "mon,10:00,,fri,15:00"], + "title": "Timer" + }, + "daemon": { + "anyOf": [ + { + "enum": ["simple", "forking", "oneshot", "notify", "dbus"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the app as a service, and sets its runtime and notification behavior.", + "examples": ["simple", "oneshot"], + "title": "Daemon" + }, + "after": { + "description": "The ordered list of apps that the service runs after it launches.", + "examples": ["[foo-app, bar-app]"], + "items": { + "type": "string" + }, + "title": "After", "type": "array", - "minItems": 0, - "uniqueItems": true, + "uniqueItems": true + }, + "before": { + "description": "The ordered list of apps that the service runs before it launches.", + "examples": ["[baz-app, quz-app]"], "items": { - "type": "string", - "description": "Deb repository components to enable, e.g. 'main, multiverse, unstable'" - } + "type": "string" + }, + "title": "Before", + "type": "array", + "uniqueItems": true + }, + "refresh-mode": { + "anyOf": [ + { + "enum": ["endure", "restart", "ignore-running"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Determines how the service should restart when the snap refreshes.", + "examples": ["restart"], + "title": "Refresh-Mode" }, - "key-id": { - "type": "string", - "description": "GPG key identifier / fingerprint. May be used to identify key file in /snap/keys/.asc", - "pattern": "^[A-Z0-9]{40}$" + "stop-mode": { + "anyOf": [ + { + "enum": ["sigterm", "sigterm-all", "sighup", "sighup-all", "sigusr1", "sigusr1-all", "sigusr2", "sigusr2-all", "sigint", "sigint-all"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The signal to send when stopping the service.", + "examples": ["sigterm"], + "title": "Stop-Mode" }, - "key-server": { - "type": "string", - "description": "GPG keyserver to use to fetch GPG , e.g. 'keyserver.ubuntu.com'. Defaults to keyserver.ubuntu.com if key is not found in project." + "restart-condition": { + "anyOf": [ + { + "enum": ["on-success", "on-failure", "on-abnormal", "on-abort", "on-watchdog", "always", "never"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The conditions that cause the service to restart.", + "examples": ["on-failure"], + "title": "Restart-Condition" }, - "path": { - "type": "string", - "description": "Exact path to repository (relative to URL). Cannot be used with suites or components." + "install-mode": { + "anyOf": [ + { + "enum": ["enable", "disable"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whether snapd can automatically start the service when the snap is installed.", + "examples": ["enable"], + "title": "Install-Mode" }, - "suites": { - "type": "array", - "minItems": 1, - "uniqueItems": true, + "slots": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The list of slots that the app provides.", + "examples": ["[dbus-daemon]"], + "title": "Slots" + }, + "plugs": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The interfaces that the app can connect to.", + "examples": ["[home, removable-media]"], + "title": "Plugs" + }, + "aliases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The aliases that can be used to run the app.", + "examples": ["[my-app]"], + "title": "Aliases" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "command-chain": { + "description": "The ordered list of commands to run before the app's command runs.", + "examples": ["[bin/alsa-launch, bin/desktop-launch]"], "items": { - "type": "string", - "description": "Deb repository suites to enable, e.g. 'xenial-updates, xenial-security')." - } + "type": "string" + }, + "title": "Command-Chain", + "type": "array" + }, + "sockets": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Socket" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The sockets used to activate an app.", + "examples": ["{my-socket: {listen-stream: $SNAP_COMMON/lxd/unix.socket, socket-mode: 0660}}"], + "title": "Sockets" + }, + "daemon-scope": { + "anyOf": [ + { + "enum": ["system", "user"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Determines whether the service is run on a system or user instance of systemd.", + "examples": ["user"], + "title": "Daemon-Scope" + }, + "activates-on": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The slots exposed by the snap to activate the service with D-Bus.", + "examples": ["gnome-shell-dbus"], + "title": "Activates-On" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file for the app.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" }, - "url": { - "type": "string", - "description": "Deb repository URL, e.g. 'http://archive.canonical.com/ubuntu'." + "extensions": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The extensions to add to the project.", + "examples": [["gnome"], ["ros2-humble"]], + "title": "Extensions" } }, - "required": ["type", "key-id", "url"], - "validation-failure": "{!r} is not properly configured deb repository" + "required": ["command"], + "title": "App", + "type": "object" }, - "apt-ppa": { - "type": "object", - "description": "PPA repository", + "Architecture": { "additionalProperties": false, + "description": "Snapcraft project architecture definition.", "properties": { - "type": { - "type": "string", - "enum": ["apt"] + "build-on": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + ], + "description": "The architectures on which the snap can be built.", + "examples": ["[amd64, riscv64]"], + "title": "Build-On" }, - "ppa": { - "type": "string", - "description": "ppa path: e.g. 'canonical-kernel-team/unstable'" + "build-for": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The single element list containing the architecture where the snap can be run", + "examples": ["[amd64]", "[riscv64]"], + "title": "Build-For" } }, - "required": ["type", "ppa"], - "validation-failure": "{!r} is not properly configured PPA repository" - }, - "system-username-scope": { - "type": "string", - "description": "short-form user configuration (: )", - "enum": ["shared"], - "validation-failure": "{!r} is not a valid user scope. Valid scopes include: 'shared'" - }, - "environment": { - "type": "object", - "description": "environment entries", - "minItems": 1, - "additionalProperties": { - "anyOf": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "number" - } - ] - } - } - }, - "title": "snapcraft schema", - "type": "object", - "properties": { - "build-packages": { - "$ref": "#/definitions/grammar-array", - "description": "top level build packages." + "required": ["build-on"], + "title": "Architecture", + "type": "object" }, - "adopt-info": { - "type": "string", - "description": "name of the part that provides source files that will be parsed to extract snap metadata information" + "BareCore22Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "base": { + "const": "bare", + "title": "Base", + "type": "string" + }, + "build-base": { + "const": "core22", + "title": "Build-Base", + "type": "string" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "default": null, + "description": "The snap's type.", + "enum": ["app", "gadget", "kernel", "snapd", null], + "title": "Type" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "architectures": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/Architecture" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The architecture sets where the snap can be built and where the resulting snap can run.", + "examples": ["[amd64, riscv64]", "[{build-on: [amd64], build-for: [amd64]}]", "[{build-on: [amd64, riscv64], build-for: [riscv64]}]"], + "title": "Architectures" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "base", "build-base", "parts", "confinement"], + "title": "BareCore22Project", + "type": "object" + }, + "BareCore24Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "base": { + "const": "bare", + "title": "Base", + "type": "string" + }, + "build-base": { + "const": "core24", + "title": "Build-Base", + "type": "string" + }, + "platforms": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The platforms where the snap can be built and where the resulting snap can run.", + "examples": ["{amd64: {build-on: [amd64], build-for: [amd64]}, arm64: {build-on: [amd64, arm64], build-for: [arm64]}}"], + "title": "Platforms" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "default": null, + "description": "The snap's type.", + "enum": ["app", "gadget", "kernel", "snapd", null], + "examples": ["kernel"], + "title": "Type" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "base", "build-base", "parts", "confinement"], + "title": "BareCore24Project", + "type": "object" + }, + "BaseCore22Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "build-base": { + "const": "core22", + "title": "Build-Base", + "type": "string" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "const": "base", + "title": "Type", + "type": "string" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "architectures": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/Architecture" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The architecture sets where the snap can be built and where the resulting snap can run.", + "examples": ["[amd64, riscv64]", "[{build-on: [amd64], build-for: [amd64]}]", "[{build-on: [amd64, riscv64], build-for: [riscv64]}]"], + "title": "Architectures" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "build-base", "parts", "type", "confinement"], + "title": "BaseCore22Project", + "type": "object" + }, + "BaseCore24Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "build-base": { + "const": "core24", + "title": "Build-Base", + "type": "string" + }, + "platforms": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The platforms where the snap can be built and where the resulting snap can run.", + "examples": ["{amd64: {build-on: [amd64], build-for: [amd64]}, arm64: {build-on: [amd64, arm64], build-for: [arm64]}}"], + "title": "Platforms" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "const": "base", + "title": "Type", + "type": "string" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "build-base", "parts", "type", "confinement"], + "title": "BaseCore24Project", + "type": "object" + }, + "BaseDevelProject": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "build-base": { + "const": "devel", + "title": "Build-Base", + "type": "string" + }, + "platforms": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Platform" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The platforms where the snap can be built and where the resulting snap can run.", + "examples": ["{amd64: {build-on: [amd64], build-for: [amd64]}, arm64: {build-on: [amd64, arm64], build-for: [arm64]}}"], + "title": "Platforms" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "const": "base", + "title": "Type", + "type": "string" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "const": "devel", + "title": "Grade", + "type": "string" + }, + "architectures": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/Architecture" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The architecture sets where the snap can be built and where the resulting snap can run.", + "examples": ["[amd64, riscv64]", "[{build-on: [amd64], build-for: [amd64]}]", "[{build-on: [amd64, riscv64], build-for: [riscv64]}]"], + "title": "Architectures" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "build-base", "parts", "type", "confinement", "grade"], + "title": "BaseDevelProject", + "type": "object" }, - "name": { - "description": "name of the snap package", - "allOf": [ - { - "$comment": "string, but not too long. the failure message avoids printing repr of the thing, as it could be huge", - "type": "string", - "validation-failure": "snap names need to be strings.", - "maxLength": 40 + "Component": { + "additionalProperties": false, + "description": "Snapcraft component definition.", + "properties": { + "summary": { + "description": "The summary of the component.", + "examples": ["Language translations for the app"], + "maxLength": 78, + "title": "Summary", + "type": "string" }, - { - "pattern": "^[a-z0-9-]*[a-z][a-z0-9-]*$", - "validation-failure": "{.instance!r} is not a valid snap name. Snap names can only use ASCII lowercase letters, numbers, and hyphens, and must have at least one letter." + "description": { + "description": "The full description of the component.", + "examples": ["Contains optional translation packs to allow the user to change the language."], + "title": "Description", + "type": "string" }, - { - "pattern": "^[^-]", - "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot start with a hyphen." + "type": { + "description": "The type of the component.", + "enum": ["test", "kernel-modules", "standard"], + "examples": ["standard"], + "title": "Type", + "type": "string" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the component.", + "examples": ["1.2.3"], + "title": "Version" + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The configuration for the component's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the component's metadata.\n\nOnly the component's version can be set.\n", + "examples": ["foo-part"], + "title": "Adopt-Info" + } + }, + "required": ["summary", "description", "type"], + "title": "Component", + "type": "object" + }, + "ContentPlug": { + "additionalProperties": false, + "description": "Snapcraft project content plug definition.", + "properties": { + "content": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name for the content type.", + "examples": ["themes"], + "title": "Content" + }, + "interface": { + "description": "The name of the interface.", + "examples": ["network"], + "title": "Interface", + "type": "string" + }, + "target": { + "description": "The path to where the producer's files will be available in the snap.", + "examples": ["$SNAP/data-dir/themes"], + "title": "Target", + "type": "string" + }, + "default-provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The name of the producer snap..", + "examples": ["gtk-common-themes"], + "title": "Default-Provider" + } + }, + "required": ["interface", "target"], + "title": "ContentPlug", + "type": "object" + }, + "Core22Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ + { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" + }, + "summary": { + "anyOf": [ + { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" + }, + "base": { + "const": "core22", + "title": "Base", + "type": "string" + }, + "build-base": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The build environment to use when building the snap", + "examples": ["core20", "core22", "core24", "devel"], + "title": "Build-Base" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "default": null, + "description": "The snap's type.", + "enum": ["app", "gadget", "kernel", "snapd", null], + "title": "Type" + }, + "icon": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "architectures": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/Architecture" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The architecture sets where the snap can be built and where the resulting snap can run.", + "examples": ["[amd64, riscv64]", "[{build-on: [amd64], build-for: [amd64]}]", "[{build-on: [amd64, riscv64], build-for: [riscv64]}]"], + "title": "Architectures" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" }, - { - "pattern": "[^-]$", - "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot end with a hyphen." + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" }, - { - "not": { - "pattern": "--" - }, - "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot have two hyphens in a row." - } - ] - }, - "title": { - "$comment": "https://forum.snapcraft.io/t/title-length-in-snapcraft-yaml-snap-yaml/8625/10", - "description": "title for the snap", - "type": "string", - "maxLength": 40 - }, - "architectures": { - "description": "architectures on which to build, and on which the resulting snap runs", - "type": "array", - "minItems": 1, - "uniqueItems": true, - "format": "architectures", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": false, - "required": ["build-on"], - "properties": { - "build-on": { + "plugs": { + "anyOf": [ + { + "additionalProperties": { "anyOf": [ { - "type": "string" + "$ref": "#/$defs/ContentPlug" }, - { - "type": "array", - "minItems": 1, - "uniqueItems": true - } + {} ] }, - "run-on": { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { "anyOf": [ { "type": "string" }, { - "type": "array", - "minItems": 1, - "uniqueItems": true + "type": "null" } ] }, - "build-for": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "minItems": 1, - "uniqueItems": true - } - ] - } + "type": "object" + }, + { + "type": "null" } - } - ] - } - }, - "version": { - "description": "package version", - "allOf": [ - { - "type": "string", - "validation-failure": "snap versions need to be strings. They must also be wrapped in quotes when the value will be interpreted by the YAML parser as a non-string. Examples: '1', '1.2', '1.2.3', git (will be replaced by a git describe based version string)." + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" }, - { - "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9:.+~-]*[a-zA-Z0-9+~])?$", - "maxLength": 32, - "validation-failure": "{.instance!r} is not a valid snap version string. Snap versions consist of upper- and lower-case alphanumeric characters, as well as periods, colons, plus signs, tildes, and hyphens. They cannot begin with a period, colon, plus sign, tilde, or hyphen. They cannot end with a period, colon, or hyphen." - } - ] - }, - "version-script": { - "type": "string", - "description": "a script that echoes the version to set." - }, - "license": { - "type": "string", - "description": "the license the package holds" - }, - "icon": { - "type": "string", - "description": "path to a 512x512 icon representing the package.", - "format": "icon-path" - }, - "summary": { - "type": "string", - "description": "one line summary for the package", - "maxLength": 78 - }, - "description": { - "type": "string", - "description": "long description of the package", - "pattern": ".+", - "validation-failure": "{.instance!r} is not a valid description string." - }, - "assumes": { - "type": "array", - "description": "featureset the snap requires in order to work.", - "minItems": 1, - "uniqueItems": true, - "items": [ - { - "type": "string" - } - ] - }, - "type": { - "type": "string", - "description": "the snap type, the implicit type is 'app'", - "enum": ["app", "base", "gadget", "kernel", "snapd"] - }, - "frameworks": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": [ - { - "type": "string" - } - ] - }, - "confinement": { - "type": "string", - "description": "the type of confinement supported by the snap", - "default": "strict", - "enum": ["classic", "devmode", "strict"] - }, - "grade": { - "type": "string", - "description": "the quality grade of the snap", - "default": "stable", - "enum": ["stable", "devel"] - }, - "base": { - "type": "string", - "description": "the base snap to use" - }, - "build-base": { - "type": "string", - "description": "force a build environment based on base to create a snap" - }, - "epoch": { - "description": "the snap epoch, used to specify upgrade paths", - "format": "epoch" - }, - "compression": { - "description": "compression to use for snap archive - default is otherwise determined by 'snap pack'", - "type": "string", - "enum": ["lzo", "xz"] - }, - "environment": { - "description": "environment entries for the snap as a whole", - "$ref": "#/definitions/environment" - }, - "passthrough": { - "type": "object", - "description": "properties to be passed into snap.yaml as-is" - }, - "layout": { - "type": "object", - "description": "layout property to be passed into the snap.yaml as-is" - }, - "package-repositories": { - "type": "array", - "description": "additional repository configuration.", - "minItems": 0, - "uniqueItems": true, - "items": [ - { - "oneOf": [ + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ { - "$ref": "#/definitions/apt-deb" + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true }, { - "$ref": "#/definitions/apt-ppa" + "type": "null" } - ] - } - ] - }, - "system-usernames": { - "type": "object", - "description": "system username", - "additionalProperties": false, - "validation-failure": "{!r} is not a valid system-username.", - "patternProperties": { - "^snap_(daemon|microk8s|aziotedge|aziotdu)$": { - "oneOf": [ + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ { - "$ref": "#/definitions/system-username-scope" + "type": "string" }, { - "type": "object", - "description": "long-form user configuration", - "additionalProperties": false, - "properties": { - "scope": { - "$ref": "#/definitions/system-username-scope" - } + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" }, - "required": ["scope"] + "propertyNames": { + "maxLength": 40 + }, + "type": "object" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" } - } + }, + "required": ["name", "base", "parts", "confinement"], + "title": "Core22Project", + "type": "object" }, - "donation": { - "oneOf": [ - { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": [ + "Core24Project": { + "additionalProperties": false, + "properties": { + "name": { + "description": "The identifying name of the snap.", + "examples": ["my-app", "powershell", "jupyterlab-desktop"], + "maxLength": 40, + "title": "Name", + "type": "string" + }, + "title": { + "anyOf": [ + { + "description": "A human-readable title.", + "examples": ["Ubuntu Linux", "Jupyter Lab Desktop", "LXD", "DigiKam", "Apache Kafka", "MySQL Router K8s charm"], + "maxLength": 40, + "minLength": 2, + "title": "Title", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Title" + }, + "version": { + "anyOf": [ { + "description": "The version of the project, enclosed in quotation marks.", + "examples": ["\"0.1\"", "\"1.0.0\"", "\"v1.0.0\"", "\"24.04\""], + "maxLength": 32, + "title": "version string", "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "The version of the snap.", + "examples": ["1.2.3"], + "title": "Version" }, - { - "type": "string" - } - ] - }, - "issues": { - "oneOf": [ - { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": [ + "summary": { + "anyOf": [ { + "description": "A short description of the project.", + "examples": ["Linux for Human Beings", "The cross-platform desktop application for JupyterLab", "Container and VM manager", "Photo Management Program", "Charm for routing MySQL databases in Kubernetes", "An open-source event streaming platform for high-performance data pipelines"], + "maxLength": 78, + "title": "Summary", "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "title": "Summary" }, - { - "type": "string" - } - ] - }, - "contact": { - "oneOf": [ - { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": [ + "description": { + "anyOf": [ { "type": "string" + }, + { + "type": "null" } - ] + ], + "default": null, + "description": "The full description of the project.", + "title": "Description" }, - { + "base": { + "const": "core24", + "title": "Base", "type": "string" - } - ] - }, - "source-code": { - "type": "string" - }, - "website": { - "type": "string" - }, - "apps": { - "type": "object", - "additionalProperties": false, - "validation-failure": "{!r} is not a valid app name. App names consist of upper- and lower-case alphanumeric characters and hyphens. They cannot start or end with a hyphen.", - "patternProperties": { - "^[a-zA-Z0-9](?:-?[a-zA-Z0-9])*$": { - "type": "object", - "required": ["command"], - "dependencies": { - "bus-name": ["daemon"], - "activates-on": ["daemon"], - "refresh-mode": ["daemon"], - "stop-mode": ["daemon"], - "stop-command": ["daemon"], - "start-timeout": ["daemon"], - "stop-timeout": ["daemon"], - "watchdog-timeout": ["daemon"], - "restart-delay": ["daemon"], - "post-stop-command": ["daemon"], - "reload-command": ["daemon"], - "restart-condition": ["daemon"], - "before": ["daemon"], - "after": ["daemon"], - "timer": ["daemon"], - "install-mode": ["daemon"] - }, - "additionalProperties": false, - "properties": { - "autostart": { - "type": "string", - "description": "Name of the desktop file placed by the application in $SNAP_USER_DATA/.config/autostart to indicate that application should be started with the user's desktop session.", - "pattern": "^[A-Za-z0-9. _#:$-]+\\.desktop$", - "validation-failure": "{.instance!r} is not a valid desktop file name (e.g. myapp.desktop)" - }, - "common-id": { - "type": "string", - "description": "common identifier across multiple packaging formats" - }, - "bus-name": { - "type": "string", - "description": "D-Bus name this service is reachable as", - "pattern": "^[A-Za-z0-9/. _#:$-]*$", - "validation-failure": "{.instance!r} is not a valid bus name." - }, - "activates-on": { - "type": "array", - "description": "dbus interface slots this service activates on", - "minitems": 1, - "uniqueItems": true, - "items": { - "type": "string" - } + }, + "build-base": { + "anyOf": [ + { + "type": "string" }, - "desktop": { - "type": "string", - "description": "path to a desktop file representing the app, relative to the prime directory" - }, - "command": { - "type": "string", - "description": "command executed to run the binary" - }, - "completer": { - "type": "string", - "description": "bash completion script relative to the prime directory" - }, - "stop-command": { - "type": "string", - "description": "command executed to stop a service" - }, - "post-stop-command": { - "type": "string", - "description": "command executed after stopping a service" - }, - "start-timeout": { - "type": "string", - "pattern": "^[0-9]+(ns|us|ms|s|m)*$", - "validation-failure": "{.instance!r} is not a valid timeout value.", - "description": "Optional time to wait for daemon to start - ns | us | ms | s | m" - }, - "stop-timeout": { - "type": "string", - "pattern": "^[0-9]+(ns|us|ms|s|m)*$", - "validation-failure": "{.instance!r} is not a valid timeout value.", - "description": "Optional time to wait for daemon to stop - ns | us | ms | s | m" - }, - "watchdog-timeout": { - "type": "string", - "pattern": "^[0-9]+(ns|us|ms|s|m)*$", - "validation-failure": "{.instance!r} is not a valid timeout value.", - "description": "Service watchdog timeout - ns | us | ms | s | m" - }, - "reload-command": { - "type": "string", - "description": "Command to use to ask the service to reload its configuration." - }, - "restart-delay": { - "type": "string", - "pattern": "^[0-9]+(ns|us|ms|s|m)*$", - "validation-failure": "{.instance!r} is not a valid delay value.", - "description": "Delay between service restarts - ns | us | ms | s | m. Defaults to unset. See the systemd.service manual on RestartSec for details." - }, - "timer": { - "type": "string", - "description": "The service is activated by a timer, app must be a daemon. (systemd.time calendar event string)" - }, - "daemon": { - "type": "string", - "description": "signals that the app is a service.", - "enum": ["simple", "forking", "oneshot", "notify", "dbus"] - }, - "after": { - "type": "array", - "description": "List of applications that are ordered to be started after the current one", - "minitems": 1, - "uniqueItems": true, - "items": { - "type": "string" - } + { + "type": "null" + } + ], + "default": null, + "description": "The build environment to use when building the snap", + "examples": ["core20", "core22", "core24", "devel"], + "title": "Build-Base" + }, + "platforms": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "null" + } + ] + }, + "type": "object" }, - "before": { - "type": "array", - "description": "List of applications that are ordered to be started before the current one", - "minitems": 1, - "uniqueItems": true, + { + "type": "null" + } + ], + "default": null, + "description": "The platforms where the snap can be built and where the resulting snap can run.", + "examples": ["{amd64: {build-on: [amd64], build-for: [amd64]}, arm64: {build-on: [amd64, arm64], build-for: [arm64]}}"], + "title": "Platforms" + }, + "contact": { + "anyOf": [ + { + "type": "string" + }, + { "items": { "type": "string" - } - }, - "refresh-mode": { - "type": "string", - "description": "controls if the app should be restarted at all", - "enum": ["endure", "restart", "ignore-running"] - }, - "stop-mode": { - "type": "string", - "description": "controls how the daemon should be stopped", - "enum": ["sigterm", "sigterm-all", "sighup", "sighup-all", "sigusr1", "sigusr1-all", "sigusr2", "sigusr2-all", "sigint", "sigint-all"] - }, - "restart-condition": { - "type": "string", - "enum": ["on-success", "on-failure", "on-abnormal", "on-abort", "on-watchdog", "always", "never"] + }, + "type": "array", + "uniqueItems": true }, - "install-mode": { - "type": "string", - "enum": ["enable", "disable"] + { + "type": "null" + } + ], + "default": null, + "description": "The snap author's contact links and email addresses.", + "examples": ["[contact@example.com, https://example.com/contact]"], + "title": "Contact" + }, + "issues": { + "anyOf": [ + { + "type": "string" }, - "slots": { - "type": "array", - "minitems": 1, - "uniqueItems": true, + { "items": { "type": "string" - } - }, - "plugs": { + }, "type": "array", - "minitems": 1, - "uniqueItems": true, + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links and email addresses for submitting issues, bugs, and feature requests.", + "examples": ["[issues@email.com, https://example.com/issues]"], + "title": "Issues" + }, + "source-code": { + "anyOf": [ + { + "type": "string" + }, + { "items": { "type": "string" - } - }, - "aliases": { + }, "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "pattern": "^[a-zA-Z0-9][-_.a-zA-Z0-9]*$", - "validation-failure": "{.instance!r} is not a valid alias. Aliases must be strings, begin with an ASCII alphanumeric character, and can only use ASCII alphanumeric characters and the following special characters: . _ -" - } + "uniqueItems": true }, - "environment": { - "description": "environment entries for the specific app.", - "$ref": "#/definitions/environment" + { + "type": "null" + } + ], + "default": null, + "description": "The links to the source code of the snap or the original project.", + "examples": ["[https://example.com/source-code]"], + "title": "Source-Code" + }, + "license": { + "anyOf": [ + { + "type": "string" }, - "adapter": { - "$comment": "Full should be the default, but it requires command-chain which isn't available in snapd until 2.36, which isn't yet stable. Until 2.36 is generally available, continue with legacy as the default.", - "type": "string", - "description": "What kind of wrapper to generate for the given command", - "enum": ["none", "legacy", "full"], - "default": "legacy" + { + "type": "null" + } + ], + "default": null, + "description": "The project's license as an SPDX expression", + "examples": ["GPL-3.0+", "Apache-2.0"], + "title": "License" + }, + "adopt-info": { + "anyOf": [ + { + "type": "string" }, - "command-chain": { - "type": "array", + { + "type": "null" + } + ], + "default": null, + "description": "Selects a part to inherit metadata from and reuse for the snap's metadata.\n\nRequired if one of ``version``, ``summary``, or ``description`` isn't set.", + "examples": ["foo-part"], + "title": "Adopt-Info" + }, + "parts": { + "additionalProperties": { + "additionalProperties": true, + "type": "object" + }, + "description": "The self-contained software pieces needed to create the final artifact.", + "examples": ["{cloud-init: {plugin: python, source-type: git, source: https://git.launchpad.net/cloud-init}}"], + "title": "Parts", + "type": "object" + }, + "package-repositories": { + "anyOf": [ + { "items": { - "type": "string", - "pattern": "^[A-Za-z0-9/._#:$-]*$", - "validation-failure": "{.instance!r} is not a valid command-chain entry. Command chain entries must be strings, and can only use ASCII alphanumeric characters and the following special characters: / . _ # : $ -" - } - }, - "sockets": { - "type": "object", - "additionalProperties": false, - "validation-failure": "{!r} is not a valid socket name. Socket names consist of lower-case alphanumeric characters and hyphens.", - "patternProperties": { - "^[a-z][a-z0-9_-]*$": { - "type": "object", - "required": ["listen-stream"], - "description": "Sockets for automatic service activation", - "additionalProperties": false, - "properties": { - "listen-stream": { - "anyOf": [ - { - "type": "integer", - "usage": "port number, an integer between 1 and 65535", - "minimum": 1, - "maximum": 65535 - }, - { - "type": "string", - "usage": "socket path, a string" - } - ] - }, - "socket-mode": { - "type": "integer" - } - } - } - } + "additionalProperties": true, + "type": "object" + }, + "type": "array" }, - "passthrough": { - "type": "object", - "description": "properties to be passed into snap.yaml as-is" + { + "type": "null" + } + ], + "default": null, + "description": "The package repositories to use for build and stage packages.", + "examples": ["[{type: apt, components: [main], suites: [xenial], key-id: 78E1918602959B9C59103100F1831DDAFC42E99D, url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu}]"], + "title": "Package-Repositories" + }, + "compression": { + "default": "xz", + "description": "Specifies the algorithm that compresses the snap.", + "enum": ["lzo", "xz"], + "examples": ["xz", "lzo"], + "title": "Compression", + "type": "string" + }, + "donation": { + "anyOf": [ + { + "type": "string" }, - "extensions": { - "type": "array", - "minitems": 1, - "uniqueItems": true, + { "items": { - "enum": ["env-injector", "flutter-stable", "flutter-beta", "flutter-dev", "flutter-master", "gnome", "gnome-3-28", "gnome-3-34", "gnome-3-38", "kde-neon", "kde-neon-6", "ros1-noetic", "ros1-noetic-desktop", "ros1-noetic-perception", "ros1-noetic-robot", "ros1-noetic-ros-base", "ros1-noetic-ros-core", "ros2-foxy", "ros2-foxy-ros-base", "ros2-foxy-ros-core", "ros2-foxy-desktop", "ros2-humble", "ros2-humble-ros-base", "ros2-humble-ros-core", "ros2-humble-desktop"] - } - } - } - } - } - }, - "hooks": { - "type": "object", - "additionalProperties": false, - "validation-failure": "{!r} is not a valid hook name. Hook names consist of lower-case alphanumeric characters and hyphens. They cannot start or end with a hyphen.", - "patternProperties": { - "^[a-z](?:-?[a-z0-9])*$": { - "type": "object", - "additionalProperties": false, - "properties": { - "command-chain": { + "type": "string" + }, "type": "array", - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9/._#:$-]*$", - "validation-failure": "{.instance!r} is not a valid command-chain entry. Command chain entries must be strings, and can only use ASCII alphanumeric characters and the following special characters: / . _ # : $ -" - } + "uniqueItems": true }, - "environment": { - "description": "environment entries for this hook", - "$ref": "#/definitions/environment" + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "type": "string" }, - "plugs": { - "type": "array", - "minitems": 1, - "uniqueItems": true, + { "items": { "type": "string" - } - }, - "passthrough": { - "type": "object", - "description": "properties to be passed into snap.yaml as-is" - } - } - } - } - }, - "parts": { - "type": "object", - "minProperties": 1, - "additionalProperties": false, - "validation-failure": "{!r} is not a valid part name. Part names consist of lower-case alphanumeric characters, hyphens and plus signs. As a special case, 'plugins' is also not a valid part name.", - "patternProperties": { - "^(?!plugins$)[a-z0-9][a-z0-9+-]*$": { - "type": ["object", "null"], - "minProperties": 1, - "required": ["plugin"], - "properties": { - "plugin": { - "type": "string", - "description": "plugin name" - }, - "source": { - "$ref": "#/definitions/grammar-string" - }, - "source-checksum": { - "type": "string", - "default": "" - }, - "source-branch": { - "type": "string", - "default": "" - }, - "source-commit": { - "type": "string", - "default": "" - }, - "source-depth": { - "type": "integer", - "default": 0 - }, - "source-submodules": { + }, "type": "array", - "minItems": 0, - "uniqueItems": true, - "items": { - "type": "string", - "description": "submodules to fetch, by pathname in source tree" - } - }, - "source-subdir": { - "type": "string", - "default": "" + "uniqueItems": true }, - "source-tag": { - "type": "string", - "default": "" + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "default": null, + "description": "The snap's type.", + "enum": ["app", "gadget", "kernel", "snapd", null], + "examples": ["kernel"], + "title": "Type" + }, + "icon": { + "anyOf": [ + { + "type": "string" }, - "source-type": { - "type": "string", - "default": "", - "enum": ["bzr", "git", "hg", "mercurial", "subversion", "svn", "tar", "zip", "deb", "rpm", "7z", "local"] + { + "type": "null" + } + ], + "default": null, + "description": "The path to the snap's icon.", + "examples": ["snap/gui/icon.svg"], + "title": "Icon" + }, + "confinement": { + "description": "The amount of isolation the snap has from the host system.", + "enum": ["classic", "devmode", "strict"], + "examples": ["strict", "classic", "devmode"], + "title": "Confinement", + "type": "string" + }, + "layout": { + "anyOf": [ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "propertyNames": { + "enum": ["symlink", "bind", "bind-file", "type"] + }, + "type": "object" + }, + "type": "object" }, - "disable-parallel": { - "type": "boolean", - "default": false + { + "type": "null" + } + ], + "default": null, + "description": "The file layouts in the execution environment.", + "examples": ["{/var/lib/foo: {bind: $SNAP_DATA/var/lib/foo}}"], + "title": "Layout" + }, + "grade": { + "anyOf": [ + { + "enum": ["stable", "devel"], + "type": "string" }, - "after": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "type": "string" + { + "type": "null" + } + ], + "default": null, + "description": "The quality grade of the snap.", + "examples": ["stable", "devel"], + "title": "Grade" + }, + "assumes": { + "description": "The minimum version of snapd and its features that the snap requires from the host.", + "examples": ["[snapd2.66, common-data-dir]"], + "items": { + "type": "string" + }, + "title": "Assumes", + "type": "array", + "uniqueItems": true + }, + "hooks": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Hook" }, - "default": [] + "type": "object" }, - "stage-snaps": { - "$comment": "For some reason 'default' doesn't work if in the ref", - "$ref": "#/definitions/grammar-array", - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "Configures the snap's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" }, - "stage-packages": { - "$comment": "For some reason 'default' doesn't work if in the ref", - "$ref": "#/definitions/grammar-array", - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" + }, + "apps": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/App" + }, + "type": "object" }, - "build-snaps": { - "$comment": "For some reason 'default' doesn't work if in the ref", - "$ref": "#/definitions/grammar-array", - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "The map of app names representing entry points to run for the snap.", + "examples": ["{app-1: {command: bin/app-1}}"], + "title": "Apps" + }, + "plugs": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/ContentPlug" + }, + {} + ] + }, + "type": "object" }, - "build-packages": { - "$comment": "For some reason 'default' doesn't work if in the ref", - "$ref": "#/definitions/grammar-array", - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's plugs.", + "examples": ["{dot-gitconfig: {interface: personal-files, read: [$HOME/.gitconfig]}}"], + "title": "Plugs" + }, + "slots": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" }, - "build-environment": { - "$ref": "#/definitions/build-environment-grammar", - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "Declares the snap's slots.", + "examples": ["{slot-1: {interface: content, content: my-binaries, source: {read: [$SNAP/bin]}}}"], + "title": "Slots" + }, + "lint": { + "anyOf": [ + { + "$ref": "#/$defs/Lint" }, - "build-attributes": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "type": "string", - "enum": ["core22-step-dependencies", "enable-patchelf", "no-patchelf", "no-install", "debug", "keep-execstack"] - }, - "default": [] + { + "type": "null" + } + ], + "default": null, + "description": "The linter configuration settings.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"] + }, + "epoch": { + "anyOf": [ + { + "type": "string" }, - "organize": { - "type": "object", - "default": {}, - "additionalProperties": { - "type": "string", - "minLength": 1 - } + { + "type": "null" + } + ], + "default": null, + "description": "The epoch associated with this version of the snap.", + "examples": ["1", "2*"], + "title": "Epoch" + }, + "system-usernames": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" }, - "filesets": { - "type": "object", - "default": {}, + { + "type": "null" + } + ], + "default": null, + "description": "The system usernames that the snap can use to run daemons and services.", + "examples": ["{snap-daemon: shared}"], + "title": "System-Usernames" + }, + "environment": { + "anyOf": [ + { "additionalProperties": { - "type": "array", - "minitems": 1 - } - }, - "stage": { - "type": "array", - "minitems": 1, - "uniqueItems": true, - "items": { - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "default": ["*"] + "type": "object" }, - "prime": { - "type": "array", - "minitems": 1, - "uniqueItems": true, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's runtime environment variables.", + "examples": ["{PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "build-packages": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The list of packages to install when building a snap.", + "examples": ["[libssl-dev, libyaml-dev]"], + "title": "Build-Packages" + }, + "build-snaps": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "default": null, + "description": "The snaps to install when building a snap.", + "examples": ["[go/1.22/stable, yq]"], + "title": "Build-Snaps" + }, + "ua-services": { + "anyOf": [ + { "items": { "type": "string" }, - "default": ["*"] - }, - "override-pull": { - "type": "string", - "default": "snapcraftctl pull" + "type": "array", + "uniqueItems": true }, - "override-build": { - "type": "string", - "default": "snapcraftctl build" + { + "type": "null" + } + ], + "default": null, + "description": "The Ubuntu Pro (formerly Ubuntu Advantage) services to enable when building the snap.", + "examples": ["[esm-apps]"], + "title": "Ua-Services" + }, + "provenance": { + "anyOf": [ + { + "type": "string" }, - "override-stage": { - "type": "string", - "default": "snapcraftctl stage" + { + "type": "null" + } + ], + "default": null, + "description": "The primary-key header for snaps signed by third parties.", + "examples": ["test-provenance"], + "title": "Provenance" + }, + "components": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/Component" + }, + "propertyNames": { + "maxLength": 40 + }, + "type": "object" }, - "override-prime": { - "type": "string", - "default": "snapcraftctl prime" + { + "type": "null" + } + ], + "default": null, + "description": "Declares the components to build in conjunction with the snap.", + "examples": ["{foo-component: {type: standard}}"], + "title": "Components" + } + }, + "required": ["name", "base", "parts", "confinement"], + "title": "Core24Project", + "type": "object" + }, + "Hook": { + "additionalProperties": false, + "description": "Snapcraft project hook definition.", + "properties": { + "command-chain": { + "description": "The ordered list of commands to run before the hook runs.", + "examples": ["[bin/alsa-launch, bin/desktop-launch]"], + "items": { + "type": "string" + }, + "title": "Command-Chain", + "type": "array" + }, + "environment": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" }, - "parse-info": { - "type": "array", - "minitems": 1, - "uniqueItems": true, + { + "type": "null" + } + ], + "default": null, + "description": "The environment variables for the hook.", + "examples": ["{PYTHONPATH: /custom/path/:$PYTHON_PATH, DISABLE_WAYLAND: 1}"], + "title": "Environment" + }, + "plugs": { + "anyOf": [ + { "items": { "type": "string" }, - "default": [] + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "default": null, + "description": "The list of interfaces that the hook can connect to.", + "examples": ["[home, removable-media]"], + "title": "Plugs" + }, + "passthrough": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" } - } + ], + "default": null, + "description": "The attributes to pass to the snap's metadata file for the hook.", + "examples": ["{daemon: complex}"], + "title": "Passthrough" } - } - }, - "plugs": { + }, + "title": "Hook", "type": "object" }, - "slots": { + "Lint": { + "additionalProperties": false, + "description": "Linter configuration.\n\n:ivar ignore: A list describing which files should have issues ignored for given linters.\n The items in the list can be either:\n - a string, which must be the name of one of the known linters (see below). All issues\n from this linter will be ignored.\n - a dict containing exactly one key, which must be the name of one of the known linters.\n The value is then a list of strings corresponding to the filenames/patterns that\n should be ignored for that linter.\n The \"known\" linter names are the keys in :ref:`LINTERS`", + "properties": { + "ignore": { + "description": "Linters or files to skip when linting.", + "examples": ["{ignore: [classic, library: [usr/lib/**/libfoo.so*]]}"], + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + } + ] + }, + "title": "Ignore", + "type": "array" + } + }, + "required": ["ignore"], + "title": "Lint", "type": "object" }, - "ua-services": { - "type": "array", - "description": "UA services to enable.", - "minItems": 1, - "uniqueItems": true, - "items": [ - { - "type": "string" - } - ] - } - }, - "allOf": [ - { - "anyOf": [ - { - "usage": "type: (without a base)", - "properties": { - "type": { - "enum": ["base", "kernel", "snapd"] - } - }, - "allOf": [ + "Platform": { + "additionalProperties": false, + "description": "Snapcraft project platform definition.", + "properties": { + "build-on": { + "anyOf": [ { - "required": ["type"] + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + ], + "minLength": 1 }, { - "not": { - "required": ["base"] - } + "type": "null" } - ] + ], + "description": "The architectures on which the snap can be built.", + "examples": ["[amd64, riscv64]"], + "title": "Build-On" }, - { - "usage": "base: and type: ", - "properties": { - "type": { - "enum": ["app", "gadget"] + "build-for": { + "anyOf": [ + { + "items": {}, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "null" } - }, - "allOf": [ + ], + "default": null, + "description": "The single element list containing the architecture the snap is built for.", + "examples": ["[amd64]", "[riscv64]"], + "title": "Build-For" + } + }, + "required": ["build-on"], + "title": "Platform", + "type": "object" + }, + "Socket": { + "additionalProperties": false, + "description": "Snapcraft app socket definition.", + "properties": { + "listen-stream": { + "anyOf": [ + { + "type": "integer" + }, { - "required": ["base"] + "type": "string" } - ] + ], + "description": "The socket's abstract name or socket path.", + "examples": ["$SNAP_COMMON/lxd/unix.socket", "80"], + "title": "Listen-Stream" + }, + "socket-mode": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The mode or permissions of the socket in octal.", + "examples": ["0660"], + "title": "Socket-Mode" + } + }, + "required": ["listen-stream"], + "title": "Socket", + "type": "object" + } + }, + "oneOf": [ + { + "oneOf": [ + { + "$ref": "#/$defs/Core22Project" }, { - "usage": "base: bare (with a build-base)", - "properties": { - "base": { - "enum": ["bare"] + "$ref": "#/$defs/Core24Project" + }, + { + "oneOf": [ + { + "$ref": "#/$defs/BareCore22Project" + }, + { + "$ref": "#/$defs/BareCore24Project" } - }, - "required": ["build-base"] + ] } ] }, { - "anyOf": [ + "oneOf": [ + { + "$ref": "#/$defs/BaseDevelProject" + }, { - "required": ["summary", "description", "version"] + "$ref": "#/$defs/BaseCore22Project" }, { - "required": ["adopt-info"] + "$ref": "#/$defs/BaseCore24Project" } ] } - ], - "required": ["name", "parts"], - - "dependencies": { - "license-agreement": ["license"], - "license-version": ["license"] - }, - "additionalProperties": false + ] }