跳转至正文

Capgo 公开 API 列表:完整开发者参考

获取完整的 Capgo 公共 API 列表,包含端点详情、身份验证方法、请求示例,以及 CapacitorJS 实时更新的集成指南。

Capgo 公开 API 列表:完整开发者参考

你可能正面对一条部署 pipeline:手动操作时能跑通,但团队一旦需要可重复的发布,它就会变得很脆弱。开发者创建一个 bundle,从笔记本上传,检查 dashboard,切换 channel,然后等待采用率数据。这种流程在小型项目中或许能撑住,但当多个 App、环境和部署任务共用同一套基础设施时,就会带来本可避免的风险。

一份实用的公共 API 列表不应只回答“有哪些端点?”,还应说明身份验证、资源标识符、发布状态、配额、headers、重试和批量工作流如何协同。本指南从这一运维视角介绍 Capgo API,其中的模式适用于构建 CI/CD 自动化的 Capacitor 团队,而不是只做孤立测试请求。

目录

了解 Capgo API 身份验证

首次集成时最常见的错误是发送了格式错误的凭据。从 dashboard 复制的 key 并不等同于 bearer token,如果请求中缺少 Authorization header 或使用了错误的 scheme,bearer token 也无法生效。服务器会在评估 endpoint、payload 或 app identifier 之前,先返回身份验证失败。

首先确认当前的 Capgo API 文档中如何定义该凭据,然后完全复现其示例请求。在典型的 bearer-token 请求中,authorization header 遵循以下模式:

Authorization: Bearer YOUR_TOKEN

本地测试时,请将凭据保存在环境变量中。在 CI/CD 中,应通过平台的 secret store 注入凭据,切勿将其提交到代码仓库、放入 mobile bundle 或添加到 query string 中。移动应用绝不能包含管理凭据,因为任何发布到设备上的内容最终都可能被破解。

一个人在白色书桌前使用笔记本电脑,同时在机械键盘上打字。

将身份与授权分离

身份验证(Authentication)确定请求者的身份,而授权(Authorization)决定该身份可以执行哪些变更。在设计部署服务时,请将这两者视为独立的检查环节。

个人密钥在探索阶段很方便,但会把生产自动化绑定到个人账号上。对于共享 pipeline,团队管理的密钥更合适,前提是组织能够撤销并更换密钥而不影响其他任务。在 dashboard 和权限模型支持这种分离的情况下,请为开发、预发布和生产工作流使用独立的凭据。

在调用发布端点之前,请先测试一个低风险的读取操作。确认以下各项:

  • 主机地址正确: 使用文档中针对当前环境指定的 API base URL。
  • Header 完整: 包含必要的 authorization scheme 以及 Accept 用于 JSON 响应的 header。
  • Body 编码正确: 仅在 Content-Type: application/json 请求包含 JSON 时发送。
  • Scope 足够: 具备读取应用元数据权限的凭据,可能不具备创建或发布版本的权限。
  • 响应已安全记录: 记录状态码和请求标识符,但需脱敏密钥、token、bundle 内容及敏感设备数据。

公开的 API 目录已从简单的列表演变为运维发现工具。 ProgrammableWeb 的历史记录 描述了一个在 2018 年 1 月 通过了 19,000 个 API 审核的目录,此前 2017 年新增了 2,294 个 API 且自 2014 年 1 月以来 平均每年新增超过 2,000 个。这段历史解释了为什么现代公开 API 列表必须帮助工程师评估集成行为,而不仅仅是查找 URL。

有关客户端访问控制的相关注意事项,请参阅 Capgo 应用授权模式。原则是一致的:将管理凭据保留在受信任的服务器上,谨慎定义权限,并确保授权失败时易于诊断。

生成您的 API 凭据

凭据创建应被视为访问管理变更,而非随意的设置步骤。Dashboard 标签可能会有所变化,请以当前的 Capgo 界面和文档为准,但工作流保持一致。

按用途创建密钥

进入组织或账号设置区域,找到 API 或开发者凭据界面,并选择创建密钥的操作。为密钥命名时请注明其用途,例如 staging 部署 pipeline 或 production 发布 worker。避免仅使用个人身份命名,因为团队变动后所有权会变得模糊。

为该工作流选择权限最小化的配置。仅需读取部署状态的任务不应拥有删除应用或修改 channel 的权限。如果界面同时提供组织级和应用级作用域,请优先选择能满足任务需求的最小边界。

在 Dashboard 显示时立即复制 Secret。许多凭据系统仅在创建时显示完整值。请将其存入 CI/CD secret manager,然后在 pipeline 中测试检索功能,切勿打印出该值。本地 .env 文件可以在开发过程中提供帮助,但必须将其排除在版本控制之外,且绝不能将其打包进 Capacitor web 目录。

截图来自 https://capgo.app

在不造成停机的情况下进行轮换

轮换凭据时请保持重叠期。先将新凭据添加到 secret store,部署使用该凭据的 pipeline 配置,运行一次无害的身份验证读取操作,最后再撤销旧密钥。如果服务支持多个活动密钥,请保留旧值,直到所有 worker 和定时任务都已迁移完成。

对于团队而言,应在内部访问登记簿中记录密钥所有者、用途、环境、创建日期和撤销流程。不要将密钥本身存入该登记簿。这样既能让事件响应变得切实可行,又不会让文档变成另一个秘密存储库。

该 英国政府 API 标准 建议尽早设计 OpenAPI 文档、验证输入、拒绝未知属性、使用 TLS 1.2 或更高版本,并应用 OAuth 2.0 进行访问控制。即使集成时使用 API 密钥,这些原则依然适用:在构建自动化之前定义契约,拒绝异常输入,并将传输安全视为核心要素。

关于 pipeline 存储和轮换模式,请使用 Capgo 关于在 CI/CD pipeline 中管理 secrets 的指南.

App 管理核心 Endpoints

应用管理是后续所有操作的控制平面。无论是创建 Release、分配 Channel、分发 Bundle 还是进行诊断,都需要一个稳定的应用标识符。常见的错误是在每个任务中都传递人类可读的应用名称,并假设它始终保持唯一。正确的做法是仅解析一次应用,持久化其规范标识符,并在后续操作中始终使用该标识符。

生产环境的集成应围绕以下四项能力来构建应用生命周期模型:

运维 HTTP 意图 集成关注点
列出应用 GET 分页、组织范围、稳定标识符
获取单个应用 GET 配置版本与部署关系
更新配置 PATCH 或文档中指定的更新方法 局部变更与全量替换
删除应用 DELETE 此操作不可逆,需经过审批和审计控制

不要根据博客文章或旧的 SDK 来凭空猜测 endpoint 路径。请阅读当前的机器可读定义,并基于该契约生成类型化的 client 或请求封装器。 OpenAPI 规范 为 HTTP API 提供了一种与编程语言无关的描述格式,让开发者和工具无需检查源代码 code 或网络流量,即可发现 endpoint、身份验证、请求 schema、响应及行为。

构建以标识符为核心的工作流

部署 worker 在执行 mutation 之前应当先执行 read 操作:

  1. 解析 organization 和 application 上下文。
  2. 获取 app 记录并确认其属于预期的 account。
  3. 将预期的 platform 和 environment 与返回的配置进行比对。
  4. 在 job 状态中存储规范的 app identifier。
  5. 使用该 identifier 提交 release 或配置变更。
  6. 持久化响应标识符,以便后续轮询和诊断。

这一流程可以防止一类代价极高的错误:即由于 pipeline 变量指向了旧项目,导致有效的 key 更新到了错误的 App 上。在允许写入之前,应添加明确的环境断言,例如要求 staging job 必须指向 staging app。

使用响应 Schema 而非松散的 JSON 访问。如果 API 返回的 app 对象包含 identifier、name、status 和 configuration 字段,请校验 job 所需的字段并兼容无关的字段变更。拒绝未知的请求属性可以防止因拼写错误的配置 key 导致误发,而兼容的响应解析则能帮助客户端应对非破坏性的响应扩展。

在设计回滚机制时,请将 App 身份与 Release 身份分离。 Capgo 的版本控制与回滚文档 是相关的运维参考。回滚应当选择一个已知的良好 Release 或 Channel 状态,而不是凭记忆重新创建应用配置。

创建与管理 Release

即使 upload 成功,生产环境的 release 也可能失败。可能的情况包括:artifact 已正确存储但处理未完成、尚未进行 channel 分配,或者符合条件的设备尚未收到 update。应将工作流视为一系列可观测的状态变更,并为每项操作提供持久化标识符和重试方案。

准备 release payload

请使用当前的 Capgo schema 来定义属性名、请求路径和必填字段。如果从名称相似的 endpoint 复制请求体,可能会导致部分接受或因意外原因被拒绝。从实际操作层面看,payload 包含以下三个部分:

  • 应用身份 (Application identity): 由相关控制平面 (control-plane) 操作返回的应用标识符。
  • 发布元数据 (Release metadata): API 所需的版本、bundle identity、build context 以及兼容性信息。
  • 分发意图 (Distribution intent): 当发布操作支持时,指定的 channel 或 rollout context。

发送前请先校验 bundle。检查 Capacitor build 是否包含预期的 web assets,版本是否与 CI 元数据匹配,并确保任务没有读取到正在写入中的文件。如果 API 支持校验和,请计算本地 checksum。在部署记录中保留 build URL、commit reference 以及服务器生成的 release identifier,以便后续任务关联 upload、处理和分发事件。

可靠的操作流程如下:

  1. 在干净的工作区 (clean workspace) 中构建应用。
  2. 运行单元测试、集成测试以及平台特定的检查。
  3. 通过文档说明的发布操作创建或 upload bundle。
  4. 轮询返回的 operation 或 release 资源,直到其进入终态。
  5. 将已完成的 release 关联到目标 channel。
  6. 在 promotion 前检查 adoption 和失败信号。

upload 响应只表示服务已接收,并不代表已送达用户。处理状态、设备资格、连接情况和 channel 成员关系仍决定更新能否到达设备。

确保重试安全

超时无法判断服务器是拒绝了请求,还是在连接断开前已完成请求。因此,重新提交相同的 release 可能造成重复或版本冲突。如果 Capgo 支持幂等键,请使用。若不支持,请在重试 mutation 前,通过 release 元数据或客户端生成的 build identifier 查询。

批量 upload 需要 item 级状态。将每个 app variant 放入持久队列并独立记录结果。Worker 重试时应只选择未完成的 item,而不是在一次失败后重放整个 batch。如果提供 bulk endpoint,请确认其响应是否包含每个 item 的结果。一个聚合成功状态可能掩盖失败的 variant,而一个聚合错误也可能掩盖已完成的工作。

操作规范: 立即存储服务器返回的 release identifier,之后用该 identifier 进行处理检查、channel 分配和诊断。

Rate limits 同时影响 upload 和轮询。 API 限流指南 请注意,配额应反映正在执行的操作,且客户端需要可用的 header 和重试机制。应对发布创建、状态轮询、搜索和敏感变更进行分类处理。如果轮询循环以 upload 速度进行重试,可能会耗尽执行纠正操作所需的配额。

当返回 rate-limit headers 时请读取它们,遵循服务器提供的重试间隔,若缺失则使用递增延迟。添加 jitter(抖动)以防止多个 CI worker 同时重试。限制轮询范围,在终止状态时停止,并在移除凭据和 token 后将最终响应体记录到 CI logs 中。如果有人取消了部署,请记录操作者或自动化任务、当前的 release 状态,以及 artifact 是否仍可用于后续重试。

Channel 策略与发布模式

Channel 设计是一项发布治理决策,而不仅仅是命名练习。Staging、beta 和 production channel 面向不同的受众,应具备不同的晋升规则。选择方案取决于 bundle 中仍存在多少不确定性,以及团队需要多快获得反馈。

渠道 受众 验证内容 晋升决策
Staging 内部设备与测试账号 安装、迁移、原生兼容性、logs 技术检查通过
Beta 选定的早期访问用户 真实场景行为、支持反馈、更新采用率 无阻断性回归
正式版 普通用户 稳定性、诊断能力、回滚就绪度 由发布负责人审批

Staging channel 应当具备确定性。分配已知的测试设备或账号,防止该 channel 被随意改动,并确保 CI 仅在通过必要检查后才进行晋升。当需要模拟生产环境流量时,Beta 非常有用,但它需要明确的受众定义和故障报告支持流程。Production 应当是平稳的:发布版本已通过前期所有关卡,回滚目标明确,且监控已接入。

API 工作流应当体现这些边界。Pipeline 可以一次性创建 release,将其分配给 staging,并在验证通过后晋升同一个 release 对象。在不同 channel 之间重新 build 会削弱可追溯性,因为团队测试的 artifact 可能与分发给用户的 artifact 不一致。

当前的 API 生态系统也表明,维护质量与生态广度同样重要。 API 追踪器 展示了海量的 API 和开发者资源,但围绕公开 API 汇总的评论也指出,当条目涵盖金融、政府、医疗、机器学习、天气和交通等领域时,维护负担会变得非常沉重。Channel 目录也面临同样的问题:过时的条目和不明确的所有权,使得庞大的列表反而不如一个规模较小但维护良好的列表实用。

有关受控测试的实现细节,请参阅 带有 channel 的 Capgo staging 环境。核心模式是将 channel 的迁移变为一个带有审批边界的显式 API 操作,而不是允许任何 build job 直接写入生产环境。

监控与诊断端点

当 API 返回成功响应时,部署并未真正完成。只有当团队能够解释哪些设备发现了、下载了、安装了该版本并持续成功运行,部署才算完成。这需要一个将 release 标识符、channel 成员身份、设备记录、logs 和采用数据连接起来的工作流。

首先在你的部署系统中建立关联记录。存储 app 标识符、release 标识符、channel、commit 引用、build 元数据、请求时间戳以及最终的 API 状态。当收到支持报告时,运维人员应该能够直接从受影响的设备跳转到其对应的 channel 和 release,而无需在非结构化的 CI logs 中进行搜索。

在聚合之前先进行精确查询

诊断接口通常支持按时间范围、channel、设备、platform 或 release 进行过滤。请使用能解决当前问题的最精确过滤器。针对整个安装基数进行宽泛查询会导致速度变慢、难以解读,且更容易触发分页或配额限制。

一个实用的排查流程如下:

  • Release 视图: 检查预期的 release 是否存在,并已到达目标 channel。
  • Adoption 视图: 对比符合条件的设备与已发现或已安装更新的设备。
  • Failure 视图: 按 release、platform、设备类型及安装阶段对错误进行分组。
  • Device 视图: 仅在聚合模式显示为本地问题时,才针对特定设备检查 logs。
  • Incident 视图: 保留原始响应以及排查时使用的查询参数。

不要仅凭采用率低就断定 bundle 已损坏。设备可能处于离线状态、被排除在 channel 之外、运行版本不兼容,或者正在等待应用的更新检查。反之,高下载量也并不代表启动成功。只要 API 能暴露这些状态,就应将发现、下载、安装和运行时健康状况区分开来。

将诊断信息与自动化结合

可以通过定时 worker 查询发布状态,当发布处于非终态的时间超过 pipeline 允许的范围时触发告警。另一个 worker 可以收集失败记录、规范化错误码,并将其关联至部署工单。保持告警负载简洁,并附上指向该发布、channel 及过滤后的诊断查询的链接。

身份验证和错误处理应与端点调用处于同一客户端层。worker 应根据凭据策略刷新或更换凭据,将授权失败与请求格式错误分开分类,并保留 429 响应以进行重试调度,而不是将其视为通用的服务器错误。

严格按照规范使用分页游标或文档说明的 offset。批量诊断任务必须在分页之间保持位置,避免重复请求第一页。如果查询运行时记录会发生变化,请使用稳定的时间边界或发布过滤器,以确保生成的报告具有可复现性。

速率限制与安全响应头

生产环境客户端在选择重试路径前应检查响应头。捕获 X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After,以及任何已记录的 RateLimit-* fields in the API client middleware. Pass them to the retry controller and structured logs. Do not hard-code quotas that may differ by account, endpoint, or operation.

两者之间的区别在于 容量信息 和 重试指令 决定了下一次请求。remaining-count 响应头会显示客户端距离限制还有多近。 Retry-After 指定了服务器允许再次尝试的时间。如果存在该指令,请遵循该指令。如果响应未提供时间指导,请使用带有抖动(jitter)的指数退避算法(bounded exponential backoff)并设置固定的尝试次数限制。

现代数据中心内带有蓝色线缆和闪烁状态指示灯的服务器机架列。

保护管理面

将 Capgo 管理请求保留在受信任的后端或 CI runner 上。Capacitor 应用可以调用面向应用的窄范围服务,但不应接收任何能够修改 release、channel 或组织资源的凭据。强制执行 TLS,验证请求体,并从 trace 和错误报告中移除 authorization header。

按操作应用独立的控制措施。在安全的情况下,缓存或合并只读元数据请求。为 upload、export、登录尝试和 release 变更设置独立的限制。当 API 支持批量操作时,请批量处理独立的元数据读取,并根据批次的请求和项目限制进行计算,而不是假设一个批次仅消耗一个单位。正如在...中所述,基于行为的控制也有助于检测分布式滥用模式。 速率限制安全指南.

为每个请求设置超时,并区分传输故障与 HTTP 响应。超时会导致 mutation 的结果未知,因此在重试前请先查询其状态。 429 响应是明确的服务端反馈,客户端应根据响应头来安排下一次尝试。

对于 Capacitor 部署, Capgo 关于符合 App Store 合规性的 API 速率限制指南 提供了相关的操作参考。请保护好凭证隐私,遵循服务端响应头,并确保重试过程是可观测的,而非静默失败。

常见 API 错误排查

大多数失败可归为三类:身份验证、校验和限流。在修改 code 之前,请先诊断所属类别。响应状态、结构化错误体及相关响应头通常足以提供决策依据。

身份验证失败情况

一个 401 或等效的授权响应通常意味着凭证缺失、格式错误、已过期、已撤销或使用了错误的 scheme。请检查实际 CI 作业中的环境变量,而不仅仅是本地 shell。确认请求包含当前 API 文档中完全一致的 header 格式,然后通过只读操作测试凭证。

如果响应表明是权限不足而非身份无效,请将其视为授权问题。请联系组织管理员检查密钥范围、应用访问权限及环境。不要通过分发权限过大的个人密钥来解决权限错误。

请求体无效

验证响应意味着服务器已收到请求,但拒绝了其结构或数值。请将 payload 与当前 schema 进行对比,重点检查必填字段、类型、枚举值、嵌套对象及标识符。请直接移除不支持的字段,而不是寄希望于服务会自动忽略它们。

记录脱敏后的 payload 以及响应中的字段级错误。在 CI 中加入 schema 验证,确保格式错误的 release 元数据在开始 upload 之前就会失败。如果操作是局部更新,请确认该 endpoint 预期的是 patch 风格的 body 而非完整的替换。

限流与模糊的 mutation

一个 429 意味着 worker 必须停止发送请求,并遵循服务器的重试指南。请遵守 Retry-After (如果存在),在计算回退延迟时应用 jitter,以防止多个并发 worker 在同一瞬间进行重试。

对于 upload 或创建 release 过程中的超时,不要立即提交另一个 mutation。尝试使用客户端生成的 build 引用或返回的 identifier 来查询或检索该操作。如果无法获取 identifier,请咨询 API 文档中提到的支持或幂等机制,以确认原始请求是否已完成。这可以避免重复发布,并确保最终部署记录的可靠性。


Capgo 提供了一套公开的 REST API,用于管理应用交付资源、版本、渠道、设备及相关的部署工作流,方便团队将 Live Update 操作接入现有的 CI/CD 和监控系统。请查阅当前的 Capgo 文档,创建一个权限最小化的测试凭据,并在实现生产环境自动发布前,验证完整的发布与回滚流程。

为 Capacitor 应用提供实时更新

当 Web 层 Bug 已上线时,通过 Capgo 推送修复,不必等 App Store 审核数天。用户会在后台获取更新,而原生变更仍走常规审核流程。

博客最新文章

Capgo 为你提供打造真正专业移动应用所需的深度洞察。