11<?php namespace App \Http \Controllers ;
2+
23/**
34 * Copyright 2021 OpenStack Foundation
45 * Licensed under the Apache License, Version 2.0 (the "License");
1718use models \exceptions \EntityNotFoundException ;
1819use models \exceptions \ValidationException ;
1920use utils \PagingResponse ;
21+ use OpenApi \Attributes as OA ;
22+ use Symfony \Component \HttpFoundation \Response ;
23+
2024/**
2125 * Class TimezonesApiController
2226 * @package App\Http\Controllers
@@ -26,6 +30,50 @@ final class TimezonesApiController extends JsonController
2630 /**
2731 * @return mixed
2832 */
33+ #[OA \Get(
34+ path: '/api/v1/timezones ' ,
35+ operationId: 'getTimezones ' ,
36+ description: 'Retrieve all available timezones ' ,
37+ tags: ['Timezones ' ],
38+ parameters: [
39+ new OA \Parameter (
40+ name: 'expand ' ,
41+ description: 'Expansion parameters ' ,
42+ in: 'query ' ,
43+ required: false ,
44+ schema: new OA \Schema (type: 'string ' )
45+ ),
46+ new OA \Parameter (
47+ name: 'page ' ,
48+ description: 'Page number ' ,
49+ in: 'query ' ,
50+ required: false ,
51+ schema: new OA \Schema (type: 'integer ' , default: 1 )
52+ ),
53+ new OA \Parameter (
54+ name: 'per_page ' ,
55+ description: 'Items per page ' ,
56+ in: 'query ' ,
57+ required: false ,
58+ schema: new OA \Schema (type: 'integer ' , default: 10 )
59+ ),
60+ ],
61+ responses: [
62+ new OA \Response (
63+ response: Response::HTTP_OK ,
64+ description: 'List of timezones ' ,
65+ content: new OA \JsonContent (ref: '#/components/schemas/PaginatedTimezonesResponse ' )
66+ ),
67+ new OA \Response (
68+ response: Response::HTTP_PRECONDITION_FAILED ,
69+ description: 'Validation Error '
70+ ),
71+ new OA \Response (
72+ response: Response::HTTP_INTERNAL_SERVER_ERROR ,
73+ description: 'Server Error '
74+ ),
75+ ]
76+ )]
2977 public function getAll (){
3078 try {
3179 $ timezones = \DateTimeZone::listIdentifiers ();
0 commit comments