{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "#Person",
    "description": "An entity that represents an actual person, such as an employee of an organization.",
    "type": "object",
    "allOf": [
        {
            "$ref": "#Entity"
        },
        {
            "properties": {
                "firstName": {
                    "description": "The person's official first name in the system (such as HR database)",
                    "type": "string"
                },
                "lastName": {
                    "description": "The person's official last name in the system (such as HR database)",
                    "type": "string"
                },
                "middleName": {
                    "description": "The person's official middle name in the system (such as HR database)",
                    "type": "string"
                },
                "email": {
                    "description": "The email addresses of the person; the first one in the array is the primary email.",
                    "type": "array",
                    "items": {
                        "type": "string",
                        "format": "email"
                    }
                },
                "emailDomain": {
                    "description": "The domain portion of the email addresses associated with the user account.",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "title": {
                    "description": "The person's role or title within an organization",
                    "type": "string"
                },
                "phone": {
                    "description": "The person's phone numbers; the first one in the array is the primary contact number.",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "address": {
                    "description": "The person's physical contact address",
                    "type": "string"
                },
                "employeeId": {
                    "description": "The person's employee ID/number within an organization",
                    "type": "string"
                },
                "employeeType": {
                    "description": "The type of employment",
                    "type": "string",
                    "examples": [
                        "employee",
                        "contractor",
                        "intern",
                        "vendor",
                        "advisor",
                        "other"
                    ]
                },
                "userIds": {
                    "description": "One or more user Ids associated with this person",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "manager": {
                    "description": "Name of the person's manager",
                    "type": "string"
                },
                "managerId": {
                    "description": "Employee ID of the person's manager",
                    "type": "string"
                },
                "managerEmail": {
                    "description": "Email of the person's manager",
                    "type": "string",
                    "format": "email"
                },
                "backgroundCheckedOn": {
                    "description": "Timestamp of the background and/or reference check",
                    "type": "number",
                    "format": "date-time"
                },
                "backgroundCheckedBy": {
                    "description": "The agency or person who conducted the background/reference check",
                    "type": "string"
                }
            },
            "required": ["firstName", "lastName", "email"]
        }
    ]
}
