diff --git a/doc/json-schema/os-list-schema.html b/doc/json-schema/os-list-schema.html new file mode 100644 index 0000000..b90165d --- /dev/null +++ b/doc/json-schema/os-list-schema.html @@ -0,0 +1,164 @@ + Imager oslist.json schema

Imager oslist.json schema

Type: object Default: {}

oslist.json format.

No Additional Properties
Example:

{
+    "imager": {
+        "latest_version": "1.6",
+        "url": "https://www.raspberrypi.org/software/",
+        "default_os": "Raspberry Pi OS (32-bit)",
+        "embedded_default_os": "Raspberry Pi OS (32-bit)",
+        "embedded_default_destination": "/dev/mmcblk0p1"
+    },
+    "os_list": [
+        {
+            "name": "Raspberry Pi OS (32-bit)",
+            "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)",
+            "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png",
+            "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip",
+            "extract_size": 4236247040,
+            "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3",
+            "image_download_size": 1306588543,
+            "release_date": "2022-01-28",
+            "init_format": "systemd"
+        },
+        {
+            "name": "Ubuntu Server 21.10 (RPi 3/4/400)",
+            "description": "64-bit server OS for arm64 architectures",
+            "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg",
+            "url": "http://cdimage.ubuntu.com/releases/impish/release/ubuntu-21.10-preinstalled-server-arm64+raspi.img.xz",
+            "extract_size": 4068480000,
+            "extract_sha256": "4cf06429e0367f0a59b890819d1792b0d816bc531fcb5bd092e441d8d6a942b9",
+            "image_download_size": 921117368,
+            "release_date": "2021-10-14",
+            "website": "https://ubuntu.com/raspberry-pi/server",
+            "init_format": "cloudinit"
+        },
+        {
+            "name": "Bootloader",
+            "description": "Restore the factory default settings and change boot priority",
+            "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png",
+            "subitems_url": "https://downloads.raspberrypi.org/eeprom_recovery.json",
+            "website": "https://www.raspberrypi.org/"
+        },
+        {
+            "name": "Raspberry Pi OS (other)",
+            "description": "Other Raspberry Pi OS based images",
+            "icon": "icons/cat_raspberry_pi_os.png",
+            "subitems": [
+                {
+                    "name": "Raspberry Pi OS (64-bit)",
+                    "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)",
+                    "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png",
+                    "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip",
+                    "extract_size": 4156555264,
+                    "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb",
+                    "image_download_size": 1189750489,
+                    "release_date": "2022-01-28",
+                    "init_format": "systemd"
+                }
+            ]
+        }
+    ]
+}
+

Type: object Default: {}

ONLY USED IN TOP-LEVEL OS_LIST.JSON. Not for Linux distributions linked by subitems url.

No Additional Properties
Example:

{
+    "latest_version": "1.6",
+    "url": "https://www.raspberrypi.org/software/",
+    "default_os": "Raspberry Pi OS (32-bit)",
+    "embedded_default_os": "Raspberry Pi OS (32-bit)",
+    "embedded_default_destination": "/dev/mmcblk0p1"
+}
+

Type: string Default: ""

If version mentioned here is newer than the Imager that is currently being run, user is prompted for update.


Example:

"1.6"
+

Type: string Default: ""

If user accepts the update, a browser is opened to this address.


Example:

"https://www.raspberrypi.org/software/"
+

Type: string Default: ""

Optional. If set this OS will be selected automatically, without the user having to press 'CHOOSE OS'


Example:

"Raspberry Pi OS (32-bit)"
+

Type: string Default: ""

Optional. Same as default_os but only applied if user is running the embedded Imager edition.


Example:

"Raspberry Pi OS (32-bit)"
+

Type: string Default: ""

Optional. If set and the user is running the embedded Imager edition, this device will be automatically selected as destination drive.


Example:

"/dev/mmcblk0p1"
+

Type: array Default: []

List of operating systems available.

Each item of this array must be:


Type: object Default: {}

An entry for an OS.


Example:

{
+    "name": "Raspberry Pi OS (32-bit)",
+    "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)",
+    "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png",
+    "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip",
+    "extract_size": 4236247040,
+    "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3",
+    "image_download_size": 1306588543,
+    "release_date": "2022-01-28",
+    "init_format": "systemd"
+}
+

Type: string Default: ""

Name of operating system as shown in the 'CHOOSE OS' list.


Example:

"Raspberry Pi OS (32-bit)"
+

Type: string Default: ""

Description of operating system as shown in the 'CHOOSE OS' list.


Example:

"A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)"
+

Type: string Default: ""

Icon of the operating system as shown in the 'CHOOSE OS' list


Example:

"https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png"
+

Type: string Default: ""

Download URL. Can be .zip, .gz, .xz (since Imager 1.7 also .zstd, but for compatibility with older versions, better not use it)


Example:

"https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip"
+

Type: integer Default: 0

The size of the image after extraction. Used to check if the storage is large enough to accomdate the image.


Example:

4236247040
+

Type: string Default: ""

SHA256 of image after extraction. Must be correct or Imager will for security purposes abort and will not write the first MB of image (effectively invalidating parititon table)


Example:

"ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3"
+

Type: integer Default: 0

Size of the compressed image.


Example:

1306588543
+

Type: string Default: ""

Release date of OS image. Shown in 'CHOOSE OS' list


Example:

"2022-01-28"
+

Type: string Default: ""

If set 'advanced settings' button will be shown. If 'initformat' is set to 'systemd', OS customization will be done by creating a firstrun.sh with shell commands on the SD card, and cmdline.txt will be modified to instruct systemd to execute /boot/firstrun.sh. THIS WILL ONLY WORK IF THE FAT PARTITION IS MOUNTED AT /boot in your /etc/fstab. If 'initformat' is set to 'cloudinit' a cloud-init 'user-data' file will be created on the FAT partition instead.


Example:

"systemd"
+

Type: string Default: ""

Optional. If set a (I)nfo icon will be shown in the 'CHOOSE OS' list. Clicking it will cause a browser to be opened to the website listed.


Example:

"https://ubuntu.com/raspberry-pi/server"
+

Additional Properties of any type are allowed.

Type: object
Type: object Default: {}

Allows linking to subitems listed in an external .json file.


Example:

{
+    "name": "Bootloader",
+    "description": "Restore the factory default settings and change boot priority",
+    "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png",
+    "subitems_url": "https://downloads.raspberrypi.org/eeprom_recovery.json",
+    "website": "https://www.raspberrypi.org/"
+}
+

Type: string Default: ""

Name as shown in the 'CHOOSE OS' list.


Example:

"Bootloader"
+

Type: string Default: ""

Description as shown in the 'CHOOSE OS' list.


Example:

"Restore the factory default settings and change boot priority"
+

Type: string Default: ""

Icon as shown in the 'CHOOSE OS' list.


Example:

"https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png"
+

Type: string Default: ""

URL of the file with the subitems.


Example:

"https://downloads.raspberrypi.org/eeprom_recovery.json"
+

Type: string Default: ""

Optional. If set a (I)nfo icon will be shown in the 'CHOOSE OS' list. Clicking it will cause a browser to be opened to the website listed.


Example:

"https://www.raspberrypi.org/"
+

Additional Properties of any type are allowed.

Type: object
Type: object Default: {}

List of subitems listed in the same .json file. AVOID USE DUE TO BUG WHEN NESTED SUBITEMS ARE USED IN IMAGER VERSIONS PRIOR TO 1.7


Example:

{
+    "name": "Raspberry Pi OS (other)",
+    "description": "Other Raspberry Pi OS based images",
+    "icon": "icons/cat_raspberry_pi_os.png",
+    "subitems": [
+        {
+            "name": "Raspberry Pi OS (64-bit)",
+            "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)",
+            "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png",
+            "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip",
+            "extract_size": 4156555264,
+            "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb",
+            "image_download_size": 1189750489,
+            "release_date": "2022-01-28",
+            "init_format": "systemd"
+        }
+    ]
+}
+

Type: string Default: ""

Name as shown in the 'CHOOSE OS' list.


Example:

"Raspberry Pi OS (other)"
+

Type: string Default: ""

Description as shown in the 'CHOOSE OS' list.


Example:

"Other Raspberry Pi OS based images"
+

Type: string Default: ""

Icon as shown in the 'CHOOSE OS' list.


Example:

"icons/cat_raspberry_pi_os.png"
+

Type: array Default: []

Inline subitems.

Each item of this array must be:


Example:

[
+    {
+        "name": "Raspberry Pi OS (64-bit)",
+        "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)",
+        "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png",
+        "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip",
+        "extract_size": 4156555264,
+        "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb",
+        "image_download_size": 1189750489,
+        "release_date": "2022-01-28",
+        "init_format": "systemd"
+    }
+]
+

Additional Properties of any type are allowed.

Type: object

Example:

[
+    {
+        "name": "Raspberry Pi OS (32-bit)",
+        "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)",
+        "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png",
+        "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip",
+        "extract_size": 4236247040,
+        "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3",
+        "image_download_size": 1306588543,
+        "release_date": "2022-01-28",
+        "init_format": "systemd"
+    },
+    {
+        "name": "Ubuntu Server 21.10 (RPi 3/4/400)",
+        "description": "64-bit server OS for arm64 architectures",
+        "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg",
+        "url": "http://cdimage.ubuntu.com/releases/impish/release/ubuntu-21.10-preinstalled-server-arm64+raspi.img.xz",
+        "extract_size": 4068480000,
+        "extract_sha256": "4cf06429e0367f0a59b890819d1792b0d816bc531fcb5bd092e441d8d6a942b9",
+        "image_download_size": 921117368,
+        "release_date": "2021-10-14",
+        "website": "https://ubuntu.com/raspberry-pi/server",
+        "init_format": "cloudinit"
+    }
+]
+
\ No newline at end of file diff --git a/doc/json-schema/os-list-schema.json b/doc/json-schema/os-list-schema.json new file mode 100644 index 0000000..6829918 --- /dev/null +++ b/doc/json-schema/os-list-schema.json @@ -0,0 +1,485 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "http://example.com/example.json", + "type": "object", + "title": "Imager oslist.json schema", + "description": "oslist.json format.", + "default": {}, + "examples": [ + { + "imager": { + "latest_version": "1.6", + "url": "https://www.raspberrypi.org/software/", + "default_os": "Raspberry Pi OS (32-bit)", + "embedded_default_os": "Raspberry Pi OS (32-bit)", + "embedded_default_destination": "/dev/mmcblk0p1" + }, + "os_list": [ + { + "name": "Raspberry Pi OS (32-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)", + "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip", + "extract_size": 4236247040, + "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3", + "image_download_size": 1306588543, + "release_date": "2022-01-28", + "init_format": "systemd" + }, + { + "name": "Ubuntu Server 21.10 (RPi 3/4/400)", + "description": "64-bit server OS for arm64 architectures", + "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", + "url": "http://cdimage.ubuntu.com/releases/impish/release/ubuntu-21.10-preinstalled-server-arm64+raspi.img.xz", + "extract_size": 4068480000, + "extract_sha256": "4cf06429e0367f0a59b890819d1792b0d816bc531fcb5bd092e441d8d6a942b9", + "image_download_size": 921117368, + "release_date": "2021-10-14", + "website": "https://ubuntu.com/raspberry-pi/server", + "init_format": "cloudinit" + }, + { + "name": "Bootloader", + "description": "Restore the factory default settings and change boot priority", + "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png", + "subitems_url": "https://downloads.raspberrypi.org/eeprom_recovery.json", + "website": "https://www.raspberrypi.org/" + }, + { + "name": "Raspberry Pi OS (other)", + "description": "Other Raspberry Pi OS based images", + "icon": "icons/cat_raspberry_pi_os.png", + "subitems": [ + { + "name": "Raspberry Pi OS (64-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)", + "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip", + "extract_size": 4156555264, + "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb", + "image_download_size": 1189750489, + "release_date": "2022-01-28", + "init_format": "systemd" + } + ] + } + ] + } + ], + "required": [ + "os_list" + ], + "properties": { + "imager": { + "$id": "#/properties/imager", + "type": "object", + "title": "Meta-data for the Imager program itself", + "description": "ONLY USED IN TOP-LEVEL OS_LIST.JSON. Not for Linux distributions linked by subitems url.", + "default": {}, + "examples": [ + { + "latest_version": "1.6", + "url": "https://www.raspberrypi.org/software/", + "default_os": "Raspberry Pi OS (32-bit)", + "embedded_default_os": "Raspberry Pi OS (32-bit)", + "embedded_default_destination": "/dev/mmcblk0p1" + } + ], + "required": [ + ], + "properties": { + "latest_version": { + "$id": "#/properties/imager/properties/latest_version", + "type": "string", + "title": "Latest imager version", + "description": "If version mentioned here is newer than the Imager that is currently being run, user is prompted for update.", + "default": "", + "examples": [ + "1.6" + ] + }, + "url": { + "$id": "#/properties/imager/properties/url", + "type": "string", + "title": "Website to download new Imager version from", + "description": "If user accepts the update, a browser is opened to this address.", + "default": "", + "examples": [ + "https://www.raspberrypi.org/software/" + ] + }, + "default_os": { + "$id": "#/properties/imager/properties/default_os", + "type": "string", + "title": "default_os", + "description": "Optional. If set this OS will be selected automatically, without the user having to press 'CHOOSE OS'", + "default": "", + "examples": [ + "Raspberry Pi OS (32-bit)" + ] + }, + "embedded_default_os": { + "$id": "#/properties/imager/properties/embedded_default_os", + "type": "string", + "title": "embedded_default_os", + "description": "Optional. Same as default_os but only applied if user is running the embedded Imager edition.", + "default": "", + "examples": [ + "Raspberry Pi OS (32-bit)" + ] + }, + "embedded_default_destination": { + "$id": "#/properties/imager/properties/embedded_default_destination", + "type": "string", + "title": "The embedded_default_destination schema", + "description": "Optional. If set and the user is running the embedded Imager edition, this device will be automatically selected as destination drive.", + "default": "", + "examples": [ + "/dev/mmcblk0p1" + ] + } + }, + "additionalProperties": false + }, + "os_list": { + "$id": "#/properties/os_list", + "type": "array", + "title": "The os_list schema", + "description": "List of operating systems available.", + "default": [], + "examples": [ + [ + { + "name": "Raspberry Pi OS (32-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)", + "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip", + "extract_size": 4236247040, + "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3", + "image_download_size": 1306588543, + "release_date": "2022-01-28", + "init_format": "systemd" + }, + { + "name": "Ubuntu Server 21.10 (RPi 3/4/400)", + "description": "64-bit server OS for arm64 architectures", + "icon": "https://assets.ubuntu.com/v1/85a9de76-ubuntu-icon.svg", + "url": "http://cdimage.ubuntu.com/releases/impish/release/ubuntu-21.10-preinstalled-server-arm64+raspi.img.xz", + "extract_size": 4068480000, + "extract_sha256": "4cf06429e0367f0a59b890819d1792b0d816bc531fcb5bd092e441d8d6a942b9", + "image_download_size": 921117368, + "release_date": "2021-10-14", + "website": "https://ubuntu.com/raspberry-pi/server", + "init_format": "cloudinit" + } + ] + ], + "additionalItems": true, + "items": { + "$id": "#/properties/os_list/items", + "anyOf": [ + { + "$id": "#/properties/os_list/items/anyOf/0", + "type": "object", + "title": "Operating system entry", + "description": "An entry for an OS.", + "default": {}, + "examples": [ + { + "name": "Raspberry Pi OS (32-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)", + "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip", + "extract_size": 4236247040, + "extract_sha256": "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3", + "image_download_size": 1306588543, + "release_date": "2022-01-28", + "init_format": "systemd" + } + ], + "required": [ + "name", + "description", + "icon", + "url", + "extract_size", + "extract_sha256", + "image_download_size", + "release_date" + ], + "properties": { + "name": { + "$id": "#/properties/os_list/items/anyOf/0/properties/name", + "type": "string", + "title": "The name schema", + "description": "Name of operating system as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "Raspberry Pi OS (32-bit)" + ] + }, + "description": { + "$id": "#/properties/os_list/items/anyOf/0/properties/description", + "type": "string", + "title": "The description schema", + "description": "Description of operating system as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "A port of Debian Bullseye with the Raspberry Pi Desktop (Recommended)" + ] + }, + "icon": { + "$id": "#/properties/os_list/items/anyOf/0/properties/icon", + "type": "string", + "title": "The icon schema", + "description": "Icon of the operating system as shown in the 'CHOOSE OS' list", + "default": "", + "examples": [ + "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png" + ] + }, + "url": { + "$id": "#/properties/os_list/items/anyOf/0/properties/url", + "type": "string", + "title": "The url schema", + "description": "Download URL. Can be .zip, .gz, .xz (since Imager 1.7 also .zstd, but for compatibility with older versions, better not use it)", + "default": "", + "examples": [ + "https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2022-01-28/2022-01-28-raspios-bullseye-armhf.zip" + ] + }, + "extract_size": { + "$id": "#/properties/os_list/items/anyOf/0/properties/extract_size", + "type": "integer", + "title": "The extract_size schema", + "description": "The size of the image after extraction. Used to check if the storage is large enough to accomdate the image.", + "default": 0, + "examples": [ + 4236247040 + ] + }, + "extract_sha256": { + "$id": "#/properties/os_list/items/anyOf/0/properties/extract_sha256", + "type": "string", + "title": "The extract_sha256 schema", + "description": "SHA256 of image after extraction. Must be correct or Imager will for security purposes abort and will not write the first MB of image (effectively invalidating parititon table)", + "default": "", + "examples": [ + "ceb7d7489847ed811e7746fa779837f78fc06d43663148a696280e6a1cfe00e3" + ] + }, + "image_download_size": { + "$id": "#/properties/os_list/items/anyOf/0/properties/image_download_size", + "type": "integer", + "title": "The image_download_size schema", + "description": "Size of the compressed image.", + "default": 0, + "examples": [ + 1306588543 + ] + }, + "release_date": { + "$id": "#/properties/os_list/items/anyOf/0/properties/release_date", + "type": "string", + "title": "The release_date schema", + "description": "Release date of OS image. Shown in 'CHOOSE OS' list", + "default": "", + "examples": [ + "2022-01-28" + ] + }, + "init_format": { + "$id": "#/properties/os_list/items/anyOf/0/properties/init_format", + "type": "string", + "title": "The init_format schema", + "description": "If set 'advanced settings' button will be shown. If 'init_format' is set to 'systemd', OS customization will be done by creating a firstrun.sh with shell commands on the SD card, and cmdline.txt will be modified to instruct systemd to execute /boot/firstrun.sh. THIS WILL ONLY WORK IF THE FAT PARTITION IS MOUNTED AT /boot in your /etc/fstab. If 'init_format' is set to 'cloudinit' a cloud-init 'user-data' file will be created on the FAT partition instead.", + "default": "", + "examples": [ + "systemd" + ] + }, + "website": { + "$id": "#/properties/os_list/items/anyOf/1/properties/website", + "type": "string", + "title": "The website schema", + "description": "Optional. If set a (I)nfo icon will be shown in the 'CHOOSE OS' list. Clicking it will cause a browser to be opened to the website listed.", + "default": "", + "examples": [ + "https://ubuntu.com/raspberry-pi/server" + ] + } + }, + "additionalProperties": true + }, + { + "$id": "#/properties/os_list/items/anyOf/2", + "type": "object", + "title": "subitems_url linking to another .json file", + "description": "Allows linking to subitems listed in an external .json file.", + "default": {}, + "examples": [ + { + "name": "Bootloader", + "description": "Restore the factory default settings and change boot priority", + "icon": "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png", + "subitems_url": "https://downloads.raspberrypi.org/eeprom_recovery.json", + "website": "https://www.raspberrypi.org/" + } + ], + "required": [ + "name", + "description", + "icon", + "subitems_url" + ], + "properties": { + "name": { + "$id": "#/properties/os_list/items/anyOf/2/properties/name", + "type": "string", + "title": "The name schema", + "description": "Name as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "Bootloader" + ] + }, + "description": { + "$id": "#/properties/os_list/items/anyOf/2/properties/description", + "type": "string", + "title": "The description schema", + "description": "Description as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "Restore the factory default settings and change boot priority" + ] + }, + "icon": { + "$id": "#/properties/os_list/items/anyOf/2/properties/icon", + "type": "string", + "title": "The icon schema", + "description": "Icon as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "https://downloads.raspberrypi.org/raspios_armhf/Raspberry_Pi_OS_(32-bit).png" + ] + }, + "subitems_url": { + "$id": "#/properties/os_list/items/anyOf/2/properties/subitems_url", + "type": "string", + "title": "The subitems_url schema", + "description": "URL of the file with the subitems.", + "default": "", + "examples": [ + "https://downloads.raspberrypi.org/eeprom_recovery.json" + ] + }, + "website": { + "$id": "#/properties/os_list/items/anyOf/2/properties/website", + "type": "string", + "title": "The website schema", + "description": "Optional. If set a (I)nfo icon will be shown in the 'CHOOSE OS' list. Clicking it will cause a browser to be opened to the website listed.", + "default": "", + "examples": [ + "https://www.raspberrypi.org/" + ] + } + }, + "additionalProperties": true + }, + { + "$id": "#/properties/os_list/items/anyOf/3", + "type": "object", + "title": "Inline subitems in same json file", + "description": "List of subitems listed in the same .json file. AVOID USE DUE TO BUG WHEN NESTED SUBITEMS ARE USED IN IMAGER VERSIONS PRIOR TO 1.7", + "default": {}, + "examples": [ + { + "name": "Raspberry Pi OS (other)", + "description": "Other Raspberry Pi OS based images", + "icon": "icons/cat_raspberry_pi_os.png", + "subitems": [ + { + "name": "Raspberry Pi OS (64-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)", + "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip", + "extract_size": 4156555264, + "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb", + "image_download_size": 1189750489, + "release_date": "2022-01-28", + "init_format": "systemd" + } + ] + } + ], + "required": [ + "name", + "description", + "icon", + "subitems" + ], + "properties": { + "name": { + "$id": "#/properties/os_list/items/anyOf/3/properties/name", + "type": "string", + "title": "The name schema", + "description": "Name as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "Raspberry Pi OS (other)" + ] + }, + "description": { + "$id": "#/properties/os_list/items/anyOf/3/properties/description", + "type": "string", + "title": "The description schema", + "description": "Description as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "Other Raspberry Pi OS based images" + ] + }, + "icon": { + "$id": "#/properties/os_list/items/anyOf/3/properties/icon", + "type": "string", + "title": "The icon schema", + "description": "Icon as shown in the 'CHOOSE OS' list.", + "default": "", + "examples": [ + "icons/cat_raspberry_pi_os.png" + ] + }, + "subitems": { + "$id": "#/properties/os_list/items/anyOf/3/properties/subitems", + "type": "array", + "title": "The subitems schema", + "description": "Inline subitems.", + "default": [], + "examples": [ + [ + { + "name": "Raspberry Pi OS (64-bit)", + "description": "A port of Debian Bullseye with the Raspberry Pi Desktop (Compatible with Raspberry Pi 3/4/400)", + "icon": "https://downloads.raspberrypi.org/raspios_arm64/Raspberry_Pi_OS_(64-bit).png", + "url": "https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64.zip", + "extract_size": 4156555264, + "extract_sha256": "6939d39cbbfbe85c68dae55f1b2375f17e21fe047b8dc1f84aa7d3c002047afb", + "image_download_size": 1189750489, + "release_date": "2022-01-28", + "init_format": "systemd" + } + ] + ], + "additionalItems": true, + "items": { + } + } + }, + "additionalProperties": true + } + ] + } + } + }, + "additionalProperties": false +} diff --git a/doc/json-schema/schema_doc.css b/doc/json-schema/schema_doc.css new file mode 100644 index 0000000..83897d8 --- /dev/null +++ b/doc/json-schema/schema_doc.css @@ -0,0 +1,180 @@ +body { + font: 16px/1.5em "Overpass", "Open Sans", Helvetica, sans-serif; + color: #333; + font-weight: 300; + padding: 40px; +} + +.btn.btn-link { + font-size: 18px; +} + +.jsfh-animated-property { + animation: eclair; + animation-iteration-count: 1; + animation-fill-mode: forwards; + animation-duration: .75s; + +} + +@keyframes eclair { + 0%,100% { + transform: scale(1); + } + 50% { + transform: scale(1.03); + } +} + +.btn.btn-primary { + margin: 10px; +} + +.btn.example-show.collapsed:before { + content: "show" +} + +.btn.example-show:before { + content: "hide" +} + +.description.collapse:not(.show) { + max-height: 100px !important; + overflow: hidden; + + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.description.collapsing { + min-height: 100px !important; +} + +.collapse-description-link.collapsed:after { + content: '+ Read More'; +} + +.collapse-description-link:not(.collapsed):after { + content: '- Read Less'; +} + +.badge { + font-size: 100%; + margin-bottom: 0.5rem; + margin-top: 0.5rem; +} + +.badge.value-type { + font-size: 120%; + margin-right: 5px; + margin-bottom: 10px; +} + + +.badge.default-value { + font-size: 120%; + margin-left: 5px; + margin-bottom: 10px; +} + +.badge.restriction { + display: inline-block; +} + +.badge.required-property,.badge.deprecated-property,.badge.pattern-property,.badge.no-additional { + font-size: 100%; + margin-left: 10px; +} + +.accordion div.card:only-child { + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.examples { + padding: 1rem !important; +} + +.examples pre { + margin-bottom: 0; +} + +.highlight.jumbotron { + padding: 1rem !important; +} + +.generated-by-footer { + margin-top: 1em; + text-align: right; +} + +/* From https://github.com/richleland/pygments-css/blob/master/friendly.css, see https://github.com/trentm/python-markdown2/wiki/fenced-code-blocks */ +.highlight { background: #e9ecef; } /* Changed from #f0f0f0 in the original style to be the same as bootstrap's jumbotron */ +.highlight .hll { background-color: #ffffcc } +.highlight .c { color: #60a0b0; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #40a070 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #40a070 } /* Literal.Number.Bin */ +.highlight .mf { color: #40a070 } /* Literal.Number.Float */ +.highlight .mh { color: #40a070 } /* Literal.Number.Hex */ +.highlight .mi { color: #40a070 } /* Literal.Number.Integer */ +.highlight .mo { color: #40a070 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/json-schema/schema_doc.min.js b/doc/json-schema/schema_doc.min.js new file mode 100644 index 0000000..0d9c788 --- /dev/null +++ b/doc/json-schema/schema_doc.min.js @@ -0,0 +1 @@ +function flashElement(t){myElement=document.getElementById(t),myElement.classList.add("jsfh-animated-property"),setTimeout(function(){myElement.classList.remove("jsfh-animated-property")},1e3)}function setAnchor(t){history.pushState({},"",t)}function anchorOnLoad(){let t=window.location.hash.split("?")[0].split("&")[0];"#"===t[0]&&(t=t.substr(1)),t.length>0&&anchorLink(t)}function anchorLink(t){$("#"+t).parents().addBack().filter(".collapse:not(.show), .tab-pane, [role='tab']").each(function(t){if($(this).hasClass("collapse"))$(this).collapse("show");else if($(this).hasClass("tab-pane")){const t=$("a[href='#"+$(this).attr("id")+"']");t&&t.tab("show")}else"tab"===$(this).attr("role")&&$(this).tab("show")}),setTimeout(function(){let e=document.getElementById(t);e&&(e.scrollIntoView({block:"center",behavior:"smooth"}),setTimeout(function(){flashElement(t)},500))},1e3)}$(document).on("click",'a[href^="#"]',function(t){t.preventDefault(),history.pushState({},"",this.href)}); \ No newline at end of file