{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://raw.githubusercontent.com/contributorshipcollaboration/credit-translation/refs/heads/main/credit_translation_schema-1.2.0.json",
    "title": "JSON schema for CRediT translation",
    "version": "1.2.0",
    "type": "object",
    "properties": {
        "metadata": {
            "type": "object",
            "properties": {
                "languageCode": {
                    "type": "string",
                    "pattern": "^[a-zA-Z]{2,3}$",
                    "description": "The language code of the metadata (ISO 639-2 compatible)"
                },
                "languageName": {
                    "type": "string",
                    "description": "The full name of the language"
                },
                "scriptCode": {
                    "type": "string",
                    "pattern": "^[a-zA-Z]{4}$",
                    "description": "The script code of the metadata (ISO 15924 compatible)"
                },
                "translators": {
                    "type": "array",
                    "items": {"$ref": "#/definitions/translator"},
                    "description": "List of identifying information on each translator"
                },
                "translationProcedure": {
                    "type": "string",
                    "description": "Free-text description of the translation procedure"
                }
            },
            "required": [
                "languageCode", "languageName", "scriptCode", "translators", "translationProcedure"
            ]
        },
        "translations": {
            "type": "object",
            "properties": {
                "https:\/\/credit.niso.org\/contributor-roles\/conceptualization\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/data-curation\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/formal-analysis\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/funding-acquisition\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/investigation\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/methodology\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/project-administration\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/resources\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/software\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/supervision\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/validation\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/visualization\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/writing-original-draft\/": {
                    "$ref": "#/definitions/roleTranslation"
                },
                "https:\/\/credit.niso.org\/contributor-roles\/writing-review-editing\/": {
                    "$ref": "#/definitions/roleTranslation"
                }
            },
            "required": [
                "https:\/\/credit.niso.org\/contributor-roles\/conceptualization\/",
                "https:\/\/credit.niso.org\/contributor-roles\/data-curation\/",
                "https:\/\/credit.niso.org\/contributor-roles\/formal-analysis\/",
                "https:\/\/credit.niso.org\/contributor-roles\/funding-acquisition\/",
                "https:\/\/credit.niso.org\/contributor-roles\/investigation\/",
                "https:\/\/credit.niso.org\/contributor-roles\/methodology\/",
                "https:\/\/credit.niso.org\/contributor-roles\/project-administration\/",
                "https:\/\/credit.niso.org\/contributor-roles\/resources\/",
                "https:\/\/credit.niso.org\/contributor-roles\/software\/",
                "https:\/\/credit.niso.org\/contributor-roles\/supervision\/",
                "https:\/\/credit.niso.org\/contributor-roles\/validation\/",
                "https:\/\/credit.niso.org\/contributor-roles\/visualization\/",
                "https:\/\/credit.niso.org\/contributor-roles\/writing-original-draft\/",
                "https:\/\/credit.niso.org\/contributor-roles\/writing-review-editing\/"
            ]
        }
    },
    "required": [
        "version",
        "metadata",
        "translations"
    ],
    "additionalProperties": false,
    "definitions": {
        "roleTranslation": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Translation of the role name"
                },
                "description": {
                    "type": "string",
                    "description": "Translation of the role description"
                }
            },
            "required": [
                "name",
                "description"
            ]
        },
        "translator": {
            "type": "object",
            "properties": {
                "firstName": {
                    "type": "string",
                    "description": "First name of the translator"
                },
                "lastName": {
                    "type": "string",
                    "description": "Last name of the translator"
                },
                "middleName": {
                    "type": "string",
                    "description": "Middle name of the translator"
                },
                "ORCID": {
                    "type": "string",
                    "description": "ORCID of the translator"
                }
            },
            "required": ["firstName", "lastName"]
        }
    }
}