Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead.
The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400.
Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment ("").
A resource already assigned to this page is an idempotent no-op, reported under existing.
All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.
New rows are created in a single transaction. All lookups and writes are scoped to projectId.
Bearer token: a shop API key (WEAVERSE_API_KEY), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.
Resources already assigned to this page (idempotent no-op).
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Weaverse","colors":{"primary":"#246aff","light":"#599aff","dark":"#1e40af"},"logo":{"light":"https://mintcdn.com/weaverse/UqDg35noNYU1xQJr/logo/light.svg?fit=max\u0026auto=format\u0026n=UqDg35noNYU1xQJr\u0026q=85\u0026s=03570de959edb471a7177f81be24d246","dark":"https://mintcdn.com/weaverse/UqDg35noNYU1xQJr/logo/dark.svg?fit=max\u0026auto=format\u0026n=UqDg35noNYU1xQJr\u0026q=85\u0026s=37c6ba54acdc2f2fec124b27d05ac379","href":"https://weaverse.io"},"favicon":"https://mintcdn.com/weaverse/EOrmVdYBR-QCAvXJ/favicon.ico?fit=max\u0026auto=format\u0026n=EOrmVdYBR-QCAvXJ\u0026q=85\u0026s=fee3d7a85f68c8b9e62d849017c3c087","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python"]}},"navbar":{"links":[{"href":"https://weaverse.io","label":"Weaverse.io"},{"href":"https://github.com/weaverse","label":"GitHub"},{"href":"https://wvse.cc/weaverse-slack","label":"Community"}],"primary":{"type":"button","label":"Studio","href":"https://studio.weaverse.io/dashboard"}},"footer":{"socials":{"x":"https://x.com/WeaverseIO","github":"https://github.com/weaverse","slack":"https://wvse.cc/weaverse-slack"}},"seo":{"metatags":{"og:site_name":"Weaverse Docs","twitter:site":"@WeaverseIO","keywords":"Weaverse, Shopify Hydrogen, headless commerce, visual page builder, React Router, Next.js"},"organization":{"name":"Weaverse","url":"https://weaverse.io","logo":"https://docs.weaverse.io/logo/light.svg","sameAs":["https://github.com/weaverse","https://x.com/WeaverseIO","https://wvse.cc/weaverse-slack"]}},"integrations":{"posthog":{"apiKey":"phc_BnZAhY8ELZCZukEErb6ab9T7txSsMolcgGIIhMj5oSP","apiHost":"https://posthog.weaverse.io"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","add-mcp","download-spec","cursor","vscode"],"display":"header"},"thumbnails":{"preset":"headline","appearance":"dark"},"metadata":{"timestamp":true},"markdown":{"instructions":["Weaverse component configuration uses `settings`. `inspector` is deprecated; never generate it.","Weaverse Hydrogen themes use React Router v7: import from `react-router`, never `react-router-dom` or `@remix-run/*`.","The current SDK is `@weaverse/hydrogen` 6 for Shopify Hydrogen 2026.10 and later. React Router themes import from `@weaverse/hydrogen/react-router`; the root `@weaverse/hydrogen` entry only exports `createSchema()`, data helpers and types.","Some examples still show 5.x imports and type names. In 6.x, `HydrogenComponentProps` is `WeaverseComponentProps` and `HydrogenComponentSchema` is `WeaverseComponentSchema`; run `npx @weaverse/cli@latest migrate v6` to convert code. Projects on Hydrogen 2026.4 or earlier stay on 5.x. Do not mix major versions.","Next.js themes use `@weaverse/next` 1.x.","For live project data (pages, theme settings, translations), use the Weaverse MCP server: https://weaverse.io/docs/developer-tools/weaverse-mcp"]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"weaverse","hasAudioNarration":false,"actualSubdomain":"weaverse","customDomains":["weaverse.io"],"gitSource":{"type":"github","owner":"weaverse","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6af2c27b5142c81ca2ff08cc","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Content API","count":54},{"language":"default","tag":"React Router","count":43},{"language":"default","tag":"Guides","count":42},{"language":"default","tag":"Ecosystem","count":22},{"language":"default","tag":"Next.js","count":21},{"language":"default","tag":"SDKs","count":18},{"language":"default","tag":"Drafts and publishing","count":12},{"language":"default","tag":"Hooks","count":10},{"language":"default","tag":"Help \u0026 Community","count":10},{"language":"default","tag":"Building Components","count":7}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"content-api/assignments/assign-resources-to-a-shared-template-page","slug":"/content-api/assignments/assign-resources-to-a-shared-template-page","pageMetadata":{"title":"Assign resources to a shared template page","description":"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at `pageId`, so the template content stays shared, not copied. To create an independent, editable copy per resource, use `POST /projects/{projectId}/pages` instead.\n\n- The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`); any other type returns `400`.\n- Send 1-100 entries in `assignments`. `handle` is the Shopify resource handle (trimmed, kept verbatim); `locale` defaults to the global assignment (`\"\"`).\n- A resource already assigned to this page is an idempotent no-op, reported under `existing`.\n- **All-or-nothing.** Every handle is checked first. If any handle already belongs to a different live page, the whole request returns `409 CONFLICT` with the clashing handles in `details.conflicts`, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.\n- New rows are created in a single transaction. All lookups and writes are scoped to `projectId`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/template-assignments/{pageId}","href":"/content-api/assignments/assign-resources-to-a-shared-template-page","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at \", _jsx(_components.code, {\n children: \"pageId\"\n }), \", so the template content stays shared, not copied. To create an independent, editable copy per resource, use \", _jsx(_components.code, {\n children: \"POST /projects/{projectId}/pages\"\n }), \" instead.\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (\", _jsx(_components.code, {\n children: \"PRODUCT\"\n }), \", \", _jsx(_components.code, {\n children: \"COLLECTION\"\n }), \", \", _jsx(_components.code, {\n children: \"PAGE\"\n }), \", \", _jsx(_components.code, {\n children: \"BLOG\"\n }), \", \", _jsx(_components.code, {\n children: \"ARTICLE\"\n }), \"); any other type returns \", _jsx(_components.code, {\n children: \"400\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Send 1-100 entries in \", _jsx(_components.code, {\n children: \"assignments\"\n }), \". \", _jsx(_components.code, {\n children: \"handle\"\n }), \" is the Shopify resource handle (trimmed, kept verbatim); \", _jsx(_components.code, {\n children: \"locale\"\n }), \" defaults to the global assignment (\", _jsx(_components.code, {\n children: \"\\\"\\\"\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"A resource already assigned to this page is an idempotent no-op, reported under \", _jsx(_components.code, {\n children: \"existing\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"All-or-nothing.\"\n }), \" Every handle is checked first. If any handle already belongs to a different live page, the whole request returns \", _jsx(_components.code, {\n children: \"409 CONFLICT\"\n }), \" with the clashing handles in \", _jsx(_components.code, {\n children: \"details.conflicts\"\n }), \", and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"New rows are created in a single transaction. All lookups and writes are scoped to \", _jsx(_components.code, {\n children: \"projectId\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required scope: \", _jsx(_components.code, {\n children: \"content:write\"\n })]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Assign resources to a shared template page","description":"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at `pageId`, so the template content stays shared, not copied. To create an independent, editable copy per resource, use `POST /projects/{projectId}/pages` instead.\n\n- The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`); any other type returns `400`.\n- Send 1-100 entries in `assignments`. `handle` is the Shopify resource handle (trimmed, kept verbatim); `locale` defaults to the global assignment (`\"\"`).\n- A resource already assigned to this page is an idempotent no-op, reported under `existing`.\n- **All-or-nothing.** Every handle is checked first. If any handle already belongs to a different live page, the whole request returns `409 CONFLICT` with the clashing handles in `details.conflicts`, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.\n- New rows are created in a single transaction. All lookups and writes are scoped to `projectId`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/template-assignments/{pageId}","href":"/content-api/assignments/assign-resources-to-a-shared-template-page","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/weaverse/0543a9a70b6f3643/snitcher.js","/docs/_mintlify/custom/weaverse/20987ec1c9b2ceb6/same-tab-nav.js"],"openApiReferenceData":{"operation":{"operationId":"assignTemplateResources","summary":"Assign resources to a shared template page","description":"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at `pageId`, so the template content stays shared, not copied. To create an independent, editable copy per resource, use `POST /projects/{projectId}/pages` instead.\n\n- The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (`PRODUCT`, `COLLECTION`, `PAGE`, `BLOG`, `ARTICLE`); any other type returns `400`.\n- Send 1-100 entries in `assignments`. `handle` is the Shopify resource handle (trimmed, kept verbatim); `locale` defaults to the global assignment (`\"\"`).\n- A resource already assigned to this page is an idempotent no-op, reported under `existing`.\n- **All-or-nothing.** Every handle is checked first. If any handle already belongs to a different live page, the whole request returns `409 CONFLICT` with the clashing handles in `details.conflicts`, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry.\n- New rows are created in a single transaction. All lookups and writes are scoped to `projectId`.\n\nRequired scope: `content:write`","parameters":["6ca5a3f4-199e-4a28-ba7b-1a0ff4a79435","8e61de60-bf79-47ac-a88b-0e7491a7b3dc"],"requestBody":"1ba33697-e32c-4fc9-8470-a0ba0e92e546","responses":{"200":"ceb9ef5c-8e84-4cb8-b413-094dc309da88","400":"f0410359-250e-4667-ad92-b7d628d9f841","401":"358a9e07-aa77-4584-8963-4ccbf7095f46","403":"eb855288-50ef-4c4f-be90-d3fe880a6e71","404":"649a4051-4099-4838-aa0e-cf94e6cc73a7","405":"5cf3dd07-8d2b-4f32-acad-259113c9b926","409":"2f7029f9-e4a2-4b51-bf9b-458a561bab1a","500":"ba31497c-a286-4818-b9f8-ad35e5a8b3b9"},"tags":["Assignments"],"x-mint":{"metadata":{"playground":"simple"}},"method":"post","type":"path","servers":["06e8abcf-d98e-4c65-a1d0-4fa031893726"],"security":["15700b4d-44b3-4c88-a94b-4706f3058ff6"],"path":"/projects/{projectId}/template-assignments/{pageId}","baseUrlOptions":["https://studio.weaverse.io/api/v1/content"],"title":"Assign resources to a shared template page","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6ca5a3f4-199e-4a28-ba7b-1a0ff4a79435":{"name":"projectId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"8e61de60-bf79-47ac-a88b-0e7491a7b3dc":{"name":"pageId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"The template page id to assign resources to.","uniqueKey":"","typeLabel":"string"},"description":"The template page id to assign resources to."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["assignments"],"properties":{"assignments":{"type":"array","minItems":1,"maxItems":100,"description":"Shopify resources to assign to this template page. Each becomes its own assignment row pointing at the same page — no page copies are created.","items":{"type":"object","required":["handle"],"additionalProperties":false,"properties":{"handle":{"type":"string","description":"Shopify resource handle (trimmed, kept verbatim).","isRequired":true,"uniqueKey":"assignments.items.[INDEX].handle","typeLabel":"string"},"shopifyResourceId":{"type":"string","description":"Optional non-empty Shopify resource id (gid) bound to the assignment.","uniqueKey":"assignments.items.[INDEX].shopifyResourceId","typeLabel":"string"},"locale":{"type":"string","description":"Optional assignment locale. Defaults to the global/default assignment (\"\").","uniqueKey":"assignments.items.[INDEX].locale","typeLabel":"string"}},"uniqueKey":"assignments.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"assignments","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"assignments":[{"handle":"summer-sale","shopifyResourceId":"gid://shopify/Collection/123456789"},{"handle":"winter-drop","shopifyResourceId":"gid://shopify/Collection/987654321"}]},"examples":{"Example":{"title":"Example","value":{"assignments":[{"handle":"summer-sale","shopifyResourceId":"gid://shopify/Collection/123456789"},{"handle":"winter-drop","shopifyResourceId":"gid://shopify/Collection/987654321"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"ceb9ef5c-8e84-4cb8-b413-094dc309da88":{"description":"Assignments applied. `created` = new rows; `existing` = idempotent no-ops.","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["template_assignments"],"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"pageId":{"type":"string","uniqueKey":"pageId","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"},"requested":{"type":"integer","uniqueKey":"requested","typeLabel":"integer"},"created":{"type":"array","description":"Newly created assignment rows pointing at this page.","items":{"type":"object","properties":{"handle":{"type":"string","uniqueKey":"created.items.[INDEX].handle","typeLabel":"string"},"locale":{"type":"string","uniqueKey":"created.items.[INDEX].locale","typeLabel":"string"},"assignmentId":{"type":"string","uniqueKey":"created.items.[INDEX].assignmentId","typeLabel":"string"}},"uniqueKey":"created.items.[INDEX]","typeLabel":"object"},"uniqueKey":"created","typeLabel":"object[]"},"existing":{"type":"array","description":"Resources already assigned to this page (idempotent no-op).","items":{"type":"object","properties":{"handle":{"type":"string","uniqueKey":"existing.items.[INDEX].handle","typeLabel":"string"},"locale":{"type":"string","uniqueKey":"existing.items.[INDEX].locale","typeLabel":"string"},"assignmentId":{"type":"string","uniqueKey":"existing.items.[INDEX].assignmentId","typeLabel":"string"}},"uniqueKey":"existing.items.[INDEX]","typeLabel":"object"},"uniqueKey":"existing","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"object":"template_assignments","pageId":"clz2r7t5w0002mnop9012qrst","type":"COLLECTION","requested":2,"created":[{"handle":"summer-sale","locale":"","assignmentId":"clz5b1c2d0008wxyz3456abcd"}],"existing":[{"handle":"winter-drop","locale":"","assignmentId":"clz5b0a1b0009wxyz7890efgh"}]},"examples":{"Example":{"title":"Example","value":{"object":"template_assignments","pageId":"clz2r7t5w0002mnop9012qrst","type":"COLLECTION","requested":2,"created":[{"handle":"summer-sale","locale":"","assignmentId":"clz5b1c2d0008wxyz3456abcd"}],"existing":[{"handle":"winter-drop","locale":"","assignmentId":"clz5b0a1b0009wxyz7890efgh"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"f0410359-250e-4667-ad92-b7d628d9f841":{"description":"Invalid params, or the page cannot carry resource assignments","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"358a9e07-aa77-4584-8963-4ccbf7095f46":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"eb855288-50ef-4c4f-be90-d3fe880a6e71":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"649a4051-4099-4838-aa0e-cf94e6cc73a7":{"description":"Project or template page not found in this project","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"5cf3dd07-8d2b-4f32-acad-259113c9b926":{"description":"Method not allowed","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"2f7029f9-e4a2-4b51-bf9b-458a561bab1a":{"description":"A handle already belongs to a different live page (or a concurrent write won the race); nothing was assigned. `details.conflicts` lists the clashing handles.","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"example":{"object":"error","code":"CONFLICT","message":"1 of 2 resource(s) already belong to a different page; no assignments were created","status":409,"details":{"conflicts":[{"handle":"winter-drop","locale":"","assignmentId":"clz5b0a1b0009wxyz7890efgh"}]}},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"CONFLICT","message":"1 of 2 resource(s) already belong to a different page; no assignments were created","status":409,"details":{"conflicts":[{"handle":"winter-drop","locale":"","assignmentId":"clz5b0a1b0009wxyz7890efgh"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"ba31497c-a286-4818-b9f8-ad35e5a8b3b9":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","required":["object","code","message","status"],"properties":{"object":{"type":"string","enum":["error"],"isRequired":true,"uniqueKey":"object","typeLabel":"enum\u003cstring>"},"code":{"type":"string","enum":["UNAUTHORIZED","FORBIDDEN","INSUFFICIENT_SCOPE","PROJECT_NOT_FOUND","PAGE_NOT_FOUND","STALE_PAGE","STALE_PROJECT","STALE_TRANSLATION","TRANSLATION_UNIT_NOT_FOUND","SERVICE_UNAVAILABLE","CONFLICT","PRECONDITION_REQUIRED","INVALID_PARAMS","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"details":{"description":"Optional machine-readable context, for example the clashing handles of a 409 CONFLICT.","uniqueKey":"details","typeLabel":"any"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"object":"error","code":"UNAUTHORIZED","message":"\u003cstring>","status":123,"details":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"15700b4d-44b3-4c88-a94b-4706f3058ff6":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"WEAVERSE_API_KEY","description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"06e8abcf-d98e-4c65-a1d0-4fa031893726":{"url":"https://studio.weaverse.io/api/v1/content","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"WEAVERSE_API_KEY","description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token: a shop API key (`WEAVERSE_API_KEY`), a scoped API key or a delegated MCP OAuth token; translation-unit routes also accept a project-bound translation agent token. Each operation lists the scope it requires; the scope table is in the API description.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://studio.weaverse.io/api/v1/content/openapi.json"},"subdomain":"weaverse","siteName":"Weaverse","title":"Assign resources to a shared template page - Weaverse","navMaps":{"firstHrefInVersion":{"v5.x":{"href":"/content-api/assignments/assign-resources-to-a-shared-template-page","matchLevel":0}},"firstHrefInLanguage":{}},"originalFileLocation":"content-api/assignments/assign-resources-to-a-shared-template-page.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead. - The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400. - Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment (\u0026quot;\u0026quot;). - A resource already assigned to this page is an idempotent no-op, reported under existing. - All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry. - New rows are created in a single transaction. All lookups and writes are scoped to projectId. Required scope: content:write\">\u003cmeta data-mint-head name=\"keywords\" content=\"Weaverse, Shopify Hydrogen, headless commerce, visual page builder, React Router, Next.js\">\u003cmeta data-mint-head name=\"application-name\" content=\"Weaverse\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Assign resources to a shared template page - Weaverse\">\u003cmeta data-mint-head property=\"og:description\" content=\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead. - The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400. - Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment (\u0026quot;\u0026quot;). - A resource already assigned to this page is an idempotent no-op, reported under existing. - All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry. - New rows are created in a single transaction. All lookups and writes are scoped to projectId. Required scope: content:write\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Weaverse Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://weaverse.mintlify.site/docs/_mintlify/api/og/v2?division=Assignments\u0026amp;title=Assign+resources+to+a+shared+template+page\u0026amp;description=Assigns+many+Shopify+resources+to+one+existing+template+page%3A+the+shared-template+model+%28one+page%2C+many+assignments%29.+Each+resource+becomes+its+own+assignment+r\u0026amp;theme=27b71a4830417710c5655f27\u0026amp;signature=361a03850ee3e9dbaea5d55a06cedbd41b683195d54137981755f6b8600aac9a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Assign resources to a shared template page - Weaverse\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead. - The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400. - Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment (\u0026quot;\u0026quot;). - A resource already assigned to this page is an idempotent no-op, reported under existing. - All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry. - New rows are created in a single transaction. All lookups and writes are scoped to projectId. Required scope: content:write\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://weaverse.mintlify.site/docs/_mintlify/api/og/v2?division=Assignments\u0026amp;title=Assign+resources+to+a+shared+template+page\u0026amp;description=Assigns+many+Shopify+resources+to+one+existing+template+page%3A+the+shared-template+model+%28one+page%2C+many+assignments%29.+Each+resource+becomes+its+own+assignment+r\u0026amp;theme=27b71a4830417710c5655f27\u0026amp;signature=361a03850ee3e9dbaea5d55a06cedbd41b683195d54137981755f6b8600aac9a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/weaverse/BNjY59OJurJKyxIa/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Weaverse\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#246aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/content-api/assignments/assign-resources-to-a-shared-template-page.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://weaverse.io/#organization\",\"name\":\"Weaverse\",\"url\":\"https://weaverse.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.weaverse.io/logo/light.svg\"},\"sameAs\":[\"https://github.com/weaverse\",\"https://x.com/WeaverseIO\",\"https://wvse.cc/weaverse-slack\"]},{\"@type\":\"WebSite\",\"@id\":\"https://weaverse.io/docs#website\",\"name\":\"Weaverse\",\"url\":\"https://weaverse.io/docs\",\"publisher\":{\"@id\":\"https://weaverse.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page#webpage\",\"url\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page\",\"name\":\"Assign resources to a shared template page\",\"description\":\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead. - The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400. - Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment (\\\"\\\"). - A resource already assigned to this page is an idempotent no-op, reported under existing. - All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry. - New rows are created in a single transaction. All lookups and writes are scoped to projectId. Required scope: content:write\",\"isPartOf\":{\"@id\":\"https://weaverse.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Weaverse\",\"item\":\"https://weaverse.io/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Assign resources to a shared template page\",\"item\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page#apireference\",\"headline\":\"Assign resources to a shared template page\",\"name\":\"Assign resources to a shared template page\",\"description\":\"Assigns many Shopify resources to one existing template page: the shared-template model (one page, many assignments). Each resource becomes its own assignment row pointing at pageId, so the template content stays shared, not copied. To create an independent, editable copy per resource, use POST /projects/{projectId}/pages instead. - The target must be a live page assigned to this project. Its type is derived from its existing assignments and must be resource-backed (PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE); any other type returns 400. - Send 1-100 entries in assignments. handle is the Shopify resource handle (trimmed, kept verbatim); locale defaults to the global assignment (\\\"\\\"). - A resource already assigned to this page is an idempotent no-op, reported under existing. - All-or-nothing. Every handle is checked first. If any handle already belongs to a different live page, the whole request returns 409 CONFLICT with the clashing handles in details.conflicts, and nothing is written. A resource is never repointed away from another page: unassign it from its current template, then retry. - New rows are created in a single transaction. All lookups and writes are scoped to projectId. Required scope: content:write\",\"url\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page\",\"mainEntityOfPage\":{\"@id\":\"https://weaverse.io/docs/content-api/assignments/assign-resources-to-a-shared-template-page#webpage\"},\"publisher\":{\"@id\":\"https://weaverse.io/#organization\"},\"isPartOf\":{\"@id\":\"https://weaverse.io/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Weaverse\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Weaverse","nav":{"global":null,"versions":[{"version":"v5.x","default":true,"tag":"Latest","tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"Guides","dropdowns":[{"dropdown":"React Router","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/react-router.svg","groups":[{"group":"Environment","pages":[{"title":"Environment Variables","href":"/development-guide/environment-setup"},{"title":"Studio vs. Live Environment","href":"/development-guide/design-mode"}]},{"group":"Building Components","pages":[{"title":"Creating Components","href":"/development-guide/creating-components"},{"title":"Component Schema","href":"/development-guide/component-schema"},{"title":"Input Settings","href":"/development-guide/input-settings"},{"title":"Weaverse Hydrogen Component","href":"/development-guide/weaverse-component"},{"title":"Styling \u0026 Theming","href":"/development-guide/styling-theming"},{"title":"Section Data Fetching","href":"/development-guide/data-fetching"},{"title":"Data Connectors","href":"/development-guide/data-connectors"}]},{"group":"Content Management","pages":[{"title":"Global Sections","href":"/features/global-sections"},{"title":"Scheduled Publishing","href":"/features/schedule-publish"},{"title":"Navigation Configuration","href":"/features/navigation-menus"},{"title":"Third-party Integration","href":"/features/third-party-integrations"},{"title":"Installable Mobile App (PWA)","href":"/features/mobile-app-pwa"}]},{"group":"Internationalization","pages":[{"title":"Markets and Localization","href":"/features/markets-localization"},{"title":"Translation Feature Guide","href":"/features/translation-feature-guide"},{"title":"i18next Integration","href":"/features/i18next-integration"}]},{"group":"Security \u0026 Privacy","pages":[{"title":"Content Security Policy","href":"/features/content-security"},{"title":"Cookie Consent Banner","href":"/features/cookie-consent-banner"},{"title":"Analytics \u0026 Conversion Tracking","href":"/features/analytics-tracking"},{"title":"Security \u0026 Deployment Practices","href":"/features/security-deployment-practices"}]},{"group":"Pages \u0026 Routing","pages":[{"title":"Custom Pages","href":"/features/custom-pages"},{"title":"Page SEO","href":"/features/page-seo"},{"title":"Custom Templates","href":"/features/custom-templates"},{"title":"Custom Routing","href":"/features/custom-routing"}]},{"group":"Advanced","pages":[{"title":"Rendering Weaverse Pages","href":"/guides/rendering-page"},{"title":"Advanced Localization Guide","href":"/guides/localization-advanced"},{"title":"Multi-Project Architecture","href":"/guides/multi-project-architecture"},{"title":"Customer Account API Local Development","href":"/development-guide/customer-account-local-dev"},{"title":"Multipass in Hydrogen","href":"/development-guide/multipass-in-hydrogen"}]},{"group":"Deployment","root":{"title":"Deployment","href":"/guides/deployment/index"},"directory":"card","pages":[{"title":"Deploy to Shopify Oxygen","href":"/guides/deployment/oxygen"},{"title":"Custom Domain \u0026 DNS Setup","href":"/guides/deployment/custom-domain-and-dns"},{"title":"Deploy with Docker","href":"/guides/deployment/docker"},{"title":"Deploy to Cloudflare Workers","href":"/guides/deployment/workers"}]}]},{"dropdown":"Next.js","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/nextjs.svg","groups":[{"group":"Getting started","pages":[{"title":"Weaverse for Next.js","href":"/nextjs/overview"},{"title":"Next.js Quickstart","href":"/nextjs/quickstart"}]},{"group":"Next.js","pages":[{"title":"Rendering Pages in Next.js","href":"/nextjs/rendering-pages"},{"title":"Data Fetching in Next.js","href":"/nextjs/data-fetching"},{"title":"Connect Weaverse Studio","href":"/nextjs/studio"},{"title":"Markets \u0026 Translations","href":"/nextjs/markets-translations"}]},{"group":"Content Management","pages":[{"title":"Global Sections","href":"/features/global-sections"},{"title":"Navigation Configuration","href":"/features/navigation-menus"},{"title":"Third-party Integrations in Next.js","href":"/nextjs/third-party-integrations"},{"title":"Installable Mobile App (PWA)","href":"/features/mobile-app-pwa"}]},{"group":"Deployment","pages":[{"title":"Deploy to Vercel","href":"/guides/deployment/vercel"}]}]}]},{"tab":"SDKs","dropdowns":[{"dropdown":"React Router","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/react-router.svg","groups":[{"group":"Overview","pages":[{"title":"Introduction","sidebarTitle":"Overview","href":"/api-reference/introduction"}]},{"group":"Hooks","pages":[{"title":"useWeaverse","href":"/api-reference/use-weaverse"},{"title":"useItemInstance","href":"/api-reference/use-item-instance"},{"title":"useParentInstance","href":"/api-reference/use-parent-instance"},{"title":"useChildInstances","href":"/api-reference/use-child-instances"},{"title":"useThemeSettings","href":"/api-reference/use-theme-settings"}]},{"group":"Components","pages":[{"title":"WeaverseHydrogenRoot","href":"/api-reference/weaverse-root"},{"title":"WeaverseClient","href":"/api-reference/weaverse-client"},{"title":"withWeaverse","href":"/api-reference/with-weaverse"}]},{"group":"Utilities \u0026 Types","pages":[{"title":"getSelectedProductOptions","href":"/api-reference/get-selected-product-options"},{"title":"IMAGES_PLACEHOLDERS","href":"/api-reference/images-placeholders"},{"title":"Types","href":"/api-reference/types"}]}]},{"dropdown":"Next.js","icon":"https://mintlify.s3.us-west-1.amazonaws.com/weaverse/images/icons/nextjs.svg","groups":[{"group":"Overview","pages":[{"title":"@weaverse/next API Reference","href":"/nextjs/api-reference"}]},{"group":"Hooks","pages":[{"title":"useWeaverse","href":"/nextjs/api/use-weaverse"},{"title":"useItemInstance","href":"/nextjs/api/use-item-instance"},{"title":"useParentInstance","href":"/nextjs/api/use-parent-instance"},{"title":"useChildInstances","href":"/nextjs/api/use-child-instances"},{"title":"useThemeSettings","href":"/nextjs/api/use-theme-settings"}]}]}]},{"tab":"Content API","groups":[{"group":"Get started","pages":[{"title":"Content API","sidebarTitle":"Overview","href":"/content-api/overview"},{"title":"Portable Text Format","href":"/content-api/portable-text"},{"title":"List Public Custom Pages","href":"/content-api/public-custom-pages"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects","href":"/content-api/projects/list-projects"},{"title":"Run a project lifecycle operation","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects","href":"/content-api/projects/run-a-project-lifecycle-operation"},{"title":"Get project","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}","href":"/content-api/projects/get-project"},{"title":"Update project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}","href":"/content-api/projects/update-project"}]},{"group":"Pages","pages":[{"title":"List page assignments","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/pages","href":"/content-api/pages/list-page-assignments"},{"title":"Create a page","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/pages","href":"/content-api/pages/create-a-page"},{"title":"Bulk delete pages","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /projects/{projectId}/pages","href":"/content-api/pages/bulk-delete-pages"},{"title":"Get page content","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/get-page-content"},{"title":"Update page content","description":"Edits component items on the page resolved for `type` / `handle` / `locale`, using the same fallback as the GET endpoint. Pass the exact handle from the pages list; it may include `/`. Singleton types accept an empty handle; `CUSTOM` and per-resource types require one.\n\n- `data` is shallow-merged into the item's existing data: send only changed top-level keys. Nested objects are replaced wholesale.\n- Up to 100 items per request; item ids must be unique within the request.\n- An unknown item id is created only when `type` is supplied; otherwise it is returned in `notFoundIds`.\n- `children` replaces an item's top-level child references. Each reference must point to an existing page item or a typed new item created in the same request.\n- A page inherited from a parent project returns `409`; edit it on the source project.\n- `exact: true` writes only the assignment whose stored type, handle and locale match exactly, returning `404` instead of falling back. Delegated writes are always exact.\n\nConcurrency: pass the `updatedAt` from your GET as `expectedUpdatedAt`. If the page changed since, the whole request is rejected with `409 STALE_PAGE` before any item is written; re-read and reapply on top of the newer content instead of retrying the same patch. Delegated (MCP OAuth) tokens must send it (`428 PRECONDITION_REQUIRED` otherwise); it is optional for API keys.\n\nOn success the edit goes live through api.weaverse.io like a Studio save. Clients or proxies that cannot send `PATCH` bodies may send `POST`.\n\nRequired scope: `content:write`","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/pages/{type}/{handle}","href":"/content-api/pages/update-page-content"}]},{"group":"Assignments","pages":[{"title":"Assign resources to a shared template page","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/template-assignments/{pageId}","href":"/content-api/assignments/assign-resources-to-a-shared-template-page"},{"title":"List page assignments","description":"Lists every live page assignment of the project, ordered by type, then handle. An assignment binds a page to a route: `type`, `handle` and `locale`. Use the returned `id` values with the POST operations on this endpoint.\n\nRequired scope: `content:read`","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/assignments","href":"/content-api/assignments/list-page-assignments"},{"title":"Update, localize or remove page assignments","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/assignments","href":"/content-api/assignments/update-localize-or-remove-page-assignments"}]},{"group":"Theme settings","pages":[{"title":"Get theme settings","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/theme-settings","href":"/content-api/theme-settings/get-theme-settings"},{"title":"Update theme settings","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /projects/{projectId}/theme-settings","href":"/content-api/theme-settings/update-theme-settings"}]},{"group":"Languages and localization","pages":[{"title":"List project languages","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/languages","href":"/content-api/languages-and-localization/list-project-languages"},{"title":"Get languages, glossary or static text","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/localization","href":"/content-api/languages-and-localization/get-languages-glossary-or-static-text"},{"title":"Manage languages, glossary and static text","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/localization","href":"/content-api/languages-and-localization/manage-languages-glossary-and-static-text"}]},{"group":"Specification","pages":[{"title":"Get the OpenAPI specification","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /openapi.json","href":"/content-api/specification/get-the-openapi-specification"}]},{"group":"Translations","pages":[{"title":"Read a page's translations for one locale","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-translations/{pageId}","href":"/content-api/translations/read-a-pages-translations-for-one-locale"},{"title":"Apply translations for one page and locale","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/page-translations/{pageId}","href":"/content-api/translations/apply-translations-for-one-page-and-locale"},{"title":"List translation units for a target locale","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/translation-units","href":"/content-api/translations/list-translation-units-for-a-target-locale"},{"title":"Validate or apply a translation batch","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/translations/{operation}","href":"/content-api/translations/validate-or-apply-a-translation-batch"}]},{"group":"Drafts and publishing","pages":[{"title":"Get a page's editable content and revision tokens","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/get-a-pages-editable-content-and-revision-tokens"},{"title":"Save a page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json put /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/save-a-page-draft"},{"title":"Discard a page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /projects/{projectId}/page-drafts/{pageId}","href":"/content-api/drafts-and-publishing/discard-a-page-draft"},{"title":"Publish a saved page draft","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /publish-versions/{versionId}","href":"/content-api/drafts-and-publishing/publish-a-saved-page-draft"},{"title":"List page versions, theme versions or the schedule","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/versions","href":"/content-api/drafts-and-publishing/list-page-versions-theme-versions-or-the-schedule"},{"title":"Get one page or theme version","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /versions/{versionId}","href":"/content-api/drafts-and-publishing/get-one-page-or-theme-version"},{"title":"Replace a version's pending content","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json put /versions/{versionId}","href":"/content-api/drafts-and-publishing/replace-a-versions-pending-content"},{"title":"Cancel a scheduled publication","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json delete /versions/{versionId}","href":"/content-api/drafts-and-publishing/cancel-a-scheduled-publication"},{"title":"Reschedule a scheduled version","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json patch /versions/{versionId}","href":"/content-api/drafts-and-publishing/reschedule-a-scheduled-version"},{"title":"Schedule a version for publication","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/schedule","href":"/content-api/drafts-and-publishing/schedule-a-version-for-publication"},{"title":"Publish a scheduled version immediately","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/publish-now","href":"/content-api/drafts-and-publishing/publish-a-scheduled-version-immediately"},{"title":"Restore a version to live","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /versions/{versionId}/restore","href":"/content-api/drafts-and-publishing/restore-a-version-to-live"}]},{"group":"Global sections","pages":[{"title":"List global sections","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/global-sections","href":"/content-api/global-sections/list-global-sections"},{"title":"Promote an item to a global section","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/global-sections","href":"/content-api/global-sections/promote-an-item-to-a-global-section"},{"title":"Get a global section's draft","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/global-sections/{sectionId}","href":"/content-api/global-sections/get-a-global-sections-draft"},{"title":"Rename, delete, or draft and publish a global section","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/global-sections/{sectionId}","href":"/content-api/global-sections/rename-delete-or-draft-and-publish-a-global-section"}]},{"group":"Page settings","pages":[{"title":"Get page settings","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/page-settings/{pageId}","href":"/content-api/page-settings/get-page-settings"},{"title":"Rename a page or update its SEO","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/page-settings/{pageId}","href":"/content-api/page-settings/rename-a-page-or-update-its-seo"}]},{"group":"Project structure","pages":[{"title":"Get project hierarchy","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/hierarchy","href":"/content-api/project-structure/get-project-hierarchy"},{"title":"Manage variants and page overrides","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/hierarchy","href":"/content-api/project-structure/manage-variants-and-page-overrides"}]},{"group":"Backups and portability","pages":[{"title":"List, download or diff project backups","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/backups","href":"/content-api/backups-and-portability/list-download-or-diff-project-backups"},{"title":"Create a backup or restore one as a new project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/backups","href":"/content-api/backups-and-portability/create-a-backup-or-restore-one-as-a-new-project"},{"title":"Export the live project","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/export","href":"/content-api/backups-and-portability/export-the-live-project"},{"title":"Import an export file into this project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/import","href":"/content-api/backups-and-portability/import-an-export-file-into-this-project"},{"title":"Restore an uploaded backup file as a new project","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /backup-restores","href":"/content-api/backups-and-portability/restore-an-uploaded-backup-file-as-a-new-project"}]},{"group":"Previews and hostnames","pages":[{"title":"List preview URLs","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/previews","href":"/content-api/previews-and-hostnames/list-preview-urls"},{"title":"Create, update or delete a preview URL","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/previews","href":"/content-api/previews-and-hostnames/create-update-or-delete-a-preview-url"},{"title":"List observed storefront hostnames","deprecated":null,"version":null,"openapi":"https://studio.weaverse.io/api/v1/content/openapi.json get /projects/{projectId}/hostnames","href":"/content-api/previews-and-hostnames/list-observed-storefront-hostnames"},{"title":"Block or unblock a storefront hostname","deprecated":null,"version":null,"playground":"simple","openapi":"https://studio.weaverse.io/api/v1/content/openapi.json post /projects/{projectId}/hostnames","href":"/content-api/previews-and-hostnames/block-or-unblock-a-storefront-hostname"}]}]},{"tab":"Ecosystem","pages":[{"title":"Ecosystem","href":"/ecosystem"}]},{"tab":"Help \u0026 Community","pages":[{"title":"Help \u0026 Community","href":"/resources"}]}]}]},"basePath":"","title":"Assign resources to a shared template page - Weaverse","buildId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","deploymentId":"dpl_3pZeXn3XukjzFRgAX73A7GNDfRJ1","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CW3yP2DK.js","utils-BN0nty2W.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C8_MydSG.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bsl5xDMQ.js","snippetPresets-DYv9OBej.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-9OnYPrVf.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-xr67xWGO.js","shallow-DO1aDdBF.js","getApiPlaygroundDisplay-o7cLzFL-.js","CodeSnippet-CGr2yOA8.js","CodeSnippets-CzBbqPNh.js","Page-CBlOSKZG.js","getPastedJson-dpi9sn5Y.js","icon-aIWHt8Pn.js","MethodPill-Bv2zLsGY.js","DuplicateIcon-DxFSz0J6.js","createIcon-uDNv6jwj.js","DynamicMarkdown-C91yhnNP.js","SectionHeading-DG_xjOLR.js","axios-vUo_bRtp.js","Markdown-B4M_Eo1P.js","clsx-DShopWo_.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BX6wab7q.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-48h67xm_.js"]}