Skip to main content
Credentials

更新 Credential

Forward Credentials API 接口说明。

描述

原地更新指定 Vault 下处于 active 状态的 Credential。请求采用 merge 风格的补丁,未传字段保持原值,适合在不重建 Credential 的情况下轮换密钥。Forward 会校验调用方对所属 Vault 的写权限;敏感认证字段只写入,不会在响应中回显。

路径

POST /api/v1/forward/vaults/{id}/credentials/{cred_id}

请求头

头部必选说明
AuthorizationBearer <PAT 或 SAT>
Content-Typeapplication/json

路径参数

参数类型必选说明
idstringVault ID。
cred_idstringCredential ID。

查询参数

参数类型必选说明
identity_idstring仅在操作 Identity 归属资源时使用,非必填;PAT 场景可显式传入,未传时为管理员视角;SAT 场景请签发 Identity 维度凭证且不要显式携带该参数,否则返回 HTTP 400(详见 Identity 归属)。

请求体

请求采用部分更新语义,仅接受 authmetadata,至少提供一个字段。
字段类型必选说明
authobject按当前 Credential 类型部分更新认证信息。提供时必须包含 type,且必须与当前类型一致。
metadataobject | null对现有 metadata 做 merge patch。对象中的 null 删除对应键;顶层 null 清空全部 metadata。created_by 是保留键,不可更新。
Credential 类型、MCP Server URL、环境变量 secret_name 以及 OAuth refresh 配置中的 client_idtoken_endpoint 均不可通过该接口修改。

static_bearer

字段类型必选说明
typestring固定为 static_bearer
tokenstring替换 Bearer token,仅写入,响应不回显。

mcp_oauth

字段类型必选说明
typestring固定为 mcp_oauth
access_tokenstring替换 access token。
expires_atstring | nullRFC 3339 时间;null 清除过期时间。
refreshobject部分更新既有 refresh 配置。不能给原本没有 refresh 配置的 Credential 新增该配置。
refresh 对象支持:
字段类型必选说明
refresh_tokenstring替换 refresh token。
scopestring | null替换或清除 scope。
token_endpoint_authobject更新 token endpoint 的认证配置。

environment_variable

字段类型必选说明
typestring固定为 environment_variable
secret_valuestring替换密文值,仅写入,响应不回显。

示例请求

curl -X POST "https://api.qoder.com.cn/api/v1/forward/vaults/vault_xxx/credentials/vcred_xxx" \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "auth": {
      "type": "static_bearer",
      "token": "new-secret-token"
    },
    "metadata": {
      "rotated_by": "console"
    }
  }'

示例响应

HTTP 200 OK
{
  "id": "vcred_xxx",
  "type": "vault_credential",
  "vault_id": "vault_xxx",
  "auth": {
    "type": "static_bearer",
    "mcp_server_url": "https://mcp.example.com"
  },
  "display_name": "",
  "metadata": {
    "rotated_by": "console"
  },
  "archived_at": null,
  "created_at": "2026-07-23T10:00:00Z",
  "updated_at": "2026-08-27T12:00:00Z"
}
响应为 Vault credential 对象,所有 token、secret 等密文字段均不回显。
Credential 更新具有 write-only 属性。若客户端没有收到成功响应,后续 GET 只能读取脱敏状态,不能证明本次密钥是否已生效,因此不要自动重试密钥更新。

错误码

HTTPtype触发条件
400invalid_request_error请求体或路径参数非法,包括没有可更新字段、包含不支持字段、auth.type 缺失或与当前类型不一致、字段值非法,或对没有 refresh 配置的 Credential 修改 refresh
400invalid_request_error传入保留键 created_by 时,messagemetadata key "created_by" is reserved
401authentication_error缺少或无效的认证令牌。
403permission_error当前调用方无权访问所属 Vault 或 Credential。
404not_found_errorVault/Credential 不存在或不可见。
409conflict_errorVault 或 Credential 已归档,或资源状态冲突。
500/502/503api_errorForward 或依赖服务失败。
Credential 请求中的认证信息属于敏感数据。部分详细校验消息会被替换为统一的脱敏文案,HTTP 状态码和错误 type 保持不变。