Menu
Platform
AI
App store purchases
Database
Flags
Jobs and cron
Localization
Monitoring
Notifications
Payments
Queues
Sandboxes
Webhooks
Getting Started
Authentication
KV Store
Deploy & Infrastructure
Reference
Sync a catalog
Reads the source files and the committed translations into the catalog, then translates what is new or stale.
Reads the source files and the committed translations into the catalog, then translates what is new or stale. Each call is idempotent and works within a bounded time; call again until pending is 0.
- Path
POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/catalogs/catalog:sync - Scope
localization:write - Effect
write— a successful call changes state. - Collection catalogs
#Request
| Field | Type | What it is |
|---|---|---|
name | string | The name of the catalog. Required. |
format | Format | The format of the files. Required. One of sylphx_json, icu_json, gettext_po, xliff2. |
sources | CatalogFile[] | The source-locale files; 1 to 500. Required. |
translations | CatalogFile[] | The committed target-locale files; at most 10000. A text that differs from the service's last export is recorded as a pinned human override. |
validate_only | bool | Validate the files and return the counts without writing or translating. |
#CatalogFile
| Field | Type | What it is |
|---|---|---|
path | string | The file's path. The service does not interpret it and echoes it back, for example a namespace file name. Required. |
locale | string | The file's locale, a BCP 47 tag. Required. |
content | string | The file's text, UTF-8; at most 4 MiB. Required. |
#Response
| Field | Type | What it is |
|---|---|---|
catalog | Catalog | The catalog after this call. |
added | int32 | Entries new in the source. |
changed | int32 | Entries whose source changed. |
obsoleted | int32 | Entries no longer in the source. |
adopted | int32 | Existing translations taken from the committed files. |
pinned | int32 | Committed edits recorded as human overrides. |
translated | int32 | Translations made by this call. |
pending | int32 | Translations still to make; call again until it is 0. |
failed | int32 | Translations still failing QA after repair. |
usage | Usage | What this call used. |
#Catalog
| Field | Type | What it is |
|---|---|---|
name | string | orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}. |
uid | string | cat_<cell><ulid>; never reused. Output only. |
meta | ResourceMeta | Resource metadata. |
spec | CatalogSpec | Desired state. Required. |
status | CatalogStatus | Observed state. Output only. |
#Usage
| Field | Type | What it is |
|---|---|---|
translated_characters | int64 | Source characters translated by this call, per target locale; the billed quantity. |
memory_matches | int32 | Translations reused from the translation memory, which are free. |
#ResourceMeta
| Field | Type | What it is |
|---|---|---|
generation | int64 | Increases by one on every change to spec. Output only. |
etag | string | Strong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as If-Match or etag to make Update and Delete conditional; a mismatch fails with ABORTED / 409 ETAG_MISMATCH. Output only. |
create_time | timestamp | When the Resource was created. Output only. |
update_time | timestamp | When the Resource last changed. Output only. |
delete_time | timestamp | Set while the Resource is being deleted. Output only. |
labels | map<string, string> | Caller-writable, indexed labels (AIP-122 label rules). |
annotations | map<string, string> | Caller-writable, unindexed annotations. |
display_name | string | Caller-writable human-readable name. |
creator | string | The principal that created the Resource. Output only. |
#CatalogSpec
| Field | Type | What it is |
|---|---|---|
source_locale | string | The locale the source texts are written in, a BCP 47 tag such as en. Required. |
target_locales | string[] | The locales to translate into, BCP 47 tags. zh-Hant-HK and zh-Hant-TW are separate locales. At most 60, each once. |
pseudo_locales | PseudoLocale[] | Pseudo-locales to generate at export. They are never stored or translated. One of accented, bidi, wide. |
tone | string | The brand voice every translation follows, at most 2000 characters. |
locale_guidance | map<string, string> | Extra instructions per target locale, for example the vocabulary of a region. Keys are target locales; at most 60 entries, each at most 2000 characters. |
glossaries | string[] | The glossaries this catalog applies, as Glossary names; at most 10. |
#CatalogStatus
| Field | Type | What it is |
|---|---|---|
observed_generation | int64 | The generation this status was computed from. Output only. |
conditions | Condition[] | Ready, Reconciling, Stalled. Output only. |
entry_count | int32 | The number of active entries. Output only. |
locales | LocaleProgress[] | Progress per target locale. Output only. |
last_sync_time | timestamp | When :sync last completed. Output only. |
#Condition
| Field | Type | What it is |
|---|---|---|
type | string | The condition type, for example Ready. |
status | ConditionStatus | Whether the condition holds. One of true, false, unknown. |
observed_generation | int64 | The generation this observation was made against. |
reason | string | A machine-readable UpperCamelCase reason. |
message | string | A customer-safe human-readable message. |
severity | Severity | How severe a FALSE condition is. One of info, warning, error. |
transition_time | timestamp | When status last changed. |
#LocaleProgress
| Field | Type | What it is |
|---|---|---|
locale | string | The target locale. Output only. |
translated | int32 | Entries with a translation that passed QA. Output only. |
pending | int32 | Entries still to translate. Output only. |
failed | int32 | Entries whose translation still fails QA after repair. Output only. |
pinned | int32 | Entries with a human-pinned translation. Output only. |
#Errors
UNAUTHENTICATED— No valid key or token was presented.PERMISSION_DENIED— The key lacks the method's permission.RESOURCE_NOT_FOUND— The named Resource does not exist or is not visible.INVALID_FIELD— A field failed validation.RATE_LIMITED— The rate limit is reached; see Retry-After.SPEND_LIMIT_REACHED— The org's spend limit is reached.IDEMPOTENCY_KEY_REUSED— An Idempotency-Key was reused with another body.IDEMPOTENCY_IN_PROGRESS— The first call with this Idempotency-Key is still running.
Every error arrives in the body Errors describes.
#Examples
curl -X POST "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/catalogs/catalog:sync" \
-H "Authorization: Bearer $SYLPHX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"format":"sylphx_json","sources":[{"content":"…","locale":"…","path":"…"}]}'