{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "definitions": {
        "geolocalizedIP": {
            "properties": {
                "city_name": {
                    "type": "string"
                },
                "continent_code": {
                    "type": "string"
                },
                "country_code": {
                    "maxLength": 2,
                    "minLength": 2,
                    "type": "string"
                },
                "country_code3": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string"
                },
                "country_name": {
                    "type": "string"
                },
                "latitude": {
                    "type": "number"
                },
                "longitude": {
                    "type": "number"
                },
                "time_zone": {
                    "type": "string"
                }
            },
            "required": [
                "country_code",
                "country_code3",
                "country_name",
                "city_name",
                "latitude",
                "longitude",
                "time_zone",
                "continent_code"
            ],
            "type": "object"
        }
    },
    "description": "Auth0 rules context",
    "properties": {
        "accessToken": {
            "default": {},
            "type": "object"
        },
        "clientID": {
            "type": "string"
        },
        "clientMetadata": {
            "default": {},
            "type": "object"
        },
        "clientName": {
            "type": "string"
        },
        "connection": {
            "type": "string"
        },
        "connectionStrategy": {
            "type": "string"
        },
        "idToken": {
            "default": {},
            "type": "object"
        },
        "jwtConfiguration": {
            "default": {},
            "properties": {
                "lifetimeInSeconds": {
                    "minium": 1,
                    "type": "number"
                },
                "scopes": {}
            },
            "type": "object"
        },
        "protocol": {
            "enum": [
                "oidc-basic-profile",
                "oidc-implicit-profile",
                "oauth2-resource-owner",
                "oauth2-resource-owner-jwt-bearer",
                "oauth2-password",
                "oauth2-refresh-token",
                "samlp",
                "wsfed",
                "wstrust-usernamemixed",
                "delegation",
                "redirect-callback"
            ],
            "type": "string"
        },
        "request": {
            "properties": {
                "body": {
                    "default": {},
                    "type": "object"
                },
                "geoip": {
                    "$ref": "#/definitions/geolocalizedIP"
                },
                "hostname": {
                    "_format": "hostname",
                    "type": "string"
                },
                "ip": {
                    "_format": "ipv4",
                    "type": "string"
                },
                "query": {
                    "default": {},
                    "type": "object"
                },
                "userAgent": {
                    "type": "string"
                }
            },
            "required": [
                "userAgent",
                "ip",
                "hostname",
                "geoip"
            ],
            "type": "object"
        },
        "samlConfiguration": {
            "default": {},
            "type": "object"
        },
        "sessionID": {
            "type": "string"
        },
        "sso": {
            "default": {},
            "properties": {
                "current_clients": {
                    "type": "string"
                },
                "with_auth0": {
                    "type": "boolean"
                },
                "with_dbconn": {
                    "type": "boolean"
                }
            },
            "type": "object"
        },
        "stats": {
            "default": {},
            "type": "object"
        }
    },
    "required": [
        "clientID",
        "clientName",
        "connection",
        "connectionStrategy",
        "protocol",
        "sessionID",
        "request"
    ],
    "type": "object"
}