{"record":{"id":"6450f1f8648f724e","repo":"Leantime/leantime","slug":"must-include-method","errorCode":null,"errorMessage":"Must include method","messagePattern":"Must include method","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"app/Domain/Api/Controllers/Jsonrpc.php","lineNumber":313,"sourceCode":"        // (e.g., addTicket returning a new ticket ID).\n        if ($method_response !== null && is_object($method_response)) {\n            $method_response = (array) $method_response;\n        }\n\n        return $this->returnResponse($method_response, $id);\n    }\n\n    /**\n     * Parses the method string\n     *\n     * @param  string  $methodstring  - leantime.rpc.service.method\n     *\n     * @throws Exception\n     */\n    private function parseMethodString(string $methodstring): array\n    {\n        if (empty($methodstring)) {\n            throw new Exception('Must include method');\n        }\n\n        if (! str_starts_with($methodstring, 'leantime.rpc.')) {\n            throw new Exception(\"Method string doesn't start with \\\"leantime.rpc.\\\"\");\n        }\n\n        // method parameter breakdown\n        // 00000000.111.22222222.3333333333333.444444444444\n        // leantime.rpc.{module}.{servicename}.{methodname}\n        $methodStringPieces = explode('.', $methodstring);\n\n        if (count($methodStringPieces) !== 4 && count($methodStringPieces) !== 5) {\n            throw new Exception('Method is case sensitive and must follow the following naming convention: \"leantime.rpc.{domain}.{servicename}.{methodname}\"');\n        }\n\n        if (count($methodStringPieces) === 4) {\n            return [\n                'module' => $methodStringPieces[2],","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/Leantime/leantime/blob/9a9f49f1008f4782b30f6723c54228f4f992e636/app/Domain/Api/Controllers/Jsonrpc.php#L295-L331","documentation":"Error \"Must include method\" thrown in Leantime/leantime.","triggerScenarios":"Thrown at app/Domain/Api/Controllers/Jsonrpc.php:313 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9a9f49f1008f4782b30f6723c54228f4f992e636","analyzedAt":"2026-08-21T02:37:38.966Z","schemaVersion":2},"datasetVersion":"2026-08-21T03:17:12.404Z"}