Skip to content

Commit e476b84

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

4 files changed

Lines changed: 347 additions & 18 deletions

File tree

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

Lines changed: 247 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
use models\utils\IEntity;
2525
use Exception;
2626
use ModelSerializers\SerializerRegistry;
27+
use OpenApi\Attributes as OA;
28+
use Symfony\Component\HttpFoundation\Response;
2729
use utils\Filter;
2830
use utils\FilterElement;
2931

@@ -67,6 +69,55 @@ public function __construct
6769

6870
use GetEntity;
6971

72+
#[OA\Get(
73+
path: "/api/v1/summit-administrator-groups",
74+
summary: "Get all summit administrator permission groups",
75+
security: [["bearer_token" => []]],
76+
tags: ["SummitAdministratorPermissionGroups"],
77+
parameters: [
78+
new OA\Parameter(
79+
name: "page",
80+
description: "Page number",
81+
in: "query",
82+
required: false,
83+
schema: new OA\Schema(type: "integer", default: 1)
84+
),
85+
new OA\Parameter(
86+
name: "per_page",
87+
description: "Items per page",
88+
in: "query",
89+
required: false,
90+
schema: new OA\Schema(type: "integer", default: 10)
91+
),
92+
new OA\Parameter(name: "filter", description: "Filter", in: "query", required: false, schema: new OA\Schema(type: "string")),
93+
new OA\Parameter(name: "order", description: "Order", in: "query", required: false, schema: new OA\Schema(type: "string")),
94+
],
95+
responses: [
96+
new OA\Response(
97+
response: Response::HTTP_OK,
98+
description: "OK",
99+
content: new OA\JsonContent(
100+
allOf: [
101+
new OA\Schema(ref: "#/components/schemas/PaginateDataSchemaResponse"),
102+
new OA\Schema(
103+
type: "object",
104+
properties: [
105+
new OA\Property(
106+
property: "data",
107+
type: "array",
108+
items: new OA\Items(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
109+
)
110+
]
111+
)
112+
]
113+
)
114+
),
115+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
116+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
117+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
118+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
119+
]
120+
)]
70121
function getAll()
71122
{
72123
return $this->_getAll(
@@ -107,9 +158,35 @@ function () {
107158
);
108159
}
109160

110-
/**
111-
* @inheritDoc
112-
*/
161+
#[OA\Post(
162+
path: "/api/v1/summit-administrator-groups",
163+
summary: "Create a new summit administrator permission group",
164+
security: [["bearer_token" => []]],
165+
tags: ["SummitAdministratorPermissionGroups"],
166+
requestBody: new OA\RequestBody(
167+
required: true,
168+
content: new OA\JsonContent(
169+
required: ['title', 'summits', 'members'],
170+
properties: [
171+
new OA\Property(property: 'title', type: 'string', description: 'Group title'),
172+
new OA\Property(property: 'summits', type: 'array', items: new OA\Items(type: 'integer'), description: 'Array of summit IDs'),
173+
new OA\Property(property: 'members', type: 'array', items: new OA\Items(type: 'integer'), description: 'Array of member IDs'),
174+
]
175+
)
176+
),
177+
responses: [
178+
new OA\Response(
179+
response: Response::HTTP_CREATED,
180+
description: "Created",
181+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
182+
),
183+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
184+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
185+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
186+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
187+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
188+
]
189+
)]
113190
function getAddValidationRules(array $payload): array
114191
{
115192
return [
@@ -127,25 +204,64 @@ protected function addEntity(array $payload): IEntity
127204
return $this->service->create($payload);
128205
}
129206

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

146-
/**
147-
* @inheritDoc
148-
*/
233+
#[OA\Put(
234+
path: "/api/v1/summit-administrator-groups/{id}",
235+
summary: "Update a summit administrator permission group",
236+
security: [["bearer_token" => []]],
237+
tags: ["SummitAdministratorPermissionGroups"],
238+
parameters: [
239+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
240+
],
241+
requestBody: new OA\RequestBody(
242+
required: true,
243+
content: new OA\JsonContent(
244+
properties: [
245+
new OA\Property(property: 'title', type: 'string', description: 'Group title'),
246+
new OA\Property(property: 'summits', type: 'array', items: new OA\Items(type: 'integer'), description: 'Array of summit IDs'),
247+
new OA\Property(property: 'members', type: 'array', items: new OA\Items(type: 'integer'), description: 'Array of member IDs'),
248+
]
249+
)
250+
),
251+
responses: [
252+
new OA\Response(
253+
response: Response::HTTP_OK,
254+
description: "OK",
255+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
256+
),
257+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
258+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
259+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
260+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
261+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
262+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
263+
]
264+
)]
149265
function getUpdateValidationRules(array $payload): array
150266
{
151267
return [
@@ -163,6 +279,51 @@ protected function updateEntity($id, array $payload): IEntity
163279
return $this->service->update($id, $payload);
164280
}
165281

282+
#[OA\Delete(
283+
path: "/api/v1/summit-administrator-groups/{id}",
284+
summary: "Delete a summit administrator permission group",
285+
security: [["bearer_token" => []]],
286+
tags: ["SummitAdministratorPermissionGroups"],
287+
parameters: [
288+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
289+
],
290+
responses: [
291+
new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"),
292+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
293+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
294+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
295+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
296+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
297+
]
298+
)]
299+
protected function deleteEntity(int $id): void
300+
{
301+
$this->service->delete($id);
302+
}
303+
304+
#[OA\Put(
305+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
306+
summary: "Add member to permission group",
307+
security: [["bearer_token" => []]],
308+
tags: ["SummitAdministratorPermissionGroups"],
309+
parameters: [
310+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
311+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
312+
],
313+
responses: [
314+
new OA\Response(
315+
response: Response::HTTP_OK,
316+
description: "OK",
317+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
318+
),
319+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
320+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
321+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
322+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
323+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
324+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
325+
]
326+
)]
166327
public function addMember($id, $member_id)
167328
{
168329
try {
@@ -189,6 +350,29 @@ public function addMember($id, $member_id)
189350
}
190351
}
191352

353+
#[OA\Delete(
354+
path: "/api/v1/summit-administrator-groups/{id}/members/{member_id}",
355+
summary: "Remove member from permission group",
356+
security: [["bearer_token" => []]],
357+
tags: ["SummitAdministratorPermissionGroups"],
358+
parameters: [
359+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
360+
new OA\Parameter(name: "member_id", description: "Member ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
361+
],
362+
responses: [
363+
new OA\Response(
364+
response: Response::HTTP_OK,
365+
description: "OK",
366+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
367+
),
368+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
369+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
370+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
371+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
372+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
373+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
374+
]
375+
)]
192376
public function removeMember($id, $member_id)
193377
{
194378
try {
@@ -215,6 +399,29 @@ public function removeMember($id, $member_id)
215399
}
216400
}
217401

402+
#[OA\Put(
403+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
404+
summary: "Add summit to permission group",
405+
security: [["bearer_token" => []]],
406+
tags: ["SummitAdministratorPermissionGroups"],
407+
parameters: [
408+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
409+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
410+
],
411+
responses: [
412+
new OA\Response(
413+
response: Response::HTTP_OK,
414+
description: "OK",
415+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
416+
),
417+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
418+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
419+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
420+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
421+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
422+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
423+
]
424+
)]
218425
public function addSummit($id, $summit_id)
219426
{
220427
try {
@@ -241,6 +448,29 @@ public function addSummit($id, $summit_id)
241448
}
242449
}
243450

451+
#[OA\Delete(
452+
path: "/api/v1/summit-administrator-groups/{id}/summits/{summit_id}",
453+
summary: "Remove summit from permission group",
454+
security: [["bearer_token" => []]],
455+
tags: ["SummitAdministratorPermissionGroups"],
456+
parameters: [
457+
new OA\Parameter(name: "id", description: "Permission Group ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
458+
new OA\Parameter(name: "summit_id", description: "Summit ID", in: "path", required: true, schema: new OA\Schema(type: "integer")),
459+
],
460+
responses: [
461+
new OA\Response(
462+
response: Response::HTTP_OK,
463+
description: "OK",
464+
content: new OA\JsonContent(ref: "#/components/schemas/SummitAdministratorPermissionGroup")
465+
),
466+
new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"),
467+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
468+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
469+
new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not found"),
470+
new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"),
471+
new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"),
472+
]
473+
)]
244474
public function removeSummit($id, $summit_id)
245475
{
246476
try {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
namespace App\Swagger\schemas;
3+
4+
use OpenApi\Attributes as OA;
5+
6+
#[OA\Schema(
7+
schema: "SummitAdministratorPermissionGroup",
8+
type: "object",
9+
properties: [
10+
new OA\Property(property: "id", type: "integer"),
11+
new OA\Property(property: "title", type: "string"),
12+
new OA\Property(property: "created", type: "integer"),
13+
new OA\Property(property: "last_edited", type: "integer"),
14+
new OA\Property(
15+
property: "members",
16+
description: "Array of member IDs. Use expand=members to get full Member objects",
17+
oneOf: [
18+
new OA\Schema(type: "array", items: new OA\Items(type: "integer")),
19+
new OA\Schema(type: "array", items: new OA\Items(type: "object", description: "Member"))
20+
]
21+
),
22+
new OA\Property(
23+
property: "summits",
24+
description: "Array of summit IDs. Use expand=summits to get full Summit objects",
25+
oneOf: [
26+
new OA\Schema(type: "array", items: new OA\Items(type: "integer")),
27+
new OA\Schema(type: "array", items: new OA\Items(type: "object", description: "Summit"))
28+
]
29+
),
30+
]
31+
)]
32+
class SummitAdministratorPermissionGroupSchemas
33+
{
34+
}
35+

0 commit comments

Comments
 (0)