Skip to content

Commit bc3a5d2

Browse files
feat: Add openapi documentation for SummitAdministratorPermissionGroup
1 parent bf9ee0a commit bc3a5d2

3 files changed

Lines changed: 385 additions & 17 deletions

File tree

app/Http/Controllers/Apis/Protected/Main/OAuth2SummitAdministratorPermissionGroupApiController.php

Lines changed: 279 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
**/
1414

1515
use App\Http\Exceptions\HTTP403ForbiddenException;
16+
use App\Models\Foundation\Main\IGroup;
1617
use App\Models\Foundation\Main\Repositories\ISummitAdministratorPermissionGroupRepository;
1718
use App\ModelSerializers\ISummitAttendeeTicketSerializerTypes;
1819
use App\Services\Model\ISummitAdministratorPermissionGroupService;
20+
use App\Security\SummitScopes;
1921
use Illuminate\Support\Facades\Log;
2022
use models\exceptions\EntityNotFoundException;
2123
use models\exceptions\ValidationException;
@@ -24,6 +26,8 @@
2426
use models\utils\IEntity;
2527
use Exception;
2628
use ModelSerializers\SerializerRegistry;
29+
use OpenApi\Attributes as OA;
30+
use Symfony\Component\HttpFoundation\Response;
2731
use utils\Filter;
2832
use utils\FilterElement;
2933

@@ -67,6 +71,50 @@ public function __construct
6771

6872
use GetEntity;
6973

74+
#[OA\Get(
75+
path: "/api/v1/summit-administrator-groups",
76+
description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
77+
summary: "Get all summit administrator permission groups",
78+
security: [['summit_admin_groups_oauth2' => [
79+
SummitScopes::ReadSummitAdminGroups,
80+
]]],
81+
tags: ["SummitAdministratorPermissionGroups"],
82+
x: [
83+
'required-groups' => [
84+
IGroup::SuperAdmins,
85+
IGroup::Administrators,
86+
]
87+
],
88+
parameters: [
89+
new OA\Parameter(
90+
name: "page",
91+
description: "Page number",
92+
in: "query",
93+
required: false,
94+
schema: new OA\Schema(type: "integer", default: 1)
95+
),
96+
new OA\Parameter(
97+
name: "per_page",
98+
description: "Items per page",
99+
in: "query",
100+
required: false,
101+
schema: new OA\Schema(type: "integer", default: 10)
102+
),
103+
new OA\Parameter(name: "filter", description: "Filter", in: "query", required: false, schema: new OA\Schema(type: "string")),
104+
new OA\Parameter(name: "order", description: "Order", in: "query", required: false, schema: new OA\Schema(type: "string")),
105+
],
106+
responses: [
107+
new OA\Response(
108+
response: Response::HTTP_OK,
109+
description: "OK",
110+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroupList")
111+
),
112+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
113+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
114+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
115+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
116+
]
117+
)]
70118
function getAll()
71119
{
72120
return $this->_getAll(
@@ -107,9 +155,32 @@ function () {
107155
);
108156
}
109157

110-
/**
111-
* @inheritDoc
112-
*/
158+
#[OA\Post(
159+
path: "/api/v1/summit-administrator-groups",
160+
summary: "Create a new summit administrator permission group",
161+
security: [['summit_admin_groups_oauth2' => [
162+
SummitScopes::WriteSummitAdminGroups,
163+
]]],
164+
tags: ["SummitAdministratorPermissionGroups"],
165+
requestBody: new OA\RequestBody(
166+
required: true,
167+
content: new OA\JsonContent(
168+
ref: "#/components/schemas/CreateSummitAdministratorPermissionGroup"
169+
)
170+
),
171+
responses: [
172+
new OA\Response(
173+
response: Response::HTTP_CREATED,
174+
description: "Created",
175+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
176+
),
177+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
178+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
179+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
180+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
181+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
182+
]
183+
)]
113184
function getAddValidationRules(array $payload): array
114185
{
115186
return [
@@ -127,25 +198,64 @@ protected function addEntity(array $payload): IEntity
127198
return $this->service->create($payload);
128199
}
129200

130-
/**
131-
* @inheritDoc
132-
*/
133-
protected function deleteEntity(int $id): void
134-
{
135-
$this->service->delete($id);
136-
}
137-
138-
/**
139-
* @inheritDoc
140-
*/
201+
#[OA\Get(
202+
path: "/api/v1/summit-administrator-groups/{id}",
203+
summary: "Get a summit administrator permission group by ID",
204+
security: [['summit_admin_groups_oauth2' => [
205+
SummitScopes::ReadSummitAdminGroups,
206+
]]],
207+
tags: ["SummitAdministratorPermissionGroups"],
208+
parameters: [
209+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
210+
],
211+
responses: [
212+
new OA\Response(
213+
response: Response::HTTP_OK,
214+
description: "OK",
215+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
216+
),
217+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
218+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
219+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
220+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
221+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
222+
]
223+
)]
141224
protected function getEntity(int $id): IEntity
142225
{
143226
return $this->repository->getById($id);
144227
}
145228

146-
/**
147-
* @inheritDoc
148-
*/
229+
#[OA\Put(
230+
path: "/api/v1/summit-administrator-groups/{id}",
231+
summary: "Update a summit administrator permission group",
232+
security: [['summit_admin_groups_oauth2' => [
233+
SummitScopes::WriteSummitAdminGroups,
234+
]]],
235+
tags: ["SummitAdministratorPermissionGroups"],
236+
parameters: [
237+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
238+
],
239+
requestBody: new OA\RequestBody(
240+
required: true,
241+
content: new OA\JsonContent(
242+
ref: "#/components/schemas/UpdateSummitAdministratorPermissionGroup"
243+
)
244+
),
245+
responses: [
246+
new OA\Response(
247+
response: Response::HTTP_OK,
248+
description: "OK",
249+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
250+
),
251+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
252+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
253+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
254+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
255+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
256+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
257+
]
258+
)]
149259
function getUpdateValidationRules(array $payload): array
150260
{
151261
return [
@@ -163,6 +273,62 @@ protected function updateEntity($id, array $payload): IEntity
163273
return $this->service->update($id, $payload);
164274
}
165275

276+
#[OA\Delete(
277+
path: "/api/v1/summit-administrator-groups/{id}",
278+
summary: "Delete a summit administrator permission group",
279+
security: [['summit_admin_groups_oauth2' => [
280+
SummitScopes::WriteSummitAdminGroups,
281+
]]],
282+
tags: ["SummitAdministratorPermissionGroups"],
283+
parameters: [
284+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
285+
],
286+
responses: [
287+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"),
288+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
289+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
290+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
291+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
292+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
293+
]
294+
)]
295+
protected function deleteEntity(int $id): void
296+
{
297+
$this->service->delete($id);
298+
}
299+
300+
#[OA\Put(
301+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
302+
description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
303+
summary: "Add member to permission group",
304+
security: [['summit_admin_groups_oauth2' => [
305+
SummitScopes::WriteSummitAdminGroups,
306+
]]],
307+
tags: ["SummitAdministratorPermissionGroups"],
308+
x: [
309+
'required-groups' => [
310+
IGroup::SuperAdmins,
311+
IGroup::Administrators,
312+
]
313+
],
314+
parameters: [
315+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
316+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
317+
],
318+
responses: [
319+
new OA\Response(
320+
response: Response::HTTP_OK,
321+
description: "OK",
322+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
323+
),
324+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
325+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
326+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
327+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
328+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
329+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
330+
]
331+
)]
166332
public function addMember($id, $member_id)
167333
{
168334
try {
@@ -189,6 +355,38 @@ public function addMember($id, $member_id)
189355
}
190356
}
191357

358+
#[OA\Delete(
359+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
360+
description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
361+
summary: "Remove member from permission group",
362+
security: [['summit_admin_groups_oauth2' => [
363+
SummitScopes::WriteSummitAdminGroups,
364+
]]],
365+
tags: ["SummitAdministratorPermissionGroups"],
366+
x: [
367+
'required-groups' => [
368+
IGroup::SuperAdmins,
369+
IGroup::Administrators,
370+
]
371+
],
372+
parameters: [
373+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
374+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
375+
],
376+
responses: [
377+
new OA\Response(
378+
response: Response::HTTP_OK,
379+
description: "OK",
380+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
381+
),
382+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
383+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
384+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
385+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
386+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
387+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
388+
]
389+
)]
192390
public function removeMember($id, $member_id)
193391
{
194392
try {
@@ -215,6 +413,38 @@ public function removeMember($id, $member_id)
215413
}
216414
}
217415

416+
#[OA\Put(
417+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
418+
description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
419+
summary: "Add summit to permission group",
420+
security: [['summit_admin_groups_oauth2' => [
421+
SummitScopes::WriteSummitAdminGroups,
422+
]]],
423+
tags: ["SummitAdministratorPermissionGroups"],
424+
x: [
425+
'required-groups' => [
426+
IGroup::SuperAdmins,
427+
IGroup::Administrators,
428+
]
429+
],
430+
parameters: [
431+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
432+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
433+
],
434+
responses: [
435+
new OA\Response(
436+
response: Response::HTTP_OK,
437+
description: "OK",
438+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
439+
),
440+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
441+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
442+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
443+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
444+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
445+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
446+
]
447+
)]
218448
public function addSummit($id, $summit_id)
219449
{
220450
try {
@@ -241,6 +471,38 @@ public function addSummit($id, $summit_id)
241471
}
242472
}
243473

474+
#[OA\Delete(
475+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
476+
description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators,
477+
summary: "Remove summit from permission group",
478+
security: [['summit_admin_groups_oauth2' => [
479+
SummitScopes::WriteSummitAdminGroups,
480+
]]],
481+
tags: ["SummitAdministratorPermissionGroups"],
482+
x: [
483+
'required-groups' => [
484+
IGroup::SuperAdmins,
485+
IGroup::Administrators,
486+
]
487+
],
488+
parameters: [
489+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
490+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
491+
],
492+
responses: [
493+
new OA\Response(
494+
response: Response::HTTP_OK,
495+
description: "OK",
496+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
497+
),
498+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
499+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
500+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
501+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
502+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
503+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
504+
]
505+
)]
244506
public function removeSummit($id, $summit_id)
245507
{
246508
try {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
namespace App\Swagger\schemas;
3+
use App\Security\SummitScopes;
4+
5+
use OpenApi\Attributes as OA;
6+
7+
#[
8+
OA\SecurityScheme(
9+
type: 'oauth2',
10+
securityScheme: 'summit_admin_groups_oauth2',
11+
flows: [
12+
new OA\Flow(
13+
authorizationUrl: L5_SWAGGER_CONST_AUTH_URL,
14+
tokenUrl: L5_SWAGGER_CONST_TOKEN_URL,
15+
flow: 'authorizationCode',
16+
scopes: [
17+
SummitScopes::ReadSummitAdminGroups => 'Read Summit Administrator Groups',
18+
SummitScopes::WriteSummitAdminGroups => 'Write Summit Administrator Groups',
19+
],
20+
),
21+
],
22+
)
23+
]
24+
class SummitAdminGroupsAuthSchema{}

0 commit comments

Comments
 (0)