Translations

Apply translations for one page and locale

Writes translation overrides for an owned page and one configured, non-default target locale. Send the entries read from GET with translation replaced; source and targetGeneration must be the values GET returned.

  • Only Translation rows change. Base page content, its items and every other locale are untouched.
  • The project default language is rejected (400): it is the source other locales translate from.
  • Each entry is compare-and-set on both its source and its targetGeneration, so a delayed agent can never overwrite a source the merchant edited or a newer translation another writer stored. Refused entries are counted in stale and were not written; re-read and resubmit them. applied + stale = requested.
  • translation: "" clears a key, keeping the tombstone row that distinguishes "cleared" from "never translated".
  • targetGeneration is required on every entry (null when GET returned null); omitting it is a 400, not a blind write.
  • At most 250 entries per request; duplicate itemId + key pairs are rejected.
  • A request that applies nothing advances no project revision and flushes no cache.
  • If the write committed but cache invalidation failed, the response is a 500 whose message states how many entries were applied. Verify with GET; retrying the same entries will not flush the cache, because they then lose the target compare-and-set as no-ops.

Required scope: content:write

post/projects/{projectId}/page-translations/{pageId}

Request

  • Base URL
    https://studio.weaverse.io/api/v1/content
  • Auth
    HTTP bearer

Path parameters

projectIdstring required
pageIdstring required

Request body

localestring required

Target locale, resolved through the same language identity the storefront uses. Must be a configured, non-default language.

Response

Decision for the whole batch. applied + stale = requested; a non-zero stale means those keys must be re-read and resubmitted.

object'page_translations_update'
projectIdstring
pageIdstring
requestedinteger
appliedinteger

Entries that passed both the source and target compare-and-set and were written.

staleinteger

Entries refused because the source or the target moved since the read. Re-run GET and resubmit those keys; they were NOT written.

Changes

No recorded changes to this operation across all 1 revision of this API.