API 开发规则
调用与认证
基础地址使用部署方提供的 HTTPS 地址。业务后端请求头为 Authorization: Bearer ak_pat_<完整令牌>;JSON 使用 UTF-8,SDP、文件、multipart 和 WebSocket 按契约处理。请求超时不代表未执行;写请求不无条件重放。保存状态码、Content-Type、code/errorCode、message、traceId 和服务端实际提供的 retryable;缺字段保持未知。
先调用 /api/v2/third-party/capabilities 确认有效权限,再读取 /api/v2/security/permissions 对应公开权限定义。便捷能力分类不代表通用管理 API 被禁用。准确权限在 api-operations.md 和 OpenAPI x-akstream-permission;还有资源/角色/配置约束时读取任务指南。authenticated 表示需有效身份;内部服务接口不会进入本契约,空权限不是生产安全豁免,* 表示该路由要求超级权限。
普通 API Token 不能读取在线 Swagger;使用离线 OpenAPI。浏览器不保存长期 Token,可由自己的后端转发获准的操作。修改公开 WebUI 时保留 Cookie/CSRF、登录刷新和结构化失败反馈;不能把后端 Token 塞入 WebUI 编译配置。
功能路线
下面的路径均相对于 guides/。先看任务,再查完整方法/路径,不从模块前缀猜请求。
| 功能与 WebUI 动作 | 任务指南 | 关键规则 |
|---|---|---|
| 总览、集群、节点、媒体服务、命令、性能状态 | development/local-run.md | 配置存在与进程在线分开;节点操作等终态 |
| 用户、角色、Token、RTSP 鉴权、审计、授权 | development/repository.md、development/api-security.md | 限权并处理实时收权;原 Token 仅后端保管 |
| 普通通道、分组、激活、流管理、资源迁移、对讲 | development/webui.md | 查询真实能力;稳定 channelId;停流会影响共享使用 |
| GB28181 注册、目录、点播、回放、PTZ、告警、级联 | development/add-module.md | SIP 受理与设备应答分开;PTZ 必须停止/超时释放 |
| ONVIF 发现、接入、Profile、PTZ、预置位、图像、事件 | development/testing-release.md | 先读取设备能力;不要假定全部设备支持 |
| 录像计划、手工录像、文件、裁剪合并、磁盘和保留 | development/database.md、development/third-party-recording.md | 逐项结果;软删/恢复/硬删分开;任务完成再签链接 |
| 周期截图、帧预览/下载、智能检索与索引任务 | development/webui.md、development/database.md | 截图票据绑定通道/当前源/动作;模型与索引能力以现场为准 |
| 显示墙、大屏节目、布局和播放状态 | development/webui.md | 保存节目与启动节目分开;客户端布局不等于服务端运行 |
| RTC 建会、票据、主持治理、协作、观察、外部流 | development/first-integration.md、development/api-rtc.md | 管理后端与参会 SDK 分开,观察和私发权限不扩大 |
| RTC 持续录制、时间线、合成、导出与档案授权 | development/api-rtc-archive.md、sdk/recording.md | 公共回放不包含定向私发;查看/播放/下载分别授权 |
| 配置中心、ZLM 参数、TLS、日志、后台任务、升级与生命周期 | development/local-run.md | 按管理权限调用;保存后核对运行生效/重启/回滚状态 |
| 直播、录像播放下载和稳定 URL 租约 | development/third-party-start.md、development/third-party-live.md、development/api-third-party-contract.md | 播放不暗中启动离线通道;续租保留 URL,不能超过绝对寿命 |
| 运行状态事件、协议事件与第三方 Webhook | development/async.md、operations/outbound-webhook.md | 按订阅协议鉴权/去重/补偿;不把 ZLM 入站 Webhook 当业务通知 |
这张表提供全功能检索路线;精确操作集合由随版 OpenAPI 决定。第三方可实现相同平台业务动作,也需遵守相同账号、权限、授权、节点和设备能力。登录、首次安装和会中设备授权仍采用对应专用流程。
首次安装和重新配置
先读取 GET /api/v2/setup/status。需要安装时,使用部署方在目标实例取得的安装码,在安装请求中发送 X-AK-Setup-Token;这不是 ak_pat_ API Token。随版 OpenAPI 的 x-akstream-availability: installation-only 表示只在安装模式开放,安装完成后一般返回 404。
安装接口覆盖 catalog、文件目录的 roots/browse/directories/validate、database/test、detect/network、detect/nginx、notifications/test、media/build 的 inspect/status/start、preflight 和 complete。精确字段使用 OpenAPI 的 FirstRun 请求模型和 guides/development/local-run.md。先验证配置和预检,再按明确的安装任务提交 complete;不要为普通业务接入把已经安装的实例重置为安装模式。目录创建、媒体构建和最终安装会改变环境,不在普通连通性测试中自动执行。
一个真实直播闭环
业务后端调用 GET /api/v2/third-party/channels?page=1&pageSize=50,取 channelId。离线普通通道在具备 channels.manage 时 POST /api/v2/third-party/channels/{channelId}/start,保存命令标识,查询流到 Online;GB28181 的协议会话流程见国标指南。
再 POST /api/v2/third-party/channels/{channelId}/playback-lease,请求体例子:{"protocols":["http-flv","http-fmp4","hls"],"leaseSeconds":120,"absoluteLifetimeSeconds":43200}。后端只将 sources[].url 交给获准用户。到 renewAfter 用同一 Token 续租,播放器无需更换 URL;到绝对期限或收权后重新走业务授权。停止通道与撤销某个播放租约是不同操作。
401 检查 Token/账号/IP/时效;403 不自动扩大权限;404 核对版本、ID 和可见范围;409 先查状态;429 按 Retry-After 退避。批量动作检查 succeeded/failed 每项。非 2xx 不一定同一 JSON 结构,204 不强制解析 JSON。分页、时间单位、枚举大小写、可空字段和默认值均按 OpenAPI 与指南,时间保留 UTC/时区信息。