Описание Rozklad API

Добро пожаловать на документацию Rozklad API.
Данное API позволит получать данные о расписании с помощью простых GET запросов по протоколу HTTP. API воплощает и следует идеологии REST.

Запросы

Формат ответа для каждого запроса: JSON.
Запросы следует делать по протоколу HTTP.
Кодировка ответов: UTF-8.
API доступно по домену api.rozklad.hub.kpi.ua

При выполнении запроса из браузера, ответ возвращается в удобной и читабельной форме, стилизованой с помощью HTML и CSS.

При необходимости получить чистый JSON из браузера без стилизации, следует добавить суффикс .json.

Сущности

  1. Корпуса — http://api.rozklad.hub.kpi.ua/buildings/
  2. Аудитории — http://api.rozklad.hub.kpi.ua/rooms/
  3. Группы — http://api.rozklad.hub.kpi.ua/groups/
  4. Преподаватели — http://api.rozklad.hub.kpi.ua/teachers/
  5. Дисциплины — http://api.rozklad.hub.kpi.ua/disciplines/
  6. Занятия — http://api.rozklad.hub.kpi.ua/lessons/

Запросы по таким адресам выведут список существующих сущностей.

Каждая сущность имеет свой уникальный id. Если его указать в конце адреса, вернется сущность с этим id.

Пагинация

При запросе списка сущностей вернутся первые 10 (количество по умолчанию). Для запроса меньшего либо большего количества, используется параметр limit. Максимальное значение limit100.

Такие запросы возвращают лишь запрошенное количество сущностей от начала списка. Для запроса сущностей из середины, используется параметр offset. Отсчет offset начинается с нуля.

Описание сущностей

Корпус

  • name – имя корпуса
  • latitude – широта
  • longitude – долгота

Аудитория

  • name – имя аудитории
  • full_name – полное имя аудитории (вместе с именем корпуса)
  • building – id корпуса, в котором эта аудитория находится

Группа

  • name – имя группы
  • okr – квалификация группы. Возможные значения: 0 – бакалавр, 1 – магистр, 2 – специалист
  • type – форма обучения группы. Возможные значения: 0 – дневная, 1 – заочная

Преподаватель

  • last_name – фамилия (Иванов)
  • first_name – имя (Иван)
  • middle_name – отчество (Иванович)
  • degree – звание (аспирант)
  • name – полное ФИО (Иванов Иван Иванович)
  • full_name – полное ФИО со званием (аспирант Иванов Иван Иванович)
  • short_name – сокращенное ФИО (Иванов И. И.)
  • short_name_with_degree – сокращенное ФИО с сокращенным званием (асп. Иванов И. И.)

Дисциплина

  • name – имя дисциплины
  • full_name – полное имя дисциплины

Занятие

  • number – номер (от 1 до 6)
  • day – день (от 1 (понедельник) до 6 (суббота))
  • week – номер недели (1 или 2)
  • type – тип. Возможные значения: 0 – лекция, 1 – практика, 2 – лабораторная, null – не задано
  • discipline – id дисциплины
  • discipline_name – имя дисциплины
  • groups – массив id груп
  • groups_names – массив имен групп
  • teachers – массив id преподавателей
  • teachers_short_names – массив сокращенных ФИО преподавателей
  • rooms – массив id аудиторий
  • rooms_full_names – массив полных имен аудиторий

Фильтрация

Для списков всех сущностей (кроме корпусов и дисциплин) допустима фильтрация по полям сущности. Для этого нужно определить в адресе запроса параметр URL, совпадающий с именем поля, и дать ему значение для фильтрации.

Параметры фильтрации можно комбинировать

Параметры фильтрации можно комбинировать с параметрами пагинации

Поля, по которым возможна фильтрация:

  • Аудитории: name, building
  • Группы: name, okr, type
  • Преподаватели: last_name, first_name, middle_name, degree
  • Занятия: number, day, week, type, discipline, groups, teachers, rooms

Для групп, преподавателей, аудиторий и дисциплин реализована возможность текстового поиска. Для этого необходимо задать параметр search и дать ему значение для поиска. Для групп – поиск с начала имени, для дисциплин – полнотекстовый поиск по name или full_name, для аудиторий – поиск с начала full_name, для преподавателей – поиск с начала last_name, или first_name, или middle_name.

Параметр search можно комбинировать с параметрами пагинации и фильтрации.

Полное расписание

Для групп, преподавателей и аудиторий реализована возможность получить полное расписание в один GET запрос. Ответ представлен в JSON, где вместо id всех сущностей вложены сами сущности. Для этого необходимо добавить timetable в адрес запроса конкретной сущности.