localization

POST /v1/i18n/sources

Register translatable source fields (batch).

すべての localization エンドポイント

認証

ベアラー トークンとして API キーを送信します。このエンドポイントでは仕様に特定の権限が記載されていないため、キーに必要な最小限の権限を付与し、推測するのではなくレスポンスを確認してください。

このエンドポイントは組織IDを受け付けません。お使いのキーによって所属する組織がすでに特定されており、レスポンスはその組織にスコープされます。

試してみる

アングルブラケット内のすべてをご自身の値に置き換え、キーのプレースホルダーをご利用中のダッシュボードのキーに置き換えてください。

curl -X POST https://api.zinndigital.com/v1/i18n/sources \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{  }'

ログインしていますか?ダッシュボード内のAPIコンソールでは、実際の組織IDやお客様ご自身のキーが自動入力され、ライブAPIに対してリクエストが実行されるため、実際のレスポンスを確認することができます。 API コンソールでこのエンドポイントを開く

詳細

Registers (or updates) source fields for auto-translation into every enabled locale (CLAUDE.md §2.19, docs/28). Each item is keyed by `(surface, object_ref, field)` within the calling organization; the org is taken from the credential and can never be set from the body. **Batched by design.** One CMS page save touches on the order of 150 translatable fields (body blocks, meta title/description, OpenGraph, JSON-LD text, alt text, breadcrumb labels, the slug). A per-field request would turn a single editorial save into 150 round-trips, so the endpoint takes up to 200 items per call; more than that is a `422` asking the caller to split the batch. **Intrinsically idempotent — an `Idempotency-Key` is accepted but not needed.** Registration is keyed on a SHA-256 of the source text: when the content hash is unchanged the call is a complete no-op (nothing is marked stale, no re-translation event is emitted, `changed` comes back `false`). Replaying the same batch therefore costs nothing and changes nothing, so unlike every other unsafe endpoint here this one needs no replay protection to be safe. The header is still accepted so that clients and generated SDKs can send it uniformly across all writes. Translation runs asynchronously afterwards — a successful response means the source is recorded and (if it changed) queued, never that any locale is translated yet. Poll `GET /v1/i18n/bundles/{locale}` or watch the `translation.completed` events.

パラメータ

名前タイプ必須これがその内容です
Idempotency-Key (header)stringいいえClient-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats.

リクエスト本文

名前タイプ必須これがその内容です
itemsTranslationSourceItem[]いいえThe source fields to register. Capped at 200 per request — a larger batch is a `422` telling the caller to split it. Optional so that a RETIREMENT-ONLY request is expressible: t…
pruneTranslationPruneScopeいいえRetire every registered source inside this scope that is NOT named in `items` — the de-registration path (#735). Without it, a key deleted from the caller's catalogue leaves its…
prune_namespaceTranslationNamespacePruneいいえRetire every registered DOCUMENT under `ref_prefix` that is not named in `expected_refs`. `TranslationPruneScope` retires fields inside one document; this retires documents that…

返信

名前タイプ必須これがその内容です
resultsTranslationSourceResult[]はいOne result per submitted item, in the order submitted.
retiredTranslationField[]いいえField names deleted by `prune`, sorted. Empty when `prune` was absent or nothing was stale. Reported rather than assumed: a destructive operation that returns no number is indis…
retired_refsObjectRef[]いいえ`object_ref`s deleted by `prune_namespace`, sorted. Empty when `prune_namespace` was absent or nothing was dead. Kept separate from `retired` on purpose: a count of retired FIEL…

このエンドポイントが返すエラー

401 · 403 · 422 · 429