Skip to content

REST API

Leonid Ternopol edited this page Oct 28, 2023 · 30 revisions

REST API

По умолчанию все ответы отправляются в виде application/json, если не сказано иное.

/api/v0/rooms

  • GET /api/v0/rooms

    Возможные параметры запроса:

    • offset=Integer (сколько комнат из списка надо сбросить из начала)
    • limit=Integer (максимальное кол-во возвращаемых комнат)

    Ответы:

    • 200 OK: возвращается список укороченной инфы о комнатах ShortRoomInfo
  • GET /api/v0/rooms/{room_id}

    Ответы:

    • 200 OK: возвращается полная информация о комнате RoomInfo
    • 404 Not Found: Если комнаты с таким room_id нет
  • (session auth, permissions={"rooms.create"}) PUT /api/v0/rooms/create

    Тело: Принимается объект Unregistered Room Info Ответ:

    • 200 OK: комната создана, в теле ответа возврщается JSON с единственным полем id -- id созданной комнаты
    • 400 Bad Request: Запрос некорректен.
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.
    • 403 Forbidden: Пользователь авторизован, но у него нет необходимых разрешений.
  • (session auth, permissions={"rooms.edit"}) PUT /api/v0/rooms/{room_id}/edit

    Тело: Принимается объект Unregistered Room Info Ответ:

    • 200 OK: данные комнаты обновлены
    • 400 Bad Request: Запрос некорректен.
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.
    • 403 Forbidden: Пользователь авторизован, но у него нет необходимых разрешений.
    • 404 Not Found: Если комнаты с таким room_id нет
  • (session auth, permissions={"rooms.remove"}) DELETE /api/v0/rooms/{room_id}/remove

    Ответ:

    • 200 OK: комната удалена
    • 400 Bad Request: Запрос некорректен.
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.
    • 403 Forbidden: Пользователь авторизован, но у него нет необходимых разрешений.
    • 404 Not Found: Если комнаты с таким room_id нет
  • GET /api/v0/rooms/{room_id}/reservations

    Ответы:

    • 200 OK: возварщается список резерваций для комнаты Reservation
    • 404 Not Found: Если комнаты с таким room_id нет

/api/v0/reserve

  • POST /api/v0/reserve

    Тело: Принимается объект UnregisteredReservation

    Ответ:

    • 201 Created: Коллизий не было, резервация была зарегистрирована, возвращается Reservation
    • 400 Bad Request: Резервация не валидна, в body будет просто сообщение ошибки
    • 409 Conflict: Когда случилась коллизия с текущими резервациями

/api/v0/users

  • GET /api/v0/users

    Возможные параметры запроса:

    • offset=Integer (сколько пользователей из списка надо сбросить из начала)
    • limit=Integer (максимальное кол-во возвращаемых пользователей)

    Ответы:

    • 200 OK: возвращается список укороченной инфы о пользователях ShortUserInfo
  • GET /api/v0/users/{user_id}

    Ответы:

    • 200 OK: возвращается полная информация о пользователях UserInfo
    • 404 Not Found: пользователь не найден
  • POST /api/v0/users

    Только в дебаг режиме

    Тело: Принмает объект RegisterUserInfo

    Ответы:

    • 200 OK: возвращается полная информация о пользователях UserInfo

/api/v0/groups

  • GET /api/v0/groups

  • GET /api/v0/groups/{groud_id}

  • POST /api/v0/groups

/api/v0/login

  • POST /api/v0/login

    В теле: Принимает объект LoginUserInfo

    Ответ:

    • 200 OK: Пользователь залогинен, возвращаются куки файлы. (Есть еще csrf token)
    • 400 Bad Request: Пользователь не найден или не подошел пароль.
  • POST /api/v0/login

    В теле: Принимает объект LoginUserInfo

    Ответ:

    • 200 OK: Пользователь залогинен, возвращаются куки файлы. (Есть еще csrf token)
    • 400 Bad Request: Пользователь не найден или не подошел пароль.
  • DELETE /api/v0/logout

    Ответ:

    • 200 OK: Текущий токен инвалидирован, куки удалены.
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.

/api/v0/auth/validate-token

  • (session auth) GET /api/v0/auth/validate-token

    Ответ:

    • 200 OK: Авторизационные куки есть, в теле возвращается json с единственным полемid -- id авторизованного пользователя
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.

/api/v0/register

  • POST /api/v0/register

    В теле: Принимает объект UnregisteredUserInfo

    Ответ:

    • 200 OK: Пользователь создан, возвращаются куки файлы. (Есть еще csrf token)
    • 409 Conflict: Пользователь уже создан(хотим уникальные username и email).

/api/v0/account

  • GET /api/v0/account

  • GET /api/v0/account/groups

  • GET /api/v0/account/reservations

  • (session auth) GET /api/v0/account/permissions

    Ответ:

    • 200 OK: возварщается список разрешений для аторизованного пользователя [id: String]
    • 401 Unauthorized: Авторизационные куки отсутствуют, просрочены или некорректны.

Data Structure

  • Short Room Info

    • id=Integer
    • name=String
  • Room Info

    • id=Integer
    • name=String
    • description=String
  • Unregistered Room Info

    • name=String
    • description=String
  • Reservation

    • id=Integer
    • user_id=Integer
    • from=Instant
    • until=Instant
    • room_id=Integer
  • Unregistered Reservation

    • user_id=Integer
    • from=Instant
    • until=Instant
    • room_id=Integer
  • Short User Info

    • id=Integer
    • username=String
  • User Info

    • id=Integer
    • username=String
    • email=String
  • Login User Info

    • username=String
    • password=String
  • Unregistered User Info

    • username=String
    • email=String
    • password=String