1616use App \libs \Auth \Repositories \IGroupRepository ;
1717use App \ModelSerializers \SerializerRegistry ;
1818use OAuth2 \IResourceServerContext ;
19+ use OpenApi \Attributes as OA ;
20+ use Symfony \Component \HttpFoundation \Response ;
1921use Utils \Services \ILogService ;
2022
2123/**
@@ -26,6 +28,54 @@ final class OAuth2GroupApiController extends OAuth2ProtectedController
2628{
2729 use GetAllTrait;
2830
31+ #[OA \Get(
32+ path: '/api/v1/groups ' ,
33+ operationId: 'getGroups ' ,
34+ summary: 'Get all groups ' ,
35+ description: 'Retrieves a paginated list of groups with optional filtering and ordering. ' ,
36+ tags: ['Groups ' ],
37+ parameters: [
38+ new OA \Parameter (
39+ name: 'page ' ,
40+ in: 'query ' ,
41+ description: 'Page number for pagination ' ,
42+ required: false ,
43+ schema: new OA \Schema (type: 'integer ' , minimum: 1 , default: 1 , example: 1 )
44+ ),
45+ new OA \Parameter (
46+ name: 'per_page ' ,
47+ in: 'query ' ,
48+ description: 'Number of items per page ' ,
49+ required: false ,
50+ schema: new OA \Schema (type: 'integer ' , minimum: 5 , maximum: 100 , default: 5 , example: 10 )
51+ ),
52+ new OA \Parameter (
53+ name: 'filter ' ,
54+ in: 'query ' ,
55+ description: 'Filter criteria. Supported filters: slug== (exact match). Example: filter=slug==administrators ' ,
56+ required: false ,
57+ schema: new OA \Schema (type: 'string ' , example: 'slug==administrators ' )
58+ ),
59+ new OA \Parameter (
60+ name: 'order ' ,
61+ in: 'query ' ,
62+ description: 'Ordering criteria. Supported fields: id, name, slug. Use + for ascending, - for descending. Example: +name or -id ' ,
63+ required: false ,
64+ schema: new OA \Schema (type: 'string ' , example: '+name ' )
65+ )
66+ ],
67+ responses: [
68+ new OA \Response (
69+ response: Response::HTTP_OK ,
70+ description: 'Successful response with paginated groups ' ,
71+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedGroupResponseSchema ' )
72+ ),
73+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: 'Not Found ' ),
74+ new OA \Response (response: Response::HTTP_PRECONDITION_FAILED , description: 'Validation failed ' ),
75+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: 'Server error ' )
76+ ]
77+ )]
78+
2979 /**
3080 * OAuth2UserApiController constructor.
3181 * @param IGroupRepository $repository
0 commit comments