{
    "FCALL": {
        "summary": "Invokes a function.",
        "complexity": "Depends on the function that is executed.",
        "group": "scripting",
        "since": "7.0.0",
        "arity": -3,
        "function": "fcallCommand",
        "get_keys_function": "functionGetKeys",
        "command_flags": [
            "NOSCRIPT",
            "SKIP_MONITOR",
            "MAY_REPLICATE",
            "NO_MANDATORY_KEYS",
            "STALE"
        ],
        "acl_categories": [
            "SCRIPTING"
        ],
        "key_specs": [
            {
                "notes": "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE",
                "flags": [
                    "RW",
                    "ACCESS",
                    "UPDATE"
                ],
                "begin_search": {
                    "index": {
                        "pos": 2
                    }
                },
                "find_keys": {
                    "keynum": {
                        "keynumidx": 0,
                        "firstkey": 1,
                        "step": 1
                    }
                }
            }
        ],
        "arguments": [
            {
                "name": "function",
                "type": "string"
            },
            {
                "name": "numkeys",
                "type": "integer"
            },
            {
                "name": "key",
                "type": "key",
                "key_spec_index": 0,
                "optional": true,
                "multiple": true
            },
            {
                "name": "arg",
                "type": "string",
                "optional": true,
                "multiple": true
            }
        ],
        "reply_schema": {
            "description": "Return value depends on the function that is executed"
        }
    }
}
