From 089de6d82ff524e274f7e8a4c38996487483a3ce Mon Sep 17 00:00:00 2001 From: matiasperrone-exo Date: Fri, 13 Feb 2026 21:49:22 +0000 Subject: [PATCH] feat: Add OpenAPI documentation on controller OAuth2UserApiController v2 routes --- .../Api/OAuth2/OAuth2UserApiController.php | 46 +++++++++++++ app/Swagger/Models/BaseUserSchema.php | 26 +++++++ app/Swagger/Models/GroupSchema.php | 27 ++++++++ app/Swagger/Models/UserSchema.php | 67 +++++++++++++++++++ .../OAuth2UserApiControllerSecuritySchema.php | 30 +++++++++ 5 files changed, 196 insertions(+) create mode 100644 app/Swagger/Models/BaseUserSchema.php create mode 100644 app/Swagger/Models/GroupSchema.php create mode 100644 app/Swagger/Models/UserSchema.php create mode 100644 app/Swagger/Security/OAuth2UserApiControllerSecuritySchema.php diff --git a/app/Http/Controllers/Api/OAuth2/OAuth2UserApiController.php b/app/Http/Controllers/Api/OAuth2/OAuth2UserApiController.php index fd0b744f..3a2b27d6 100644 --- a/app/Http/Controllers/Api/OAuth2/OAuth2UserApiController.php +++ b/app/Http/Controllers/Api/OAuth2/OAuth2UserApiController.php @@ -37,8 +37,11 @@ use OAuth2\ResourceServer\IUserService; use Utils\Http\HttpContentType; use Utils\Services\ILogService; +use App\libs\OAuth2\IUserScopes; use Exception; +use OpenApi\Attributes as OA; use OpenId\Services\IUserService as IOpenIdUserService; +use Symfony\Component\HttpFoundation\Response as HttpResponse; /** * Class OAuth2UserApiController * @package App\Http\Controllers\Api\OAuth2 @@ -336,6 +339,49 @@ public function get($id) * @param $id * @return \Illuminate\Http\JsonResponse|mixed */ + #[OA\Get( + path: '/api/v2/users/{id}', + summary: 'Get a user by ID', + description: 'Get a user by ID (only for accounts of type "SERVICE")', + operationId: 'getUserByIdV2', + tags: ['Users'], + security: [ + ['OAuth2UserSecurity' => [ + IUserScopes::ReadAll, + ]], + ], + parameters: [ + new OA\Parameter( + name: 'id', + description: 'User ID', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer') + ), + new OA\Parameter( + name: 'expand', + description: 'Expand relations: groups', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string') + ), + ], + responses: [ + new OA\Response( + response: HttpResponse::HTTP_OK, + description: 'OK', + content: new OA\JsonContent(ref: '#/components/schemas/User') + ), + new OA\Response( + response: HttpResponse::HTTP_NOT_FOUND, + description: 'Not Found' + ), + new OA\Response( + response: HttpResponse::HTTP_INTERNAL_SERVER_ERROR, + description: 'Server Error' + ), + ] + )] public function getV2($id) { return $this->processRequest(function() use($id) { diff --git a/app/Swagger/Models/BaseUserSchema.php b/app/Swagger/Models/BaseUserSchema.php new file mode 100644 index 00000000..3122e1e2 --- /dev/null +++ b/app/Swagger/Models/BaseUserSchema.php @@ -0,0 +1,26 @@ + 'Read All Users Data', + IUserScopes::MeWrite => 'Write current user data', + IUserScopes::Write => 'Write Users Data', + IUserScopes::UserGroupWrite => 'Manage User Group assignments', + ], + ), + ], +) +] +class OAuth2UserApiControllerSecuritySchema +{ +}