diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index e4e9cae6113..195bd33caaf 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -1130,7 +1130,7 @@ }, { "name": "Charmcraft", - "description": "Charmcraft project. Documentation: https://canonical-charmcraft.readthedocs-hosted.com", + "description": "Charmcraft project. Documentation: https://documentation.ubuntu.com/charmcraft/stable/", "fileMatch": ["charmcraft.yaml"], "url": "https://raw.githubusercontent.com/canonical/charmcraft/main/schema/charmcraft.json" }, @@ -5145,9 +5145,9 @@ } }, { - "name": "rockcraft", - "description": "rockcraft project. Documentation: https://canonical-rockcraft.readthedocs-hosted.com", - "fileMatch": ["rockcraft.yaml", "rockcraft.yml"], + "name": "Rockcraft", + "description": "Rockcraft project. Documentation: https://documentation.ubuntu.com/rockcraft/stable/", + "fileMatch": ["rockcraft.yaml"], "url": "https://raw.githubusercontent.com/canonical/rockcraft/main/schema/rockcraft.json" }, { @@ -5480,10 +5480,10 @@ "url": "https://raw.githubusercontent.com/blackbaud/skyux-config/4.x.x/skyuxconfig-schema.json" }, { - "name": "snapcraft", - "description": "snapcraft project. Documentation: https://snapcraft.io", + "name": "Snapcraft", + "description": "Snapcraft project. Documentation: https://documentation.ubuntu.com/snapcraft/stable/", "fileMatch": [".snapcraft.yaml", "snapcraft.yaml"], - "url": "https://raw.githubusercontent.com/snapcore/snapcraft/master/schema/snapcraft.json" + "url": "https://raw.githubusercontent.com/canonical/snapcraft/main/schema/snapcraft.json" }, { "name": "snowflake-config", diff --git a/src/schemas/json/publiccode.json b/src/schemas/json/publiccode.json index f7454b97bef..076755bc6bd 100644 --- a/src/schemas/json/publiccode.json +++ b/src/schemas/json/publiccode.json @@ -1,18 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/publiccode.json", - "additionalProperties": { - "description": "While the standard is structured to be meaningful on an international level, there are additional information that can be added that makes sense in specific countries, such as declaring compliance with local laws or regulations. The provided extension mechanism is the usage of country-specific sections.", - "type": "object", - "additionalProperties": true, - "required": ["countryExtensionVersion"], - "properties": { - "countryExtensionVersion": { - "description": "This key specifies the version to which the current extension schema adheres to, for forward compatibility.\n\nPlease note how the value of this key is independent from the top-level publiccodeYmlVersion one (see The Standard (core)). In such a way, the extensions schema versioning is independent both from the core version of the schema and from every other Country.", - "type": "string" - } - } - }, "definitions": { "Contact": { "type": "object", @@ -111,13 +99,42 @@ "type": "boolean" } } + }, + "Organisation": { + "type": "object", + "additionalProperties": false, + "required": ["uri"], + "properties": { + "name": { + "description": "The canonical name of the organisation publishing the software.", + "type": "string" + }, + "uri": { + "description": "The organisation publishing the software as a stable resolvable URI or a persistent identifier.", + "type": "string", + "format": "uri" + } + } } }, "description": "publiccode.yml is a metadata standard for repositories containing software developed or acquired by the Public Administration, aimed at making them easily discoverabile and thus reusable by other entities.\n\nBy including a publiccode.yml file in the root of a repository, and populating it with information about the software, technicians and civil servants can evaluate it. Automatic indexing tools can also be built, since the format is easily readable by both humans and machines.\n\npubliccode.yml is mandatory for all public software developed in Italy, according to the national guidelines: this enables the Developers Italia crawler to build the national software catalog. The standard is designed to be interoperable internationally, thus the country-specific keys are separated by the core part and are defined in specific sections that each government can rule.", "properties": { "publiccodeYmlVersion": { "description": "This key specifies the version to which the current publiccode.yml adheres to, for forward compatibility.", - "type": "string" + "type": "string", + "enum": [ + "0", + "0.2", + "0.2.0", + "0.2.1", + "0.2.2", + "0.3", + "0.3.0", + "0.4", + "0.4.0", + "0.5", + "0.5.0" + ] }, "name": { "description": "This key contains the name of the software. It contains the (short) public name of the product, which can be localised in the specific localisation section. It should be the name most people usually refer to the software. In case the software has both an internal \"code\" name and a commercial name, use the commercial name.", @@ -298,7 +315,8 @@ "web-conferencing", "website-builder", "whistleblowing", - "workflow-management" + "workflow-management", + "other" ] } }, @@ -335,17 +353,19 @@ "additionalProperties": false, "properties": { "countries": { - "description": "This key explicitly includes certain countries in the intended audience, i.e. the software explicitly claims compliance with specific processes, technologies or laws. All countries are specified using lowercase ISO 3166-1 alpha-2 two-letter country codes.", + "description": "This key explicitly includes certain countries in the intended audience, i.e. the software explicitly claims compliance with specific processes, technologies or laws. All countries are specified using ISO 3166-1 alpha-2 two-letter country codes.", "type": "array", "items": { - "type": "string" + "type": "string", + "pattern": "^[A-Z]{2}$" } }, "unsupportedCountries": { - "description": "This key explicitly marks countries as NOT supported. This might be the case if there is a conflict between how software is working and a specific law, process or technology. All countries are specified using lowercase ISO 3166-1 alpha-2 two-letter country codes.", + "description": "This key explicitly marks countries as NOT supported. This might be the case if there is a conflict between how software is working and a specific law, process or technology. All countries are specified using ISO 3166-1 alpha-2 two-letter country codes.", "type": "array", "items": { - "type": "string" + "type": "string", + "pattern": "^[A-Z]{2}$" } }, "scope": { @@ -547,7 +567,18 @@ } } }, - "it": { + "organisation": { + "$ref": "#/definitions/Organisation", + "description": "The organisation publishing the software." + }, + "fundedBy": { + "description": "A list of organisations that are currently known to be funding the development of this software.", + "type": "array", + "items": { + "$ref": "#/definitions/Organisation" + } + }, + "IT": { "type": "object", "additionalProperties": false, "required": ["countryExtensionVersion"], @@ -557,6 +588,7 @@ "type": "string" }, "conforme": { + "deprecated": true, "description": "This section contains the keys for auto-declaring the compliance with the current legislation, with respect to the following sections. Not including these keys implies that the compliance is not known or not declared.", "type": "object", "additionalProperties": false, @@ -618,12 +650,12 @@ } } }, + "additionalProperties": false, "required": [ "publiccodeYmlVersion", "name", "url", "platforms", - "categories", "developmentStatus", "softwareType", "description", diff --git a/src/test/publiccode/extended.json b/src/test/publiccode/extended.json index b281429f3e2..2848368c7c3 100644 --- a/src/test/publiccode/extended.json +++ b/src/test/publiccode/extended.json @@ -1,4 +1,17 @@ { + "IT": { + "countryExtensionVersion": "1.0", + "piattaforme": { + "anpr": true, + "cie": true, + "io": false, + "pagopa": true, + "spid": true + }, + "riuso": { + "codiceIPA": "c_h501" + } + }, "applicationSuite": "MegaProductivitySuite", "categories": ["content-management", "office"], "dependsOn": { @@ -51,32 +64,19 @@ } }, "developmentStatus": "development", + "fundedBy": [ + { + "name": "Dipartimento Trasformazione Digitale", + "uri": "urn:x-italian-pa:c_h501" + } + ], "inputTypes": ["text/plain"], "intendedAudience": { - "countries": ["it", "de"], + "countries": ["IT", "DE"], "scope": ["science-and-technology"], - "unsupportedCountries": ["us"] + "unsupportedCountries": ["US"] }, "isBasedOn": "https://github.com/italia/otello.git", - "it": { - "conforme": { - "gdpr": true, - "lineeGuidaDesign": true, - "misureMinimeSicurezza": true, - "modelloInteroperabilita": true - }, - "countryExtensionVersion": "0.2", - "piattaforme": { - "anpr": true, - "cie": true, - "io": false, - "pagopa": true, - "spid": true - }, - "riuso": { - "codiceIPA": "c_h501" - } - }, "landingURL": "https://example.com/italia/medusa", "legal": { "authorsFile": "AUTHORS", @@ -110,6 +110,10 @@ }, "monochromeLogo": "img/logo-mono.svg", "name": "Medusa", + "organisation": { + "name": "Dipartimento Trasformazione Digitale", + "uri": "urn:x-italian-pa:c_h501" + }, "outputTypes": ["text/plain"], "platforms": ["android", "ios"], "publiccodeYmlVersion": "0.2", diff --git a/src/test/publiccode/minimum.json b/src/test/publiccode/minimum.json index 4f4782c5fba..df0925e9a74 100644 --- a/src/test/publiccode/minimum.json +++ b/src/test/publiccode/minimum.json @@ -1,5 +1,4 @@ { - "categories": ["financial-reporting"], "description": { "en": { "features": ["Just one feature"], @@ -29,6 +28,5 @@ "platforms": ["web"], "publiccodeYmlVersion": "0.4", "softwareType": "standalone/desktop", - "softwareVersion": "dev", "url": "https://example.com/italia/medusa.git" }