From 3f5f1b2a9160694fdf2a34ae635af3d16f5796bb Mon Sep 17 00:00:00 2001 From: sirosen <1300022+sirosen@users.noreply.github.com> Date: Sun, 23 Nov 2025 04:37:05 +0000 Subject: [PATCH] [vendor-schemas] automated update --- CHANGELOG.rst | 3 +- .../builtin_schemas/vendor/buildkite.json | 63 +- .../builtin_schemas/vendor/gitlab-ci.json | 1 + .../builtin_schemas/vendor/mergify.json | 4 +- .../builtin_schemas/vendor/renovate.json | 2 +- .../vendor/sha256/buildkite.sha256 | 2 +- .../vendor/sha256/gitlab-ci.sha256 | 2 +- .../vendor/sha256/mergify.sha256 | 2 +- .../vendor/sha256/renovate.sha256 | 2 +- .../vendor/sha256/snapcraft.sha256 | 2 +- .../builtin_schemas/vendor/snapcraft.json | 1925 +++++++++++------ 11 files changed, 1352 insertions(+), 656 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 99fab454f..b72e65f23 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,7 +10,8 @@ Unreleased .. vendor-insert-here -- Update vendored schemas: gitlab-ci, mergify, renovate (2025-11-16) +- Update vendored schemas: buildkite, gitlab-ci, mergify, renovate, snapcraft + (2025-11-23) 0.35.0 ------ diff --git a/src/check_jsonschema/builtin_schemas/vendor/buildkite.json b/src/check_jsonschema/builtin_schemas/vendor/buildkite.json index b7050989b..0034a22c7 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/buildkite.json +++ b/src/check_jsonschema/builtin_schemas/vendor/buildkite.json @@ -492,10 +492,59 @@ ] } }, - "if_changed": { - "type": "string", - "description": "Agent-applied attribute: A glob pattern that omits the step from a build if it does not match any files changed in the build.", - "examples": ["**.go", "go.mod", "go.sum", "fixtures/**"] + "ifChanged": { + "description": "Agent-applied attribute: A glob pattern that omits the step from a build if it does not match any files changed in the build. Can be a single pattern, list of patterns, or an object with include/exclude attributes.", + "oneOf": [ + { + "type": "string", + "description": "A single glob pattern", + "examples": ["**.go", "go.{mod,sum}", "{app/**,spec/**}"] + }, + { + "type": "array", + "description": "A list of glob patterns", + "items": { + "type": "string" + }, + "examples": [["**.go", "go.{mod,sum}"], ["app/**", "spec/**"]] + }, + { + "type": "object", + "description": "An object with include and optional exclude patterns", + "properties": { + "include": { + "description": "Pattern or list of patterns to include", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "exclude": { + "description": "Pattern or list of patterns to exclude", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + }, + "required": ["include"], + "additionalProperties": false + } + ] }, "matrixElement": { "oneOf": [ @@ -1002,7 +1051,7 @@ "$ref": "#/definitions/if" }, "if_changed": { - "$ref": "#/definitions/if_changed" + "$ref": "#/definitions/ifChanged" }, "key": { "$ref": "#/definitions/key" @@ -1230,7 +1279,7 @@ "$ref": "#/definitions/if" }, "if_changed": { - "$ref": "#/definitions/if_changed" + "$ref": "#/definitions/ifChanged" }, "key": { "$ref": "#/definitions/key" @@ -1312,7 +1361,7 @@ "$ref": "#/definitions/if" }, "if_changed": { - "$ref": "#/definitions/if_changed" + "$ref": "#/definitions/ifChanged" }, "key": { "$ref": "#/definitions/key" diff --git a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json index 888c3971e..8a933a1a4 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json @@ -558,6 +558,7 @@ "jobInputs": { "type": "object", "markdownDescription": "Define input parameters for a job. Job inputs must always include a `default` value. [Learn More](https://docs.gitlab.com/ci/yaml/#inputs).", + "maxProperties": 50, "patternProperties": { ".*": { "allOf": [ diff --git a/src/check_jsonschema/builtin_schemas/vendor/mergify.json b/src/check_jsonschema/builtin_schemas/vendor/mergify.json index 84f108ba6..1f1be4263 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/mergify.json +++ b/src/check_jsonschema/builtin_schemas/vendor/mergify.json @@ -1958,7 +1958,7 @@ "type": "array" }, "review-threads-resolved": { - "description": "The list of bodies associated to review threads that are marked as resolved by GitHub.", + "description": "The list of ids associated to review threads that are marked as resolved by GitHub.", "items": { "type": "string" }, @@ -1966,7 +1966,7 @@ "type": "array" }, "review-threads-unresolved": { - "description": "The list of bodies associated to review threads that are NOT marked as resolved by GitHub.", + "description": "The list of ids associated to review threads that are NOT marked as resolved by GitHub.", "items": { "type": "string" }, diff --git a/src/check_jsonschema/builtin_schemas/vendor/renovate.json b/src/check_jsonschema/builtin_schemas/vendor/renovate.json index cbeb74119..6e93856e8 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/renovate.json +++ b/src/check_jsonschema/builtin_schemas/vendor/renovate.json @@ -2715,7 +2715,7 @@ "dockerSidecarImage": { "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.24.3" + "default": "ghcr.io/containerbase/sidecar:13.25.2" }, "dockerUser": { "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`.", diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 index bf5dcbf7e..819fc43c4 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 @@ -1 +1 @@ -3d3cb7e2d321d2fa24c5edc6503422746151ae0095f8b19d4dad44c38a849d57 \ No newline at end of file +c0340a344ebb83f72e4969e09818d945055abe7ac0bb0c49226a60e7d33f84f6 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 index 1c5aacb6b..5adec845c 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 @@ -1 +1 @@ -68fe6fb2b2db887afc71ed369ee0b4099546e2e813128871beac87983b9cbc02 \ No newline at end of file +835ac304f884b8545cd629531567b81fb6d50fc5f563398447a469451997ceed \ 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 afb05674f..96aaf2d9f 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 @@ -1 +1 @@ -629db442d6ea99534b34d938e6fc23bf973013a6a77f98b60ba94c9576d6fb4a \ No newline at end of file +1d9189227b87885b182040222adcf5765e5801b1cd14fa3c749a1f46114f8a9b \ 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 c681a642f..476de6477 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 @@ -1 +1 @@ -3a20dc69e8a3fd32a08e2ba6231040bcfa27e1dbdbf6dc220e76cbcc56b9d2a1 \ No newline at end of file +22c876085fb6d9f0f7063809dacd085ef50321c637c2725e2aa52a0a9236c668 \ 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 254a4a910..f5dcdaea7 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 @@ -1 +1 @@ -3a8dc27f8c5289432866f579d9a177992edc6117e44114a290fea2b6078f8ca7 \ No newline at end of file +26019a600dac6318c677175a080956ca6347fe45a70815690fdfc924e2e0b2aa \ 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 358cbfdd1..a51bcd5c9 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json +++ b/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json @@ -588,9 +588,6 @@ }, "contact": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -598,6 +595,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -609,9 +609,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -619,6 +616,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -630,9 +630,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -640,6 +637,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -715,9 +715,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -725,6 +722,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -736,9 +736,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -746,6 +743,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -757,8 +757,7 @@ }, "type": { "default": null, - "description": "The snap's type.", - "enum": ["app", "gadget", "kernel", "snapd", null], + "enum": ["app", "gadget", null], "title": "Type" }, "icon": { @@ -1199,9 +1198,6 @@ }, "contact": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1209,6 +1205,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1220,9 +1219,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1230,6 +1226,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1241,9 +1240,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1251,6 +1247,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1326,9 +1325,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1336,6 +1332,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1347,9 +1346,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1357,6 +1353,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1368,9 +1367,7 @@ }, "type": { "default": null, - "description": "The snap's type.", - "enum": ["app", "gadget", "kernel", "snapd", null], - "examples": ["kernel"], + "enum": ["app", "gadget", null], "title": "Type" }, "icon": { @@ -1677,7 +1674,7 @@ "title": "BareCore24Project", "type": "object" }, - "BaseCore22Project": { + "BareCore26Project": { "additionalProperties": false, "properties": { "name": { @@ -1751,16 +1748,42 @@ "description": "The full description of the project.", "title": "Description" }, + "base": { + "const": "bare", + "title": "Base", + "type": "string" + }, "build-base": { - "const": "core22", + "const": "devel", "title": "Build-Base", "type": "string" }, - "contact": { + "platforms": { "anyOf": [ { - "type": "string" + "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": [ { "items": { "type": "string" @@ -1768,6 +1791,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1779,9 +1805,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1789,6 +1812,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1800,9 +1826,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1810,6 +1833,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1885,9 +1911,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1895,6 +1918,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1906,9 +1932,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -1916,6 +1939,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -1926,9 +1952,9 @@ "title": "Website" }, "type": { - "const": "base", - "title": "Type", - "type": "string" + "default": null, + "enum": ["app", "gadget", null], + "title": "Type" }, "icon": { "anyOf": [ @@ -1977,43 +2003,9 @@ "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" + "const": "devel", + "title": "Grade", + "type": "string" }, "assumes": { "description": "The minimum version of snapd and its features that the snap requires from the host.", @@ -2254,28 +2246,41 @@ "title": "Components" } }, - "required": ["name", "build-base", "parts", "type", "confinement"], - "title": "BaseCore22Project", + "required": ["name", "base", "build-base", "parts", "confinement", "grade"], + "title": "BareCore26Project", "type": "object" }, - "BaseCore24Project": { + "Component": { "additionalProperties": false, + "description": "Snapcraft component definition.", "properties": { - "name": { - "description": "The identifying name of the snap.", - "examples": ["my-app", "powershell", "jupyterlab-desktop"], - "maxLength": 40, - "title": "Name", + "summary": { + "description": "The summary of the component.", + "examples": ["Language translations for the app"], + "maxLength": 78, + "title": "Summary", "type": "string" }, - "title": { + "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" + }, + "type": { + "description": "The type of the component.", + "enum": ["test", "kernel-modules", "standard"], + "examples": ["standard"], + "title": "Type", + "type": "string" + }, + "version": { "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", + "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" }, { @@ -2283,33 +2288,30 @@ } ], "default": null, - "title": "Title" + "description": "The version of the component.", + "examples": ["1.2.3"], + "title": "Version" }, - "version": { + "hooks": { "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" + "additionalProperties": { + "$ref": "#/$defs/Hook" + }, + "type": "object" }, { "type": "null" } ], "default": null, - "description": "The version of the snap.", - "examples": ["1.2.3"], - "title": "Version" + "description": "The configuration for the component's hooks.", + "examples": ["{configure: {plugs: [home]}}"], + "title": "Hooks" }, - "summary": { + "adopt-info": { "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" }, { @@ -2317,9 +2319,20 @@ } ], "default": null, - "title": "Summary" - }, - "description": { + "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" @@ -2329,43 +2342,136 @@ } ], "default": null, - "description": "The full description of the project.", - "title": "Description" + "description": "The name for the content type.", + "examples": ["themes"], + "title": "Content" }, - "build-base": { - "const": "core24", - "title": "Build-Base", + "interface": { + "description": "The name of the interface.", + "examples": ["network"], + "title": "Interface", "type": "string" }, - "platforms": { + "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": [ { - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/Platform" - }, - { - "type": "null" - } - ] - }, - "type": "object" + "type": "string" }, { "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" + "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" }, - "contact": { + "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 baseline system that the snap is built in.", + "examples": ["core20", "core22", "core24", "devel"], + "title": "Build-Base" + }, + "contact": { + "anyOf": [ { "items": { "type": "string" @@ -2373,6 +2479,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2384,9 +2493,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2394,6 +2500,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2405,9 +2514,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2415,6 +2521,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2490,9 +2599,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2500,6 +2606,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2511,9 +2620,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2521,6 +2627,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2531,9 +2640,9 @@ "title": "Website" }, "type": { - "const": "base", - "title": "Type", - "type": "string" + "default": null, + "enum": ["app", "gadget", null], + "title": "Type" }, "icon": { "anyOf": [ @@ -2596,6 +2705,30 @@ "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]"], @@ -2835,11 +2968,11 @@ "title": "Components" } }, - "required": ["name", "build-base", "parts", "type", "confinement"], - "title": "BaseCore24Project", + "required": ["name", "base", "parts", "confinement"], + "title": "Core22Project", "type": "object" }, - "BaseDevelProject": { + "Core24Project": { "additionalProperties": false, "properties": { "name": { @@ -2913,16 +3046,37 @@ "description": "The full description of the project.", "title": "Description" }, - "build-base": { - "const": "devel", - "title": "Build-Base", + "base": { + "const": "core24", + "title": "Base", "type": "string" }, + "build-base": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The baseline system that the snap is built in.", + "examples": ["core20", "core22", "core24", "devel"], + "title": "Build-Base" + }, "platforms": { "anyOf": [ { "additionalProperties": { - "$ref": "#/$defs/Platform" + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "null" + } + ] }, "type": "object" }, @@ -2937,9 +3091,6 @@ }, "contact": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2947,6 +3098,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2958,9 +3112,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2968,6 +3119,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -2979,9 +3133,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -2989,6 +3140,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3064,9 +3218,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3074,6 +3225,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3085,9 +3239,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3095,6 +3246,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3105,9 +3259,9 @@ "title": "Website" }, "type": { - "const": "base", - "title": "Type", - "type": "string" + "default": null, + "enum": ["app", "gadget", null], + "title": "Type" }, "icon": { "anyOf": [ @@ -3156,33 +3310,19 @@ "title": "Layout" }, "grade": { - "const": "devel", - "title": "Grade", - "type": "string" - }, - "architectures": { "anyOf": [ { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/Architecture" - } - ] - }, - "type": "array" + "enum": ["stable", "devel"], + "type": "string" }, { "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" + "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.", @@ -3423,138 +3563,11 @@ "title": "Components" } }, - "required": ["name", "build-base", "parts", "type", "confinement", "grade"], - "title": "BaseDevelProject", - "type": "object" - }, - "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" - }, - "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" - }, - "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", + "required": ["name", "base", "parts", "confinement"], + "title": "Core24Project", "type": "object" }, - "Core22Project": { + "Core26Project": { "additionalProperties": false, "properties": { "name": { @@ -3629,29 +3642,41 @@ "title": "Description" }, "base": { - "const": "core22", + "enum": ["core26", "devel"], "title": "Base", "type": "string" }, "build-base": { + "const": "devel", + "title": "Build-Base", + "type": "string" + }, + "platforms": { "anyOf": [ { - "type": "string" + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "null" + } + ] + }, + "type": "object" }, { "type": "null" } ], "default": null, - "description": "The build environment to use when building the snap", - "examples": ["core20", "core22", "core24", "devel"], - "title": "Build-Base" + "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" @@ -3659,6 +3684,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3670,9 +3698,6 @@ }, "issues": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3680,6 +3705,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3691,9 +3719,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3701,6 +3726,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3776,9 +3804,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3786,6 +3811,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3797,9 +3825,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -3807,6 +3832,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -3818,8 +3846,7 @@ }, "type": { "default": null, - "description": "The snap's type.", - "enum": ["app", "gadget", "kernel", "snapd", null], + "enum": ["app", "gadget", null], "title": "Type" }, "icon": { @@ -3869,43 +3896,9 @@ "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" + "const": "devel", + "title": "Grade", + "type": "string" }, "assumes": { "description": "The minimum version of snapd and its features that the snap requires from the host.", @@ -4146,24 +4139,219 @@ "title": "Components" } }, - "required": ["name", "base", "parts", "confinement"], - "title": "Core22Project", + "required": ["name", "base", "build-base", "parts", "confinement", "grade"], + "title": "Core26Project", "type": "object" }, - "Core24Project": { + "Hook": { "additionalProperties": false, + "description": "Snapcraft project hook definition.", "properties": { - "name": { - "description": "The identifying name of the snap.", - "examples": ["my-app", "powershell", "jupyterlab-desktop"], - "maxLength": 40, - "title": "Name", - "type": "string" + "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" }, - "title": { + "environment": { "anyOf": [ { - "description": "A human-readable title.", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "object" + }, + { + "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" + }, + "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" + } + }, + "title": "Hook", + "type": "object" + }, + "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" + }, + "Platform": { + "additionalProperties": false, + "description": "Snapcraft project platform definition.", + "properties": { + "build-on": { + "anyOf": [ + { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "string" + } + ], + "minLength": 1 + }, + { + "type": "null" + } + ], + "description": "The architectures on which the snap can be built.", + "examples": ["[amd64, riscv64]"], + "title": "Build-On" + }, + "build-for": { + "anyOf": [ + { + "items": {}, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "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" + }, + { + "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" + }, + "_BaselessCore22Project": { + "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, @@ -4224,37 +4412,17 @@ "description": "The full description of the project.", "title": "Description" }, - "base": { - "const": "core24", - "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" + "const": "core22", + "description": "The baseline system that the snap is built in.", + "title": "Build-Base", + "type": "string" }, "platforms": { "anyOf": [ { "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/Platform" - }, - { - "type": "null" - } - ] + "$ref": "#/$defs/Platform" }, "type": "object" }, @@ -4269,9 +4437,6 @@ }, "contact": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -4279,6 +4444,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -4290,9 +4458,606 @@ }, "issues": { "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "string" + }, + { + "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": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, { "type": "string" }, + { + "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": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The snap's donation links.", + "examples": ["[donate@example.com, https://example.com/donate]"], + "title": "Donation" + }, + "website": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The links to the original software's web pages.", + "examples": ["[https://example.com]"], + "title": "Website" + }, + "type": { + "enum": ["base", "kernel", "snapd"], + "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": "_BaselessCore22Project", + "type": "object" + }, + "_BaselessProject": { + "additionalProperties": false, + "description": "Project types that do not require a base.", + "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": { + "description": "The baseline system that the snap is built in.", + "enum": ["core24", "core26", "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": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "string" + }, + { + "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": [ { "items": { "type": "string" @@ -4300,6 +5065,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -4311,9 +5079,6 @@ }, "source-code": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -4321,6 +5086,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -4396,9 +5164,6 @@ }, "donation": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -4406,6 +5171,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -4417,9 +5185,6 @@ }, "website": { "anyOf": [ - { - "type": "string" - }, { "items": { "type": "string" @@ -4427,6 +5192,9 @@ "type": "array", "uniqueItems": true }, + { + "type": "string" + }, { "type": "null" } @@ -4437,11 +5205,9 @@ "title": "Website" }, "type": { - "default": null, - "description": "The snap's type.", - "enum": ["app", "gadget", "kernel", "snapd", null], - "examples": ["kernel"], - "title": "Type" + "enum": ["base", "kernel", "snapd"], + "title": "Type", + "type": "string" }, "icon": { "anyOf": [ @@ -4504,6 +5270,30 @@ "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]"], @@ -4743,208 +5533,43 @@ "title": "Components" } }, - "required": ["name", "base", "parts", "confinement"], - "title": "Core24Project", + "required": ["name", "build-base", "parts", "type", "confinement"], + "title": "_BaselessProject", "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" - } - ] + } + }, + "oneOf": [ + { + "discriminator": { + "mapping": { + "bare": { + "discriminator": { + "mapping": { + "core22": "#/$defs/BareCore22Project", + "core24": "#/$defs/BareCore24Project", + "devel": "#/$defs/BareCore26Project" }, - "type": "object" + "propertyName": "build-base" }, - { - "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" + "oneOf": [ + { + "$ref": "#/$defs/BareCore22Project" }, - "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" - } - }, - "title": "Hook", - "type": "object" - }, - "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" + "$ref": "#/$defs/BareCore24Project" }, { - "additionalProperties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "object" + "$ref": "#/$defs/BareCore26Project" } ] }, - "title": "Ignore", - "type": "array" - } - }, - "required": ["ignore"], - "title": "Lint", - "type": "object" - }, - "Platform": { - "additionalProperties": false, - "description": "Snapcraft project platform definition.", - "properties": { - "build-on": { - "anyOf": [ - { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - ], - "minLength": 1 - }, - { - "type": "null" - } - ], - "description": "The architectures on which the snap can be built.", - "examples": ["[amd64, riscv64]"], - "title": "Build-On" - }, - "build-for": { - "anyOf": [ - { - "items": {}, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - { - "type": "string" - }, - { - "type": "null" - } - ], - "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" - }, - { - "type": "string" - } - ], - "description": "The socket's abstract name or socket path.", - "examples": ["$SNAP_COMMON/lxd/unix.socket", "80"], - "title": "Listen-Stream" + "core22": "#/$defs/Core22Project", + "core24": "#/$defs/Core24Project", + "core26": "#/$defs/Core26Project", + "devel": "#/$defs/Core26Project" }, - "socket-mode": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The mode or permissions of the socket in octal.", - "examples": ["0660"], - "title": "Socket-Mode" - } + "propertyName": "base" }, - "required": ["listen-stream"], - "title": "Socket", - "type": "object" - } - }, - "oneOf": [ - { "oneOf": [ { "$ref": "#/$defs/Core22Project" @@ -4953,27 +5578,47 @@ "$ref": "#/$defs/Core24Project" }, { + "$ref": "#/$defs/Core26Project" + }, + { + "discriminator": { + "mapping": { + "core22": "#/$defs/BareCore22Project", + "core24": "#/$defs/BareCore24Project", + "devel": "#/$defs/BareCore26Project" + }, + "propertyName": "build-base" + }, "oneOf": [ { "$ref": "#/$defs/BareCore22Project" }, { "$ref": "#/$defs/BareCore24Project" + }, + { + "$ref": "#/$defs/BareCore26Project" } ] } ] }, { + "discriminator": { + "mapping": { + "core22": "#/$defs/_BaselessCore22Project", + "core24": "#/$defs/_BaselessProject", + "core26": "#/$defs/_BaselessProject", + "devel": "#/$defs/_BaselessProject" + }, + "propertyName": "build-base" + }, "oneOf": [ { - "$ref": "#/$defs/BaseDevelProject" - }, - { - "$ref": "#/$defs/BaseCore22Project" + "$ref": "#/$defs/_BaselessCore22Project" }, { - "$ref": "#/$defs/BaseCore24Project" + "$ref": "#/$defs/_BaselessProject" } ] }