aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/schemas
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-06-15 11:09:58 +0200
committerWojtek Kosior <koszko@koszko.org>2022-06-15 11:09:58 +0200
commit7d75fb36def0d1d3b487db9926dfa9f24f1e788e (patch)
treee31eda43cab2f0fb158f0f917689f4a2743f0037 /src/hydrilla/schemas
parentb9f67e9dec21c7ea09d8c138ae5b11b179d84c24 (diff)
parent22c722bf59e59246f47491c7229b17f9ef783614 (diff)
downloadhydrilla-builder-7d75fb36def0d1d3b487db9926dfa9f24f1e788e.tar.gz
hydrilla-builder-7d75fb36def0d1d3b487db9926dfa9f24f1e788e.zip
Update upstream source from tag 'upstream/1.1_beta1'
Update to upstream version '1.1~beta1' with Debian dir 1e26108ec9cb2f9b4e35e048ea8f73345a415680
Diffstat (limited to 'src/hydrilla/schemas')
-rw-r--r--src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json (renamed from src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json (renamed from src/hydrilla/schemas/api_query_result-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/api_query_result-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json (renamed from src/hydrilla/schemas/api_resource_description-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/api_resource_description-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json (renamed from src/hydrilla/schemas/api_source_description-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/api_source_description-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json (renamed from src/hydrilla/schemas/common_definitions-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/common_definitions-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json (renamed from src/hydrilla/schemas/package_source-1.0.1.schema.json)0
-rw-r--r--src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json.license (renamed from src/hydrilla/schemas/package_source-1.0.1.schema.json.license)0
-rw-r--r--src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json25
-rw-r--r--src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json.license5
-rw-r--r--src/hydrilla/schemas/2.x/api_query_result-2.schema.json25
-rw-r--r--src/hydrilla/schemas/2.x/api_query_result-2.schema.json.license5
-rw-r--r--src/hydrilla/schemas/2.x/api_resource_description-2.schema.json35
-rw-r--r--src/hydrilla/schemas/2.x/api_resource_description-2.schema.json.license5
-rw-r--r--src/hydrilla/schemas/2.x/api_source_description-2.schema.json66
-rw-r--r--src/hydrilla/schemas/2.x/api_source_description-2.schema.json.license5
-rw-r--r--src/hydrilla/schemas/2.x/common_definitions-2.schema.json254
-rw-r--r--src/hydrilla/schemas/2.x/common_definitions-2.schema.json.license5
-rw-r--r--src/hydrilla/schemas/2.x/package_source-2.schema.json166
-rw-r--r--src/hydrilla/schemas/2.x/package_source-2.schema.json.license5
24 files changed, 601 insertions, 0 deletions
diff --git a/src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json b/src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json
index 880a5c4..880a5c4 100644
--- a/src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/api_mapping_description-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/api_mapping_description-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/api_query_result-1.0.1.schema.json b/src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json
index 89c5428..89c5428 100644
--- a/src/hydrilla/schemas/api_query_result-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/api_query_result-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/api_query_result-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/api_query_result-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/api_resource_description-1.0.1.schema.json b/src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json
index 7459394..7459394 100644
--- a/src/hydrilla/schemas/api_resource_description-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/api_resource_description-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/api_resource_description-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/api_resource_description-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/api_source_description-1.0.1.schema.json b/src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json
index 0744d1a..0744d1a 100644
--- a/src/hydrilla/schemas/api_source_description-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/api_source_description-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/api_source_description-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/api_source_description-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/common_definitions-1.0.1.schema.json b/src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json
index b803188..b803188 100644
--- a/src/hydrilla/schemas/common_definitions-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/common_definitions-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/common_definitions-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/common_definitions-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/package_source-1.0.1.schema.json b/src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json
index 2f9482e..2f9482e 100644
--- a/src/hydrilla/schemas/package_source-1.0.1.schema.json
+++ b/src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json
diff --git a/src/hydrilla/schemas/package_source-1.0.1.schema.json.license b/src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json.license
index f41d511..f41d511 100644
--- a/src/hydrilla/schemas/package_source-1.0.1.schema.json.license
+++ b/src/hydrilla/schemas/1.x/package_source-1.0.1.schema.json.license
diff --git a/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json b/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json
new file mode 100644
index 0000000..e444180
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/api_mapping_description-2.schema.json",
+ "title": "Mapping description",
+ "description": "Definition of a Hydrilla mapping, as served through HTTP API",
+ "allOf": [{
+ "$ref": "./common_definitions-2.schema.json#/definitions/mapping_definition_base"
+ }, {
+ "$ref": "./common_definitions-2.schema.json#/definitions/item_definition"
+ }, {
+ "type": "object",
+ "required": ["$schema", "type"],
+ "properties": {
+ "$schema": {
+ "description": "Mark this instance as conforming to mapping description schema 2.x",
+ "type": "string",
+ "pattern": "^https://hydrilla\\.koszko\\.org/schemas/api_mapping_description-2\\.(([1-9][0-9]*|0)\\.)*schema\\.json$"
+ },
+ "type": {
+ "description": "Identify this item as a mapping",
+ "const": "mapping"
+ }
+ }
+ }]
+}
diff --git a/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json.license b/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_mapping_description-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.
diff --git a/src/hydrilla/schemas/2.x/api_query_result-2.schema.json b/src/hydrilla/schemas/2.x/api_query_result-2.schema.json
new file mode 100644
index 0000000..727531c
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_query_result-2.schema.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/api_query_result-2.schema.json",
+ "title": "Query result",
+ "description": "Object with a list of references to mappings that contain payloads for requested URL",
+ "type": "object",
+ "required": ["$schema", "mappings"],
+ "properties": {
+ "$schema": {
+ "description": "Mark this instance as conforming to query result schema 2.x",
+ "type": "string",
+ "pattern": "^https://hydrilla\\.koszko\\.org/schemas/api_query_result-2\\.(([1-9][0-9]*|0)\\.)*schema\\.json$"
+ },
+ "mappings": {
+ "description": "References to mappings using at least one pattern that matches the requested URL",
+ "type": "array",
+ "items": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/item_ref"
+ }
+ },
+ "generated_by": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/generated_by"
+ }
+ }
+}
diff --git a/src/hydrilla/schemas/2.x/api_query_result-2.schema.json.license b/src/hydrilla/schemas/2.x/api_query_result-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_query_result-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.
diff --git a/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json b/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json
new file mode 100644
index 0000000..1157977
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/api_resource_description-2.schema.json",
+ "title": "Resource description",
+ "description": "Definition of a Hydrilla resource, as served through HTTP API",
+ "allOf": [{
+ "$ref": "./common_definitions-2.schema.json#/definitions/resource_definition_base"
+ }, {
+ "$ref": "./common_definitions-2.schema.json#/definitions/item_definition"
+ }, {
+ "type": "object",
+ "required": ["$schema", "type"],
+ "properties": {
+ "$schema": {
+ "description": "Mark this instance as conforming to resource description schema 2.x",
+ "type": "string",
+ "pattern": "^https://hydrilla\\.koszko\\.org/schemas/api_resource_description-2\\.(([1-9][0-9]*|0)\\.)*schema\\.json$"
+ },
+ "type": {
+ "description": "Identify this item as a resource",
+ "const": "resource"
+ },
+ "scripts": {
+ "description": "Which files are resource's scripts and need to be installed",
+ "$ref": "./common_definitions-2.schema.json#/definitions/file_ref_list_sha256",
+ "default": []
+ },
+ "dependencies": {
+ "description": "Which other resources this resource depends on",
+ "$ref": "./common_definitions-2.schema.json#/definitions/item_dep_specifier_array",
+ "default": []
+ }
+ }
+ }]
+}
diff --git a/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json.license b/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_resource_description-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.
diff --git a/src/hydrilla/schemas/2.x/api_source_description-2.schema.json b/src/hydrilla/schemas/2.x/api_source_description-2.schema.json
new file mode 100644
index 0000000..5bc0095
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_source_description-2.schema.json
@@ -0,0 +1,66 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/api_source_description-2.schema.json",
+ "title": "Source description",
+ "description": "Built description of a Hydrilla source package",
+ "type": "object",
+ "required": [
+ "$schema",
+ "source_name",
+ "source_copyright",
+ "source_archives",
+ "upstream_url",
+ "definitions"
+ ],
+ "properties": {
+ "$schema": {
+ "description": "Mark this instance as conforming to source description schema 2.x",
+ "type": "string",
+ "pattern": "^https://hydrilla\\.koszko\\.org/schemas/api_source_description-2\\.(([1-9][0-9]*|0)\\.)*schema\\.json$"
+ },
+ "source_name": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/source_name"
+ },
+ "source_copyright": {
+ "description": "Which files indicate license terms of the source package",
+ "$ref": "./common_definitions-2.schema.json#/definitions/file_ref_list_sha256"
+ },
+ "source_archives": {
+ "description": "What archive extensions are available for this package's sources",
+ "type": "object",
+ "required": ["zip"],
+ "additionalProperties": {
+ "description": "What is the SHA256 sum of given source archive",
+ "type": "object",
+ "required": ["sha256"],
+ "properties": {
+ "sha256": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/sha256"
+ }
+ }
+ },
+ "examples": [{
+ "zip": {
+ "sha256": "688461da362ffe2fc8e85db73e709a5356d41c8aeb7d1eee7170c64ee21dd2a2"
+ }
+ }]
+ },
+ "upstream_url": {
+ "description": "Where this software/work initially comes from",
+ "type": "string"
+ },
+ "comment": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/comment"
+ },
+ "definitions": {
+ "description": "References to site resources and pattern->payload mappings",
+ "type": "array",
+ "items": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/typed_item_ref"
+ }
+ },
+ "generated_by": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/generated_by"
+ }
+ }
+}
diff --git a/src/hydrilla/schemas/2.x/api_source_description-2.schema.json.license b/src/hydrilla/schemas/2.x/api_source_description-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/api_source_description-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.
diff --git a/src/hydrilla/schemas/2.x/common_definitions-2.schema.json b/src/hydrilla/schemas/2.x/common_definitions-2.schema.json
new file mode 100644
index 0000000..1700f34
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/common_definitions-2.schema.json
@@ -0,0 +1,254 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/common_definitions-2.schema.json",
+ "title": "Common definitions",
+ "description": "Definitions used by other Hydrilla schemas",
+ "definitions": {
+ "version": {
+ "description": "Version expressed as an array of integers",
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "contains": {
+ "type": "integer",
+ "minimum": 1
+ },
+ "minItems": 1
+ },
+ "source_name": {
+ "description": "Unique identifier of this source package",
+ "type": "string",
+ "pattern": "^[-0-9a-z.]+$"
+ },
+ "comment": {
+ "description": "An optional comment",
+ "type": "string"
+ },
+ "file_ref_list": {
+ "description": "List of simple file references",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["file"],
+ "properties": {
+ "file": {
+ "description": "Filename relative to source package main directory; separator is '/'",
+ "type": "string",
+ "pattern": "^[^/]"
+ }
+ }
+ }
+ },
+ "sha256": {
+ "description": "An SHA256 sum, in hexadecimal",
+ "type": "string",
+ "pattern": "^[0-9a-f]{64}$"
+ },
+ "file_ref_list_sha256": {
+ "description": "List of file references with files' SHA256 sums included",
+ "allOf": [{
+ "$ref": "#/definitions/file_ref_list"
+ }, {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["sha256"],
+ "properties": {
+ "sha256": {
+ "$ref": "#/definitions/sha256"
+ }
+ }
+ }
+ }]
+ },
+ "item_identifier": {
+ "description": "Identifier of an item (shared with other versions of the item, otherwise unique)",
+ "type": "string",
+ "pattern": "^[-0-9a-z]+$"
+ },
+ "item_dep_specifier": {
+ "description": "Simple reference to an item as a dependency",
+ "type": "object",
+ "required": ["identifier"],
+ "properties": {
+ "identifier": {
+ "$ref": "#/definitions/item_identifier"
+ }
+ }
+ },
+ "item_dep_specifier_array": {
+ "description": "Array of references to items as dependencies",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/item_dep_specifier"
+ }
+ },
+ "item_ref": {
+ "description": "An object containing a subset of fields from full item definition",
+ "type": "object",
+ "required": ["identifier", "long_name", "version"],
+ "properties": {
+ "identifier": {
+ "$ref": "#/definitions/item_identifier"
+ },
+ "long_name": {
+ "description": "User-friendly alternative to the identifier",
+ "type": "string"
+ },
+ "version": {
+ "$ref": "#/definitions/version"
+ }
+ }
+ },
+ "typed_item_ref": {
+ "description": "An object containing a subset of fields from full item definition, including type",
+ "allOf": [{
+ "$ref": "#/definitions/item_ref"
+ }, {
+ "type": "object",
+ "required": ["type"],
+ "properties": {
+ "type": {
+ "description": "What kind of item is it (resource or mapping)",
+ "enum": ["resource", "mapping"]
+ }
+ }
+ }]
+ },
+ "item_definition_base": {
+ "description": "Definition of a resource/mapping (fields common to source definitions and built definitions)",
+ "allOf": [{
+ "$ref": "#/definitions/item_ref"
+ }, {
+ "type": "object",
+ "required": ["description"],
+ "properties": {
+ "uuid": {
+ "description": "UUIDv4 of this item (shared with other versions of this item, otherwise unique)",
+ "type": "string",
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
+ },
+ "description": {
+ "description": "Item's description",
+ "type": "string"
+ },
+ "min_haketilo_version": {
+ "description": "Specify that this item should not be used with Haketilo versions older than specified here",
+ "$ref": "#/definitions/version",
+ "default": [1]
+ },
+ "max_haketilo_version": {
+ "description": "Specify that this item should not be used with Haketilo versions newer than specified here",
+ "$ref": "#/definitions/version",
+ "default": [65536]
+ },
+ "permissions": {
+ "description": "What privileges should be granted on pages where this resource/mapping is used",
+ "type": "object",
+ "properties": {
+ "cors_bypass": {
+ "description": "Specify if a page should be allowed to perform cross-origin requests",
+ "type": "boolean",
+ "default": false
+ },
+ "eval": {
+ "description": "Specify if scripts added to the page should be allowed to use eval() (and related mechanisms)",
+ "type": "boolean",
+ "default": false
+ }
+ }
+ },
+ "required_mappings": {
+ "description": "Which mappings this item requires to be enabled",
+ "$ref": "#/definitions/item_dep_specifier_array",
+ "default": []
+ },
+ "comment": {
+ "$ref": "#/definitions/comment"
+ }
+ }
+ }]
+ },
+ "resource_definition_base": {
+ "description": "Definition of a resource (fields common to source definitions and built definitions)",
+ "allOf": [{
+ "$ref": "#/definitions/item_definition_base"
+ }, {
+ "type": "object",
+ "required": ["type", "revision"],
+ "properties": {
+ "revision": {
+ "description": "Which revision of a packaging of given version of an upstream resource is this",
+ "type": "integer",
+ "minimum": 1
+ },
+ "scripts": {
+ "description": "What scripts are included in the resource",
+ "$ref": "#/definitions/file_ref_list",
+ "default": []
+ }
+ }
+ }]
+ },
+ "mapping_definition_base": {
+ "description": "Definition of a mapping (fields common to source definitions and built definitions)",
+ "allOf": [{
+ "$ref": "#/definitions/item_definition_base"
+ }, {
+ "type": "object",
+ "properties": {
+ "payloads": {
+ "description": "Which payloads are to be applied to which URLs",
+ "additionalProperties": {
+ "$ref": "#/definitions/item_dep_specifier"
+ },
+ "default": {},
+ "examples": [{
+ "https://hydrillabugs.koszko.org/***": {
+ "identifier": "helloapple"
+ },
+ "https://*.koszko.org/***": {
+ "identifier": "hello-potato"
+ }
+ }]
+ }
+ }
+ }]
+ },
+ "generated_by": {
+ "description": "Describe what software generated this instance",
+ "type": "object",
+ "required": ["name"],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Instance generator software name, without version"
+ },
+ "version": {
+ "type": "string",
+ "description": "Instance generator software version, in arbitrary format"
+ }
+ }
+ },
+ "item_definition": {
+ "description": "Definition of a resource/mapping (fields specific to built definitions)",
+ "type": "object",
+ "required": ["source_name", "source_copyright"],
+ "properties": {
+ "source_name": {
+ "$ref": "#/definitions/source_name"
+ },
+ "source_copyright": {
+ "description": "Which files indicate license terms of the source package and should be installed",
+ "$ref": "#/definitions/file_ref_list_sha256"
+ },
+ "generated_by": {
+ "$ref": "#/definitions/generated_by"
+ }
+ }
+ }
+ }
+}
diff --git a/src/hydrilla/schemas/2.x/common_definitions-2.schema.json.license b/src/hydrilla/schemas/2.x/common_definitions-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/common_definitions-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.
diff --git a/src/hydrilla/schemas/2.x/package_source-2.schema.json b/src/hydrilla/schemas/2.x/package_source-2.schema.json
new file mode 100644
index 0000000..4d8249d
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/package_source-2.schema.json
@@ -0,0 +1,166 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://hydrilla.koszko.org/schemas/package_source-2.schema.json",
+ "title": "Package source",
+ "description": "Definition of a Hydrilla source package",
+ "type": "object",
+ "required": [
+ "$schema",
+ "source_name",
+ "copyright",
+ "upstream_url",
+ "definitions"
+ ],
+ "properties": {
+ "$schema": {
+ "description": "Mark this instance as conforming to package source schema 2.x",
+ "type": "string",
+ "pattern": "^https://hydrilla\\.koszko\\.org/schemas/package_source-2\\.(([1-9][0-9]*|0)\\.)*schema\\.json$"
+ },
+ "source_name": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/source_name"
+ },
+ "copyright": {
+ "description": "Which files from the source package indicate its license terms and should be included in the distribution packages",
+ "$ref": "./common_definitions-2.schema.json#/definitions/file_ref_list"
+ },
+ "upstream_url": {
+ "description": "Where this software/work initially comes from",
+ "type": "string"
+ },
+ "piggyback_on": {
+ "description": "Specify packages from other software system that should be used for constructing this package",
+ "anyOf": [{
+ "$ref": "#/definitions/piggyback_apt"
+ }]
+ },
+ "comment": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/comment"
+ },
+ "definitions": {
+ "description": "Definitions of site resources and pattern->payload mappings (possibly combined together)",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/item_definition"
+ }
+ },
+ "additional_files": {
+ "description": "Files which should be included in the source archive produced by Hydrilla builder in addition to script and copyright files",
+ "$ref": "./common_definitions-2.schema.json#/definitions/file_ref_list",
+ "default": []
+ },
+ "reuse_generate_spdx_report": {
+ "description": "Should report.spdx be automatically generated for the package using REUSE tool",
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "definitions": {
+ "piggyback_apt": {
+ "description": "Specify packages from APT software system that should be used for constructing this package",
+ "type": "object",
+ "required": [
+ "system",
+ "packages",
+ "dependencies"
+ ],
+ "properties": {
+ "system": {
+ "description": "Which software system to use",
+ "const": "apt"
+ },
+ "distribution": {
+ "description": "Which pre-defined APT-based distribution to use (currently the only available one is Trisquel 10 Nabia)",
+ "const": "nabia"
+ },
+ "sources_list": {
+ "description": "What lines should be added to the sources.list file that will be generated; those will be used together with pre-defined lines for chosen distribution (if any)",
+ "type": "array",
+ "items": {
+ "description": "A sources.list line like \"deb-src http://archive.trisquel.info/trisquel/ nabia main\"",
+ "type": "string",
+ "pattern": "^deb(-src)?(\\s+[^\\s]+){3}$"
+ },
+ "default": []
+ },
+ "trusted_keys": {
+ "description": "Fingerprints of additional PGP keys that should be used with supplied sources.list entries",
+ "type": "array",
+ "items": {
+ "description": "A PGP fingerprint (40 hexadecimal characters)",
+ "type": "string",
+ "pattern": "^[0-9A-E]{40}$"
+ },
+ "default": []
+ },
+ "packages": {
+ "description": "Specifiers of packages that should be used, can include version constraints",
+ "type": "array",
+ "items": {
+ "description": "A package specifier like \"libjs-jquery=3.3.1~dfsg-3\"",
+ "type": "string"
+ },
+ "minItems": 1
+ },
+ "dependencies": {
+ "description": "Boolean indicating whether dependent APT packages should also be downloaded and used",
+ "type": "boolean"
+ },
+ "depend_on_base_packages": {
+ "description": "Boolean indicating whether the resulting resource packages should depend on 'apt-common-licenses' Haketilo package",
+ "type": "boolean",
+ "default": true
+ }
+ }
+ },
+ "item_definition": {
+ "description": "Definition of either a site resource, a pattern->payload mapping or both combined together",
+ "if": {
+ "type": "object",
+ "required": ["type"],
+ "properties": {
+ "type": {
+ "const": "resource"
+ }
+ }
+ },
+ "then": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/resource_definition_base"
+ },
+ "else": {
+ "if": {
+ "type": "object",
+ "required": ["type"],
+ "properties": {
+ "type": {
+ "const": "mapping"
+ }
+ }
+ },
+ "then": {
+ "$ref": "./common_definitions-2.schema.json#/definitions/mapping_definition_base"
+ },
+ "else": {
+ "allOf": [{
+ "type": "object",
+ "required": ["type"],
+ "properties": {
+ "type": {
+ "const": "mapping_and_resource"
+ }
+ }
+ }, {
+ "$ref": "#/definitions/combined_mapping_resource_definition"
+ }]
+ }
+ }
+ },
+ "combined_mapping_resource_definition": {
+ "allOf": [{
+ "$ref": "./common_definitions-2.schema.json#/definitions/mapping_definition_base"
+ }, {
+ "$ref": "./common_definitions-2.schema.json#/definitions/resource_definition_base"
+ }]
+ }
+ }
+}
diff --git a/src/hydrilla/schemas/2.x/package_source-2.schema.json.license b/src/hydrilla/schemas/2.x/package_source-2.schema.json.license
new file mode 100644
index 0000000..f41d511
--- /dev/null
+++ b/src/hydrilla/schemas/2.x/package_source-2.schema.json.license
@@ -0,0 +1,5 @@
+SPDX-License-Identifier: CC0-1.0
+
+Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+
+Available under the terms of Creative Commons Zero v1.0 Universal.