{
"object": "assignments_updated",
"data": [
{
"id": "clz8r5t6u0005pa01abou0001",
"projectId": "clz8p2k0q0001ab12cd34ef56",
"type": "CUSTOM",
"handle": "our-story",
"locale": "",
"market": null,
"pageId": "clz8q1m2n0004pg01abou0003",
"cachedPageData": null,
"shopifyResourceId": null,
"createdAt": "2026-10-14T09:12:30.000Z",
"updatedAt": "2026-10-15T11:40:02.000Z",
"deletedAt": null
}
]
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}Update, localize or remove page assignments
Runs one structural operation on this project’s page assignments, selected by op. All operations are live writes (routing changes immediately, no draft or publish step).
Operations:
update(content:write): changeshandleandlocaleof 1-100 assignments byid. Every id must belong to this project; one foreign id refuses the whole batch with404and nothing moves. Returns the updated rows. A handle that another assignment already uses in that scope, or a custom page that would hold two handles in one scope (details.handles), returns409 CONFLICTand nothing moves.localize(content:write): creates a locale-specific copy of pagepageIdforlocale, with the same type and handle and a copy of its SEO. Returns the new page.unassign(content:delete,confirmequal topageId): removes up to 100 resource assignments (assignmentIds) from template pagepageId. Only rows that template owns in this project are removed; other ids are ignored. The template’s own wiring row and the page itself are never removed. Returns the number removed.reset-localized(content:delete,confirmequal toassignmentId): removes the localized assignmentassignmentIdof pagepageIdso the route falls back to the default page. A version of the content is kept for recovery.rename-locale(content:delete,confirmequal to theprojectId): moves every assignment of the project fromfromLocaletotoLocale. Returns the number of rows moved.
A wrong confirm value returns 400 INVALID_PARAMS.
Required scope: content:write (all operations); unassign, reset-localized and rename-locale also need content:delete
{
"object": "assignments_updated",
"data": [
{
"id": "clz8r5t6u0005pa01abou0001",
"projectId": "clz8p2k0q0001ab12cd34ef56",
"type": "CUSTOM",
"handle": "our-story",
"locale": "",
"market": null,
"pageId": "clz8q1m2n0004pg01abou0003",
"cachedPageData": null,
"shopifyResourceId": null,
"createdAt": "2026-10-14T09:12:30.000Z",
"updatedAt": "2026-10-15T11:40:02.000Z",
"deletedAt": null
}
]
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}{
"object": "error",
"code": "UNAUTHORIZED",
"message": "<string>",
"status": 123,
"details": "<unknown>"
}Authorizations
Bearer authentication: a shop API key (WEAVERSE_API_KEY), a scoped API key, a delegated MCP OAuth token, or (translation-unit routes only) a project-bound translation agent token. Scopes: content:read — Read projects, pages, theme settings, versions, drafts and translation units. content:write — Save drafts and make non-destructive edits (page items, metadata, SEO, assignments, languages, glossary). Never publishes or deletes. content:publish — Publish drafts, schedule/reschedule/cancel publications, restore versions, publish global sections. content:delete — Delete pages, global sections, languages, static keys, override reverts; required with project:manage for project deletion. project:manage — Create/copy/delete projects, settings, variants, hierarchy, backups, restore-as-new, previews, hostname policy. translations:read — Read translation units only (no general content access). translations:write — Apply translation units only; never mutates page content. A legacy unscoped API key keeps read/write/translation baseline access and every pre-scope endpoint, but never gains publish/delete/project-manage implicitly.
Path Parameters
Body
Response
Operation result
The response is of type object.
Was this page helpful?