{
    "$id": "https://citation-file-format.github.io/1.2.0/schema.json",
    "$schema": "http://json-schema.org/draft-07/schema",
    "additionalProperties": false,
    "definitions": {
        "address": {
            "description": "An address.",
            "minLength": 1,
            "type": "string"
        },
        "alias": {
            "description": "An alias.",
            "minLength": 1,
            "type": "string"
        },
        "city": {
            "description": "A city",
            "minLength": 1,
            "type": "string"
        },
        "commit": {
            "description": "The (e.g., Git) commit hash or (e.g., Subversion) revision number of the work.",
            "minLength": 1,
            "type": "string"
        },
        "country": {
            "$comment": "ISO 3166-1 alpha-2 codes can be found at https://en.wikipedia.org/wiki/ISO_3166-1",
            "description": "The ISO 3166-1 alpha-2 country code for a country.",
            "enum": [
                "AD",
                "AE",
                "AF",
                "AG",
                "AI",
                "AL",
                "AM",
                "AO",
                "AQ",
                "AR",
                "AS",
                "AT",
                "AU",
                "AW",
                "AX",
                "AZ",
                "BA",
                "BB",
                "BD",
                "BE",
                "BF",
                "BG",
                "BH",
                "BI",
                "BJ",
                "BL",
                "BM",
                "BN",
                "BO",
                "BQ",
                "BR",
                "BS",
                "BT",
                "BV",
                "BW",
                "BY",
                "BZ",
                "CA",
                "CC",
                "CD",
                "CF",
                "CG",
                "CH",
                "CI",
                "CK",
                "CL",
                "CM",
                "CN",
                "CO",
                "CR",
                "CU",
                "CV",
                "CW",
                "CX",
                "CY",
                "CZ",
                "DE",
                "DJ",
                "DK",
                "DM",
                "DO",
                "DZ",
                "EC",
                "EE",
                "EG",
                "EH",
                "ER",
                "ES",
                "ET",
                "FI",
                "FJ",
                "FK",
                "FM",
                "FO",
                "FR",
                "GA",
                "GB",
                "GD",
                "GE",
                "GF",
                "GG",
                "GH",
                "GI",
                "GL",
                "GM",
                "GN",
                "GP",
                "GQ",
                "GR",
                "GS",
                "GT",
                "GU",
                "GW",
                "GY",
                "HK",
                "HM",
                "HN",
                "HR",
                "HT",
                "HU",
                "ID",
                "IE",
                "IL",
                "IM",
                "IN",
                "IO",
                "IQ",
                "IR",
                "IS",
                "IT",
                "JE",
                "JM",
                "JO",
                "JP",
                "KE",
                "KG",
                "KH",
                "KI",
                "KM",
                "KN",
                "KP",
                "KR",
                "KW",
                "KY",
                "KZ",
                "LA",
                "LB",
                "LC",
                "LI",
                "LK",
                "LR",
                "LS",
                "LT",
                "LU",
                "LV",
                "LY",
                "MA",
                "MC",
                "MD",
                "ME",
                "MF",
                "MG",
                "MH",
                "MK",
                "ML",
                "MM",
                "MN",
                "MO",
                "MP",
                "MQ",
                "MR",
                "MS",
                "MT",
                "MU",
                "MV",
                "MW",
                "MX",
                "MY",
                "MZ",
                "NA",
                "NC",
                "NE",
                "NF",
                "NG",
                "NI",
                "NL",
                "NO",
                "NP",
                "NR",
                "NU",
                "NZ",
                "OM",
                "PA",
                "PE",
                "PF",
                "PG",
                "PH",
                "PK",
                "PL",
                "PM",
                "PN",
                "PR",
                "PS",
                "PT",
                "PW",
                "PY",
                "QA",
                "RE",
                "RO",
                "RS",
                "RU",
                "RW",
                "SA",
                "SB",
                "SC",
                "SD",
                "SE",
                "SG",
                "SH",
                "SI",
                "SJ",
                "SK",
                "SL",
                "SM",
                "SN",
                "SO",
                "SR",
                "SS",
                "ST",
                "SV",
                "SX",
                "SY",
                "SZ",
                "TC",
                "TD",
                "TF",
                "TG",
                "TH",
                "TJ",
                "TK",
                "TL",
                "TM",
                "TN",
                "TO",
                "TR",
                "TT",
                "TV",
                "TW",
                "TZ",
                "UA",
                "UG",
                "UM",
                "US",
                "UY",
                "UZ",
                "VA",
                "VC",
                "VE",
                "VG",
                "VI",
                "VN",
                "VU",
                "WF",
                "WS",
                "YE",
                "YT",
                "ZA",
                "ZM",
                "ZW"
            ],
            "type": "string"
        },
        "date": {
            "$comment": "Note to tool implementers: it is necessary to cast YAML 'date' objects to string objects when validating against this schema.",
            "examples": [
                "1900-01-01",
                "2020-12-31"
            ],
            "format": "date",
            "pattern": "^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$",
            "type": "string"
        },
        "doi": {
            "description": "The DOI of the work (i.e., 10.5281/zenodo.1003150, not the resolver URL http://doi.org/10.5281/zenodo.1003150).",
            "examples": [
                "10.5281/zenodo.1003150"
            ],
            "pattern": "^10\\.\\d{4,9}(\\.\\d+)?/[A-Za-z0-9:/_;\\-\\.\\(\\)\\[\\]\\\\]+$",
            "type": "string"
        },
        "email": {
            "description": "An email address.",
            "pattern": "^[\\S]+@[\\S]+\\.[\\S]{2,}$",
            "type": "string"
        },
        "entity": {
            "additionalProperties": false,
            "description": "An entity, i.e., an institution, team, research group, company, conference, etc., as opposed to a single natural person.",
            "properties": {
                "address": {
                    "$ref": "#/definitions/address",
                    "description": "The entity's address."
                },
                "alias": {
                    "$ref": "#/definitions/alias",
                    "description": "The entity's alias."
                },
                "city": {
                    "$ref": "#/definitions/city",
                    "description": "The entity's city."
                },
                "country": {
                    "$ref": "#/definitions/country",
                    "description": "The entity's country."
                },
                "date-end": {
                    "$ref": "#/definitions/date",
                    "description": "The entity's ending date, e.g., when the entity is a conference."
                },
                "date-start": {
                    "$ref": "#/definitions/date",
                    "description": "The entity's starting date, e.g., when the entity is a conference."
                },
                "email": {
                    "$ref": "#/definitions/email",
                    "description": "The entity's email address."
                },
                "fax": {
                    "$ref": "#/definitions/fax",
                    "description": "The entity's fax number."
                },
                "location": {
                    "description": "The entity's location, e.g., when the entity is a conference.",
                    "minLength": 1,
                    "type": "string"
                },
                "name": {
                    "description": "The entity's name.",
                    "minLength": 1,
                    "type": "string"
                },
                "orcid": {
                    "$ref": "#/definitions/orcid",
                    "description": "The entity's orcid."
                },
                "post-code": {
                    "$ref": "#/definitions/post-code",
                    "description": "The entity's post code."
                },
                "region": {
                    "$ref": "#/definitions/region",
                    "description": "The entity's region."
                },
                "tel": {
                    "$ref": "#/definitions/tel",
                    "description": "The entity's telephone number."
                },
                "website": {
                    "$ref": "#/definitions/url",
                    "description": "The entity's website."
                }
            },
            "required": [
                "name"
            ],
            "type": "object"
        },
        "fax": {
            "description": "A fax number.",
            "minLength": 1,
            "type": "string"
        },
        "identifier": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "properties": {
                        "description": {
                            "$ref": "#/definitions/identifier-description"
                        },
                        "type": {
                            "enum": [
                                "doi"
                            ],
                            "type": "string"
                        },
                        "value": {
                            "$ref": "#/definitions/doi"
                        }
                    },
                    "required": [
                        "type",
                        "value"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "description": {
                            "$ref": "#/definitions/identifier-description"
                        },
                        "type": {
                            "enum": [
                                "url"
                            ],
                            "type": "string"
                        },
                        "value": {
                            "$ref": "#/definitions/url"
                        }
                    },
                    "required": [
                        "type",
                        "value"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "description": {
                            "$ref": "#/definitions/identifier-description"
                        },
                        "type": {
                            "enum": [
                                "swh"
                            ],
                            "type": "string"
                        },
                        "value": {
                            "$ref": "#/definitions/swh-identifier"
                        }
                    },
                    "required": [
                        "type",
                        "value"
                    ],
                    "type": "object"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "description": {
                            "$ref": "#/definitions/identifier-description"
                        },
                        "type": {
                            "enum": [
                                "other"
                            ],
                            "type": "string"
                        },
                        "value": {
                            "minLength": 1,
                            "type": "string"
                        }
                    },
                    "required": [
                        "type",
                        "value"
                    ],
                    "type": "object"
                }
            ],
            "description": "An identifier for a work."
        },
        "identifier-description": {
            "description": "A description for a specific identifier value.",
            "examples": [
                "The version DOI for this version, which has a relation childOf with the concept DOI specified in the doi field in the root of this file.",
                "The identifier provided by Archival Repository, which points to this version of the software."
            ],
            "minLength": 1,
            "type": "string"
        },
        "license": {
            "description": "An SPDX license identifier.",
            "oneOf": [
                {
                    "$ref": "#/definitions/license-enum",
                    "examples": [
                        "Apache-2.0",
                        "MIT"
                    ]
                },
                {
                    "$comment": "When there are multiple licenses, it is assumed their relationship is OR, not AND",
                    "examples": [
                        [
                            "Apache-2.0",
                            "MIT"
                        ],
                        [
                            "GPL-3.0",
                            "GPL-3.0-or-later"
                        ]
                    ],
                    "items": {
                        "$ref": "#/definitions/license-enum"
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                }
            ]
        },
        "license-enum": {
            "$comment": "Use https://github.com/citation-file-format/get-spdx-licenses to update this enum in the future",
            "description": "SPDX license list; releaseDate=2021-05-14; source=https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json",
            "enum": [
                "0BSD",
                "AAL",
                "Abstyles",
                "Adobe-2006",
                "Adobe-Glyph",
                "ADSL",
                "AFL-1.1",
                "AFL-1.2",
                "AFL-2.0",
                "AFL-2.1",
                "AFL-3.0",
                "Afmparse",
                "AGPL-1.0",
                "AGPL-1.0-only",
                "AGPL-1.0-or-later",
                "AGPL-3.0",
                "AGPL-3.0-only",
                "AGPL-3.0-or-later",
                "Aladdin",
                "AMDPLPA",
                "AML",
                "AMPAS",
                "ANTLR-PD",
                "ANTLR-PD-fallback",
                "Apache-1.0",
                "Apache-1.1",
                "Apache-2.0",
                "APAFML",
                "APL-1.0",
                "APSL-1.0",
                "APSL-1.1",
                "APSL-1.2",
                "APSL-2.0",
                "Artistic-1.0",
                "Artistic-1.0-cl8",
                "Artistic-1.0-Perl",
                "Artistic-2.0",
                "Bahyph",
                "Barr",
                "Beerware",
                "BitTorrent-1.0",
                "BitTorrent-1.1",
                "blessing",
                "BlueOak-1.0.0",
                "Borceux",
                "BSD-1-Clause",
                "BSD-2-Clause",
                "BSD-2-Clause-FreeBSD",
                "BSD-2-Clause-NetBSD",
                "BSD-2-Clause-Patent",
                "BSD-2-Clause-Views",
                "BSD-3-Clause",
                "BSD-3-Clause-Attribution",
                "BSD-3-Clause-Clear",
                "BSD-3-Clause-LBNL",
                "BSD-3-Clause-Modification",
                "BSD-3-Clause-No-Nuclear-License",
                "BSD-3-Clause-No-Nuclear-License-2014",
                "BSD-3-Clause-No-Nuclear-Warranty",
                "BSD-3-Clause-Open-MPI",
                "BSD-4-Clause",
                "BSD-4-Clause-Shortened",
                "BSD-4-Clause-UC",
                "BSD-Protection",
                "BSD-Source-Code",
                "BSL-1.0",
                "BUSL-1.1",
                "bzip2-1.0.5",
                "bzip2-1.0.6",
                "C-UDA-1.0",
                "CAL-1.0",
                "CAL-1.0-Combined-Work-Exception",
                "Caldera",
                "CATOSL-1.1",
                "CC-BY-1.0",
                "CC-BY-2.0",
                "CC-BY-2.5",
                "CC-BY-3.0",
                "CC-BY-3.0-AT",
                "CC-BY-3.0-US",
                "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-3.0-IGO",
                "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.0-UK",
                "CC-BY-SA-2.1-JP",
                "CC-BY-SA-2.5",
                "CC-BY-SA-3.0",
                "CC-BY-SA-3.0-AT",
                "CC-BY-SA-4.0",
                "CC-PDDC",
                "CC0-1.0",
                "CDDL-1.0",
                "CDDL-1.1",
                "CDL-1.0",
                "CDLA-Permissive-1.0",
                "CDLA-Sharing-1.0",
                "CECILL-1.0",
                "CECILL-1.1",
                "CECILL-2.0",
                "CECILL-2.1",
                "CECILL-B",
                "CECILL-C",
                "CERN-OHL-1.1",
                "CERN-OHL-1.2",
                "CERN-OHL-P-2.0",
                "CERN-OHL-S-2.0",
                "CERN-OHL-W-2.0",
                "ClArtistic",
                "CNRI-Jython",
                "CNRI-Python",
                "CNRI-Python-GPL-Compatible",
                "Condor-1.1",
                "copyleft-next-0.3.0",
                "copyleft-next-0.3.1",
                "CPAL-1.0",
                "CPL-1.0",
                "CPOL-1.02",
                "Crossword",
                "CrystalStacker",
                "CUA-OPL-1.0",
                "Cube",
                "curl",
                "D-FSL-1.0",
                "diffmark",
                "DOC",
                "Dotseqn",
                "DRL-1.0",
                "DSDP",
                "dvipdfm",
                "ECL-1.0",
                "ECL-2.0",
                "eCos-2.0",
                "EFL-1.0",
                "EFL-2.0",
                "eGenix",
                "Entessa",
                "EPICS",
                "EPL-1.0",
                "EPL-2.0",
                "ErlPL-1.1",
                "etalab-2.0",
                "EUDatagrid",
                "EUPL-1.0",
                "EUPL-1.1",
                "EUPL-1.2",
                "Eurosym",
                "Fair",
                "Frameworx-1.0",
                "FreeBSD-DOC",
                "FreeImage",
                "FSFAP",
                "FSFUL",
                "FSFULLR",
                "FTL",
                "GD",
                "GFDL-1.1",
                "GFDL-1.1-invariants-only",
                "GFDL-1.1-invariants-or-later",
                "GFDL-1.1-no-invariants-only",
                "GFDL-1.1-no-invariants-or-later",
                "GFDL-1.1-only",
                "GFDL-1.1-or-later",
                "GFDL-1.2",
                "GFDL-1.2-invariants-only",
                "GFDL-1.2-invariants-or-later",
                "GFDL-1.2-no-invariants-only",
                "GFDL-1.2-no-invariants-or-later",
                "GFDL-1.2-only",
                "GFDL-1.2-or-later",
                "GFDL-1.3",
                "GFDL-1.3-invariants-only",
                "GFDL-1.3-invariants-or-later",
                "GFDL-1.3-no-invariants-only",
                "GFDL-1.3-no-invariants-or-later",
                "GFDL-1.3-only",
                "GFDL-1.3-or-later",
                "Giftware",
                "GL2PS",
                "Glide",
                "Glulxe",
                "GLWTPL",
                "gnuplot",
                "GPL-1.0",
                "GPL-1.0-only",
                "GPL-1.0-or-later",
                "GPL-1.0+",
                "GPL-2.0",
                "GPL-2.0-only",
                "GPL-2.0-or-later",
                "GPL-2.0-with-autoconf-exception",
                "GPL-2.0-with-bison-exception",
                "GPL-2.0-with-classpath-exception",
                "GPL-2.0-with-font-exception",
                "GPL-2.0-with-GCC-exception",
                "GPL-2.0+",
                "GPL-3.0",
                "GPL-3.0-only",
                "GPL-3.0-or-later",
                "GPL-3.0-with-autoconf-exception",
                "GPL-3.0-with-GCC-exception",
                "GPL-3.0+",
                "gSOAP-1.3b",
                "HaskellReport",
                "Hippocratic-2.1",
                "HPND",
                "HPND-sell-variant",
                "HTMLTIDY",
                "IBM-pibs",
                "ICU",
                "IJG",
                "ImageMagick",
                "iMatix",
                "Imlib2",
                "Info-ZIP",
                "Intel",
                "Intel-ACPI",
                "Interbase-1.0",
                "IPA",
                "IPL-1.0",
                "ISC",
                "JasPer-2.0",
                "JPNIC",
                "JSON",
                "LAL-1.2",
                "LAL-1.3",
                "Latex2e",
                "Leptonica",
                "LGPL-2.0",
                "LGPL-2.0-only",
                "LGPL-2.0-or-later",
                "LGPL-2.0+",
                "LGPL-2.1",
                "LGPL-2.1-only",
                "LGPL-2.1-or-later",
                "LGPL-2.1+",
                "LGPL-3.0",
                "LGPL-3.0-only",
                "LGPL-3.0-or-later",
                "LGPL-3.0+",
                "LGPLLR",
                "Libpng",
                "libpng-2.0",
                "libselinux-1.0",
                "libtiff",
                "LiLiQ-P-1.1",
                "LiLiQ-R-1.1",
                "LiLiQ-Rplus-1.1",
                "Linux-OpenIB",
                "LPL-1.0",
                "LPL-1.02",
                "LPPL-1.0",
                "LPPL-1.1",
                "LPPL-1.2",
                "LPPL-1.3a",
                "LPPL-1.3c",
                "MakeIndex",
                "MirOS",
                "MIT",
                "MIT-0",
                "MIT-advertising",
                "MIT-CMU",
                "MIT-enna",
                "MIT-feh",
                "MIT-Modern-Variant",
                "MIT-open-group",
                "MITNFA",
                "Motosoto",
                "mpich2",
                "MPL-1.0",
                "MPL-1.1",
                "MPL-2.0",
                "MPL-2.0-no-copyleft-exception",
                "MS-PL",
                "MS-RL",
                "MTLL",
                "MulanPSL-1.0",
                "MulanPSL-2.0",
                "Multics",
                "Mup",
                "NAIST-2003",
                "NASA-1.3",
                "Naumen",
                "NBPL-1.0",
                "NCGL-UK-2.0",
                "NCSA",
                "Net-SNMP",
                "NetCDF",
                "Newsletr",
                "NGPL",
                "NIST-PD",
                "NIST-PD-fallback",
                "NLOD-1.0",
                "NLPL",
                "Nokia",
                "NOSL",
                "Noweb",
                "NPL-1.0",
                "NPL-1.1",
                "NPOSL-3.0",
                "NRL",
                "NTP",
                "NTP-0",
                "Nunit",
                "O-UDA-1.0",
                "OCCT-PL",
                "OCLC-2.0",
                "ODbL-1.0",
                "ODC-By-1.0",
                "OFL-1.0",
                "OFL-1.0-no-RFN",
                "OFL-1.0-RFN",
                "OFL-1.1",
                "OFL-1.1-no-RFN",
                "OFL-1.1-RFN",
                "OGC-1.0",
                "OGDL-Taiwan-1.0",
                "OGL-Canada-2.0",
                "OGL-UK-1.0",
                "OGL-UK-2.0",
                "OGL-UK-3.0",
                "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",
                "OpenSSL",
                "OPL-1.0",
                "OSET-PL-2.1",
                "OSL-1.0",
                "OSL-1.1",
                "OSL-2.0",
                "OSL-2.1",
                "OSL-3.0",
                "Parity-6.0.0",
                "Parity-7.0.0",
                "PDDL-1.0",
                "PHP-3.0",
                "PHP-3.01",
                "Plexus",
                "PolyForm-Noncommercial-1.0.0",
                "PolyForm-Small-Business-1.0.0",
                "PostgreSQL",
                "PSF-2.0",
                "psfrag",
                "psutils",
                "Python-2.0",
                "Qhull",
                "QPL-1.0",
                "Rdisc",
                "RHeCos-1.1",
                "RPL-1.1",
                "RPL-1.5",
                "RPSL-1.0",
                "RSA-MD",
                "RSCPL",
                "Ruby",
                "SAX-PD",
                "Saxpath",
                "SCEA",
                "Sendmail",
                "Sendmail-8.23",
                "SGI-B-1.0",
                "SGI-B-1.1",
                "SGI-B-2.0",
                "SHL-0.5",
                "SHL-0.51",
                "SimPL-2.0",
                "SISSL",
                "SISSL-1.2",
                "Sleepycat",
                "SMLNJ",
                "SMPPL",
                "SNIA",
                "Spencer-86",
                "Spencer-94",
                "Spencer-99",
                "SPL-1.0",
                "SSH-OpenSSH",
                "SSH-short",
                "SSPL-1.0",
                "StandardML-NJ",
                "SugarCRM-1.1.3",
                "SWL",
                "TAPR-OHL-1.0",
                "TCL",
                "TCP-wrappers",
                "TMate",
                "TORQUE-1.1",
                "TOSL",
                "TU-Berlin-1.0",
                "TU-Berlin-2.0",
                "UCL-1.0",
                "Unicode-DFS-2015",
                "Unicode-DFS-2016",
                "Unicode-TOU",
                "Unlicense",
                "UPL-1.0",
                "Vim",
                "VOSTROM",
                "VSL-1.0",
                "W3C",
                "W3C-19980720",
                "W3C-20150513",
                "Watcom-1.0",
                "Wsuipa",
                "WTFPL",
                "wxWindows",
                "X11",
                "Xerox",
                "XFree86-1.1",
                "xinetd",
                "Xnet",
                "xpp",
                "XSkat",
                "YPL-1.0",
                "YPL-1.1",
                "Zed",
                "Zend-2.0",
                "Zimbra-1.3",
                "Zimbra-1.4",
                "Zlib",
                "zlib-acknowledgement",
                "ZPL-1.1",
                "ZPL-2.0",
                "ZPL-2.1"
            ],
            "type": "string"
        },
        "orcid": {
            "description": "Identifier for an author, see https://orcid.org.",
            "format": "uri",
            "pattern": "https://orcid\\.org/[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[0-9X]{1}",
            "type": "string"
        },
        "person": {
            "additionalProperties": false,
            "description": "A person.",
            "properties": {
                "address": {
                    "$ref": "#/definitions/address",
                    "description": "The person's address."
                },
                "affiliation": {
                    "description": "The person's affilitation.",
                    "minLength": 1,
                    "type": "string"
                },
                "alias": {
                    "$ref": "#/definitions/alias",
                    "description": "The person's alias."
                },
                "city": {
                    "$ref": "#/definitions/city",
                    "description": "The person's city."
                },
                "country": {
                    "$ref": "#/definitions/country",
                    "description": "The person's country."
                },
                "email": {
                    "$ref": "#/definitions/email",
                    "description": "The person's email address."
                },
                "family-names": {
                    "description": "The person's family names.",
                    "minLength": 1,
                    "type": "string"
                },
                "fax": {
                    "$ref": "#/definitions/fax",
                    "description": "The person's fax number."
                },
                "given-names": {
                    "description": "The person's given names.",
                    "minLength": 1,
                    "type": "string"
                },
                "name-particle": {
                    "description": "The person's name particle, e.g., a nobiliary particle or a preposition meaning 'of' or 'from' (for example 'von' in 'Alexander von Humboldt').",
                    "examples": [
                        "von"
                    ],
                    "minLength": 1,
                    "type": "string"
                },
                "name-suffix": {
                    "description": "The person's name-suffix, e.g. 'Jr.' for Sammy Davis Jr. or 'III' for Frank Edwin Wright III.",
                    "examples": [
                        "Jr.",
                        "III"
                    ],
                    "minLength": 1,
                    "type": "string"
                },
                "orcid": {
                    "$ref": "#/definitions/orcid",
                    "description": "The person's ORCID."
                },
                "post-code": {
                    "$ref": "#/definitions/post-code",
                    "description": "The person's post-code."
                },
                "region": {
                    "$ref": "#/definitions/region",
                    "description": "The person's region."
                },
                "tel": {
                    "$ref": "#/definitions/tel",
                    "description": "The person's phone number."
                },
                "website": {
                    "$ref": "#/definitions/url",
                    "description": "The person's website."
                }
            },
            "type": "object"
        },
        "post-code": {
            "anyOf": [
                {
                    "minLength": 1,
                    "type": "string"
                },
                {
                    "type": "number"
                }
            ],
            "description": "A post code."
        },
        "reference": {
            "additionalProperties": false,
            "description": "A reference to a work.",
            "properties": {
                "abbreviation": {
                    "description": "The abbreviation of a work.",
                    "minLength": 1,
                    "type": "string"
                },
                "abstract": {
                    "description": "The abstract of a work.",
                    "minLength": 1,
                    "type": "string"
                },
                "authors": {
                    "description": "The author(s) of a work.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/person"
                            },
                            {
                                "$ref": "#/definitions/entity"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "collection-doi": {
                    "$ref": "#/definitions/doi",
                    "description": "The DOI of a collection containing the work."
                },
                "collection-title": {
                    "description": "The title of a collection or proceedings.",
                    "minLength": 1,
                    "type": "string"
                },
                "collection-type": {
                    "description": "The type of a collection.",
                    "minLength": 1,
                    "type": "string"
                },
                "commit": {
                    "$ref": "#/definitions/commit"
                },
                "conference": {
                    "$ref": "#/definitions/entity",
                    "description": "The conference where the work was presented."
                },
                "contact": {
                    "description": "The contact person, group, company, etc. for a work.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/person"
                            },
                            {
                                "$ref": "#/definitions/entity"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "copyright": {
                    "description": "The copyright information pertaining to the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "data-type": {
                    "description": "The data type of a data set.",
                    "minLength": 1,
                    "type": "string"
                },
                "database": {
                    "description": "The name of the database where a work was accessed/is stored.",
                    "minLength": 1,
                    "type": "string"
                },
                "database-provider": {
                    "$ref": "#/definitions/entity",
                    "description": "The provider of the database where a work was accessed/is stored."
                },
                "date-accessed": {
                    "$ref": "#/definitions/date",
                    "description": "The date the work was accessed."
                },
                "date-downloaded": {
                    "$ref": "#/definitions/date",
                    "description": "The date the work has been downloaded."
                },
                "date-published": {
                    "$ref": "#/definitions/date",
                    "description": "The date the work has been published."
                },
                "date-released": {
                    "$ref": "#/definitions/date",
                    "description": "The date the work has been released."
                },
                "department": {
                    "description": "The department where a work has been produced.",
                    "minLength": 1,
                    "type": "string"
                },
                "doi": {
                    "$ref": "#/definitions/doi",
                    "description": "The DOI of the work."
                },
                "edition": {
                    "description": "The edition of the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "editors": {
                    "description": "The editor(s) of a work.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/person"
                            },
                            {
                                "$ref": "#/definitions/entity"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "editors-series": {
                    "description": "The editor(s) of a series in which a work has been published.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/person"
                            },
                            {
                                "$ref": "#/definitions/entity"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "end": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The end page of the work."
                },
                "entry": {
                    "description": "An entry in the collection that constitutes the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "filename": {
                    "description": "The name of the electronic file containing the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "format": {
                    "description": "The format in which a work is represented.",
                    "minLength": 1,
                    "type": "string"
                },
                "identifiers": {
                    "description": "The identifier(s) of the work.",
                    "items": {
                        "$ref": "#/definitions/identifier"
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "institution": {
                    "$ref": "#/definitions/entity",
                    "description": "The institution where a work has been produced or published."
                },
                "isbn": {
                    "description": "The ISBN of the work.",
                    "pattern": "^[0-9\\- ]{10,17}X?$",
                    "type": "string"
                },
                "issn": {
                    "description": "The ISSN of the work.",
                    "pattern": "^\\d{4}-\\d{3}[\\dxX]$",
                    "type": "string"
                },
                "issue": {
                    "anyOf": [
                        {
                            "minLength": 1,
                            "type": "string"
                        },
                        {
                            "type": "number"
                        }
                    ],
                    "description": "The issue of a periodical in which a work appeared."
                },
                "issue-date": {
                    "description": "The publication date of the issue of a periodical in which a work appeared.",
                    "minLength": 1,
                    "type": "string"
                },
                "issue-title": {
                    "description": "The name of the issue of a periodical in which the work appeared.",
                    "minLength": 1,
                    "type": "string"
                },
                "journal": {
                    "description": "The name of the journal/magazine/newspaper/periodical where the work was published.",
                    "minLength": 1,
                    "type": "string"
                },
                "keywords": {
                    "description": "Keywords pertaining to the work.",
                    "items": {
                        "minLength": 1,
                        "type": "string"
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "languages": {
                    "description": "The language identifier(s) of the work according to ISO 639 language strings.",
                    "items": {
                        "maxLength": 3,
                        "minLength": 2,
                        "pattern": "^[a-z]{2,3}$",
                        "type": "string"
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "license": {
                    "$ref": "#/definitions/license"
                },
                "license-url": {
                    "$ref": "#/definitions/url",
                    "description": "The URL of the license text under which the work is licensed (only for non-standard licenses not included in the SPDX License List)."
                },
                "loc-end": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The line of code in the file where the work ends."
                },
                "loc-start": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The line of code in the file where the work starts."
                },
                "location": {
                    "$ref": "#/definitions/entity",
                    "description": "The location of the work."
                },
                "medium": {
                    "description": "The medium of the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "month": {
                    "anyOf": [
                        {
                            "maximum": 12,
                            "minimum": 1,
                            "type": "integer"
                        },
                        {
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "6",
                                "7",
                                "8",
                                "9",
                                "10",
                                "11",
                                "12"
                            ],
                            "type": "string"
                        }
                    ],
                    "description": "The month in which a work has been published."
                },
                "nihmsid": {
                    "description": "The NIHMSID of a work.",
                    "minLength": 1,
                    "type": "string"
                },
                "notes": {
                    "description": "Notes pertaining to the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "number": {
                    "anyOf": [
                        {
                            "minLength": 1,
                            "type": "string"
                        },
                        {
                            "type": "number"
                        }
                    ],
                    "description": "The accession number for a work."
                },
                "number-volumes": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The number of volumes making up the collection in which the work has been published."
                },
                "pages": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The number of pages of the work."
                },
                "patent-states": {
                    "description": "The states for which a patent is granted.",
                    "items": {
                        "minLength": 1,
                        "type": "string"
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "pmcid": {
                    "description": "The PMCID of a work.",
                    "pattern": "^PMC[0-9]{7}$",
                    "type": "string"
                },
                "publisher": {
                    "$ref": "#/definitions/entity",
                    "description": "The publisher who has published the work."
                },
                "recipients": {
                    "description": "The recipient(s) of a personal communication.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/entity"
                            },
                            {
                                "$ref": "#/definitions/person"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "repository": {
                    "$ref": "#/definitions/url",
                    "description": "The URL of the work in a repository (when the repository is neither a source code repository nor a build artifact repository)."
                },
                "repository-artifact": {
                    "$ref": "#/definitions/url",
                    "description": "The URL of the work in a build artifact/binary repository."
                },
                "repository-code": {
                    "$ref": "#/definitions/url",
                    "description": "The URL of the work in a source code repository."
                },
                "scope": {
                    "description": "The scope of the reference, e.g., the section of the work it adheres to.",
                    "minLength": 1,
                    "type": "string"
                },
                "section": {
                    "anyOf": [
                        {
                            "minLength": 1,
                            "type": "string"
                        },
                        {
                            "type": "number"
                        }
                    ],
                    "description": "The section of a work that is referenced."
                },
                "senders": {
                    "description": "The sender(s) of a personal communication.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/entity"
                            },
                            {
                                "$ref": "#/definitions/person"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "start": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The start page of the work."
                },
                "status": {
                    "description": "The publication status of the work.",
                    "enum": [
                        "abstract",
                        "advance-online",
                        "in-preparation",
                        "in-press",
                        "preprint",
                        "submitted"
                    ],
                    "type": "string"
                },
                "term": {
                    "description": "The term being referenced if the work is a dictionary or encyclopedia.",
                    "minLength": 1,
                    "type": "string"
                },
                "thesis-type": {
                    "description": "The type of the thesis that is the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "title": {
                    "description": "The title of the work.",
                    "minLength": 1,
                    "type": "string"
                },
                "translators": {
                    "description": "The translator(s) of a work.",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/entity"
                            },
                            {
                                "$ref": "#/definitions/person"
                            }
                        ]
                    },
                    "minItems": 1,
                    "type": "array",
                    "uniqueItems": true
                },
                "type": {
                    "description": "The type of the work.",
                    "enum": [
                        "art",
                        "article",
                        "audiovisual",
                        "bill",
                        "blog",
                        "book",
                        "catalogue",
                        "conference-paper",
                        "conference",
                        "data",
                        "database",
                        "dictionary",
                        "edited-work",
                        "encyclopedia",
                        "film-broadcast",
                        "generic",
                        "government-document",
                        "grant",
                        "hearing",
                        "historical-work",
                        "legal-case",
                        "legal-rule",
                        "magazine-article",
                        "manual",
                        "map",
                        "multimedia",
                        "music",
                        "newspaper-article",
                        "pamphlet",
                        "patent",
                        "personal-communication",
                        "proceedings",
                        "report",
                        "serial",
                        "slides",
                        "software-code",
                        "software-container",
                        "software-executable",
                        "software-virtual-machine",
                        "software",
                        "sound-recording",
                        "standard",
                        "statute",
                        "thesis",
                        "unpublished",
                        "video",
                        "website"
                    ],
                    "type": "string"
                },
                "url": {
                    "$ref": "#/definitions/url",
                    "description": "The URL of the work."
                },
                "version": {
                    "$ref": "#/definitions/version",
                    "description": "The version of the work."
                },
                "volume": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The volume of the periodical in which a work appeared."
                },
                "volume-title": {
                    "description": "The title of the volume in which the work appeared.",
                    "minLength": 1,
                    "type": "string"
                },
                "year": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The year in which a work has been published."
                },
                "year-original": {
                    "anyOf": [
                        {
                            "type": "integer"
                        },
                        {
                            "minLength": 1,
                            "type": "string"
                        }
                    ],
                    "description": "The year of the original publication."
                }
            },
            "required": [
                "authors",
                "title",
                "type"
            ],
            "type": "object"
        },
        "region": {
            "description": "A region.",
            "minLength": 1,
            "type": "string"
        },
        "swh-identifier": {
            "$comment": "Software Heritage identifiers are documented here: https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html.",
            "description": "The Software Heritage identifier (without further qualifiers such as origin, visit, anchor, path).",
            "examples": [
                "swh:1:cnt:94a9ed024d3859793618152ea559a168bbcbb5e2",
                "swh:1:dir:d198bc9d7a6bcf6db04f476d29314f157507d505",
                "swh:1:rev:309cf2674ee7a0749978cf8265ab91a60aea0f7d",
                "swh:1:rel:22ece559cc7cc2364edc5e5593d63ae8bd229f9f",
                "swh:1:snp:c7c108084bc0bf3d81436bf980b46e98bd338453"
            ],
            "pattern": "^swh:1:(snp|rel|rev|dir|cnt):[0-9a-fA-F]{40}$",
            "type": "string"
        },
        "tel": {
            "description": "A phone number.",
            "minLength": 1,
            "type": "string"
        },
        "url": {
            "format": "uri",
            "pattern": "^(https|http|ftp|sftp)://.+",
            "type": "string"
        },
        "version": {
            "anyOf": [
                {
                    "minLength": 1,
                    "type": "string"
                },
                {
                    "type": "number"
                }
            ]
        }
    },
    "description": "A file with citation metadata for software or datasets.",
    "properties": {
        "abstract": {
            "description": "A description of the software or dataset.",
            "minLength": 1,
            "type": "string"
        },
        "authors": {
            "description": "The author(s) of the software or dataset.",
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/definitions/person"
                    },
                    {
                        "$ref": "#/definitions/entity"
                    }
                ]
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
        },
        "cff-version": {
            "description": "The version of CFF used for providing the citation metadata.",
            "examples": [
                "1.2.0"
            ],
            "pattern": "^1\\.2\\.0$",
            "type": "string"
        },
        "commit": {
            "$ref": "#/definitions/commit"
        },
        "contact": {
            "description": "The contact person, group, company, etc. for the software or dataset.",
            "items": {
                "anyOf": [
                    {
                        "$ref": "#/definitions/person"
                    },
                    {
                        "$ref": "#/definitions/entity"
                    }
                ]
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
        },
        "date-released": {
            "$ref": "#/definitions/date",
            "description": "The date the work has been released."
        },
        "doi": {
            "$ref": "#/definitions/doi"
        },
        "identifiers": {
            "description": "The identifiers of the software or dataset.",
            "items": {
                "$ref": "#/definitions/identifier"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
        },
        "keywords": {
            "description": "Keywords that describe the work.",
            "items": {
                "minLength": 1,
                "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
        },
        "license": {
            "$ref": "#/definitions/license"
        },
        "license-url": {
            "$ref": "#/definitions/url",
            "description": "The URL of the license text under which the software or dataset is licensed (only for non-standard licenses not included in the SPDX License List)."
        },
        "message": {
            "default": "If you use this software, please cite it using the metadata from this file.",
            "description": "A message to the human reader of the file to let them know what to do with the citation metadata.",
            "examples": [
                "If you use this software, please cite it using the metadata from this file.",
                "Please cite this software using these metadata.",
                "Please cite this software using the metadata from 'preferred-citation'."
            ],
            "minLength": 1,
            "type": "string"
        },
        "preferred-citation": {
            "$ref": "#/definitions/reference",
            "description": "A reference to another work that should be cited instead of the software or dataset itself."
        },
        "references": {
            "description": "Reference(s) to other creative works.",
            "items": {
                "$ref": "#/definitions/reference"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
        },
        "repository": {
            "$ref": "#/definitions/url",
            "description": "The URL of the software or dataset in a repository (when the repository is neither a source code repository nor a build artifact repository).",
            "examples": [
                "https://edoc.hu-berlin.de/handle/18452/23016",
                "https://ascl.net/2105.013"
            ]
        },
        "repository-artifact": {
            "$ref": "#/definitions/url",
            "description": "The URL of the software in a build artifact/binary repository."
        },
        "repository-code": {
            "$ref": "#/definitions/url",
            "description": "The URL of the software or dataset in a source code repository."
        },
        "title": {
            "description": "The name of the software or dataset.",
            "minLength": 1,
            "type": "string"
        },
        "type": {
            "default": "software",
            "description": "The type of the work.",
            "enum": [
                "dataset",
                "software"
            ],
            "type": "string"
        },
        "url": {
            "$ref": "#/definitions/url",
            "description": "The URL of a landing page/website for the software or dataset."
        },
        "version": {
            "$ref": "#/definitions/version",
            "description": "The version of the software or dataset."
        }
    },
    "required": [
        "authors",
        "cff-version",
        "message",
        "title"
    ],
    "title": "Citation File Format",
    "type": "object"
}
