{
    "fields": {
        "name": {
            "type": "personName",
            "isPersonalData": true
        },
        "salutationName": {
            "type": "enum",
            "options": ["", "Mr.", "Ms.", "Mrs.", "Dr."]
        },
        "firstName": {
            "type": "varchar",
            "maxLength": 100
        },
        "lastName": {
            "type": "varchar",
            "maxLength": 100,
            "required": true
        },
        "description": {
            "type": "text"
        },
        "emailAddress": {
            "type": "email",
            "isPersonalData": true
        },
        "phoneNumber": {
            "type": "phone",
            "typeList": ["Mobile", "Office", "Home", "Fax", "Other"],
            "defaultType": "Mobile",
            "isPersonalData": true
        },
        "address": {
            "type": "address",
            "isPersonalData": true
        },
        "addressStreet": {
            "type": "text",
            "maxLength": 255,
            "dbType": "varchar"
        },
        "addressCity": {
            "type": "varchar"
        },
        "addressState": {
            "type": "varchar"
        },
        "addressCountry": {
            "type": "varchar"
        },
        "addressPostalCode": {
            "type": "varchar"
        },
        "createdAt": {
            "type": "datetime",
            "readOnly": true
        },
        "modifiedAt": {
            "type": "datetime",
            "readOnly": true
        },
        "createdBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user"
        },
        "modifiedBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user"
        },
        "assignedUser": {
            "type": "link",
            "required": false,
            "view": "views/fields/assigned-user"
        },
        "teams": {
            "type": "linkMultiple",
            "view": "views/fields/teams"
        }
    },
    "links": {
        "createdBy": {
            "type": "belongsTo",
            "entity": "User"
        },
        "modifiedBy": {
            "type": "belongsTo",
            "entity": "User"
        },
        "assignedUser": {
            "type": "belongsTo",
            "entity": "User"
        },
        "teams": {
            "type": "hasMany",
            "entity": "Team",
            "relationName": "entityTeam",
            "layoutRelationshipsDisabled": true
        },
        "meetings": {
            "type": "hasMany",
            "entity": "Meeting",
            "foreign": "parent"
        },
        "calls": {
            "type": "hasMany",
            "entity": "Call",
            "foreign": "parent"
        },
        "tasks": {
            "type": "hasChildren",
            "entity": "Task",
            "foreign": "parent"
        }
    },
    "collection": {
        "orderBy": "createdAt",
        "order": "desc"
    },
    "indexes": {
        "firstName": {
            "columns": ["firstName", "deleted"]
        },
        "name": {
            "columns": ["firstName", "lastName"]
        },
        "assignedUser": {
            "columns": ["assignedUserId", "deleted"]
        },
        "createdAt": {
            "columns": ["createdAt"]
        },
        "createdAtId": {
            "unique": true,
            "columns": ["createdAt", "id"]
        }
    }
}
