Skip to content

Commit 76dad6a

Browse files
committed
feat: Enrich Summit schema and add missing simple schemas
1 parent 7b38e55 commit 76dad6a

File tree

7 files changed

+245
-128
lines changed

7 files changed

+245
-128
lines changed

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitApiController.php

Lines changed: 122 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -119,84 +119,130 @@ public function __construct
119119
use ParseAndGetPaginationParams;
120120

121121
#[OA\Get(
122-
path: "/api/v1/summits",
123-
operationId: "getSummits",
124-
summary: "Get summits list",
125-
tags: ["Summits"],
126-
parameters: [
127-
new OA\Parameter(
128-
name: "page",
129-
description: "Page number",
130-
in: "query",
131-
required: false,
132-
schema: new OA\Schema(type: "integer", default: 1)
133-
),
134-
new OA\Parameter(
135-
name: "per_page",
136-
description: "Items per page",
137-
in: "query",
138-
required: false,
139-
schema: new OA\Schema(type: "integer", default: 10)
140-
),
141-
new OA\Parameter(
142-
name: "filter",
143-
description: "Filter criteria",
144-
in: "query",
145-
required: false,
146-
schema: new OA\Schema(type: "string")
147-
),
148-
],
149-
responses: [
150-
new OA\Response(
151-
response: Response::HTTP_OK,
152-
description: "Success",
153-
content: new OA\JsonContent(ref: "#/components/schemas/SummitCollection")
154-
),
155-
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
156-
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
157-
],
158-
security: [["summit_oauth2" => [
159-
SummitScopes::ReadSummitData,
160-
SummitScopes::ReadAllSummitData
161-
]]]
162-
),
122+
path: "/api/v1/summits",
123+
operationId: "getSummits",
124+
summary: "Get summits list",
125+
tags: ["Summits"],
126+
parameters: [
127+
new OA\Parameter(
128+
name: "page",
129+
description: "Page number",
130+
in: "query",
131+
required: false,
132+
schema: new OA\Schema(type: "integer", default: 1)
133+
),
134+
new OA\Parameter(
135+
name: "per_page",
136+
description: "Items per page",
137+
in: "query",
138+
required: false,
139+
schema: new OA\Schema(type: "integer", default: 10)
140+
),
141+
new OA\Parameter(
142+
name: "filter",
143+
description: "Filter criteria. Allowed fields: name, start_date, end_date, registration_begin_date, registration_end_date, ticket_types_count. Operands: == (equal), < (less than), > (greater than), <= (less than or equal), >= (greater than or equal), [] (especially for date ranges), =@ (starts with), @@ (contains)",
144+
in: "query",
145+
required: false,
146+
schema: new OA\Schema(type: "string")
147+
),
148+
new OA\Parameter(
149+
name: "order",
150+
in: "query",
151+
required: false,
152+
schema: new OA\Schema(type: "string"),
153+
description: "Order by: id, name, start_date, registration_begin_date"
154+
),
155+
new OA\Parameter(
156+
name: "relations",
157+
in: "query",
158+
required: false,
159+
schema: new OA\Schema(type: "string"),
160+
description: "Expand relationships (ids): locations, wifi_connections, selection_plans, meeting_booking_room_allowed_attributes, summit_sponsors, order_extra_questions, tax_types, payment_profiles, email_flows_events, summit_documents, featured_speakers, dates_with_events, presentation_action_types, schedule_settings, badge_view_types, lead_report_settings, badge_types, badge_features_types, badge_access_level_types, dates_with_events, supported_currencies"
161+
),
162+
new OA\Parameter(
163+
name: "expand",
164+
in: "query",
165+
required: false,
166+
schema: new OA\Schema(type: "string"),
167+
description: "Expand relationships: locations, wifi_connections, selection_plans, meeting_booking_room_allowed_attributes, summit_sponsors, order_extra_questions, tax_types, payment_profiles, email_flows_events, summit_documents, featured_speakers, dates_with_events, presentation_action_types, schedule_settings, badge_view_types, lead_report_settings, badge_types, badge_features_types, badge_access_level_types, dates_with_events, supported_currencies"
168+
),
169+
],
170+
responses: [
171+
new OA\Response(
172+
response: Response::HTTP_OK,
173+
description: "Success",
174+
content: new OA\JsonContent(ref: "#/components/schemas/SummitCollection")
175+
),
176+
new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"),
177+
new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"),
178+
],
179+
security: [
180+
[
181+
"summit_oauth2" => [
182+
SummitScopes::ReadSummitData,
183+
SummitScopes::ReadAllSummitData
184+
]
185+
]
186+
]
187+
),
163188
]
164189
#[OA\Get(
165-
path: "/api/public/v1/summits",
166-
operationId: "getSummitsPublic",
167-
summary: "Get summits list (public)",
168-
tags: ["Summits (Public)"],
169-
parameters: [
170-
new OA\Parameter(
171-
name: "page",
172-
description: "Page number",
173-
in: "query",
174-
required: false,
175-
schema: new OA\Schema(type: "integer", default: 1)
176-
),
177-
new OA\Parameter(
178-
name: "per_page",
179-
description: "Items per page",
180-
in: "query",
181-
required: false,
182-
schema: new OA\Schema(type: "integer", default: 10)
183-
),
184-
new OA\Parameter(
185-
name: "filter",
186-
description: "Filter criteria",
187-
in: "query",
188-
required: false,
189-
schema: new OA\Schema(type: "string")
190-
),
191-
],
192-
responses: [
193-
new OA\Response(
194-
response: Response::HTTP_OK,
195-
description: "Success",
196-
content: new OA\JsonContent(ref: "#/components/schemas/SummitCollection")
197-
),
198-
]
199-
)
190+
path: "/api/public/v1/summits",
191+
operationId: "getSummitsPublic",
192+
summary: "Get summits list (public)",
193+
tags: ["Summits (Public)"],
194+
parameters: [
195+
new OA\Parameter(
196+
name: "page",
197+
description: "Page number",
198+
in: "query",
199+
required: false,
200+
schema: new OA\Schema(type: "integer", default: 1)
201+
),
202+
new OA\Parameter(
203+
name: "per_page",
204+
description: "Items per page",
205+
in: "query",
206+
required: false,
207+
schema: new OA\Schema(type: "integer", default: 10)
208+
),
209+
new OA\Parameter(
210+
name: "filter",
211+
description: "Filter criteria. Allowed fields: name, start_date, end_date, registration_begin_date, registration_end_date, ticket_types_count. Operands: == (equal), < (less than), > (greater than), <= (less than or equal), >= (greater than or equal), [] (especially for date ranges), =@ (starts with), @@ (contains)",
212+
in: "query",
213+
required: false,
214+
schema: new OA\Schema(type: "string")
215+
),
216+
new OA\Parameter(
217+
name: "order",
218+
in: "query",
219+
required: false,
220+
schema: new OA\Schema(type: "string"),
221+
description: "Order by: id, name, start_date, registration_begin_date"
222+
),
223+
new OA\Parameter(
224+
name: "relations",
225+
in: "query",
226+
required: false,
227+
schema: new OA\Schema(type: "string"),
228+
description: "Expand relationships (ids): locations, wifi_connections, selection_plans, meeting_booking_room_allowed_attributes, summit_sponsors, order_extra_questions, tax_types, payment_profiles, email_flows_events, summit_documents, featured_speakers, dates_with_events, presentation_action_types, schedule_settings, badge_view_types, lead_report_settings, badge_types, badge_features_types, badge_access_level_types, dates_with_events, supported_currencies"
229+
),
230+
new OA\Parameter(
231+
name: "expand",
232+
in: "query",
233+
required: false,
234+
schema: new OA\Schema(type: "string"),
235+
description: "Expand relationships: featured_speakers, schedule, type, locations"
236+
),
237+
],
238+
responses: [
239+
new OA\Response(
240+
response: Response::HTTP_OK,
241+
description: "Success",
242+
content: new OA\JsonContent(ref: "#/components/schemas/SummitCollection")
243+
),
244+
]
245+
)
200246
]
201247
public function getSummits()
202248
{
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace App\Swagger\schemas;
4+
5+
use OpenApi\Attributes as OA;
6+
7+
8+
#[OA\Schema(
9+
schema: 'SummitAbstractLocation',
10+
type: 'object',
11+
properties: [
12+
new OA\Property(property: 'id', type: 'integer', example: 1),
13+
new OA\Property(property: 'created', type: 'integer', example: 1, format: "ime_epoch"),
14+
new OA\Property(property: 'last_edited', type: 'integer', example: 1, format: "ime_epoch"),
15+
new OA\Property(property: 'name', type: 'string'),
16+
new OA\Property(property: 'short_name', type: 'string'),
17+
new OA\Property(property: 'description', type: 'string'),
18+
new OA\Property(property: 'location_type', type: 'string'),
19+
new OA\Property(property: 'order', type: 'integer'),
20+
new OA\Property(property: 'opening_hour', type: 'integer'),
21+
new OA\Property(property: 'closing_hour', type: 'integer'),
22+
new OA\Property(property: 'class_name', type: 'string'),
23+
new OA\Property(property: 'published_events', type: 'array', items: new OA\Items(ref: "#/components/schemas/SummitEvent"), description: 'Array of SummitEvent ids, only if is in ?expand=published_events' ),
24+
])
25+
]
26+
class SummitAbstractLocationSchema
27+
{
28+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Swagger\schemas;
4+
5+
use OpenApi\Attributes as OA;
6+
7+
#[OA\Schema(
8+
schema: 'SummitAttendee',
9+
type: 'object',
10+
properties: [
11+
new OA\Property(property: 'id', type: 'integer'),
12+
new OA\Property(property: 'created', type: 'integer', example: 1630500518),
13+
new OA\Property(property: 'last_edited', type: 'integer', example: 1630500518),
14+
new OA\Property(property: 'first_name', type: 'string', example: 'John'),
15+
new OA\Property(property: 'last_name', type: 'string', example: 'Doe'),
16+
new OA\Property(property: 'status', type: 'string', example: 'Complete'),
17+
]
18+
)]
19+
class SummitAttendeeSchema
20+
{
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Swagger\schemas;
4+
5+
use OpenApi\Attributes as OA;
6+
7+
#[OA\Schema(
8+
schema: 'SummitEvent',
9+
type: 'object',
10+
properties: [
11+
new OA\Property(property: 'id', type: 'integer'),
12+
new OA\Property(property: 'created', type: 'integer', example: 1630500518),
13+
new OA\Property(property: 'last_edited', type: 'integer', example: 1630500518),
14+
new OA\Property(property: 'title', type: 'string', example: 'This is a title'),
15+
new OA\Property(property: 'description', type: 'string', example: 'This is a Description'),
16+
]
17+
)]
18+
class SummitEventSchema
19+
{
20+
}
21+

0 commit comments

Comments
 (0)