{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "http://bio.tools",
    "type": "object",
    "properties": {
        "tools": {
            "description": "Description of one or more bioinformatics tools - application software with well-defined data processing functions (inputs, outputs and operations).  This includes simple tools with one or a few closely related functions, and complex, multimodal tools with many functions.  Tools may be available available for immediate use as online services, or in a form which which you can download, install, configure and run yourself.",
            "type": "array",
            "items": {
                "tool": {
                    "description": "Attributes of a bioinformatics tool.",
                    "type": "object",
                    "properties": {
                        "summary": {
                            "description": "Basic information about the software.",
                            "type": "object",
                            "properties": {
                                "name": {
                                    "description": "Canonical software name assigned by the software developer or service provider.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100,
                                    "pattern": "[\\p{Zs}A-Za-z0-9+\\.,\\-_:;()]*"
                                },
                                "toolID": {
                                    "description": "Unique ID of the tool that is assigned upon registration of the software in bio.tools, normally identical to tool name.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 12,
                                    "pattern": "[A-Za-z0-9_\\-_~.]+"
                                },
                                "version": {
                                    "description": "Version (typically a version number) of the software assigned by the software developer or service provider.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 100,
                                    "pattern": "[\\p{Zs}A-Za-z0-9+\\.,\\-_:;()]*"
                                },
                                "versionID": {
                                    "description": "Unique ID of a tool version that is assigned upon registration of the software in bio.tools.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 12,
                                    "pattern": "[A-Za-z0-9_\\-_~.]+"
                                },
                                "doi": {
                                    "description": "Canonical Digital Object Identifier of the software assigned by the software developer or service provider.",
                                    "type": "string",
                                    "pattern": "(doi:)?10.[0-9]{4,9}[A-Za-z0-9:;\\)\\(_/.-]+"
                                },
                                "shortDescription": {
                                    "description": "Short and concise textual description of the software function.",
                                    "type": "string",
                                    "minLength": 10,
                                    "maxLength": 200
                                },
                                "description": {
                                    "description": "Textual description of the software.",
                                    "type": "string",
                                    "maxLength": 1000
                                },
                                "homepage": {
                                    "type": "string",
                                    "format": "uri",
                                    "pattern": "https?://.+"
                                }
                            }
                        },
                        "function": {
                            "description": "Details of a function the software provides, expressed in terms from the EDAM ontology.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "operation": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "uri": {
                                                    "description": "URL of an EDAM Operation concept.",
                                                    "type": "string",
                                                    "format": "uri",
                                                    "pattern": "http://edamontology.org/operation_[0-9]{4}"
                                                },
                                                "term": {
                                                    "description": "An EDAM Operation term (preferred label or synonym).",
                                                    "type": "string"
                                                }
                                            },
                                            "oneOf": [
                                                {
                                                    "required": [
                                                        "uri"
                                                    ]
                                                },
                                                {
                                                    "required": [
                                                        "term"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "input": {
                                        "description": "Details of primary input data.",
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "description": "Type of primary input data, if any (EDAM data).",
                                                    "type": "object",
                                                    "properties": {
                                                        "uri": {
                                                            "description": "URL of an EDAM Data concept.",
                                                            "type": "string",
                                                            "format": "uri",
                                                            "pattern": "http://edamontology.org/operation_[0-9]{4}"
                                                        },
                                                        "term": {
                                                            "description": "An EDAM Data term (preferred label or synonym).",
                                                            "type": "string"
                                                        }
                                                    },
                                                    "oneOf": [
                                                        {
                                                            "required": [
                                                                "uri"
                                                            ]
                                                        },
                                                        {
                                                            "required": [
                                                                "term"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "format": {
                                                    "description": "Allowed format(s) of the input data (EDAM Format).",
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "uri": {
                                                                "description": "URL of an EDAM Forrmat concept.",
                                                                "type": "string",
                                                                "format": "uri",
                                                                "pattern": "http://edamontology.org/format_[0-9]{4}"
                                                            },
                                                            "term": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "oneOf": [
                                                            {
                                                                "required": [
                                                                    "uri"
                                                                ]
                                                            },
                                                            {
                                                                "required": [
                                                                    "term"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "output": {
                                        "description": "Details of primary output data.",
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "description": "Type of primary output data, if any (EDAM Data).",
                                                    "type": "object",
                                                    "properties": {
                                                        "uri": {
                                                            "description": "URL of an EDAM Data concept.",
                                                            "type": "string",
                                                            "format": "uri",
                                                            "pattern": "http://edamontology.org/operation_[0-9]{4}"
                                                        },
                                                        "term": {
                                                            "description": "An EDAM Data term (preferred label or synonym).",
                                                            "type": "string"
                                                        }
                                                    },
                                                    "oneOf": [
                                                        {
                                                            "required": [
                                                                "uri"
                                                            ]
                                                        },
                                                        {
                                                            "required": [
                                                                "term"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "format": {
                                                    "description": "Allowed format(s) of the output data (EDAM Format).",
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "uri": {
                                                                "description": "URL of an EDAM Forrmat concept.",
                                                                "type": "string",
                                                                "format": "uri",
                                                                "pattern": "http://edamontology.org/format_[0-9]{4}"
                                                            },
                                                            "term": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "oneOf": [
                                                            {
                                                                "required": [
                                                                    "uri"
                                                                ]
                                                            },
                                                            {
                                                                "required": [
                                                                    "term"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "comment": {
                                        "description": "Concise comment about this function, if not apparent from the software description and EDAM annotations.",
                                        "type": "string",
                                        "maxLength": 500
                                    }
                                }
                            }
                        },
                        "labels": {
                            "description": "Miscellaneous scientific, technical and administrative details of the software, expressed in terms from controlled vocabularies.",
                            "type": "object",
                            "properties": {
                                "toolType": {
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "Command-line tool",
                                            "Database portal",
                                            "Desktop application",
                                            "Library",
                                            "Ontology",
                                            "Plug-in",
                                            "Script",
                                            "SPARQL endpoint",
                                            "Suite",
                                            "Web application",
                                            "Web API",
                                            "Web service",
                                            "Workbench",
                                            "Workflow"
                                        ]
                                    }
                                },
                                "topic": {
                                    "description": "General scientific domain the software serves or other general category (EDAM Topic).",
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "uri": {
                                                "description": "URL of an EDAM Topic concept.",
                                                "type": "string",
                                                "format": "uri",
                                                "pattern": "http://edamontology.org/topic_[0-9]{4}"
                                            },
                                            "term": {
                                                "description": "An EDAM Topic term (preferred label or synonym).",
                                                "type": "string"
                                            }
                                        },
                                        "oneOf": [
                                            {
                                                "required": [
                                                    "uri"
                                                ]
                                            },
                                            {
                                                "required": [
                                                    "term"
                                                ]
                                            }
                                        ]
                                    }
                                },
                                "goTermID": {
                                    "description": "Gene function including molecular function, cellular component and biological process.  The ID of Gene Ontology (GO) concept(s) are specified.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "pattern": "[0-9]{7}|GO:[0-9]{7}"
                                    }
                                },
                                "soTermID": {
                                    "description": "Features which can be located on a biological sequence. The ID of Sequence Ontology (SO) concept(s) are specified.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "pattern": "[0-9]{7}|SO:[0-9]{7}"
                                    }
                                },
                                "taxId": {
                                    "description": "NCBI taxonomy ID of taxonomic group the software (particularly database portals) caters for.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "pattern": "[1-9][0-9]{0,8}"
                                    }
                                },
                                "operatingSystem": {
                                    "description": "The operating system supported by a downloadable software package.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "Linux",
                                            "Windows",
                                            "Mac"
                                        ]
                                    }
                                },
                                "language": {
                                    "description": "Name of programming language the software source code was written in.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "ActionScript",
                                            "Ada",
                                            "AppleScript",
                                            "Assembly language",
                                            "AWK",
                                            "Bash",
                                            "C",
                                            "C#",
                                            "C++",
                                            "COBOL",
                                            "ColdFusion",
                                            "CWL",
                                            "D",
                                            "Delphi",
                                            "Dylan",
                                            "Eiffel",
                                            "Forth",
                                            "Fortran",
                                            "Groovy",
                                            "Haskell",
                                            "Icarus",
                                            "Java",
                                            "Javascript",
                                            "JSP",
                                            "LabVIEW",
                                            "Lisp",
                                            "Lua",
                                            "Maple",
                                            "Mathematica",
                                            "MATLAB",
                                            "MLXTRAN",
                                            "NMTRAN",
                                            "Pascal",
                                            "Perl",
                                            "PHP",
                                            "Prolog",
                                            "PyMOL",
                                            "Python",
                                            "R",
                                            "Racket",
                                            "REXX",
                                            "Ruby",
                                            "SAS",
                                            "Scala",
                                            "Scheme",
                                            "Shell",
                                            "Smalltalk",
                                            "SQL",
                                            "Turing",
                                            "Verilog",
                                            "VHDL",
                                            "Visual Basic",
                                            "Other"
                                        ]
                                    }
                                },
                                "license": {
                                    "description": "Software or data usage license.",
                                    "type": "string",
                                    "enum": [
                                        "0BSD",
                                        "AAL",
                                        "ADSL",
                                        "AFL-1.1",
                                        "AFL-1.2",
                                        "AFL-2.0",
                                        "AFL-2.1",
                                        "AFL-3.0",
                                        "AGPL-1.0",
                                        "AMDPLPA",
                                        "AML",
                                        "AMPAS",
                                        "ANTLR-PD",
                                        "APAFML",
                                        "APL-1.0",
                                        "APSL-1.0",
                                        "APSL-1.1",
                                        "APSL-1.2",
                                        "APSL-2.0",
                                        "Abstyles",
                                        "Adobe-2006",
                                        "Adobe-Glyph",
                                        "Afmparse",
                                        "Aladdin",
                                        "Apache-1.0",
                                        "Apache-1.1",
                                        "Apache-2.0",
                                        "Artistic-1.0",
                                        "Artistic-1.0-Perl",
                                        "Artistic-1.0-cl8",
                                        "Artistic-2.0",
                                        "BSD-2-Clause",
                                        "BSD-2-Clause-FreeBSD",
                                        "BSD-2-Clause-NetBSD",
                                        "BSD-3-Clause",
                                        "BSD-3-Clause-Attribution",
                                        "BSD-3-Clause-Clear",
                                        "BSD-3-Clause-LBNL",
                                        "BSD-3-Clause-No-Nuclear-License",
                                        "BSD-3-Clause-No-Nuclear-License-2014",
                                        "BSD-3-Clause-No-Nuclear-Warranty",
                                        "BSD-4-Clause",
                                        "BSD-4-Clause-UC",
                                        "BSD-Protection",
                                        "BSD-Source-Code",
                                        "BSL-1.0",
                                        "Bahyph",
                                        "Barr",
                                        "Beerware",
                                        "BitTorrent-1.0",
                                        "BitTorrent-1.1",
                                        "Borceux",
                                        "CATOSL-1.1",
                                        "CC-BY-1.0",
                                        "CC-BY-2.0",
                                        "CC-BY-2.5",
                                        "CC-BY-3.0",
                                        "CC-BY-4.0",
                                        "CC-BY-NC-1.0",
                                        "CC-BY-NC-2.0",
                                        "CC-BY-NC-2.5",
                                        "CC-BY-NC-3.0",
                                        "CC-BY-NC-4.0",
                                        "CC-BY-NC-ND-1.0",
                                        "CC-BY-NC-ND-2.0",
                                        "CC-BY-NC-ND-2.5",
                                        "CC-BY-NC-ND-3.0",
                                        "CC-BY-NC-ND-4.0",
                                        "CC-BY-NC-SA-1.0",
                                        "CC-BY-NC-SA-2.0",
                                        "CC-BY-NC-SA-2.5",
                                        "CC-BY-NC-SA-3.0",
                                        "CC-BY-NC-SA-4.0",
                                        "CC-BY-ND-1.0",
                                        "CC-BY-ND-2.0",
                                        "CC-BY-ND-2.5",
                                        "CC-BY-ND-3.0",
                                        "CC-BY-ND-4.0",
                                        "CC-BY-SA-1.0",
                                        "CC-BY-SA-2.0",
                                        "CC-BY-SA-2.5",
                                        "CC-BY-SA-3.0",
                                        "CC-BY-SA-4.0",
                                        "CC0-1.0",
                                        "CDDL-1.0",
                                        "CDDL-1.1",
                                        "CECILL-1.0",
                                        "CECILL-1.1",
                                        "CECILL-2.0",
                                        "CECILL-2.1",
                                        "CECILL-B",
                                        "CECILL-C",
                                        "CNRI-Jython",
                                        "CNRI-Python",
                                        "CNRI-Python-GPL-Compatible",
                                        "CPAL-1.0",
                                        "CPL-1.0",
                                        "CPOL-1.02",
                                        "CUA-OPL-1.0",
                                        "Caldera",
                                        "ClArtistic",
                                        "Condor-1.1",
                                        "Crossword",
                                        "CrystalStacker",
                                        "Cube",
                                        "D-FSL-1.0",
                                        "DOC",
                                        "DSDP",
                                        "Dotseqn",
                                        "ECL-1.0",
                                        "ECL-2.0",
                                        "EFL-1.0",
                                        "EFL-2.0",
                                        "EPL-1.0",
                                        "EUDatagrid",
                                        "EUPL-1.0",
                                        "EUPL-1.1",
                                        "Entessa",
                                        "ErlPL-1.1",
                                        "Eurosym",
                                        "FSFAP",
                                        "FSFUL",
                                        "FSFULLR",
                                        "FTL",
                                        "Fair",
                                        "Frameworx-1.0",
                                        "FreeImage",
                                        "GFDL-1.1",
                                        "GFDL-1.2",
                                        "GFDL-1.3",
                                        "GL2PS",
                                        "GPL-1.0",
                                        "GPL-2.0",
                                        "GPL-3.0",
                                        "Giftware",
                                        "Glide",
                                        "Glulxe",
                                        "HPND",
                                        "HaskellReport",
                                        "IBM-pibs",
                                        "ICU",
                                        "IJG",
                                        "IPA",
                                        "IPL-1.0",
                                        "ISC",
                                        "ImageMagick",
                                        "Imlib2",
                                        "Info-ZIP",
                                        "Intel",
                                        "Intel-ACPI",
                                        "Interbase-1.0",
                                        "JSON",
                                        "JasPer-2.0",
                                        "LAL-1.2",
                                        "LAL-1.3",
                                        "LGPL-2.0",
                                        "LGPL-2.1",
                                        "LGPL-3.0",
                                        "LGPLLR",
                                        "LPL-1.0",
                                        "LPL-1.02",
                                        "LPPL-1.0",
                                        "LPPL-1.1",
                                        "LPPL-1.2",
                                        "LPPL-1.3a",
                                        "LPPL-1.3c",
                                        "Latex2e",
                                        "Leptonica",
                                        "LiLiQ-P-1.1",
                                        "LiLiQ-R-1.1",
                                        "LiLiQ-Rplus-1.1",
                                        "Libpng",
                                        "MIT",
                                        "MIT-CMU",
                                        "MIT-advertising",
                                        "MIT-enna",
                                        "MIT-feh",
                                        "MITNFA",
                                        "MPL-1.0",
                                        "MPL-1.1",
                                        "MPL-2.0",
                                        "MPL-2.0-no-copyleft-exception",
                                        "MS-PL",
                                        "MS-RL",
                                        "MTLL",
                                        "MakeIndex",
                                        "MirOS",
                                        "Motosoto",
                                        "Multics",
                                        "Mup",
                                        "NASA-1.3",
                                        "NBPL-1.0",
                                        "NCSA",
                                        "NGPL",
                                        "NLOD-1.0",
                                        "NLPL",
                                        "NOSL",
                                        "NPL-1.0",
                                        "NPL-1.1",
                                        "NPOSL-3.0",
                                        "NRL",
                                        "NTP",
                                        "Naumen",
                                        "NetCDF",
                                        "Newsletr",
                                        "Nokia",
                                        "Noweb",
                                        "Nunit",
                                        "OCCT-PL",
                                        "OCLC-2.0",
                                        "ODbL-1.0",
                                        "OFL-1.0",
                                        "OFL-1.1",
                                        "OGTSL",
                                        "OLDAP-1.1",
                                        "OLDAP-1.2",
                                        "OLDAP-1.3",
                                        "OLDAP-1.4",
                                        "OLDAP-2.0",
                                        "OLDAP-2.0.1",
                                        "OLDAP-2.1",
                                        "OLDAP-2.2",
                                        "OLDAP-2.2.1",
                                        "OLDAP-2.2.2",
                                        "OLDAP-2.3",
                                        "OLDAP-2.4",
                                        "OLDAP-2.5",
                                        "OLDAP-2.6",
                                        "OLDAP-2.7",
                                        "OLDAP-2.8",
                                        "OML",
                                        "OPL-1.0",
                                        "OSET-PL-2.1",
                                        "OSL-1.0",
                                        "OSL-1.1",
                                        "OSL-2.0",
                                        "OSL-2.1",
                                        "OSL-3.0",
                                        "OpenSSL",
                                        "PDDL-1.0",
                                        "PHP-3.0",
                                        "PHP-3.01",
                                        "Plexus",
                                        "PostgreSQL",
                                        "Python-2.0",
                                        "QPL-1.0",
                                        "Qhull",
                                        "RHeCos-1.1",
                                        "RPL-1.1",
                                        "RPL-1.5",
                                        "RPSL-1.0",
                                        "RSA-MD",
                                        "RSCPL",
                                        "Rdisc",
                                        "Ruby",
                                        "SAX-PD",
                                        "SCEA",
                                        "SGI-B-1.0",
                                        "SGI-B-1.1",
                                        "SGI-B-2.0",
                                        "SISSL",
                                        "SISSL-1.2",
                                        "SMLNJ",
                                        "SMPPL",
                                        "SNIA",
                                        "SPL-1.0",
                                        "SWL",
                                        "Saxpath",
                                        "Sendmail",
                                        "SimPL-2.0",
                                        "Sleepycat",
                                        "Spencer-86",
                                        "Spencer-94",
                                        "Spencer-99",
                                        "SugarCRM-1.1.3",
                                        "TCL",
                                        "TMate",
                                        "TORQUE-1.1",
                                        "TOSL",
                                        "UPL-1.0",
                                        "Unicode-TOU",
                                        "Unlicense",
                                        "VOSTROM",
                                        "VSL-1.0",
                                        "Vim",
                                        "W3C",
                                        "W3C-19980720",
                                        "WTFPL",
                                        "Watcom-1.0",
                                        "Wsuipa",
                                        "X11",
                                        "XFree86-1.1",
                                        "XSkat",
                                        "Xerox",
                                        "Xnet",
                                        "YPL-1.0",
                                        "YPL-1.1",
                                        "ZPL-1.1",
                                        "ZPL-2.0",
                                        "ZPL-2.1",
                                        "Zed",
                                        "Zend-2.0",
                                        "Zimbra-1.3",
                                        "Zimbra-1.4",
                                        "Zlib",
                                        "bzip2-1.0.5",
                                        "bzip2-1.0.6",
                                        "curl",
                                        "diffmark",
                                        "dvipdfm",
                                        "eGenix",
                                        "gSOAP-1.3b",
                                        "gnuplot",
                                        "iMatix",
                                        "libtiff",
                                        "mpich2",
                                        "psfrag",
                                        "psutils",
                                        "xinetd",
                                        "xpp",
                                        "zlib-acknowledgement",
                                        "Proprietary",
                                        "Other"
                                    ]
                                },
                                "collectionID": {
                                    "description": "Unique ID of a collection that the software has been assigned to within bio.tools.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "pattern": "[A-Za-z0-9_\\- _ ~]+"
                                    }
                                },
                                "maturity": {
                                    "description": "How mature the software product is.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "Emerging",
                                            "Mature",
                                            "Legacy"
                                        ]
                                    }
                                },
                                "cost": {
                                    "description": "Monetary cost of acquiring the software.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "Free of charge",
                                            "Free of charge (with restrictions)",
                                            "Commercial"
                                        ]
                                    }
                                },
                                "accessibility": {
                                    "description": "Whether the software is freely available for use.",
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "enum": [
                                            "Open access",
                                            "Restricted access",
                                            "Proprietary",
                                            "Freeware"
                                        ]
                                    }
                                }
                            }
                        },
                        "relation": {
                            "description": "Details of a relationship this software shares with other software registered in bio.tools.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "biotoolsId": {
                                        "description": "bio.tools ID (URL)  of an existing bio.tools entry which this software is related to.",
                                        "type": "string",
                                        "format": "uri",
                                        "pattern": "https?://bio.tools/(tool|t)/[A-Za-z0-9_\\- _ ~]+((/(version|v)/)?[A-Za-z0-9_\\- _ ~]+)?"
                                    },
                                    "type": {
                                        "description": "Type of relation between this and another registered software.",
                                        "type": "string",
                                        "enum": [
                                            "isNewVersionOf",
                                            "hasNewVersion",
                                            "isInterfaceTo",
                                            "hasInterface",
                                            "uses",
                                            "usedBy",
                                            "extends",
                                            "extendedBy",
                                            "includes",
                                            "includedIn",
                                            "isPluginFor",
                                            "hasPlugin"
                                        ]
                                    }
                                }
                            }
                        },
                        "apiSpec": {
                            "description": "Details of the API to a service including service endpoints.",
                            "type": "object",
                            "properties": {
                                "baseURL": {
                                    "description": "The base URL of a service, upon which one or more service endpoints are hung.",
                                    "type": "string",
                                    "format": "uri",
                                    "pattern": "https?://.+"
                                },
                                "endpoint": {
                                    "description": "Details of an endpoint to a service, i.e. a URL that can be used to invoke a particular function of a service.",
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "httpMethod": {
                                                "description": "HTTP method used by the endpoint.",
                                                "type": "string",
                                                "enum": [
                                                    "OPTIONS",
                                                    "GET",
                                                    "HEAD",
                                                    "POST",
                                                    "PUT",
                                                    "DELETE",
                                                    "TRACE",
                                                    "CONNECT"
                                                ]
                                            },
                                            "urlTemplate": {
                                                "description": "Template for a URL fragment, which when appended to the base URL, defines the syntax of a valid resolvable URL. The template can include parameters that must be substituted before the URL is resolved.",
                                                "type": "string"
                                            },
                                            "output": {
                                                "description": "Details of output data provided by the endpoint.",
                                                "type": "object",
                                                "properties": {
                                                    "data": {
                                                        "description": "Type of output data, if any (EDAM Data).",
                                                        "type": "object",
                                                        "properties": {
                                                            "uri": {
                                                                "description": "URL of an EDAM Data concept.",
                                                                "type": "string",
                                                                "format": "uri",
                                                                "pattern": "http://edamontology.org/data_[0-9]{4}"
                                                            },
                                                            "term": {
                                                                "description": "An EDAM Data term (preferred label or synonym).",
                                                                "type": "string"
                                                            }
                                                        },
                                                        "oneOf": [
                                                            {
                                                                "required": [
                                                                    "uri"
                                                                ]
                                                            },
                                                            {
                                                                "required": [
                                                                    "term"
                                                                ]
                                                            }
                                                        ]
                                                    },
                                                    "format": {
                                                        "description": "Possible format(s) of the output data (EDAM Format).",
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "properties": {
                                                                "uri": {
                                                                    "description": "URL of an EDAM Forrmat concept.",
                                                                    "type": "string",
                                                                    "format": "uri",
                                                                    "pattern": "http://edamontology.org/format_[0-9]{4}"
                                                                },
                                                                "term": {
                                                                    "description": "An EDAM Format term (preferred label or synonym).",
                                                                    "type": "string"
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            "summary": {
                                                "description": "A textual summary of a service endpoint.",
                                                "type": "string",
                                                "maxLength": 1000
                                            },
                                            "parameter": {
                                                "description": "A query string parameter in the template URL that that must be substituted before the URL is resolved.",
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "urlTemplateFragment": {
                                                            "description": "A fragment from the URL template corresponding to a URL parameter, which is replaced by some value when the service is called.",
                                                            "type": "string"
                                                        },
                                                        "data": {
                                                            "description": "Type of data (EDAM Data) of a parameter of an endpoint.",
                                                            "type": "object",
                                                            "properties": {
                                                                "type": "object",
                                                                "properties": {
                                                                    "uri": {
                                                                        "description": "URL of an EDAM Data concept.",
                                                                        "type": "string",
                                                                        "format": "uri",
                                                                        "pattern": "http://edamontology.org/operation_[0-9]{4}"
                                                                    },
                                                                    "term": {
                                                                        "description": "An EDAM Data term (preferred label or synonym).",
                                                                        "type": "string"
                                                                    }
                                                                }
                                                            }
                                                        },
                                                        "comment": {
                                                            "description": "A comment about a parameter of an endpoint.",
                                                            "type": "string",
                                                            "maxLength": 1000
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        },
                        "link": {
                            "description": "A miscellaneous link for the software e.g. repository, issue tracker or mailing list.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "A link of some relevance to the software (URL).",
                                        "type": "string",
                                        "format": "uri",
                                        "pattern": "(https?|s?ftp)://.+"
                                    },
                                    "type": {
                                        "description": "The type of data, information or system that is obtained when the link is resolved.",
                                        "type": "string",
                                        "enum": [
                                            "Browser",
                                            "Helpdesk",
                                            "Issue tracker",
                                            "Mailing list",
                                            "Mirror",
                                            "Registry",
                                            "Repository",
                                            "Social media"
                                        ]
                                    },
                                    "comment": {
                                        "description": "Comment about the link.",
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "download": {
                            "description": "A link to a download for the software, e.g. source code, virtual machine image or container.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "Link to download (or repo providing a download) for the software.",
                                        "type": "string",
                                        "format": "uri",
                                        "pattern": "(https?|s?ftp)://.+"
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "API specification",
                                            "Biological data",
                                            "Binaries",
                                            "Binary package",
                                            "Command-line specification",
                                            "Container file",
                                            "CWL file",
                                            "Icon",
                                            "Ontology",
                                            "Screenshot",
                                            "Source code",
                                            "Source package",
                                            "Test data",
                                            "Test script",
                                            "Tool wrapper (galaxy)",
                                            "Tool wrapper (taverna)",
                                            "Tool wrapper (other)",
                                            "VM image"
                                        ]
                                    },
                                    "comment": {
                                        "description": "Comment about the download",
                                        "type": "string",
                                        "maxLength": 1000
                                    },
                                    "diskFormat": {
                                        "description": "Virtual machine disk image format.",
                                        "type": "string",
                                        "enum": [
                                            "aki",
                                            "ami",
                                            "ari",
                                            "iso",
                                            "qcow2",
                                            "raw",
                                            "vdi",
                                            "vhd",
                                            "vmdk"
                                        ]
                                    },
                                    "containerFormat": {
                                        "description": "Virtual machine container format.",
                                        "type": "string",
                                        "enum": [
                                            "aki",
                                            "ami",
                                            "ari",
                                            "bare",
                                            "docker",
                                            "ovf",
                                            "rkt",
                                            "singularity"
                                        ]
                                    },
                                    "cmd": {
                                        "description": "A useful command pertinent to the download, e.g. for getting or installing a tool.",
                                        "type": "string",
                                        "maxLength": 1000
                                    }
                                }
                            }
                        },
                        "documentation": {
                            "description": "A link to documentation about the software e.g. manual, API specification or training material.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "Link to documentation on the web for the tool.",
                                        "type": "string",
                                        "format": "uri",
                                        "pattern": "(https?|s?ftp)://.+"
                                    },
                                    "type": {
                                        "description": "Type of documentation that is linked to.",
                                        "type": "string",
                                        "enum": [
                                            "API documentation",
                                            "Citation instructions",
                                            "General",
                                            "Manual",
                                            "Terms of use",
                                            "Training material",
                                            "Other"
                                        ]
                                    },
                                    "comment": {
                                        "description": "Comment about the documentation.",
                                        "type": "string",
                                        "maxLength": 1000
                                    }
                                }
                            }
                        },
                        "publication": {
                            "description": "A publication about the software.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "doi": {
                                        "description": "Digital Object Identifier (DOI) of a publication about the software.",
                                        "type": "string",
                                        "pattern": "(doi:)?10.[0-9]{4,9}[A-Za-z0-9:;\\)\\(_/.-]+"
                                    },
                                    "pmid": {
                                        "description": "PubMed Identifier (PMID) of a publication about the software.",
                                        "type": "string",
                                        "pattern": "(PMID:)?[1-9][0-9]{0,8}"
                                    },
                                    "pmcid": {
                                        "description": "PubMed Central Identifier (PMCID) of a publication about the software.",
                                        "type": "string",
                                        "pattern": "(PMC)[1-9][0-9]{0,8}"
                                    },
                                    "type": {
                                        "description": "Type of publication.",
                                        "type": "string",
                                        "enum": [
                                            "Primary",
                                            "Benchmark",
                                            "Review",
                                            "Other"
                                        ]
                                    }
                                },
                                "oneOf": [
                                    {
                                        "required": [
                                            "doi"
                                        ]
                                    },
                                    {
                                        "required": [
                                            "pmid"
                                        ]
                                    },
                                    {
                                        "required": [
                                            "pmcid"
                                        ]
                                    }
                                ]
                            }
                        },
                        "contact": {
                            "description": "Details of primary point(s) of contact, e.g. person, helpdesk or mailing list.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "description": "Email address of the primary contact.",
                                        "type": "string",
                                        "pattern": "[A-Za-z0-9_]+([-+.'][A-Za-z0-9_]+)*@[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*\\.[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*"
                                    },
                                    "url": {
                                        "description": "URL of the primary contact.",
                                        "type": "string",
                                        "format": "uri"
                                    },
                                    "name": {
                                        "description": "Name of the primary contact.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                    },
                                    "tel": {
                                        "description": "Telephone number of primary contact.",
                                        "type": "string"
                                    }
                                }
                            }
                        },
                        "credit": {
                            "description": "An individual or organisation that should be credited for the software.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "description": "Name of the entity that is credited.",
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100
                                    },
                                    "email": {
                                        "description": "mail address of the entity that is credited.",
                                        "type": "string",
                                        "pattern": "[A-Za-z0-9_]+([-+.'][A-Za-z0-9_]+)*@[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*\\.[A-Za-z0-9_]+([-.][A-Za-z0-9_]+)*"
                                    },
                                    "url": {
                                        "description": "URL for the entity that is credited, e.g. homepage of an institute.",
                                        "type": "string",
                                        "format": "uri"
                                    },
                                    "orcidId": {
                                        "description": "Unique identifier (ORCID iD) of a person that is credited.",
                                        "type": "string",
                                        "pattern": "http://orcid.org/[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}"
                                    },
                                    "gridId": {
                                        "description": "Unique identifier (GRID ID) of an organisation that is credited.",
                                        "type": "string",
                                        "pattern": "grid.[0-9]{4,}.[a-f0-9]{1,2}"
                                    },
                                    "typeEntity": {
                                        "description": "Type of entity that is credited.",
                                        "type": "string",
                                        "enum": [
                                            "Person",
                                            "Project",
                                            "Division",
                                            "Institute",
                                            "Consortium",
                                            "Funding agency"
                                        ]
                                    },
                                    "typeRole": {
                                        "description": "Role performed by entity that is credited.",
                                        "type": "string",
                                        "enum": [
                                            "Developer",
                                            "Maintainer",
                                            "Provider",
                                            "Contributor",
                                            "Documentor",
                                            "Support"
                                        ]
                                    },
                                    "comment": {
                                        "description": "A comment about the credit.",
                                        "type": "string",
                                        "maxLength": 1000
                                    }
                                },
                                "oneOf": [
                                    {
                                        "required": [
                                            "email"
                                        ]
                                    },
                                    {
                                        "required": [
                                            "url"
                                        ]
                                    }
                                ]
                            }
                        },
                        "elixirInfo": {
                            "description": "Information for ELIXIR internal purposes, maintained by ELIXIR Hub.",
                            "type": "object",
                            "properties": {
                                "lastReviewExternalSab": {
                                    "description": "Date of last review by the External SAB.",
                                    "type": "string",
                                    "format": "date-time"
                                },
                                "lastReviewElixirSab": {
                                    "description": "Date of last review by the ELIXIR SAB.",
                                    "type": "string",
                                    "format": "date-time"
                                },
                                "inSDP": {
                                    "description": "Whether the resource is listed in a node Service Delivery Plan.",
                                    "type": "boolean"
                                },
                                "isCoreDataResource": {
                                    "description": "Whether the resource is an official core data resource.",
                                    "type": "boolean"
                                },
                                "platform": {
                                    "description": "ELIXIR platform.",
                                    "type": "string",
                                    "enum": [
                                        "Data",
                                        "Tools",
                                        "Compute",
                                        "Interoperability",
                                        "Training"
                                    ]
                                },
                                "node": {
                                    "description": "ELIXIR node.",
                                    "type": "string",
                                    "enum": [
                                        "Belgium",
                                        "Czech Republic",
                                        "Denmark",
                                        "EMBL",
                                        "Estonia",
                                        "Finland",
                                        "France",
                                        "Germany",
                                        "Greece",
                                        "Netherlands",
                                        "Norway",
                                        "Ireland",
                                        "Israel",
                                        "Italy",
                                        "Luxembourg",
                                        "Portugal",
                                        "Slovenia",
                                        "Spain",
                                        "Sweden",
                                        "Switzerland",
                                        "UK"
                                    ]
                                },
                                "comment": {
                                    "description": "General comment.",
                                    "type": "string",
                                    "maxLength": 1000
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}