localization
POST /v1/i18n/sources
Register translatable source fields (batch).
Xác thực
Gửi khóa API dưới dạng mã thông báo bearer. Điểm cuối này không nêu rõ quyền cụ thể trong thông số kỹ thuật, vì vậy hãy cấp cho khóa của bạn quyền tối thiểu cần thiết và kiểm tra phản hồi thay vì phỏng đoán.
Endpoint này không nhận ID tổ chức. Khóa của bạn đã xác định tổ chức mà nó thuộc về và phản hồi được giới hạn trong phạm vi đó.
Dùng thử
Thay thế bất kỳ nội dung nào trong ngoعل (angle brackets) bằng giá trị của riêng bạn và trình giữ chỗ key bằng một key từ trang tổng quan của bạn.
curl -X POST https://api.zinndigital.com/v1/i18n/sources \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ }'Đã đăng nhập? Bảng điều khiển API trong trang quản lý của bạn sẽ tự điền ID tổ chức thực tế và khóa của riêng bạn, sau đó chạy yêu cầu đối với API trực tiếp để bạn có thể xem phản hồi thực tế. Mở điểm cuối này trong bảng điều khiển API
Chi tiết
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.
Tham số
| Tên | Loại | Bắt buộc | Nội dung này là gì |
|---|---|---|---|
Idempotency-Key (header) | string | Không | Client-generated key that makes an unsafe request replay-safe: the server stores the first response and returns it verbatim for repeats. |
Nội dung yêu cầu
| Tên | Loại | Bắt buộc | Nội dung này là gì |
|---|---|---|---|
items | TranslationSourceItem[] | Không | 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… |
prune | TranslationPruneScope | Không | 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_namespace | TranslationNamespacePrune | Không | Retire every registered DOCUMENT under `ref_prefix` that is not named in `expected_refs`. `TranslationPruneScope` retires fields inside one document; this retires documents that… |
Phản hồi
| Tên | Loại | Bắt buộc | Nội dung này là gì |
|---|---|---|---|
results | TranslationSourceResult[] | Có | One result per submitted item, in the order submitted. |
retired | TranslationField[] | Không | 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_refs | ObjectRef[] | Không | `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… |
Các lỗi điểm cuối này có thể trả về
401 · 403 · 422 · 429