Release 管理 API
管理项目的 Release(对外发布的 API 集合),包括 Release CRUD、别名管理和版本管理。
基础路径
/projects/:projectId/releases认证方式
本模块管理操作使用 JWT 用户会话。以下三条读取额外接受带 project:releases:read scope 的 OAuth Bearer Token;API Key 和 Agent Token 不能调用这些管理读取接口:
GET /projects/:projectId/releases/documentsGET /projects/:projectId/releases/documents/:documentIdGET /projects/:projectId/releases/deployments
OAuth 应用需先获准该能力并取得用户同意,不能凭已有 token 自动获得新 scope。读取仍要求授权用户具有目标项目的 read 权限,且项目未删除。此处与对外运行 /api/released-app/... 的认证合同不同。
权限说明
管理读取要求项目 read 权限;管理写操作要求项目 write 权限。项目可见但没有写权限时返回 403,项目不存在或调用者不可见时返回 404。
OAuth 读取部署 schema
文档列表用于发现 Flow;文档详情的 liveApiSchema 是当前草稿,deployments[].apiSchema 才是对应发布版本。部署列表支持可选查询参数 deploymentId=<uuid>,不匹配返回 { "deployments": [] },非法 UUID 返回 400 invalid_deployment_id。查询始终限定目标项目和未删除部署。
部署条目保留原 version(如 2.3)、apiSchema 等字段,并提供 id、revisionId、versionMajor、versionMinor、versionPatch。历史没有的版本元数据返回 null,不补造。响应不返回工作流快照、内部 manifest 或 Output 取值表达式。
apiSchema.metadataVersion=1 的投影包括 Input 完整 schema(含嵌套 items/properties/required,保留 schemaType)及 Output 顶层 nullable。nullable 与 required 独立;旧投影缺少 nullable 不代表 false。
schemaStatus | 含义 |
|---|---|
complete | 已声明 Output,已有声明被完整投影 |
legacy | 没有 Output 声明,保持历史数据块枚举,不能当成完整业务输出契约 |
incomplete | 历史元数据无法可靠恢复,保留可读旧 schema,检查 schemaWarnings |
schemaWarnings 返回机器可读代码:output_not_declared(legacy),或 api_schema_invalid、snapshot_missing、snapshot_invalid、snapshot_query_failed、output_config_invalid、schema_snapshot_mismatch(incomplete)。无效旧 schema 返回 apiSchema:null,不会伪造完整结构。
历史补全只读取该部署的冻结快照,不修改历史数据或用当前草稿替换旧版。部署 Input 只列实际引用的输入,草稿 liveApiSchema 沿用编辑器的全部 Input 绑定视图。
历史 Output 绑定或出口覆盖损坏时,发布预览保守显示 major;有效旧绑定的纯元数据补齐仍为 minor。
本项不改变现有运行校验或版本调用规则:完整元数据不代表新增 Input 深层校验,Output 嵌套 null 仍不支持。已有运行接口不传 version 仍选择对应文档的最新发布;要与某次历史 schema 匹配,须沿用显式版本参数。
新生成的公开 API 文档同步 nullable;已经发布的公开文档缓存保持冻结,不会自动改写。本项原生 apiSchema 合同与历史 OpenAPI 缓存应分别使用。
术语说明
| 术语 | 说明 |
|---|---|
| Release | 对外发布的完整 API 集合 |
| Alias | Release 的人类可读别名(如 my-app),用于构建访问 URL |
| Version | Release 的版本快照,支持发布/废弃/下线生命周期 |
| Deployment | 文档的部署版本,可绑定到 Release 端点 |
一、Release 管理
1. 获取项目的 Release
GET /projects/:projectId/releases获取项目关联的 Release 信息。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
响应 200
{
"release": {
"id": "uuid",
"project_id": "uuid",
"name": "My API",
"alias": "my-api",
"content": { ... },
"created_at": "2026-01-01T00:00:00Z"
}
}如果项目没有 Release,返回 { "release": null }。
错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在或无权访问 |
| 500 | 操作失败 |
2. 创建 Release
POST /projects/:projectId/releases为项目创建一个新的 Release。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
Body 参数(JSON)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | Release 名称 |
响应 201
{
"release": { ... }
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在或无权访问 |
| 409 | 别名冲突 |
| 500 | 操作失败 |
3. 更新 Release 内容
PUT /projects/:projectId/releases/:releaseId更新 Release 的配置内容,包括端点配置、鉴权设置等。
认证与权限:仅 JWT/API Key;需要 project:write。Agent Token 或项目可见但缺少写权限时返回 403。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
Body 参数(JSON)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
content | ReleaseDocumentContent | 是 | Release 配置内容 |
校验规则:
- 关闭鉴权(
requireAuth === false)时,必须指定apiKeyId - 端点级跳过鉴权(
skipAuth === true)时,必须有端点级或全局apiKeyId billingMode === 'release'时必须开启鉴权,且所有端点都禁止skipAuth
billingMode 缺失或为 default 时保持现有结算规则;设为 release 时,仅允许含 release:invoke Scope 的 OAuth Token 调用,由 Release 所属 Team 付款,数据仍写入绑定的 Deployment Project。
响应 200
{
"release": { ... }
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | content 缺失、鉴权配置不合法 |
| 401 | 未认证 |
| 403 | Agent Token,或项目可见但缺少 project:write 权限 |
| 404 | 项目不存在、调用者不可见或 Release 不存在 |
| 409 | 别名冲突 |
| 500 | 操作失败 |
4. 删除 Release
DELETE /projects/:projectId/releases/:releaseId删除指定的 Release。
认证与权限:仅 JWT/API Key;需要 project:write。Agent Token 或项目可见但缺少写权限时返回 403。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
响应 200
{
"success": true
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 403 | Agent Token,或项目可见但缺少 project:write 权限 |
| 404 | 项目不存在、调用者不可见或 Release 不存在 |
| 500 | 操作失败 |
二、别名管理
5. 检查别名可用性
GET /projects/:projectId/releases/check-alias/:alias检查指定别名是否可用。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
alias | string | 是 | 要检查的别名 |
响应 200
返回别名可用性检查结果。
错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在或无权访问 |
| 409 | 别名已被占用 |
| 500 | 操作失败 |
6. 设置别名
POST /projects/:projectId/releases/:releaseId/alias为 Release 设置别名。别名用于构建对外访问 URL。
认证与权限:仅 JWT/API Key;需要 project:write。Agent Token 或项目可见但缺少写权限时返回 403。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
Body 参数(JSON)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
alias | string | 是 | 别名。只允许小写字母、数字和连字符,格式匹配 /^[a-z0-9][a-z0-9-]*[a-z0-9]$/ 或单字符 /^[a-z0-9]$/ |
响应 200
{
"success": true,
"alias": "my-api"
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | alias 缺失或格式不合法 |
| 401 | 未认证 |
| 403 | Agent Token,或项目可见但缺少 project:write 权限 |
| 404 | 项目不存在、调用者不可见或 Release 不存在 |
| 409 | 别名已被其他 Release 占用 |
| 500 | 操作失败 |
7. 删除别名
DELETE /projects/:projectId/releases/:releaseId/alias删除 Release 的别名。
认证与权限:仅 JWT/API Key;需要 project:write。Agent Token 或项目可见但缺少写权限时返回 403。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
响应 200
{
"success": true
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 403 | Agent Token,或项目可见但缺少 project:write 权限 |
| 404 | 项目不存在、调用者不可见或 Release 不存在 |
| 500 | 操作失败 |
三、Deployment 列表
8. 获取 Deployment 列表
GET /projects/:projectId/releases/deployments获取项目下的 Deployment 列表,用于端点绑定选择。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
响应 200
{
"deployments": [
{
"id": "uuid",
"title": "文档标题",
"version": "1.2",
"documentId": "uuid",
"visibility": "public",
"createdAt": "2026-01-01T00:00:00Z"
}
]
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在或无权访问 |
| 500 | 查询失败 |
四、版本管理
9. 创建版本
POST /projects/:projectId/releases/:releaseId/versions创建版本快照(快照当前 Release 内容)。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
响应 201
{
"version": {
"id": "uuid",
"version": "1.0",
"status": "draft",
"created_at": "2026-01-01T00:00:00Z"
}
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在、无权访问、Release 不存在或 ID 不匹配 |
| 500 | 操作失败 |
10. 列出版本
GET /projects/:projectId/releases/:releaseId/versions获取 Release 的所有版本列表。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
响应 200
{
"versions": [
{
"id": "uuid",
"version": "1.0",
"status": "published",
"published_at": "2026-01-01T00:00:00Z"
}
]
}错误码
| 状态码 | 说明 |
|---|---|
| 401 | 未认证 |
| 404 | 项目不存在、无权访问、Release 不存在或 ID 不匹配 |
| 500 | 操作失败 |
11. 发布版本
POST /projects/:projectId/releases/:releaseId/versions/:versionId/publish校验版本可执行性,生成脱敏 REST/OpenAPI 静态缓存,并以一次原子更新将版本设为已发布。无论 private、unlisted 还是 public 都会生成缓存;文档缓存不会包含内部工作流或字段映射。
输出字段类型的补齐:输出映射的 type 定义上是「从绑定的部署输出继承」。若配置里该字段缺失, 发布时会从绑定源的 variableType 取回来,并把补齐后的配置随本次发布一起落库。 绑定源也给不出类型时返回 400,提示重新选择该字段的输出绑定来源——不会猜一个类型顶上, 猜出来的类型会被固化进对外 API 文档。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
versionId | string | 是 | 版本 ID |
Body 参数(JSON,可选)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
releaseNotes | string | 否 | 对外发布说明,trim 后最多 4000 字符 |
响应 200
{
"success": true,
"docs": {
"visibility": "public",
"alias": "my-api",
"version": "1.0.0",
"publisher": {
"name": "Example Team",
"slug": "example-team",
"isOfficial": false
}
}
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | 发布前校验不通过:非 draft 状态、alias 无效、releaseNotes 超长、端点绑定/输入输出映射有问题(含输出字段缺类型且无法从绑定源继承) |
| 401 | 未认证 |
| 404 | 项目不存在、无权访问或版本不存在 |
| 500 | 操作失败 |
12. 废弃版本
POST /projects/:projectId/releases/:releaseId/versions/:versionId/deprecate将版本标记为已废弃。仅允许对 published 版本操作 —— 「废弃」的语义前提是它曾经对外可用, 从未发布过的草稿不能被废弃(详见下方「版本状态机」)。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
versionId | string | 是 | 版本 ID |
响应 200
{
"success": true
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | 状态流转非法(如草稿直接废弃、已下线回退),或版本状态被并发修改需重试 |
| 401 | 未认证 |
| 404 | 项目不存在、无权访问或版本不存在 |
| 500 | 操作失败 |
13. 下线版本
POST /projects/:projectId/releases/:releaseId/versions/:versionId/offline将版本设为下线状态。仅允许对 published 或 deprecated 版本操作(详见下方「版本状态机」)。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectId | string | 是 | 项目 ID |
releaseId | string | 是 | Release ID |
versionId | string | 是 | 版本 ID |
响应 200
{
"success": true
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | 状态流转非法(如草稿直接下线、已下线重复下线),或版本状态被并发修改需重试 |
| 401 | 未认证 |
| 404 | 项目不存在、无权访问或版本不存在 |
| 500 | 操作失败 |
版本状态机
版本状态单向流转,不可回退:
draft ──发布──> published ──废弃──> deprecated
│ │
└─────下线───────────┴──> offline| 当前状态 | 允许流转到 | 说明 |
|---|---|---|
draft | published | 只有草稿能发布 |
published | deprecated / offline | 已发布的版本才谈得上废弃或下线 |
deprecated | offline | 废弃后仍可下线 |
offline | 无 | 终态 |
任何不在上表中的流转一律返回 400,并说明当前状态与目标状态。
服务端在读取当前状态与写入新状态之间使用条件更新(CAS):若两者之间状态被并发改动, 更新命中 0 行并返回 400 提示刷新重试,而不会越过状态机。
历史:这套状态机此前只写在代码注释里、实现从未校验,导致生产库出现过 「已废弃但从无发布记录」的版本(草稿被直接标记为废弃)。现由服务层强制。
五、匿名动态文档 API
以下端点无需认证,只返回发布时固化的脱敏文档 DTO。private 与不存在统一返回 404;unlisted 不进入目录但可通过链接访问。
GET /public/release-docs
列出可见性为 public 的最新 Release 文档。支持 query、page、pageSize(最大 50),响应包含 ETag 与短缓存头。
GET /public/release-docs/:alias
返回指定 alias 的最新可访问版本、版本摘要列表、公开 REST 契约、Changelog 和 OpenAPI 内容。
GET /public/release-docs/:alias/versions/:version
返回指定版本。version 支持 latest、v1、v1.2、v1.2.3。历史版本访问受最新发布快照的可见性总闸控制,历史 private 快照不会进入版本列表或被直接读取。
GET /public/release-docs/:alias/versions/:version/openapi.json
下载 OpenAPI 3.0.3 JSON。servers 按当前 API 请求的可信 origin 生成,因此 ETag 按 origin 隔离。
所有公开端点支持 If-None-Match;命中时返回 304。
六、文档站登录访问
文档站登录后通过同源 /docs-api/release-docs/* 读取授权目录和详情。浏览器只发送 HttpOnly wn_docs_session Cookie;nginx 转发到内部路由并注入共享密钥,前端不会把 OAuth access token 放入文档请求头或 URL。
授权目录包含:
- 全部
public文档; - 当前用户可读取项目中的
private与unlisted文档。
项目读取权限与项目页一致:项目所有者、Team Owner、accepted Team member 或显式 project/read grant。site:admin 不自动获得所有项目的私有文档。无权限与不存在统一返回 404。
认证通道的成功和错误响应均使用 Cache-Control: private, no-store 与 Vary: Cookie,不会复用匿名公开端点的 ETag/共享缓存。私有 OpenAPI 的 server origin 只从后端 BACKEND_URL 推导,配置缺失或非法时 fail closed。
早于文档缓存功能发布、且版本内没有
publicDocsCache的历史 Release 不会在读取时动态生成文档。需要重新发布该版本配置后才可在文档站查看。
七、官方团队名单管理
以下端点位于 /admin/site-settings,只接受 JWT,要求 site:admin,并记录 adminAudit:
GET /admin/site-settings/release-docs-official-teamsPUT /admin/site-settings/release-docs-official-teams,Body:{ "teamIds": ["uuid"] }
PUT 校验 UUID 和团队存在性,写后回读,并返回 previousTeamIds/currentTeamIds。误配时由管理员从响应或审计记录恢复旧完整数组。名单变化只影响之后的新发布,不改写历史文档快照。
源码
- 路由:
apps/backend/src/routes/releases.ts - 服务:
apps/backend/src/services/release.ts、release-version.ts、release-public-doc.ts、release-public-doc-store.ts - 类型:
apps/backend/src/types/release.ts - 参考文档:应用发布指南
补充端点
本节补充 plans/need-update-api.md 中尚未覆盖到 docs-site 的接口。端点标题保持严格的 METHOD /path 格式,便于后台文档覆盖率服务识别。
GET /projects/:projectId/releases/:releaseId/debug-logs
获取指定 Release 端点的调试日志。
认证与权限:仅接受 JWT 用户会话(Authorization: Bearer <用户会话 JWT>),调用者必须具有目标项目的 write 权限。API Key、Agent Token 和 OAuth Token 不作为本接口的用户会话凭据。
路径参数
| 参数 | 说明 |
|---|---|
projectId | 项目 ID |
releaseId | Release ID |
Query 参数(无请求体)
| 参数 | 必填 | 说明 |
|---|---|---|
endpointKey | 是 | 要查询的 Release 端点 key |
limit | 否 | 每页条数,默认 50。按十进制 parseInt 解析,解析失败时使用 50,解析结果限制在 1~100 |
beforeCreatedAt | 与 beforeId 成对 | 上一页最后一条日志的 created_at。格式为带 Z 或 ±HH:MM 时区的时间,如 2026-10-03T10:00:00.123456+00:00;小数秒可省略,最多 6 位 |
beforeId | 与 beforeCreatedAt 成对 | 上一页最后一条日志的 id,必须为 UUID v1~v5 |
日志按 created_at、id 双降序返回。第一页不传游标;当 hasMore=true 时,使用当前页最后一条日志的两个字段查询下一页。必须对 Query 值做 URL 编码,时区中的 + 编码为 %2B。例如,page 为当前页响应时,可这样构造下一页参数:
const lastLog = page.logs[page.logs.length - 1]
const query = new URLSearchParams({
endpointKey,
limit: '50',
beforeCreatedAt: lastLog.created_at,
beforeId: lastLog.id,
})
// query.toString() 会编码时间中的 +,避免它被解析为空格。响应(200)
{
"logs": [],
"hasMore": false
}logs 为当前页记录,hasMore 表示还有更早的记录。响应不包含 nextCursor。每条日志返回以下字段,字段值沿用已存储的值;JSON 字段可能为对象、数组、标量或 null。
| 字段 | 说明 |
|---|---|
id | 日志 ID;与 created_at 共同组成游标 |
release_document_id | Release 文档 ID |
endpoint_key | Release 端点 key |
alias | 请求使用的 Release 别名 |
version | 请求使用的版本 |
method | HTTP 方法 |
path | 请求路径 |
request_headers | 已存储的请求头 |
request_body | 已存储的请求体(JSON) |
query_params | 已存储的 Query 参数(JSON) |
mapped_inputs | 已存储的工作流映射输入(JSON) |
status_code | 请求的 HTTP 状态码,可能为 null |
response_body | 已存储的响应体(JSON) |
error | 已记录的错误,可能为 null |
run_id | 关联的 Run ID,可能为 null |
duration_ms | 请求耗时,单位为毫秒 |
created_at | 日志创建时间 |
查询限定在当前项目的 Release 与所选 endpointKey。接口验证 Release 归属,但不检查该 key 的端点配置是否存在;没有匹配日志时返回空列表。此响应包含端点请求记录,完整 Run timeline 需使用对应的 Run 接口。
定时清理任务删除 created_at 早于任务执行时刻减 7 天的端点调试日志。实际删除随任务执行发生,不保证满 7 天立即删除。该清理阈值只用于端点调试日志。
常见错误:先验证身份和项目权限,再校验业务参数。
| 状态码 | 条件 |
|---|---|
400 | 缺少 endpointKey;游标未成对提供;时间或 UUID 格式无效 |
401 | 未认证或凭据失效 |
403 | 已通过凭据验证但不是用户会话(User session token required);或项目可见但没有 write 权限(项目写权限不足) |
404 | 项目不存在或不可见(项目不存在或无权访问);或 Release 不存在、已删除或不属于该项目(Release 不存在) |
500 | 日志查询或服务端操作失败 |
DELETE /projects/:projectId/releases/:releaseId/debug-logs
清空指定 Release 端点的调试日志。
认证与权限:仅接受 JWT 用户会话,调用者必须具有目标项目的 write 权限。API Key、Agent Token 和 OAuth Token 不作为本接口的用户会话凭据。
路径参数
| 参数 | 说明 |
|---|---|
projectId | 项目 ID |
releaseId | Release ID |
Query 参数(无请求体)
| 参数 | 必填 | 说明 |
|---|---|---|
endpointKey | 是 | 要清空日志的 Release 端点 key |
删除范围仅为当前 Release 与该 endpointKey 的日志,其他端点的日志保留。接口验证 Release 归属,不检查端点配置是否存在;没有匹配日志也返回成功。此操作不关闭调试模式,后续请求仍可产生新日志。
响应(200)
{ "success": true }常见错误:先验证身份和项目权限,再校验业务参数。
| 状态码 | 条件 |
|---|---|
400 | 缺少 endpointKey |
401 | 未认证或凭据失效 |
403 | 已通过凭据验证但不是用户会话(User session token required);或项目可见但没有 write 权限(项目写权限不足) |
404 | 项目不存在或不可见(项目不存在或无权访问);或 Release 不存在、已删除或不属于该项目(Release 不存在) |
500 | 清空日志或服务端操作失败 |
PATCH /projects/:projectId/releases/:releaseId/endpoints/:endpointKey/debug
切换端点调试模式。
认证与权限:仅接受 JWT 用户会话,调用者必须具有目标项目的 write 权限。API Key、Agent Token 和 OAuth Token 不作为本接口的用户会话凭据。
路径参数
| 参数 | 说明 |
|---|---|
projectId | 项目 ID |
releaseId | Release ID |
endpointKey | Release 端点 key |
请求体:JSON 对象,debug 为必填布尔值。
{ "debug": true }true 开启调试,false 关闭调试。仅更新该端点的 settings.debug。关闭调试不会删除已有日志;要清空历史记录,使用上面的 DELETE 接口。
响应(200)
{ "success": true }常见错误:先验证身份和项目权限,再校验业务参数。
| 状态码 | 条件 |
|---|---|
400 | 请求体不是合法 JSON;或 JSON 对象中 debug 缺失或不是布尔值 |
401 | 未认证或凭据失效 |
403 | 已通过凭据验证但不是用户会话(User session token required);或项目可见但没有 write 权限(项目写权限不足) |
404 | 项目不存在或不可见(项目不存在或无权访问);Release 不存在、已删除或不属于该项目;或端点配置不存在 |
409 | Release 已被并发修改(Release 已被其他修改更新,请刷新后重试) |
500 | 更新或服务端操作失败 |
GET /projects/:projectId/releases/documents
可发布文档列表
认证:JWT Bearer Token、API Key 或 Agent Token(combinedAuth)。 路径参数
| 参数 | 说明 |
|---|---|
projectId | 项目 ID |
请求:无请求体。Query 参数用于分页、过滤、搜索或状态筛选;未传时按后端默认排序与分页返回。
响应:成功时返回列表数据,通常包含 items / data / rows 与分页或统计字段。
常见错误:400 参数非法,401 未认证,403 权限不足,404 资源不存在;服务端或上游异常返回 500。
GET /projects/:projectId/releases/documents/:documentId
获取文档发布状态
认证:JWT Bearer Token、API Key 或 Agent Token(combinedAuth)。 路径参数
| 参数 | 说明 |
|---|---|
projectId | 项目 ID |
documentId | 文档 ID |
请求:无请求体。Query 参数用于分页、过滤、搜索或状态筛选;未传时按后端默认排序与分页返回。
响应:成功时返回目标资源详情、状态或配置对象。
常见错误:400 参数非法,401 未认证,403 权限不足,404 资源不存在;服务端或上游异常返回 500。