Skip to content

Commit af9823b

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

2 files changed

Lines changed: 340 additions & 17 deletions

File tree

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

Lines changed: 237 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use App\Models\Foundation\Main\Repositories\ISummitAdministratorPermissionGroupRepository;
1717
use App\ModelSerializers\ISummitAttendeeTicketSerializerTypes;
1818
use App\Services\Model\ISummitAdministratorPermissionGroupService;
19+
use App\Security\SummitScopes;
1920
use Illuminate\Support\Facades\Log;
2021
use models\exceptions\EntityNotFoundException;
2122
use models\exceptions\ValidationException;
@@ -24,6 +25,8 @@
2425
use models\utils\IEntity;
2526
use Exception;
2627
use ModelSerializers\SerializerRegistry;
28+
use OpenApi\Attributes as OA;
29+
use Symfony\Component\HttpFoundation\Response;
2730
use utils\Filter;
2831
use utils\FilterElement;
2932

@@ -67,6 +70,43 @@ public function __construct
6770

6871
use GetEntity;
6972

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

110-
/**
111-
* @inheritDoc
112-
*/
150+
#[OA\Post(
151+
path: "/api/v1/summit-administrator-groups",
152+
summary: "Create a new summit administrator permission group",
153+
security: [['summit_admin_groups_oauth2' => [
154+
SummitScopes::WriteSummitAdminGroups,
155+
]]],
156+
tags: ["SummitAdministratorPermissionGroups"],
157+
requestBody: new OA\RequestBody(
158+
required: true,
159+
content: new OA\JsonContent(
160+
ref: "#/components/schemas/CreateSummitAdministratorPermissionGroup"
161+
)
162+
),
163+
responses: [
164+
new OA\Response(
165+
response: Response::HTTP_CREATED,
166+
description: "Created",
167+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
168+
),
169+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
170+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
171+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
172+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
173+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
174+
]
175+
)]
113176
function getAddValidationRules(array $payload): array
114177
{
115178
return [
@@ -127,25 +190,64 @@ protected function addEntity(array $payload): IEntity
127190
return $this->service->create($payload);
128191
}
129192

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

146-
/**
147-
* @inheritDoc
148-
*/
221+
#[OA\Put(
222+
path: "/api/v1/summit-administrator-groups/{id}",
223+
summary: "Update a summit administrator permission group",
224+
security: [['summit_admin_groups_oauth2' => [
225+
SummitScopes::WriteSummitAdminGroups,
226+
]]],
227+
tags: ["SummitAdministratorPermissionGroups"],
228+
parameters: [
229+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
230+
],
231+
requestBody: new OA\RequestBody(
232+
required: true,
233+
content: new OA\JsonContent(
234+
ref: "#/components/schemas/UpdateSummitAdministratorPermissionGroup"
235+
)
236+
),
237+
responses: [
238+
new OA\Response(
239+
response: Response::HTTP_OK,
240+
description: "OK",
241+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
242+
),
243+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
244+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
245+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
246+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
247+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
248+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
249+
]
250+
)]
149251
function getUpdateValidationRules(array $payload): array
150252
{
151253
return [
@@ -163,6 +265,55 @@ protected function updateEntity($id, array $payload): IEntity
163265
return $this->service->update($id, $payload);
164266
}
165267

268+
#[OA\Delete(
269+
path: "/api/v1/summit-administrator-groups/{id}",
270+
summary: "Delete a summit administrator permission group",
271+
security: [['summit_admin_groups_oauth2' => [
272+
SummitScopes::WriteSummitAdminGroups,
273+
]]],
274+
tags: ["SummitAdministratorPermissionGroups"],
275+
parameters: [
276+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
277+
],
278+
responses: [
279+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"),
280+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
281+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
282+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
283+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
284+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
285+
]
286+
)]
287+
protected function deleteEntity(int $id): void
288+
{
289+
$this->service->delete($id);
290+
}
291+
292+
#[OA\Put(
293+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
294+
summary: "Add member to permission group",
295+
security: [['summit_admin_groups_oauth2' => [
296+
SummitScopes::WriteSummitAdminGroups,
297+
]]],
298+
tags: ["SummitAdministratorPermissionGroups"],
299+
parameters: [
300+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
301+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
302+
],
303+
responses: [
304+
new OA\Response(
305+
response: Response::HTTP_OK,
306+
description: "OK",
307+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
308+
),
309+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
310+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
311+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
312+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
313+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
314+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
315+
]
316+
)]
166317
public function addMember($id, $member_id)
167318
{
168319
try {
@@ -189,6 +340,29 @@ public function addMember($id, $member_id)
189340
}
190341
}
191342

343+
#[OA\Delete(
344+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
345+
summary: "Remove member from permission group",
346+
security: [["bearer_token" => []]],
347+
tags: ["SummitAdministratorPermissionGroups"],
348+
parameters: [
349+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
350+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
351+
],
352+
responses: [
353+
new OA\Response(
354+
response: Response::HTTP_OK,
355+
description: "OK",
356+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
357+
),
358+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
359+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
360+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
361+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
362+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
363+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
364+
]
365+
)]
192366
public function removeMember($id, $member_id)
193367
{
194368
try {
@@ -215,6 +389,29 @@ public function removeMember($id, $member_id)
215389
}
216390
}
217391

392+
#[OA\Put(
393+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
394+
summary: "Add summit to permission group",
395+
security: [["bearer_token" => []]],
396+
tags: ["SummitAdministratorPermissionGroups"],
397+
parameters: [
398+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
399+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
400+
],
401+
responses: [
402+
new OA\Response(
403+
response: Response::HTTP_OK,
404+
description: "OK",
405+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
406+
),
407+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
408+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
409+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
410+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
411+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
412+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
413+
]
414+
)]
218415
public function addSummit($id, $summit_id)
219416
{
220417
try {
@@ -241,6 +438,29 @@ public function addSummit($id, $summit_id)
241438
}
242439
}
243440

441+
#[OA\Delete(
442+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
443+
summary: "Remove summit from permission group",
444+
security: [["bearer_token" => []]],
445+
tags: ["SummitAdministratorPermissionGroups"],
446+
parameters: [
447+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
448+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
449+
],
450+
responses: [
451+
new OA\Response(
452+
response: Response::HTTP_OK,
453+
description: "OK",
454+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
455+
),
456+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
457+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
458+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
459+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
460+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
461+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
462+
]
463+
)]
244464
public function removeSummit($id, $summit_id)
245465
{
246466
try {

0 commit comments

Comments
 (0)