localization
GET /v1/i18n/document-sets/{locale}
Get several marketing documents' finished translations in one call.
인증
이 엔드포인트는 공개되어 있습니다. 자격 증명이나 조직 정보가 필요하지 않으며, 당사의 마케팅 사이트와 AI 답변 엔진이 읽는 것과 동일합니다.
이 엔드포인트는 조직 ID를 받지 않습니다. 사용자의 키가 이미 속한 조직을 식별하며, 응답은 해당 조직으로 한정됩니다.
무료 체험하기
대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.
curl -X GET https://api.zinndigital.com/v1/i18n/document-sets/{locale}?object_ref=<object_ref>로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요
상세 정보
The **batched** form of `getPublicDocumentTranslations`: name up to 50 documents with a repeated `object_ref`, get all of their finished translations in one round trip. **Why it exists (D13732).** `marketplace-web` prerenders every (locale × page) route, and asking for one document at a time cost 100 documents × 58 locales = **5,800** requests per prerender pass — about 23,200 per build once `next build`'s worker processes are counted, against a 600/min budget. Measured in one 20-minute build window on the live engine: **38,322 × `429` against 20,142 served — 65% of the build's document fetches refused**, each one silently degrading a freshly deployed page to the copy committed in `content/site/`. Batched, a locale costs `ceil(100/50)` = **2** calls, so a whole build is ~464 requests. **⛔ The remedy is a bulk read, never a bigger limit** (CLAUDE.md §2.10). The call count is `ceil(documents/50)`, so it does not move when marketing pages are added — a raised limit would have to be re-derived on the next content push. **⛔ `object_ref` is required and bounded at 50.** One locale's whole `page` surface is ~7,879 entries; an unbounded read of it on a public URL is the thing this parameter exists to prevent, and a batch is not an exemption from that. **A document with no finished translations is present and empty, never omitted** — a caller cannot otherwise distinguish "nothing translated yet" from "I forgot to ask for it", and the second silently serves English. **Public and non-tenant**, **`up_to_date` only**, and cacheable with a strong `ETag` plus `Cache-Control: public, max-age=300, stale-while-revalidate=86400` — all for the same reasons as the single-document read.
매개변수
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
locale (path) | LocaleCode | 예 | The target locale (docs/28 registry code). |
object_ref (query) | string[] | 예 | A document, e.g. `page:hosting`. **Repeat it** to ask for several; at most 50 per call. Duplicates are charged once. |
If-None-Match (header) | string | 아니요 | A previously returned `ETag`; a match responds `304`. |
응답
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
locale | LocaleCode | 예 | BCP-47 / ISO locale code from the language registry (docs/28). |
documents | object | 예 | `object_ref -> (field -> translated text)`. **Every `object_ref` the caller asked for is a key**, even when its inner object is empty — an omitted key would be indistinguishable… |
이 엔드포인트가 반환할 수 있는 오류
422 · 429