{
    "$id": "https://idhub.pangea.org/vc_schemas/course-credential.json",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "NGO Course Credential Schema",
    "description": "A NGO Course Credential Schema awarded by a NGO federation and their NGO members, as proposed by Lafede.cat",
    "name": [
        {
            "value": "NGO Course Credential for participants",
            "lang": "en"
        },
        {
            "value": "Credencial per participants d'un curs impartit per una ONG",
            "lang": "ca_ES"
        },
        {
            "value": "Credencial para participantes de un curso impartido por una ONG",
            "lang": "es"
        }
    ],
    "type": "object",
    "allOf": [
        {
            "$ref": "https://idhub.pangea.org/vc_schemas/ebsi/attestation.json"
        },
        {
            "properties": {
                "credentialSubject": {
                    "description": "Defines additional properties on credentialSubject: the given course followed by a student",
                    "type": "object",
                    "properties": {
                        "id": {
                            "description": "Defines a unique identifier (DID) of the credential subject: the credential of a completed course by a student",
                            "type": "string",
                            "minLength":  1
                        },
                        "firstName": {
                            "type": "string",
                            "description": "The first name of the student",
                            "minLength":  1
                        },
                        "lastName": {
                            "type": "string",
                            "description": "The family name of the student",
                            "minLength":  1
                        },
                        "email": {
                            "type": "string",
                            "format": "email",
                            "pattern": "^\\S+@\\S+\\.\\S+$"
                        },
                        "personalIdentifier": {
                            "type": "string",
                            "description": "The personal identifier of the student, such as ID number",
                            "minLength":  1
                        },
                        "issuedDate": {
                            "type": "string",
                            "description": "The date the credential was issued",
                            "format": "date",
                            "minLength":  1
                        },
                        "modeOfInstruction": {
                            "type": "string",
                            "description": "The mode of instruction: online, in-person, etc.",
                            "minLength":  1
                        },
                        "courseDuration": {
                            "type": "integer",
                            "description": "The duration of the course in hours",
                            "minLength":  1
                        },
                        "courseDays": {
                            "type": "integer",
                            "description": "The number of days the course lasts",
                            "minLength":  1
                        },
                        "courseName": {
                            "type": "string",
                            "description": "The name of the course",
                            "minLength":  1
                        },
                        "courseDescription": {
                            "type": "string",
                            "description": "The description of the course"
                        },
                        "gradingScheme": {
                            "type": "string",
                            "description": "The grading scheme used for the course"
                        },
                        "scoreAwarded": {
                            "type": "integer",
                            "description": "The score awarded to the student",
                            "minimum": 0,
                            "maximum": 10
                        },
                        "qualificationAwarded": {
                            "type": "string",
                            "description": "The qualification awarded to the student",
                            "enum": [
                                "A+",
                                "A",
                                "B",
                                "C",
                                "D"
                            ]
                        },
                        "courseLevel": {
                            "type": "string",
                            "description": "The level of the course"
                        },
                        "courseFramework": {
                            "type": "string",
                            "description": "The framework in which the course belongs to"
                        },
                        "courseCredits": {
                            "type": "integer",
                            "description": "The number of (ECTS) credits awarded for the course"
                        },
                        "dateOfAssessment": {
                            "type": "string",
                            "description": "The date of assessment",
                            "format": "date"
                        },
                        "evidenceAssessment": {
                            "type": "string",
                            "description": "The evidence of the assessment: final exam, presence, participation"
                        }
                    },
                    "required": [
                        "id",
                        "firstName",
                        "lastName",
                        "email",
                        "personalIdentifier",
                        "issuedDate",
                        "modeOfInstruction",
                        "courseDuration",
                        "courseDays",
                        "courseName"
                    ]
                }
            }
        }
    ]
}