Swagger OpenAPI configuration

Разработать спецификацию в формате OpenAPI для набора веб-сервисов, реализующего следующую функциональность:

Первый веб-сервис должен осуществлять управление коллекцией объектов. В коллекции необходимо хранить объекты класса City, описание которого приведено ниже: image Веб-сервис должен удовлетворять следующим требованиям:

API, реализуемый сервисом, должен соответствовать рекомендациям подхода RESTful. Необходимо реализовать следующий базовый набор операций с объектами коллекции: добавление нового элемента, получение элемента по ИД, обновление элемента, удаление элемента, получение массива элементов. Операция, выполняемая над объектом коллекции, должна определяться методом HTTP-запроса. Операция получения массива элементов должна поддерживать возможность сортировки и фильтрации по любой комбинации полей класса, а также возможность постраничного вывода результатов выборки с указанием размера и порядкового номера выводимой страницы. Все параметры, необходимые для выполнения операции, должны передаваться в URL запроса. Информация об объектах коллекции должна передаваться в формате json. В случае передачи сервису данных, нарушающих заданные на уровне класса ограничения целостности, сервис должен возвращать код ответа http, соответствующий произошедшей ошибке. Помимо базового набора, веб-сервис должен поддерживать следующие операции над объектами коллекции:

Рассчитать среднее значение поля metersAboveSeaLevel для всех объектов. Сгруппировать объекты по значению поля creationDate, вернуть количество элементов в каждой группе. Вернуть массив объектов, значение поля name которых содержит заданную подстроку. Эти операции должны размещаться на отдельных URL.

Второй веб-сервис должен располагаться на URL /route, и реализовывать ряд дополнительных операций, связанных с вызовом API первого сервиса: image Для разработанной спецификации необходимо сгенерировать интерактивную веб-документацию с помощью Swagger UI. Документация должна содержать описание всех REST API обоих сервисов с текстовым описанием функциональности каждой операции. Созданную веб-документацию необходимо развернуть на сервере helios.