localization
GET /v1/i18n/bundles/{locale}
Get every translated string for one locale.
認証
ベアラー トークンとして API キーを送信します。このエンドポイントでは仕様に特定の権限が記載されていないため、キーに必要な最小限の権限を付与し、推測するのではなくレスポンスを確認してください。
このエンドポイントは組織IDを受け付けません。お使いのキーによって所属する組織がすでに特定されており、レスポンスはその組織にスコープされます。
試してみる
アングルブラケット内のすべてをご自身の値に置き換え、キーのプレースホルダーをご利用中のダッシュボードのキーに置き換えてください。
curl -X GET https://api.zinndigital.com/v1/i18n/bundles/{locale} \
-H "Authorization: Bearer zdk_live_…"ログインしていますか?ダッシュボード内のAPIコンソールでは、実際の組織IDやお客様ご自身のキーが自動入力され、ライブAPIに対してリクエストが実行されるため、実際のレスポンスを確認することができます。 API コンソールでこのエンドポイントを開く
詳細
Returns the calling organization's translated strings for locale, grouped by object_ref then field — the read a site build or an SSR render performs to populate a locale. Last-good-while-stale. An entry's text is returned whenever it is non-empty, regardless of its status: the store retains the previous translation while a re-translation is in flight, and serving that is better than serving an English string (or nothing) on a localized page. The per-entry status is exposed so the caller decides — a production build may accept stale, a release gate may refuse anything that is not up_to_date. Entries with no text yet are omitted entirely rather than returned blank. Deliberately NOT cursor-paginated — a documented deviation from the rest of this API. Every other collection here is cursor-paginated, and that is the right default for tenant data that grows without bound. This corpus is different: it is our own bounded, self-owned content, read as a single unit at build time. Paginating it would turn one build into hundreds of sequential round-trips per locale (58 locales × pages), for no isolation or performance benefit. Instead the response is bounded by a hard server-side cap; a bundle that would exceed it is a 422 naming the cap and telling the caller to narrow with surface or object_ref_prefix rather than silently truncating. Cacheable: responses carry a strong ETag over the bundle contents plus Cache-Control: public, max-age=60. Send If-None-Match to get a 304 and skip the transfer entirely.
パラメータ
| 名前 | タイプ | 必須 | これがその内容です |
|---|---|---|---|
locale (path) | LocaleCode | はい | The target locale to build a bundle for (docs/28 registry code). |
surface (query) | string | いいえ | Comma-separated list of surfaces to include (e.g. page,meta_title). All surfaces when omitted. An unknown surface is a 422. |
object_ref_prefix (query) | string | いいえ | Only include entries whose object_ref starts with this prefix (e.g. kb_article: or page:pricing). Narrows a bundle that would otherwise exceed the entry cap. |
object_ref (query) | string | いいえ | Comma-separated list of exact object_ref values (at most 100). Fetches a group of documents in one request. This exists because a prefix cannot express a group and one… |
limit (query) | integer | いいえ | Page size. Sending this (or cursor) opts into paging; send neither and the response is the whole bundle, with the 422 above when it exceeds the cap. Clamped to the… |
cursor (query) | string | いいえ | The next_cursor from the previous page, passed back verbatim. Opaque — a cursor this endpoint did not issue is a 422, never a silent restart, which would loop a caller forever… |
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). |
generated_at | string | はい | When this bundle was assembled (server time). |
entries | object | はい | object_ref -> field -> the translated entry. Entries with no text yet are omitted rather than returned blank. |
next_cursor | string | いいえ | Pass back as cursor for the next page. null on the last page, and absent entirely unless the request opted into paging with limit or cursor — so a caller that never… |
このエンドポイントが返すエラー
401 · 403 · 422 · 429