diff --git a/specification/specification.yml b/specification/specification.yml new file mode 100644 index 0000000..90b7898 --- /dev/null +++ b/specification/specification.yml @@ -0,0 +1,105 @@ +openapi: 3.1.0 + +info: + title: API сервер для демо-проекта «Шесть городов». + description: Список ресурсов и маршрутов сервера «Шесть городов». + license: + name: MIT + url: https://opensource.org/licenses/MIT + version: 1.0.0 + +tags: + - name: offers + description: Действия с объявлениями. + - name: comments + description: Действия с комментариями. + - name: users + description: Действия с пользователем. + +paths: + /users/register: + post: + tags: + - users + summary: Регистрация пользователя + description: Регистрирует нового пользователя. + + requestBody: + description: Информация для создания нового пользователя. + content: + application/json: + schema: + $ref: '#/components/schemas/createUser' + required: true + + responses: + "201": + description: Пользователь зарегистрирован. Объект пользователя. + content: + application/json: + schema: + $ref: '#/components/schemas/user' + + "409": + description: Пользователь с таким email уже существует. + + + /users/login: + post: + tags: + - users + summary: Авторизация пользователя + description: Авторизует пользователя на основе логина и пароля. + + get: + tags: + - users + summary: Проверка состояния пользователя + description: Возвращает информацию по авторизованному пользователю. + + /users/{userId}/avatar: + post: + tags: + - users + summary: Загрузка аватара + description: Загружает изображение аватара пользователя. Изображение + аватара должно быть в формате `png` или `jpg`. + + +components: + schemas: + createUser: + type: object + + properties: + email: + type: string + example: keks@htmlacademy.ru + + name: + type: string + example: Keks + + password: + type: string + example: 123456 + + avatar: + type: string + example: avatar.png + + isPro: + type: boolean + example: false + + user: + type: object + + properties: + id: + type: string + example: 6329c3d6a04ab1061c6425ea + + email: + type: string + example: keks@htmlacademy.ru