Get policy translation
Fetch one policy translation.
Returns stored translated Policy fields for one locale, including whether the translation is out of date. Translation routes use the policy UUID returned by list/get, while policy CRUD routes use the fixed policy type. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Policy id. |
locale
required
|
string |
Enabled non-default store locale. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_POLICY_IDThe policy translation id is not a valid UUID.
-
400TRANSLATION_LOCALE_REQUIREDLocale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDLocale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENTranslations cannot target the store's default locale.
-
400TRANSLATION_RESOURCE_ID_NOT_IN_STOREThe policy does not exist in this store.
Set policy translation
Set one policy translation.
Writes translated Policy fields for one locale. Empty values clear the matching field translation. The {id} value is the policy UUID returned by list/get, not the policy type.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
uuid |
Policy id. |
locale
required
|
string |
Enabled non-default store locale. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Idempotency-Key
|
string |
Optional key for this translation write. Reuse it only with the same payload when repeating the request. |
Body parameters
| Name | Type | Description |
|---|---|---|
translations
required
|
object |
Field-keyed translation values. Allowed fields come from |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400STORE_API_INVALID_POLICY_IDThe policy translation id is not a valid UUID.
-
400TRANSLATION_LOCALE_REQUIREDLocale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDLocale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENTranslations cannot target the store's default locale.
-
400TRANSLATION_RESOURCE_ID_NOT_IN_STOREThe policy does not exist in this store.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEField is not translatable for Policies.
-
400TRANSLATION_FIELDS_REQUIREDAt least one translated field is required.
-
400TRANSLATION_FIELD_VALUE_TOO_LONGA translated value exceeds its field limit.
-
400TRANSLATION_NO_SOURCE_TEXTA non-empty translation requires source text for that field.
-
409POLICY_SLUG_DUPLICATEThe translated slug conflicts with another policy.
-
400POLICY_SLUG_INVALID_FORMATTranslated slug is not valid for policy URLs.
-
400POLICY_TITLE_INVALID_CHARSThe translated title contains unsupported characters.
-
400POLICY_TITLE_TOO_LONGThe translated title exceeds its limit.
-
400POLICY_SLUG_TOO_LONGThe translated slug exceeds its limit.
-
400POLICY_CONTENT_TOO_LONGTranslated HTML exceeds its limit.
-
400POLICY_SEO_TITLE_TOO_LONGThe translated SEO title exceeds its limit.
-
400POLICY_SEO_DESCRIPTION_TOO_LONGThe translated SEO description exceeds its limit.
Batch get policy translations
Fetch policy translations in batch.
Returns translated Policy fields for multiple policy ids in one locale. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.
Path parameters
| Name | Type | Description |
|---|---|---|
locale
required
|
string |
Enabled non-default store locale. |
Query parameters
| Name | Type | Description |
|---|---|---|
ids
required
|
string |
Comma-separated Policy ids. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400TRANSLATION_LOCALE_REQUIREDLocale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDLocale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENTranslations cannot target the store's default locale.
-
400TRANSLATION_RESOURCE_ID_NOT_IN_STOREThe policy does not exist in this store.
-
400TRANSLATION_TOO_MANY_RESOURCESThe request exceeds the translation batch resource cap.
-
400STORE_API_INVALID_POLICY_IDOne policy id is not a valid UUID.
Batch set policy translations
Set policy translations in batch.
Writes translated Policy fields for multiple policy ids in one locale. Either every row is written or, if any row is invalid, none are.
Path parameters
| Name | Type | Description |
|---|---|---|
locale
required
|
string |
Enabled non-default store locale. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Idempotency-Key
|
string |
Optional key for this translation write. Reuse it only with the same payload when repeating the request. |
Body parameters
| Name | Type | Description |
|---|---|---|
translations
required
|
array<object> |
Rows with |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON.
-
400STORE_API_INVALID_POLICY_IDOne policy id is not a valid UUID.
-
400TRANSLATION_TOO_MANY_FIELDSThe request exceeds the translation batch field cap.
-
400TRANSLATION_NO_WRITES_PROVIDEDNo translation writes were provided.
-
400TRANSLATION_LOCALE_REQUIREDLocale is required.
-
400TRANSLATION_LOCALE_NOT_ENABLEDLocale is not enabled for this store.
-
400TRANSLATION_DEFAULT_LOCALE_FORBIDDENTranslations cannot target the store's default locale.
-
400TRANSLATION_RESOURCE_ID_NOT_IN_STOREThe policy does not exist in this store.
-
400TRANSLATION_FIELD_NOT_TRANSLATABLEField is not translatable for Policies.
-
400TRANSLATION_FIELDS_REQUIREDAt least one translated field is required.
-
400TRANSLATION_FIELD_VALUE_TOO_LONGA translated value exceeds its field limit.
-
400TRANSLATION_NO_SOURCE_TEXTA non-empty translation requires source text for that field.
-
409POLICY_SLUG_DUPLICATEThe translated slug conflicts with another policy.
-
400POLICY_SLUG_INVALID_FORMATTranslated slug is not valid for policy URLs.
-
400POLICY_TITLE_INVALID_CHARSThe translated title contains unsupported characters.
-
400POLICY_TITLE_TOO_LONGThe translated title exceeds its limit.
-
400POLICY_SLUG_TOO_LONGThe translated slug exceeds its limit.
-
400POLICY_CONTENT_TOO_LONGTranslated HTML exceeds its limit.
-
400POLICY_SEO_TITLE_TOO_LONGThe translated SEO title exceeds its limit.
-
400POLICY_SEO_DESCRIPTION_TOO_LONGThe translated SEO description exceeds its limit.
Webhook events#
Subscribe to these events when your integration mirrors localized policies. Update and clear events identify the locale and changed fields. One write can emit both events when it sets some fields and clears others.
Policy translations updated
Fired when a policy's translations are added or updated for a locale. Payload carries only the fields that changed.
Payload fields
| Field | Type | Description |
|---|---|---|
policy.id |
string |
Always present |
policy.type |
string |
Selectable in the Payload builder |
policy.title |
string |
Selectable in the Payload builder |
policy.slug |
string |
Selectable in the Payload builder |
policy.content |
string |
Selectable in the Payload builder |
policy.status |
string |
Selectable in the Payload builder |
policy.seo_title |
string |
Selectable in the Payload builder |
policy.seo_description |
string |
Selectable in the Payload builder |
policy.created_at |
string |
Selectable in the Payload builder |
policy.updated_at |
string |
Selectable in the Payload builder |
locale |
string |
Selectable in the Payload builder |
translation.title |
string |
Selectable in the Payload builder |
translation.slug |
string |
Selectable in the Payload builder |
translation.content |
string |
Selectable in the Payload builder |
translation.seo_title |
string |
Selectable in the Payload builder |
translation.seo_description |
string |
Selectable in the Payload builder |
updated_at |
string |
Selectable in the Payload builder |
Policy translations deleted
Fired when a policy's translations are cleared for one or more fields in a locale.
Payload fields
| Field | Type | Description |
|---|---|---|
policy.id |
string |
Always present |
policy.type |
string |
Selectable in the Payload builder |
policy.title |
string |
Selectable in the Payload builder |
policy.slug |
string |
Selectable in the Payload builder |
policy.content |
string |
Selectable in the Payload builder |
policy.status |
string |
Selectable in the Payload builder |
policy.seo_title |
string |
Selectable in the Payload builder |
policy.seo_description |
string |
Selectable in the Payload builder |
policy.created_at |
string |
Selectable in the Payload builder |
policy.updated_at |
string |
Selectable in the Payload builder |
locale |
string |
Selectable in the Payload builder |
translation.title |
string |
Selectable in the Payload builder |
translation.slug |
string |
Selectable in the Payload builder |
translation.content |
string |
Selectable in the Payload builder |
translation.seo_title |
string |
Selectable in the Payload builder |
translation.seo_description |
string |
Selectable in the Payload builder |
updated_at |
string |
Selectable in the Payload builder |