{
    "additionalProperties": false,
    "definitions": {
        "doi": {
            "description": "Digital object identifier.",
            "pattern": "10\\..+/.+",
            "type": "string"
        },
        "language": {
            "description": "Allowed values are taken from IETF BCP 47, ISO 639-1 language codes.",
            "type": "string"
        },
        "nameIdentifiers": {
            "items": {
                "additionalProperties": false,
                "properties": {
                    "nameIdentifier": {
                        "type": "string"
                    },
                    "nameIdentifierScheme": {
                        "type": "string"
                    },
                    "schemeURI": {
                        "$ref": "#/definitions/uri"
                    }
                },
                "required": [
                    "nameIdentifier",
                    "nameIdentifierScheme"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "uri": {
            "description": "For adding future URI validation.",
            "type": "string"
        },
        "year": {
            "type": "string"
        }
    },
    "description": "JSON representation of the DataCite v4.0 schema.",
    "properties": {
        "alternateIdentifiers": {
            "description": "An identifier or identifiers other than the primary Identifier applied to the resource being registered. This may be any alphanumeric string which is unique within its domain of issue. May be used for local identifiers. AlternateIdentifier should be used for another identifier of the same instance (same location, same file).",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "alternateIdentifier": {
                        "type": "string"
                    },
                    "alternateIdentifierType": {
                        "type": "string"
                    }
                },
                "required": [
                    "alternateIdentifier",
                    "alternateIdentifierType"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "contributors": {
            "description": "The institution or person responsible for collecting, creating, or otherwise contributing to the developement of the dataset. The personal name format should be: Family, Given.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "affiliations": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "contributorName": {
                        "type": "string"
                    },
                    "contributorType": {
                        "enum": [
                            "ContactPerson",
                            "DataCollector",
                            "DataCurator",
                            "DataManager",
                            "Distributor",
                            "Editor",
                            "HostingInstitution",
                            "Other",
                            "Producer",
                            "ProjectLeader",
                            "ProjectManager",
                            "ProjectMember",
                            "RegistrationAgency",
                            "RegistrationAuthority",
                            "RelatedPerson",
                            "ResearchGroup",
                            "RightsHolder",
                            "Researcher",
                            "Sponsor",
                            "Supervisor",
                            "WorkPackageLeader"
                        ]
                    },
                    "familyName": {
                        "type": "string"
                    },
                    "givenName": {
                        "type": "string"
                    },
                    "nameIdentifiers": {
                        "$ref": "#/definitions/nameIdentifiers"
                    }
                },
                "required": [
                    "contributorName",
                    "contributorType"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "creators": {
            "additionalProperties": false,
            "description": "The main researchers involved working on the data, or the authors of the publication in priority order. May be a corporate/institutional or personal name. Format: Family, Given",
            "items": {
                "affiliations": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "creatorName": {
                    "type": "string"
                },
                "familyName": {
                    "type": "string"
                },
                "givenName": {
                    "type": "string"
                },
                "nameIdentifiers": {
                    "$ref": "#/definitions/nameIdentifiers"
                }
            },
            "required": [
                "creatorName"
            ],
            "type": "array"
        },
        "dates": {
            "description": "Different dates relevant to the work.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "date": {
                        "description": "YYYY,YYYY-MM-DD, YYYY-MM-DDThh:mm:ssTZD or any other format or level of granularity described in W3CDTF. Use RKMS-ISO8601 standard for depicting date ranges.",
                        "type": "string"
                    },
                    "dateType": {
                        "enum": [
                            "Accepted",
                            "Available",
                            "Collected",
                            "Copyrighted",
                            "Created",
                            "Issued",
                            "Submitted",
                            "Updated",
                            "Valid"
                        ]
                    }
                },
                "required": [
                    "dateType"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "descriptions": {
            "description": "All additional information that does not fit in any of the other categories. May be used for technical information. It is a best practice to supply a description.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "description": {
                        "minLength": 1,
                        "type": "string"
                    },
                    "descriptionType": {
                        "description": "The type of the description.",
                        "enum": [
                            "Abstract",
                            "Methods",
                            "SeriesInformation",
                            "TableOfContents",
                            "TechnicalInfo",
                            "Other"
                        ],
                        "type": "string"
                    },
                    "lang": {
                        "$ref": "#/definitions/language"
                    }
                },
                "required": [
                    "description",
                    "descriptionType"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "formats": {
            "description": "Technical format of the resource. Use file extension or MIME type where possible.",
            "items": {
                "type": "string"
            },
            "type": "array"
        },
        "fundingReferences": {
            "description": "Information about financial support (funding) for the resource being registered.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "awardNumber": {
                        "additionalProperties": false,
                        "description": "The code assigned by the funder to a sponsored award (grant).",
                        "properties": {
                            "awardNumber": {
                                "type": "string"
                            },
                            "awardURI": {
                                "$ref": "#/definitions/uri"
                            }
                        },
                        "required": [
                            "awardNumber"
                        ],
                        "type": "object"
                    },
                    "awardTitle": {
                        "description": "The human readable title of the award (grant).",
                        "type": "string"
                    },
                    "funderIdentifier": {
                        "additionalProperties": false,
                        "description": "Uniquely identifies a funding entity, according to various types.",
                        "properties": {
                            "funderIdentifier": {
                                "type": "string"
                            },
                            "funderIdentifierType": {
                                "enum": [
                                    "ISNI",
                                    "GRID",
                                    "Crossref Funder ID",
                                    "Other"
                                ],
                                "type": "string"
                            }
                        },
                        "required": [
                            "funderIdentifier",
                            "funderIdentifierType"
                        ],
                        "type": "object"
                    },
                    "funderName": {
                        "description": "Name of the funding provider.",
                        "type": "string"
                    }
                },
                "required": [
                    "funderName"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "geoLocations": {
            "description": "Spatial region or named place where the data was gathered or about which the data is focused.",
            "items": {
                "properties": {
                    "geoLocationBox": {
                        "additionalProperties": false,
                        "description": "The spatial limits of a box.",
                        "properties": {
                            "eastBoundLongitude": {
                                "description": "Eastern longitudinal dimension of box.",
                                "type": "number"
                            },
                            "northBoundLatitude": {
                                "description": "Northern latitudinal dimension of box.",
                                "type": "number"
                            },
                            "southBoundLatitude": {
                                "description": "Southern latitudinal dimension of box.",
                                "type": "number"
                            },
                            "westBoundLongitude": {
                                "description": "Western longitudinal dimension of box.",
                                "type": "number"
                            }
                        },
                        "required": [
                            "westBoundLongitude",
                            "eastBoundLongitude",
                            "southBoundLatitude",
                            "northBoundLatitude"
                        ],
                        "type": "object"
                    },
                    "geoLocationPlace": {
                        "description": "Spatial region or named place where the data was gathered or about which the data is focused.",
                        "type": "string"
                    },
                    "geoLocationPoint": {
                        "additionalProperties": false,
                        "description": "A point location in space.",
                        "properties": {
                            "pointLatitude": {
                                "description": "Latitudinal dimension of point.",
                                "type": "number"
                            },
                            "pointLongitude": {
                                "description": "Longitudinal dimension of point.",
                                "type": "number"
                            }
                        },
                        "required": [
                            "pointLongitude",
                            "pointLatitude"
                        ],
                        "type": "object"
                    },
                    "geoLocationPolygon": {
                        "additionalProperties": false,
                        "description": "A drawn polygon area, defined by a set of points and lines connecting the points in a closed chain.",
                        "properties": {
                            "polygonPoints": {
                                "description": "A point location in a polygon.",
                                "items": {
                                    "additionalProperties": false,
                                    "properties": {
                                        "pointLatitude": {
                                            "description": "Latitudinal dimension of point.",
                                            "type": "number"
                                        },
                                        "pointLongitude": {
                                            "description": "Longitudinal dimension of point.",
                                            "type": "number"
                                        }
                                    },
                                    "required": [
                                        "pointLongitude",
                                        "pointLatitude"
                                    ],
                                    "type": "object"
                                },
                                "minItems": 3,
                                "type": "array"
                            }
                        },
                        "required": [
                            "polygonPoints"
                        ],
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "type": "array"
        },
        "identifier": {
            "additionalProperties": false,
            "description": "A persistent identifier that identifies a resource. Currently, only DOI is allowed.",
            "properties": {
                "identifier": {
                    "$ref": "#/definitions/doi"
                },
                "identifierType": {
                    "enum": [
                        "DOI"
                    ]
                }
            },
            "required": [
                "identifier",
                "identifierType"
            ],
            "type": "object"
        },
        "language": {
            "$ref": "#/definitions/language",
            "description": "Primary language of the resource."
        },
        "publicationYear": {
            "$ref": "#/definitions/year",
            "description": "Year when the data is made publicly available. If an embargo period has been in effect, use the date when the embargo period ends. In the case of datasets, \"publish\" is understood to mean making the data available on a specific date to the community of researchers. If there is no standard publication year value, use the date that would be preferred from a citation perspective."
        },
        "publisher": {
            "description": "The name of the entity that holds, archives, publishes prints, distributes, releases, issues, or produces the resource. This property will be used to formulate the citation, so consider the prominence of the role. In the case of datasets, \"publish\" is understood to mean making the data available to the community of researchers.",
            "minLength": 1,
            "type": "string"
        },
        "relatedIdentifiers": {
            "description": "Identifiers of related resources. Use this property to indicate subsets of properties, as appropriate.",
            "items": {
                "additionalProperties": false,
                "properties": {
                    "relatedIdentifier": {
                        "type": "string"
                    },
                    "relatedIdentifierType": {
                        "enum": [
                            "ARK",
                            "arXiv",
                            "bibcode",
                            "DOI",
                            "EAN13",
                            "EISSN",
                            "Handle",
                            "IGSN",
                            "ISBN",
                            "ISSN",
                            "ISTC",
                            "LISSN",
                            "LSID",
                            "PMID",
                            "PURL",
                            "UPC",
                            "URL",
                            "URN"
                        ]
                    },
                    "relatedMetadataScheme": {
                        "type": "string"
                    },
                    "relationType": {
                        "enum": [
                            "IsCitedBy",
                            "Cites",
                            "IsSupplementTo",
                            "IsSupplementedBy",
                            "IsContinuedBy",
                            "Continues",
                            "IsNewVersionOf",
                            "IsPreviousVersionOf",
                            "IsPartOf",
                            "HasPart",
                            "IsReferencedBy",
                            "References",
                            "IsDocumentedBy",
                            "Documents",
                            "IsCompiledBy",
                            "Compiles",
                            "IsVariantFormOf",
                            "IsOriginalFormOf",
                            "IsIdenticalTo",
                            "HasMetadata",
                            "IsMetadataFor",
                            "Reviews",
                            "IsReviewedBy",
                            "IsDerivedFrom",
                            "IsSourceOf"
                        ]
                    },
                    "schemeURI": {
                        "$ref": "#/definitions/uri"
                    }
                },
                "required": [
                    "relatedIdentifier",
                    "relationType",
                    "relatedIdentifierType"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "resourceType": {
            "additionalProperties": false,
            "description": "The type of a resource. You may enter an additional free text description. The format is open, but the preferred format is a single term of some detail so that a pair can be formed with the sub-property.",
            "properties": {
                "resourceType": {
                    "type": "string"
                },
                "resourceTypeGeneral": {
                    "description": "The general type of a resource.",
                    "enum": [
                        "Audiovisual",
                        "Collection",
                        "Dataset",
                        "Event",
                        "Image",
                        "InteractiveResource",
                        "Model",
                        "PhysicalObject",
                        "Service",
                        "Software",
                        "Sound",
                        "Text",
                        "Workflow",
                        "Other"
                    ]
                }
            },
            "required": [
                "resourceTypeGeneral"
            ],
            "type": "object"
        },
        "rightsList": {
            "description": "Any rights information for this resource. Provide a rights management statement for the resource or reference a service providing such information. Include embargo information if applicable. Use the complete title of a license and include version information if applicable.",
            "items": {
                "additionalProperties": false,
                "minProperties": 1,
                "properties": {
                    "rights": {
                        "type": "string"
                    },
                    "rightsURI": {
                        "$ref": "#/definitions/uri"
                    }
                },
                "type": "object"
            },
            "type": "array"
        },
        "sizes": {
            "description": "Unstructures size information about the resource.",
            "items": {
                "type": "string"
            },
            "type": "array"
        },
        "subjects": {
            "items": {
                "additionalProperties": false,
                "description": "Subject, keywords, classification codes, or key phrases describing the resource.",
                "minProperties": 1,
                "properties": {
                    "lang": {
                        "$ref": "#/definitions/language"
                    },
                    "schemeURI": {
                        "$ref": "#/definitions/uri"
                    },
                    "subject": {
                        "type": "string"
                    },
                    "subjectScheme": {
                        "type": "string"
                    },
                    "valueURI": {
                        "$ref": "#/definitions/uri"
                    }
                },
                "type": "object"
            },
            "type": "array"
        },
        "titles": {
            "items": {
                "additionalProperties": false,
                "description": "A name or title by which a resource is known.",
                "properties": {
                    "lang": {
                        "$ref": "#/definitions/language"
                    },
                    "title": {
                        "minLength": 1,
                        "type": "string"
                    },
                    "titleType": {
                        "enum": [
                            "AlternativeTitle",
                            "Subtitle",
                            "TranslatedTitle",
                            "Other"
                        ]
                    },
                    "type": {
                        "description": "WARNING: This field has been superseded by 'titleType'",
                        "enum": [
                            "AlternativeTitle",
                            "Subtitle",
                            "TranslatedTitle",
                            "Other"
                        ]
                    }
                },
                "required": [
                    "title"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "version": {
            "description": "Version number of the resource. If the primary resource has changed the version number increases. Register a new identifier for a major version change. Individual stewards need to determine which are major vs. minor versions. May be used in conjunction with properties 11 and 12 (AlternateIdentifier and RelatedIdentifier) to indicate various information updates. May be used in conjunction with property 17 (Description) to indicate the nature and file/record range of version.",
            "type": "string"
        }
    },
    "required": [
        "identifier",
        "creators",
        "titles",
        "publisher",
        "publicationYear",
        "resourceType"
    ],
    "title": "DataCite v4.0",
    "type": "object"
}