API справочников: группы, преподаватели, аудитории
Обновлено 27.10.2026
Справочники — это институты, группы, преподаватели и аудитории РУТ (МИИТ), из которых складывается расписание. Все они открыты для чтения без ключа. Сверено со стендом d1 23 октября 2026 года; методы этой страницы есть и на production.
Методы
Институты: GET /institutes
Все институты университета: id, code (например АГА), name, groupsCount, university. Ушедшие из расписания институты не показываются; includeRetired=1 добавит их с retired: true и successorCode — кодом института-преемника.
Группы: GET /groups
search— часть кода без учёта регистра (шад),course— курс,instituteIds— через запятую,facultyCode.- У группы:
id,name(код, по нему же работаетGET /schedule?group=…),displayNameна трёх языках,course,institute,specialty. GET /groups/{id}— одна группа;GET /groups/filters— значения для фильтров.
Преподаватели: GET /teachers
search— по полному или короткому имени,department— кафедра,instituteIds— у кого есть занятия в этих институтах.- У преподавателя:
id,fullNameиshortNameна трёх языках,department,photoUrl,profileUrl(страница на miit.ru, если есть),source. GET /teachers/{id}— карточка преподавателя;GET /teachers/filters— кафедры для фильтра.
Аудитории: GET /auditories
search,buildingиfloor— можно несколько через запятую (?building=8,12),instituteIds,order(descпо умолчанию).- У аудитории:
name(как в расписании, например8412),fullName(«Корпус 8, этаж 4, аудитория 12»),building,floor,room,address,buildingInfoс координатами корпуса. GET /auditories/room?name=8412— одна аудитория по обозначению;GET /auditories/filters— корпуса и этажи.
Группы, преподаватели и аудитории отдаются постранично: page, perPage (по умолчанию 20, не больше 200) или all=1 (до 2000 записей). Институты приходят все сразу, без постраничного вывода. Тексты на трёх языках приходят объектом { ru, en, zh }.
Пример: пройти по справочникам
// Institutes, a group of the first institute, one teacher by id and one room by its name.
const API = process.env.VISH_API ?? 'https://d1.vish-app.ru/api/v1'
const get = async (path, params = {}) => {
const url = new URL(`${API}${path}`)
for (const [name, value] of Object.entries(params)) url.searchParams.set(name, String(value))
const response = await fetch(url)
if (!response.ok) throw new Error(`${url}: HTTP ${response.status}`)
return response.json()
}
const institutes = await get('/institutes')
const institute = institutes.list.find((item) => item.groupsCount > 0)
if (!institute) throw new Error('no institute with groups')
const groups = await get('/groups', { instituteIds: institute.id, perPage: 3 })
if (!groups.list.every((group) => group.institute?.id === institute.id)) throw new Error('instituteIds filter ignored')
const [firstTeacher] = (await get('/teachers', { perPage: 1 })).list
const teacher = await get(`/teachers/${firstTeacher.id}`)
if (teacher.id !== firstTeacher.id) throw new Error('teacher lookup failed')
const [firstRoom] = (await get('/auditories', { perPage: 1 })).list
const room = await get('/auditories/room', { name: firstRoom.name })
if (room.name !== firstRoom.name) throw new Error('room lookup failed')
console.log(`${institute.code}: ${institute.name.ru}, ${institute.groupsCount} groups, e.g. ${groups.list.map((g) => g.name).join(', ')}`)
console.log(`teacher: ${teacher.fullName.ru} (${teacher.department?.ru ?? 'no department'})`)
console.log(`room ${room.name}: ${room.fullName.ru}`)Попробовать
Попробовать запрос
Ключ нужен только методам с замком. Он живёт только на этой странице: не сохраняется, уходит лишь заголовком этого запроса и забывается, когда вы её покинете. Где взять ключ
Полезно знать
- Идентификаторы стендов разные.
idгруппы на d1 и на production не совпадают. Коды групп (ШАД-111), имена преподавателей и обозначения аудиторий — совпадают; храните их, если интеграция работает с обоими стендами. - Группы, преподаватели и аудитории приходят из расписания университета на miit.ru и обновляются вместе с ним.
- Изменять справочники могут только сотрудники с правами (
reference:groups:manage,teachers:manage) — добавленный вручную преподаватель отмеченsource: "manual".
Проверено: 2026-10, PWA aa337c45, platform bff65fce.