[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-wix-rp-target-wix":3,"mdc-s5okj4-key":31,"related-org-wix-rp-target-wix":1488,"related-repo-wix-rp-target-wix":1645},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"rp-target-wix","validate Wix API write operations","Wix target adapter with verified write primitives (wix-writers.js) and contract tests. Use when vendoring Wix writers, validating API shapes, or Wix provisioning mechanics.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"wix","Wix","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fwix.jpg",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"API Development","api-development",{"name":18,"slug":19,"type":13},"Testing","testing",23,"https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills","2026-07-01T08:08:03.226054",null,28,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"Wix Skills","https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills\u002Ftree\u002FHEAD\u002Freplatform\u002Frp-target-wix","---\nname: rp-target-wix\ndescription: >-\n  Wix target adapter with verified write primitives (wix-writers.js) and contract tests.\n  Use when vendoring Wix writers, validating API shapes, or Wix provisioning mechanics.\n---\n\n# rp-target-wix\n\nWix **target adapter**. Owns the Wix-side write surface that every migration shares —\nverified once here so the platform-agnostic stages and per-project codegen never\nre-derive (and re-break) it. This is the symmetric counterpart to `rp-source-wordpress`:\nthat adapter owns *reading* a source platform; this one owns *writing* to Wix.\n\n## When this skill is used\n\nNot a stage in the flow — a reference + shared library consulted by:\n\n- **`rp-import-codegen`** vendors `lib\u002Fwix-writers.js` into the project (like the\n  `wp-http` transport) and generates writers that **call these primitives**, supplying\n  only per-project field maps. Codegen does not re-emit Wix API plumbing.\n- **`rp-setup-discovery` \u002F `rp-execute-setup`** consult the \"Verified endpoints\" and\n  \"Provisioning\" notes for app-install \u002F Wix-Data \u002F collection mechanics.\n\nBecause the Wix surface is identical across source platforms, adding a new source\n(`rp-source-shopify`, …) requires **no change here**.\n\n## Write contract (the verified Wix surface)\n\n`lib\u002Fwix-writers.js` exposes pure request builders (`build*Request`) + executors. Shapes\nmarked **VERIFIED** were validated by a real call against a live site, not just read from\ndocs. Shapes marked **UNVERIFIED** are docs-schema\u002FMCP-derived bootstrap primitives that\nmust be surfaced in execution plans until a live contract call promotes them. It also\nexports `sendDirectRest` and `notifyMissingWriter` for generated native REST paths when\nWix has a native entity but this adapter does not yet ship a dedicated primitive.\n\n| Capability | Endpoint | Notes \u002F traps |\n| --- | --- | --- |\n| HTML → rich content | `POST \u002Fricos\u002Fv1\u002Fricos-document\u002Fconvert\u002Fto-ricos` | VERIFIED. `options.plugins` enum is **UPPERCASE** — docs example shows lowercase and 400s (FR-007). |\n| Import media from URL | `POST \u002Fsite-media\u002Fv1\u002Ffiles\u002Fimport` | VERIFIED. **Async**: response is `PENDING`; poll `GET \u002Fsite-media\u002Fv1\u002Ffiles\u002F{id}` for `READY` before referencing. |\n| Blog category | `POST \u002Fblog\u002Fv3\u002Fcategories` | VERIFIED. body `{ category: { label, slug, description } }`. |\n| Blog tag | `POST \u002Fblog\u002Fv3\u002Ftags` | VERIFIED. Body is **top-level `{ label, language }`** — NOT `{ tag: { label, slug } }`; slug is derived. |\n| Blog post | `POST \u002Fblog\u002Fv3\u002Fdraft-posts` → `…\u002F{id}\u002Fpublish` | VERIFIED. `memberId` **required** (3rd-party). Featured image is **`heroImage.id`** (WixMedia GUID), not `media.wixMedia.image.id`. |\n| CMS item | `POST \u002Fwix-data\u002Fv2\u002Fitems` | VERIFIED. `{ dataCollectionId, dataItem: { data } }`. Requires Wix Data enabled (else `WDE0110`). |\n| Members | `GET`\u002F`POST \u002Fmembers\u002Fv1\u002Fmembers` | VERIFIED. dedup by `loginEmail` (gated PII; use a fallback member when absent). |\n| Stores product | `POST \u002Fstores\u002Fv3\u002Fproducts`, `POST \u002Fstores\u002Fv3\u002Fproducts\u002Fquery` | UNVERIFIED docs-schema bootstrap. Product payload is project-specific; promote only after sandbox create\u002Fquery succeeds. |\n| Stores product Catalog V1 fallback | `POST \u002Fstores\u002Fv1\u002Fproducts`, `POST \u002Fstores\u002Fv1\u002Fproducts\u002Fquery` | TEMPORARY FR-013 fallback. Use only when the destination site reports `CATALOG_V1`; remove this row and the matching code block when FR-013 is resolved and fresh Stores installs are always Catalog V3. |\n| Stores collection Catalog V1 fallback | `POST \u002Fstores\u002Fv1\u002Fcollections`, `POST \u002Fstores\u002Fv1\u002Fcollections\u002Fquery` | TEMPORARY FR-013 fallback for Woo product categories on Catalog V1 sites. Use as the native Stores grouping target instead of CMS. Remove with FR-013. |\n| Stores category | `POST \u002Fcategories\u002Fv1\u002Fcategories` | UNVERIFIED docs-schema\u002Fproject-artifact bootstrap. Confirm destination Stores category semantics before live import. |\n| Contacts | `POST \u002Fcontacts\u002Fv4\u002Fcontacts`, `POST \u002Fcontacts\u002Fv4\u002Fcontacts\u002Fquery` | VERIFIED (2026-06-16). V4 list fields are wrapper objects: `emails.items`, `phones.items`, `addresses.items`; arrays directly under `info` return 400. Duplicate handling still depends on `allowDuplicates`. |\n| Coupons | `POST \u002Fstores\u002Fv2\u002Fcoupons`, `POST \u002Fstores\u002Fv2\u002Fcoupons\u002Fquery` | UNVERIFIED bootstrap. Prefer native Wix coupons because Wix has a native coupon entity; do not special-case coupons into CMS merely for caution or because scoping must be mapped. Fallback is only for source semantics with no native representation. |\n| eCom order | `POST \u002Fecom\u002Fv1\u002Forders`, `POST \u002Fecom\u002Fv1\u002Forders\u002Fquery` | UNVERIFIED docs-schema bootstrap. Treat as blocked unless setup verification proves historical order creation is side-effect-free. |\n| Direct native REST | any Wix REST path derived by codegen | UNVERIFIED generated path for native Wix entities missing a dedicated adapter writer. Must log, call `notifyMissingWriter`, and be shown in the execution plan. |\n\n## Media import source URL reachability\n\nThe media primitive imports by URL: Wix servers fetch the provided `sourceUrl`. Public\nHTTPS URLs are expected; `localhost`, `127.0.0.1`, Docker-only hosts, and other\nprivate-only URLs are not reachable by Wix during a live import. This is optional source\npreparation and, as far as we know today, affects media import only.\n\nIf the source system is local, the migration should either:\n\n- expose the source through a public HTTPS tunnel, then pass\u002Frewire media URLs to that\n  public base URL; or\n- skip\u002Fdefer media import and clearly state which media-dependent references will be\n  missing until media is imported.\n\nNgrok quick setup for macOS:\n\n```bash\nbrew install ngrok\nngrok config add-authtoken \"\u003CYOUR_AUTHTOKEN>\"\nngrok http 8090\nexport WP_BASE_URL=https:\u002F\u002F\u003Cid>.ngrok-free.app\n```\n\n## Validate by real call — do not trust doc examples\n\nCodegen-time MCP doc checks confirm an endpoint *exists*; they do **not** confirm the\nrequest *shape works*. The live wporg-news import proved doc examples can be wrong\n(lowercase Ricos plugins → 400) or incomplete (featured image field, tag body). The\nrule for this adapter:\n\n- Treat a shape as verified **only after a real call succeeds** — encode the working\n  shape here with a `\u002F\u002F VERIFIED:` (or `\u002F\u002F VERIFIED-TRAP:`) note and a date.\n- A `\u002F\u002F UNVERIFIED:` primitive is allowed as a bootstrap point for generated code, but it\n  is not a silent live-write permission. The execution plan must call it out, and setup\n  verification must either promote it with a sandbox\u002Flive validation or route to fallback.\n- Keep `scripts\u002Fcontract-test.js` current: it issues one real call per primitive\n  against a sandbox site and is the single place schema drift surfaces. Run from the\n  `rp-target-wix` skill directory:\n\n  ```bash\n  node scripts\u002Fcontract-test.js\n  WIX_AUTH_TOKEN=... WIX_SITE_ID=... node scripts\u002Fcontract-test.js\n  ```\n\n  Run on a cadence and after any Wix API change. A failing contract test — not a stranger's\n  broken import — is how we learn the surface moved.\n\n## Temporary Stores Catalog V1 fallback (FR-013)\n\nRemove this section as a whole when fresh Wix Stores installs reliably support Catalog\nV3 product writes without the V1 fallback (internal tracking: FR-013).\n\nFresh Wix Stores installs are expected to become Catalog V3-only. Until Wix Stores fixes\nthat flow, setup verification may discover a freshly installed Stores site that reports\n`CATALOG_V1` when probed through `POST \u002Fstores\u002Fv3\u002Fproducts\u002Fquery`. In that case:\n\n- Keep using a native Stores product target; do **not** route products to CMS just because\n  the V3 writer is unusable for this site.\n- Use the temporary Catalog V1 native REST fallback in `lib\u002Fwix-writers.js`.\n- Map source product categories to Stores V1 collections on Catalog V1 sites; pass those\n  collection IDs to V1 product create as `collectionIds`.\n- Log the fallback through `notifyMissingWriter` and surface it in the execution plan as\n  an unverified native path.\n- Promote the V1 fallback only after a sandbox create\u002Fquery succeeds, or delete it once\n  FR-013 is done.\n\n## What stays in codegen (not here)\n\nPer-project field maps and ordering (which source field → which `data` key, the\nmedia\u002Fauthor\u002Ftaxonomy ref maps, upsert-by-key) live in the generated transforms\u002Fwriters.\nThis adapter holds only the invariant Wix request shapes + transport. Collection names\nand schemas (`PodcastEpisodes`, …) are project-specific and come from the mapping plan.\n\n## Provisioning pointers (see rp-execute-setup)\n\n- Apps (Blog, Members) install via the App Installation API; ground `appDefId` from the\n  official \"Apps Created by Wix\" table.\n- **Wix Data enablement** (`WDE0110`): install the **Wix Data app `appDefId\n  e593b0bd-b783-45b8-97c2-873d42aacaf4`** via the App Installation API; afterward `POST\n  \u002Fwix-data\u002Fv2\u002Fcollections` creates NATIVE collections with no `WDE0110` (verified live).\n  Fallback: a custom app with a data-collections extension (declares collections at\n  install time, but can't express REFERENCE fields).\n\n## Scope & coverage\n\nWix has many apps\u002Fentities (Stores, Bookings, Events, Restaurants, Pricing Plans, CRM,\n…). This adapter does **not** pre-build all of them. Coverage is **demand-driven** and\ngrows through reviewed releases. A migration may still target a native Wix entity before a\ndedicated primitive exists; in that case codegen emits a native REST path using\n`sendDirectRest`, logs the missing primitive, and calls `notifyMissingWriter` so the\nRePlatform team can add the writer later.\n\n**Native target ladder when no dedicated writer exists:**\n\n1. **Use the dedicated `rp-target-wix` primitive** when one exists.\n2. **If Wix has a native entity but no dedicated primitive, generate a native REST call**\n   from Wix MCP\u002Fdocs-schema, mark it `UNVERIFIED`, log it, call `notifyMissingWriter`, and\n   surface it in the execution plan before any write. This is not a silent live write.\n3. **Use CMS only when there is no suitable native Wix entity, or when the native entity\n   is explicitly rejected for fidelity\u002Fside-effect reasons.** CMS is not a fallback for a\n   missing adapter writer.\n4. **Halt** if neither a native path nor an acceptable CMS\u002Fcustom target exists.\n\nThe invariant: **anything not backed by a verified primitive is surfaced to the user for\nconsent before execution** — never written silently.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,43,81,88,93,157,177,183,231,829,835,863,868,881,886,1020,1026,1052,1181,1187,1192,1211,1265,1271,1292,1298,1359,1365,1397,1405,1470,1482],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":4},"text",{"type":37,"tag":44,"props":45,"children":46},"p",{},[47,49,55,57,64,66,72,74,79],{"type":42,"value":48},"Wix ",{"type":37,"tag":50,"props":51,"children":52},"strong",{},[53],{"type":42,"value":54},"target adapter",{"type":42,"value":56},". Owns the Wix-side write surface that every migration shares —\nverified once here so the platform-agnostic stages and per-project codegen never\nre-derive (and re-break) it. This is the symmetric counterpart to ",{"type":37,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":42,"value":63},"rp-source-wordpress",{"type":42,"value":65},":\nthat adapter owns ",{"type":37,"tag":67,"props":68,"children":69},"em",{},[70],{"type":42,"value":71},"reading",{"type":42,"value":73}," a source platform; this one owns ",{"type":37,"tag":67,"props":75,"children":76},{},[77],{"type":42,"value":78},"writing",{"type":42,"value":80}," to Wix.",{"type":37,"tag":82,"props":83,"children":85},"h2",{"id":84},"when-this-skill-is-used",[86],{"type":42,"value":87},"When this skill is used",{"type":37,"tag":44,"props":89,"children":90},{},[91],{"type":42,"value":92},"Not a stage in the flow — a reference + shared library consulted by:",{"type":37,"tag":94,"props":95,"children":96},"ul",{},[97,135],{"type":37,"tag":98,"props":99,"children":100},"li",{},[101,110,112,118,120,126,128,133],{"type":37,"tag":50,"props":102,"children":103},{},[104],{"type":37,"tag":58,"props":105,"children":107},{"className":106},[],[108],{"type":42,"value":109},"rp-import-codegen",{"type":42,"value":111}," vendors ",{"type":37,"tag":58,"props":113,"children":115},{"className":114},[],[116],{"type":42,"value":117},"lib\u002Fwix-writers.js",{"type":42,"value":119}," into the project (like the\n",{"type":37,"tag":58,"props":121,"children":123},{"className":122},[],[124],{"type":42,"value":125},"wp-http",{"type":42,"value":127}," transport) and generates writers that ",{"type":37,"tag":50,"props":129,"children":130},{},[131],{"type":42,"value":132},"call these primitives",{"type":42,"value":134},", supplying\nonly per-project field maps. Codegen does not re-emit Wix API plumbing.",{"type":37,"tag":98,"props":136,"children":137},{},[138,155],{"type":37,"tag":50,"props":139,"children":140},{},[141,147,149],{"type":37,"tag":58,"props":142,"children":144},{"className":143},[],[145],{"type":42,"value":146},"rp-setup-discovery",{"type":42,"value":148}," \u002F ",{"type":37,"tag":58,"props":150,"children":152},{"className":151},[],[153],{"type":42,"value":154},"rp-execute-setup",{"type":42,"value":156}," consult the \"Verified endpoints\" and\n\"Provisioning\" notes for app-install \u002F Wix-Data \u002F collection mechanics.",{"type":37,"tag":44,"props":158,"children":159},{},[160,162,168,170,175],{"type":42,"value":161},"Because the Wix surface is identical across source platforms, adding a new source\n(",{"type":37,"tag":58,"props":163,"children":165},{"className":164},[],[166],{"type":42,"value":167},"rp-source-shopify",{"type":42,"value":169},", …) requires ",{"type":37,"tag":50,"props":171,"children":172},{},[173],{"type":42,"value":174},"no change here",{"type":42,"value":176},".",{"type":37,"tag":82,"props":178,"children":180},{"id":179},"write-contract-the-verified-wix-surface",[181],{"type":42,"value":182},"Write contract (the verified Wix surface)",{"type":37,"tag":44,"props":184,"children":185},{},[186,191,193,199,201,206,208,213,215,221,223,229],{"type":37,"tag":58,"props":187,"children":189},{"className":188},[],[190],{"type":42,"value":117},{"type":42,"value":192}," exposes pure request builders (",{"type":37,"tag":58,"props":194,"children":196},{"className":195},[],[197],{"type":42,"value":198},"build*Request",{"type":42,"value":200},") + executors. Shapes\nmarked ",{"type":37,"tag":50,"props":202,"children":203},{},[204],{"type":42,"value":205},"VERIFIED",{"type":42,"value":207}," were validated by a real call against a live site, not just read from\ndocs. Shapes marked ",{"type":37,"tag":50,"props":209,"children":210},{},[211],{"type":42,"value":212},"UNVERIFIED",{"type":42,"value":214}," are docs-schema\u002FMCP-derived bootstrap primitives that\nmust be surfaced in execution plans until a live contract call promotes them. It also\nexports ",{"type":37,"tag":58,"props":216,"children":218},{"className":217},[],[219],{"type":42,"value":220},"sendDirectRest",{"type":42,"value":222}," and ",{"type":37,"tag":58,"props":224,"children":226},{"className":225},[],[227],{"type":42,"value":228},"notifyMissingWriter",{"type":42,"value":230}," for generated native REST paths when\nWix has a native entity but this adapter does not yet ship a dedicated primitive.",{"type":37,"tag":232,"props":233,"children":234},"table",{},[235,259],{"type":37,"tag":236,"props":237,"children":238},"thead",{},[239],{"type":37,"tag":240,"props":241,"children":242},"tr",{},[243,249,254],{"type":37,"tag":244,"props":245,"children":246},"th",{},[247],{"type":42,"value":248},"Capability",{"type":37,"tag":244,"props":250,"children":251},{},[252],{"type":42,"value":253},"Endpoint",{"type":37,"tag":244,"props":255,"children":256},{},[257],{"type":42,"value":258},"Notes \u002F traps",{"type":37,"tag":260,"props":261,"children":262},"tbody",{},[263,301,353,382,425,487,524,562,592,629,658,680,746,775,804],{"type":37,"tag":240,"props":264,"children":265},{},[266,272,281],{"type":37,"tag":267,"props":268,"children":269},"td",{},[270],{"type":42,"value":271},"HTML → rich content",{"type":37,"tag":267,"props":273,"children":274},{},[275],{"type":37,"tag":58,"props":276,"children":278},{"className":277},[],[279],{"type":42,"value":280},"POST \u002Fricos\u002Fv1\u002Fricos-document\u002Fconvert\u002Fto-ricos",{"type":37,"tag":267,"props":282,"children":283},{},[284,286,292,294,299],{"type":42,"value":285},"VERIFIED. ",{"type":37,"tag":58,"props":287,"children":289},{"className":288},[],[290],{"type":42,"value":291},"options.plugins",{"type":42,"value":293}," enum is ",{"type":37,"tag":50,"props":295,"children":296},{},[297],{"type":42,"value":298},"UPPERCASE",{"type":42,"value":300}," — docs example shows lowercase and 400s (FR-007).",{"type":37,"tag":240,"props":302,"children":303},{},[304,309,318],{"type":37,"tag":267,"props":305,"children":306},{},[307],{"type":42,"value":308},"Import media from URL",{"type":37,"tag":267,"props":310,"children":311},{},[312],{"type":37,"tag":58,"props":313,"children":315},{"className":314},[],[316],{"type":42,"value":317},"POST \u002Fsite-media\u002Fv1\u002Ffiles\u002Fimport",{"type":37,"tag":267,"props":319,"children":320},{},[321,322,327,329,335,337,343,345,351],{"type":42,"value":285},{"type":37,"tag":50,"props":323,"children":324},{},[325],{"type":42,"value":326},"Async",{"type":42,"value":328},": response is ",{"type":37,"tag":58,"props":330,"children":332},{"className":331},[],[333],{"type":42,"value":334},"PENDING",{"type":42,"value":336},"; poll ",{"type":37,"tag":58,"props":338,"children":340},{"className":339},[],[341],{"type":42,"value":342},"GET \u002Fsite-media\u002Fv1\u002Ffiles\u002F{id}",{"type":42,"value":344}," for ",{"type":37,"tag":58,"props":346,"children":348},{"className":347},[],[349],{"type":42,"value":350},"READY",{"type":42,"value":352}," before referencing.",{"type":37,"tag":240,"props":354,"children":355},{},[356,361,370],{"type":37,"tag":267,"props":357,"children":358},{},[359],{"type":42,"value":360},"Blog category",{"type":37,"tag":267,"props":362,"children":363},{},[364],{"type":37,"tag":58,"props":365,"children":367},{"className":366},[],[368],{"type":42,"value":369},"POST \u002Fblog\u002Fv3\u002Fcategories",{"type":37,"tag":267,"props":371,"children":372},{},[373,375,381],{"type":42,"value":374},"VERIFIED. body ",{"type":37,"tag":58,"props":376,"children":378},{"className":377},[],[379],{"type":42,"value":380},"{ category: { label, slug, description } }",{"type":42,"value":176},{"type":37,"tag":240,"props":383,"children":384},{},[385,390,399],{"type":37,"tag":267,"props":386,"children":387},{},[388],{"type":42,"value":389},"Blog tag",{"type":37,"tag":267,"props":391,"children":392},{},[393],{"type":37,"tag":58,"props":394,"children":396},{"className":395},[],[397],{"type":42,"value":398},"POST \u002Fblog\u002Fv3\u002Ftags",{"type":37,"tag":267,"props":400,"children":401},{},[402,404,415,417,423],{"type":42,"value":403},"VERIFIED. Body is ",{"type":37,"tag":50,"props":405,"children":406},{},[407,409],{"type":42,"value":408},"top-level ",{"type":37,"tag":58,"props":410,"children":412},{"className":411},[],[413],{"type":42,"value":414},"{ label, language }",{"type":42,"value":416}," — NOT ",{"type":37,"tag":58,"props":418,"children":420},{"className":419},[],[421],{"type":42,"value":422},"{ tag: { label, slug } }",{"type":42,"value":424},"; slug is derived.",{"type":37,"tag":240,"props":426,"children":427},{},[428,433,450],{"type":37,"tag":267,"props":429,"children":430},{},[431],{"type":42,"value":432},"Blog post",{"type":37,"tag":267,"props":434,"children":435},{},[436,442,444],{"type":37,"tag":58,"props":437,"children":439},{"className":438},[],[440],{"type":42,"value":441},"POST \u002Fblog\u002Fv3\u002Fdraft-posts",{"type":42,"value":443}," → ",{"type":37,"tag":58,"props":445,"children":447},{"className":446},[],[448],{"type":42,"value":449},"…\u002F{id}\u002Fpublish",{"type":37,"tag":267,"props":451,"children":452},{},[453,454,460,462,467,469,478,480,486],{"type":42,"value":285},{"type":37,"tag":58,"props":455,"children":457},{"className":456},[],[458],{"type":42,"value":459},"memberId",{"type":42,"value":461}," ",{"type":37,"tag":50,"props":463,"children":464},{},[465],{"type":42,"value":466},"required",{"type":42,"value":468}," (3rd-party). Featured image is ",{"type":37,"tag":50,"props":470,"children":471},{},[472],{"type":37,"tag":58,"props":473,"children":475},{"className":474},[],[476],{"type":42,"value":477},"heroImage.id",{"type":42,"value":479}," (WixMedia GUID), not ",{"type":37,"tag":58,"props":481,"children":483},{"className":482},[],[484],{"type":42,"value":485},"media.wixMedia.image.id",{"type":42,"value":176},{"type":37,"tag":240,"props":488,"children":489},{},[490,495,504],{"type":37,"tag":267,"props":491,"children":492},{},[493],{"type":42,"value":494},"CMS item",{"type":37,"tag":267,"props":496,"children":497},{},[498],{"type":37,"tag":58,"props":499,"children":501},{"className":500},[],[502],{"type":42,"value":503},"POST \u002Fwix-data\u002Fv2\u002Fitems",{"type":37,"tag":267,"props":505,"children":506},{},[507,508,514,516,522],{"type":42,"value":285},{"type":37,"tag":58,"props":509,"children":511},{"className":510},[],[512],{"type":42,"value":513},"{ dataCollectionId, dataItem: { data } }",{"type":42,"value":515},". Requires Wix Data enabled (else ",{"type":37,"tag":58,"props":517,"children":519},{"className":518},[],[520],{"type":42,"value":521},"WDE0110",{"type":42,"value":523},").",{"type":37,"tag":240,"props":525,"children":526},{},[527,532,549],{"type":37,"tag":267,"props":528,"children":529},{},[530],{"type":42,"value":531},"Members",{"type":37,"tag":267,"props":533,"children":534},{},[535,541,543],{"type":37,"tag":58,"props":536,"children":538},{"className":537},[],[539],{"type":42,"value":540},"GET",{"type":42,"value":542},"\u002F",{"type":37,"tag":58,"props":544,"children":546},{"className":545},[],[547],{"type":42,"value":548},"POST \u002Fmembers\u002Fv1\u002Fmembers",{"type":37,"tag":267,"props":550,"children":551},{},[552,554,560],{"type":42,"value":553},"VERIFIED. dedup by ",{"type":37,"tag":58,"props":555,"children":557},{"className":556},[],[558],{"type":42,"value":559},"loginEmail",{"type":42,"value":561}," (gated PII; use a fallback member when absent).",{"type":37,"tag":240,"props":563,"children":564},{},[565,570,587],{"type":37,"tag":267,"props":566,"children":567},{},[568],{"type":42,"value":569},"Stores product",{"type":37,"tag":267,"props":571,"children":572},{},[573,579,581],{"type":37,"tag":58,"props":574,"children":576},{"className":575},[],[577],{"type":42,"value":578},"POST \u002Fstores\u002Fv3\u002Fproducts",{"type":42,"value":580},", ",{"type":37,"tag":58,"props":582,"children":584},{"className":583},[],[585],{"type":42,"value":586},"POST \u002Fstores\u002Fv3\u002Fproducts\u002Fquery",{"type":37,"tag":267,"props":588,"children":589},{},[590],{"type":42,"value":591},"UNVERIFIED docs-schema bootstrap. Product payload is project-specific; promote only after sandbox create\u002Fquery succeeds.",{"type":37,"tag":240,"props":593,"children":594},{},[595,600,616],{"type":37,"tag":267,"props":596,"children":597},{},[598],{"type":42,"value":599},"Stores product Catalog V1 fallback",{"type":37,"tag":267,"props":601,"children":602},{},[603,609,610],{"type":37,"tag":58,"props":604,"children":606},{"className":605},[],[607],{"type":42,"value":608},"POST \u002Fstores\u002Fv1\u002Fproducts",{"type":42,"value":580},{"type":37,"tag":58,"props":611,"children":613},{"className":612},[],[614],{"type":42,"value":615},"POST \u002Fstores\u002Fv1\u002Fproducts\u002Fquery",{"type":37,"tag":267,"props":617,"children":618},{},[619,621,627],{"type":42,"value":620},"TEMPORARY FR-013 fallback. Use only when the destination site reports ",{"type":37,"tag":58,"props":622,"children":624},{"className":623},[],[625],{"type":42,"value":626},"CATALOG_V1",{"type":42,"value":628},"; remove this row and the matching code block when FR-013 is resolved and fresh Stores installs are always Catalog V3.",{"type":37,"tag":240,"props":630,"children":631},{},[632,637,653],{"type":37,"tag":267,"props":633,"children":634},{},[635],{"type":42,"value":636},"Stores collection Catalog V1 fallback",{"type":37,"tag":267,"props":638,"children":639},{},[640,646,647],{"type":37,"tag":58,"props":641,"children":643},{"className":642},[],[644],{"type":42,"value":645},"POST \u002Fstores\u002Fv1\u002Fcollections",{"type":42,"value":580},{"type":37,"tag":58,"props":648,"children":650},{"className":649},[],[651],{"type":42,"value":652},"POST \u002Fstores\u002Fv1\u002Fcollections\u002Fquery",{"type":37,"tag":267,"props":654,"children":655},{},[656],{"type":42,"value":657},"TEMPORARY FR-013 fallback for Woo product categories on Catalog V1 sites. Use as the native Stores grouping target instead of CMS. Remove with FR-013.",{"type":37,"tag":240,"props":659,"children":660},{},[661,666,675],{"type":37,"tag":267,"props":662,"children":663},{},[664],{"type":42,"value":665},"Stores category",{"type":37,"tag":267,"props":667,"children":668},{},[669],{"type":37,"tag":58,"props":670,"children":672},{"className":671},[],[673],{"type":42,"value":674},"POST \u002Fcategories\u002Fv1\u002Fcategories",{"type":37,"tag":267,"props":676,"children":677},{},[678],{"type":42,"value":679},"UNVERIFIED docs-schema\u002Fproject-artifact bootstrap. Confirm destination Stores category semantics before live import.",{"type":37,"tag":240,"props":681,"children":682},{},[683,688,704],{"type":37,"tag":267,"props":684,"children":685},{},[686],{"type":42,"value":687},"Contacts",{"type":37,"tag":267,"props":689,"children":690},{},[691,697,698],{"type":37,"tag":58,"props":692,"children":694},{"className":693},[],[695],{"type":42,"value":696},"POST \u002Fcontacts\u002Fv4\u002Fcontacts",{"type":42,"value":580},{"type":37,"tag":58,"props":699,"children":701},{"className":700},[],[702],{"type":42,"value":703},"POST \u002Fcontacts\u002Fv4\u002Fcontacts\u002Fquery",{"type":37,"tag":267,"props":705,"children":706},{},[707,709,715,716,722,723,729,731,737,739,745],{"type":42,"value":708},"VERIFIED (2026-06-16). V4 list fields are wrapper objects: ",{"type":37,"tag":58,"props":710,"children":712},{"className":711},[],[713],{"type":42,"value":714},"emails.items",{"type":42,"value":580},{"type":37,"tag":58,"props":717,"children":719},{"className":718},[],[720],{"type":42,"value":721},"phones.items",{"type":42,"value":580},{"type":37,"tag":58,"props":724,"children":726},{"className":725},[],[727],{"type":42,"value":728},"addresses.items",{"type":42,"value":730},"; arrays directly under ",{"type":37,"tag":58,"props":732,"children":734},{"className":733},[],[735],{"type":42,"value":736},"info",{"type":42,"value":738}," return 400. Duplicate handling still depends on ",{"type":37,"tag":58,"props":740,"children":742},{"className":741},[],[743],{"type":42,"value":744},"allowDuplicates",{"type":42,"value":176},{"type":37,"tag":240,"props":747,"children":748},{},[749,754,770],{"type":37,"tag":267,"props":750,"children":751},{},[752],{"type":42,"value":753},"Coupons",{"type":37,"tag":267,"props":755,"children":756},{},[757,763,764],{"type":37,"tag":58,"props":758,"children":760},{"className":759},[],[761],{"type":42,"value":762},"POST \u002Fstores\u002Fv2\u002Fcoupons",{"type":42,"value":580},{"type":37,"tag":58,"props":765,"children":767},{"className":766},[],[768],{"type":42,"value":769},"POST \u002Fstores\u002Fv2\u002Fcoupons\u002Fquery",{"type":37,"tag":267,"props":771,"children":772},{},[773],{"type":42,"value":774},"UNVERIFIED bootstrap. Prefer native Wix coupons because Wix has a native coupon entity; do not special-case coupons into CMS merely for caution or because scoping must be mapped. Fallback is only for source semantics with no native representation.",{"type":37,"tag":240,"props":776,"children":777},{},[778,783,799],{"type":37,"tag":267,"props":779,"children":780},{},[781],{"type":42,"value":782},"eCom order",{"type":37,"tag":267,"props":784,"children":785},{},[786,792,793],{"type":37,"tag":58,"props":787,"children":789},{"className":788},[],[790],{"type":42,"value":791},"POST \u002Fecom\u002Fv1\u002Forders",{"type":42,"value":580},{"type":37,"tag":58,"props":794,"children":796},{"className":795},[],[797],{"type":42,"value":798},"POST \u002Fecom\u002Fv1\u002Forders\u002Fquery",{"type":37,"tag":267,"props":800,"children":801},{},[802],{"type":42,"value":803},"UNVERIFIED docs-schema bootstrap. Treat as blocked unless setup verification proves historical order creation is side-effect-free.",{"type":37,"tag":240,"props":805,"children":806},{},[807,812,817],{"type":37,"tag":267,"props":808,"children":809},{},[810],{"type":42,"value":811},"Direct native REST",{"type":37,"tag":267,"props":813,"children":814},{},[815],{"type":42,"value":816},"any Wix REST path derived by codegen",{"type":37,"tag":267,"props":818,"children":819},{},[820,822,827],{"type":42,"value":821},"UNVERIFIED generated path for native Wix entities missing a dedicated adapter writer. Must log, call ",{"type":37,"tag":58,"props":823,"children":825},{"className":824},[],[826],{"type":42,"value":228},{"type":42,"value":828},", and be shown in the execution plan.",{"type":37,"tag":82,"props":830,"children":832},{"id":831},"media-import-source-url-reachability",[833],{"type":42,"value":834},"Media import source URL reachability",{"type":37,"tag":44,"props":836,"children":837},{},[838,840,846,848,854,855,861],{"type":42,"value":839},"The media primitive imports by URL: Wix servers fetch the provided ",{"type":37,"tag":58,"props":841,"children":843},{"className":842},[],[844],{"type":42,"value":845},"sourceUrl",{"type":42,"value":847},". Public\nHTTPS URLs are expected; ",{"type":37,"tag":58,"props":849,"children":851},{"className":850},[],[852],{"type":42,"value":853},"localhost",{"type":42,"value":580},{"type":37,"tag":58,"props":856,"children":858},{"className":857},[],[859],{"type":42,"value":860},"127.0.0.1",{"type":42,"value":862},", Docker-only hosts, and other\nprivate-only URLs are not reachable by Wix during a live import. This is optional source\npreparation and, as far as we know today, affects media import only.",{"type":37,"tag":44,"props":864,"children":865},{},[866],{"type":42,"value":867},"If the source system is local, the migration should either:",{"type":37,"tag":94,"props":869,"children":870},{},[871,876],{"type":37,"tag":98,"props":872,"children":873},{},[874],{"type":42,"value":875},"expose the source through a public HTTPS tunnel, then pass\u002Frewire media URLs to that\npublic base URL; or",{"type":37,"tag":98,"props":877,"children":878},{},[879],{"type":42,"value":880},"skip\u002Fdefer media import and clearly state which media-dependent references will be\nmissing until media is imported.",{"type":37,"tag":44,"props":882,"children":883},{},[884],{"type":42,"value":885},"Ngrok quick setup for macOS:",{"type":37,"tag":887,"props":888,"children":893},"pre",{"className":889,"code":890,"language":891,"meta":892,"style":892},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","brew install ngrok\nngrok config add-authtoken \"\u003CYOUR_AUTHTOKEN>\"\nngrok http 8090\nexport WP_BASE_URL=https:\u002F\u002F\u003Cid>.ngrok-free.app\n","bash","",[894],{"type":37,"tag":58,"props":895,"children":896},{"__ignoreMap":892},[897,920,955,974],{"type":37,"tag":898,"props":899,"children":902},"span",{"class":900,"line":901},"line",1,[903,909,915],{"type":37,"tag":898,"props":904,"children":906},{"style":905},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[907],{"type":42,"value":908},"brew",{"type":37,"tag":898,"props":910,"children":912},{"style":911},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[913],{"type":42,"value":914}," install",{"type":37,"tag":898,"props":916,"children":917},{"style":911},[918],{"type":42,"value":919}," ngrok\n",{"type":37,"tag":898,"props":921,"children":923},{"class":900,"line":922},2,[924,929,934,939,945,950],{"type":37,"tag":898,"props":925,"children":926},{"style":905},[927],{"type":42,"value":928},"ngrok",{"type":37,"tag":898,"props":930,"children":931},{"style":911},[932],{"type":42,"value":933}," config",{"type":37,"tag":898,"props":935,"children":936},{"style":911},[937],{"type":42,"value":938}," add-authtoken",{"type":37,"tag":898,"props":940,"children":942},{"style":941},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[943],{"type":42,"value":944}," \"",{"type":37,"tag":898,"props":946,"children":947},{"style":911},[948],{"type":42,"value":949},"\u003CYOUR_AUTHTOKEN>",{"type":37,"tag":898,"props":951,"children":952},{"style":941},[953],{"type":42,"value":954},"\"\n",{"type":37,"tag":898,"props":956,"children":958},{"class":900,"line":957},3,[959,963,968],{"type":37,"tag":898,"props":960,"children":961},{"style":905},[962],{"type":42,"value":928},{"type":37,"tag":898,"props":964,"children":965},{"style":911},[966],{"type":42,"value":967}," http",{"type":37,"tag":898,"props":969,"children":971},{"style":970},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[972],{"type":42,"value":973}," 8090\n",{"type":37,"tag":898,"props":975,"children":977},{"class":900,"line":976},4,[978,984,990,995,1000,1005,1010,1015],{"type":37,"tag":898,"props":979,"children":981},{"style":980},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[982],{"type":42,"value":983},"export",{"type":37,"tag":898,"props":985,"children":987},{"style":986},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[988],{"type":42,"value":989}," WP_BASE_URL",{"type":37,"tag":898,"props":991,"children":992},{"style":941},[993],{"type":42,"value":994},"=",{"type":37,"tag":898,"props":996,"children":997},{"style":986},[998],{"type":42,"value":999},"https:\u002F\u002F",{"type":37,"tag":898,"props":1001,"children":1002},{"style":941},[1003],{"type":42,"value":1004},"\u003C",{"type":37,"tag":898,"props":1006,"children":1007},{"style":986},[1008],{"type":42,"value":1009},"id",{"type":37,"tag":898,"props":1011,"children":1012},{"style":941},[1013],{"type":42,"value":1014},">",{"type":37,"tag":898,"props":1016,"children":1017},{"style":986},[1018],{"type":42,"value":1019},".ngrok-free.app\n",{"type":37,"tag":82,"props":1021,"children":1023},{"id":1022},"validate-by-real-call-do-not-trust-doc-examples",[1024],{"type":42,"value":1025},"Validate by real call — do not trust doc examples",{"type":37,"tag":44,"props":1027,"children":1028},{},[1029,1031,1036,1038,1043,1045,1050],{"type":42,"value":1030},"Codegen-time MCP doc checks confirm an endpoint ",{"type":37,"tag":67,"props":1032,"children":1033},{},[1034],{"type":42,"value":1035},"exists",{"type":42,"value":1037},"; they do ",{"type":37,"tag":50,"props":1039,"children":1040},{},[1041],{"type":42,"value":1042},"not",{"type":42,"value":1044}," confirm the\nrequest ",{"type":37,"tag":67,"props":1046,"children":1047},{},[1048],{"type":42,"value":1049},"shape works",{"type":42,"value":1051},". The live wporg-news import proved doc examples can be wrong\n(lowercase Ricos plugins → 400) or incomplete (featured image field, tag body). The\nrule for this adapter:",{"type":37,"tag":94,"props":1053,"children":1054},{},[1055,1083,1096],{"type":37,"tag":98,"props":1056,"children":1057},{},[1058,1060,1065,1067,1073,1075,1081],{"type":42,"value":1059},"Treat a shape as verified ",{"type":37,"tag":50,"props":1061,"children":1062},{},[1063],{"type":42,"value":1064},"only after a real call succeeds",{"type":42,"value":1066}," — encode the working\nshape here with a ",{"type":37,"tag":58,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":42,"value":1072},"\u002F\u002F VERIFIED:",{"type":42,"value":1074}," (or ",{"type":37,"tag":58,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":42,"value":1080},"\u002F\u002F VERIFIED-TRAP:",{"type":42,"value":1082},") note and a date.",{"type":37,"tag":98,"props":1084,"children":1085},{},[1086,1088,1094],{"type":42,"value":1087},"A ",{"type":37,"tag":58,"props":1089,"children":1091},{"className":1090},[],[1092],{"type":42,"value":1093},"\u002F\u002F UNVERIFIED:",{"type":42,"value":1095}," primitive is allowed as a bootstrap point for generated code, but it\nis not a silent live-write permission. The execution plan must call it out, and setup\nverification must either promote it with a sandbox\u002Flive validation or route to fallback.",{"type":37,"tag":98,"props":1097,"children":1098},{},[1099,1101,1107,1109,1114,1116,1175,1179],{"type":42,"value":1100},"Keep ",{"type":37,"tag":58,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":42,"value":1106},"scripts\u002Fcontract-test.js",{"type":42,"value":1108}," current: it issues one real call per primitive\nagainst a sandbox site and is the single place schema drift surfaces. Run from the\n",{"type":37,"tag":58,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":42,"value":4},{"type":42,"value":1115}," skill directory:",{"type":37,"tag":887,"props":1117,"children":1119},{"className":889,"code":1118,"language":891,"meta":892,"style":892},"node scripts\u002Fcontract-test.js\nWIX_AUTH_TOKEN=... WIX_SITE_ID=... node scripts\u002Fcontract-test.js\n",[1120],{"type":37,"tag":58,"props":1121,"children":1122},{"__ignoreMap":892},[1123,1136],{"type":37,"tag":898,"props":1124,"children":1125},{"class":900,"line":901},[1126,1131],{"type":37,"tag":898,"props":1127,"children":1128},{"style":905},[1129],{"type":42,"value":1130},"node",{"type":37,"tag":898,"props":1132,"children":1133},{"style":911},[1134],{"type":42,"value":1135}," scripts\u002Fcontract-test.js\n",{"type":37,"tag":898,"props":1137,"children":1138},{"class":900,"line":922},[1139,1144,1148,1153,1158,1162,1166,1171],{"type":37,"tag":898,"props":1140,"children":1141},{"style":986},[1142],{"type":42,"value":1143},"WIX_AUTH_TOKEN",{"type":37,"tag":898,"props":1145,"children":1146},{"style":941},[1147],{"type":42,"value":994},{"type":37,"tag":898,"props":1149,"children":1150},{"style":911},[1151],{"type":42,"value":1152},"...",{"type":37,"tag":898,"props":1154,"children":1155},{"style":986},[1156],{"type":42,"value":1157}," WIX_SITE_ID",{"type":37,"tag":898,"props":1159,"children":1160},{"style":941},[1161],{"type":42,"value":994},{"type":37,"tag":898,"props":1163,"children":1164},{"style":911},[1165],{"type":42,"value":1152},{"type":37,"tag":898,"props":1167,"children":1168},{"style":905},[1169],{"type":42,"value":1170}," node",{"type":37,"tag":898,"props":1172,"children":1173},{"style":911},[1174],{"type":42,"value":1135},{"type":37,"tag":1176,"props":1177,"children":1178},"br",{},[],{"type":42,"value":1180},"Run on a cadence and after any Wix API change. A failing contract test — not a stranger's\nbroken import — is how we learn the surface moved.",{"type":37,"tag":82,"props":1182,"children":1184},{"id":1183},"temporary-stores-catalog-v1-fallback-fr-013",[1185],{"type":42,"value":1186},"Temporary Stores Catalog V1 fallback (FR-013)",{"type":37,"tag":44,"props":1188,"children":1189},{},[1190],{"type":42,"value":1191},"Remove this section as a whole when fresh Wix Stores installs reliably support Catalog\nV3 product writes without the V1 fallback (internal tracking: FR-013).",{"type":37,"tag":44,"props":1193,"children":1194},{},[1195,1197,1202,1204,1209],{"type":42,"value":1196},"Fresh Wix Stores installs are expected to become Catalog V3-only. Until Wix Stores fixes\nthat flow, setup verification may discover a freshly installed Stores site that reports\n",{"type":37,"tag":58,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":42,"value":626},{"type":42,"value":1203}," when probed through ",{"type":37,"tag":58,"props":1205,"children":1207},{"className":1206},[],[1208],{"type":42,"value":586},{"type":42,"value":1210},". In that case:",{"type":37,"tag":94,"props":1212,"children":1213},{},[1214,1225,1236,1248,1260],{"type":37,"tag":98,"props":1215,"children":1216},{},[1217,1219,1223],{"type":42,"value":1218},"Keep using a native Stores product target; do ",{"type":37,"tag":50,"props":1220,"children":1221},{},[1222],{"type":42,"value":1042},{"type":42,"value":1224}," route products to CMS just because\nthe V3 writer is unusable for this site.",{"type":37,"tag":98,"props":1226,"children":1227},{},[1228,1230,1235],{"type":42,"value":1229},"Use the temporary Catalog V1 native REST fallback in ",{"type":37,"tag":58,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":42,"value":117},{"type":42,"value":176},{"type":37,"tag":98,"props":1237,"children":1238},{},[1239,1241,1247],{"type":42,"value":1240},"Map source product categories to Stores V1 collections on Catalog V1 sites; pass those\ncollection IDs to V1 product create as ",{"type":37,"tag":58,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":42,"value":1246},"collectionIds",{"type":42,"value":176},{"type":37,"tag":98,"props":1249,"children":1250},{},[1251,1253,1258],{"type":42,"value":1252},"Log the fallback through ",{"type":37,"tag":58,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":42,"value":228},{"type":42,"value":1259}," and surface it in the execution plan as\nan unverified native path.",{"type":37,"tag":98,"props":1261,"children":1262},{},[1263],{"type":42,"value":1264},"Promote the V1 fallback only after a sandbox create\u002Fquery succeeds, or delete it once\nFR-013 is done.",{"type":37,"tag":82,"props":1266,"children":1268},{"id":1267},"what-stays-in-codegen-not-here",[1269],{"type":42,"value":1270},"What stays in codegen (not here)",{"type":37,"tag":44,"props":1272,"children":1273},{},[1274,1276,1282,1284,1290],{"type":42,"value":1275},"Per-project field maps and ordering (which source field → which ",{"type":37,"tag":58,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":42,"value":1281},"data",{"type":42,"value":1283}," key, the\nmedia\u002Fauthor\u002Ftaxonomy ref maps, upsert-by-key) live in the generated transforms\u002Fwriters.\nThis adapter holds only the invariant Wix request shapes + transport. Collection names\nand schemas (",{"type":37,"tag":58,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":42,"value":1289},"PodcastEpisodes",{"type":42,"value":1291},", …) are project-specific and come from the mapping plan.",{"type":37,"tag":82,"props":1293,"children":1295},{"id":1294},"provisioning-pointers-see-rp-execute-setup",[1296],{"type":42,"value":1297},"Provisioning pointers (see rp-execute-setup)",{"type":37,"tag":94,"props":1299,"children":1300},{},[1301,1314],{"type":37,"tag":98,"props":1302,"children":1303},{},[1304,1306,1312],{"type":42,"value":1305},"Apps (Blog, Members) install via the App Installation API; ground ",{"type":37,"tag":58,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":42,"value":1311},"appDefId",{"type":42,"value":1313}," from the\nofficial \"Apps Created by Wix\" table.",{"type":37,"tag":98,"props":1315,"children":1316},{},[1317,1322,1324,1329,1331,1342,1344,1350,1352,1357],{"type":37,"tag":50,"props":1318,"children":1319},{},[1320],{"type":42,"value":1321},"Wix Data enablement",{"type":42,"value":1323}," (",{"type":37,"tag":58,"props":1325,"children":1327},{"className":1326},[],[1328],{"type":42,"value":521},{"type":42,"value":1330},"): install the ",{"type":37,"tag":50,"props":1332,"children":1333},{},[1334,1336],{"type":42,"value":1335},"Wix Data app ",{"type":37,"tag":58,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":42,"value":1341},"appDefId e593b0bd-b783-45b8-97c2-873d42aacaf4",{"type":42,"value":1343}," via the App Installation API; afterward ",{"type":37,"tag":58,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":42,"value":1349},"POST \u002Fwix-data\u002Fv2\u002Fcollections",{"type":42,"value":1351}," creates NATIVE collections with no ",{"type":37,"tag":58,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":42,"value":521},{"type":42,"value":1358}," (verified live).\nFallback: a custom app with a data-collections extension (declares collections at\ninstall time, but can't express REFERENCE fields).",{"type":37,"tag":82,"props":1360,"children":1362},{"id":1361},"scope-coverage",[1363],{"type":42,"value":1364},"Scope & coverage",{"type":37,"tag":44,"props":1366,"children":1367},{},[1368,1370,1374,1376,1381,1383,1388,1390,1395],{"type":42,"value":1369},"Wix has many apps\u002Fentities (Stores, Bookings, Events, Restaurants, Pricing Plans, CRM,\n…). This adapter does ",{"type":37,"tag":50,"props":1371,"children":1372},{},[1373],{"type":42,"value":1042},{"type":42,"value":1375}," pre-build all of them. Coverage is ",{"type":37,"tag":50,"props":1377,"children":1378},{},[1379],{"type":42,"value":1380},"demand-driven",{"type":42,"value":1382}," and\ngrows through reviewed releases. A migration may still target a native Wix entity before a\ndedicated primitive exists; in that case codegen emits a native REST path using\n",{"type":37,"tag":58,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":42,"value":220},{"type":42,"value":1389},", logs the missing primitive, and calls ",{"type":37,"tag":58,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":42,"value":228},{"type":42,"value":1396}," so the\nRePlatform team can add the writer later.",{"type":37,"tag":44,"props":1398,"children":1399},{},[1400],{"type":37,"tag":50,"props":1401,"children":1402},{},[1403],{"type":42,"value":1404},"Native target ladder when no dedicated writer exists:",{"type":37,"tag":1406,"props":1407,"children":1408},"ol",{},[1409,1426,1450,1460],{"type":37,"tag":98,"props":1410,"children":1411},{},[1412,1424],{"type":37,"tag":50,"props":1413,"children":1414},{},[1415,1417,1422],{"type":42,"value":1416},"Use the dedicated ",{"type":37,"tag":58,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":42,"value":4},{"type":42,"value":1423}," primitive",{"type":42,"value":1425}," when one exists.",{"type":37,"tag":98,"props":1427,"children":1428},{},[1429,1434,1436,1441,1443,1448],{"type":37,"tag":50,"props":1430,"children":1431},{},[1432],{"type":42,"value":1433},"If Wix has a native entity but no dedicated primitive, generate a native REST call",{"type":42,"value":1435},"\nfrom Wix MCP\u002Fdocs-schema, mark it ",{"type":37,"tag":58,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":42,"value":212},{"type":42,"value":1442},", log it, call ",{"type":37,"tag":58,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":42,"value":228},{"type":42,"value":1449},", and\nsurface it in the execution plan before any write. This is not a silent live write.",{"type":37,"tag":98,"props":1451,"children":1452},{},[1453,1458],{"type":37,"tag":50,"props":1454,"children":1455},{},[1456],{"type":42,"value":1457},"Use CMS only when there is no suitable native Wix entity, or when the native entity\nis explicitly rejected for fidelity\u002Fside-effect reasons.",{"type":42,"value":1459}," CMS is not a fallback for a\nmissing adapter writer.",{"type":37,"tag":98,"props":1461,"children":1462},{},[1463,1468],{"type":37,"tag":50,"props":1464,"children":1465},{},[1466],{"type":42,"value":1467},"Halt",{"type":42,"value":1469}," if neither a native path nor an acceptable CMS\u002Fcustom target exists.",{"type":37,"tag":44,"props":1471,"children":1472},{},[1473,1475,1480],{"type":42,"value":1474},"The invariant: ",{"type":37,"tag":50,"props":1476,"children":1477},{},[1478],{"type":42,"value":1479},"anything not backed by a verified primitive is surfaced to the user for\nconsent before execution",{"type":42,"value":1481}," — never written silently.",{"type":37,"tag":1483,"props":1484,"children":1485},"style",{},[1486],{"type":42,"value":1487},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1489,"total":1644},[1490,1506,1518,1529,1543,1553,1564,1575,1591,1597,1614,1626],{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1494,"tags":1495,"stars":20,"repoUrl":21,"updatedAt":1505},"rp-discovery","discover source platform schema for migration","Discovers and documents the source platform schema (entities, fields, relationships) for a migration project. Use when capturing source structure before mapping to Wix.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1496,1499,1502],{"name":1497,"slug":1498,"type":13},"Data Modeling","data-modeling",{"name":1500,"slug":1501,"type":13},"Documentation","documentation",{"name":1503,"slug":1504,"type":13},"Migration","migration","2026-07-01T08:08:08.302261",{"slug":1507,"name":1507,"fn":1508,"description":1509,"org":1510,"tags":1511,"stars":20,"repoUrl":21,"updatedAt":1517},"rp-execute-import","execute migration pipelines to Wix","Runs the generated extract\u002Fimport pipeline and records execution results. Use when setup and codegen are complete and the user has approved the execution plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1512,1515,1516],{"name":1513,"slug":1514,"type":13},"Data Pipeline","data-pipeline",{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:07.038962",{"slug":154,"name":154,"fn":1519,"description":1520,"org":1521,"tags":1522,"stars":20,"repoUrl":21,"updatedAt":1528},"provision Wix site setup for migration","Verifies and provisions Wix-side setup required before import. Use after codegen when setup-requirements.md must be validated or executed against the target site.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1523,1526,1527],{"name":1524,"slug":1525,"type":13},"Deployment","deployment",{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:04.475894",{"slug":109,"name":109,"fn":1530,"description":1531,"org":1532,"tags":1533,"stars":20,"repoUrl":21,"updatedAt":1542},"generate migration code for Wix","Generates migration readers, transforms, and Wix writers from schema and mapping artifacts. Use when producing runnable extract\u002Fimport code under the migration project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1534,1537,1540,1541],{"name":1535,"slug":1536,"type":13},"Automation","automation",{"name":1538,"slug":1539,"type":13},"Data Engineering","data-engineering",{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:05.755188",{"slug":1544,"name":1544,"fn":1545,"description":1546,"org":1547,"tags":1548,"stars":20,"repoUrl":21,"updatedAt":1552},"rp-mapper","map source entities to Wix targets","Maps discovered source entities and fields to Wix targets and documents lossiness. Use when creating mapping-plan.md and mapping-summary.md after discovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1549,1550,1551],{"name":1497,"slug":1498,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:01.958081",{"slug":1554,"name":1554,"fn":1555,"description":1556,"org":1557,"tags":1558,"stars":20,"repoUrl":21,"updatedAt":1563},"rp-orchestration","orchestrate Wix site migrations","Routes RePlatform source-to-Wix migrations to the next workflow step by inspecting migration project artifacts. Use when starting, continuing, or recovering a migration run.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1559,1560,1561,1562],{"name":1535,"slug":1536,"type":13},{"name":1524,"slug":1525,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:08:09.570887",{"slug":146,"name":146,"fn":1565,"description":1566,"org":1567,"tags":1568,"stars":20,"repoUrl":21,"updatedAt":1574},"set up Wix environment prerequisites","Derives Wix environment prerequisites (apps, collections, schemas) from an approved mapping plan. Use after mapping review and before import code generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1569,1572,1573],{"name":1570,"slug":1571,"type":13},"Configuration","configuration",{"name":1497,"slug":1498,"type":13},{"name":9,"slug":8,"type":13},"2026-07-01T08:07:59.413698",{"slug":63,"name":63,"fn":1576,"description":1577,"org":1578,"tags":1579,"stars":20,"repoUrl":21,"updatedAt":1590},"capture data from WordPress and WooCommerce","WordPress and WooCommerce source adapter: REST capture, auth, pagination, and read contract for codegen. Use when the source platform is WordPress or WooCommerce.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1580,1581,1584,1587],{"name":1538,"slug":1539,"type":13},{"name":1582,"slug":1583,"type":13},"REST API","rest-api",{"name":1585,"slug":1586,"type":13},"WooCommerce","woocommerce",{"name":1588,"slug":1589,"type":13},"WordPress","wordpress","2026-07-01T08:08:00.69949",{"slug":4,"name":4,"fn":5,"description":6,"org":1592,"tags":1593,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1594,1595,1596],{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":1598,"name":1598,"fn":1599,"description":1600,"org":1601,"tags":1602,"stars":20,"repoUrl":21,"updatedAt":1613},"wix-app","build Wix CLI app extensions","Build and review Wix CLI app extensions — dashboard pages, modals, plugins, menu plugins, custom element widgets, Editor React components, site plugins, embedded scripts, backend APIs, backend events, service plugins, data collections, and App Market readiness. Use when building ANY feature or extension for a Wix CLI app or preparing a Wix app for App Market review. Triggers on: add, build, create, implement, help me, dashboard, widget, plugin, backend, API, event, collection, embedded script, service plugin, Editor React component, checkout, shipping, tax, discount, SPI, CMS, schema, tracking, popup, admin panel, menu item, modal, validate, test, verify, register extension, App Market, app review, submission readiness.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1603,1606,1609,1612],{"name":1604,"slug":1605,"type":13},"Backend","backend",{"name":1607,"slug":1608,"type":13},"CLI","cli",{"name":1610,"slug":1611,"type":13},"Frontend","frontend",{"name":9,"slug":8,"type":13},"2026-04-16T04:58:00.157961",{"slug":1615,"name":1615,"fn":1616,"description":1617,"org":1618,"tags":1619,"stars":20,"repoUrl":21,"updatedAt":1625},"wix-auth","authenticate with Wix APIs","Authenticate with Wix to obtain an access token for calling Wix APIs. Use when an agent needs a valid Wix access token and has none, or when the stored token is expired.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1620,1621,1624],{"name":15,"slug":16,"type":13},{"name":1622,"slug":1623,"type":13},"Auth","auth",{"name":9,"slug":8,"type":13},"2026-07-07T06:47:46.95263",{"slug":1627,"name":1627,"fn":1628,"description":1629,"org":1630,"tags":1631,"stars":20,"repoUrl":21,"updatedAt":1643},"wix-design-system","build UIs with Wix Design System","Wix Design System component reference. Use when building UI with @wix\u002Fdesign-system, choosing components, checking props and examples, or writing tests with component testkits. Triggers on \"what component\", \"how do I make\", \"WDS\", \"show me props\", \"testkit\", \"driver\", or component names like Button, Card, Modal, Box, Text.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1632,1635,1638,1639,1642],{"name":1633,"slug":1634,"type":13},"Design","design",{"name":1636,"slug":1637,"type":13},"Design System","design-system",{"name":1610,"slug":1611,"type":13},{"name":1640,"slug":1641,"type":13},"UI Components","ui-components",{"name":9,"slug":8,"type":13},"2026-04-29T05:33:44.561687",17,{"items":1646,"total":1691},[1647,1653,1659,1665,1672,1678,1685],{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1648,"tags":1649,"stars":20,"repoUrl":21,"updatedAt":1505},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1650,1651,1652],{"name":1497,"slug":1498,"type":13},{"name":1500,"slug":1501,"type":13},{"name":1503,"slug":1504,"type":13},{"slug":1507,"name":1507,"fn":1508,"description":1509,"org":1654,"tags":1655,"stars":20,"repoUrl":21,"updatedAt":1517},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1656,1657,1658],{"name":1513,"slug":1514,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},{"slug":154,"name":154,"fn":1519,"description":1520,"org":1660,"tags":1661,"stars":20,"repoUrl":21,"updatedAt":1528},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1662,1663,1664],{"name":1524,"slug":1525,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},{"slug":109,"name":109,"fn":1530,"description":1531,"org":1666,"tags":1667,"stars":20,"repoUrl":21,"updatedAt":1542},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1668,1669,1670,1671],{"name":1535,"slug":1536,"type":13},{"name":1538,"slug":1539,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},{"slug":1544,"name":1544,"fn":1545,"description":1546,"org":1673,"tags":1674,"stars":20,"repoUrl":21,"updatedAt":1552},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1675,1676,1677],{"name":1497,"slug":1498,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},{"slug":1554,"name":1554,"fn":1555,"description":1556,"org":1679,"tags":1680,"stars":20,"repoUrl":21,"updatedAt":1563},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1681,1682,1683,1684],{"name":1535,"slug":1536,"type":13},{"name":1524,"slug":1525,"type":13},{"name":1503,"slug":1504,"type":13},{"name":9,"slug":8,"type":13},{"slug":146,"name":146,"fn":1565,"description":1566,"org":1686,"tags":1687,"stars":20,"repoUrl":21,"updatedAt":1574},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1688,1689,1690],{"name":1570,"slug":1571,"type":13},{"name":1497,"slug":1498,"type":13},{"name":9,"slug":8,"type":13},16]