§ 11 · Возможности Учиме
Приложения ученика, родителя и учителя на открытом API
У каждой роли свой главный экран — его собирает один запрос. Всё, что умеет кабинет, доступно по REST с теми же правами: вход по коду или почте, токен на устройство, спецификация OpenAPI 3.1. А родителям и сотрудникам пишет бот школы в Telegram.
Привет, Аня!
Опыт
1 240
Серия
6 дн.
Домашка
Приложение ученика
GET /api/v1/student/home
Authorization: Bearer 4IaU…
{"stats": { "xp": 1240, "streak": 6 },
"homework": { "todo": [{ "title": "Memory · Colors", "status": "assigned", "game": { "kind": "gamehub" } }, …], "done": […] },
"unread": { "chat": 0 } }
1.Вход по коду, токен на устройство
Ученик и родитель входят кодом из школы — без почты и пароля, сотрудники — почтой. В ответ приходит токен: приложение хранит его в защищённом хранилище телефона и отправляет с каждым запросом.
- Токен живёт 7 дней и продлевается, пока им пользуются
- GET /me — роль, школа с часовым поясом, цвет и логотип школы для перекраски приложения, разрешённые разделы
- Список устройств и «Выйти» на любом из них. Новый код ученика закрывает все его сессии
- 30 неудачных попыток входа за 15 минут с одного адреса — дальше 429
Уже сейчас кабинет открывается в браузере телефона и ставится на экран как приложение. Нативные приложения собираются на этом же API — им не нужно ничего, чего нет у кабинета.
Мои устройства
GET /api/v1/auth/sessions- iPhone · приложениеэто устройство · сейчасcurrent: true
- Android · приложениеИжевск · вчера, 19:40Выйти
- Chrome · WindowsИжевск · 12 октябряВыйти
Ошибка — { error, code }: текст для человека и ключ для кода
| 401 | unauthorized | экран входа |
| 402 | — | тариф или кредиты |
| 403 | forbidden | роль или модуль выключен |
| 403 | suspended | экран блокировки |
| 429 | — | много попыток входа |
2.Те же права, что в кабинете
Ученик видит только своё, родитель — привязанных детей, учитель — свои группы, админ — всю школу. Школа выключила модуль — его маршрут отвечает 403, а блок на главном экране учителя приходит пустым: приложение просто его не рисует.
У приложений свои маршруты: вход, главные экраны, уведомления, устройства. Любой другой маршрут кабинета тоже доступен под /api/v1 — с теми же проверками.
| /api/v1… | Ученик | Родитель | Учитель, админ |
|---|---|---|---|
| /student/home | ✓ | — | — |
| /parent/home | — | ✓ | — |
| /teacher/home | — | — | ✓ |
| GET /assignments | свои | — | своих учеников |
| POST /assignments/{id}/submit | своё | — | — |
| POST /assignments/{id}/check | — | — | ✓ |
| /chat/student | ✓ | — | — |
| /chat/threads | — | ✓ | ✓ |
| /schedule | ✓ | ✓ | — |
| /materials, /files/{key} | ✓ | ✓ | ✓ |
| POST /assistant/chat (SSE) | — | — | ✓ |
3.OpenAPI 3.1 и Пятёрка по SSE
OpenAPI 3.1
App · Вход
POST /auth/token
GET /auth/sessions
App · Главные экраны
GET /student/home
GET /parent/home
GET /teacher/home
App · Уведомления
GET /notifications
App · Устройства
POST /devices
GET /app/version
GET/api/v1/parent/home
Главный экран родителя: по каждому ребёнку прогресс, домашка, комментарии учителя, посещаемость за 30 дней, письма школы и чат.
Роли
parent
Ответ 200
children[]
progress { overallPct, themes }
homework { counts, todo, recent }
attendance за 30 дней
letters[] { title, sentAt, readAt }
unread { notifications, chat, letters }Интерактивная документация — на /api/docs, спецификация — в /api/openapi.json. Она собирается из самих маршрутов: путь, методы, роли и модуль. Группы «App · …» — стабильный контракт для приложений.
Приложение учителя говорит с Пятёркой потоком: шаги, текст, карточки действий и готовые файлы приходят по мере работы. Связь оборвалась — ответ всё равно допишется и сохранится.
POST /api/v1/assistant/chat · text/event-stream
event: thread · { "id": "th_8k…" }
event: step · { "label": "Ищу группу «A2»" }
event: text · { "delta": "В группе A2 " }
event: text · { "delta": "четыре ученика." }
event: done · { "credits": 412, "suggestions": [ … ] }
: ping — каждые 15 секунд
4.Уведомления, push-устройства и версия
- Уведомления школы
- Новые сверху, с курсорной пагинацией. Отметить прочитанными можно по одному или все сразу; ссылка уведомления подсказывает приложению, какой экран открыть.
- Push-устройства
- На каждом старте приложение регистрирует устройство: iOS, Android или веб, push-токен и версию. Сама рассылка push пока не включена — токены собираются заранее.
- Версия приложения
- Сервер отвечает, есть ли обновление и обязательно ли оно. Если обязательно — приложение показывает экран «Обновите приложение».
POST /api/v1/devices
{ "platform": "ios", "pushToken": "…",
"appVersion": "1.0.0", "deviceName": "iPhone 15" }
GET /api/v1/app/version?platform=ios&version=1.0.0Учиме
Обновите приложение
Эта версия больше не поддерживается
latest: "1.2.0"
minSupported: "1.1.0"
updateRequired: true
Обновить
Ответ /app/version: обновление обязательно
5.Бот школы в Telegram
Родителям
- Учитель берёт ссылки-приглашения на свою группу в «Мой Telegram → Родители»
- Ссылка одноразовая и живёт 30 дней — переслать её дальше не выйдет
- «Прогресс ребёнка» — последняя диагностика; документы и сообщения учителя приходят сюда же
Сотрудникам
- Привязка шестизначным кодом из кабинета, код живёт 30 минут
- Пятёрка в личном чате: голосовые, файлы, карточки с кнопками
- «Что сдать», дни рождения и пакеты от коллег — если школа включила бота
Бот школы
Telegram · для Марии Ивановой
по ссылке-приглашению от учителя
/start
Аккаунт подтверждён.
Родитель: Мария Иванова
Ученик: Аня Иванова
Отчёт об успеваемости
Аня Иванова
Последняя диагностика: 14.10.2026
Результат: 41/50 (82%)
Тип: промежуточная
Бот школы · Пятёрка
Telegram · привязан к Ольге
Вы сказали: «Сделай итоги недели для A2 и пришли PDF»
Готово: итоги недели, Группа A2, 12–17 октября. Посещаемость 3 из 4, темы и слова — из журнала.