{"record":{"id":"b689e7aab10d1cf6","repo":"flowable/flowable-engine","slug":"user-info-with-key-does-not-exists-for-user","errorCode":null,"errorMessage":"User info with key '' does not exists for user ''.","messagePattern":"User info with key '' does not exists for user ''\\.","errorType":"http","errorClass":"FlowableObjectNotFoundException","httpStatus":404,"severity":"error","filePath":"modules/flowable-rest/src/main/java/org/flowable/rest/service/api/identity/UserInfoResource.java","lineNumber":62,"sourceCode":"\n    @Autowired\n    protected RestResponseFactory restResponseFactory;\n\n    @Autowired\n    protected IdentityService identityService;\n\n    @ApiOperation(value = \"Get a user’s info\", tags = { \"Users\" })\n    @ApiResponses(value = {\n            @ApiResponse(code = 200, message = \"Indicates the user was found and the user has info for the given key.\"),\n            @ApiResponse(code = 404, message = \"Indicates the requested user was not found or the user does ot have info for the given key. Status description contains additional information about the error.\")\n    })\n    @GetMapping(value = \"/identity/users/{userId}/info/{key}\", produces = \"application/json\")\n    public UserInfoResponse getUserInfo(@ApiParam(name = \"userId\") @PathVariable(\"userId\") String userId, @ApiParam(name = \"key\") @PathVariable(\"key\") String key) {\n        User user = getUserFromRequest(userId);\n\n        String existingValue = identityService.getUserInfo(user.getId(), key);\n        if (existingValue == null) {\n            throw new FlowableObjectNotFoundException(\"User info with key '\" + key + \"' does not exists for user '\" + user.getId() + \"'.\", null);\n        }\n\n        return restResponseFactory.createUserInfoResponse(key, existingValue, user.getId());\n    }\n\n    @ApiOperation(value = \"Update a user’s info\", tags = { \"Users\" }, nickname = \"updateUserInfo\")\n    @ApiResponses(value = {\n            @ApiResponse(code = 200, message = \"Indicates the user was found and the info has been updated.\"),\n            @ApiResponse(code = 400, message = \"Indicates the value was missing from the request body.\"),\n            @ApiResponse(code = 404, message = \"Indicates the requested user was not found or the user does not have info for the given key. Status description contains additional information about the error.\")\n    })\n    @PutMapping(value = \"/identity/users/{userId}/info/{key}\", produces = \"application/json\")\n    public UserInfoResponse setUserInfo(@ApiParam(name = \"userId\") @PathVariable(\"userId\") String userId, @ApiParam(name = \"key\") @PathVariable(\"key\") String key, @RequestBody UserInfoRequest userRequest) {\n\n        User user = getUserFromRequest(userId);\n        String validKey = getValidKeyFromRequest(user, key);\n\n        if (userRequest.getValue() == null) {","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-rest/src/main/java/org/flowable/rest/service/api/identity/UserInfoResource.java#L44-L80","documentation":"Lookup failure in UserInfoResource.getUserInfo: the user exists, but no info value is stored under the requested key for that user, so there is nothing to return (usually a 404).","triggerScenarios":"Thrown at modules/flowable-rest/src/main/java/org/flowable/rest/service/api/identity/UserInfoResource.java:62 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Create the info entry with POST before reading it","Verify the key spelling","List existing keys via GET /identity/users/{userId}/info"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}