{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://www.espocrm.com/schema/metadata/app/authentication.json",
    "title": "app/authentication",
    "description": "Authentication definitions.",
    "type": "object",
    "properties": {
        "beforeLoginHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired before logging in before credentials are checked. Should implement Espo\\Core\\Authentication\\Hook\\BeforeLogin interface. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        },
        "onLoginHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired once logging in is about to success. Should implement Espo\\Core\\Authentication\\Hook\\OnLogin interface. As of v8.3. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        },
        "onFailHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired once logging in is failed. Should implement Espo\\Core\\Authentication\\Hook\\OnResult interface. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        },
        "onSuccessHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired once logging in is success (not by auth token). Should implement Espo\\Core\\Authentication\\Hook\\OnResult interface. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        },
        "onSuccessByTokenHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired once logging in by a token is success. Should implement Espo\\Core\\Authentication\\Hook\\OnResult interface. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        },
        "onSecondStepRequiredHookClassNameList": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {"enum": ["__APPEND__"]}
                ]
            },
            "description": "Array of hook class names. Fired once first step is success and second step is required. Should implement Espo\\Core\\Authentication\\Hook\\OnResult interface. Important: Need to have __APPEND__ item in the beginning of the array when extending."
        }
    }
}
