{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/publiccode.json","definitions":{"Contact":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"description":"The full name of one of the technical contacts. It must be a real person; do NOT use generic contact information, company departments, associations, etc.","type":"string"},"email":{"description":"The e-mail address of the technical contact. It must be an address where the contact can be reached directly; do NOT use mailing lists or generic contact points like \"info@acme.inc\".","type":"string","format":"email"},"phone":{"description":"phone number (with international prefix). This has to be a string.","type":"string"},"affiliation":{"description":"Explicit affiliation of the technical contact, such as a company or association name. Useful with multiple maintainers, to relate each contact to a maintainer entity.","type":"string"}}},"Contractor":{"type":"object","additionalProperties":false,"required":["name","until"],"properties":{"name":{"description":"The name of the contractor, whether it's a company or a physical person.","type":"string"},"until":{"description":"The date (YYYY-MM-DD) at which the maintenance is going to end. For community maintenance, this should not be more than 2 years in the future, and needs to be updated regularly as the project continues.","type":"string","format":"date"},"email":{"description":"The e-mail address of the technical contact. It must be an address where the contact can be reached directly; do NOT use mailing lists or generic contact points like \"info@acme.inc\".","type":"string","format":"email"},"website":{"description":"The maintainer website: either the main institutional website or a more project-specific page.","type":"string","format":"uri"}}},"Dependency":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"description":"The name of the dependency (e.g. MySQL, NFC Reader)","type":"string"},"versionMin":{"description":"The first compatible version","oneOf":[{"type":"number"},{"type":"string"}]},"versionMax":{"description":"The latest compatible version","oneOf":[{"type":"number"},{"type":"string"}]},"version":{"description":"The only major version for which the software is compatible. It assumes compatibility with all patches and bugfixes later applied to this version.","oneOf":[{"type":"number"},{"type":"string"}]},"optional":{"description":"Whether the dependency is optional or mandatory","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"}}},"FundingOrganisation":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"description":"The name of the organisation funding the software development.","type":"string"},"uri":{"description":"The URI identifying the organisation.","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 discoverable 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. Country-specific sections are deprecated in version 0.7 in favour of the generic supports and organisation keys.","properties":{"publiccodeYmlVersion":{"description":"The publiccode.yml specification version this file adheres to.","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","0.6","0.6.0","0.7","0.7.0"]},"name":{"description":"The (short) public name of the software, as most people usually refer to it. If the software has both an internal code name and a commercial name, use the commercial name. It can be localised in the description section.","type":"string"},"applicationSuite":{"description":"The name of the suite to which the software belongs.","type":"string"},"url":{"description":"A unique identifier for this software: a URL to the source code repository (git, svn, ...) where it is published. Prefer HTTP/HTTPS URLs that do not require authentication, if the repository supports multiple protocols.\n\nForks meant to contribute upstream should not change this value, so parsers can skip technical forks. A fork meant to be maintained separately from the original should change it, to become a distinct project.","type":"string","format":"uri"},"landingURL":{"description":"A human-readable landing page, useful when url only serves source code to a source control client rather than a browsable page. Ideally where a \"Go to the application source code\" button would lead. Can also point to a page offering an automated installer download.","type":"string","format":"uri"},"isBasedOn":{"description":"The URL(s) of the original project(s), if this software is a variant or fork of another software. Its presence identifies this software as descending from the specified repositories.","oneOf":[{"type":"string","format":"uri"},{"type":"array","items":{"type":"string","format":"uri"}}]},"softwareVersion":{"description":"The latest stable version number of the software. It is a display only string; parsers should not assume semantic versioning or any other specific format.","type":"string"},"releaseDate":{"description":"The date the latest version was released.","type":"string","format":"date"},"logo":{"description":"The path to the logo of the software. Vector formats (SVG or SVGZ) are preferred, but PNG is also accepted. It can be a relative path from the repository root or an absolute URL to the raw file, but the file must reside in the same repository as this publiccode.yml.","type":"string"},"monochromeLogo":{"deprecated":true,"description":"DEPRECATED. A monochromatic (black) logo. The logo should be in vector format; raster formats are only allowed as a fallback. In this case, they should be transparent PNGs, minimum 1000px wide. The key value can be the relative path to the file starting from the root of the repository, or it can be an absolute URL pointing to the raw logo. In both cases, the file must reside inside the same repository where the publiccode.yml file is stored.","type":"string"},"inputTypes":{"deprecated":true,"description":"DEPRECATED. A list of Media Types (MIME Types) as mandated in RFC 6838 which the application can handle as input.\n\nIn case the software does not support any input, you can skip this field or use application/x.empty.","type":"array","items":{"type":"string"}},"outputTypes":{"deprecated":true,"description":"DEPRECATED. A list of Media Types (MIME Types) as mandated in RFC 6838 which the application can handle as output.\n\nIn case the software does not support any output, you can skip this field or use application/x.empty.","type":"array","items":{"type":"string"}},"platforms":{"description":"The platforms that users use to access and operate the software, rather than the platform the software itself runs on. Use predefined values if possible.","oneOf":[{"type":"string","minLength":1},{"type":"array","minItems":1,"items":{"type":"string","minLength":1}}]},"categories":{"description":"A list of categories that can be used to describe the software and can help build catalogs of open software.","type":"array","items":{"enum":["accounting","agile-project-management","applicant-tracking","application-development","appointment-scheduling","backup","billing-and-invoicing","blog","budgeting","business-intelligence","business-process-management","cad","call-center-management","cloud-management","collaboration","communications","compliance-management","contact-management","content-management","crm","customer-service-and-support","data-analytics","data-collection","data-visualization","design","design-system","digital-asset-management","digital-citizenship","document-management","donor-management","e-commerce","e-signature","educational-content","email-management","email-marketing","employee-management","enterprise-project-management","enterprise-social-networking","erp","event-management","facility-management","feedback-and-reviews-management","financial-reporting","fleet-management","fundraising","gamification","geographic-information-systems","grant-management","graphic-design","help-desk","hr","ide","identity-management","instant-messaging","integrated-library-system","inventory-management","it-asset-management","it-development","it-management","it-security","it-service-management","knowledge-management","learning-management-system","marketing","mind-mapping","mobile-marketing","mobile-payment","network-management","office","online-booking","online-community","payment-gateway","payroll","predictive-analysis","procurement","productivity-suite","project-collaboration","project-management","property-management","real-estate-management","regulations-and-directives","remote-support","resource-management","sales-management","seo","service-desk","social-media-management","survey","talent-management","task-management","taxes-management","test-management","time-management","time-tracking","translation","video-conferencing","video-editing","visitor-management","voip","warehouse-management","web-collaboration","web-conferencing","website-builder","whistleblowing","workflow-management","other"]}},"usedBy":{"description":"The names of prominent public administrations known to be using this software, serving as testimonials. Parsers are encouraged to enrich this list with independently obtained signals of usage, such as forks owned by an administration.","type":"array","items":{"type":"string"}},"roadmap":{"description":"A link to a public roadmap of the software.","type":"string","format":"uri"},"developmentStatus":{"enum":["concept","development","beta","stable","obsolete"]},"softwareType":{"enum":["standalone/mobile","standalone/iot","standalone/desktop","standalone/web","standalone/backend","standalone/other","addon","library","configurationFiles"]},"supports":{"description":"A list of standards, regulations, frameworks or systems that the software supports or complies with.","type":"array","items":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"description":"An identifier for the supported standard, regulation, framework or system. It is either a known alias in the form alias:<name>, or any other valid URI referencing the resource directly.","type":"string","anyOf":[{"enum":["alias:gdpr","alias:eidas","alias:nis2","alias:cra","alias:spid","alias:cie","alias:anpr","alias:pagopa","alias:io"]},{"format":"uri","not":{"pattern":"^alias:"}}]}}}},"intendedAudience":{"type":"object","additionalProperties":false,"properties":{"countries":{"description":"Countries explicitly included in the intended audience, i.e. whose processes, technologies or laws the software explicitly claims compliance with. Uses uppercase ISO 3166-1 alpha-2 codes; lowercase codes are deprecated but still accepted.","type":"array","items":{"type":"string","oneOf":[{"pattern":"^[A-Z]{2}$"},{"deprecated":true,"description":"DEPRECATED. Use an uppercase ISO 3166-1 alpha-2 country code.","pattern":"^[a-z]{2}$"}]}},"unsupportedCountries":{"description":"Countries explicitly marked as NOT supported, for instance when the software conflicts with a specific law, process or technology. Uses uppercase ISO 3166-1 alpha-2 codes; lowercase codes are deprecated but still accepted.","type":"array","items":{"type":"string","oneOf":[{"pattern":"^[A-Z]{2}$"},{"deprecated":true,"description":"DEPRECATED. Use an uppercase ISO 3166-1 alpha-2 country code.","pattern":"^[a-z]{2}$"}]}},"scope":{"description":"Tags related to the field of application of the software.","type":"array","items":{"enum":["agriculture","culture","defence","education","emergency-services","employment","energy","environment","finance-and-economic-development","foreign-affairs","government","healthcare","infrastructures","justice","local-authorities","manufacturing","research","science-and-technology","security","society","sport","tourism","transportation","welfare"]}}}},"description":{"description":"A general, user-visible description of the software, for instance to build a web page describing it. Since the content is written in a specific language, specify the language as the subsection name, using an IETF BCP 47 language tag. The primary language subtag cannot be omitted.","type":"object","minProperties":1,"allOf":[{"not":{"type":"object","additionalProperties":{"not":{"type":"object","properties":{"longDescription":{}},"required":["longDescription"]}}}},{"not":{"type":"object","additionalProperties":{"not":{"type":"object","properties":{"features":{}},"required":["features"]}}}}],"additionalProperties":{"type":"object","additionalProperties":false,"required":["shortDescription"],"properties":{"localisedName":{"description":"The localised (short) public name of the software in this language, as most people usually refer to it. If the software has both an internal code name and a commercial name, use the commercial name.","type":"string"},"genericName":{"deprecated":true,"description":"DEPRECATED. This key is the generic name, which refers to the specific category to which the software belongs. Notable examples include \"Text Editor\", \"Word Processor\", \"Web Browser\" and \"Chat\". The generic name can be up to 35 characters long.","type":"string","maxLength":35},"shortDescription":{"description":"A short, single sentence description of the software, on a single line. Maximum 150 characters.","type":"string","maxLength":150},"longDescription":{"description":"A longer description of the software's capabilities, between 150 and 10000 characters, aimed at potential users rather than developers. Think of it as the description on the software's website. Supports basic markdown: *italic*, **bold**, bullet points and [links](#).","type":"string","minLength":150,"maxLength":10000},"documentation":{"description":"A URL to the user-level (not developer-level) documentation of the software. Prefer a hosted version browsable like a website (with a navigation index, a search bar, etc.), readable on both desktop and mobile. If only a document is available, link directly to it, commit it to the repository, and prefer an open format like PDF or ODT.","type":"string","format":"uri"},"apiDocumentation":{"description":"A URL to the API documentation of the software. Prefer a hosted version browsable like a website (with a navigation index, a search bar, etc.), ideally with an interactive interface (e.g. Swagger) if a reference or test deployment exists. If only a document is available, link directly to it, commit it to the repository, and prefer an open format like PDF or ODT.","type":"string","format":"uri"},"features":{"description":"A list of software features, describing what capabilities the software provides to public decision makers evaluating it. Prefer user-visible functionality over technical implementation details. Suggested number: between 5 and 20, depending on the software's size and complexity.","type":"array","items":{"type":"string"}},"screenshots":{"description":"Paths to files showing screenshots of the software, to give a quick idea of how it looks and works. Each value can be a relative path from the repository root or an absolute URL to the raw file, but the file must reside in the same repository as this publiccode.yml.","type":"array","items":{"type":"string"}},"videos":{"description":"URLs of videos showing how the software works, hosted on a site supporting the oEmbed standard (e.g. YouTube, Vimeo). As part of the documentation, it is recommended to publish them under an open license.","type":"array","items":{"type":"string","format":"uri"}},"awards":{"description":"A list of awards won by the software.","type":"array","items":{"type":"string"}}}}},"legal":{"type":"object","additionalProperties":false,"required":["license"],"properties":{"license":{"description":"The license under which the software is distributed, as a valid SPDX expression referring to one or more open source licenses.","type":"string"},"mainCopyrightOwner":{"description":"The entity that owns the copyright on most of the code in the repository, normally the one reported at the top of most files. Multiple owners, or an informal group (e.g. \"Linus Torvalds and all Linux contributors\"), can be listed as an English sentence. Omit if there is no main copyright owner; point to legal/authorsFile instead if the repo has an authors file.","type":"string"},"repoOwner":{"deprecated":true,"description":"DEPRECATED. This string describes the entity that owns this repository; this might or might not be the same entity who owns the copyright on the code itself. Use organisation/name instead.","type":"string"},"authorsFile":{"deprecated":true,"description":"DEPRECATED. Some open-source software identify copyright holders through a file listing all entities that own the copyright. This key refers to that file using a path relative to the root of the repository.","type":"string"}}},"maintenance":{"description":"Information on the maintenance status of the software, useful to evaluate whether it is actively developed.","type":"object","additionalProperties":false,"required":["type"],"allOf":[{"if":{"properties":{"type":{"const":"contract"}}},"then":{"properties":{"contractors":{}},"required":["contractors"]},"else":{"properties":{"contractors":false}}},{"if":{"properties":{"type":{"enum":["internal","community"]}}},"then":{"properties":{"contacts":{}},"required":["contacts"]}}],"properties":{"type":{"description":"How the software is currently maintained.","enum":["internal","contract","community","none"]},"contractors":{"description":"The entity or entities currently contracted for maintaining the software. Mandatory when maintenance/type is contract, and must not be present otherwise.","type":"array","minItems":1,"items":{"$ref":"#/definitions/Contractor"}},"contacts":{"description":"One or more contacts maintaining this software. This key is mandatory when maintenance/type is internal or community and optional otherwise.\n\nAll contacts need to be a physical person, not a company or an organisation. If somebody is acting as a representative of an institution, it must be listed within the affiliation of the contact.","type":"array","minItems":1,"items":{"$ref":"#/definitions/Contact"}}}},"localisation":{"description":"An overview of the localisation features of the software.","type":"object","additionalProperties":false,"required":["localisationReady","availableLanguages"],"properties":{"localisationReady":{"description":"If true, the software has infrastructure in place or is otherwise designed to be multilingual. It does not need to be available in more than one language.","type":"boolean"},"availableLanguages":{"description":"If present, this is the list of languages in which the software is available. Of course, this list will contain at least one language. The primary language subtag cannot be omitted, as mandated by the BCP 47.","type":"array","minItems":1,"items":{"type":"string"}}}},"dependsOn":{"description":"An overview of the system-level dependencies required to install and use this software, such as a database. Do not list source code level dependencies (e.g. software libraries); focus only on runtime and system-level dependencies that must be installed and maintained separately.","type":"object","additionalProperties":false,"properties":{"open":{"description":"Runtime dependencies distributed under an open source license.","type":"array","items":{"$ref":"#/definitions/Dependency"}},"proprietary":{"description":"Runtime dependencies distributed under a proprietary license.","type":"array","items":{"$ref":"#/definitions/Dependency"}},"hardware":{"description":"Hardware dependencies that must be owned to use the software.","type":"array","items":{"$ref":"#/definitions/Dependency"}}}},"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/FundingOrganisation"}},"IT":{"deprecated":true,"description":"DEPRECATED. Country-specific sections will be removed in publiccode.yml 1.0. Use supports for compliance and integrations, and organisation for the publishing administration.","type":"object","additionalProperties":false,"required":["countryExtensionVersion"],"properties":{"countryExtensionVersion":{"deprecated":true,"description":"DEPRECATED together with the entire Italian section. Version 1.0 is used by current files; 0.2 is accepted for compatibility with older publiccode.yml versions.","type":"string","enum":["0.2","1.0"]},"conforme":{"deprecated":true,"description":"DEPRECATED. This section contains keys for declaring compliance with Italian legislation. Use supports where an appropriate identifier or alias exists.","type":"object","additionalProperties":false,"properties":{"lineeGuidaDesign":{"deprecated":true,"description":"DEPRECATED. If true, the software is compliant with the former Italian design guidelines.","type":"boolean"},"modelloInteroperabilita":{"deprecated":true,"description":"DEPRECATED. If true, the software is compliant with the former Italian interoperability guidelines.","type":"boolean"},"misureMinimeSicurezza":{"deprecated":true,"description":"DEPRECATED. If true, the software is compliant with the Italian minimum ICT security measures for Public Administrations.","type":"boolean"},"gdpr":{"deprecated":true,"description":"DEPRECATED. If true, the software complies with the GDPR. Use supports with alias:gdpr instead.","type":"boolean"}}},"piattaforme":{"deprecated":true,"description":"DEPRECATED. Use supports with the corresponding platform alias instead.","type":"object","additionalProperties":false,"properties":{"spid":{"deprecated":true,"description":"DEPRECATED. If true, the software interfaces with SPID. Use supports with alias:spid instead.","type":"boolean"},"cie":{"deprecated":true,"description":"DEPRECATED. If true, the software interfaces with the Italian electronic identity card. Use supports with alias:cie instead.","type":"boolean"},"anpr":{"deprecated":true,"description":"DEPRECATED. If true, the software interfaces with ANPR. Use supports with alias:anpr instead.","type":"boolean"},"pagopa":{"deprecated":true,"description":"DEPRECATED. If true, the software interfaces with pagoPA. Use supports with alias:pagopa instead.","type":"boolean"},"io":{"deprecated":true,"description":"DEPRECATED. If true, the software interfaces with the IO app. Use supports with alias:io instead.","type":"boolean"}}},"riuso":{"deprecated":true,"description":"DEPRECATED. Use organisation to identify the publishing administration.","type":"object","additionalProperties":false,"properties":{"codiceIPA":{"deprecated":true,"description":"DEPRECATED. This key represents the administration code in the Italian Public Administration index. Use organisation/uri instead.","type":"string"}}}}},"it":{"deprecated":true,"description":"DEPRECATED. Use the uppercase IT country code. The entire country-specific section will be removed in publiccode.yml 1.0.","allOf":[{"$ref":"#/properties/IT"}]}},"additionalProperties":false,"required":["publiccodeYmlVersion","name","url","platforms","developmentStatus","softwareType","description","legal","maintenance","localisation"],"title":"JSON schema for publiccode.yml","type":"object"}