connections

POST /v1/connections/{provider}/{connectionId}/probe

Re-test a stored credential, one row per permission.

모든 connections 엔드포인트

인증

Bearer 토큰으로 API 키를 전송하세요. 키는 반드시 connections.manage 권한을 가지고 있어야 하며, 권한이 없는 키는 404가 아닌 403으로 거부됩니다.

이 엔드포인트는 조직 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)ConnectionProviderThe third-party provider whose connections are addressed.
connectionId (path)UuidThe MCP connection's id.

요청 본문

이름유형필수설명
zone_hintstring아니요The domain to test the zone-scoped permissions against. Optional — see `ConnectTokenRequest.zone_hint`.

응답

이름유형필수설명
credential_validbooleanA 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…
usablebooleanWhether 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…
checksPermissionCheck[]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…
missingstring[]Required permissions the provider **proved** are absent. Not the unknowns.
unverifiedstring[]Permissions we could not determine either way. The honest amber set.
account_refstringThe account or zone the provider reported — discovered, never assumed.
detailstringAn overall explanation, used mainly for a rejected credential.
checked_atobjectWhen 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