Metadata Specification

$id https://raw.githubusercontent.com/verona-interfaces/metadata/master/schema/verona-module-metadata.json
$schema http://json-schema.org/draft-07/schema#

Properties

Name Type
type String
id String
name Array
description Array
version String
specVersion String
metadataVersion String
notSupportedFeatures Array
dependencies Array
maintainer Object
code Object

type

Title Verona Module Type
Type String
Required Yes
Enum
  • editor
  • player
  • schemer
  • coder

id

Title Identifier
Description The id will be used as reference by any application using this module
Type String
Required Yes
Pattern ^[A-Za-z][A-Za-z0-9_-]*$

name

Title Name
Description Name to be used in lists or forms when the identifier is too short
Type Array
Required Yes
Min Items 1

description

Title Description
Description The description should include any use case and should refer to used data formats.
Type Array
Required No
Min Items 1

version

Title Version in SemVer2 notation
Description Semantic Versioning 2.0.0 required (MAJOR.MINOR.PATCH).
Type String
Required Yes
Pattern ^(0|[1-9].(0|[1-9].(0|[1-9](?:-((?:0|[1-9]a-zA-Z-][0-9a-zA-Z-])(?:.(?:0|[1-9]a-zA-Z-][0-9a-zA-Z-]))))?(?:+([0-9a-zA-Z-]+(?:.[0-9a-zA-Z-]+)))?$
Examples
  • 1.5.2
  • 0.12.4-beta
  • 12.0.0-rc.1
  • specVersion

    Title Version of Supported Module Specification
    Description Version of the Verona specification supported by this module in the form 'MAJOR.MINOR'.
    Type String
    Required Yes
    Pattern ^(0|[1-9].(0|[1-9]$
    Examples
  • 1.5
  • 4.12
  • metadataVersion

    Title Version of Supported Metadata Specification
    Description Version of the Verona Metadata specification supported by this metadata in the form of 'MAJOR.MINOR'.
    Type String
    Required Yes
    Pattern ^(0|[1-9].(0|[1-9]$
    Examples
  • 1.5
  • 4.12
  • notSupportedFeatures

    Title List of all features not supported
    Description Use the predefined keys to name not supported features.
    Type Array
    Required No
    Unique Items true
    Min Items 1

    dependencies

    Title Dependencies
    Description Packages needed during runtime.
    Type Array
    Required No

    maintainer

    Title Maintainer
    Description Maintainer of the verona module
    Type Object
    Required No

    Properties

    Name Type
    name Array
    url String
    email String

    maintainer.name

    Title Name
    Description Name of maintainer
    Type Array
    Required No
    Min Items 1

    maintainer.url

    Title URL
    Type String
    Required No
    Format uri

    maintainer.email

    Title E-Mail
    Type String
    Required No
    Format email

    code

    Title Code
    Description Data about source code
    Type Object
    Required No

    Properties

    Name Type
    repositoryType String
    repositoryUrl String
    licenseType String
    licenseUrl String

    code.repositoryType

    Title Repository Type
    Type String
    Required No
    Default git
    Examples
  • svn
  • mercurial
  • code.repositoryUrl

    Title Repository Url
    Type String
    Required No
    Format uri

    code.licenseType

    Title License Type
    Type String
    Required No
    Default MIT
    Examples
  • BSD-3-Clause
  • ISC
  • code.licenseUrl

    Title License Url
    Type String
    Required No
    Default https://opensource.org/licenses/MIT
    Format uri

    Schema

    {
        "$id": "https://raw.githubusercontent.com/verona-interfaces/metadata/master/schema/verona-module-metadata.json",
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Verona Interfaces Module Metadata",
        "type": "object",
        "default": {
            "$schema": "https://raw.githubusercontent.com/verona-interfaces/metadata/master/schema/verona-module-metadata.json"
        },
        "properties": {
            "type": {
                "title": "Verona Module Type",
                "type": "string",
                "enum": [
                    "editor",
                    "player",
                    "schemer",
                    "coder"
                ]
            },
            "id": {
                "title": "Identifier",
                "description": "The id will be used as reference by any application using this module",
                "type": "string",
                "pattern": "^[A-Za-z][A-Za-z0-9_-]*$"
            },
            "name": {
                "title": "Name",
                "description": "Name to be used in lists or forms when the identifier is too short",
                "$ref": "#/$defs/languageTaggedStrings"
            },
            "description": {
                "title": "Description",
                "description": "The description should include any use case and should refer to used data formats.",
                "$ref": "#/$defs/languageTaggedStrings"
            },
            "version": {
                "title": "Version in SemVer2 notation",
                "description": "Semantic Versioning 2.0.0 required (MAJOR.MINOR.PATCH).",
                "type": "string",
                "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
                "examples": [
                    "1.5.2",
                    "0.12.4-beta",
                    "12.0.0-rc.1"
                ]
            },
            "specVersion": {
                "title": "Version of Supported Module Specification",
                "description": "Version of the Verona specification supported by this module in the form 'MAJOR.MINOR'.",
                "type": "string",
                "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
                "examples": [
                    "1.5",
                    "4.12"
                ]
            },
            "metadataVersion": {
                "title": "Version of Supported Metadata Specification",
                "description": "Version of the Verona Metadata specification supported by this metadata in the form of 'MAJOR.MINOR'.",
                "type": "string",
                "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
                "examples": [
                    "1.5",
                    "4.12"
                ]
            },
            "notSupportedFeatures": {
                "title": "List of all features not supported",
                "description": "Use the predefined keys to name not supported features.",
                "type": "array",
                "items": {
                    "type": "string",
                    "enum": [
                        "focus-notify",
                        "log-policy",
                        "paging-mode",
                        "navigation-denied",
                        "variable-data"
                    ]
                },
                "minItems": 1,
                "uniqueItems": true
            },
            "dependencies": {
                "title": "Dependencies",
                "description": "Packages needed during runtime.",
                "$ref": "#/$defs/dependencies"
            },
            "maintainer": {
                "title": "Maintainer",
                "description": "Maintainer of the verona module",
                "type": "object",
                "properties": {
                    "name": {
                        "title": "Name",
                        "description": "Name of maintainer",
                        "$ref": "#/$defs/languageTaggedStrings"
                    },
                    "url": {
                        "title": "URL",
                        "type": "string",
                        "format": "uri"
                    },
                    "email": {
                        "title": "E-Mail",
                        "type": "string",
                        "format": "email"
                    }
                }
            },
            "code": {
                "title": "Code",
                "description": "Data about source code",
                "type": "object",
                "properties": {
                    "repositoryType": {
                        "title": "Repository Type",
                        "type": "string",
                        "default": "git",
                        "examples": [
                            "svn",
                            "mercurial"
                        ]
                    },
                    "repositoryUrl": {
                        "title": "Repository Url",
                        "type": "string",
                        "format": "uri"
                    },
                    "licenseType": {
                        "title": "License Type",
                        "type": "string",
                        "default": "MIT",
                        "examples": [
                            "BSD-3-Clause",
                            "ISC"
                        ]
                    },
                    "licenseUrl": {
                        "title": "License Url",
                        "type": "string",
                        "format": "uri",
                        "default": "https://opensource.org/licenses/MIT"
                    }
                }
            }
        },
        "required": [
            "id",
            "version",
            "type",
            "name",
            "specVersion",
            "metadataVersion"
        ],
        "$defs": {
            "languageTaggedStrings": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "lang": {
                            "type": "string",
                            "title": "Language as ISO 639-1 Alpha-2 code",
                            "description": "This language code declares the language of the value.",
                            "pattern": "^[a-z]{2}$",
                            "default": "de",
                            "examples": [
                                "en",
                                "fr"
                            ]
                        },
                        "value": {
                            "type": "string",
                            "title": "Value",
                            "minLength": 1
                        }
                    },
                    "required": [
                        "value"
                    ]
                },
                "minItems": 1
            },
            "dependencies": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "id": {
                            "type": "string",
                            "title": "Id of the package or service",
                            "description": "Used to load or access on demand."
                        },
                        "description": {
                            "type": "string",
                            "title": "Description",
                            "description": "Helps to understand the function of the package or service."
                        },
                        "type": {
                            "title": "Dependency Type",
                            "type": "string",
                            "description": "File is to be provided along the module, service is an accessible url.",
                            "enum": [
                                "file",
                                "service"
                            ]
                        },
                        "required": {
                            "type": "boolean",
                            "title": "Required",
                            "description": "States whether this packages or service is needed for all use cases of the Verona module or only for some special use cases."
                        }
                    },
                    "required": [
                        "id",
                        "required",
                        "type"
                    ]
                }
            }
        }
    }