跳到主内容

声音巴士开放 API v1 文档 - 声音巴士

声音巴士开放 API v1 文档

本文概述声音巴士开放 API v1 的当前兼容契约。机器可读且具有约束力的完整定义请参阅 OpenAPI v1 规范;当本文与规范存在差异时,以该规范及线上响应为准。

接口范围

  • 当前共有 40 个规范路径、42 个操作,其中 23 个 GET、19 个 POST;HEAD 和 OPTIONS 是隐式协议行为,不计入 42 个操作。
  • 其中 22 个匿名公开读取可在不登录时调用。其余接口按规范要求登录、管理权限或版主权限。

认证、CSRF 与跨域

  • 认证优先级固定为 Cookie token、任何显式 Authorization、POST 请求体 token。显式 Cookie token 即使为空也会阻止低优先级回退;显式 Authorization 即使为空、格式错误或不是唯一有效的 Bearer token,也会阻止请求体 token 回退并按未登录处理。
  • 仅接受当前 v1 会话;历史固定 token 已退场。使用 Cookie 发起写请求时必须携带 CSRF 保护;不携带 Cookie 的 Bearer 或请求体 token 客户端不使用浏览器 Cookie CSRF 流程。
  • 匿名公开 GET/HEAD 可按公开 CORS 读取。带凭证的读取以及所有写操作均不向任意外部 Origin 开放。

请求大小与分页

  • 普通 API 的完整请求体上限为 1 MiB。节目创建和更新的完整请求体上限为 110 MiB,其中音频 upload_file 单文件上限为 100 MiB;该规则不改变媒体存储位置或文件处理流程。
  • page 取值 1–100000;limit 与 pagesize 取值 1–100。若 limit 和 pagesize 同时提供,两者必须相等。

读取副作用与兼容响应

  • 隐式 HEAD 返回与 GET 一致的状态、内容类型和确定的 Content-Length,但正文为空且不产生业务副作用。
  • GET /api/v1/program/item 会增加 play_count;GET /api/v1/article/item 对普通数据库文章会增加 view_count;GET /api/v1/pm/list 在 type=to 时会清除对应未读计数。使用 HEAD 不会触发这些变化。
  • 部分历史业务失败为了兼容旧客户端仍可能返回 HTTP 200,并通过 code=0 与 data 表达失败;调用方应同时检查 HTTP 状态和响应中的 code。

已经退场的操作

以下 7 个操作不属于当前 v1,请勿继续调用:

  • POST /api/v1/program/delete
  • POST /api/v1/comment/update
  • POST /api/v1/comment/delete
  • GET /api/v1/tag/recommend
  • GET /api/v1/album/hot
  • POST /api/v1/pm/delete
  • POST /api/v1/pm/truncate

请求字段、响应结构、错误码、权限和每个操作的详细说明均以 OpenAPI v1 规范为准。