{
    "fields": {
        "name": {
            "type": "personName",
            "isPersonalData": true,
            "dependeeAttributeList": [
                "emailAddress",
                "phoneNumber",
                "accountName"
            ]
        },
        "salutationName": {
            "type": "enum",
            "options": ["", "Mr.", "Ms.", "Mrs.", "Dr."]
        },
        "firstName": {
            "type": "varchar",
            "maxLength": 100
        },
        "lastName": {
            "type": "varchar",
            "maxLength": 100
        },
        "title": {
            "type": "varchar",
            "maxLength": 100,
            "pattern": "$noBadCharacters"
        },
        "status": {
            "type": "enum",
            "options": [
                "New",
                "Assigned",
                "In Process",
                "Converted",
                "Recycled",
                "Dead"
            ],
            "default": "New",
            "style": {
                "Assigned": "primary",
                "In Process": "warning",
                "Converted": "success",
                "Recycled": "info",
                "Dead": "info"
            },
            "displayAsLabel": true,
            "labelType": "state",
            "audited": true,
            "fieldManagerAdditionalParamList": [
                {
                    "name": "notActualOptions",
                    "view": "views/admin/field-manager/fields/not-actual-options"
                }
            ],
            "notActualOptions": ["Converted", "Recycled", "Dead"],
            "customizationOptionsReferenceDisabled": true
        },
        "source": {
            "type": "enum",
            "options": [
                "",
                "Call",
                "Email",
                "Existing Customer",
                "Partner",
                "Public Relations",
                "Web Site",
                "Campaign",
                "Other"
            ],
            "customizationOptionsReferenceDisabled": true
        },
        "industry": {
            "type": "enum",
            "view": "crm:views/lead/fields/industry",
            "customizationOptionsDisabled": true,
            "optionsReference": "Account.industry",
            "isSorted": true
        },
        "opportunityAmount": {
            "type": "currency",
            "min": 0,
            "decimal": false,
            "audited": true
        },
        "opportunityAmountConverted": {
            "type": "currencyConverted",
            "readOnly": true
        },
        "website": {
            "type": "url",
            "strip": 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"
        },
        "emailAddress": {
            "type": "email",
            "isPersonalData": true
        },
        "phoneNumber": {
            "type": "phone",
            "typeList": ["Mobile", "Office", "Home", "Fax", "Other"],
            "defaultType": "Mobile",
            "isPersonalData": true
        },
        "doNotCall": {
            "type": "bool",
            "audited": true
        },
        "description": {
            "type": "text"
        },
        "convertedAt": {
            "type": "datetime",
            "layoutMassUpdateDisabled": true,
            "readOnly": true
        },
        "createdAt": {
            "type": "datetime",
            "readOnly": true,
            "fieldManagerParamList": [
                "useNumericFormat"
            ]
        },
        "modifiedAt": {
            "type": "datetime",
            "readOnly": true,
            "fieldManagerParamList": [
                "useNumericFormat"
            ]
        },
        "createdBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user",
            "fieldManagerParamList": []
        },
        "modifiedBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user",
            "fieldManagerParamList": []
        },
        "accountName": {
            "type": "varchar",
            "pattern": "$noBadCharacters"
        },
        "assignedUser": {
            "type": "link",
            "view": "views/fields/assigned-user"
        },
        "acceptanceStatus": {
            "type": "varchar",
            "notStorable": true,
            "orderDisabled": true,
            "exportDisabled": true,
            "utility": true,
            "fieldManagerParamList": []
        },
        "acceptanceStatusMeetings": {
            "type": "enum",
            "notStorable": true,
            "orderDisabled": true,
            "directUpdateDisabled": true,
            "directAccessDisabled": true,
            "filtersEnabled": true,
            "layoutAvailabilityList": ["filters"],
            "importDisabled": true,
            "exportDisabled": true,
            "view": "crm:views/lead/fields/acceptance-status",
            "link": "meetings",
            "column": "status",
            "fieldManagerParamList": []
        },
        "acceptanceStatusCalls": {
            "type": "enum",
            "notStorable": true,
            "orderDisabled": true,
            "directUpdateDisabled": true,
            "directAccessDisabled": true,
            "filtersEnabled": true,
            "layoutAvailabilityList": ["filters"],
            "importDisabled": true,
            "exportDisabled": true,
            "view": "crm:views/lead/fields/acceptance-status",
            "link": "calls",
            "column": "status",
            "fieldManagerParamList": []
        },
        "teams": {
            "type": "linkMultiple",
            "view": "views/fields/teams"
        },
        "campaign": {
            "type": "link"
        },
        "createdAccount": {
            "type": "link",
            "layoutDetailDisabled": true,
            "layoutMassUpdateDisabled": true,
            "duplicateIgnore": true
        },
        "createdContact": {
            "type": "link",
            "layoutDetailDisabled": true,
            "layoutMassUpdateDisabled": true,
            "view": "crm:views/lead/fields/created-contact",
            "duplicateIgnore": true
        },
        "createdOpportunity": {
            "type": "link",
            "layoutDetailDisabled": true,
            "layoutMassUpdateDisabled": true,
            "view": "crm:views/lead/fields/created-opportunity",
            "duplicateIgnore": true
        },
        "targetLists": {
            "type": "linkMultiple",
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "importDisabled": true,
            "directAccessDisabled": true,
            "directUpdateEnabled": true,
            "filtersEnabled": true,
            "noLoad": true
        },
        "targetList": {
            "type": "link",
            "notStorable": true,
            "orderDisabled": true,
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "layoutMassUpdateDisabled": true,
            "layoutFiltersDisabled": true,
            "entity": "TargetList",
            "directAccessDisabled": true,
            "importEnabled": true
        },
        "targetListIsOptedOut": {
            "type": "bool",
            "notStorable": true,
            "orderDisabled": true,
            "readOnly": true,
            "utility": true
        },
        "originalEmail": {
            "type": "link",
            "notStorable": true,
            "orderDisabled": true,
            "entity": "Email",
            "customizationDisabled": true,
            "layoutAvailabilityList": [],
            "directAccessDisabled": true
        }
    },
    "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": "leads",
            "audited": true,
            "columnAttributeMap": {
                "status": "acceptanceStatus"
            }
        },
        "calls": {
            "type": "hasMany",
            "entity": "Call",
            "foreign": "leads",
            "audited": true,
            "columnAttributeMap": {
                "status": "acceptanceStatus"
            }
        },
        "meetingsChildren": {
            "type": "hasChildren",
            "entity": "Meeting",
            "foreign": "parent",
            "readOnly": true
        },
        "callsChildren": {
            "type": "hasChildren",
            "entity": "Call",
            "foreign": "parent",
            "readOnly": true
        },
        "tasks": {
            "type": "hasChildren",
            "entity": "Task",
            "foreign": "parent",
            "audited": true
        },
        "cases": {
            "type": "hasMany",
            "entity": "Case",
            "foreign": "lead",
            "audited": true
        },
        "emails": {
            "type": "hasChildren",
            "entity": "Email",
            "foreign": "parent",
            "layoutRelationshipsDisabled": true
        },
        "createdAccount": {
            "type": "belongsTo",
            "entity": "Account",
            "foreign": "originalLead"
        },
        "createdContact": {
            "type": "belongsTo",
            "entity": "Contact",
            "foreign": "originalLead"
        },
        "createdOpportunity": {
            "type": "belongsTo",
            "entity": "Opportunity",
            "foreign": "originalLead"
        },
        "campaign": {
            "type": "belongsTo",
            "entity": "Campaign",
            "foreign": "leads"
        },
        "campaignLogRecords": {
            "type": "hasChildren",
            "entity": "CampaignLogRecord",
            "foreign": "parent"
        },
        "targetLists": {
            "type": "hasMany",
            "entity": "TargetList",
            "foreign": "leads",
            "columnAttributeMap": {
                "optedOut": "targetListIsOptedOut"
            }
        },
        "documents": {
            "type": "hasMany",
            "entity": "Document",
            "foreign": "leads",
            "audited": true
        }
    },
    "convertEntityList": [
        "Account",
        "Contact",
        "Opportunity"
    ],
    "convertFields": {
        "Contact": {
        },
        "Account": {
            "name": "accountName",
            "billingAddressStreet": "addressStreet",
            "billingAddressCity": "addressCity",
            "billingAddressState": "addressState",
            "billingAddressPostalCode": "addressPostalCode",
            "billingAddressCountry": "addressCountry"
        },
        "Opportunity": {
            "amount": "opportunityAmount",
            "leadSource": "source"
        }
    },
    "collection": {
        "orderBy": "createdAt",
        "order": "desc",
        "textFilterFields": ["name", "accountName", "emailAddress"]
    },
    "indexes": {
        "firstName": {
            "columns": ["firstName", "deleted"]
        },
        "name": {
            "columns": ["firstName", "lastName"]
        },
        "status": {
            "columns": ["status", "deleted"]
        },
        "createdAt": {
            "columns": ["createdAt", "deleted"]
        },
        "createdAtStatus": {
            "columns": ["createdAt", "status"]
        },
        "createdAtId": {
            "unique": true,
            "columns": ["createdAt", "id"]
        },
        "assignedUser": {
            "columns": ["assignedUserId", "deleted"]
        },
        "assignedUserStatus": {
            "columns": ["assignedUserId", "status"]
        }
    }
}
