API自定义:端点覆盖与Webhook

Premium

API自定义:面向IT部门的高级界面,可将API端点重定向到另一台服务器(代理、CORS处理、自建服务器),并在课表、教师或科目每次变更时触发Webhook——即发往您系统的出站调用。适用于Premium账户,并需要加强身份验证。

API自定义是面向IT部门的技术界面。 您可以通过三种方式调整Omniscol API在您账户中的行为:

  • 通用配置(通用HTTP头);
  • 端点覆盖——将网页应用重定向到另一个URL,或停用某个端点;
  • Webhook——Omniscol在某项操作发生时发往您系统的出站调用。

在哪里找到

管理模块,导入/导出界面, **API自定义部分,API**按钮。

该界面仅限Premium账户使用,并受加强身份验证保护:打开窗口前, Omniscol会再次要求输入管理员的密码。由于此界面上的任何操作都会影响您集成的技术约定, 因此设置工作需要与Omniscol团队配合完成。

通用配置

您可以在此定义应用于所有Webhook的HTTP头(格式为 键1:值1;键2:值2)。 这里最适合放置发往您自己服务器的身份验证令牌(例如您的服务器要求的 Authorization: Bearer …)。对于覆盖,身份验证则放在该端点自己的HTTP头中 (见下文)。

端点覆盖

覆盖会重新定义Omniscol API的某个端点,使网页应用改为调用另一个URL。 共有三种用法,从功能最强到最简单。

从您的信息系统实时提供数据

这是功能最强的用法。您将某个读取端点重定向到一个外部URL——通常是对接学校内部信息系统的 ETL。网页应用随后会实时从该系统获取数据,而不是使用Omniscol保存的本地副本。

具体来说:当重定向URL是绝对外部地址时,网页应用会直接调用它, 不再经过Omniscol的服务器,并原样使用返回的响应——就像它来自Omniscol一样。 唯一的要求是您的系统按 Omniscol对该端点期望的格式响应(相同的JSON结构): 中间没有任何转码。对于该端点,Omniscol的本地副本不再被查询;显示的是您系统中的实时数据。

示例:学校的科目目录从您的信息系统实时提供, 这样学校一侧的任何更新都会立即在Omniscol中可见,无需重新导入。

此处发往您系统的身份验证放在该端点自己的HTTP头中(例如 Authorization: Bearer …),在覆盖所在行中填写。HTTP 方法也可以按端点指定。

将应用自身的某个端点重新接到实时外部数据源,既功能强大,要求也高: 请与您的IT部门一起操作,并与Omniscol团队配合。

插入您自己的服务器或代理

您也可以让调用经过您自己的服务器或代理——例如为了允许跨源资源共享(CORS), 或在网页应用与Omniscol之间加入自建逻辑。

停用端点

不给端点设置任何重定向URL(方法为 null),即可停用该端点。

请评估其对界面的影响。Omniscol是一个单页网页应用(SPA), 界面元素由可用的端点驱动:只有当按钮、标签页和菜单所依赖的端点存在时,它们才会显示。 因此,停用端点会让依赖它的界面元素在下次显示时动态消失——如果您停用了某个模块的所有端点, 整个模块就会从导航中消失。这些元素是被移除,而不只是被隐藏, 整个过程无需对代码做任何改动:只需修改配置并重新加载应用。

表格按端点列出:其键(操作的内部代码)、原始URL、HTTP 方法、 重定向的新URL以及专用的 HTTP头。搜索框可帮助您找到要覆盖的端点。

Webhook(出站调用)

Webhook 让Omniscol在某项操作成功之后,向您的URL发送一个HTTP请求。 通过它可以让外部系统实时获知变化——信息显示屏、数字工作空间、人力资源系统、自建同步程序等。

Webhook有两种挂接方式:

  • 挂接到某个具体端点(操作的键);
  • 挂接到某个分组事件,一次覆盖一类操作。共有三个分组事件:
    • 课表变更——任何影响当前生效课表的变更,包括副作用: 保存课表、创建、移动或删除课时、发布课表、 只要涉及日期的教师或班级缺勤,以及对已发布课表的结构性移除(教室、科目等)—— 移除某个科目会删除使用该科目的课时,这本身就是一次变更。 仅限于未发布草稿的编辑不会触发它;
    • 教师变更(新增、更新或删除);
    • 科目变更(自定义科目)。

对于每个Webhook,您需要填写回调URL、HTTP 方法、 **“附带数据”**复选框(是否附上原始请求的正文?)以及专用的 HTTP头。

您的服务器会收到什么

调用以 application/json 发送,除您的HTTP头外还包含:

  • 启用“附带数据”选项时,原始请求的正文;
  • Omniscol的元数据块:被调用的URL、端点代码、方法、参数、 用户的身份验证令牌、学校标识以及Webhook本身的配置;
  • 用于追踪的HTTP头:X-OS-original-query、X-OS-original-endpoint、 X-OS-auth 和 X-School。

对于课表变更事件,当启用“附带数据”时,调用还会包含一份课时差异 (新增、修改、删除的课时)——便于只同步发生变化的部分。

行为

Webhook在用户的操作成功之后于后台发出:它们不会拖慢界面, 即使您的服务器出现故障也不会阻塞界面。未能成功的出站调用会被记入日志, 不会中断Omniscol中的工作。每次调用的超时时间很短(几秒): 您的服务器应当快速确认收到,其余处理在自己一侧完成。

须知

  • Omniscol的API只开放了操作的一个子集;覆盖或Webhook只适用于实际开放的端点。 列表和身份验证请参见 Omniscol API。
  • 对于与软件系统(ERP、人力资源系统、数字工作空间)的集成,专用的同步功能通常更合适—— 参见 与外部系统同步。其内部使用的是同一套Webhook机制。
  • 如需让AI智能体无需开发即可查阅您的数据,参见 MCP——连接外部AI智能体。

另请参阅