{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "user.json",
    "type": "object",
    "title": "The root schema",
    "description": "The root schema comprises the entire JSON document.",
    "default": {},
    "examples": [
        {
            "params": {
                "source": "android.app",
                "signupType": "self"
            },
            "request": {
                "id": "",
                "username": "59249",
                "password": "9d6db828a079db58aa7c90c4ad6accfafebba2ab5dcfa906828bc4cdcdfc2b27e8a463f916ab97c8ec4cdaea008aecd8d0f3a37dbd864fafca779ad1c553819a",
                "dateOfRetirement": "31-03-2030",
                "phone": "917837833100",
                "phoneVerified": true,
                "role": ["Teacher", "Principal"],
                "firstName": "Umang",
                "lastName": "Bhola",
                "avatar": "ProfilePictureUrl",
                "gender": "M",
                "address": [
                    {
                        "addType": "Account Request Sent",
                        "addressLine1": "PENDING",
                        "addressLine2": "Account Request Sent",
                        "city": "PENDING",
                        "district": "Account Request Sent",
                        "state": "Account Request Sent",
                        "zipCode": "Account Request Sent"
                    },
                    {
                        "addType": "Account Request Sent",
                        "addressLine1": "PENDING",
                        "addressLine2": "Account Request Sent",
                        "city": "PENDING",
                        "district": "Account Request Sent",
                        "state": "Account Request Sent",
                        "zipCode": "Account Request Sent"
                    }
                ],
                "education": [
                    {
                        "name": "The name of educational institution",
                        "degree": "The name of user's highest qualification",
                        "boardOrUniversity": "The name of board or university",
                        "yearOfPassing": -49421138,
                        "courseName": "courseName",
                        "address": {
                            "addType": "Account Request Sent",
                            "addressLine1": "PENDING",
                            "addressLine2": "Account Request Sent",
                            "city": "PENDING",
                            "district": "Account Request Sent",
                            "state": "Account Request Sent",
                            "zipCode": "Account Request Sent"
                        },
                        "percentage": 94.54,
                        "grade": "The name of the user's grade"
                    },
                    {
                        "name": "The name of educational institution",
                        "degree": "The name of user's highest qualification",
                        "boardOrUniversity": "The name of board or university",
                        "yearOfPassing": 20832221,
                        "courseName": "courseName",
                        "address": {
                            "addType": "Account Request Sent",
                            "addressLine1": "PENDING",
                            "addressLine2": "Account Request Sent",
                            "city": "PENDING",
                            "district": "Account Request Sent",
                            "state": "Account Request Sent",
                            "zipCode": "Account Request Sent"
                        },
                        "percentage": 94.54,
                        "grade": "The name of the user's grade"
                    }
                ],
                "userID": "",
                "udise": "2020900401",
                "subjects": [
                    {
                        "name": "Hindi",
                        "grade": 5
                    },
                    {
                        "name": "Hindi",
                        "grade": 6
                    }
                ],
                "employment": "Permanent",
                "joiningData": "31-03-2000",
                "approved": false,
                "cadre": "TGT/Master",
                "designation": ""
            }
        }
    ],
    "required": ["params", "request"],
    "properties": {
        "params": {
            "$id": "#/properties/params",
            "type": "object",
            "title": "The params schema",
            "description": "An explanation about the purpose of this instance.",
            "default": {},
            "examples": [
                {
                    "source": "android.app",
                    "signupType": "self"
                }
            ],
            "required": ["source", "signupType"],
            "properties": {
                "source": {
                    "$id": "#/properties/params/properties/source",
                    "type": "string",
                    "title": "The source schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["android.app"]
                },
                "signupType": {
                    "$id": "#/properties/params/properties/signupType",
                    "type": "string",
                    "title": "The signupType schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["self"]
                }
            },
            "additionalProperties": true
        },
        "request": {
            "$id": "#/properties/request",
            "type": "object",
            "title": "The request schema",
            "description": "An explanation about the purpose of this instance.",
            "default": {},
            "examples": [
                {
                    "id": "",
                    "username": "59249",
                    "password": "9d6db828a079db58aa7c90c4ad6accfafebba2ab5dcfa906828bc4cdcdfc2b27e8a463f916ab97c8ec4cdaea008aecd8d0f3a37dbd864fafca779ad1c553819a",
                    "dateOfRetirement": "31-03-2030",
                    "phone": "917837833100",
                    "phoneVerified": true,
                    "role": ["Teacher", "Principal"],
                    "firstName": "Umang",
                    "lastName": "Bhola",
                    "avatar": "ProfilePictureUrl",
                    "gender": "M",
                    "address": [
                        {
                            "addType": "Account Request Sent",
                            "addressLine1": "PENDING",
                            "addressLine2": "Account Request Sent",
                            "city": "PENDING",
                            "district": "Account Request Sent",
                            "state": "Account Request Sent",
                            "zipCode": "Account Request Sent"
                        },
                        {
                            "addType": "Account Request Sent",
                            "addressLine1": "PENDING",
                            "addressLine2": "Account Request Sent",
                            "city": "PENDING",
                            "district": "Account Request Sent",
                            "state": "Account Request Sent",
                            "zipCode": "Account Request Sent"
                        }
                    ],
                    "education": [
                        {
                            "name": "The name of educational institution",
                            "degree": "The name of user's highest qualification",
                            "boardOrUniversity": "The name of board or university",
                            "yearOfPassing": -49421138,
                            "courseName": "courseName",
                            "address": {
                                "addType": "Account Request Sent",
                                "addressLine1": "PENDING",
                                "addressLine2": "Account Request Sent",
                                "city": "PENDING",
                                "district": "Account Request Sent",
                                "state": "Account Request Sent",
                                "zipCode": "Account Request Sent"
                            },
                            "percentage": 94.54,
                            "grade": "The name of the user's grade"
                        },
                        {
                            "name": "The name of educational institution",
                            "degree": "The name of user's highest qualification",
                            "boardOrUniversity": "The name of board or university",
                            "yearOfPassing": 20832221,
                            "courseName": "courseName",
                            "address": {
                                "addType": "Account Request Sent",
                                "addressLine1": "PENDING",
                                "addressLine2": "Account Request Sent",
                                "city": "PENDING",
                                "district": "Account Request Sent",
                                "state": "Account Request Sent",
                                "zipCode": "Account Request Sent"
                            },
                            "percentage": 94.54,
                            "grade": "The name of the user's grade"
                        }
                    ],
                    "userID": "",
                    "school": 12345,
                    "subjects": [
                        {
                            "name": "Hindi",
                            "grade": 5
                        },
                        {
                            "name": "Hindi",
                            "grade": 6
                        }
                    ],
                    "employment": "Permanent",
                    "joiningData": "31-03-2000",
                    "approved": false,
                    "cadre": "TGT/Master",
                    "designation": ""
                }
            ],
            "required": [
                "username",
                "phone",
                "phoneVerified",
                "role",
                "firstName",
                "lastName",
                "gender",
                "address",
                "education",
                "school",
                "subjects",
                "employment",
                "cadre"
            ],
            "properties": {
                "id": {
                    "$id": "#/properties/request/properties/id",
                    "type": "string",
                    "title": "The id schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": [""]
                },
                "username": {
                    "$id": "#/properties/request/properties/username",
                    "type": "string",
                    "title": "The username schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["59249"]
                },
                "password": {
                    "$id": "#/properties/request/properties/password",
                    "type": "string",
                    "title": "The password schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": [
                        "9d6db828a079db58aa7c90c4ad6accfafebba2ab5dcfa906828bc4cdcdfc2b27e8a463f916ab97c8ec4cdaea008aecd8d0f3a37dbd864fafca779ad1c553819a"
                    ]
                },
                "dateOfRetirement": {
                    "$id": "#/properties/request/properties/dateOfRetirement",
                    "type": "string",
                    "title": "The dateOfRetirement schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["31-03-2030"]
                },
                "phone": {
                    "$id": "#/properties/request/properties/phone",
                    "type": "string",
                    "title": "The phone schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["917837833100"]
                },
                "phoneVerified": {
                    "$id": "#/properties/request/properties/phoneVerified",
                    "type": "boolean",
                    "title": "The phoneVerified schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": false,
                    "examples": [true]
                },
                "role": {
                    "$id": "#/properties/request/properties/role",
                    "type": "array",
                    "title": "The role schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": [],
                    "examples": [["Teacher", "Principal"]],
                    "additionalItems": true,
                    "items": {
                        "$id": "#/properties/request/properties/role/items",
                        "anyOf": [
                            {
                                "$id": "#/properties/request/properties/role/items/anyOf/0",
                                "type": "string",
                                "title": "The first anyOf schema",
                                "description": "An explanation about the purpose of this instance.",
                                "default": "",
                                "examples": ["Teacher", "Principal"]
                            }
                        ]
                    }
                },
                "firstName": {
                    "$id": "#/properties/request/properties/firstName",
                    "type": "string",
                    "title": "The firstName schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["Umang"]
                },
                "lastName": {
                    "$id": "#/properties/request/properties/lastName",
                    "type": "string",
                    "title": "The lastName schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["Bhola"]
                },
                "avatar": {
                    "$id": "#/properties/request/properties/avatar",
                    "type": "string",
                    "title": "The avatar schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["ProfilePictureUrl"]
                },
                "gender": {
                    "$id": "#/properties/request/properties/gender",
                    "type": "string",
                    "title": "The gender schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["M"]
                },
                "address": {
                    "$id": "#/properties/request/properties/address",
                    "type": "array",
                    "title": "The address schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": [],
                    "examples": [
                        [
                            {
                                "addType": "Account Request Sent",
                                "addressLine1": "PENDING",
                                "addressLine2": "Account Request Sent",
                                "city": "PENDING",
                                "district": "Account Request Sent",
                                "state": "Account Request Sent",
                                "zipCode": "Account Request Sent"
                            },
                            {
                                "addType": "Account Request Sent",
                                "addressLine1": "PENDING",
                                "addressLine2": "Account Request Sent",
                                "city": "PENDING",
                                "district": "Account Request Sent",
                                "state": "Account Request Sent",
                                "zipCode": "Account Request Sent"
                            }
                        ]
                    ],
                    "additionalItems": true,
                    "items": {
                        "$id": "#/properties/request/properties/address/items",
                        "anyOf": [
                            {
                                "$id": "#/properties/request/properties/address/items/anyOf/0",
                                "type": "object",
                                "$ref": "address.json"
                            }
                        ]
                    }
                },
                "education": {
                    "$id": "#/properties/request/properties/education",
                    "type": "array",
                    "title": "The education schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": [],
                    "examples": [
                        [
                            {
                                "name": "The name of educational institution",
                                "degree": "The name of user's highest qualification",
                                "boardOrUniversity": "The name of board or university",
                                "yearOfPassing": -49421138,
                                "courseName": "courseName",
                                "address": {
                                    "addType": "Account Request Sent",
                                    "addressLine1": "PENDING",
                                    "addressLine2": "Account Request Sent",
                                    "city": "PENDING",
                                    "district": "Account Request Sent",
                                    "state": "Account Request Sent",
                                    "zipCode": "Account Request Sent"
                                },
                                "percentage": 94.54,
                                "grade": "The name of the user's grade"
                            },
                            {
                                "name": "The name of educational institution",
                                "degree": "The name of user's highest qualification",
                                "boardOrUniversity": "The name of board or university",
                                "yearOfPassing": 20832221,
                                "courseName": "courseName",
                                "address": {
                                    "addType": "Account Request Sent",
                                    "addressLine1": "PENDING",
                                    "addressLine2": "Account Request Sent",
                                    "city": "PENDING",
                                    "district": "Account Request Sent",
                                    "state": "Account Request Sent",
                                    "zipCode": "Account Request Sent"
                                },
                                "percentage": 94.54,
                                "grade": "The name of the user's grade"
                            }
                        ]
                    ],
                    "additionalItems": true,
                    "items": {
                        "$ref": "education.json"
                    }
                },
                "userID": {
                    "$id": "#/properties/request/properties/userID",
                    "type": "string",
                    "title": "The userID schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": [""]
                },
                "school": {
                    "$id": "#/properties/request/properties/school",
                    "type": "integer",
                    "title": "The udise schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": [12345]
                },
                "subjects": {
                    "$id": "#/properties/request/properties/subjects",
                    "type": "array",
                    "title": "The subjects schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": [],
                    "examples": [
                        [
                            {
                                "name": "Maths",
                                "grade_number": 5
                            },
                            {
                                "name": "History",
                                "grade_number": 5
                            }
                        ]
                    ],
                    "additionalItems": true,
                    "items": {
                        "$id": "#/properties/request/properties/subjects/items",
                        "anyOf": [
                            {
                                "$id": "#/properties/request/properties/subjects/items/anyOf/0",
                                "type": "object",
                                "title": "The first anyOf schema",
                                "description": "An explanation about the purpose of this instance.",
                                "default": {},
                                "examples": [
                                    {
                                        "name": "Maths",
                                        "grade_number": 5
                                    }
                                ],
                                "required": ["name", "grade_number"],
                                "properties": {
                                    "name": {
                                        "$id": "#/properties/request/properties/subjects/items/anyOf/0/properties/name",
                                        "type": "string",
                                        "title": "The name schema",
                                        "description": "An explanation about the purpose of this instance.",
                                        "default": "",
                                        "examples": ["Maths"]
                                    },
                                    "grade_number": {
                                        "$id": "#/properties/request/properties/subjects/items/anyOf/0/properties/grade_number",
                                        "type": "integer",
                                        "title": "The grade_number schema",
                                        "description": "An explanation about the purpose of this instance.",
                                        "default": 0,
                                        "examples": [5]
                                    }
                                },
                                "additionalProperties": true
                            }
                        ]
                    }
                },
                "employment": {
                    "$id": "#/properties/request/properties/employment",
                    "type": "string",
                    "title": "The employment schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["Permanent"]
                },
                "joiningData": {
                    "$id": "#/properties/request/properties/joiningData",
                    "type": ["string", "null"],
                    "title": "The joiningData schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["31-03-2000"]
                },
                "approved": {
                    "$id": "#/properties/request/properties/approved",
                    "type": "boolean",
                    "title": "The approved schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": false,
                    "examples": [false]
                },
                "cadre": {
                    "$id": "#/properties/request/properties/cadre",
                    "type": "string",
                    "title": "The cadre schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": ["TGT/Master"]
                },
                "designation": {
                    "$id": "#/properties/request/properties/designation",
                    "type": "string",
                    "title": "The designation schema",
                    "description": "An explanation about the purpose of this instance.",
                    "default": "",
                    "examples": [""]
                }
            },
            "additionalProperties": true
        }
    },
    "additionalProperties": true
}
