diff --git a/app/Http/Controllers/Apis/ReleasesApiController.php b/app/Http/Controllers/Apis/ReleasesApiController.php index d1b6534f9..3df900ccf 100644 --- a/app/Http/Controllers/Apis/ReleasesApiController.php +++ b/app/Http/Controllers/Apis/ReleasesApiController.php @@ -17,6 +17,8 @@ use Illuminate\Support\Facades\Log; use models\oauth2\IResourceServerContext; use ModelSerializers\SerializerRegistry; +use OpenApi\Attributes as OA; +use Symfony\Component\HttpFoundation\Response; /** * Class ReleasesApiController @@ -42,6 +44,29 @@ public function __construct /** * @return \Illuminate\Http\JsonResponse|mixed|void */ + #[OA\Get( + path: '/api/public/v1/releases/current', + operationId: 'getCurrentRelease', + description: 'Retrieve the current OpenStack release', + tags: ['Releases (Public)'], + responses: [ + new OA\Response( + response: Response::HTTP_OK, + description: 'Current OpenStack release', + content: new OA\JsonContent( + ref: '#/components/schemas/OpenStackRelease' + ) + ), + new OA\Response( + response: Response::HTTP_NOT_FOUND, + description: 'Current release not found' + ), + new OA\Response( + response: Response::HTTP_INTERNAL_SERVER_ERROR, + description: 'Server Error' + ), + ] + )] public function getCurrent(){ try{ $current = $this->repository->getCurrent(); @@ -57,4 +82,4 @@ public function getCurrent(){ return $this->error500($ex); } } -} \ No newline at end of file +} diff --git a/app/Swagger/Models/OpenStackReleaseSchema.php b/app/Swagger/Models/OpenStackReleaseSchema.php index 9a646695a..c6277f8c0 100644 --- a/app/Swagger/Models/OpenStackReleaseSchema.php +++ b/app/Swagger/Models/OpenStackReleaseSchema.php @@ -13,6 +13,9 @@ new OA\Property(property: 'created', type: 'integer', example: 1), new OA\Property(property: 'last_edited', type: 'integer', example: 1), new OA\Property(property: 'name', type: 'string'), + new OA\Property(property: 'release_number', type: 'string', example: '2024.2'), + new OA\Property(property: 'release_date', type: 'integer', description: 'Unix timestamp', example: 1729123200), + new OA\Property(property: 'status', type: 'string', example: 'current'), new OA\Property(property: 'components', type: 'array', items: new OA\Items( oneOf: [ new OA\Schema(type: 'integer'), @@ -23,4 +26,4 @@ ] class OpenStackReleaseSchema { -} \ No newline at end of file +} diff --git a/app/Swagger/ReleasesSchemas.php b/app/Swagger/ReleasesSchemas.php new file mode 100644 index 000000000..2371c5c43 --- /dev/null +++ b/app/Swagger/ReleasesSchemas.php @@ -0,0 +1,6 @@ +