VISH 应用——俄罗斯交通大学课表

面向所有学院学生和教职工的俄罗斯交通大学课表。按天和按周查看自己班级和任意教师的课表、此刻的空闲教室、教室、班级和教师的使用情况、课表变更通知以及课表人工智能助手。

学院

俄罗斯交通大学应用涵盖五个学院:高等工程学院、民航学院、道路管理学院、先进工程学院“高铁学院”和国际交通运输学院。在任何学院,班级课表和教师课表的查找方式都相同。

VISH 应用的功能
栏目
指南

API 变更记录

更新于 27.10.2026

API中的内容VISH现在,发生了什么变化,以及我们如何警告不兼容的变化。 该页面与API一起更新;最后一次对账是2026年10月23日,d1和production。

今天版本v1

所有方法都在/api/v1;每个的描述都在the stand的OpenAPI中(/documentation,机器视图 — /documentation/json).

空气污染指数部分看台页面
时间表,会话,呼叫网格,更改,PDF和日历提要d1、生产附表空气污染指数
机构、团体、教师、教室d1、生产空气污染指数目录
课堂笔记,反应,个人笔记d1、生产注及空气污染指数
推送订阅应用程序VISHd1、生产通知及日历
API密钥:应用程序、自发布、重新发布d1、生产身份验证
角色和权利d1、生产访问权限(RBAC)
研究所的分析和报告(/usage/export/…, /reports/institute)-法律d1、生产—
“透过VISH”(OAuth2.1/OpenID连接, /oauth/…)仅限d1透过VISH对于开发人员
大学数据模型(/university/…:工作量,教室占用,建筑物之间的转换)-理所当然只有d1—
上传csv和JSON格式的时间表(/exports/…)只有d1—

历史

开发中(d1),2026年10月

  • “透过VISH” -OAuth2.1和OpenID Connect:安装文档, /oauth/token, /oauth/userinfo, /oauth/revoke, /oauth/introspect,ES256签名密钥。 你的申请登记在“开发人员页面”有效密钥的持有者。
  • 大学数据模型 (/university/…)是给有权利的员工的。
  • 上载时间表 (/exports/…)为所有人提供CSV和JSON是正确的analytics:export.
  • 新的权利和角色。 analytics:export -上传分析作为一个文件(它是由所有已经有角色接收analytics:read); places:read, places:write, leads:read, leads:write, ads:read, ads:draft, ads:manage -对于仍在准备中的地点,合作伙伴和广告部分;角色analyst, sales,而adsManager. 分析发现(analytics:read)现在写入审计日志-每人不超过一个条目,每10分钟一个端点。
  • 该“开发人员” 参考指南中的部分包含这些页面,其中包含在d1上测试的示例。

0.12—2026年10月20日

  • 在没有应用程序的情况下为自己发放密钥(POST /api-keys/mine)-适用于有权api:keys:self-issue;长达730天。
  • 研究所的月度报告作为数据: GET /reports/institute?month=ГГГГ-ММ -只有摘要数字。

0.11—2026年10月7日

  • 钥匙动了“致开发人员”页面以及API文档的链接.

0.10.4—2026年10月4日

  • 频率限制不能再用虚构的令牌或密钥来规避:这样的请求被认为是在地址上。 登录的人和有效的密钥仍然有自己的限制。

二○二六年九月二十二日

  • 一个新的生产平台。 角色和API密钥的请求。

我们如何更改API

  • 在v1内部-它仅兼容。 新方法、可选参数、响应中的新字段和列表中的新值,如change或lessonType可能出现。 写入客户端,以便不熟悉的字段或值不会破坏它。
  • 错误消息 (error.message)可随时更改;机器代码(error.code)不能。
  • 不兼容的更改 -删除方法或字段,更改含义或格式-将是新地址的新版本。 我们会在这里和“最新消息”应用程序部分,和旧版本将一起工作一段时间。
  • 首先,d1。 所有新的东西都首先出现在d1上,然后才在生产中每两周发布一次。 在发布之前检查d1上的集成。

你的立场是什么?

该示例读取展台的OpenAPI,并告诉您其中有多少方法,哪些组(标签)最大,以及展台是否有“a VISH”启用输入。:

// What this stand's API offers: operations per tag and whether «Sign in with VISH» is on.
const API = process.env.VISH_API ?? 'https://d1.vish-app.ru/api/v1'

const response = await fetch(new URL('/documentation/json', API))
if (!response.ok) throw new Error(`OpenAPI: HTTP ${response.status}`)
const openapi = await response.json()

const perTag = new Map()
let total = 0
for (const [path, methods] of Object.entries(openapi.paths)) {
	if (path !== '/health' && !path.startsWith('/api/v1/')) throw new Error(`unversioned path ${path}`)
	for (const operation of Object.values(methods)) {
		total++
		for (const tag of operation.tags ?? []) perTag.set(tag, (perTag.get(tag) ?? 0) + 1)
	}
}
if (total === 0 || !perTag.has('schedule')) throw new Error('no schedule operations')

const discovery = await fetch(`${API}/oauth/.well-known/openid-configuration`)
console.log(`${openapi.info.title} ${openapi.info.version}: ${total} operations`)
console.log([...perTag].sort((a, b) => b[1] - a[1]).slice(0, 8).map(([tag, count]) => `${tag} ${count}`).join(', '))
console.log('Sign in with VISH:', discovery.ok ? 'on' : `off (HTTP ${discovery.status})`)

验证:2026-10,PWA aa337c45,平台bff65fce._