2026-10-20
(待译)
Vault stores write-only credentials through /vault/v1, with a compatibility face at /anthropic/v1/vaults. Concepts and behavior follow Anthropic vaults (credential collections, write-only values, rotation and archival), so Anthropic experience applies. Differences: native secrets use names and static/oauth kinds; native OAuth uses authorizations, while compatible mcp_oauth creation and updates return 501; explicit allowed_hosts are required, with no unrestricted mode; Agent sessions reject nonempty vault_ids, so vault-backed MCP authentication is unavailable; application vault references return 501, including praxis_vault_ref bindings and secret writes with a vault source. Metadata labels do not attach credentials to either resource. Start with praxis.vault.vaults.create to create the containing vault.
用 API Key 作为 Bearer 凭据,通过以下地址管理库与 Secret。Secret 的值只写,任何接口都不会返回。
https://api.deepraxis.ai/vault/v1
| 资源 | 路径 |
|---|---|
| 库 | /vault/v1/vaults |
| Secret | /vault/v1/vaults/{vault_id}/secrets |
| 模板 | /vault/v1/templates |
| 一键授权 | /vault/v1/authorizations |
Secret 可以用名字或 vsec_ 开头的 ID 寻址。列表用 cursor 与 limit 翻页(limit 默认 50,最大 200),返回的 next_cursor 为 null 表示没有后续页。
同一批库也可以通过 Claude 托管智能体的凭据库接口访问:Claude 托管智能体
创建和管理库,检查可用状态,并查询不含 Secret 值的审计事件。
审计事件按时间倒序列出,可用 secret 按名称或 ID 过滤;未知 Secret 返回空列表。limit 默认 50、最大 200;超限或无效 cursor 返回 400 INVALID_PARAMS。事件没有按天自动过期的保留期;归档保留事件,删除库或 Secret 会清除其历史事件,仅保留删除记录。
GET /vault/v1/vaults
| 参数 | 位置 | 说明 |
|---|---|---|
| cursor | query | 上一页返回的 next_cursor。 |
| limit | query | 每页条数。 (默认: 50) (1–200) |
| include_archived | query | 是否包含已归档的条目。 (默认: false) |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | Vault[] | 是 | 条目数组 |
| data[].id | string | 是 | 对象标识符 |
| data[].type | "vault" | 是 | 对象类型 |
| data[].display_name | string | 是 | 显示名称,1–255 个字符 |
| data[].metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| data[].status | "active" / "archived" | 是 | 状态 |
| data[].secret_count | integer | 是 | 有效 Secret 数 |
| data[].needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| data[].created_at | date-time | 是 | 创建时间 |
| data[].updated_at | date-time | 是 | 更新时间 |
| data[].archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
| next_cursor | string / null | 是 | 下一页游标;没有后续时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/vaults" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 否 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault" | 是 | 对象类型 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| status | "active" / "archived" | 是 | 状态 |
| secret_count | integer | 是 | 有效 Secret 数 |
| needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"display_name":"Agent credentials"}'POST /vault/v1/vaults:check
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| vault_ids | string[] | 是 | 要检查的库 ID |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | object[] | 是 | 条目数组 |
| data[].vault_id | string | 是 | 库 ID |
| data[].status | "ok" / "not_found" / "archived" | 是 | 状态 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults:check" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"vault_ids\":[\"${VAULT_ID}\"]}"GET /vault/v1/vaults/{vault_id}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault" | 是 | 对象类型 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| status | "active" / "archived" | 是 | 状态 |
| secret_count | integer | 是 | 有效 Secret 数 |
| needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| display_name | string | 否 | 显示名称,1–255 个字符 |
| metadata | object | 否 | 按键合并:字符串写入,null 删除,省略的键保留;自定义标签最多 16 对 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault" | 是 | 对象类型 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| status | "active" / "archived" | 是 | 状态 |
| secret_count | integer | 是 | 有效 Secret 数 |
| needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"metadata":{"team":"growth"}}'DELETE /vault/v1/vaults/{vault_id}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_deleted" | 是 | 对象类型 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
curl -X DELETE "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/archive
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault" | 是 | 对象类型 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| status | "active" / "archived" | 是 | 状态 |
| secret_count | integer | 是 | 有效 Secret 数 |
| needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/archive" \
-H "Authorization: Bearer $PRAXIS_API_KEY"GET /vault/v1/vaults/{vault_id}/events
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | query | Secret 名称或 vsec_ 开头的 ID。 |
| cursor | query | 上一页返回的 next_cursor。 |
| limit | query | 每页条数。 (默认: 50) (1–200) |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | VaultEvent[] | 是 | 条目数组 |
| data[].id | uuid | 是 | 对象标识符 |
| data[].type | "vault.created" / "vault.updated" / "vault.archived" / "vault.deleted" / "vault_secret.created" / "vault_secret.updated" / "vault_secret.archived" / "vault_secret.deleted" / "vault_secret.used" / "vault_secret.refreshed" / "vault_secret.refresh_failed" / "vault_authorization.completed" / "vault_authorization.failed" / "vault_authorization.expired" | 是 | 对象类型 |
| data[].secret_id | string / null | 是 | 关联的 Secret ID;未关联时为 null |
| data[].secret_name | string / null | 是 | 关联的 Secret 名称 |
| data[].at | date-time | 是 | 事件或错误发生时间 |
| data[].detail | object / null | 是 | 事件详情,不含 Secret 值;更新事件的 changed 列出变更字段 |
| data[].detail.changed | string[] | 否 | 本次更新的字段名,例如 value、allowed_hosts |
| next_cursor | string / null | 是 | 下一页游标;没有后续时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/events" \
-H "Authorization: Bearer $PRAXIS_API_KEY"| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault" | 是 | 对象类型 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| status | "active" / "archived" | 是 | 状态 |
| secret_count | integer | 是 | 有效 Secret 数 |
| needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | Vault[] | 是 | 条目数组 |
| data[].id | string | 是 | 对象标识符 |
| data[].type | "vault" | 是 | 对象类型 |
| data[].display_name | string | 是 | 显示名称,1–255 个字符 |
| data[].metadata | object | 是 | 自定义标签最多 16 对,键最长 64 字符,值最长 512 字符 |
| data[].status | "active" / "archived" | 是 | 状态 |
| data[].secret_count | integer | 是 | 有效 Secret 数 |
| data[].needs_reauthorization_count | integer | 是 | 续期失败、需要重新授权的 OAuth Secret 数 |
| data[].created_at | date-time | 是 | 创建时间 |
| data[].updated_at | date-time | 是 | 更新时间 |
| data[].archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
| next_cursor | string / null | 是 | 下一页游标;没有后续时为 null |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | uuid | 是 | 对象标识符 |
| type | "vault.created" / "vault.updated" / "vault.archived" / "vault.deleted" / "vault_secret.created" / "vault_secret.updated" / "vault_secret.archived" / "vault_secret.deleted" / "vault_secret.used" / "vault_secret.refreshed" / "vault_secret.refresh_failed" / "vault_authorization.completed" / "vault_authorization.failed" / "vault_authorization.expired" | 是 | 对象类型 |
| secret_id | string / null | 是 | 关联的 Secret ID;未关联时为 null |
| secret_name | string / null | 是 | 关联的 Secret 名称 |
| at | date-time | 是 | 事件或错误发生时间 |
| detail | object / null | 是 | 事件详情,不含 Secret 值;更新事件的 changed 列出变更字段 |
| detail.changed | string[] | 否 | 本次更新的字段名,例如 value、allowed_hosts |
添加、导入和更新 Secret;值只写,校验与续期仅用于 OAuth Secret。
导入同名 Secret 只替换值;只有该行自己的 allowed_hosts 才能改变原域名,顶层默认域名不覆盖已有域名。新建行优先使用该行域名,否则使用顶层默认域名。逐行失败在 HTTP 200 的 failed 中返回(包括 SECRET_TOO_LARGE、VAULT_LIMIT_EXCEEDED、INVALID_PARAMS),其它行仍然写入。用非法名称查找 Secret 返回 404 SECRET_NOT_FOUND。
GET /vault/v1/vaults/{vault_id}/secrets
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| cursor | query | 上一页返回的 next_cursor。 |
| limit | query | 每页条数。 (默认: 50) (1–200) |
| include_archived | query | 是否包含已归档的条目。 (默认: false) |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | Secret[] | 是 | 条目数组 |
| data[].id | string | 是 | 对象标识符 |
| data[].type | "vault_secret" | 是 | 对象类型 |
| data[].vault_id | string | 是 | 库 ID |
| data[].name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| data[].kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| data[].allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| data[].description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| data[].metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| data[].status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| data[].oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| data[].oauth.expires_at | date-time / null | 是 | 过期时间 |
| data[].oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| data[].oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| data[].oauth.scope | string / null | 是 | 授权范围 |
| data[].oauth.last_error | object / null | 是 | 最近一次续期失败 |
| data[].oauth.last_error.code | string | 是 | 稳定的错误码 |
| data[].oauth.last_error.message | string | 是 | 可读的错误说明 |
| data[].oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| data[].version | integer | 是 | 值每次变化时递增 |
| data[].last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| data[].created_at | date-time | 是 | 创建时间 |
| data[].updated_at | date-time | 是 | 更新时间 |
| data[].archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
| next_cursor | string / null | 是 | 下一页游标;没有后续时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/secrets
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| value | string | 是 | Secret 的值,只写,不会返回;最大 16 KiB |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 否 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 否 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| template_id | "github" / "openai" / "anthropic" / "stripe" | 否 | 仅支持 static 模板 ID;记录为 metadata.template |
| kind | "static" | 否 | 只能为 static;OAuth Secret 通过一键授权创建 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
| SECRET_CONFLICT | 409 | 创建时名称已占用;更换名称或更新已有 Secret | validation_failure | none | 否 |
| VAULT_LIMIT_EXCEEDED | 400 | 超过有效 Secret 数量上限;先清理不用的 Secret | validation_failure | none | 否 |
| SECRET_TOO_LARGE | 413 | 值超过 16384 字节;缩小值后重试 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"GITHUB_TOKEN","value":"ghp_example","allowed_hosts":["api.github.com"]}'POST /vault/v1/vaults/{vault_id}/secrets:import
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| lines | ImportLine[] | 否 | 逐行导入的 Secret |
| lines[].name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| lines[].value | string | 是 | Secret 的值,只写,不会返回;最大 16 KiB |
| lines[].allowed_hosts | string[] | 否 | 新建时用本行域名或导入的默认域名;替换时仅本行显式 allowed_hosts 才会更新域名 |
| dotenv | string | 否 | .env 格式的 KEY=VALUE 文本;与 lines 二选一 |
| allowed_hosts | string[] | 否 | 新建时用本行域名或导入的默认域名;替换时仅本行显式 allowed_hosts 才会更新域名 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| created | string[] | 是 | 新建的 Secret 名称 |
| replaced | string[] | 是 | 被替换的 Secret 名称 |
| failed | object[] | 是 | 失败的行 |
| failed[].line | integer | 是 | 失败行号,从 1 开始 |
| failed[].name | string / null | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| failed[].code | "VAULT_NOT_FOUND" / "SECRET_NOT_FOUND" / "AUTHORIZATION_NOT_FOUND" / "SECRET_CONFLICT" / "VAULT_INVALID_STATE" / "VAULT_LIMIT_EXCEEDED" / "INVALID_PARAMS" / "SECRET_KIND_MISMATCH" / "VALIDATE_UNSUPPORTED" / "SECRET_TOO_LARGE" / "RATE_LIMITED" / "AUTHORIZATION_EXPIRED" / "OAUTH_DISCOVERY_FAILED" / "OAUTH_REGISTRATION_UNSUPPORTED" / "OAUTH_ISSUER_MISMATCH" / "OAUTH_STATE_INVALID" / "OAUTH_EXCHANGE_FAILED" / "NOT_IMPLEMENTED" | 是 | 稳定的错误码 |
| failed[].message | string | 是 | 可读的错误说明 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets:import" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"dotenv":"OPENAI_API_KEY=sk-example\nLINEAR_API_KEY=lin_example","allowed_hosts":["api.openai.com","api.linear.app"]}'GET /vault/v1/vaults/{vault_id}/secrets/{secret}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/secrets/{secret}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| value | string | 否 | Secret 的值,只写,不会返回;最大 16 KiB |
| allowed_hosts | string[] | 否 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 否 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 否 | 按键合并:字符串写入,null 删除,省略的键保留;source、template 为保留键 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
| SECRET_TOO_LARGE | 413 | 值超过 16384 字节;缩小值后重试 | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"ghp_rotated"}'DELETE /vault/v1/vaults/{vault_id}/secrets/{secret}
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret_deleted" | 是 | 对象类型 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
curl -X DELETE "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/secrets/{secret}/archive
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN/archive" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/secrets/{secret}/validate
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| type | "vault_secret_validation" | 是 | 对象类型 |
| secret_id | string | 是 | 关联的 Secret ID;未关联时为 null |
| vault_id | string | 是 | 库 ID |
| validated_at | date-time | 是 | 校验时间 |
| has_refresh_token | boolean | 是 | 是否保存了刷新令牌 |
| status | "valid" / "invalid" / "unknown" | 是 | 状态 |
| probe | object | 是 | 探测请求 |
| probe.method | "GET" | 是 | 探测方式,当前为 GET |
| probe.http_response | HttpCapture / null | 是 | HTTP 响应摘要;未收到响应时为 null |
| probe.http_response.status_code | integer | 是 | HTTP 状态码 |
| probe.http_response.content_type | string / null | 是 | 响应内容类型,或 null |
| probe.http_response.body | string | 是 | 已脱敏的响应正文 |
| probe.http_response.body_truncated | boolean | 是 | 正文是否被截断 |
| refresh | object | 是 | 续期结果 |
| refresh.status | "succeeded" / "failed" / "connect_error" / "no_refresh_token" / "skipped" | 是 | 状态 |
| refresh.http_response | HttpCapture / null | 是 | HTTP 响应摘要;未收到响应时为 null |
| refresh.http_response.status_code | integer | 是 | HTTP 状态码 |
| refresh.http_response.content_type | string / null | 是 | 响应内容类型,或 null |
| refresh.http_response.body | string | 是 | 已脱敏的响应正文 |
| refresh.http_response.body_truncated | boolean | 是 | 正文是否被截断 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
| VALIDATE_UNSUPPORTED | 400 | 对 static Secret 校验;校验仅支持 OAuth Secret | validation_failure | none | 否 |
| RATE_LIMITED | 429 | 一分钟内超过授权或校验额度;等待下一窗口 | rate_limit | wait_then_retry | 是 |
仅适用于 OAuth Secret。先完成一键授权,并将返回的 secret_id 设为 OAUTH_SECRET_ID;不要使用 static Secret。
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/${OAUTH_SECRET_ID}/validate" \
-H "Authorization: Bearer $PRAXIS_API_KEY"POST /vault/v1/vaults/{vault_id}/secrets/{secret}/refresh
| 参数 | 位置 | 说明 |
|---|---|---|
| vault_id | path | 库 ID。 |
| secret | path | Secret 名称或 vsec_ 开头的 ID。 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| reason | "unauthorized" | 否 | 触发续期的原因 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| SECRET_KIND_MISMATCH | 400 | 对 static Secret 续期或执行不匹配种类的操作;使用 OAuth Secret | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
仅适用于 OAuth Secret。先完成一键授权,并将返回的 secret_id 设为 OAUTH_SECRET_ID;不要使用 static Secret。
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/${OAUTH_SECRET_ID}/refresh" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason":"unauthorized"}'| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_secret" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| description | string / null | 是 | 备注;更新时 null 清除,省略则保留 |
| metadata | object | 是 | 自定义标签最多 16 对;source、template 为系统保留键,不占这 16 对且不能由调用方写入 |
| status | "active" / "refreshing" / "refresh_failed" / "archived" | 是 | 状态 |
| oauth | SecretOAuthSummary / null | 是 | OAuth 摘要;kind 为 static 时为 null |
| oauth.expires_at | date-time / null | 是 | 过期时间 |
| oauth.last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| oauth.next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| oauth.scope | string / null | 是 | 授权范围 |
| oauth.last_error | object / null | 是 | 最近一次续期失败 |
| oauth.last_error.code | string | 是 | 稳定的错误码 |
| oauth.last_error.message | string | 是 | 可读的错误说明 |
| oauth.last_error.at | date-time | 是 | 事件或错误发生时间 |
| version | integer | 是 | 值每次变化时递增 |
| last_used_at | date-time / null | 是 | 最近一次被使用的时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| archived_at | date-time / null | 是 | 归档时间;未归档时为 null |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| expires_at | date-time / null | 是 | 过期时间 |
| last_refreshed_at | date-time / null | 是 | 最近一次续期时间 |
| next_refresh_at | date-time / null | 是 | 下次计划续期时间 |
| scope | string / null | 是 | 授权范围 |
| last_error | object / null | 是 | 最近一次续期失败 |
| last_error.code | string | 是 | 稳定的错误码 |
| last_error.message | string | 是 | 可读的错误说明 |
| last_error.at | date-time | 是 | 事件或错误发生时间 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| value | string | 是 | Secret 的值,只写,不会返回;最大 16 KiB |
| allowed_hosts | string[] | 否 | 新建时用本行域名或导入的默认域名;替换时仅本行显式 allowed_hosts 才会更新域名 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| created | string[] | 是 | 新建的 Secret 名称 |
| replaced | string[] | 是 | 被替换的 Secret 名称 |
| failed | object[] | 是 | 失败的行 |
| failed[].line | integer | 是 | 失败行号,从 1 开始 |
| failed[].name | string / null | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| failed[].code | "VAULT_NOT_FOUND" / "SECRET_NOT_FOUND" / "AUTHORIZATION_NOT_FOUND" / "SECRET_CONFLICT" / "VAULT_INVALID_STATE" / "VAULT_LIMIT_EXCEEDED" / "INVALID_PARAMS" / "SECRET_KIND_MISMATCH" / "VALIDATE_UNSUPPORTED" / "SECRET_TOO_LARGE" / "RATE_LIMITED" / "AUTHORIZATION_EXPIRED" / "OAUTH_DISCOVERY_FAILED" / "OAUTH_REGISTRATION_UNSUPPORTED" / "OAUTH_ISSUER_MISMATCH" / "OAUTH_STATE_INVALID" / "OAUTH_EXCHANGE_FAILED" / "NOT_IMPLEMENTED" | 是 | 稳定的错误码 |
| failed[].message | string | 是 | 可读的错误说明 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| type | "vault_secret_validation" | 是 | 对象类型 |
| secret_id | string | 是 | 关联的 Secret ID;未关联时为 null |
| vault_id | string | 是 | 库 ID |
| validated_at | date-time | 是 | 校验时间 |
| has_refresh_token | boolean | 是 | 是否保存了刷新令牌 |
| status | "valid" / "invalid" / "unknown" | 是 | 状态 |
| probe | object | 是 | 探测请求 |
| probe.method | "GET" | 是 | 探测方式,当前为 GET |
| probe.http_response | HttpCapture / null | 是 | HTTP 响应摘要;未收到响应时为 null |
| probe.http_response.status_code | integer | 是 | HTTP 状态码 |
| probe.http_response.content_type | string / null | 是 | 响应内容类型,或 null |
| probe.http_response.body | string | 是 | 已脱敏的响应正文 |
| probe.http_response.body_truncated | boolean | 是 | 正文是否被截断 |
| refresh | object | 是 | 续期结果 |
| refresh.status | "succeeded" / "failed" / "connect_error" / "no_refresh_token" / "skipped" | 是 | 状态 |
| refresh.http_response | HttpCapture / null | 是 | HTTP 响应摘要;未收到响应时为 null |
| refresh.http_response.status_code | integer | 是 | HTTP 状态码 |
| refresh.http_response.content_type | string / null | 是 | 响应内容类型,或 null |
| refresh.http_response.body | string | 是 | 已脱敏的响应正文 |
| refresh.http_response.body_truncated | boolean | 是 | 正文是否被截断 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| status_code | integer | 是 | HTTP 状态码 |
| content_type | string / null | 是 | 响应内容类型,或 null |
| body | string | 是 | 已脱敏的响应正文 |
| body_truncated | boolean | 是 | 正文是否被截断 |
查询常用服务的模板 ID、Secret 名称、种类和允许域名。
| template_id | kind | 服务 |
|---|---|---|
| github | static | GitHub (api.github.com, uploads.github.com) |
| openai | static | OpenAI |
| anthropic | static | Anthropic |
| stripe | static | Stripe |
| linear | oauth | Linear (CIMD) |
| atlassian | oauth | Atlassian (DCR) |
GET /vault/v1/templates
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| data | VaultTemplate[] | 是 | 条目数组 |
| data[].id | string | 是 | 对象标识符 |
| data[].display_name | string | 是 | 显示名称,1–255 个字符 |
| data[].kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| data[].name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| data[].allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| data[].value_hint | string / null | 是 | 填写提示 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。 没有额外的领域错误。
curl "https://api.deepraxis.ai/vault/v1/templates" \
-H "Authorization: Bearer $PRAXIS_API_KEY"| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| display_name | string | 是 | 显示名称,1–255 个字符 |
| kind | "static" / "oauth" | 是 | static:你填写的值;oauth:授权得到、由平台续期 |
| name | string | 是 | 名称,库内唯一且不可改;1–128 个大写字母、数字或下划线,以字母或下划线开头 |
| allowed_hosts | string[] | 是 | 1–16 个域名、公网 IPv4 或 .example.com;不匹配根域名。拒绝 IPv6、单标签主机、localhost、.internal、平台域名及回环/链路本地/私网/CGNAT IPv4;规范化并去重 |
| value_hint | string / null | 是 | 填写提示 |
让用户授权第三方服务,并管理一次性授权链接与回跳地址。
一键授权为支持 OAuth 的服务产生 kind 为 oauth 的 Secret。发起授权后把 connect_url 交给最终用户;用户在确认页同意并在服务方完成授权后,Secret 写入库中,之后由平台续期。确认页、回调与客户端元数据三个地址不需要 API Key。
POST /vault/v1/authorizations
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| vault_id | string | 是 | 库 ID |
| template_id | "linear" / "atlassian" | 否 | 支持授权的模板 ID;与 resource_url 二选一 |
| resource_url | string | 否 | 要授权的资源地址,例如 MCP 服务地址 |
| return_url | string | 否 | 授权结束后回到的地址;须在回跳地址白名单内 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_authorization" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| status | "pending" / "authorizing" / "completed" / "failed" / "expired" | 是 | 状态 |
| resource | string | 是 | 资源地址 |
| secret_name | string | 是 | 关联的 Secret 名称 |
| connect_url | string | 是 | 交给最终用户打开的确认页,30 分钟内有效、只能使用一次 |
| client_registration | "cimd" / "dcr" / null | 是 | cimd:通过客户端元数据 URL 注册;dcr:动态注册客户端;尚未注册时为 null |
| secret_id | string / null | 是 | 关联的 Secret ID;未关联时为 null |
| error | object / null | 是 | 失败原因 |
| error.code | string | 是 | 稳定的错误码 |
| error.message | string | 是 | 可读的错误说明 |
| expires_at | date-time | 是 | 过期时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
| RATE_LIMITED | 429 | 一分钟内超过授权或校验额度;等待下一窗口 | rate_limit | wait_then_retry | 是 |
| OAUTH_DISCOVERY_FAILED | 400 | 无法发现服务方 OAuth 配置;检查资源地址 | validation_failure | continue_from_problem | 否 |
| OAUTH_REGISTRATION_UNSUPPORTED | 400 | 服务方不接受自动客户端注册;手动添加凭据 | validation_failure | continue_from_problem | 否 |
| OAUTH_ISSUER_MISMATCH | 400 | 授权服务器与预期不一致;重新检查服务地址 | provider_upstream | retry_from_user | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/authorizations" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"vault_id\":\"${VAULT_ID}\",\"template_id\":\"linear\"}"GET /vault/v1/authorizations/{authorization_id}
| 参数 | 位置 | 说明 |
|---|---|---|
| authorization_id | path | 授权 ID。 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_authorization" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| status | "pending" / "authorizing" / "completed" / "failed" / "expired" | 是 | 状态 |
| resource | string | 是 | 资源地址 |
| secret_name | string | 是 | 关联的 Secret 名称 |
| connect_url | string | 是 | 交给最终用户打开的确认页,30 分钟内有效、只能使用一次 |
| client_registration | "cimd" / "dcr" / null | 是 | cimd:通过客户端元数据 URL 注册;dcr:动态注册客户端;尚未注册时为 null |
| secret_id | string / null | 是 | 关联的 Secret ID;未关联时为 null |
| error | object / null | 是 | 失败原因 |
| error.code | string | 是 | 稳定的错误码 |
| error.message | string | 是 | 可读的错误说明 |
| expires_at | date-time | 是 | 过期时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| AUTHORIZATION_NOT_FOUND | 404 | 授权或确认链接不存在;重新发起授权 | validation_failure | none | 否 |
curl "https://api.deepraxis.ai/vault/v1/authorizations/${AUTHORIZATION_ID}" \
-H "Authorization: Bearer $PRAXIS_API_KEY"GET /vault/v1/settings/return_urls
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| urls | string[] | 是 | https 地址,精确匹配,最多 10 个 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。 没有额外的领域错误。
curl "https://api.deepraxis.ai/vault/v1/settings/return_urls" \
-H "Authorization: Bearer $PRAXIS_API_KEY"PUT /vault/v1/settings/return_urls
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| urls | string[] | 是 | https 地址,精确匹配,最多 10 个 |
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| urls | string[] | 是 | https 地址,精确匹配,最多 10 个 |
缺少或无效的 API Key 返回 401 UNAUTHENTICATED。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
curl -X PUT "https://api.deepraxis.ai/vault/v1/settings/return_urls" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls":["https://app.example.com/connected"]}'GET /vault/v1/authorizations/callback · 无需 API Key
| 参数 | 位置 | 说明 |
|---|---|---|
| code | query | 服务方返回的授权码。 |
| state | query | 发起授权时产生的一次性状态值。 |
| error | query | 服务方拒绝授权时返回的错误。 |
| iss | query | 服务方声明的授权服务器地址。 |
text/html
浏览器显示的确认页或结果页。
通过 Location 响应头跳转到服务方授权页或已允许的回跳地址。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| OAUTH_STATE_INVALID | 400 | 回调 state 缺失、无效或重放;重新发起授权 | validation_failure | none | 否 |
| OAUTH_ISSUER_MISMATCH | 400 | 授权服务器与预期不一致;重新检查服务地址 | provider_upstream | retry_from_user | 否 |
| OAUTH_EXCHANGE_FAILED | 502 | 服务方拒绝授权码换令牌;重新授权 | provider_upstream | retry_from_user | 否 |
| AUTHORIZATION_EXPIRED | 410 | 授权链接超过 30 分钟或已使用;重新发起授权 | validation_failure | retry_from_user | 否 |
设置了 return_url 时返回 302;未设置时返回 HTTP 200 结果页。
curl "https://api.deepraxis.ai/vault/v1/authorizations/callback"GET /vault/v1/oauth/client.json · 无需 API Key
application/json
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| client_id | string | 是 | 客户端元数据 URL |
| client_name | string | 是 | 客户端显示名称 |
| redirect_uris | string[] | 是 | 允许的 OAuth 回调地址 |
| token_endpoint_auth_method | "none" | 是 | 令牌端点认证方式 |
| grant_types | "authorization_code" / "refresh_token"[] | 否 | 支持的授权类型 |
| response_types | "code"[] | 否 | 支持的授权响应类型 |
没有额外的领域错误。
curl "https://api.deepraxis.ai/vault/v1/oauth/client.json"GET /vault/v1/connect/{token} · 无需 API Key
| 参数 | 位置 | 说明 |
|---|---|---|
| token | path | connect_url 中的一次性令牌。 |
text/html
浏览器显示的确认页或结果页。
text/html
浏览器显示的确认页或结果页。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| AUTHORIZATION_NOT_FOUND | 404 | 授权或确认链接不存在;重新发起授权 | validation_failure | none | 否 |
| AUTHORIZATION_EXPIRED | 410 | 授权链接超过 30 分钟或已使用;重新发起授权 | validation_failure | retry_from_user | 否 |
无效链接返回 404;过期或已使用的链接返回 410,均为 HTML 页面。
curl "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}"POST /vault/v1/connect/{token}/continue · 无需 API Key
| 参数 | 位置 | 说明 |
|---|---|---|
| token | path | connect_url 中的一次性令牌。 |
通过 Location 响应头跳转到服务方授权页或已允许的回跳地址。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| AUTHORIZATION_NOT_FOUND | 404 | 授权或确认链接不存在;重新发起授权 | validation_failure | none | 否 |
| AUTHORIZATION_EXPIRED | 410 | 授权链接超过 30 分钟或已使用;重新发起授权 | validation_failure | retry_from_user | 否 |
| OAUTH_DISCOVERY_FAILED | 400 | 无法发现服务方 OAuth 配置;检查资源地址 | validation_failure | continue_from_problem | 否 |
curl -X POST "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}/continue"POST /vault/v1/connect/{token}/deny · 无需 API Key
| 参数 | 位置 | 说明 |
|---|---|---|
| token | path | connect_url 中的一次性令牌。 |
text/html
浏览器显示的确认页或结果页。
通过 Location 响应头跳转到服务方授权页或已允许的回跳地址。
| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| AUTHORIZATION_NOT_FOUND | 404 | 授权或确认链接不存在;重新发起授权 | validation_failure | none | 否 |
| AUTHORIZATION_EXPIRED | 410 | 授权链接超过 30 分钟或已使用;重新发起授权 | validation_failure | retry_from_user | 否 |
设置了 return_url 时返回 302;未设置时返回 HTTP 200 结果页。
curl -X POST "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}/deny"| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | 对象标识符 |
| type | "vault_authorization" | 是 | 对象类型 |
| vault_id | string | 是 | 库 ID |
| status | "pending" / "authorizing" / "completed" / "failed" / "expired" | 是 | 状态 |
| resource | string | 是 | 资源地址 |
| secret_name | string | 是 | 关联的 Secret 名称 |
| connect_url | string | 是 | 交给最终用户打开的确认页,30 分钟内有效、只能使用一次 |
| client_registration | "cimd" / "dcr" / null | 是 | cimd:通过客户端元数据 URL 注册;dcr:动态注册客户端;尚未注册时为 null |
| secret_id | string / null | 是 | 关联的 Secret ID;未关联时为 null |
| error | object / null | 是 | 失败原因 |
| error.code | string | 是 | 稳定的错误码 |
| error.message | string | 是 | 可读的错误说明 |
| expires_at | date-time | 是 | 过期时间 |
| created_at | date-time | 是 | 创建时间 |
| updated_at | date-time | 是 | 更新时间 |
| 字段 | 类型 / 枚举 | 必填 | 说明 |
|---|---|---|---|
| urls | string[] | 是 | https 地址,精确匹配,最多 10 个 |
错误响应体统一为下面的形状;code 是稳定的错误码,message 给人读。
{
"request_id": "req_example",
"error": {
"code": "SECRET_CONFLICT",
"message": "A secret named GITHUB_TOKEN already exists",
"kind": "validation_failure",
"recovery": "none",
"retryable": false
}
}错误体包含 request_id,可用于定位请求。兼容接口使用下列错误形状;409 的类型为 conflict_error,不可重试的错误带 x-should-retry: false。
{
"type": "error",
"error": {
"type": "conflict_error",
"message": "A credential with this name already exists"
},
"request_id": "req_example"
}| 错误码 | HTTP | 含义、触发条件与处理 | kind | recovery | 可重试 |
|---|---|---|---|---|---|
| VAULT_NOT_FOUND | 404 | 库不存在或不属于当前账户;检查库 ID | validation_failure | none | 否 |
| SECRET_NOT_FOUND | 404 | Secret 不存在,包括用非法名称查找;检查名称或 ID | validation_failure | none | 否 |
| AUTHORIZATION_NOT_FOUND | 404 | 授权或确认链接不存在;重新发起授权 | validation_failure | none | 否 |
| SECRET_CONFLICT | 409 | 创建时名称已占用;更换名称或更新已有 Secret | validation_failure | none | 否 |
| VAULT_INVALID_STATE | 409 | 向已归档的库或 Secret 写入;改用有效资源 | validation_failure | none | 否 |
| VAULT_LIMIT_EXCEEDED | 400 | 超过有效 Secret 数量上限;先清理不用的 Secret | validation_failure | none | 否 |
| INVALID_PARAMS | 400 | 字段、名称、域名、metadata、分页或回跳地址无效;修正请求 | validation_failure | none | 否 |
| SECRET_KIND_MISMATCH | 400 | 对 static Secret 续期或执行不匹配种类的操作;使用 OAuth Secret | validation_failure | none | 否 |
| VALIDATE_UNSUPPORTED | 400 | 对 static Secret 校验;校验仅支持 OAuth Secret | validation_failure | none | 否 |
| SECRET_TOO_LARGE | 413 | 值超过 16384 字节;缩小值后重试 | validation_failure | none | 否 |
| RATE_LIMITED | 429 | 一分钟内超过授权或校验额度;等待下一窗口 | rate_limit | wait_then_retry | 是 |
| AUTHORIZATION_EXPIRED | 410 | 授权链接超过 30 分钟或已使用;重新发起授权 | validation_failure | retry_from_user | 否 |
| OAUTH_DISCOVERY_FAILED | 400 | 无法发现服务方 OAuth 配置;检查资源地址 | validation_failure | continue_from_problem | 否 |
| OAUTH_REGISTRATION_UNSUPPORTED | 400 | 服务方不接受自动客户端注册;手动添加凭据 | validation_failure | continue_from_problem | 否 |
| OAUTH_ISSUER_MISMATCH | 400 | 授权服务器与预期不一致;重新检查服务地址 | provider_upstream | retry_from_user | 否 |
| OAUTH_STATE_INVALID | 400 | 回调 state 缺失、无效或重放;重新发起授权 | validation_failure | none | 否 |
| OAUTH_EXCHANGE_FAILED | 502 | 服务方拒绝授权码换令牌;重新授权 | provider_upstream | retry_from_user | 否 |
| NOT_IMPLEMENTED | 501 | 功能尚不支持;使用文档列出的替代方式 | execution_failed | none | 否 |