connections
POST /v1/connections/{provider}/{connectionId}/probe
Re-test a stored credential, one row per permission.
身份验证
请将 API 密钥作为 bearer 令牌发送。该密钥必须具有 connections.manage 权限;缺少该权限的密钥将被拒绝并返回 403 状态码,而非 404。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X POST https://api.zinndigital.com/v1/connections/{provider}/{connectionId}/probe \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ }'已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Exercises every permission we need **against the provider** using the credential already stored for this connection, and returns one row per permission. This is the "retest" half of add-and-test: the customer's fix happens in their vendor's console — they tick the missing permission at Cloudflare — so there is nothing to re-paste and the stored credential is used. ⛔ It does not ask the credential to describe itself. A least-privilege token cannot enumerate its own permissions, which is how a token missing DNS edit entirely came to be displayed as "works, we will check on first use". Every check here is a real, well-formed call, and a write permission is proved by writing — a throwaway DNS record created and immediately deleted, or a zone setting written back to the value just read. Each row is `pass`, `fail` or **`unknown`**, and the third is not a nicety: `unknown` is the honest answer when we could not reach the question — no zone on the account yet, the vendor rate-limiting us, or a well-formed request refused on its content. ⛔ A client that renders `unknown` as a tick has reintroduced the defect this endpoint exists to remove. The result is stored against the connection with the time it was taken, and returned with `checked_at`. It is a **measurement, not a state** — the customer can revoke a permission at their vendor a second later and nothing here will know — so any surface showing it must show its age. Requires `connections.manage`.
参数
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
provider (path) | ConnectionProvider | 是 | The third-party provider whose connections are addressed. |
connectionId (path) | Uuid | 是 | The MCP connection's id. |
请求正文
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
zone_hint | string | 否 | The domain to test the zone-scoped permissions against. Optional — see `ConnectTokenRequest.zone_hint`. |
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
credential_valid | boolean | 是 | A statement about the **credential**, not about the permissions. `false` means the provider rejected it outright, in which case the rows are not meaningful and the screen must s… |
usable | boolean | 是 | Whether we may store and use this credential: alive, with no **proved** absence of anything required. ⛔ Deliberately not "every row passed" — a brand-new account with no zone on… |
checks | PermissionCheck[] | 是 | One row per permission, in a stable catalogue order rather than the order the checks happened to finish in — a checklist whose rows reshuffle between two retests looks broken to… |
missing | string[] | 是 | Required permissions the provider **proved** are absent. Not the unknowns. |
unverified | string[] | 是 | Permissions we could not determine either way. The honest amber set. |
account_ref | string | 是 | The account or zone the provider reported — discovered, never assumed. |
detail | string | 是 | An overall explanation, used mainly for a rejected credential. |
checked_at | object | 是 | When this was taken. ⛔ Never render the report without it: a checklist with no date on it is indistinguishable from a live one and will be read as live, when in fact the custome… |
此端点可能返回的错误
401 · 403 · 404 · 422 · 429 · 503