{"record":{"id":"25fe9e12b2ed1e43","repo":"flarum/framework","slug":"avatar","errorCode":null,"errorMessage":"avatar","messagePattern":"avatar","errorType":"validation","errorClass":"ValidationException","httpStatus":422,"severity":"error","filePath":"framework/core/src/Api/Resource/UserResource.php","lineNumber":159,"sourceCode":"                ->authenticated()\n                ->can('delete'),\n            Endpoint\\Show::make()\n                ->defaultInclude(['groups'])\n                ->eagerLoad(['groups']),\n            Endpoint\\Index::make()\n                ->can('searchUsers')\n                ->defaultInclude(['groups'])\n                ->eagerLoad(['groups'])\n                ->paginate(),\n            Endpoint\\Endpoint::make('avatar.upload')\n                ->route('POST', '/{id}/avatar')\n                ->authenticated()\n                ->can('editAvatar')\n                ->action(function (Context $context) {\n                    $file = Arr::get($context->request->getUploadedFiles(), 'avatar');\n\n                    if (! $file instanceof UploadedFileInterface) {\n                        throw new ValidationException([\n                            'avatar' => str_replace(':attribute', 'avatar', $this->translator->trans('validation.required')),\n                        ]);\n                    }\n\n                    return $this->bus->dispatch(\n                        new UploadAvatar((int) $context->modelId, $file, $context->getActor())\n                    );\n                }),\n            Endpoint\\Endpoint::make('avatar.delete')\n                ->route('DELETE', '/{id}/avatar')\n                ->authenticated()\n                ->can('editAvatar')\n                ->action(function (Context $context) {\n                    return $this->bus->dispatch(\n                        new DeleteAvatar(Arr::get($context->request->getQueryParams(), 'id'), $context->getActor())\n                    );\n                }),\n        ];","sourceCodeStart":141,"sourceCodeEnd":177,"githubUrl":"https://github.com/flarum/framework/blob/4b939f685389bfe8a380e9e28ddf305a1c66950c/framework/core/src/Api/Resource/UserResource.php#L141-L177","documentation":"The 'avatar.upload' custom endpoint on UserResource (POST /api/users/{id}/avatar) failed processing the avatar upload. This marks the avatar upload action: the request failed authentication, the editAvatar permission check, or the uploaded file could not be processed as a valid image.","triggerScenarios":"Thrown at framework/core/src/Api/Resource/UserResource.php:159 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the request is authenticated and the user has permission to edit the target user's avatar (editAvatar ability)","Send multipart/form-data with a valid image file under the expected field name","Check the image passes size/format validation handled by the AvatarUploader"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4b939f685389bfe8a380e9e28ddf305a1c66950c","analyzedAt":"2026-09-15T18:09:20.879Z","contentChangedAt":"2026-09-15T18:09:20.879Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}