@@ -146,6 +146,54 @@ protected function updateEntity($id, array $payload): IEntity
146146 return $ this ->service ->update (intval ($ id ), HTMLCleaner::cleanData ($ payload , ['description ' ]));
147147 }
148148
149+ #[OA \Get(
150+ path: "/api/public/v1/sponsored-projects " ,
151+ description: "Get all sponsored projects (public endpoint) " ,
152+ summary: 'Read All Sponsored Projects (Public) ' ,
153+ operationId: 'getAllSponsoredProjectsPublic ' ,
154+ tags: ['Sponsored Projects ' ],
155+ parameters: [
156+ new OA \Parameter (
157+ name: 'filter[] ' ,
158+ in: 'query ' ,
159+ required: false ,
160+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
161+ style: 'form ' ,
162+ explode: true ,
163+ schema: new OA \Schema (
164+ type: 'array ' ,
165+ items: new OA \Items (type: 'string ' , example: 'name@@project ' )
166+ )
167+ ),
168+ new OA \Parameter (
169+ name: 'order ' ,
170+ in: 'query ' ,
171+ required: false ,
172+ description: 'Order by field(s) ' ,
173+ schema: new OA \Schema (type: 'string ' , example: 'name,id ' )
174+ ),
175+ new OA \Parameter (
176+ name: 'page ' ,
177+ in: 'query ' ,
178+ required: false ,
179+ schema: new OA \Schema (type: 'integer ' , default: 1 )
180+ ),
181+ new OA \Parameter (
182+ name: 'per_page ' ,
183+ in: 'query ' ,
184+ required: false ,
185+ schema: new OA \Schema (type: 'integer ' , default: 10 )
186+ ),
187+ ],
188+ responses: [
189+ new OA \Response (
190+ response: 200 ,
191+ description: 'List of sponsored projects ' ,
192+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedSponsoredProjectsResponse ' )
193+ ),
194+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
195+ ]
196+ )]
149197 #[OA \Get(
150198 path: "/api/v1/sponsored-projects " ,
151199 description: "Get all sponsored projects " ,
@@ -167,7 +215,7 @@ protected function updateEntity($id, array $payload): IEntity
167215 name: 'filter[] ' ,
168216 in: 'query ' ,
169217 required: false ,
170- description: 'Filter expressions in the format field<op>value ' ,
218+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
171219 style: 'form ' ,
172220 explode: true ,
173221 schema: new OA \Schema (
@@ -291,6 +339,31 @@ public function add()
291339 return parent ::add ();
292340 }
293341
342+ #[OA \Get(
343+ path: "/api/public/v1/sponsored-projects/{id} " ,
344+ description: "Get a specific sponsored project (public endpoint) " ,
345+ summary: 'Read Sponsored Project (Public) ' ,
346+ operationId: 'getSponsoredProjectPublic ' ,
347+ tags: ['Sponsored Projects ' ],
348+ parameters: [
349+ new OA \Parameter (
350+ name: 'id ' ,
351+ in: 'path ' ,
352+ required: true ,
353+ schema: new OA \Schema (type: 'string ' ),
354+ description: 'The sponsored project id or slug '
355+ ),
356+ ],
357+ responses: [
358+ new OA \Response (
359+ response: 200 ,
360+ description: 'Sponsored project details ' ,
361+ content: new OA \JsonContent (ref: '#/components/schemas/SponsoredProject ' )
362+ ),
363+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
364+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
365+ ]
366+ )]
294367 #[OA \Get(
295368 path: "/api/v1/sponsored-projects/{id} " ,
296369 description: "Get a specific sponsored project " ,
@@ -439,6 +512,62 @@ public function delete($id)
439512
440513 // sponsorship types
441514
515+ #[OA \Get(
516+ path: "/api/public/v1/sponsored-projects/{id}/sponsorship-types " ,
517+ description: "Get all sponsorship types for a sponsored project (public endpoint) " ,
518+ summary: 'Read All Sponsorship Types (Public) ' ,
519+ operationId: 'getAllSponsorshipTypesPublic ' ,
520+ tags: ['Sponsored Projects ' , 'Sponsorship Types ' ],
521+ parameters: [
522+ new OA \Parameter (
523+ name: 'id ' ,
524+ in: 'path ' ,
525+ required: true ,
526+ schema: new OA \Schema (type: 'string ' ),
527+ description: 'The sponsored project id or slug '
528+ ),
529+ new OA \Parameter (
530+ name: 'filter[] ' ,
531+ in: 'query ' ,
532+ required: false ,
533+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
534+ style: 'form ' ,
535+ explode: true ,
536+ schema: new OA \Schema (
537+ type: 'array ' ,
538+ items: new OA \Items (type: 'string ' , example: 'name@@type ' )
539+ )
540+ ),
541+ new OA \Parameter (
542+ name: 'order ' ,
543+ in: 'query ' ,
544+ required: false ,
545+ description: 'Order by field(s) ' ,
546+ schema: new OA \Schema (type: 'string ' , example: 'order,name ' )
547+ ),
548+ new OA \Parameter (
549+ name: 'page ' ,
550+ in: 'query ' ,
551+ required: false ,
552+ schema: new OA \Schema (type: 'integer ' , default: 1 )
553+ ),
554+ new OA \Parameter (
555+ name: 'per_page ' ,
556+ in: 'query ' ,
557+ required: false ,
558+ schema: new OA \Schema (type: 'integer ' , default: 10 )
559+ ),
560+ ],
561+ responses: [
562+ new OA \Response (
563+ response: 200 ,
564+ description: 'List of sponsorship types ' ,
565+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedProjectSponsorshipTypesResponse ' )
566+ ),
567+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
568+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
569+ ]
570+ )]
442571 #[OA \Get(
443572 path: "/api/v1/sponsored-projects/{id}/sponsorship-types " ,
444573 description: "Get all sponsorship types for a sponsored project " ,
@@ -467,7 +596,7 @@ public function delete($id)
467596 name: 'filter[] ' ,
468597 in: 'query ' ,
469598 required: false ,
470- description: 'Filter expressions in the format field<op>value ' ,
599+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
471600 style: 'form ' ,
472601 explode: true ,
473602 schema: new OA \Schema (
@@ -558,6 +687,38 @@ function ($page, $per_page, $filter, $order, $applyExtraFilters) {
558687 );
559688 }
560689
690+ #[OA \Get(
691+ path: "/api/public/v1/sponsored-projects/{id}/sponsorship-types/{sponsorship_type_id} " ,
692+ description: "Get a specific sponsorship type (public endpoint) " ,
693+ summary: 'Read Sponsorship Type (Public) ' ,
694+ operationId: 'getSponsorshipTypePublic ' ,
695+ tags: ['Sponsored Projects ' , 'Sponsorship Types ' ],
696+ parameters: [
697+ new OA \Parameter (
698+ name: 'id ' ,
699+ in: 'path ' ,
700+ required: true ,
701+ schema: new OA \Schema (type: 'string ' ),
702+ description: 'The sponsored project id or slug '
703+ ),
704+ new OA \Parameter (
705+ name: 'sponsorship_type_id ' ,
706+ in: 'path ' ,
707+ required: true ,
708+ schema: new OA \Schema (type: 'integer ' ),
709+ description: 'The sponsorship type id '
710+ ),
711+ ],
712+ responses: [
713+ new OA \Response (
714+ response: 200 ,
715+ description: 'Sponsorship type details ' ,
716+ content: new OA \JsonContent (ref: '#/components/schemas/ProjectSponsorshipType ' )
717+ ),
718+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
719+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
720+ ]
721+ )]
561722 #[OA \Get(
562723 path: "/api/v1/sponsored-projects/{id}/sponsorship-types/{sponsorship_type_id} " ,
563724 description: "Get a specific sponsorship type " ,
@@ -833,6 +994,69 @@ function ($sponsorship_type_id, $project_id){
833994
834995 // supporting companies
835996
997+ #[OA \Get(
998+ path: "/api/public/v1/sponsored-projects/{id}/sponsorship-types/{sponsorship_type_id}/supporting-companies " ,
999+ description: "Get all supporting companies for a sponsorship type (public endpoint) " ,
1000+ summary: 'Read All Supporting Companies (Public) ' ,
1001+ operationId: 'getSupportingCompaniesPublic ' ,
1002+ tags: ['Sponsored Projects ' , 'Supporting Companies ' ],
1003+ parameters: [
1004+ new OA \Parameter (
1005+ name: 'id ' ,
1006+ in: 'path ' ,
1007+ required: true ,
1008+ schema: new OA \Schema (type: 'string ' ),
1009+ description: 'The sponsored project id or slug '
1010+ ),
1011+ new OA \Parameter (
1012+ name: 'sponsorship_type_id ' ,
1013+ in: 'path ' ,
1014+ required: true ,
1015+ schema: new OA \Schema (type: 'string ' ),
1016+ description: 'The sponsorship type id or slug '
1017+ ),
1018+ new OA \Parameter (
1019+ name: 'filter[] ' ,
1020+ in: 'query ' ,
1021+ required: false ,
1022+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
1023+ style: 'form ' ,
1024+ explode: true ,
1025+ schema: new OA \Schema (
1026+ type: 'array ' ,
1027+ items: new OA \Items (type: 'string ' )
1028+ )
1029+ ),
1030+ new OA \Parameter (
1031+ name: 'order ' ,
1032+ in: 'query ' ,
1033+ required: false ,
1034+ description: 'Order by field(s) ' ,
1035+ schema: new OA \Schema (type: 'string ' , example: 'order,name ' )
1036+ ),
1037+ new OA \Parameter (
1038+ name: 'page ' ,
1039+ in: 'query ' ,
1040+ required: false ,
1041+ schema: new OA \Schema (type: 'integer ' , default: 1 )
1042+ ),
1043+ new OA \Parameter (
1044+ name: 'per_page ' ,
1045+ in: 'query ' ,
1046+ required: false ,
1047+ schema: new OA \Schema (type: 'integer ' , default: 10 )
1048+ ),
1049+ ],
1050+ responses: [
1051+ new OA \Response (
1052+ response: 200 ,
1053+ description: 'List of supporting companies ' ,
1054+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedSupportingCompaniesResponse ' )
1055+ ),
1056+ new OA \Response (response: Response::HTTP_NOT_FOUND , description: "not found " ),
1057+ new OA \Response (response: Response::HTTP_INTERNAL_SERVER_ERROR , description: "Server Error " ),
1058+ ]
1059+ )]
8361060 #[OA \Get(
8371061 path: "/api/v1/sponsored-projects/{id}/sponsorship-types/{sponsorship_type_id}/supporting-companies " ,
8381062 description: "Get all supporting companies for a sponsorship type " ,
@@ -868,7 +1092,7 @@ function ($sponsorship_type_id, $project_id){
8681092 name: 'filter[] ' ,
8691093 in: 'query ' ,
8701094 required: false ,
871- description: 'Filter expressions ' ,
1095+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
8721096 style: 'form ' ,
8731097 explode: true ,
8741098 schema: new OA \Schema (
@@ -1440,7 +1664,7 @@ public function deleteSponsoredProjectLogo($project_id){
14401664 name: 'filter[] ' ,
14411665 in: 'query ' ,
14421666 required: false ,
1443- description: 'Filter expressions in the format field<op>value ' ,
1667+ description: 'Filter expressions in the format field<op>value, operators: =@ (starts with), == (equals), @@ (contains), fields: name, slug, is_active ' ,
14441668 style: 'form ' ,
14451669 explode: true ,
14461670 schema: new OA \Schema (
0 commit comments