{ "$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" }, "autostart": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "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" } ], "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" } ], "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" } ], "default": null, "description": "The desktop file used to start an app.", "examples": ["my-app.desktop"], "title": "Desktop" }, "completer": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "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" } ], "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" } ], "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" } ], "default": null, "description": "The maximum amount of time to wait for the service to start.", "examples": ["10s", "2m"], "title": "Start-Timeout" }, "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" }, "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" }, "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", "uniqueItems": true }, "before": { "description": "The ordered list of apps that the service runs before it launches.", "examples": ["[baz-app, quz-app]"], "items": { "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" }, "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" }, "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" }, "success-exit-status": { "anyOf": [ { "items": { "maximum": 255, "minimum": 1, "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The list of additional successful exit statuses that the service can return.", "examples": ["[42, 250]"], "title": "Success-Exit-Status" }, "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" }, "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" }, "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" }, "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": ["command"], "title": "App", "type": "object" }, "Architecture": { "additionalProperties": false, "description": "Snapcraft project architecture definition.", "properties": { "build-on": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "uniqueItems": true } ], "description": "The architectures to build the snap on.", "examples": ["arm64", "[amd64, riscv64]"], "title": "Build-On" }, "build-for": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "uniqueItems": true }, { "type": "null" } ], "default": null, "description": "The target architecture for the build.", "examples": ["amd64", "[riscv64]"], "title": "Build-For" } }, "required": ["build-on"], "title": "Architecture", "type": "object" }, "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. Maximum length 78 characters.", "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, "enum": ["app", "gadget", 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 architectures that the snap builds and runs on.", "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 individual programs and services that the snap runs.", "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 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. Maximum length 78 characters.", "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, "enum": ["app", "gadget", 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" }, "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 individual programs and services that the snap runs.", "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 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" }, "BareCore26Project": { "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. Maximum length 78 characters.", "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": "devel", "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, "enum": ["app", "gadget", 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": { "const": "devel", "title": "Grade", "type": "string" }, "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 individual programs and services that the snap runs.", "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 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", "grade"], "title": "BareCore26Project", "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\nmetadata.\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. Maximum length 78 characters.", "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": ["core22", "core24", "core26", "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, "enum": ["app", "gadget", 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 architectures that the snap builds and runs on.", "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 individual programs and services that the snap runs.", "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 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", "parts", "confinement"], "title": "Core22Project", "type": "object" }, "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" }, "summary": { "anyOf": [ { "description": "A short description of the project. Maximum length 78 characters.", "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": "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": ["core22", "core24", "core26", "devel"], "title": "Build-Base" }, "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, "enum": ["app", "gadget", 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" }, "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 individual programs and services that the snap runs.", "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 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", "parts", "confinement"], "title": "Core24Project", "type": "object" }, "Core26Project": { "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. Maximum length 78 characters.", "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": { "enum": ["core26", "devel"], "title": "Base", "type": "string" }, "build-base": { "const": "devel", "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, "enum": ["app", "gadget", 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": { "const": "devel", "title": "Grade", "type": "string" }, "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 individual programs and services that the snap runs.", "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 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", "grade"], "title": "Core26Project", "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" }, { "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": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "uniqueItems": true } ], "minLength": 1 }, { "type": "null" } ], "description": "The architectures to build the snap on.", "examples": ["arm64", "[amd64, riscv64]"], "title": "Build-On" }, "build-for": { "anyOf": [ { "items": {}, "maxItems": 1, "minItems": 1, "type": "array" }, { "type": "string" }, { "type": "null" } ], "default": null, "description": "The target architecture for the build.", "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, "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. Maximum length 78 characters.", "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", "description": "The baseline system that the snap is built in.", "title": "Build-Base", "type": "string" }, "platforms": { "anyOf": [ { "additionalProperties": { "$ref": "#/$defs/Platform" }, "type": "object" }, { "type": "null" } ], "default": null, "description": "The architectures that the snap builds and runs on.", "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": { "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 architectures that the snap builds and runs on.", "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 individual programs and services that the snap runs.", "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 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. Maximum length 78 characters.", "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 architectures that the snap builds and runs on.", "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": { "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 architectures that the snap builds and runs on.", "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 individual programs and services that the snap runs.", "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 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": "_BaselessProject", "type": "object" } }, "oneOf": [ { "discriminator": { "mapping": { "bare": { "discriminator": { "mapping": { "core22": "#/$defs/BareCore22Project", "core24": "#/$defs/BareCore24Project", "devel": "#/$defs/BareCore26Project" }, "propertyName": "build-base" }, "oneOf": [ { "$ref": "#/$defs/BareCore22Project" }, { "$ref": "#/$defs/BareCore24Project" }, { "$ref": "#/$defs/BareCore26Project" } ] }, "core22": "#/$defs/Core22Project", "core24": "#/$defs/Core24Project", "core26": "#/$defs/Core26Project", "devel": "#/$defs/Core26Project" }, "propertyName": "base" }, "oneOf": [ { "$ref": "#/$defs/Core22Project" }, { "$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/_BaselessCore22Project" }, { "$ref": "#/$defs/_BaselessProject" } ] } ] }