Blog Category translations

Read and write localized blog category fields through the Store API.

Get blog category translation

GET read_blog + read_translations

Fetch one blog category translation.

Returns stored translated Blog Category fields for one locale, including whether the translation is out of date. 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

Blog Category id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_CATEGORY_ID

    Blog Category id is not a valid UUID.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Blog Category does not exist in this store.

Set blog category translation

PUT write_blog + write_translations

Set one blog category translation.

Writes translated Blog Category fields for one locale. Empty values clear the matching field translation.

Path parameters

Name Type Description
id required uuid

Blog Category id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
locale required string

Enabled non-default store locale.

Example: fr

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 contract.translation.fields.

Example: {"name": "Company", "slug": "company"}

Errors

  • 400 STORE_API_INVALID_CATEGORY_ID

    Blog Category id is not a valid UUID.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Blog Category does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for Blog Categories.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another blog category.

  • 409 CATEGORY_DUPLICATE

    The translated name or slug is already used by another blog category.

  • 400 CATEGORY_NAME_INVALID_CHARS

    The translated name contains unsupported characters.

  • 400 CATEGORY_NAME_TOO_LONG

    The translated name exceeds its limit.

  • 400 CATEGORY_SLUG_INVALID_FORMAT

    The translated slug is not URL-safe.

  • 400 CATEGORY_SLUG_TOO_LONG

    The translated slug exceeds its limit.

  • 400 CATEGORY_DESCRIPTION_TOO_LONG

    The translated description exceeds its limit.

  • 400 CATEGORY_SEO_TITLE_TOO_LONG

    The translated SEO title exceeds its limit.

  • 400 CATEGORY_SEO_DESCRIPTION_TOO_LONG

    The translated SEO description exceeds its limit.

Batch get blog category translations

GET read_blog + read_translations

Fetch blog category translations in batch.

Returns translated Blog Category fields for multiple category 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.

Example: fr

Query parameters

Name Type Description
ids required string

Comma-separated Blog Category ids.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31,3a588f80-fd8c-4d46-af1b-00a1c4a7f85a

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Blog Category does not exist in this store.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

Batch set blog category translations

PUT write_blog + write_translations

Set blog category translations in batch.

Writes translated Blog Category fields for multiple category 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.

Example: fr

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 id and fields. Allowed field keys come from contract.translation.fields.

Example: [{"id": "5ff7d4ea-3250-4a4d-9d26-07f64d917d31", "fields": {"name": "Company"}}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON.

  • 400 STORE_API_INVALID_CATEGORY_ID

    One category id is not a valid UUID.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is required.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    Translations cannot target the store's default locale.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    Blog Category does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    Field is not translatable for Blog Categories.

  • 400 TRANSLATION_FIELDS_REQUIRED

    At least one translated field is required.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds its field limit.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    Translated name or slug conflicts with another blog category.

  • 409 CATEGORY_DUPLICATE

    The translated name or slug is already used by another blog category.

  • 400 CATEGORY_NAME_INVALID_CHARS

    The translated name contains unsupported characters.

  • 400 CATEGORY_NAME_TOO_LONG

    The translated name exceeds its limit.

  • 400 CATEGORY_SLUG_INVALID_FORMAT

    The translated slug is not URL-safe.

  • 400 CATEGORY_SLUG_TOO_LONG

    The translated slug exceeds its limit.

  • 400 CATEGORY_DESCRIPTION_TOO_LONG

    The translated description exceeds its limit.

  • 400 CATEGORY_SEO_TITLE_TOO_LONG

    The translated SEO title exceeds its limit.

  • 400 CATEGORY_SEO_DESCRIPTION_TOO_LONG

    The translated SEO description exceeds its limit.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

Get a blog category metafield translation

GET read_blog + read_translations

Fetch one translated custom-data value.

The definition must be visible and translatable. 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

Blog Category id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
namespace required string

Metafield definition namespace.

Example: details
key required string

Metafield definition key.

Example: subtitle
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 PRODUCT_METAFIELD_DEF_NOT_FOUND

    The namespace and key do not identify an accessible definition.

  • 404 NOT_FOUND

    The resource does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The definition is not translatable.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is missing.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The default locale cannot be a translation target.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The translated resource does not exist.

Set a blog category metafield translation

PUT write_blog + write_translations

Set or clear one translated custom-data value.

Send an empty value to clear the locale's translation. Send an explicit string in value; omit neither the field nor its value, and do not send null. An empty string clears the translation. For list.string, send a JSON-encoded string array with one translated item for each source item, in the same order.

Path parameters

Name Type Description
id required uuid

Blog Category id.

Example: 5ff7d4ea-3250-4a4d-9d26-07f64d917d31
namespace required string

Metafield definition namespace.

Example: details
key required string

Metafield definition key.

Example: subtitle
locale required string

Enabled non-default store locale.

Example: fr

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
value required string

Translated value; empty clears it.

Example: Entreprise

Errors

  • 400 PRODUCT_METAFIELD_DEF_NOT_FOUND

    The namespace and key do not identify an accessible definition.

  • 404 NOT_FOUND

    The resource does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The definition is not translatable.

  • 400 TRANSLATION_LOCALE_REQUIRED

    Locale is missing.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The default locale cannot be a translation target.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The translated resource does not exist.

  • 400 TRANSLATION_LIST_LENGTH_MISMATCH

    The translated list must have the same number of items as the source list.

Webhook events#

Subscribe to these events when your integration mirrors localized blog categories. Update and clear events identify the locale and changed fields. One write can emit both events when it sets some fields and clears others.

Blog category translations updated

EVENT blog_categories/translations/update App scope: read_blog Staff permission: blog:write

Fired when a blog category's translations are added or updated for a locale.

Payload fields

Field Type Description
blog_category.id string Always present
blog_category.name string Selectable in the Payload builder
blog_category.slug string Selectable in the Payload builder
blog_category.description string Selectable in the Payload builder
blog_category.seo_title string Selectable in the Payload builder
blog_category.seo_description string Selectable in the Payload builder
blog_category.template_handle string Selectable in the Payload builder
blog_category.post_count integer Selectable in the Payload builder
blog_category.created_at string Selectable in the Payload builder
blog_category.updated_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description 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

Blog category translations deleted

EVENT blog_categories/translations/delete App scope: read_blog Staff permission: blog:write

Fired when a blog category's translations are cleared for one or more fields in a locale.

Payload fields

Field Type Description
blog_category.id string Always present
blog_category.name string Selectable in the Payload builder
blog_category.slug string Selectable in the Payload builder
blog_category.description string Selectable in the Payload builder
blog_category.seo_title string Selectable in the Payload builder
blog_category.seo_description string Selectable in the Payload builder
blog_category.template_handle string Selectable in the Payload builder
blog_category.post_count integer Selectable in the Payload builder
blog_category.created_at string Selectable in the Payload builder
blog_category.updated_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description 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

Blog category metafield translations updated

EVENT blog_category_metafields/translations/update App scope: read_blog Staff permission: blog:write

Fired when a blog category metafield's translation is added or updated for a locale.

Payload fields

Field Type Description
metafield.blog_category_id string Always present
metafield.blog_category_name string Selectable in the Payload builder
metafield.blog_category_slug string Selectable in the Payload builder
metafield.definition_id string Always present
metafield.namespace string Selectable in the Payload builder
metafield.key string Selectable in the Payload builder
metafield.name string Selectable in the Payload builder
metafield.type string Selectable in the Payload builder
metafield.app_id string Selectable in the Payload builder
metafield.app_access string Selectable in the Payload builder
metafield.merchant_access string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Blog category metafield translations deleted

EVENT blog_category_metafields/translations/delete App scope: read_blog Staff permission: blog:write

Fired when a blog category metafield's translation is cleared for a locale, including when its blog category is deleted.

Payload fields

Field Type Description
metafield.blog_category_id string Always present
metafield.blog_category_name string Selectable in the Payload builder
metafield.blog_category_slug string Selectable in the Payload builder
metafield.definition_id string Always present
metafield.namespace string Selectable in the Payload builder
metafield.key string Selectable in the Payload builder
metafield.name string Selectable in the Payload builder
metafield.type string Selectable in the Payload builder
metafield.app_id string Selectable in the Payload builder
metafield.app_access string Selectable in the Payload builder
metafield.merchant_access string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder