From a7caa64bac70f5085d68031c1004bd88f669a728 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Tue, 14 Oct 2025 19:04:44 -0300 Subject: [PATCH 1/6] feat: Extend Swagger Coverage for controller `OAuth2SummitRegistrationInvitationApiController` --- ...mitRegistrationInvitationApiController.php | 496 +++++++++++++++++- app/Swagger/SummitRegistrationSchemas.php | 111 +++- 2 files changed, 601 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index 7989cad7c..8fa078024 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -1,4 +1,7 @@ - []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: "multipart/form-data", + schema: new OA\Schema(ref: "#/components/schemas/SummitRegistrationInvitationCSVImportRequest") + ) + ), + responses: [ + new OA\Response(response: 200, description: "OK"), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function ingestInvitations(LaravelRequest $request, $summit_id) { return $this->processRequest(function () use ($request, $summit_id) { @@ -114,6 +150,31 @@ public function ingestInvitations(LaravelRequest $request, $summit_id) * @param $token * @return \Illuminate\Http\JsonResponse|mixed */ + #[OA\Get( + path: "/api/v1/summits/registration-invitations/tokens/{token}", + summary: "Get a registration invitation by token", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: "token", + in: "path", + required: true, + schema: new OA\Schema(type: "string") + ) + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function getInvitationByToken($token) { return $this->processRequest(function () use ($token) { @@ -134,7 +195,9 @@ public function getInvitationByToken($token) // traits use ParametrizedGetAll; - use GetSummitChildElementById; + use GetSummitChildElementById { + get as protected traitGet; + } /** * @return ISummitRepository @@ -154,8 +217,105 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity /** * @param $summit_id + * @param $invitation_id * @return mixed */ + #[OA\Get( + path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + summary: "Get a registration invitation by id", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "invitation_id", + in: "path", + required: true, + schema: new OA\Schema(type: "integer") + ) + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] + public function get($summit_id, $invitation_id) + { + return $this->traitGet($summit_id, $invitation_id); + } + + /** + * @param $summit_id + * @return mixed + */ + #[OA\Get( + path: "/api/v1/summits/{id}/registration-invitations", + summary: "Get all registration invitations for a summit", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', default: 1), + description: 'Page number' + ), + new OA\Parameter( + name: 'per_page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', default: 10), + description: 'Items per page' + ), + new OA\Parameter( + name: "filter", + in: "query", + description: "Filter query. Available operators: id==, not_id==, email@@/=@/==, first_name@@/=@/==, last_name@@/=@/==, full_name@@/=@/==, is_accepted==, is_sent==, ticket_types_id==, tags@@/=@/==, tags_id==, status==", + schema: new OA\Schema(type: "string") + ), + new OA\Parameter( + name: "order", + in: "query", + description: "Order by field. Available fields: id, email, first_name, last_name, full_name, status", + schema: new OA\Schema(type: "string") + ) + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/PaginatedSummitRegistrationInvitationsResponse") + ), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function getAllBySummit($summit_id) { @@ -221,6 +381,52 @@ function () { * @param $summit_id * @return mixed */ + #[OA\Get( + path: "/api/v1/summits/{id}/registration-invitations/csv", + summary: "Export registration invitations to CSV", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "filter", + in: "query", + description: "Filter query. Available operators: id==, not_id==, email@@/=@/==, first_name@@/=@/==, last_name@@/=@/==, full_name@@/=@/==, is_accepted==, is_sent==, ticket_types_id==, tags@@/=@/==, tags_id==, status==", + schema: new OA\Schema(type: "string") + ), + new OA\Parameter( + name: "order", + in: "query", + description: "Order by field. Available fields: id, email, first_name, last_name, full_name, status", + schema: new OA\Schema(type: "string") + ), + new OA\Parameter( + name: "columns", + in: "query", + description: "Comma-separated list of columns to include. Available columns: id, email, first_name, last_name, member_id, order_id, summit_id, accepted_date, is_accepted, is_sent, allowed_ticket_types, tags, status", + schema: new OA\Schema(type: "string") + ) + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\MediaType(mediaType: "text/csv", schema: new OA\Schema(type: "string")) + ), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function getAllBySummitCSV($summit_id) { @@ -323,7 +529,9 @@ function () { } - use DeleteSummitChildElement; + use DeleteSummitChildElement { + delete as protected traitDelete; + } /** * @inheritDoc @@ -333,7 +541,48 @@ protected function deleteChild(Summit $summit, $child_id): void $this->service->delete($summit, $child_id); } - use AddSummitChildElement; + /** + * @param $summit_id + * @param $invitation_id + * @return mixed + */ + #[OA\Delete( + path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + summary: "Delete a registration invitation", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "invitation_id", + in: "path", + required: true, + schema: new OA\Schema(type: "integer") + ) + ], + responses: [ + new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] + public function delete($summit_id, $invitation_id) + { + return $this->traitDelete($summit_id, $invitation_id); + } + + use AddSummitChildElement { + add as protected traitAdd; + } /** * @inheritDoc @@ -351,7 +600,53 @@ function getAddValidationRules(array $payload): array return SummitRegistrationInvitationValidationRulesFactory::buildForAdd($payload); } - use UpdateSummitChildElement; + /** + * @param $summit_id + * @return mixed + */ + #[OA\Post( + path: "/api/v1/summits/{id}/registration-invitations", + summary: "Create a registration invitation", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: "application/json", + schema: new OA\Schema(ref: "#/components/schemas/SummitRegistrationInvitationCreateRequest") + ) + ), + responses: [ + new OA\Response( + response: 201, + description: "Created", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] + public function add($summit_id) + { + return $this->traitAdd($summit_id); + } + + use UpdateSummitChildElement { + update as protected traitUpdate; + } /** * @inheritDoc @@ -369,10 +664,84 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I return $this->service->update($summit, $child_id, $payload); } + /** + * @param $summit_id + * @param $invitation_id + * @return mixed + */ + #[OA\Put( + path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + summary: "Update a registration invitation", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "invitation_id", + in: "path", + required: true, + schema: new OA\Schema(type: "integer") + ) + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: "application/json", + schema: new OA\Schema(ref: "#/components/schemas/SummitRegistrationInvitationUpdateRequest") + ) + ), + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] + public function update($summit_id, $invitation_id) + { + return $this->traitUpdate($summit_id, $invitation_id); + } + /** * @param $summit_id * @return \Illuminate\Http\JsonResponse|mixed */ + #[OA\Delete( + path: "/api/v1/summits/{id}/registration-invitations/all", + summary: "Delete all registration invitations for a summit", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + ], + responses: [ + new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function deleteAll($summit_id) { return $this->processRequest(function () use ($summit_id) { @@ -388,6 +757,43 @@ public function deleteAll($summit_id) * @param $summit_id * @return \Illuminate\Http\JsonResponse|mixed */ + #[OA\Put( + path: "/api/v1/summits/{id}/registration-invitations/all/send", + summary: "Send registration invitation emails", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "filter", + in: "query", + description: "Filter query. Available operators: id==, not_id==, email@@/=@/==, first_name@@/=@/==, last_name@@/=@/==, full_name@@/=@/==, is_accepted==, is_sent==, ticket_types_id==, tags@@/=@/==, tags_id==, status==", + schema: new OA\Schema(type: "string") + ) + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: "application/json", + schema: new OA\Schema(ref: "#/components/schemas/SendRegistrationInvitationsRequest") + ) + ), + responses: [ + new OA\Response(response: 200, description: "OK"), + new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] public function send($summit_id) { return $this->processRequest(function () use ($summit_id) { @@ -469,6 +875,32 @@ public function send($summit_id) * @param $summit_id * @return mixed */ + #[OA\Get( + path: "/api/v1/summits/{id}/registration-invitations/me", + summary: "Get my registration invitation for the current user", + security: [["Bearer" => []]], + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] function getMyInvitation($summit_id) { @@ -499,6 +931,35 @@ function getMyInvitation($summit_id) * @param $token * @return mixed */ + #[OA\Get( + path: "/api/public/v1/summits/{id}/registration-invitations/{token}", + summary: "Get a registration invitation by summit and token (public endpoint)", + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "token", + in: "path", + required: true, + schema: new OA\Schema(type: "string") + ) + ], + responses: [ + new OA\Response( + response: 200, + description: "OK", + content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") + ), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] function getInvitationBySummitAndToken($summit_id, $token) { return $this->processRequest(function () use ($summit_id, $token) { @@ -522,6 +983,31 @@ function getInvitationBySummitAndToken($summit_id, $token) * @param $token * @return mixed */ + #[OA\Delete( + path: "/api/public/v1/summits/{id}/registration-invitations/{token}/reject", + summary: "Reject a registration invitation by summit and token (public endpoint)", + tags: ["summit-registration-invitations"], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: "token", + in: "path", + required: true, + schema: new OA\Schema(type: "string") + ) + ], + responses: [ + new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] function rejectInvitationBySummitAndToken($summit_id, $token) { return $this->processRequest(function () use ($summit_id, $token) { diff --git a/app/Swagger/SummitRegistrationSchemas.php b/app/Swagger/SummitRegistrationSchemas.php index 2d2860b2a..5f7790a9a 100644 --- a/app/Swagger/SummitRegistrationSchemas.php +++ b/app/Swagger/SummitRegistrationSchemas.php @@ -57,7 +57,116 @@ class SummitBadgeTypeUpdateRequest { } -// +// Summit Registration Invitation Schemas + +#[OA\Schema( + schema: "SummitRegistrationInvitation", + type: "object", + properties: [ + new OA\Property(property: "id", type: "integer", example: 1), + new OA\Property(property: "created", type: "integer", description: "Unix timestamp", example: 1640995200), + new OA\Property(property: "last_edited", type: "integer", description: "Unix timestamp", example: 1640995200), + new OA\Property(property: "email", type: "string"), + new OA\Property(property: "first_name", type: "string"), + new OA\Property(property: "last_name", type: "string"), + new OA\Property(property: "summit_id", type: "integer"), + new OA\Property(property: "is_accepted", type: "boolean"), + new OA\Property(property: "is_sent", type: "boolean"), + new OA\Property(property: "action_date", type: "integer", nullable: true), + new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]), + new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]), + new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: ["integer", "SummitTicketType"]), nullable: true), + new OA\Property(property: "tags", type: "array", items: new OA\Items(type: ["integer", "Tag"]), nullable: true) + ] +)] +class SummitRegistrationInvitation +{ +} + +#[OA\Schema( + schema: "PaginatedSummitRegistrationInvitationsResponse", + allOf: [ + new OA\Schema(ref: "#/components/schemas/PaginateDataSchemaResponse"), + new OA\Schema( + properties: [ + new OA\Property( + property: "data", + type: "array", + items: new OA\Items(ref: "#/components/schemas/SummitRegistrationInvitation") + ) + ] + ) + ] +)] +class PaginatedSummitRegistrationInvitationsResponse +{ +} + +#[OA\Schema( + schema: "SummitRegistrationInvitationCreateRequest", + type: "object", + required: ["email", "first_name", "last_name", "acceptance_criteria"], + properties: [ + new OA\Property(property: "email", type: "string", format: "email", maxLength: 255), + new OA\Property(property: "first_name", type: "string", maxLength: 255), + new OA\Property(property: "last_name", type: "string", maxLength: 255), + new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: "integer")), + new OA\Property(property: "tags", type: "array", items: new OA\Items(type: "string")), + new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]), + new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]) + ] +)] +class SummitRegistrationInvitationCreateRequest +{ +} + +#[OA\Schema( + schema: "SummitRegistrationInvitationUpdateRequest", + type: "object", + properties: [ + new OA\Property(property: "email", type: "string", format: "email", maxLength: 255), + new OA\Property(property: "first_name", type: "string", maxLength: 255), + new OA\Property(property: "last_name", type: "string", maxLength: 255), + new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: "integer")), + new OA\Property(property: "tags", type: "array", items: new OA\Items(type: "string")), + new OA\Property(property: "is_accepted", type: "boolean"), + new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]), + new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]) + ] +)] +class SummitRegistrationInvitationUpdateRequest +{ +} + +#[OA\Schema( + schema: "SummitRegistrationInvitationCSVImportRequest", + type: "object", + required: ["file"], + properties: [ + new OA\Property(property: "file", type: "string", format: "binary"), + new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]) + ] +)] +class SummitRegistrationInvitationCSVImportRequest +{ +} + +#[OA\Schema( + schema: "SendRegistrationInvitationsRequest", + type: "object", + required: ["email_flow_event"], + properties: [ + new OA\Property(property: "email_flow_event", type: "string", enum: ["SUMMIT_REGISTRATION_INVITE", "SUMMIT_REGISTRATION_REINVITE"]), + new OA\Property(property: "invitations_ids", type: "array", items: new OA\Items(type: "integer")), + new OA\Property(property: "excluded_invitations_ids", type: "array", items: new OA\Items(type: "integer")), + new OA\Property(property: "test_email_recipient", type: "string", format: "email"), + new OA\Property(property: "outcome_email_recipient", type: "string", format: "email") + ] +)] +class SendRegistrationInvitationsRequest +{ +} + // Summit Badge Feature Types From 21829e52dc42aaa6fc0967b8060a68081640f7d1 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Wed, 26 Nov 2025 21:13:02 +0000 Subject: [PATCH 2/6] chore: Add the correct security and x attributes and create security schema, fix path routes and change schema to be defined as requested --- ...mitRegistrationInvitationApiController.php | 178 +++++++++++++++--- ...SummitRegistrationInvitationAuthSchema.php | 28 +++ app/Swagger/SummitRegistrationSchemas.php | 16 +- 3 files changed, 188 insertions(+), 34 deletions(-) create mode 100644 app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index 8fa078024..dff9d3e39 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -19,8 +19,10 @@ use App\Http\Utils\EpochCellFormatter; use App\Jobs\Emails\Registration\Invitations\InviteSummitRegistrationEmail; use App\Jobs\Emails\Registration\Invitations\ReInviteSummitRegistrationEmail; +use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Summit\Repositories\ISummitRegistrationInvitationRepository; use App\ModelSerializers\SerializerUtils; +use App\Security\SummitScopes; use App\Services\Model\ISummitRegistrationInvitationService; use Illuminate\Http\Request as LaravelRequest; use Illuminate\Http\Response; @@ -85,9 +87,21 @@ public function __construct */ #[OA\Post( path: "/api/v1/summits/{id}/registration-invitations/csv", + operationId: 'ingestInvitations', summary: "Import registration invitations from CSV file", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -151,10 +165,21 @@ public function ingestInvitations(LaravelRequest $request, $summit_id) * @return \Illuminate\Http\JsonResponse|mixed */ #[OA\Get( - path: "/api/v1/summits/registration-invitations/tokens/{token}", + path: "/api/v1/summits/registration-invitations/{token}", + operationId: 'getInvitationByToken', summary: "Get a registration invitation by token", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::ReadMyRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: "token", @@ -222,9 +247,21 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + operationId: 'getRegistrationInvitation', summary: "Get a registration invitation by id", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::ReadAllSummitData, + SummitScopes::ReadRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -264,9 +301,21 @@ public function get($summit_id, $invitation_id) */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations", + operationId: 'getAllBySummit', summary: "Get all registration invitations for a summit", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::ReadAllSummitData, + SummitScopes::ReadRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -383,9 +432,21 @@ function () { */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations/csv", + operationId: 'getAllBySummitCSV', summary: "Export registration invitations to CSV", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::ReadAllSummitData, + SummitScopes::ReadRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -524,7 +585,7 @@ function () { $columns = $allowed_columns; return $columns; }, - 'summit-registration-invitations-' + 'Summit Registration Invitations-' ); } @@ -548,9 +609,21 @@ protected function deleteChild(Summit $summit, $child_id): void */ #[OA\Delete( path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + operationId: 'deleteRegistrationInvitation', summary: "Delete a registration invitation", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -606,9 +679,21 @@ function getAddValidationRules(array $payload): array */ #[OA\Post( path: "/api/v1/summits/{id}/registration-invitations", + operationId: 'addRegistrationInvitation', summary: "Create a registration invitation", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -671,9 +756,21 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I */ #[OA\Put( path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}", + operationId: 'updateRegistrationInvitation', summary: "Update a registration invitation", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -721,9 +818,21 @@ public function update($summit_id, $invitation_id) */ #[OA\Delete( path: "/api/v1/summits/{id}/registration-invitations/all", + operationId: 'deleteAllRegistrationInvitations', summary: "Delete all registration invitations for a summit", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -759,9 +868,21 @@ public function deleteAll($summit_id) */ #[OA\Put( path: "/api/v1/summits/{id}/registration-invitations/all/send", + operationId: 'sendRegistrationInvitations', summary: "Send registration invitation emails", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::WriteSummitData, + SummitScopes::WriteRegistrationInvitations, + ]]], + x: [ + 'authz_groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::SummitRegistrationAdmins, + ] + ], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -877,9 +998,12 @@ public function send($summit_id) */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations/me", + operationId: 'getMyRegistrationInvitation', summary: "Get my registration invitation for the current user", - security: [["Bearer" => []]], - tags: ["summit-registration-invitations"], + security: [['summit_registration_invitation_oauth2' => [ + SummitScopes::ReadMyRegistrationInvitations, + ]]], + tags: ["Summit Registration Invitations"], parameters: [ new OA\Parameter( name: 'id', @@ -933,8 +1057,9 @@ function getMyInvitation($summit_id) */ #[OA\Get( path: "/api/public/v1/summits/{id}/registration-invitations/{token}", + operationId: 'getInvitationBySummitAndToken', summary: "Get a registration invitation by summit and token (public endpoint)", - tags: ["summit-registration-invitations"], + tags: ["Summit Registration Invitations (Public)"], parameters: [ new OA\Parameter( name: 'id', @@ -985,8 +1110,9 @@ function getInvitationBySummitAndToken($summit_id, $token) */ #[OA\Delete( path: "/api/public/v1/summits/{id}/registration-invitations/{token}/reject", + operationId: 'rejectInvitationBySummitAndToken', summary: "Reject a registration invitation by summit and token (public endpoint)", - tags: ["summit-registration-invitations"], + tags: ["Summit Registration Invitations (Public)"], parameters: [ new OA\Parameter( name: 'id', diff --git a/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php b/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php new file mode 100644 index 000000000..5e9838d28 --- /dev/null +++ b/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php @@ -0,0 +1,28 @@ + 'Read All Summit Data', + SummitScopes::WriteSummitData => 'Write Summit Data', + SummitScopes::ReadRegistrationInvitations => 'Read Registration Invitations', + SummitScopes::WriteRegistrationInvitations => 'Write Registration Invitations', + SummitScopes::ReadMyRegistrationInvitations => 'Read My Registration Invitations', + ], + ), + ], + ) +] +class SummitRegistrationInvitationAuthSchema {} diff --git a/app/Swagger/SummitRegistrationSchemas.php b/app/Swagger/SummitRegistrationSchemas.php index 5f7790a9a..c3d122e85 100644 --- a/app/Swagger/SummitRegistrationSchemas.php +++ b/app/Swagger/SummitRegistrationSchemas.php @@ -75,11 +75,11 @@ class SummitBadgeTypeUpdateRequest new OA\Property(property: "action_date", type: "integer", nullable: true), new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]), new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]), - new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: ["integer", "SummitTicketType"]), nullable: true), - new OA\Property(property: "tags", type: "array", items: new OA\Items(type: ["integer", "Tag"]), nullable: true) + new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: "integer"), description: "Array of SummitTicketType IDs, full object when expanded", nullable: true), + new OA\Property(property: "tags", type: "array", items: new OA\Items(type: ["integer", "string"]), description: "Array of Tag IDs or names when expanded", nullable: true), ] )] -class SummitRegistrationInvitation +class SummitRegistrationInvitationSchema { } @@ -98,7 +98,7 @@ class SummitRegistrationInvitation ) ] )] -class PaginatedSummitRegistrationInvitationsResponse +class PaginatedSummitRegistrationInvitationsResponseSchema { } @@ -116,7 +116,7 @@ class PaginatedSummitRegistrationInvitationsResponse new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]) ] )] -class SummitRegistrationInvitationCreateRequest +class SummitRegistrationInvitationCreateRequestSchema { } @@ -134,7 +134,7 @@ class SummitRegistrationInvitationCreateRequest new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]) ] )] -class SummitRegistrationInvitationUpdateRequest +class SummitRegistrationInvitationUpdateRequestSchema { } @@ -147,7 +147,7 @@ class SummitRegistrationInvitationUpdateRequest new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]) ] )] -class SummitRegistrationInvitationCSVImportRequest +class SummitRegistrationInvitationCSVImportRequestSchema { } @@ -163,7 +163,7 @@ class SummitRegistrationInvitationCSVImportRequest new OA\Property(property: "outcome_email_recipient", type: "string", format: "email") ] )] -class SendRegistrationInvitationsRequest +class SendRegistrationInvitationsRequestSchema { } From fb1398e7bdd506dc676074f79369c4ff70bd780a Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Wed, 3 Dec 2025 20:31:05 +0000 Subject: [PATCH 3/6] feat: Add changes requested --- ...mitRegistrationInvitationApiController.php | 20 +++++++++---------- ...SummitRegistrationInvitationAuthSchema.php | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index dff9d3e39..c2db1dd7f 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -94,7 +94,7 @@ public function __construct SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -172,7 +172,7 @@ public function ingestInvitations(LaravelRequest $request, $summit_id) SummitScopes::ReadMyRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -254,7 +254,7 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity SummitScopes::ReadRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -308,7 +308,7 @@ public function get($summit_id, $invitation_id) SummitScopes::ReadRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -439,7 +439,7 @@ function () { SummitScopes::ReadRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -616,7 +616,7 @@ protected function deleteChild(Summit $summit, $child_id): void SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -686,7 +686,7 @@ function getAddValidationRules(array $payload): array SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -763,7 +763,7 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -825,7 +825,7 @@ public function update($summit_id, $invitation_id) SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, @@ -875,7 +875,7 @@ public function deleteAll($summit_id) SummitScopes::WriteRegistrationInvitations, ]]], x: [ - 'authz_groups' => [ + 'required-groups' => [ IGroup::SuperAdmins, IGroup::Administrators, IGroup::SummitAdministrators, diff --git a/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php b/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php index 5e9838d28..2acb914a6 100644 --- a/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php +++ b/app/Swagger/Security/SummitRegistrationInvitationAuthSchema.php @@ -1,6 +1,6 @@ Date: Thu, 11 Dec 2025 21:29:34 +0000 Subject: [PATCH 4/6] chore: HTTP 200 to its constant --- ...mmitRegistrationInvitationApiController.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index c2db1dd7f..c79a32b84 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -119,7 +119,7 @@ public function __construct ) ), responses: [ - new OA\Response(response: 200, description: "OK"), + new OA\Response(response: Response::HTTP_OK, description: "OK"), new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), @@ -190,7 +190,7 @@ public function ingestInvitations(LaravelRequest $request, $summit_id) ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), @@ -279,7 +279,7 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), @@ -353,7 +353,7 @@ public function get($summit_id, $invitation_id) ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/PaginatedSummitRegistrationInvitationsResponse") ), @@ -476,7 +476,7 @@ function () { ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\MediaType(mediaType: "text/csv", schema: new OA\Schema(type: "string")) ), @@ -795,7 +795,7 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I ), responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), @@ -906,7 +906,7 @@ public function deleteAll($summit_id) ) ), responses: [ - new OA\Response(response: 200, description: "OK"), + new OA\Response(response: Response::HTTP_OK, description: "OK"), new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), @@ -1015,7 +1015,7 @@ public function send($summit_id) ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), @@ -1077,7 +1077,7 @@ function getMyInvitation($summit_id) ], responses: [ new OA\Response( - response: 200, + response: Response::HTTP_OK, description: "OK", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), From 3fa7d0445f4a3cb4ea40be802b683c7390c5f0e5 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Thu, 11 Dec 2025 22:04:06 +0000 Subject: [PATCH 5/6] chore: include PR requested changes --- .../OAuth2SummitRegistrationInvitationApiController.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index c79a32b84..c71e60638 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -640,7 +640,7 @@ protected function deleteChild(Summit $summit, $child_id): void ) ], responses: [ - new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"), new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), @@ -712,7 +712,7 @@ function getAddValidationRules(array $payload): array ), responses: [ new OA\Response( - response: 201, + response: Response::HTTP_CREATED, description: "Created", content: new OA\JsonContent(ref: "#/components/schemas/SummitRegistrationInvitation") ), @@ -843,7 +843,7 @@ public function update($summit_id, $invitation_id) ), ], responses: [ - new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"), new OA\Response(response: Response::HTTP_BAD_REQUEST, description: "Bad Request"), new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), new OA\Response(response: Response::HTTP_FORBIDDEN, description: "Forbidden"), @@ -1129,7 +1129,7 @@ function getInvitationBySummitAndToken($summit_id, $token) ) ], responses: [ - new OA\Response(response: 204, description: "No Content"), + new OA\Response(response: Response::HTTP_NO_CONTENT, description: "No Content"), new OA\Response(response: Response::HTTP_NOT_FOUND, description: "Not Found"), new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") ] From dc55179c4d321448d44b57129e9c332617238b12 Mon Sep 17 00:00:00 2001 From: Matias Perrone Date: Fri, 12 Dec 2025 19:50:21 +0000 Subject: [PATCH 6/6] fix: error on build docs --- .../OAuth2SummitRegistrationInvitationApiController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php index c71e60638..6f4fcfc19 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitRegistrationInvitationApiController.php @@ -301,7 +301,7 @@ public function get($summit_id, $invitation_id) */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations", - operationId: 'getAllBySummit', + operationId: 'getAllRegistrationInvitationsBySummit', summary: "Get all registration invitations for a summit", security: [['summit_registration_invitation_oauth2' => [ SummitScopes::ReadAllSummitData, @@ -432,7 +432,7 @@ function () { */ #[OA\Get( path: "/api/v1/summits/{id}/registration-invitations/csv", - operationId: 'getAllBySummitCSV', + operationId: 'getAllRegistrationInvitationsBySummitCSV', summary: "Export registration invitations to CSV", security: [['summit_registration_invitation_oauth2' => [ SummitScopes::ReadAllSummitData,