From a0cf7f5f91881b350ce6980009eed7b7fa703191 Mon Sep 17 00:00:00 2001 From: Jose Andres Tejerina Date: Thu, 18 Dec 2025 10:54:37 -0300 Subject: [PATCH] feat: Extend Swagger Coverage for controller OAuth2SummitSponsorApiController --- .../OAuth2SummitSponsorApiController.php | 2314 +++++++++++++++++ .../Models/ExtraQuestionTypeValueSchema.php | 16 + app/Swagger/Models/SponsorAdSchema.php | 20 + app/Swagger/Models/SponsorMaterialSchema.php | 20 + app/Swagger/Models/SponsorSchema.php | 23 + .../Models/SponsorSocialNetworkSchema.php | 18 + .../Models/SummitLeadReportSettingSchema.php | 21 + .../SummitSponsorExtraQuestionTypeSchema.php | 25 + app/Swagger/Security/SponsorOAuth2Schema.php | 25 + app/Swagger/SponsorSchemas.php | 224 ++ routes/api_v1.php | 2 +- 11 files changed, 2707 insertions(+), 1 deletion(-) create mode 100644 app/Swagger/Models/ExtraQuestionTypeValueSchema.php create mode 100644 app/Swagger/Models/SponsorAdSchema.php create mode 100644 app/Swagger/Models/SponsorMaterialSchema.php create mode 100644 app/Swagger/Models/SponsorSchema.php create mode 100644 app/Swagger/Models/SponsorSocialNetworkSchema.php create mode 100644 app/Swagger/Models/SummitLeadReportSettingSchema.php create mode 100644 app/Swagger/Models/SummitSponsorExtraQuestionTypeSchema.php create mode 100644 app/Swagger/Security/SponsorOAuth2Schema.php create mode 100644 app/Swagger/SponsorSchemas.php diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSponsorApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSponsorApiController.php index c7102dc3b..827627c4b 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSponsorApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSponsorApiController.php @@ -13,13 +13,16 @@ **/ use App\Http\Exceptions\HTTP403ForbiddenException; +use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Summit\Repositories\ISponsorAdRepository; use App\Models\Foundation\Summit\Repositories\ISponsorExtraQuestionTypeRepository; use App\Models\Foundation\Summit\Repositories\ISponsorMaterialRepository; use App\Models\Foundation\Summit\Repositories\ISponsorRepository; use App\Models\Foundation\Summit\Repositories\ISponsorSocialNetworkRepository; use App\ModelSerializers\SerializerUtils; +use App\Security\SummitScopes; use Illuminate\Http\Request as LaravelRequest; +use Illuminate\Http\Response; use models\oauth2\IResourceServerContext; use models\summit\ISummitRepository; use models\summit\Sponsor; @@ -27,6 +30,7 @@ use models\summit\Summit; use models\utils\IEntity; use ModelSerializers\SerializerRegistry; +use OpenApi\Attributes as OA; use services\model\ISummitSponsorService; use utils\Filter; use utils\FilterElement; @@ -238,6 +242,87 @@ protected function updateSerializerType(): string{ SerializerRegistry::SerializerType_PublicV2; } + #[OA\Get( + path: "/api/v2/summits/{id}/sponsors", + description: "Get all sponsors for a summit", + summary: 'Read Sponsors by Summit (V2)', + operationId: 'getSponsorsBySummitV2', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + 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: 'order', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Order by field (e.g., +id, -company_name)' + ), + new OA\Parameter( + name: 'expand', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Expand relationships (company)' + ), + new OA\Parameter( + name: 'fields', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Fields to include (id,company_name)' + ), + new OA\Parameter( + name: 'filter', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter expression (e.g., is_published==true)' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Success' + ), + 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"), + ] + )] /** * @param $summit_id * @return \Illuminate\Http\JsonResponse|mixed @@ -247,6 +332,53 @@ public function getAllBySummitV2($summit_id){ return $this->getAllBySummit($summit_id); } + #[OA\Get( + path: "/api/v2/summits/{id}/sponsors/{sponsor_id}", + description: "Get a specific sponsor by id", + summary: 'Read Sponsor by ID (V2)', + operationId: 'getSponsorByIdV2', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Success', + content: new OA\JsonContent(ref: '#/components/schemas/Sponsor') + ), + 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") + ] + )] /** * @param $summit_id * @param $child_id @@ -275,6 +407,49 @@ protected function addChild(Summit $summit, array $payload): IEntity return $this->service->addSponsor($summit, $payload); } + #[OA\Post( + path: "/api/v2/summits/{id}/sponsors", + description: "Create a new sponsor", + summary: 'Create Sponsor (V2)', + operationId: 'addSponsorV2', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + 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\JsonContent(ref: "#/components/schemas/SponsorCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/Sponsor') + ), + 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") + ] + )] /** * @param $summit_id * @return \Illuminate\Http\JsonResponse|mixed @@ -350,6 +525,56 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I return $this->service->updateSponsor($summit, $child_id, $payload); } + #[OA\Put( + path: "/api/v2/summits/{id}/sponsors/{sponsor_id}", + description: "Update an existing sponsor", + summary: 'Update Sponsor (V2)', + operationId: 'updateSponsorV2', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Success', + content: new OA\JsonContent(ref: '#/components/schemas/Sponsor') + ), + 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") + ] + )] /** * @param $summit_id * @param $child_id @@ -361,6 +586,57 @@ public function updateV2($summit_id, $child_id){ return $this->update($summit_id, $child_id); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/users/{member_id}", + description: "Add a user to a sponsor", + summary: 'Add Sponsor User', + operationId: 'addSponsorUser', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'member_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The member id to add' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Success', + content: new OA\JsonContent(ref: '#/components/schemas/Sponsor') + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -390,6 +666,57 @@ public function addSponsorUser($summit_id, $sponsor_id, $member_id) }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/users/{member_id}", + description: "Remove a user from a sponsor", + summary: 'Remove Sponsor User', + operationId: 'removeSponsorUser', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'member_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The member id to remove' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Success', + content: new OA\JsonContent(ref: '#/components/schemas/Sponsor') + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -422,6 +749,69 @@ public function removeSponsorUser($summit_id, $sponsor_id, $member_id) * @param $sponsor_id * @return mixed */ + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/side-image", + description: "Add a side image to a sponsor", + summary: 'Add Sponsor Side Image', + operationId: 'addSponsorSideImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: 'multipart/form-data', + schema: new OA\Schema( + type: 'object', + required: ['file'], + properties: [ + new OA\Property( + property: 'file', + type: 'string', + format: 'binary', + description: 'The image file' + ), + ] + ) + ) + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/File') + ), + 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 addSponsorSideImage(LaravelRequest $request, $summit_id, $sponsor_id) { return $this->processRequest(function () use ($request, $summit_id, $sponsor_id) { @@ -446,6 +836,49 @@ public function addSponsorSideImage(LaravelRequest $request, $summit_id, $sponso }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/side-image", + description: "Delete a sponsor side image", + summary: 'Delete Sponsor Side Image', + operationId: 'deleteSponsorSideImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'No Content' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -471,6 +904,69 @@ public function deleteSponsorSideImage($summit_id, $sponsor_id) * @param $sponsor_id * @return \Illuminate\Http\JsonResponse|mixed */ + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/header-image", + description: "Add a header image to a sponsor", + summary: 'Add Sponsor Header Image', + operationId: 'addSponsorHeaderImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: 'multipart/form-data', + schema: new OA\Schema( + type: 'object', + required: ['file'], + properties: [ + new OA\Property( + property: 'file', + type: 'string', + format: 'binary', + description: 'The image file' + ), + ] + ) + ) + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/File') + ), + 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 addSponsorHeaderImage(LaravelRequest $request, $summit_id, $sponsor_id) { return $this->processRequest(function () use ($request, $summit_id, $sponsor_id) { @@ -495,6 +991,49 @@ public function addSponsorHeaderImage(LaravelRequest $request, $summit_id, $spon }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/header-image", + description: "Delete a sponsor header image", + summary: 'Delete Sponsor Header Image', + operationId: 'deleteSponsorHeaderImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'No Content' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -514,6 +1053,69 @@ public function deleteSponsorHeaderImage($summit_id, $sponsor_id) }); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/header-image/mobile", + description: "Add a mobile header image to a sponsor", + summary: 'Add Sponsor Header Image Mobile', + operationId: 'addSponsorHeaderImageMobile', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: 'multipart/form-data', + schema: new OA\Schema( + type: 'object', + required: ['file'], + properties: [ + new OA\Property( + property: 'file', + type: 'string', + format: 'binary', + description: 'The image file' + ), + ] + ) + ) + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/File') + ), + 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") + ] + )] /** * @param LaravelRequest $request * @param $summit_id @@ -544,6 +1146,49 @@ public function addSponsorHeaderImageMobile(LaravelRequest $request, $summit_id, }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/header-image/mobile", + description: "Delete a sponsor mobile header image", + summary: 'Delete Sponsor Header Image Mobile', + operationId: 'deleteSponsorHeaderImageMobile', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'No Content' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -563,6 +1208,69 @@ public function deleteSponsorHeaderImageMobile($summit_id, $sponsor_id) }); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/carousel-advertise-image", + description: "Add a carousel advertise image to a sponsor", + summary: 'Add Sponsor Carousel Advertise Image', + operationId: 'addSponsorCarouselAdvertiseImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: 'multipart/form-data', + schema: new OA\Schema( + type: 'object', + required: ['file'], + properties: [ + new OA\Property( + property: 'file', + type: 'string', + format: 'binary', + description: 'The image file' + ), + ] + ) + ) + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/File') + ), + 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") + ] + )] /** * @param LaravelRequest $request * @param $summit_id @@ -593,6 +1301,49 @@ public function addSponsorCarouselAdvertiseImage(LaravelRequest $request, $summi }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/carousel-advertise-image", + description: "Delete a sponsor carousel advertise image", + summary: 'Delete Sponsor Carousel Advertise Image', + operationId: 'deleteSponsorCarouselAdvertiseImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'No Content' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -618,6 +1369,80 @@ public function deleteSponsorCarouselAdvertiseImage($summit_id, $sponsor_id) // Ads + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads", + description: "Get all ads for a sponsor", + summary: 'Read Sponsor Ads', + operationId: 'getSponsorAds', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor 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: 'order', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Order by field (e.g., +id, -order)' + ), + new OA\Parameter( + name: 'filter', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter expression' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Success' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -671,6 +1496,55 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) { ); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads", + description: "Create a new sponsor ad", + summary: 'Add Sponsor Ad', + operationId: 'addSponsorAd', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorAdCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/SponsorAd') + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -697,6 +1571,76 @@ public function addAd($summit_id, $sponsor_id) }); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads/{ad_id}/image", + description: "Add an image to a sponsor ad", + summary: 'Add Sponsor Ad Image', + operationId: 'addSponsorAdImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'ad_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The ad id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\MediaType( + mediaType: 'multipart/form-data', + schema: new OA\Schema( + type: 'object', + required: ['file'], + properties: [ + new OA\Property( + property: 'file', + type: 'string', + format: 'binary', + description: 'The image file' + ), + ] + ) + ) + ), + responses: [ + new OA\Response( + response: 201, + description: 'Created', + content: new OA\JsonContent(ref: '#/components/schemas/File') + ), + 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") + ] + )] /** * @param LaravelRequest $request * @param $summit_id @@ -728,6 +1672,56 @@ public function addAdImage(LaravelRequest $request, $summit_id, $sponsor_id, $ad }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads/{ad_id}/image", + description: "Remove an image from a sponsor ad", + summary: 'Remove Sponsor Ad Image', + operationId: 'removeSponsorAdImage', + tags: ['Sponsors'], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'ad_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The ad id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'No Content' + ), + 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") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -748,6 +1742,60 @@ public function removeAdImage($summit_id, $sponsor_id, $ad_id) }); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads/{ad_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Sponsor Ad', + operationId: 'updateSponsorAd', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'ad_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The ad id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorAdUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Ad updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -775,6 +1823,55 @@ public function updateAd($summit_id, $sponsor_id, $ad_id) }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads/{ad_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Delete Sponsor Ad', + operationId: 'deleteSponsorAd', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'ad_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The ad id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'Ad deleted successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -795,6 +1892,58 @@ public function deleteAd($summit_id, $sponsor_id, $ad_id) }); } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/ads/{ad_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors . ", " . IGroup::SponsorExternalUsers, + summary: 'Read Sponsor Ad', + operationId: 'getSponsorAd', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'ad_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The ad id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Ad retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -827,6 +1976,77 @@ public function getAd($summit_id, $sponsor_id, $ad_id) // Materials + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/materials", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors . ", " . IGroup::SponsorExternalUsers, + summary: 'Read Sponsor Materials', + operationId: 'getSponsorMaterials', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 1) + ), + new OA\Parameter( + name: 'per_page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 10) + ), + new OA\Parameter( + name: 'order', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Order by field (e.g., +id, -order)' + ), + new OA\Parameter( + name: 'filter', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter expression' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Sponsor materials retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -883,6 +2103,54 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) { ); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/materials", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Add Sponsor Material', + operationId: 'addSponsorMaterial', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorMaterialCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Material created successfully', + content: new OA\JsonContent(ref: '#/components/schemas/SponsorMaterial') + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -909,6 +2177,60 @@ public function addMaterial($summit_id, $sponsor_id) }); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/materials/{material_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Sponsor Material', + operationId: 'updateSponsorMaterial', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'material_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The material id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorMaterialUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Material updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -936,6 +2258,55 @@ public function updateMaterial($summit_id, $sponsor_id, $material_id) }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/materials/{material_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Delete Sponsor Material', + operationId: 'deleteSponsorMaterial', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'material_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The material id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'Material deleted successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -956,6 +2327,58 @@ public function deleteMaterial($summit_id, $sponsor_id, $material_id) }); } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/materials/{material_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors . ", " . IGroup::SponsorExternalUsers, + summary: 'Read Sponsor Material', + operationId: 'getSponsorMaterial', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'material_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The material id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Material retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -988,6 +2411,77 @@ public function getMaterial($summit_id, $sponsor_id, $material_id) // Social Networks + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/social-networks", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors . ", " . IGroup::SponsorExternalUsers, + summary: 'Read Sponsor Social Networks', + operationId: 'getSponsorSocialNetworks', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 1) + ), + new OA\Parameter( + name: 'per_page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 10) + ), + new OA\Parameter( + name: 'order', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Order by field (e.g., +id)' + ), + new OA\Parameter( + name: 'filter', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter expression' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Social networks retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1040,6 +2534,54 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) { ); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/social-networks", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Add Sponsor Social Network', + operationId: 'addSponsorSocialNetwork', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorSocialNetworkCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Social network created successfully', + content: new OA\JsonContent(ref: '#/components/schemas/SponsorSocialNetwork') + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1066,6 +2608,58 @@ public function addSocialNetwork($summit_id, $sponsor_id) }); } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/social-networks/{social_network_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors . ", " . IGroup::SponsorExternalUsers, + summary: 'Read Sponsor Social Network', + operationId: 'getSponsorSocialNetwork', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + IGroup::SponsorExternalUsers, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'social_network_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The social network id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Social network retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1096,6 +2690,60 @@ public function getSocialNetwork($summit_id, $sponsor_id, $social_network_id) }); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/social-networks/{social_network_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Sponsor Social Network', + operationId: 'updateSponsorSocialNetwork', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'social_network_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The social network id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorSocialNetworkUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Social network updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1123,6 +2771,55 @@ public function updateSocialNetwork($summit_id, $sponsor_id, $social_network_id) }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/social-networks/{social_network_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Delete Sponsor Social Network', + operationId: 'deleteSponsorSocialNetwork', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'social_network_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The social network id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'Social network deleted successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1145,6 +2842,75 @@ public function deleteSocialNetwork($summit_id, $sponsor_id, $social_network_id) // Extra Questions + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Read Sponsor Extra Questions', + operationId: 'getSponsorExtraQuestions', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 1) + ), + new OA\Parameter( + name: 'per_page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', example: 10) + ), + new OA\Parameter( + name: 'order', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Order by field (e.g., +id, -name, +order)' + ), + new OA\Parameter( + name: 'filter', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter expression' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Extra questions retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1209,6 +2975,42 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) { ); } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsor-extra-questions-metadata", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Read Sponsor Extra Questions Metadata', + operationId: 'getSponsorExtraQuestionsMetadata', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + 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: 'Extra questions metadata retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @return mixed @@ -1224,6 +3026,54 @@ public function getMetadata($summit_id) ); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Add Sponsor Extra Question', + operationId: 'addSponsorExtraQuestion', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorExtraQuestionCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Extra question created successfully', + content: new OA\JsonContent(ref: '#/components/schemas/SummitSponsorExtraQuestionType') + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1258,6 +3108,56 @@ public function addExtraQuestion($summit_id, $sponsor_id) }); } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Read Sponsor Extra Question', + operationId: 'getSponsorExtraQuestion', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Extra question retrieved successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1293,6 +3193,60 @@ public function getExtraQuestion($summit_id, $sponsor_id, $extra_question_id) }); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Sponsor Extra Question', + operationId: 'updateSponsorExtraQuestion', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/SponsorExtraQuestionUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Extra question updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1328,6 +3282,55 @@ public function updateExtraQuestion($summit_id, $sponsor_id, $extra_question_id) }); } + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Delete Sponsor Extra Question', + operationId: 'deleteSponsorExtraQuestion', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'Extra question deleted successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1358,6 +3361,61 @@ public function deleteExtraQuestion($summit_id, $sponsor_id, $extra_question_id) // Question Values use ParametrizedAddEntity; + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}/values", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Add Extra Question Value', + operationId: 'addSponsorExtraQuestionValue', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/ExtraQuestionValueCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Question value created successfully', + content: new OA\JsonContent(ref: '#/components/schemas/ExtraQuestionTypeValue') + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1396,6 +3454,67 @@ function ($payload, $summit, $sponsor_id, $question_id) { use ParametrizedUpdateEntity; + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}/values/{value_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Extra Question Value', + operationId: 'updateSponsorExtraQuestionValue', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + new OA\Parameter( + name: 'value_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The question value id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/ExtraQuestionValueUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Question value updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1437,6 +3556,62 @@ function ($value_id, $payload, $summit, $sponsor_id, $extra_question_id) { } use ParametrizedDeleteEntity; + #[OA\Delete( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/extra-questions/{extra_question_id}/values/{value_id}", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Delete Extra Question Value', + operationId: 'deleteSponsorExtraQuestionValue', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + new OA\Parameter( + name: 'extra_question_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The extra question id' + ), + new OA\Parameter( + name: 'value_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The question value id' + ), + ], + responses: [ + new OA\Response( + response: 204, + description: 'Question value deleted successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1468,6 +3643,50 @@ public function deleteExtraQuestionValue($summit_id, $sponsor_id, $extra_questio } + #[OA\Get( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/lead-report-settings/metadata", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators . ", " . IGroup::Sponsors, + summary: 'Get Lead Report Settings Metadata', + operationId: 'getLeadReportSettingsMetadata', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + IGroup::Sponsors, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::ReadSummitData, + SummitScopes::ReadAllSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + responses: [ + new OA\Response( + response: 200, + description: 'Lead report settings metadata retrieved' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1486,6 +3705,54 @@ public function getLeadReportSettingsMetadata($summit_id, $sponsor_id) { }); } + #[OA\Post( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/lead-report-settings", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Add Lead Report Settings', + operationId: 'addLeadReportSettings', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/LeadReportSettingsCreateRequest") + ), + responses: [ + new OA\Response( + response: 201, + description: 'Lead report settings created successfully', + content: new OA\JsonContent(ref: '#/components/schemas/SummitLeadReportSetting') + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id @@ -1515,6 +3782,53 @@ public function addLeadReportSettings($summit_id, $sponsor_id) { }); } + #[OA\Put( + path: "/api/v1/summits/{id}/sponsors/{sponsor_id}/lead-report-settings", + description: "required-groups " . IGroup::SuperAdmins . ", " . IGroup::Administrators . ", " . IGroup::SummitAdministrators, + summary: 'Update Lead Report Settings', + operationId: 'updateLeadReportSettings', + tags: ['Sponsors'], + x: [ + 'required-groups' => [ + IGroup::SuperAdmins, + IGroup::Administrators, + IGroup::SummitAdministrators, + ] + ], + security: [['summit_sponsor_oauth2' => [ + SummitScopes::WriteSummitData, + ]]], + parameters: [ + new OA\Parameter( + name: 'id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The summit id' + ), + new OA\Parameter( + name: 'sponsor_id', + in: 'path', + required: true, + schema: new OA\Schema(type: 'integer'), + description: 'The sponsor id' + ), + ], + requestBody: new OA\RequestBody( + required: true, + content: new OA\JsonContent(ref: "#/components/schemas/LeadReportSettingsUpdateRequest") + ), + responses: [ + new OA\Response( + response: 200, + description: 'Lead report settings updated successfully' + ), + new OA\Response(response: Response::HTTP_UNAUTHORIZED, description: "Unauthorized"), + new OA\Response(response: Response::HTTP_NOT_FOUND, description: "not found"), + new OA\Response(response: Response::HTTP_INTERNAL_SERVER_ERROR, description: "Server Error"), + new OA\Response(response: Response::HTTP_PRECONDITION_FAILED, description: "Validation Error") + ] + )] /** * @param $summit_id * @param $sponsor_id diff --git a/app/Swagger/Models/ExtraQuestionTypeValueSchema.php b/app/Swagger/Models/ExtraQuestionTypeValueSchema.php new file mode 100644 index 000000000..734e62eba --- /dev/null +++ b/app/Swagger/Models/ExtraQuestionTypeValueSchema.php @@ -0,0 +1,16 @@ + 'Read Summit Sponsor Data', + SummitScopes::ReadAllSummitData => 'Read All Summit Sponsor Data', + SummitScopes::WriteSummitData => 'Write Summit Sponsor Data', + ], + ), + ], + ) +] +class SponsorOAuth2Schema {} diff --git a/app/Swagger/SponsorSchemas.php b/app/Swagger/SponsorSchemas.php new file mode 100644 index 000000000..113286c6c --- /dev/null +++ b/app/Swagger/SponsorSchemas.php @@ -0,0 +1,224 @@ + 'side-image'], function () { - Route::post('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@addSponsorSideImage']); + Route::post('', ['middleware' => 'auth.user', 'uses' => '@addSponsorSideImage']); Route::delete('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@deleteSponsorSideImage']); });