links
GET /v1/content/targets
Which of your sites can receive a post, and why the rest cannot.
인증
Bearer 토큰으로 API 키를 전송하세요. 이 엔드포인트는 명세에 특정 권한을 명시하지 않으므로, 가정하기보다는 키에 필요한 최소한의 권한을 부여하고 응답을 확인하세요.
조직 ID가 들어가는 위치
이 엔드포인트는 org_id을(를) 쿼리 매개변수로 사용합니다. 생략하면 테넌트 하위 트리 전체가 호출 대상이 되며, 값을 전달하면 특정 조직으로 호출 범위를 좁힐 수 있습니다.
조직 ID는 대시보드의 API 키 화면에서 키 바로 옆에 있습니다. 이는 실행하는 모든 호출에서 동일한 ID입니다.
무료 체험하기
대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.
curl -X GET https://api.zinndigital.com/v1/content/targets \
-H "Authorization: Bearer zdk_live_…"로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요
상세 정보
Every live site in scope with its **suitability**: can it take an article, and — when it cannot — whose fact that is. Gated on `links.view`. ⛔⛔ `suitability` has five values and the difference between two of them is the whole point of this endpoint. `unsuitable` is **measured**: every adapter was asked which sites it claims and each one declined, so this kind of site genuinely has nowhere to put an article. `unknown` means **we could not determine it** — the box was unreachable, the credential has never been tested, or nothing has checked this site yet. A client MUST NOT render `unknown` as a refusal, MUST NOT silently exclude it from a selection, and SHOULD count it separately in any confirmation ("9 ready, 3 unchecked"). Treating "we could not look" as "no" is the defect this endpoint exists to prevent. ⛔ This endpoint makes **no outbound calls**. Suitability is served from the last stored probe with `checkedAt` beside it, because probing every row of a 500-site page would be an uncached external call in an interactive path. `checkedAt: null` means never checked and MUST be shown as such, not as a fresh result. Use `probeContentTargets` to refresh. ⭐ `requires` takes capability ids a recipe needs; each row then carries `missingCapabilities`, so an editor can grey a site out and say what it cannot do. A site whose capabilities are not established reports **nothing** missing rather than everything missing — for the same reason `unknown` is not `unsuitable`.
매개변수
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
org_id (query) | string | 아니요 | Narrow to one organisation in a reseller subtree. Can never widen scope. |
q (query) | string | 아니요 | Match on domain or site name. |
suitability (query) | string<ready, needs_setup, unknown, unsuitable, blocked> | 아니요 | — |
product_line (query) | string | 아니요 | — |
stack_type (query) | string | 아니요 | — |
group_id (query) | string | 아니요 | Only sites in this site group. |
cms (query) | string<wordpress, headless_rest, git_static> | 아니요 | Only sites whose target is this kind. |
requires (query) | string | 아니요 | Comma-separated capability ids a recipe requires, e.g. `cms_target:featured_image,cms_target:category`. |
limit (query) | integer | 아니요 | — |
offset (query) | integer | 아니요 | — |
응답
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
items | SiteTarget[] | 예 | — |
total | integer | 예 | Every site matching the filters, not the page. This is the number a select-all-matching control shows. |
offset | integer | 예 | — |
limit | integer | 예 | — |
has_more | boolean | 예 | — |
이 엔드포인트가 반환할 수 있는 오류
401 · 403 · 422