[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-wix-wix-docs-base44":3,"mdc--t9nuhx-key":34,"related-org-wix-wix-docs-base44":3705,"related-repo-wix-wix-docs-base44":3839},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"wix-docs-base44","retrieve Wix API and SDK documentation","Look up Wix API\u002FSDK documentation from inside the Base44 builder sandbox, where tool results are capped and a whole doc page cannot be returned into context — never guess a Wix endpoint, field, or enum from memory. A bundled module (scripts\u002Fdocs.js, run via exec_tool) does the mechanics: browse the docs tree, search, fetch pages to disk as markdown, map them to line numbers, read only those lines with read_file, and enumerate a resource's methods to establish that an API does NOT exist. Triggers: look up a Wix API in a Base44 app, find the Wix endpoint or field, confirm a Wix request body, check whether Wix supports something, read Wix docs from the sandbox.",{"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,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Documentation","documentation",{"name":18,"slug":19,"type":13},"Reference","reference",{"name":21,"slug":22,"type":13},"API Development","api-development",23,"https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills","2026-08-19T03:59:00.442956",null,28,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Wix Skills","https:\u002F\u002Fgithub.com\u002Fwix\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fwix-docs-base44","---\nname: wix-docs-base44\ndescription: \"Look up Wix API\u002FSDK documentation from inside the Base44 builder sandbox, where tool results are capped and a whole doc page cannot be returned into context — never guess a Wix endpoint, field, or enum from memory. A bundled module (scripts\u002Fdocs.js, run via exec_tool) does the mechanics: browse the docs tree, search, fetch pages to disk as markdown, map them to line numbers, read only those lines with read_file, and enumerate a resource's methods to establish that an API does NOT exist. Triggers: look up a Wix API in a Base44 app, find the Wix endpoint or field, confirm a Wix request body, check whether Wix supports something, read Wix docs from the sandbox.\"\n---\n\n# Wix Docs from the Base44 sandbox\n\nGet the exact truth about a Wix API — endpoint, HTTP verb, request\u002Fresponse shape, a field, an enum,\nan error. **Discover everything: every endpoint, path, doc URL, body and enum comes from this\nskill's tools, never from training, memory, or pattern.** A URL you composed and a path you\nremembered are guesses even when they look right — and a 404 or an empty result means discover,\nnot permute. That includes the example endpoints in this file: they illustrate the mechanics and\ngo stale like any snapshot — discover the real contract before you rely on one.\n\nThis is the [`wix-docs`](..\u002Fwix-docs\u002FSKILL.md) flow — find the right page, then read it — for a\nsandbox with no shell pipeline and a ~5,000-char cap on tool results. Documents therefore live on\ndisk — in the skill's own scratch folder, `.agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002F`: `exec_tool` fetches and returns only facts about the bytes; `read_file`\n(45,000-char budget, real paging) reads the bytes. Nothing large ever crosses a tool boundary.\n\n## The module\n\nThe mechanics live in **`scripts\u002Fdocs.js`** — byte budgets, the `.md` suffix, the filtered-browse\nrule, the `docsUrl` match. Call it rather than hand-rolling the requests; every function either\nanswers inline under the cap or saves into the scratch folder and returns `{ path, bytes }` —\na workspace-relative path you pass to `read_file` exactly as returned.\n\nLoad it in `exec_tool` like this (`require()` can return empty exports for build-time files):\n\n```js\nconst fs = require(\"fs\");\nconst docs = (() => { const m = { exports: {} };\n  new Function(\"module\", \"exports\", \"require\",\n    fs.readFileSync(\"\u002Fapp\u002F.agents\u002Fskills\u002Fwix-docs-base44\u002Fscripts\u002Fdocs.js\", \"utf8\"))(m, m.exports, require);\n  return m.exports; })();\n```\n\n(The module must be on disk first — `bootstrap.md` is the paste-ready bootstrap that installs\nthis skill into the app via `npx skills add`; after it runs, the path is\n`\u002Fapp\u002F.agents\u002Fskills\u002Fwix-docs-base44\u002Fscripts\u002Fdocs.js`. When installing is not an option — no\nnetwork to GitHub, or a one-shot paste — `references\u002Fbase44-wix-discovery-execution-loop-guide-light.md` is the whole skill as a single\nself-contained prompt: every snippet a complete exec body, no module, no install, and **no disk**\n— every call fetches, reduces in memory, and returns under the result cap, so nothing ever lands\nin the app's repo.)\n\n| call | does | returns |\n|---|---|---|\n| `await docs.browse({ menuUrl, nameFilter, include, depth })` | walk the docs tree | `{ content }` inline, or `{ path, bytes }` if big |\n| `await docs.search(term, { type, max, lines })` | semantic search → disk | `{ path, bytes, urls }` |\n| `await docs.fetchDoc(url, slug?)` | one page → disk as markdown | `{ path, bytes, status }` |\n| `docs.mapTerms(slug, \u002Fregex\u002Fi)` | line numbers of matches + section headers | `{ lines, shown, omitted, rows }` |\n| `docs.sections(slug)` | the outline, with `read_file` coordinates | `{ lines, shown, omitted, rows }` |\n| `await docs.methodsOf(\"resource-pattern\")` | every method of a resource, from the spec index | `{ resources, rows }` |\n| `await docs.specQuery(\"async function(){…}\")` | read schemas: your own query over the spec index | `{ result }` inline, or `{ path, bytes }` if big |\n| `await docs.callApi({ url, token, body })` | run a call you read the contract for | `{ status, json }`, or clipped `text` + `truncated` |\n\nOne `exec_tool` call per round, never two. The default timeout is 10s; pass `timeout` (up to 120)\nfor a single large fetch. `exec_tool` must never return document text — that is the module's\ninvariant too.\n\nIf a response shape surprises you, read `docs.js` itself — the functions are thin wrappers over\nfour endpoints, each documented below — and hand-roll the one call. Never guess.\n\n## 1. Find the page\n\n**Know the product? Browse.** Deterministic — no ranking, no wrong-product noise.\n\n```js\nawait docs.browse({ menuUrl: \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fbookings\u002Fbookings\",\n                    include: [\"METHOD\"], nameFilter: \"resched\", depth: 4 })\n\u002F\u002F → inline: Reschedule Booking (POST), Reschedule Booking Anonymously (POST), … with doc URLs\n```\n\nDrill by counts, never enumerate a vertical's methods: orient first (`{ menuUrl }` alone — children\nwith subtree counts, ~1.3 KB for all of Restaurants), then filter. An unfiltered\n`include: [\"METHOD\"]` over a vertical is ~30 KB; the module writes it to disk instead of letting it\nclip. Use a `menuUrl` a previous response gave you — a composed path (`…\u002Frestaurants\u002Forders` for\nwhat is actually `online-orders`) returns `{ exists: false }` with the API's own error; re-orient a\nlevel up instead of retrying variants.\n\n**Don't know where it lives? Search.**\n\n```js\nawait docs.search(\"cancel a booking and refund the customer\")\n\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fsearch-1.md\", bytes: 10738, urls: [ … ] }\n```\n\n`type` (default `REST`): `SDK` · `WIX_HEADLESS` · `BUSINESS_SOLUTIONS` · `VELO` · `WDS` ·\n`BUILD_APPS` · `CLI`. Read the saved file, then **switch to browsing the subtree a hit names**.\n\n**Search ranks, it does not match.** It always returns its best guesses and never reports \"no\nmatch\" — a nonsense query comes back with a confident, irrelevant page, and scores barely\ndiscriminate (\"schedule blog draft post\" ranks a *Marketing* API above every Blog result). Drop\nhits from outside the product you were asked about, and **never treat search results as evidence\nthat something does not exist** — that takes enumeration (below).\n\nWorth a look per vertical: the `skills` nodes (`…\u002Fbusiness-solutions\u002F\u003Cvertical>\u002Fskills`) hold\nrecipe and flow pages giving multi-step ordering no single method page mentions.\n\n## 2. Fetch the page\n\n```js\nawait docs.fetchDoc(\"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002F…\u002Fbookings-writer-v2\u002Fcancel-booking\")\n\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fcancel-booking.md\", bytes: 76170, status: 200 }\n```\n\nThe module appends **`.md`** — the suffix that makes the portal serve markdown instead of a\nmulti-megabyte HTML shell (`create-draft-post`: 5,325,977 bytes as HTML, 414,150 as `.md`). Keep\nthe scratch folder in the hundreds of KB: filling it with megabytes starves the sandbox sync that makes\nnew files visible to `read_file`, and reads start failing.\n\nMenu pages (child links) and articles (small prose) can be read whole. Method pages are the heavy\nones — hundreds of KB, REST *and* SDK halves — map before reading.\n\n## 3. Locate before you read\n\nMethod pages repeat every field name across the REST schema, the SDK schema and the examples, at\ndifferent types. Map first, then read windows:\n\n```js\ndocs.mapTerms(\"cancel-booking\", \u002Frefund\u002Fi)\n\u002F\u002F → { lines: 431, shown: 25, omitted: 0, rows: [\n\u002F\u002F     { line:  40, text: \"- name: withRefund | type: boolean | …\" },\n\u002F\u002F     { line:  26, text: \"## REST API\" }, …\n```\n\n`omitted > 0` means the map itself would have overflowed the cap — narrow the regex and map again;\nnever read on past a tail you cannot see.\n\nDon't know what to grep? Get the outline with `read_file` coordinates precomputed:\n\n```js\ndocs.sections(\"cancel-booking\")\n```\n\n```\n## Introduction                offset  19, limit   6    ← each row is a read_file call\n## REST API                    offset  25, limit   2    limit ≤ 3 = container, read its children\n   ### Schema                  offset  27, limit 176    the entire REST schema, exactly\n   ### Examples                offset 203, limit   2    (container)\n      ### Cancel a booking     offset 205, limit  16    English title = REST curl example\n## JavaScript SDK              offset 221, limit   2    ┐ the OTHER half — same field\n   ### Schema                  offset 223, limit 176    ┘ names, different types\n   ### Examples                offset 399, limit   2    (container)\n      ### cancelBooking        offset 401, limit   9    camelCase = SDK snippet\n```\n\nKnow which `##` you are under before quoting anything. And **window the REST example first** —\nthe `### Examples` row under `## REST API` (English title = curl) is a complete working request:\nexact URL, headers, and a body with real-format values. Model the call from it; read schema\nwindows only for what the example leaves out (optional params, enums, validations).\n\n## 4. Establish absence\n\nTo say an API does not exist, enumerate — and say what you enumerated:\n\n```js\nawait docs.methodsOf(\"bookings-writer-v2\")\n\u002F\u002F → { resources: [ …\u002Fbookings-writer-v2 ], shown: 29, rows: [\n\u002F\u002F     { op: \"CancelBooking\", verb: \"post\" }, { op: \"RescheduleBooking\", verb: \"post\" }, … ] }\n```\n\nThis queries the API spec index and matches the resource's `docsUrl` — `operationId`s are fully\nqualified (`wix.bookings.catalog.v1.…Service.CreateServiceOptionsAndVariants`), so a resource name\nnever matches them.\n\n**Reading a schema is `specQuery`.** Two globals are in scope, and knowing their shape is the\ndifference between an answer and a silent `[]`:\n\n```typescript\nlightIndex: Array\u003C{             \u002F\u002F RESOURCES, not methods\n  name: string                  \u002F\u002F \"Contacts V5\"\n  docsUrl: string               \u002F\u002F the resource page\n  menuPath: string[]            \u002F\u002F [\"crm\", \"members-contacts\", \"contacts\", \"contacts-v5\"]\n  methods: Array\u003C{\n    operationId: string         \u002F\u002F fully qualified: \"wix.contacts.v5.Contacts.QueryContacts\"\n    summary: string; httpMethod: string\n    path: string                \u002F\u002F PARTIAL (\"\u002Fv5\u002Fcontacts\u002Fquery\") — never call it\n    publicUrl: string           \u002F\u002F \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" — call THIS\n    docsUrl: string\n  }>\n}>\ngetResourceSchemaByUrl(docsUrl)  \u002F\u002F full schema; API pages only — skill\u002Farticle pages have none\n```\n\n`specQuery` is an **inspect** tool, not discovery: arrive with a `docsUrl` from browse or search,\nfind the entry **by docsUrl**, then read. Substring-filtering `lightIndex` by name has no ranking\nand misses methods whose resource is named after a different noun — an empty result means the query\nmissed the shape, not that the API is absent.\n\nThe endpoint to call is always `publicUrl` — `path` is a fragment. When a call 404s, this one\nround replaces guessing path variants:\n\n```js\nawait docs.specQuery(`async function(){\n  const r = lightIndex.find(x => x.docsUrl ===\n    \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fcrm\u002Fmembers-contacts\u002Fcontacts\u002Fcontacts-v5\");\n  return r.methods.filter(m => \u002Fquery\u002Fi.test(m.summary))\n                  .map(m => ({ op: m.operationId.split(\".\").pop(),\n                               verb: m.httpMethod, call: m.publicUrl }));\n}`)\n\u002F\u002F → { op: \"QueryContacts\", verb: \"post\",\n\u002F\u002F     call: \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" }\n\u002F\u002F (unfiltered, this resource's 32 methods overflow the inline budget — slice, don't dump)\n```\n\nSchemas are huge, so return the slice you need and **iterate** — each call is one round; refine the\nquery instead of returning more. A method's request fields, names and types only:\n\n```js\nawait docs.specQuery(`async function(){\n  const u = \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fblog\u002Fdraft-posts\u002Fcreate-draft-post\";\n  const s = await getResourceSchemaByUrl(u);\n  const m = s.methods.find(x => x.docsUrl === u);\n  const props = m.requestBody.content[\"application\u002Fjson\"].schema.properties;\n  return Object.entries(props).map(([k, v]) => k + \": \" + (v.type || v.$circular || \"object\"));\n}`)\n\u002F\u002F → [\"draftPost: object\", \"publish: boolean\", \"fieldsets: array\"]\n```\n\nNext round, drill into the object you care about; a field typed `{ \"$circular\": \"\u003Cname>\" }` is a\nrepeated type stored once — resolve it with `s.components.schemas[\"\u003Cname>\"]`, returning only its\nfield names and types.\n\nThe same door answers anything the canned calls can't — enum values, comparing two methods'\nfields, filtering across every API. Check the *sibling* methods too: a requirement is often\ndocumented on single-create but absent from the bulk-create page.\n\n## 5. Answer\n\nCite the file and line for each claim, and name the product the page belongs to.\n\nDistinguish three outcomes, plainly: the docs show this; the docs show something adjacent that is\nnot the same thing; or you enumerated the resource's methods and none of them do this. The third is\na real answer — give it, and say what you enumerated. Never infer an endpoint, field or enum from a\nURL pattern, from a similar API in another Wix product, or from a search snippet you did not open.\n\n## 6. From docs to calls\n\nThe docs were the map; `docs.callApi` is the territory — it runs the contract you just read.\nAPI responses are site data, so they stay out of scratch: small ones come back inline, an\noversized one comes back clipped with `truncated: true` — narrow the call (filters, cursor paging,\nfewer fields) rather than re-request the same size.\n\nTwo identities, and which one a call wants is part of what you read:\n\n| identity | token | for |\n|---|---|---|\n| **admin** | the app's Wix connector | managing the site — ad hoc from `exec_tool`, or the same fetch inside a backend function |\n| **visitor** | minted in the app's client code | everything the site's end user does — storefront reads, cart, checkout |\n\n**Admin — the connector is the token.** Any management or read call from its docs contract:\n\n```js\nconst { accessToken } = await base44.asServiceRole.connectors.getConnection(\"wix\");\nreturn await docs.callApi({\n  url: \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\",   \u002F\u002F from the page you just read\n  token: accessToken,\n  body: { query: { cursorPaging: { limit: 10 } } },\n});\n```\n\n**Visitor — minted from the OAuth app's client id, in the client.** The client id is a public\nvalue (it lives in a committed config file); the mint is one unauthenticated call, so it belongs\nin the app's own frontend code, straight from the docs contract:\n\n```js\n\u002F\u002F src\u002Flib\u002FwixClient.js — app code, not exec_tool\nconst res = await fetch(\"https:\u002F\u002Fwww.wixapis.com\u002Foauth2\u002Ftoken\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n  body: JSON.stringify({ clientId: WIX_CLIENT_ID, grantType: \"anonymous\" }),\n});\nconst { access_token } = await res.json();   \u002F\u002F bearer for products, cart, checkout\n```\n\nThe cart and checkout APIs act on the *caller's* identity, so they want the visitor token — the\nadmin token is for managing the site, the visitor token is for being on it.\n\nThe authentication docs, all fetchable with `docs.fetchDoc`:\n\n- `api-reference\u002Farticles\u002Fauthentication\u002Fabout-identities` — the identity model\n- `api-reference\u002Farticles\u002Fauthentication\u002Frest-api-authentication` — headers, token kinds\n- `business-management\u002Fheadless\u002Fauthentication\u002Fretrieve-tokens` — the \u002Foauth2\u002Ftoken contract, all grant types\n- `go-headless\u002Fauthentication\u002Fabout-authentication` — visitor vs member sessions\n- `go-headless\u002Fgetting-started\u002Fsetup\u002Fauthentication\u002Fcreate-an-oauth-app-for-visitors-and-members` — where the client id comes from\n- `go-headless\u002Fauthentication\u002Fsetup\u002Fset-up-a-headless-client` — wiring the client\n\n## 7. Special APIs worth knowing\n\n**Dynamic Site Context — \"what IS this site?\"** One admin call returns a markdown report of the\nwhole site: site ID, installed apps, status, URL, locale, site properties.\n\n```js\nawait docs.callApi({\n  url: \"https:\u002F\u002Fwww.wixapis.com\u002F_api\u002Fdynamic-context\u002Fv1\u002Fdynamic-context\u002Fmarkdown\",\n  token: accessToken,\n  body: {},            \u002F\u002F siteId optional — site token returns that site; account token returns up to 10\n})\n```\n\nThe report can be large — expect `truncated: true` on content-rich sites. And a `200` with\n`{\"markdown\": \"\"}` means the token or `siteId` is wrong — the endpoint reports an empty context\ninstead of an auth error, so treat empty as \"check auth\", never as \"empty site\".\n\nFor site management, the **`wix-manage`** skill carries per-area recipes. It may already be\ninstalled at\n`.agents\u002Fskills\u002Fwix-manage\u002F`; install it with `npx -y skills add wix\u002Fskills\u002Fskills\u002Fwix-manage`,\nor read it straight off the registry: `https:\u002F\u002Fwww.wix.com\u002Fskills\u002Fwix-manage`.\n\n## The raw endpoints (what the module wraps)\n\n| endpoint | function |\n|---|---|\n| `POST https:\u002F\u002Fwww.wixapis.com\u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fmenu\u002Fbrowse` | `browse` — body: `menu_url`, `include`, `name_filter`, `depth` (1–6), `deprecated`, `format` |\n| `POST https:\u002F\u002Fwww.wixapis.com\u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fsearch\u002Fmarkdown` | `search` — body: `search_term`, `document_type`, `maximum_results` (1–20), `lines_in_each_result` (1–200) |\n| `GET https:\u002F\u002Fdev.wix.com\u002Fdocs\u002F…?.md` | `fetchDoc` — every docs path has a `.md` twin; `https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fllms.txt` is the root map; `?apiView=SDK` for the SDK view |\n| `POST https:\u002F\u002Fmcp.wix.com\u002Fapi\u002Fcode-mode\u002Fsearch` | `methodsOf` \u002F `specQuery` — `{ code: \"async function(){…}\" }` with `lightIndex` and `getResourceSchemaByUrl(docsUrl)` in scope; response wrapped in `{ result }` |\n\nThere is also a structured search (`POST …\u002Fv1\u002Fdocs\u002Fsearch`, same body → `{ results: [{ title, url,\nrelevance_score }] }`) when you want to route on hits programmatically.\n\n## Going deeper\n\nThe [`wix-docs`](..\u002Fwix-docs\u002FSKILL.md) skill carries the shared references — a pruned map of the docs\ntree and per-section slicing recipes in `references\u002FEXTRACTING.md`, and the full `lightIndex` \u002F\n`getResourceSchemaByUrl` example set in `references\u002FAPI_SPEC_SEARCH.md`. The endpoints are the same;\nonly the transport differs.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,62,105,112,159,179,535,578,856,883,896,902,912,1074,1127,1135,1191,1268,1293,1314,1320,1376,1413,1425,1431,1436,1529,1540,1552,1595,1605,1641,1647,1652,1716,1744,1768,2050,2088,2108,2228,2240,2341,2362,2374,2380,2385,2390,2396,2417,2422,2498,2508,2773,2783,3083,3095,3107,3178,3184,3194,3307,3343,3382,3388,3627,3648,3654,3699],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"wix-docs-from-the-base44-sandbox",[45],{"type":46,"value":47},"text","Wix Docs from the Base44 sandbox",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,60],{"type":46,"value":53},"Get the exact truth about a Wix API — endpoint, HTTP verb, request\u002Fresponse shape, a field, an enum,\nan error. ",{"type":40,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":46,"value":59},"Discover everything: every endpoint, path, doc URL, body and enum comes from this\nskill's tools, never from training, memory, or pattern.",{"type":46,"value":61}," A URL you composed and a path you\nremembered are guesses even when they look right — and a 404 or an empty result means discover,\nnot permute. That includes the example endpoints in this file: they illustrate the mechanics and\ngo stale like any snapshot — discover the real contract before you rely on one.",{"type":40,"tag":49,"props":63,"children":64},{},[65,67,79,81,87,89,95,97,103],{"type":46,"value":66},"This is the ",{"type":40,"tag":68,"props":69,"children":71},"a",{"href":70},"..\u002Fwix-docs\u002FSKILL.md",[72],{"type":40,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":46,"value":78},"wix-docs",{"type":46,"value":80}," flow — find the right page, then read it — for a\nsandbox with no shell pipeline and a ~5,000-char cap on tool results. Documents therefore live on\ndisk — in the skill's own scratch folder, ",{"type":40,"tag":73,"props":82,"children":84},{"className":83},[],[85],{"type":46,"value":86},".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002F",{"type":46,"value":88},": ",{"type":40,"tag":73,"props":90,"children":92},{"className":91},[],[93],{"type":46,"value":94},"exec_tool",{"type":46,"value":96}," fetches and returns only facts about the bytes; ",{"type":40,"tag":73,"props":98,"children":100},{"className":99},[],[101],{"type":46,"value":102},"read_file",{"type":46,"value":104},"\n(45,000-char budget, real paging) reads the bytes. Nothing large ever crosses a tool boundary.",{"type":40,"tag":106,"props":107,"children":109},"h2",{"id":108},"the-module",[110],{"type":46,"value":111},"The module",{"type":40,"tag":49,"props":113,"children":114},{},[115,117,126,128,134,136,142,144,150,152,157],{"type":46,"value":116},"The mechanics live in ",{"type":40,"tag":55,"props":118,"children":119},{},[120],{"type":40,"tag":73,"props":121,"children":123},{"className":122},[],[124],{"type":46,"value":125},"scripts\u002Fdocs.js",{"type":46,"value":127}," — byte budgets, the ",{"type":40,"tag":73,"props":129,"children":131},{"className":130},[],[132],{"type":46,"value":133},".md",{"type":46,"value":135}," suffix, the filtered-browse\nrule, the ",{"type":40,"tag":73,"props":137,"children":139},{"className":138},[],[140],{"type":46,"value":141},"docsUrl",{"type":46,"value":143}," match. Call it rather than hand-rolling the requests; every function either\nanswers inline under the cap or saves into the scratch folder and returns ",{"type":40,"tag":73,"props":145,"children":147},{"className":146},[],[148],{"type":46,"value":149},"{ path, bytes }",{"type":46,"value":151}," —\na workspace-relative path you pass to ",{"type":40,"tag":73,"props":153,"children":155},{"className":154},[],[156],{"type":46,"value":102},{"type":46,"value":158}," exactly as returned.",{"type":40,"tag":49,"props":160,"children":161},{},[162,164,169,171,177],{"type":46,"value":163},"Load it in ",{"type":40,"tag":73,"props":165,"children":167},{"className":166},[],[168],{"type":46,"value":94},{"type":46,"value":170}," like this (",{"type":40,"tag":73,"props":172,"children":174},{"className":173},[],[175],{"type":46,"value":176},"require()",{"type":46,"value":178}," can return empty exports for build-time files):",{"type":40,"tag":180,"props":181,"children":186},"pre",{"className":182,"code":183,"language":184,"meta":185,"style":185},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const fs = require(\"fs\");\nconst docs = (() => { const m = { exports: {} };\n  new Function(\"module\", \"exports\", \"require\",\n    fs.readFileSync(\"\u002Fapp\u002F.agents\u002Fskills\u002Fwix-docs-base44\u002Fscripts\u002Fdocs.js\", \"utf8\"))(m, m.exports, require);\n  return m.exports; })();\n","js","",[187],{"type":40,"tag":73,"props":188,"children":189},{"__ignoreMap":185},[190,250,327,399,494],{"type":40,"tag":191,"props":192,"children":195},"span",{"class":193,"line":194},"line",1,[196,202,208,214,220,225,230,236,240,245],{"type":40,"tag":191,"props":197,"children":199},{"style":198},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[200],{"type":46,"value":201},"const",{"type":40,"tag":191,"props":203,"children":205},{"style":204},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[206],{"type":46,"value":207}," fs ",{"type":40,"tag":191,"props":209,"children":211},{"style":210},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[212],{"type":46,"value":213},"=",{"type":40,"tag":191,"props":215,"children":217},{"style":216},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[218],{"type":46,"value":219}," require",{"type":40,"tag":191,"props":221,"children":222},{"style":204},[223],{"type":46,"value":224},"(",{"type":40,"tag":191,"props":226,"children":227},{"style":210},[228],{"type":46,"value":229},"\"",{"type":40,"tag":191,"props":231,"children":233},{"style":232},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[234],{"type":46,"value":235},"fs",{"type":40,"tag":191,"props":237,"children":238},{"style":210},[239],{"type":46,"value":229},{"type":40,"tag":191,"props":241,"children":242},{"style":204},[243],{"type":46,"value":244},")",{"type":40,"tag":191,"props":246,"children":247},{"style":210},[248],{"type":46,"value":249},";\n",{"type":40,"tag":191,"props":251,"children":253},{"class":193,"line":252},2,[254,258,263,267,272,277,282,287,292,297,302,306,312,317,322],{"type":40,"tag":191,"props":255,"children":256},{"style":198},[257],{"type":46,"value":201},{"type":40,"tag":191,"props":259,"children":260},{"style":204},[261],{"type":46,"value":262}," docs ",{"type":40,"tag":191,"props":264,"children":265},{"style":210},[266],{"type":46,"value":213},{"type":40,"tag":191,"props":268,"children":269},{"style":204},[270],{"type":46,"value":271}," (",{"type":40,"tag":191,"props":273,"children":274},{"style":210},[275],{"type":46,"value":276},"()",{"type":40,"tag":191,"props":278,"children":279},{"style":198},[280],{"type":46,"value":281}," =>",{"type":40,"tag":191,"props":283,"children":284},{"style":210},[285],{"type":46,"value":286}," {",{"type":40,"tag":191,"props":288,"children":289},{"style":198},[290],{"type":46,"value":291}," const",{"type":40,"tag":191,"props":293,"children":294},{"style":204},[295],{"type":46,"value":296}," m",{"type":40,"tag":191,"props":298,"children":299},{"style":210},[300],{"type":46,"value":301}," =",{"type":40,"tag":191,"props":303,"children":304},{"style":210},[305],{"type":46,"value":286},{"type":40,"tag":191,"props":307,"children":309},{"style":308},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[310],{"type":46,"value":311}," exports",{"type":40,"tag":191,"props":313,"children":314},{"style":210},[315],{"type":46,"value":316},":",{"type":40,"tag":191,"props":318,"children":319},{"style":210},[320],{"type":46,"value":321}," {}",{"type":40,"tag":191,"props":323,"children":324},{"style":210},[325],{"type":46,"value":326}," };\n",{"type":40,"tag":191,"props":328,"children":330},{"class":193,"line":329},3,[331,336,341,345,349,354,358,363,368,373,377,381,385,390,394],{"type":40,"tag":191,"props":332,"children":333},{"style":210},[334],{"type":46,"value":335},"  new",{"type":40,"tag":191,"props":337,"children":338},{"style":216},[339],{"type":46,"value":340}," Function",{"type":40,"tag":191,"props":342,"children":343},{"style":308},[344],{"type":46,"value":224},{"type":40,"tag":191,"props":346,"children":347},{"style":210},[348],{"type":46,"value":229},{"type":40,"tag":191,"props":350,"children":351},{"style":232},[352],{"type":46,"value":353},"module",{"type":40,"tag":191,"props":355,"children":356},{"style":210},[357],{"type":46,"value":229},{"type":40,"tag":191,"props":359,"children":360},{"style":210},[361],{"type":46,"value":362},",",{"type":40,"tag":191,"props":364,"children":365},{"style":210},[366],{"type":46,"value":367}," \"",{"type":40,"tag":191,"props":369,"children":370},{"style":232},[371],{"type":46,"value":372},"exports",{"type":40,"tag":191,"props":374,"children":375},{"style":210},[376],{"type":46,"value":229},{"type":40,"tag":191,"props":378,"children":379},{"style":210},[380],{"type":46,"value":362},{"type":40,"tag":191,"props":382,"children":383},{"style":210},[384],{"type":46,"value":367},{"type":40,"tag":191,"props":386,"children":387},{"style":232},[388],{"type":46,"value":389},"require",{"type":40,"tag":191,"props":391,"children":392},{"style":210},[393],{"type":46,"value":229},{"type":40,"tag":191,"props":395,"children":396},{"style":210},[397],{"type":46,"value":398},",\n",{"type":40,"tag":191,"props":400,"children":402},{"class":193,"line":401},4,[403,408,413,418,422,426,431,435,439,443,448,452,457,462,466,470,474,478,482,486,490],{"type":40,"tag":191,"props":404,"children":405},{"style":204},[406],{"type":46,"value":407},"    fs",{"type":40,"tag":191,"props":409,"children":410},{"style":210},[411],{"type":46,"value":412},".",{"type":40,"tag":191,"props":414,"children":415},{"style":216},[416],{"type":46,"value":417},"readFileSync",{"type":40,"tag":191,"props":419,"children":420},{"style":308},[421],{"type":46,"value":224},{"type":40,"tag":191,"props":423,"children":424},{"style":210},[425],{"type":46,"value":229},{"type":40,"tag":191,"props":427,"children":428},{"style":232},[429],{"type":46,"value":430},"\u002Fapp\u002F.agents\u002Fskills\u002Fwix-docs-base44\u002Fscripts\u002Fdocs.js",{"type":40,"tag":191,"props":432,"children":433},{"style":210},[434],{"type":46,"value":229},{"type":40,"tag":191,"props":436,"children":437},{"style":210},[438],{"type":46,"value":362},{"type":40,"tag":191,"props":440,"children":441},{"style":210},[442],{"type":46,"value":367},{"type":40,"tag":191,"props":444,"children":445},{"style":232},[446],{"type":46,"value":447},"utf8",{"type":40,"tag":191,"props":449,"children":450},{"style":210},[451],{"type":46,"value":229},{"type":40,"tag":191,"props":453,"children":454},{"style":308},[455],{"type":46,"value":456},"))(",{"type":40,"tag":191,"props":458,"children":459},{"style":204},[460],{"type":46,"value":461},"m",{"type":40,"tag":191,"props":463,"children":464},{"style":210},[465],{"type":46,"value":362},{"type":40,"tag":191,"props":467,"children":468},{"style":204},[469],{"type":46,"value":296},{"type":40,"tag":191,"props":471,"children":472},{"style":210},[473],{"type":46,"value":412},{"type":40,"tag":191,"props":475,"children":476},{"style":204},[477],{"type":46,"value":372},{"type":40,"tag":191,"props":479,"children":480},{"style":210},[481],{"type":46,"value":362},{"type":40,"tag":191,"props":483,"children":484},{"style":204},[485],{"type":46,"value":219},{"type":40,"tag":191,"props":487,"children":488},{"style":308},[489],{"type":46,"value":244},{"type":40,"tag":191,"props":491,"children":492},{"style":210},[493],{"type":46,"value":249},{"type":40,"tag":191,"props":495,"children":497},{"class":193,"line":496},5,[498,504,508,512,516,521,526,531],{"type":40,"tag":191,"props":499,"children":501},{"style":500},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[502],{"type":46,"value":503},"  return",{"type":40,"tag":191,"props":505,"children":506},{"style":204},[507],{"type":46,"value":296},{"type":40,"tag":191,"props":509,"children":510},{"style":210},[511],{"type":46,"value":412},{"type":40,"tag":191,"props":513,"children":514},{"style":204},[515],{"type":46,"value":372},{"type":40,"tag":191,"props":517,"children":518},{"style":210},[519],{"type":46,"value":520},";",{"type":40,"tag":191,"props":522,"children":523},{"style":210},[524],{"type":46,"value":525}," }",{"type":40,"tag":191,"props":527,"children":528},{"style":204},[529],{"type":46,"value":530},")()",{"type":40,"tag":191,"props":532,"children":533},{"style":210},[534],{"type":46,"value":249},{"type":40,"tag":49,"props":536,"children":537},{},[538,540,546,548,554,556,561,563,569,571,576],{"type":46,"value":539},"(The module must be on disk first — ",{"type":40,"tag":73,"props":541,"children":543},{"className":542},[],[544],{"type":46,"value":545},"bootstrap.md",{"type":46,"value":547}," is the paste-ready bootstrap that installs\nthis skill into the app via ",{"type":40,"tag":73,"props":549,"children":551},{"className":550},[],[552],{"type":46,"value":553},"npx skills add",{"type":46,"value":555},"; after it runs, the path is\n",{"type":40,"tag":73,"props":557,"children":559},{"className":558},[],[560],{"type":46,"value":430},{"type":46,"value":562},". When installing is not an option — no\nnetwork to GitHub, or a one-shot paste — ",{"type":40,"tag":73,"props":564,"children":566},{"className":565},[],[567],{"type":46,"value":568},"references\u002Fbase44-wix-discovery-execution-loop-guide-light.md",{"type":46,"value":570}," is the whole skill as a single\nself-contained prompt: every snippet a complete exec body, no module, no install, and ",{"type":40,"tag":55,"props":572,"children":573},{},[574],{"type":46,"value":575},"no disk",{"type":46,"value":577},"\n— every call fetches, reduces in memory, and returns under the result cap, so nothing ever lands\nin the app's repo.)",{"type":40,"tag":579,"props":580,"children":581},"table",{},[582,606],{"type":40,"tag":583,"props":584,"children":585},"thead",{},[586],{"type":40,"tag":587,"props":588,"children":589},"tr",{},[590,596,601],{"type":40,"tag":591,"props":592,"children":593},"th",{},[594],{"type":46,"value":595},"call",{"type":40,"tag":591,"props":597,"children":598},{},[599],{"type":46,"value":600},"does",{"type":40,"tag":591,"props":602,"children":603},{},[604],{"type":46,"value":605},"returns",{"type":40,"tag":607,"props":608,"children":609},"tbody",{},[610,646,672,698,724,756,782,815],{"type":40,"tag":587,"props":611,"children":612},{},[613,623,628],{"type":40,"tag":614,"props":615,"children":616},"td",{},[617],{"type":40,"tag":73,"props":618,"children":620},{"className":619},[],[621],{"type":46,"value":622},"await docs.browse({ menuUrl, nameFilter, include, depth })",{"type":40,"tag":614,"props":624,"children":625},{},[626],{"type":46,"value":627},"walk the docs tree",{"type":40,"tag":614,"props":629,"children":630},{},[631,637,639,644],{"type":40,"tag":73,"props":632,"children":634},{"className":633},[],[635],{"type":46,"value":636},"{ content }",{"type":46,"value":638}," inline, or ",{"type":40,"tag":73,"props":640,"children":642},{"className":641},[],[643],{"type":46,"value":149},{"type":46,"value":645}," if big",{"type":40,"tag":587,"props":647,"children":648},{},[649,658,663],{"type":40,"tag":614,"props":650,"children":651},{},[652],{"type":40,"tag":73,"props":653,"children":655},{"className":654},[],[656],{"type":46,"value":657},"await docs.search(term, { type, max, lines })",{"type":40,"tag":614,"props":659,"children":660},{},[661],{"type":46,"value":662},"semantic search → disk",{"type":40,"tag":614,"props":664,"children":665},{},[666],{"type":40,"tag":73,"props":667,"children":669},{"className":668},[],[670],{"type":46,"value":671},"{ path, bytes, urls }",{"type":40,"tag":587,"props":673,"children":674},{},[675,684,689],{"type":40,"tag":614,"props":676,"children":677},{},[678],{"type":40,"tag":73,"props":679,"children":681},{"className":680},[],[682],{"type":46,"value":683},"await docs.fetchDoc(url, slug?)",{"type":40,"tag":614,"props":685,"children":686},{},[687],{"type":46,"value":688},"one page → disk as markdown",{"type":40,"tag":614,"props":690,"children":691},{},[692],{"type":40,"tag":73,"props":693,"children":695},{"className":694},[],[696],{"type":46,"value":697},"{ path, bytes, status }",{"type":40,"tag":587,"props":699,"children":700},{},[701,710,715],{"type":40,"tag":614,"props":702,"children":703},{},[704],{"type":40,"tag":73,"props":705,"children":707},{"className":706},[],[708],{"type":46,"value":709},"docs.mapTerms(slug, \u002Fregex\u002Fi)",{"type":40,"tag":614,"props":711,"children":712},{},[713],{"type":46,"value":714},"line numbers of matches + section headers",{"type":40,"tag":614,"props":716,"children":717},{},[718],{"type":40,"tag":73,"props":719,"children":721},{"className":720},[],[722],{"type":46,"value":723},"{ lines, shown, omitted, rows }",{"type":40,"tag":587,"props":725,"children":726},{},[727,736,748],{"type":40,"tag":614,"props":728,"children":729},{},[730],{"type":40,"tag":73,"props":731,"children":733},{"className":732},[],[734],{"type":46,"value":735},"docs.sections(slug)",{"type":40,"tag":614,"props":737,"children":738},{},[739,741,746],{"type":46,"value":740},"the outline, with ",{"type":40,"tag":73,"props":742,"children":744},{"className":743},[],[745],{"type":46,"value":102},{"type":46,"value":747}," coordinates",{"type":40,"tag":614,"props":749,"children":750},{},[751],{"type":40,"tag":73,"props":752,"children":754},{"className":753},[],[755],{"type":46,"value":723},{"type":40,"tag":587,"props":757,"children":758},{},[759,768,773],{"type":40,"tag":614,"props":760,"children":761},{},[762],{"type":40,"tag":73,"props":763,"children":765},{"className":764},[],[766],{"type":46,"value":767},"await docs.methodsOf(\"resource-pattern\")",{"type":40,"tag":614,"props":769,"children":770},{},[771],{"type":46,"value":772},"every method of a resource, from the spec index",{"type":40,"tag":614,"props":774,"children":775},{},[776],{"type":40,"tag":73,"props":777,"children":779},{"className":778},[],[780],{"type":46,"value":781},"{ resources, rows }",{"type":40,"tag":587,"props":783,"children":784},{},[785,794,799],{"type":40,"tag":614,"props":786,"children":787},{},[788],{"type":40,"tag":73,"props":789,"children":791},{"className":790},[],[792],{"type":46,"value":793},"await docs.specQuery(\"async function(){…}\")",{"type":40,"tag":614,"props":795,"children":796},{},[797],{"type":46,"value":798},"read schemas: your own query over the spec index",{"type":40,"tag":614,"props":800,"children":801},{},[802,808,809,814],{"type":40,"tag":73,"props":803,"children":805},{"className":804},[],[806],{"type":46,"value":807},"{ result }",{"type":46,"value":638},{"type":40,"tag":73,"props":810,"children":812},{"className":811},[],[813],{"type":46,"value":149},{"type":46,"value":645},{"type":40,"tag":587,"props":816,"children":817},{},[818,827,832],{"type":40,"tag":614,"props":819,"children":820},{},[821],{"type":40,"tag":73,"props":822,"children":824},{"className":823},[],[825],{"type":46,"value":826},"await docs.callApi({ url, token, body })",{"type":40,"tag":614,"props":828,"children":829},{},[830],{"type":46,"value":831},"run a call you read the contract for",{"type":40,"tag":614,"props":833,"children":834},{},[835,841,843,848,850],{"type":40,"tag":73,"props":836,"children":838},{"className":837},[],[839],{"type":46,"value":840},"{ status, json }",{"type":46,"value":842},", or clipped ",{"type":40,"tag":73,"props":844,"children":846},{"className":845},[],[847],{"type":46,"value":46},{"type":46,"value":849}," + ",{"type":40,"tag":73,"props":851,"children":853},{"className":852},[],[854],{"type":46,"value":855},"truncated",{"type":40,"tag":49,"props":857,"children":858},{},[859,861,866,868,874,876,881],{"type":46,"value":860},"One ",{"type":40,"tag":73,"props":862,"children":864},{"className":863},[],[865],{"type":46,"value":94},{"type":46,"value":867}," call per round, never two. The default timeout is 10s; pass ",{"type":40,"tag":73,"props":869,"children":871},{"className":870},[],[872],{"type":46,"value":873},"timeout",{"type":46,"value":875}," (up to 120)\nfor a single large fetch. ",{"type":40,"tag":73,"props":877,"children":879},{"className":878},[],[880],{"type":46,"value":94},{"type":46,"value":882}," must never return document text — that is the module's\ninvariant too.",{"type":40,"tag":49,"props":884,"children":885},{},[886,888,894],{"type":46,"value":887},"If a response shape surprises you, read ",{"type":40,"tag":73,"props":889,"children":891},{"className":890},[],[892],{"type":46,"value":893},"docs.js",{"type":46,"value":895}," itself — the functions are thin wrappers over\nfour endpoints, each documented below — and hand-roll the one call. Never guess.",{"type":40,"tag":106,"props":897,"children":899},{"id":898},"_1-find-the-page",[900],{"type":46,"value":901},"1. Find the page",{"type":40,"tag":49,"props":903,"children":904},{},[905,910],{"type":40,"tag":55,"props":906,"children":907},{},[908],{"type":46,"value":909},"Know the product? Browse.",{"type":46,"value":911}," Deterministic — no ranking, no wrong-product noise.",{"type":40,"tag":180,"props":913,"children":915},{"className":182,"code":914,"language":184,"meta":185,"style":185},"await docs.browse({ menuUrl: \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fbookings\u002Fbookings\",\n                    include: [\"METHOD\"], nameFilter: \"resched\", depth: 4 })\n\u002F\u002F → inline: Reschedule Booking (POST), Reschedule Booking Anonymously (POST), … with doc URLs\n",[916],{"type":40,"tag":73,"props":917,"children":918},{"__ignoreMap":185},[919,976,1065],{"type":40,"tag":191,"props":920,"children":921},{"class":193,"line":194},[922,927,932,936,941,945,950,955,959,963,968,972],{"type":40,"tag":191,"props":923,"children":924},{"style":500},[925],{"type":46,"value":926},"await",{"type":40,"tag":191,"props":928,"children":929},{"style":204},[930],{"type":46,"value":931}," docs",{"type":40,"tag":191,"props":933,"children":934},{"style":210},[935],{"type":46,"value":412},{"type":40,"tag":191,"props":937,"children":938},{"style":216},[939],{"type":46,"value":940},"browse",{"type":40,"tag":191,"props":942,"children":943},{"style":204},[944],{"type":46,"value":224},{"type":40,"tag":191,"props":946,"children":947},{"style":210},[948],{"type":46,"value":949},"{",{"type":40,"tag":191,"props":951,"children":952},{"style":308},[953],{"type":46,"value":954}," menuUrl",{"type":40,"tag":191,"props":956,"children":957},{"style":210},[958],{"type":46,"value":316},{"type":40,"tag":191,"props":960,"children":961},{"style":210},[962],{"type":46,"value":367},{"type":40,"tag":191,"props":964,"children":965},{"style":232},[966],{"type":46,"value":967},"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fbookings\u002Fbookings",{"type":40,"tag":191,"props":969,"children":970},{"style":210},[971],{"type":46,"value":229},{"type":40,"tag":191,"props":973,"children":974},{"style":210},[975],{"type":46,"value":398},{"type":40,"tag":191,"props":977,"children":978},{"class":193,"line":252},[979,984,988,993,997,1002,1006,1011,1015,1020,1024,1028,1033,1037,1041,1046,1050,1056,1060],{"type":40,"tag":191,"props":980,"children":981},{"style":308},[982],{"type":46,"value":983},"                    include",{"type":40,"tag":191,"props":985,"children":986},{"style":210},[987],{"type":46,"value":316},{"type":40,"tag":191,"props":989,"children":990},{"style":204},[991],{"type":46,"value":992}," [",{"type":40,"tag":191,"props":994,"children":995},{"style":210},[996],{"type":46,"value":229},{"type":40,"tag":191,"props":998,"children":999},{"style":232},[1000],{"type":46,"value":1001},"METHOD",{"type":40,"tag":191,"props":1003,"children":1004},{"style":210},[1005],{"type":46,"value":229},{"type":40,"tag":191,"props":1007,"children":1008},{"style":204},[1009],{"type":46,"value":1010},"]",{"type":40,"tag":191,"props":1012,"children":1013},{"style":210},[1014],{"type":46,"value":362},{"type":40,"tag":191,"props":1016,"children":1017},{"style":308},[1018],{"type":46,"value":1019}," nameFilter",{"type":40,"tag":191,"props":1021,"children":1022},{"style":210},[1023],{"type":46,"value":316},{"type":40,"tag":191,"props":1025,"children":1026},{"style":210},[1027],{"type":46,"value":367},{"type":40,"tag":191,"props":1029,"children":1030},{"style":232},[1031],{"type":46,"value":1032},"resched",{"type":40,"tag":191,"props":1034,"children":1035},{"style":210},[1036],{"type":46,"value":229},{"type":40,"tag":191,"props":1038,"children":1039},{"style":210},[1040],{"type":46,"value":362},{"type":40,"tag":191,"props":1042,"children":1043},{"style":308},[1044],{"type":46,"value":1045}," depth",{"type":40,"tag":191,"props":1047,"children":1048},{"style":210},[1049],{"type":46,"value":316},{"type":40,"tag":191,"props":1051,"children":1053},{"style":1052},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1054],{"type":46,"value":1055}," 4",{"type":40,"tag":191,"props":1057,"children":1058},{"style":210},[1059],{"type":46,"value":525},{"type":40,"tag":191,"props":1061,"children":1062},{"style":204},[1063],{"type":46,"value":1064},")\n",{"type":40,"tag":191,"props":1066,"children":1067},{"class":193,"line":329},[1068],{"type":40,"tag":191,"props":1069,"children":1071},{"style":1070},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1072],{"type":46,"value":1073},"\u002F\u002F → inline: Reschedule Booking (POST), Reschedule Booking Anonymously (POST), … with doc URLs\n",{"type":40,"tag":49,"props":1075,"children":1076},{},[1077,1079,1085,1087,1093,1095,1101,1103,1109,1111,1117,1119,1125],{"type":46,"value":1078},"Drill by counts, never enumerate a vertical's methods: orient first (",{"type":40,"tag":73,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":46,"value":1084},"{ menuUrl }",{"type":46,"value":1086}," alone — children\nwith subtree counts, ~1.3 KB for all of Restaurants), then filter. An unfiltered\n",{"type":40,"tag":73,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":46,"value":1092},"include: [\"METHOD\"]",{"type":46,"value":1094}," over a vertical is ~30 KB; the module writes it to disk instead of letting it\nclip. Use a ",{"type":40,"tag":73,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":46,"value":1100},"menuUrl",{"type":46,"value":1102}," a previous response gave you — a composed path (",{"type":40,"tag":73,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":46,"value":1108},"…\u002Frestaurants\u002Forders",{"type":46,"value":1110}," for\nwhat is actually ",{"type":40,"tag":73,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":46,"value":1116},"online-orders",{"type":46,"value":1118},") returns ",{"type":40,"tag":73,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":46,"value":1124},"{ exists: false }",{"type":46,"value":1126}," with the API's own error; re-orient a\nlevel up instead of retrying variants.",{"type":40,"tag":49,"props":1128,"children":1129},{},[1130],{"type":40,"tag":55,"props":1131,"children":1132},{},[1133],{"type":46,"value":1134},"Don't know where it lives? Search.",{"type":40,"tag":180,"props":1136,"children":1138},{"className":182,"code":1137,"language":184,"meta":185,"style":185},"await docs.search(\"cancel a booking and refund the customer\")\n\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fsearch-1.md\", bytes: 10738, urls: [ … ] }\n",[1139],{"type":40,"tag":73,"props":1140,"children":1141},{"__ignoreMap":185},[1142,1183],{"type":40,"tag":191,"props":1143,"children":1144},{"class":193,"line":194},[1145,1149,1153,1157,1162,1166,1170,1175,1179],{"type":40,"tag":191,"props":1146,"children":1147},{"style":500},[1148],{"type":46,"value":926},{"type":40,"tag":191,"props":1150,"children":1151},{"style":204},[1152],{"type":46,"value":931},{"type":40,"tag":191,"props":1154,"children":1155},{"style":210},[1156],{"type":46,"value":412},{"type":40,"tag":191,"props":1158,"children":1159},{"style":216},[1160],{"type":46,"value":1161},"search",{"type":40,"tag":191,"props":1163,"children":1164},{"style":204},[1165],{"type":46,"value":224},{"type":40,"tag":191,"props":1167,"children":1168},{"style":210},[1169],{"type":46,"value":229},{"type":40,"tag":191,"props":1171,"children":1172},{"style":232},[1173],{"type":46,"value":1174},"cancel a booking and refund the customer",{"type":40,"tag":191,"props":1176,"children":1177},{"style":210},[1178],{"type":46,"value":229},{"type":40,"tag":191,"props":1180,"children":1181},{"style":204},[1182],{"type":46,"value":1064},{"type":40,"tag":191,"props":1184,"children":1185},{"class":193,"line":252},[1186],{"type":40,"tag":191,"props":1187,"children":1188},{"style":1070},[1189],{"type":46,"value":1190},"\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fsearch-1.md\", bytes: 10738, urls: [ … ] }\n",{"type":40,"tag":49,"props":1192,"children":1193},{},[1194,1200,1202,1208,1210,1216,1218,1224,1225,1231,1232,1238,1239,1245,1247,1253,1254,1260,1262,1267],{"type":40,"tag":73,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":46,"value":1199},"type",{"type":46,"value":1201}," (default ",{"type":40,"tag":73,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":46,"value":1207},"REST",{"type":46,"value":1209},"): ",{"type":40,"tag":73,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":46,"value":1215},"SDK",{"type":46,"value":1217}," · ",{"type":40,"tag":73,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":46,"value":1223},"WIX_HEADLESS",{"type":46,"value":1217},{"type":40,"tag":73,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":46,"value":1230},"BUSINESS_SOLUTIONS",{"type":46,"value":1217},{"type":40,"tag":73,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":46,"value":1237},"VELO",{"type":46,"value":1217},{"type":40,"tag":73,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":46,"value":1244},"WDS",{"type":46,"value":1246}," ·\n",{"type":40,"tag":73,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":46,"value":1252},"BUILD_APPS",{"type":46,"value":1217},{"type":40,"tag":73,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":46,"value":1259},"CLI",{"type":46,"value":1261},". Read the saved file, then ",{"type":40,"tag":55,"props":1263,"children":1264},{},[1265],{"type":46,"value":1266},"switch to browsing the subtree a hit names",{"type":46,"value":412},{"type":40,"tag":49,"props":1269,"children":1270},{},[1271,1276,1278,1284,1286,1291],{"type":40,"tag":55,"props":1272,"children":1273},{},[1274],{"type":46,"value":1275},"Search ranks, it does not match.",{"type":46,"value":1277}," It always returns its best guesses and never reports \"no\nmatch\" — a nonsense query comes back with a confident, irrelevant page, and scores barely\ndiscriminate (\"schedule blog draft post\" ranks a ",{"type":40,"tag":1279,"props":1280,"children":1281},"em",{},[1282],{"type":46,"value":1283},"Marketing",{"type":46,"value":1285}," API above every Blog result). Drop\nhits from outside the product you were asked about, and ",{"type":40,"tag":55,"props":1287,"children":1288},{},[1289],{"type":46,"value":1290},"never treat search results as evidence\nthat something does not exist",{"type":46,"value":1292}," — that takes enumeration (below).",{"type":40,"tag":49,"props":1294,"children":1295},{},[1296,1298,1304,1306,1312],{"type":46,"value":1297},"Worth a look per vertical: the ",{"type":40,"tag":73,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":46,"value":1303},"skills",{"type":46,"value":1305}," nodes (",{"type":40,"tag":73,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":46,"value":1311},"…\u002Fbusiness-solutions\u002F\u003Cvertical>\u002Fskills",{"type":46,"value":1313},") hold\nrecipe and flow pages giving multi-step ordering no single method page mentions.",{"type":40,"tag":106,"props":1315,"children":1317},{"id":1316},"_2-fetch-the-page",[1318],{"type":46,"value":1319},"2. Fetch the page",{"type":40,"tag":180,"props":1321,"children":1323},{"className":182,"code":1322,"language":184,"meta":185,"style":185},"await docs.fetchDoc(\"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002F…\u002Fbookings-writer-v2\u002Fcancel-booking\")\n\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fcancel-booking.md\", bytes: 76170, status: 200 }\n",[1324],{"type":40,"tag":73,"props":1325,"children":1326},{"__ignoreMap":185},[1327,1368],{"type":40,"tag":191,"props":1328,"children":1329},{"class":193,"line":194},[1330,1334,1338,1342,1347,1351,1355,1360,1364],{"type":40,"tag":191,"props":1331,"children":1332},{"style":500},[1333],{"type":46,"value":926},{"type":40,"tag":191,"props":1335,"children":1336},{"style":204},[1337],{"type":46,"value":931},{"type":40,"tag":191,"props":1339,"children":1340},{"style":210},[1341],{"type":46,"value":412},{"type":40,"tag":191,"props":1343,"children":1344},{"style":216},[1345],{"type":46,"value":1346},"fetchDoc",{"type":40,"tag":191,"props":1348,"children":1349},{"style":204},[1350],{"type":46,"value":224},{"type":40,"tag":191,"props":1352,"children":1353},{"style":210},[1354],{"type":46,"value":229},{"type":40,"tag":191,"props":1356,"children":1357},{"style":232},[1358],{"type":46,"value":1359},"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002F…\u002Fbookings-writer-v2\u002Fcancel-booking",{"type":40,"tag":191,"props":1361,"children":1362},{"style":210},[1363],{"type":46,"value":229},{"type":40,"tag":191,"props":1365,"children":1366},{"style":204},[1367],{"type":46,"value":1064},{"type":40,"tag":191,"props":1369,"children":1370},{"class":193,"line":252},[1371],{"type":40,"tag":191,"props":1372,"children":1373},{"style":1070},[1374],{"type":46,"value":1375},"\u002F\u002F → { path: \".agents\u002Fskills\u002Fwix-docs-base44\u002Fscratch\u002Fcancel-booking.md\", bytes: 76170, status: 200 }\n",{"type":40,"tag":49,"props":1377,"children":1378},{},[1379,1381,1389,1391,1397,1399,1404,1406,1411],{"type":46,"value":1380},"The module appends ",{"type":40,"tag":55,"props":1382,"children":1383},{},[1384],{"type":40,"tag":73,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":46,"value":133},{"type":46,"value":1390}," — the suffix that makes the portal serve markdown instead of a\nmulti-megabyte HTML shell (",{"type":40,"tag":73,"props":1392,"children":1394},{"className":1393},[],[1395],{"type":46,"value":1396},"create-draft-post",{"type":46,"value":1398},": 5,325,977 bytes as HTML, 414,150 as ",{"type":40,"tag":73,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":46,"value":133},{"type":46,"value":1405},"). Keep\nthe scratch folder in the hundreds of KB: filling it with megabytes starves the sandbox sync that makes\nnew files visible to ",{"type":40,"tag":73,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":46,"value":102},{"type":46,"value":1412},", and reads start failing.",{"type":40,"tag":49,"props":1414,"children":1415},{},[1416,1418,1423],{"type":46,"value":1417},"Menu pages (child links) and articles (small prose) can be read whole. Method pages are the heavy\nones — hundreds of KB, REST ",{"type":40,"tag":1279,"props":1419,"children":1420},{},[1421],{"type":46,"value":1422},"and",{"type":46,"value":1424}," SDK halves — map before reading.",{"type":40,"tag":106,"props":1426,"children":1428},{"id":1427},"_3-locate-before-you-read",[1429],{"type":46,"value":1430},"3. Locate before you read",{"type":40,"tag":49,"props":1432,"children":1433},{},[1434],{"type":46,"value":1435},"Method pages repeat every field name across the REST schema, the SDK schema and the examples, at\ndifferent types. Map first, then read windows:",{"type":40,"tag":180,"props":1437,"children":1439},{"className":182,"code":1438,"language":184,"meta":185,"style":185},"docs.mapTerms(\"cancel-booking\", \u002Frefund\u002Fi)\n\u002F\u002F → { lines: 431, shown: 25, omitted: 0, rows: [\n\u002F\u002F     { line:  40, text: \"- name: withRefund | type: boolean | …\" },\n\u002F\u002F     { line:  26, text: \"## REST API\" }, …\n",[1440],{"type":40,"tag":73,"props":1441,"children":1442},{"__ignoreMap":185},[1443,1505,1513,1521],{"type":40,"tag":191,"props":1444,"children":1445},{"class":193,"line":194},[1446,1451,1455,1460,1464,1468,1473,1477,1481,1486,1491,1496,1501],{"type":40,"tag":191,"props":1447,"children":1448},{"style":204},[1449],{"type":46,"value":1450},"docs",{"type":40,"tag":191,"props":1452,"children":1453},{"style":210},[1454],{"type":46,"value":412},{"type":40,"tag":191,"props":1456,"children":1457},{"style":216},[1458],{"type":46,"value":1459},"mapTerms",{"type":40,"tag":191,"props":1461,"children":1462},{"style":204},[1463],{"type":46,"value":224},{"type":40,"tag":191,"props":1465,"children":1466},{"style":210},[1467],{"type":46,"value":229},{"type":40,"tag":191,"props":1469,"children":1470},{"style":232},[1471],{"type":46,"value":1472},"cancel-booking",{"type":40,"tag":191,"props":1474,"children":1475},{"style":210},[1476],{"type":46,"value":229},{"type":40,"tag":191,"props":1478,"children":1479},{"style":210},[1480],{"type":46,"value":362},{"type":40,"tag":191,"props":1482,"children":1483},{"style":210},[1484],{"type":46,"value":1485}," \u002F",{"type":40,"tag":191,"props":1487,"children":1488},{"style":232},[1489],{"type":46,"value":1490},"refund",{"type":40,"tag":191,"props":1492,"children":1493},{"style":210},[1494],{"type":46,"value":1495},"\u002F",{"type":40,"tag":191,"props":1497,"children":1498},{"style":1052},[1499],{"type":46,"value":1500},"i",{"type":40,"tag":191,"props":1502,"children":1503},{"style":204},[1504],{"type":46,"value":1064},{"type":40,"tag":191,"props":1506,"children":1507},{"class":193,"line":252},[1508],{"type":40,"tag":191,"props":1509,"children":1510},{"style":1070},[1511],{"type":46,"value":1512},"\u002F\u002F → { lines: 431, shown: 25, omitted: 0, rows: [\n",{"type":40,"tag":191,"props":1514,"children":1515},{"class":193,"line":329},[1516],{"type":40,"tag":191,"props":1517,"children":1518},{"style":1070},[1519],{"type":46,"value":1520},"\u002F\u002F     { line:  40, text: \"- name: withRefund | type: boolean | …\" },\n",{"type":40,"tag":191,"props":1522,"children":1523},{"class":193,"line":401},[1524],{"type":40,"tag":191,"props":1525,"children":1526},{"style":1070},[1527],{"type":46,"value":1528},"\u002F\u002F     { line:  26, text: \"## REST API\" }, …\n",{"type":40,"tag":49,"props":1530,"children":1531},{},[1532,1538],{"type":40,"tag":73,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":46,"value":1537},"omitted > 0",{"type":46,"value":1539}," means the map itself would have overflowed the cap — narrow the regex and map again;\nnever read on past a tail you cannot see.",{"type":40,"tag":49,"props":1541,"children":1542},{},[1543,1545,1550],{"type":46,"value":1544},"Don't know what to grep? Get the outline with ",{"type":40,"tag":73,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":46,"value":102},{"type":46,"value":1551}," coordinates precomputed:",{"type":40,"tag":180,"props":1553,"children":1555},{"className":182,"code":1554,"language":184,"meta":185,"style":185},"docs.sections(\"cancel-booking\")\n",[1556],{"type":40,"tag":73,"props":1557,"children":1558},{"__ignoreMap":185},[1559],{"type":40,"tag":191,"props":1560,"children":1561},{"class":193,"line":194},[1562,1566,1570,1575,1579,1583,1587,1591],{"type":40,"tag":191,"props":1563,"children":1564},{"style":204},[1565],{"type":46,"value":1450},{"type":40,"tag":191,"props":1567,"children":1568},{"style":210},[1569],{"type":46,"value":412},{"type":40,"tag":191,"props":1571,"children":1572},{"style":216},[1573],{"type":46,"value":1574},"sections",{"type":40,"tag":191,"props":1576,"children":1577},{"style":204},[1578],{"type":46,"value":224},{"type":40,"tag":191,"props":1580,"children":1581},{"style":210},[1582],{"type":46,"value":229},{"type":40,"tag":191,"props":1584,"children":1585},{"style":232},[1586],{"type":46,"value":1472},{"type":40,"tag":191,"props":1588,"children":1589},{"style":210},[1590],{"type":46,"value":229},{"type":40,"tag":191,"props":1592,"children":1593},{"style":204},[1594],{"type":46,"value":1064},{"type":40,"tag":180,"props":1596,"children":1600},{"className":1597,"code":1599,"language":46},[1598],"language-text","## Introduction                offset  19, limit   6    ← each row is a read_file call\n## REST API                    offset  25, limit   2    limit ≤ 3 = container, read its children\n   ### Schema                  offset  27, limit 176    the entire REST schema, exactly\n   ### Examples                offset 203, limit   2    (container)\n      ### Cancel a booking     offset 205, limit  16    English title = REST curl example\n## JavaScript SDK              offset 221, limit   2    ┐ the OTHER half — same field\n   ### Schema                  offset 223, limit 176    ┘ names, different types\n   ### Examples                offset 399, limit   2    (container)\n      ### cancelBooking        offset 401, limit   9    camelCase = SDK snippet\n",[1601],{"type":40,"tag":73,"props":1602,"children":1603},{"__ignoreMap":185},[1604],{"type":46,"value":1599},{"type":40,"tag":49,"props":1606,"children":1607},{},[1608,1610,1616,1618,1623,1625,1631,1633,1639],{"type":46,"value":1609},"Know which ",{"type":40,"tag":73,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":46,"value":1615},"##",{"type":46,"value":1617}," you are under before quoting anything. And ",{"type":40,"tag":55,"props":1619,"children":1620},{},[1621],{"type":46,"value":1622},"window the REST example first",{"type":46,"value":1624}," —\nthe ",{"type":40,"tag":73,"props":1626,"children":1628},{"className":1627},[],[1629],{"type":46,"value":1630},"### Examples",{"type":46,"value":1632}," row under ",{"type":40,"tag":73,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":46,"value":1638},"## REST API",{"type":46,"value":1640}," (English title = curl) is a complete working request:\nexact URL, headers, and a body with real-format values. Model the call from it; read schema\nwindows only for what the example leaves out (optional params, enums, validations).",{"type":40,"tag":106,"props":1642,"children":1644},{"id":1643},"_4-establish-absence",[1645],{"type":46,"value":1646},"4. Establish absence",{"type":40,"tag":49,"props":1648,"children":1649},{},[1650],{"type":46,"value":1651},"To say an API does not exist, enumerate — and say what you enumerated:",{"type":40,"tag":180,"props":1653,"children":1655},{"className":182,"code":1654,"language":184,"meta":185,"style":185},"await docs.methodsOf(\"bookings-writer-v2\")\n\u002F\u002F → { resources: [ …\u002Fbookings-writer-v2 ], shown: 29, rows: [\n\u002F\u002F     { op: \"CancelBooking\", verb: \"post\" }, { op: \"RescheduleBooking\", verb: \"post\" }, … ] }\n",[1656],{"type":40,"tag":73,"props":1657,"children":1658},{"__ignoreMap":185},[1659,1700,1708],{"type":40,"tag":191,"props":1660,"children":1661},{"class":193,"line":194},[1662,1666,1670,1674,1679,1683,1687,1692,1696],{"type":40,"tag":191,"props":1663,"children":1664},{"style":500},[1665],{"type":46,"value":926},{"type":40,"tag":191,"props":1667,"children":1668},{"style":204},[1669],{"type":46,"value":931},{"type":40,"tag":191,"props":1671,"children":1672},{"style":210},[1673],{"type":46,"value":412},{"type":40,"tag":191,"props":1675,"children":1676},{"style":216},[1677],{"type":46,"value":1678},"methodsOf",{"type":40,"tag":191,"props":1680,"children":1681},{"style":204},[1682],{"type":46,"value":224},{"type":40,"tag":191,"props":1684,"children":1685},{"style":210},[1686],{"type":46,"value":229},{"type":40,"tag":191,"props":1688,"children":1689},{"style":232},[1690],{"type":46,"value":1691},"bookings-writer-v2",{"type":40,"tag":191,"props":1693,"children":1694},{"style":210},[1695],{"type":46,"value":229},{"type":40,"tag":191,"props":1697,"children":1698},{"style":204},[1699],{"type":46,"value":1064},{"type":40,"tag":191,"props":1701,"children":1702},{"class":193,"line":252},[1703],{"type":40,"tag":191,"props":1704,"children":1705},{"style":1070},[1706],{"type":46,"value":1707},"\u002F\u002F → { resources: [ …\u002Fbookings-writer-v2 ], shown: 29, rows: [\n",{"type":40,"tag":191,"props":1709,"children":1710},{"class":193,"line":329},[1711],{"type":40,"tag":191,"props":1712,"children":1713},{"style":1070},[1714],{"type":46,"value":1715},"\u002F\u002F     { op: \"CancelBooking\", verb: \"post\" }, { op: \"RescheduleBooking\", verb: \"post\" }, … ] }\n",{"type":40,"tag":49,"props":1717,"children":1718},{},[1719,1721,1726,1728,1734,1736,1742],{"type":46,"value":1720},"This queries the API spec index and matches the resource's ",{"type":40,"tag":73,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":46,"value":141},{"type":46,"value":1727}," — ",{"type":40,"tag":73,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":46,"value":1733},"operationId",{"type":46,"value":1735},"s are fully\nqualified (",{"type":40,"tag":73,"props":1737,"children":1739},{"className":1738},[],[1740],{"type":46,"value":1741},"wix.bookings.catalog.v1.…Service.CreateServiceOptionsAndVariants",{"type":46,"value":1743},"), so a resource name\nnever matches them.",{"type":40,"tag":49,"props":1745,"children":1746},{},[1747,1759,1761,1767],{"type":40,"tag":55,"props":1748,"children":1749},{},[1750,1752,1758],{"type":46,"value":1751},"Reading a schema is ",{"type":40,"tag":73,"props":1753,"children":1755},{"className":1754},[],[1756],{"type":46,"value":1757},"specQuery",{"type":46,"value":412},{"type":46,"value":1760}," Two globals are in scope, and knowing their shape is the\ndifference between an answer and a silent ",{"type":40,"tag":73,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":46,"value":1766},"[]",{"type":46,"value":316},{"type":40,"tag":180,"props":1769,"children":1773},{"className":1770,"code":1771,"language":1772,"meta":185,"style":185},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","lightIndex: Array\u003C{             \u002F\u002F RESOURCES, not methods\n  name: string                  \u002F\u002F \"Contacts V5\"\n  docsUrl: string               \u002F\u002F the resource page\n  menuPath: string[]            \u002F\u002F [\"crm\", \"members-contacts\", \"contacts\", \"contacts-v5\"]\n  methods: Array\u003C{\n    operationId: string         \u002F\u002F fully qualified: \"wix.contacts.v5.Contacts.QueryContacts\"\n    summary: string; httpMethod: string\n    path: string                \u002F\u002F PARTIAL (\"\u002Fv5\u002Fcontacts\u002Fquery\") — never call it\n    publicUrl: string           \u002F\u002F \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" — call THIS\n    docsUrl: string\n  }>\n}>\ngetResourceSchemaByUrl(docsUrl)  \u002F\u002F full schema; API pages only — skill\u002Farticle pages have none\n","typescript",[1774],{"type":40,"tag":73,"props":1775,"children":1776},{"__ignoreMap":185},[1777,1805,1827,1848,1874,1895,1917,1952,1974,1996,2013,2022,2031],{"type":40,"tag":191,"props":1778,"children":1779},{"class":193,"line":194},[1780,1786,1790,1795,1800],{"type":40,"tag":191,"props":1781,"children":1783},{"style":1782},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1784],{"type":46,"value":1785},"lightIndex",{"type":40,"tag":191,"props":1787,"children":1788},{"style":210},[1789],{"type":46,"value":316},{"type":40,"tag":191,"props":1791,"children":1792},{"style":204},[1793],{"type":46,"value":1794}," Array",{"type":40,"tag":191,"props":1796,"children":1797},{"style":210},[1798],{"type":46,"value":1799},"\u003C{",{"type":40,"tag":191,"props":1801,"children":1802},{"style":1070},[1803],{"type":46,"value":1804},"             \u002F\u002F RESOURCES, not methods\n",{"type":40,"tag":191,"props":1806,"children":1807},{"class":193,"line":252},[1808,1813,1817,1822],{"type":40,"tag":191,"props":1809,"children":1810},{"style":1782},[1811],{"type":46,"value":1812},"  name",{"type":40,"tag":191,"props":1814,"children":1815},{"style":210},[1816],{"type":46,"value":316},{"type":40,"tag":191,"props":1818,"children":1819},{"style":204},[1820],{"type":46,"value":1821}," string",{"type":40,"tag":191,"props":1823,"children":1824},{"style":1070},[1825],{"type":46,"value":1826},"                  \u002F\u002F \"Contacts V5\"\n",{"type":40,"tag":191,"props":1828,"children":1829},{"class":193,"line":329},[1830,1835,1839,1843],{"type":40,"tag":191,"props":1831,"children":1832},{"style":1782},[1833],{"type":46,"value":1834},"  docsUrl",{"type":40,"tag":191,"props":1836,"children":1837},{"style":210},[1838],{"type":46,"value":316},{"type":40,"tag":191,"props":1840,"children":1841},{"style":204},[1842],{"type":46,"value":1821},{"type":40,"tag":191,"props":1844,"children":1845},{"style":1070},[1846],{"type":46,"value":1847},"               \u002F\u002F the resource page\n",{"type":40,"tag":191,"props":1849,"children":1850},{"class":193,"line":401},[1851,1856,1860,1864,1869],{"type":40,"tag":191,"props":1852,"children":1853},{"style":1782},[1854],{"type":46,"value":1855},"  menuPath",{"type":40,"tag":191,"props":1857,"children":1858},{"style":210},[1859],{"type":46,"value":316},{"type":40,"tag":191,"props":1861,"children":1862},{"style":204},[1863],{"type":46,"value":1821},{"type":40,"tag":191,"props":1865,"children":1866},{"style":308},[1867],{"type":46,"value":1868},"[]            ",{"type":40,"tag":191,"props":1870,"children":1871},{"style":1070},[1872],{"type":46,"value":1873},"\u002F\u002F [\"crm\", \"members-contacts\", \"contacts\", \"contacts-v5\"]\n",{"type":40,"tag":191,"props":1875,"children":1876},{"class":193,"line":496},[1877,1882,1886,1890],{"type":40,"tag":191,"props":1878,"children":1879},{"style":1782},[1880],{"type":46,"value":1881},"  methods",{"type":40,"tag":191,"props":1883,"children":1884},{"style":210},[1885],{"type":46,"value":316},{"type":40,"tag":191,"props":1887,"children":1888},{"style":216},[1889],{"type":46,"value":1794},{"type":40,"tag":191,"props":1891,"children":1892},{"style":210},[1893],{"type":46,"value":1894},"\u003C{\n",{"type":40,"tag":191,"props":1896,"children":1898},{"class":193,"line":1897},6,[1899,1904,1908,1912],{"type":40,"tag":191,"props":1900,"children":1901},{"style":308},[1902],{"type":46,"value":1903},"    operationId",{"type":40,"tag":191,"props":1905,"children":1906},{"style":210},[1907],{"type":46,"value":316},{"type":40,"tag":191,"props":1909,"children":1910},{"style":1782},[1911],{"type":46,"value":1821},{"type":40,"tag":191,"props":1913,"children":1914},{"style":1070},[1915],{"type":46,"value":1916},"         \u002F\u002F fully qualified: \"wix.contacts.v5.Contacts.QueryContacts\"\n",{"type":40,"tag":191,"props":1918,"children":1920},{"class":193,"line":1919},7,[1921,1926,1930,1934,1938,1943,1947],{"type":40,"tag":191,"props":1922,"children":1923},{"style":308},[1924],{"type":46,"value":1925},"    summary",{"type":40,"tag":191,"props":1927,"children":1928},{"style":210},[1929],{"type":46,"value":316},{"type":40,"tag":191,"props":1931,"children":1932},{"style":1782},[1933],{"type":46,"value":1821},{"type":40,"tag":191,"props":1935,"children":1936},{"style":210},[1937],{"type":46,"value":520},{"type":40,"tag":191,"props":1939,"children":1940},{"style":308},[1941],{"type":46,"value":1942}," httpMethod",{"type":40,"tag":191,"props":1944,"children":1945},{"style":210},[1946],{"type":46,"value":316},{"type":40,"tag":191,"props":1948,"children":1949},{"style":1782},[1950],{"type":46,"value":1951}," string\n",{"type":40,"tag":191,"props":1953,"children":1955},{"class":193,"line":1954},8,[1956,1961,1965,1969],{"type":40,"tag":191,"props":1957,"children":1958},{"style":308},[1959],{"type":46,"value":1960},"    path",{"type":40,"tag":191,"props":1962,"children":1963},{"style":210},[1964],{"type":46,"value":316},{"type":40,"tag":191,"props":1966,"children":1967},{"style":1782},[1968],{"type":46,"value":1821},{"type":40,"tag":191,"props":1970,"children":1971},{"style":1070},[1972],{"type":46,"value":1973},"                \u002F\u002F PARTIAL (\"\u002Fv5\u002Fcontacts\u002Fquery\") — never call it\n",{"type":40,"tag":191,"props":1975,"children":1977},{"class":193,"line":1976},9,[1978,1983,1987,1991],{"type":40,"tag":191,"props":1979,"children":1980},{"style":308},[1981],{"type":46,"value":1982},"    publicUrl",{"type":40,"tag":191,"props":1984,"children":1985},{"style":210},[1986],{"type":46,"value":316},{"type":40,"tag":191,"props":1988,"children":1989},{"style":1782},[1990],{"type":46,"value":1821},{"type":40,"tag":191,"props":1992,"children":1993},{"style":1070},[1994],{"type":46,"value":1995},"           \u002F\u002F \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" — call THIS\n",{"type":40,"tag":191,"props":1997,"children":1999},{"class":193,"line":1998},10,[2000,2005,2009],{"type":40,"tag":191,"props":2001,"children":2002},{"style":308},[2003],{"type":46,"value":2004},"    docsUrl",{"type":40,"tag":191,"props":2006,"children":2007},{"style":210},[2008],{"type":46,"value":316},{"type":40,"tag":191,"props":2010,"children":2011},{"style":1782},[2012],{"type":46,"value":1951},{"type":40,"tag":191,"props":2014,"children":2016},{"class":193,"line":2015},11,[2017],{"type":40,"tag":191,"props":2018,"children":2019},{"style":210},[2020],{"type":46,"value":2021},"  }>\n",{"type":40,"tag":191,"props":2023,"children":2025},{"class":193,"line":2024},12,[2026],{"type":40,"tag":191,"props":2027,"children":2028},{"style":210},[2029],{"type":46,"value":2030},"}>\n",{"type":40,"tag":191,"props":2032,"children":2034},{"class":193,"line":2033},13,[2035,2040,2045],{"type":40,"tag":191,"props":2036,"children":2037},{"style":216},[2038],{"type":46,"value":2039},"getResourceSchemaByUrl",{"type":40,"tag":191,"props":2041,"children":2042},{"style":204},[2043],{"type":46,"value":2044},"(docsUrl)  ",{"type":40,"tag":191,"props":2046,"children":2047},{"style":1070},[2048],{"type":46,"value":2049},"\u002F\u002F full schema; API pages only — skill\u002Farticle pages have none\n",{"type":40,"tag":49,"props":2051,"children":2052},{},[2053,2058,2060,2065,2067,2072,2074,2079,2081,2086],{"type":40,"tag":73,"props":2054,"children":2056},{"className":2055},[],[2057],{"type":46,"value":1757},{"type":46,"value":2059}," is an ",{"type":40,"tag":55,"props":2061,"children":2062},{},[2063],{"type":46,"value":2064},"inspect",{"type":46,"value":2066}," tool, not discovery: arrive with a ",{"type":40,"tag":73,"props":2068,"children":2070},{"className":2069},[],[2071],{"type":46,"value":141},{"type":46,"value":2073}," from browse or search,\nfind the entry ",{"type":40,"tag":55,"props":2075,"children":2076},{},[2077],{"type":46,"value":2078},"by docsUrl",{"type":46,"value":2080},", then read. Substring-filtering ",{"type":40,"tag":73,"props":2082,"children":2084},{"className":2083},[],[2085],{"type":46,"value":1785},{"type":46,"value":2087}," by name has no ranking\nand misses methods whose resource is named after a different noun — an empty result means the query\nmissed the shape, not that the API is absent.",{"type":40,"tag":49,"props":2089,"children":2090},{},[2091,2093,2099,2100,2106],{"type":46,"value":2092},"The endpoint to call is always ",{"type":40,"tag":73,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":46,"value":2098},"publicUrl",{"type":46,"value":1727},{"type":40,"tag":73,"props":2101,"children":2103},{"className":2102},[],[2104],{"type":46,"value":2105},"path",{"type":46,"value":2107}," is a fragment. When a call 404s, this one\nround replaces guessing path variants:",{"type":40,"tag":180,"props":2109,"children":2111},{"className":182,"code":2110,"language":184,"meta":185,"style":185},"await docs.specQuery(`async function(){\n  const r = lightIndex.find(x => x.docsUrl ===\n    \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fcrm\u002Fmembers-contacts\u002Fcontacts\u002Fcontacts-v5\");\n  return r.methods.filter(m => \u002Fquery\u002Fi.test(m.summary))\n                  .map(m => ({ op: m.operationId.split(\".\").pop(),\n                               verb: m.httpMethod, call: m.publicUrl }));\n}`)\n\u002F\u002F → { op: \"QueryContacts\", verb: \"post\",\n\u002F\u002F     call: \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" }\n\u002F\u002F (unfiltered, this resource's 32 methods overflow the inline budget — slice, don't dump)\n",[2112],{"type":40,"tag":73,"props":2113,"children":2114},{"__ignoreMap":185},[2115,2148,2156,2164,2172,2180,2188,2204,2212,2220],{"type":40,"tag":191,"props":2116,"children":2117},{"class":193,"line":194},[2118,2122,2126,2130,2134,2138,2143],{"type":40,"tag":191,"props":2119,"children":2120},{"style":500},[2121],{"type":46,"value":926},{"type":40,"tag":191,"props":2123,"children":2124},{"style":204},[2125],{"type":46,"value":931},{"type":40,"tag":191,"props":2127,"children":2128},{"style":210},[2129],{"type":46,"value":412},{"type":40,"tag":191,"props":2131,"children":2132},{"style":216},[2133],{"type":46,"value":1757},{"type":40,"tag":191,"props":2135,"children":2136},{"style":204},[2137],{"type":46,"value":224},{"type":40,"tag":191,"props":2139,"children":2140},{"style":210},[2141],{"type":46,"value":2142},"`",{"type":40,"tag":191,"props":2144,"children":2145},{"style":232},[2146],{"type":46,"value":2147},"async function(){\n",{"type":40,"tag":191,"props":2149,"children":2150},{"class":193,"line":252},[2151],{"type":40,"tag":191,"props":2152,"children":2153},{"style":232},[2154],{"type":46,"value":2155},"  const r = lightIndex.find(x => x.docsUrl ===\n",{"type":40,"tag":191,"props":2157,"children":2158},{"class":193,"line":329},[2159],{"type":40,"tag":191,"props":2160,"children":2161},{"style":232},[2162],{"type":46,"value":2163},"    \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fcrm\u002Fmembers-contacts\u002Fcontacts\u002Fcontacts-v5\");\n",{"type":40,"tag":191,"props":2165,"children":2166},{"class":193,"line":401},[2167],{"type":40,"tag":191,"props":2168,"children":2169},{"style":232},[2170],{"type":46,"value":2171},"  return r.methods.filter(m => \u002Fquery\u002Fi.test(m.summary))\n",{"type":40,"tag":191,"props":2173,"children":2174},{"class":193,"line":496},[2175],{"type":40,"tag":191,"props":2176,"children":2177},{"style":232},[2178],{"type":46,"value":2179},"                  .map(m => ({ op: m.operationId.split(\".\").pop(),\n",{"type":40,"tag":191,"props":2181,"children":2182},{"class":193,"line":1897},[2183],{"type":40,"tag":191,"props":2184,"children":2185},{"style":232},[2186],{"type":46,"value":2187},"                               verb: m.httpMethod, call: m.publicUrl }));\n",{"type":40,"tag":191,"props":2189,"children":2190},{"class":193,"line":1919},[2191,2196,2200],{"type":40,"tag":191,"props":2192,"children":2193},{"style":232},[2194],{"type":46,"value":2195},"}",{"type":40,"tag":191,"props":2197,"children":2198},{"style":210},[2199],{"type":46,"value":2142},{"type":40,"tag":191,"props":2201,"children":2202},{"style":204},[2203],{"type":46,"value":1064},{"type":40,"tag":191,"props":2205,"children":2206},{"class":193,"line":1954},[2207],{"type":40,"tag":191,"props":2208,"children":2209},{"style":1070},[2210],{"type":46,"value":2211},"\u002F\u002F → { op: \"QueryContacts\", verb: \"post\",\n",{"type":40,"tag":191,"props":2213,"children":2214},{"class":193,"line":1976},[2215],{"type":40,"tag":191,"props":2216,"children":2217},{"style":1070},[2218],{"type":46,"value":2219},"\u002F\u002F     call: \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\" }\n",{"type":40,"tag":191,"props":2221,"children":2222},{"class":193,"line":1998},[2223],{"type":40,"tag":191,"props":2224,"children":2225},{"style":1070},[2226],{"type":46,"value":2227},"\u002F\u002F (unfiltered, this resource's 32 methods overflow the inline budget — slice, don't dump)\n",{"type":40,"tag":49,"props":2229,"children":2230},{},[2231,2233,2238],{"type":46,"value":2232},"Schemas are huge, so return the slice you need and ",{"type":40,"tag":55,"props":2234,"children":2235},{},[2236],{"type":46,"value":2237},"iterate",{"type":46,"value":2239}," — each call is one round; refine the\nquery instead of returning more. A method's request fields, names and types only:",{"type":40,"tag":180,"props":2241,"children":2243},{"className":182,"code":2242,"language":184,"meta":185,"style":185},"await docs.specQuery(`async function(){\n  const u = \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fblog\u002Fdraft-posts\u002Fcreate-draft-post\";\n  const s = await getResourceSchemaByUrl(u);\n  const m = s.methods.find(x => x.docsUrl === u);\n  const props = m.requestBody.content[\"application\u002Fjson\"].schema.properties;\n  return Object.entries(props).map(([k, v]) => k + \": \" + (v.type || v.$circular || \"object\"));\n}`)\n\u002F\u002F → [\"draftPost: object\", \"publish: boolean\", \"fieldsets: array\"]\n",[2244],{"type":40,"tag":73,"props":2245,"children":2246},{"__ignoreMap":185},[2247,2278,2286,2294,2302,2310,2318,2333],{"type":40,"tag":191,"props":2248,"children":2249},{"class":193,"line":194},[2250,2254,2258,2262,2266,2270,2274],{"type":40,"tag":191,"props":2251,"children":2252},{"style":500},[2253],{"type":46,"value":926},{"type":40,"tag":191,"props":2255,"children":2256},{"style":204},[2257],{"type":46,"value":931},{"type":40,"tag":191,"props":2259,"children":2260},{"style":210},[2261],{"type":46,"value":412},{"type":40,"tag":191,"props":2263,"children":2264},{"style":216},[2265],{"type":46,"value":1757},{"type":40,"tag":191,"props":2267,"children":2268},{"style":204},[2269],{"type":46,"value":224},{"type":40,"tag":191,"props":2271,"children":2272},{"style":210},[2273],{"type":46,"value":2142},{"type":40,"tag":191,"props":2275,"children":2276},{"style":232},[2277],{"type":46,"value":2147},{"type":40,"tag":191,"props":2279,"children":2280},{"class":193,"line":252},[2281],{"type":40,"tag":191,"props":2282,"children":2283},{"style":232},[2284],{"type":46,"value":2285},"  const u = \"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fapi-reference\u002Fbusiness-solutions\u002Fblog\u002Fdraft-posts\u002Fcreate-draft-post\";\n",{"type":40,"tag":191,"props":2287,"children":2288},{"class":193,"line":329},[2289],{"type":40,"tag":191,"props":2290,"children":2291},{"style":232},[2292],{"type":46,"value":2293},"  const s = await getResourceSchemaByUrl(u);\n",{"type":40,"tag":191,"props":2295,"children":2296},{"class":193,"line":401},[2297],{"type":40,"tag":191,"props":2298,"children":2299},{"style":232},[2300],{"type":46,"value":2301},"  const m = s.methods.find(x => x.docsUrl === u);\n",{"type":40,"tag":191,"props":2303,"children":2304},{"class":193,"line":496},[2305],{"type":40,"tag":191,"props":2306,"children":2307},{"style":232},[2308],{"type":46,"value":2309},"  const props = m.requestBody.content[\"application\u002Fjson\"].schema.properties;\n",{"type":40,"tag":191,"props":2311,"children":2312},{"class":193,"line":1897},[2313],{"type":40,"tag":191,"props":2314,"children":2315},{"style":232},[2316],{"type":46,"value":2317},"  return Object.entries(props).map(([k, v]) => k + \": \" + (v.type || v.$circular || \"object\"));\n",{"type":40,"tag":191,"props":2319,"children":2320},{"class":193,"line":1919},[2321,2325,2329],{"type":40,"tag":191,"props":2322,"children":2323},{"style":232},[2324],{"type":46,"value":2195},{"type":40,"tag":191,"props":2326,"children":2327},{"style":210},[2328],{"type":46,"value":2142},{"type":40,"tag":191,"props":2330,"children":2331},{"style":204},[2332],{"type":46,"value":1064},{"type":40,"tag":191,"props":2334,"children":2335},{"class":193,"line":1954},[2336],{"type":40,"tag":191,"props":2337,"children":2338},{"style":1070},[2339],{"type":46,"value":2340},"\u002F\u002F → [\"draftPost: object\", \"publish: boolean\", \"fieldsets: array\"]\n",{"type":40,"tag":49,"props":2342,"children":2343},{},[2344,2346,2352,2354,2360],{"type":46,"value":2345},"Next round, drill into the object you care about; a field typed ",{"type":40,"tag":73,"props":2347,"children":2349},{"className":2348},[],[2350],{"type":46,"value":2351},"{ \"$circular\": \"\u003Cname>\" }",{"type":46,"value":2353}," is a\nrepeated type stored once — resolve it with ",{"type":40,"tag":73,"props":2355,"children":2357},{"className":2356},[],[2358],{"type":46,"value":2359},"s.components.schemas[\"\u003Cname>\"]",{"type":46,"value":2361},", returning only its\nfield names and types.",{"type":40,"tag":49,"props":2363,"children":2364},{},[2365,2367,2372],{"type":46,"value":2366},"The same door answers anything the canned calls can't — enum values, comparing two methods'\nfields, filtering across every API. Check the ",{"type":40,"tag":1279,"props":2368,"children":2369},{},[2370],{"type":46,"value":2371},"sibling",{"type":46,"value":2373}," methods too: a requirement is often\ndocumented on single-create but absent from the bulk-create page.",{"type":40,"tag":106,"props":2375,"children":2377},{"id":2376},"_5-answer",[2378],{"type":46,"value":2379},"5. Answer",{"type":40,"tag":49,"props":2381,"children":2382},{},[2383],{"type":46,"value":2384},"Cite the file and line for each claim, and name the product the page belongs to.",{"type":40,"tag":49,"props":2386,"children":2387},{},[2388],{"type":46,"value":2389},"Distinguish three outcomes, plainly: the docs show this; the docs show something adjacent that is\nnot the same thing; or you enumerated the resource's methods and none of them do this. The third is\na real answer — give it, and say what you enumerated. Never infer an endpoint, field or enum from a\nURL pattern, from a similar API in another Wix product, or from a search snippet you did not open.",{"type":40,"tag":106,"props":2391,"children":2393},{"id":2392},"_6-from-docs-to-calls",[2394],{"type":46,"value":2395},"6. From docs to calls",{"type":40,"tag":49,"props":2397,"children":2398},{},[2399,2401,2407,2409,2415],{"type":46,"value":2400},"The docs were the map; ",{"type":40,"tag":73,"props":2402,"children":2404},{"className":2403},[],[2405],{"type":46,"value":2406},"docs.callApi",{"type":46,"value":2408}," is the territory — it runs the contract you just read.\nAPI responses are site data, so they stay out of scratch: small ones come back inline, an\noversized one comes back clipped with ",{"type":40,"tag":73,"props":2410,"children":2412},{"className":2411},[],[2413],{"type":46,"value":2414},"truncated: true",{"type":46,"value":2416}," — narrow the call (filters, cursor paging,\nfewer fields) rather than re-request the same size.",{"type":40,"tag":49,"props":2418,"children":2419},{},[2420],{"type":46,"value":2421},"Two identities, and which one a call wants is part of what you read:",{"type":40,"tag":579,"props":2423,"children":2424},{},[2425,2446],{"type":40,"tag":583,"props":2426,"children":2427},{},[2428],{"type":40,"tag":587,"props":2429,"children":2430},{},[2431,2436,2441],{"type":40,"tag":591,"props":2432,"children":2433},{},[2434],{"type":46,"value":2435},"identity",{"type":40,"tag":591,"props":2437,"children":2438},{},[2439],{"type":46,"value":2440},"token",{"type":40,"tag":591,"props":2442,"children":2443},{},[2444],{"type":46,"value":2445},"for",{"type":40,"tag":607,"props":2447,"children":2448},{},[2449,2477],{"type":40,"tag":587,"props":2450,"children":2451},{},[2452,2460,2465],{"type":40,"tag":614,"props":2453,"children":2454},{},[2455],{"type":40,"tag":55,"props":2456,"children":2457},{},[2458],{"type":46,"value":2459},"admin",{"type":40,"tag":614,"props":2461,"children":2462},{},[2463],{"type":46,"value":2464},"the app's Wix connector",{"type":40,"tag":614,"props":2466,"children":2467},{},[2468,2470,2475],{"type":46,"value":2469},"managing the site — ad hoc from ",{"type":40,"tag":73,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":46,"value":94},{"type":46,"value":2476},", or the same fetch inside a backend function",{"type":40,"tag":587,"props":2478,"children":2479},{},[2480,2488,2493],{"type":40,"tag":614,"props":2481,"children":2482},{},[2483],{"type":40,"tag":55,"props":2484,"children":2485},{},[2486],{"type":46,"value":2487},"visitor",{"type":40,"tag":614,"props":2489,"children":2490},{},[2491],{"type":46,"value":2492},"minted in the app's client code",{"type":40,"tag":614,"props":2494,"children":2495},{},[2496],{"type":46,"value":2497},"everything the site's end user does — storefront reads, cart, checkout",{"type":40,"tag":49,"props":2499,"children":2500},{},[2501,2506],{"type":40,"tag":55,"props":2502,"children":2503},{},[2504],{"type":46,"value":2505},"Admin — the connector is the token.",{"type":46,"value":2507}," Any management or read call from its docs contract:",{"type":40,"tag":180,"props":2509,"children":2511},{"className":182,"code":2510,"language":184,"meta":185,"style":185},"const { accessToken } = await base44.asServiceRole.connectors.getConnection(\"wix\");\nreturn await docs.callApi({\n  url: \"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery\",   \u002F\u002F from the page you just read\n  token: accessToken,\n  body: { query: { cursorPaging: { limit: 10 } } },\n});\n",[2512],{"type":40,"tag":73,"props":2513,"children":2514},{"__ignoreMap":185},[2515,2600,2634,2668,2689,2758],{"type":40,"tag":191,"props":2516,"children":2517},{"class":193,"line":194},[2518,2522,2526,2531,2535,2539,2544,2549,2553,2558,2562,2567,2571,2576,2580,2584,2588,2592,2596],{"type":40,"tag":191,"props":2519,"children":2520},{"style":198},[2521],{"type":46,"value":201},{"type":40,"tag":191,"props":2523,"children":2524},{"style":210},[2525],{"type":46,"value":286},{"type":40,"tag":191,"props":2527,"children":2528},{"style":204},[2529],{"type":46,"value":2530}," accessToken ",{"type":40,"tag":191,"props":2532,"children":2533},{"style":210},[2534],{"type":46,"value":2195},{"type":40,"tag":191,"props":2536,"children":2537},{"style":210},[2538],{"type":46,"value":301},{"type":40,"tag":191,"props":2540,"children":2541},{"style":500},[2542],{"type":46,"value":2543}," await",{"type":40,"tag":191,"props":2545,"children":2546},{"style":204},[2547],{"type":46,"value":2548}," base44",{"type":40,"tag":191,"props":2550,"children":2551},{"style":210},[2552],{"type":46,"value":412},{"type":40,"tag":191,"props":2554,"children":2555},{"style":204},[2556],{"type":46,"value":2557},"asServiceRole",{"type":40,"tag":191,"props":2559,"children":2560},{"style":210},[2561],{"type":46,"value":412},{"type":40,"tag":191,"props":2563,"children":2564},{"style":204},[2565],{"type":46,"value":2566},"connectors",{"type":40,"tag":191,"props":2568,"children":2569},{"style":210},[2570],{"type":46,"value":412},{"type":40,"tag":191,"props":2572,"children":2573},{"style":216},[2574],{"type":46,"value":2575},"getConnection",{"type":40,"tag":191,"props":2577,"children":2578},{"style":204},[2579],{"type":46,"value":224},{"type":40,"tag":191,"props":2581,"children":2582},{"style":210},[2583],{"type":46,"value":229},{"type":40,"tag":191,"props":2585,"children":2586},{"style":232},[2587],{"type":46,"value":8},{"type":40,"tag":191,"props":2589,"children":2590},{"style":210},[2591],{"type":46,"value":229},{"type":40,"tag":191,"props":2593,"children":2594},{"style":204},[2595],{"type":46,"value":244},{"type":40,"tag":191,"props":2597,"children":2598},{"style":210},[2599],{"type":46,"value":249},{"type":40,"tag":191,"props":2601,"children":2602},{"class":193,"line":252},[2603,2608,2612,2616,2620,2625,2629],{"type":40,"tag":191,"props":2604,"children":2605},{"style":500},[2606],{"type":46,"value":2607},"return",{"type":40,"tag":191,"props":2609,"children":2610},{"style":500},[2611],{"type":46,"value":2543},{"type":40,"tag":191,"props":2613,"children":2614},{"style":204},[2615],{"type":46,"value":931},{"type":40,"tag":191,"props":2617,"children":2618},{"style":210},[2619],{"type":46,"value":412},{"type":40,"tag":191,"props":2621,"children":2622},{"style":216},[2623],{"type":46,"value":2624},"callApi",{"type":40,"tag":191,"props":2626,"children":2627},{"style":204},[2628],{"type":46,"value":224},{"type":40,"tag":191,"props":2630,"children":2631},{"style":210},[2632],{"type":46,"value":2633},"{\n",{"type":40,"tag":191,"props":2635,"children":2636},{"class":193,"line":329},[2637,2642,2646,2650,2655,2659,2663],{"type":40,"tag":191,"props":2638,"children":2639},{"style":308},[2640],{"type":46,"value":2641},"  url",{"type":40,"tag":191,"props":2643,"children":2644},{"style":210},[2645],{"type":46,"value":316},{"type":40,"tag":191,"props":2647,"children":2648},{"style":210},[2649],{"type":46,"value":367},{"type":40,"tag":191,"props":2651,"children":2652},{"style":232},[2653],{"type":46,"value":2654},"https:\u002F\u002Fwww.wixapis.com\u002Fcontacts\u002Fv5\u002Fcontacts\u002Fquery",{"type":40,"tag":191,"props":2656,"children":2657},{"style":210},[2658],{"type":46,"value":229},{"type":40,"tag":191,"props":2660,"children":2661},{"style":210},[2662],{"type":46,"value":362},{"type":40,"tag":191,"props":2664,"children":2665},{"style":1070},[2666],{"type":46,"value":2667},"   \u002F\u002F from the page you just read\n",{"type":40,"tag":191,"props":2669,"children":2670},{"class":193,"line":401},[2671,2676,2680,2685],{"type":40,"tag":191,"props":2672,"children":2673},{"style":308},[2674],{"type":46,"value":2675},"  token",{"type":40,"tag":191,"props":2677,"children":2678},{"style":210},[2679],{"type":46,"value":316},{"type":40,"tag":191,"props":2681,"children":2682},{"style":204},[2683],{"type":46,"value":2684}," accessToken",{"type":40,"tag":191,"props":2686,"children":2687},{"style":210},[2688],{"type":46,"value":398},{"type":40,"tag":191,"props":2690,"children":2691},{"class":193,"line":496},[2692,2697,2701,2705,2710,2714,2718,2723,2727,2731,2736,2740,2745,2749,2753],{"type":40,"tag":191,"props":2693,"children":2694},{"style":308},[2695],{"type":46,"value":2696},"  body",{"type":40,"tag":191,"props":2698,"children":2699},{"style":210},[2700],{"type":46,"value":316},{"type":40,"tag":191,"props":2702,"children":2703},{"style":210},[2704],{"type":46,"value":286},{"type":40,"tag":191,"props":2706,"children":2707},{"style":308},[2708],{"type":46,"value":2709}," query",{"type":40,"tag":191,"props":2711,"children":2712},{"style":210},[2713],{"type":46,"value":316},{"type":40,"tag":191,"props":2715,"children":2716},{"style":210},[2717],{"type":46,"value":286},{"type":40,"tag":191,"props":2719,"children":2720},{"style":308},[2721],{"type":46,"value":2722}," cursorPaging",{"type":40,"tag":191,"props":2724,"children":2725},{"style":210},[2726],{"type":46,"value":316},{"type":40,"tag":191,"props":2728,"children":2729},{"style":210},[2730],{"type":46,"value":286},{"type":40,"tag":191,"props":2732,"children":2733},{"style":308},[2734],{"type":46,"value":2735}," limit",{"type":40,"tag":191,"props":2737,"children":2738},{"style":210},[2739],{"type":46,"value":316},{"type":40,"tag":191,"props":2741,"children":2742},{"style":1052},[2743],{"type":46,"value":2744}," 10",{"type":40,"tag":191,"props":2746,"children":2747},{"style":210},[2748],{"type":46,"value":525},{"type":40,"tag":191,"props":2750,"children":2751},{"style":210},[2752],{"type":46,"value":525},{"type":40,"tag":191,"props":2754,"children":2755},{"style":210},[2756],{"type":46,"value":2757}," },\n",{"type":40,"tag":191,"props":2759,"children":2760},{"class":193,"line":1897},[2761,2765,2769],{"type":40,"tag":191,"props":2762,"children":2763},{"style":210},[2764],{"type":46,"value":2195},{"type":40,"tag":191,"props":2766,"children":2767},{"style":204},[2768],{"type":46,"value":244},{"type":40,"tag":191,"props":2770,"children":2771},{"style":210},[2772],{"type":46,"value":249},{"type":40,"tag":49,"props":2774,"children":2775},{},[2776,2781],{"type":40,"tag":55,"props":2777,"children":2778},{},[2779],{"type":46,"value":2780},"Visitor — minted from the OAuth app's client id, in the client.",{"type":46,"value":2782}," The client id is a public\nvalue (it lives in a committed config file); the mint is one unauthenticated call, so it belongs\nin the app's own frontend code, straight from the docs contract:",{"type":40,"tag":180,"props":2784,"children":2786},{"className":182,"code":2785,"language":184,"meta":185,"style":185},"\u002F\u002F src\u002Flib\u002FwixClient.js — app code, not exec_tool\nconst res = await fetch(\"https:\u002F\u002Fwww.wixapis.com\u002Foauth2\u002Ftoken\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n  body: JSON.stringify({ clientId: WIX_CLIENT_ID, grantType: \"anonymous\" }),\n});\nconst { access_token } = await res.json();   \u002F\u002F bearer for products, cart, checkout\n",[2787],{"type":40,"tag":73,"props":2788,"children":2789},{"__ignoreMap":185},[2790,2798,2849,2878,2928,3013,3028],{"type":40,"tag":191,"props":2791,"children":2792},{"class":193,"line":194},[2793],{"type":40,"tag":191,"props":2794,"children":2795},{"style":1070},[2796],{"type":46,"value":2797},"\u002F\u002F src\u002Flib\u002FwixClient.js — app code, not exec_tool\n",{"type":40,"tag":191,"props":2799,"children":2800},{"class":193,"line":252},[2801,2805,2810,2814,2818,2823,2827,2831,2836,2840,2844],{"type":40,"tag":191,"props":2802,"children":2803},{"style":198},[2804],{"type":46,"value":201},{"type":40,"tag":191,"props":2806,"children":2807},{"style":204},[2808],{"type":46,"value":2809}," res ",{"type":40,"tag":191,"props":2811,"children":2812},{"style":210},[2813],{"type":46,"value":213},{"type":40,"tag":191,"props":2815,"children":2816},{"style":500},[2817],{"type":46,"value":2543},{"type":40,"tag":191,"props":2819,"children":2820},{"style":216},[2821],{"type":46,"value":2822}," fetch",{"type":40,"tag":191,"props":2824,"children":2825},{"style":204},[2826],{"type":46,"value":224},{"type":40,"tag":191,"props":2828,"children":2829},{"style":210},[2830],{"type":46,"value":229},{"type":40,"tag":191,"props":2832,"children":2833},{"style":232},[2834],{"type":46,"value":2835},"https:\u002F\u002Fwww.wixapis.com\u002Foauth2\u002Ftoken",{"type":40,"tag":191,"props":2837,"children":2838},{"style":210},[2839],{"type":46,"value":229},{"type":40,"tag":191,"props":2841,"children":2842},{"style":210},[2843],{"type":46,"value":362},{"type":40,"tag":191,"props":2845,"children":2846},{"style":210},[2847],{"type":46,"value":2848}," {\n",{"type":40,"tag":191,"props":2850,"children":2851},{"class":193,"line":329},[2852,2857,2861,2865,2870,2874],{"type":40,"tag":191,"props":2853,"children":2854},{"style":308},[2855],{"type":46,"value":2856},"  method",{"type":40,"tag":191,"props":2858,"children":2859},{"style":210},[2860],{"type":46,"value":316},{"type":40,"tag":191,"props":2862,"children":2863},{"style":210},[2864],{"type":46,"value":367},{"type":40,"tag":191,"props":2866,"children":2867},{"style":232},[2868],{"type":46,"value":2869},"POST",{"type":40,"tag":191,"props":2871,"children":2872},{"style":210},[2873],{"type":46,"value":229},{"type":40,"tag":191,"props":2875,"children":2876},{"style":210},[2877],{"type":46,"value":398},{"type":40,"tag":191,"props":2879,"children":2880},{"class":193,"line":401},[2881,2886,2890,2894,2898,2903,2907,2911,2915,2920,2924],{"type":40,"tag":191,"props":2882,"children":2883},{"style":308},[2884],{"type":46,"value":2885},"  headers",{"type":40,"tag":191,"props":2887,"children":2888},{"style":210},[2889],{"type":46,"value":316},{"type":40,"tag":191,"props":2891,"children":2892},{"style":210},[2893],{"type":46,"value":286},{"type":40,"tag":191,"props":2895,"children":2896},{"style":210},[2897],{"type":46,"value":367},{"type":40,"tag":191,"props":2899,"children":2900},{"style":308},[2901],{"type":46,"value":2902},"Content-Type",{"type":40,"tag":191,"props":2904,"children":2905},{"style":210},[2906],{"type":46,"value":229},{"type":40,"tag":191,"props":2908,"children":2909},{"style":210},[2910],{"type":46,"value":316},{"type":40,"tag":191,"props":2912,"children":2913},{"style":210},[2914],{"type":46,"value":367},{"type":40,"tag":191,"props":2916,"children":2917},{"style":232},[2918],{"type":46,"value":2919},"application\u002Fjson",{"type":40,"tag":191,"props":2921,"children":2922},{"style":210},[2923],{"type":46,"value":229},{"type":40,"tag":191,"props":2925,"children":2926},{"style":210},[2927],{"type":46,"value":2757},{"type":40,"tag":191,"props":2929,"children":2930},{"class":193,"line":496},[2931,2935,2939,2944,2948,2953,2957,2961,2966,2970,2975,2979,2984,2988,2992,2997,3001,3005,3009],{"type":40,"tag":191,"props":2932,"children":2933},{"style":308},[2934],{"type":46,"value":2696},{"type":40,"tag":191,"props":2936,"children":2937},{"style":210},[2938],{"type":46,"value":316},{"type":40,"tag":191,"props":2940,"children":2941},{"style":204},[2942],{"type":46,"value":2943}," JSON",{"type":40,"tag":191,"props":2945,"children":2946},{"style":210},[2947],{"type":46,"value":412},{"type":40,"tag":191,"props":2949,"children":2950},{"style":216},[2951],{"type":46,"value":2952},"stringify",{"type":40,"tag":191,"props":2954,"children":2955},{"style":204},[2956],{"type":46,"value":224},{"type":40,"tag":191,"props":2958,"children":2959},{"style":210},[2960],{"type":46,"value":949},{"type":40,"tag":191,"props":2962,"children":2963},{"style":308},[2964],{"type":46,"value":2965}," clientId",{"type":40,"tag":191,"props":2967,"children":2968},{"style":210},[2969],{"type":46,"value":316},{"type":40,"tag":191,"props":2971,"children":2972},{"style":204},[2973],{"type":46,"value":2974}," WIX_CLIENT_ID",{"type":40,"tag":191,"props":2976,"children":2977},{"style":210},[2978],{"type":46,"value":362},{"type":40,"tag":191,"props":2980,"children":2981},{"style":308},[2982],{"type":46,"value":2983}," grantType",{"type":40,"tag":191,"props":2985,"children":2986},{"style":210},[2987],{"type":46,"value":316},{"type":40,"tag":191,"props":2989,"children":2990},{"style":210},[2991],{"type":46,"value":367},{"type":40,"tag":191,"props":2993,"children":2994},{"style":232},[2995],{"type":46,"value":2996},"anonymous",{"type":40,"tag":191,"props":2998,"children":2999},{"style":210},[3000],{"type":46,"value":229},{"type":40,"tag":191,"props":3002,"children":3003},{"style":210},[3004],{"type":46,"value":525},{"type":40,"tag":191,"props":3006,"children":3007},{"style":204},[3008],{"type":46,"value":244},{"type":40,"tag":191,"props":3010,"children":3011},{"style":210},[3012],{"type":46,"value":398},{"type":40,"tag":191,"props":3014,"children":3015},{"class":193,"line":1897},[3016,3020,3024],{"type":40,"tag":191,"props":3017,"children":3018},{"style":210},[3019],{"type":46,"value":2195},{"type":40,"tag":191,"props":3021,"children":3022},{"style":204},[3023],{"type":46,"value":244},{"type":40,"tag":191,"props":3025,"children":3026},{"style":210},[3027],{"type":46,"value":249},{"type":40,"tag":191,"props":3029,"children":3030},{"class":193,"line":1919},[3031,3035,3039,3044,3048,3052,3056,3061,3065,3070,3074,3078],{"type":40,"tag":191,"props":3032,"children":3033},{"style":198},[3034],{"type":46,"value":201},{"type":40,"tag":191,"props":3036,"children":3037},{"style":210},[3038],{"type":46,"value":286},{"type":40,"tag":191,"props":3040,"children":3041},{"style":204},[3042],{"type":46,"value":3043}," access_token ",{"type":40,"tag":191,"props":3045,"children":3046},{"style":210},[3047],{"type":46,"value":2195},{"type":40,"tag":191,"props":3049,"children":3050},{"style":210},[3051],{"type":46,"value":301},{"type":40,"tag":191,"props":3053,"children":3054},{"style":500},[3055],{"type":46,"value":2543},{"type":40,"tag":191,"props":3057,"children":3058},{"style":204},[3059],{"type":46,"value":3060}," res",{"type":40,"tag":191,"props":3062,"children":3063},{"style":210},[3064],{"type":46,"value":412},{"type":40,"tag":191,"props":3066,"children":3067},{"style":216},[3068],{"type":46,"value":3069},"json",{"type":40,"tag":191,"props":3071,"children":3072},{"style":204},[3073],{"type":46,"value":276},{"type":40,"tag":191,"props":3075,"children":3076},{"style":210},[3077],{"type":46,"value":520},{"type":40,"tag":191,"props":3079,"children":3080},{"style":1070},[3081],{"type":46,"value":3082},"   \u002F\u002F bearer for products, cart, checkout\n",{"type":40,"tag":49,"props":3084,"children":3085},{},[3086,3088,3093],{"type":46,"value":3087},"The cart and checkout APIs act on the ",{"type":40,"tag":1279,"props":3089,"children":3090},{},[3091],{"type":46,"value":3092},"caller's",{"type":46,"value":3094}," identity, so they want the visitor token — the\nadmin token is for managing the site, the visitor token is for being on it.",{"type":40,"tag":49,"props":3096,"children":3097},{},[3098,3100,3106],{"type":46,"value":3099},"The authentication docs, all fetchable with ",{"type":40,"tag":73,"props":3101,"children":3103},{"className":3102},[],[3104],{"type":46,"value":3105},"docs.fetchDoc",{"type":46,"value":316},{"type":40,"tag":3108,"props":3109,"children":3110},"ul",{},[3111,3123,3134,3145,3156,3167],{"type":40,"tag":3112,"props":3113,"children":3114},"li",{},[3115,3121],{"type":40,"tag":73,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":46,"value":3120},"api-reference\u002Farticles\u002Fauthentication\u002Fabout-identities",{"type":46,"value":3122}," — the identity model",{"type":40,"tag":3112,"props":3124,"children":3125},{},[3126,3132],{"type":40,"tag":73,"props":3127,"children":3129},{"className":3128},[],[3130],{"type":46,"value":3131},"api-reference\u002Farticles\u002Fauthentication\u002Frest-api-authentication",{"type":46,"value":3133}," — headers, token kinds",{"type":40,"tag":3112,"props":3135,"children":3136},{},[3137,3143],{"type":40,"tag":73,"props":3138,"children":3140},{"className":3139},[],[3141],{"type":46,"value":3142},"business-management\u002Fheadless\u002Fauthentication\u002Fretrieve-tokens",{"type":46,"value":3144}," — the \u002Foauth2\u002Ftoken contract, all grant types",{"type":40,"tag":3112,"props":3146,"children":3147},{},[3148,3154],{"type":40,"tag":73,"props":3149,"children":3151},{"className":3150},[],[3152],{"type":46,"value":3153},"go-headless\u002Fauthentication\u002Fabout-authentication",{"type":46,"value":3155}," — visitor vs member sessions",{"type":40,"tag":3112,"props":3157,"children":3158},{},[3159,3165],{"type":40,"tag":73,"props":3160,"children":3162},{"className":3161},[],[3163],{"type":46,"value":3164},"go-headless\u002Fgetting-started\u002Fsetup\u002Fauthentication\u002Fcreate-an-oauth-app-for-visitors-and-members",{"type":46,"value":3166}," — where the client id comes from",{"type":40,"tag":3112,"props":3168,"children":3169},{},[3170,3176],{"type":40,"tag":73,"props":3171,"children":3173},{"className":3172},[],[3174],{"type":46,"value":3175},"go-headless\u002Fauthentication\u002Fsetup\u002Fset-up-a-headless-client",{"type":46,"value":3177}," — wiring the client",{"type":40,"tag":106,"props":3179,"children":3181},{"id":3180},"_7-special-apis-worth-knowing",[3182],{"type":46,"value":3183},"7. Special APIs worth knowing",{"type":40,"tag":49,"props":3185,"children":3186},{},[3187,3192],{"type":40,"tag":55,"props":3188,"children":3189},{},[3190],{"type":46,"value":3191},"Dynamic Site Context — \"what IS this site?\"",{"type":46,"value":3193}," One admin call returns a markdown report of the\nwhole site: site ID, installed apps, status, URL, locale, site properties.",{"type":40,"tag":180,"props":3195,"children":3197},{"className":182,"code":3196,"language":184,"meta":185,"style":185},"await docs.callApi({\n  url: \"https:\u002F\u002Fwww.wixapis.com\u002F_api\u002Fdynamic-context\u002Fv1\u002Fdynamic-context\u002Fmarkdown\",\n  token: accessToken,\n  body: {},            \u002F\u002F siteId optional — site token returns that site; account token returns up to 10\n})\n",[3198],{"type":40,"tag":73,"props":3199,"children":3200},{"__ignoreMap":185},[3201,3228,3256,3275,3296],{"type":40,"tag":191,"props":3202,"children":3203},{"class":193,"line":194},[3204,3208,3212,3216,3220,3224],{"type":40,"tag":191,"props":3205,"children":3206},{"style":500},[3207],{"type":46,"value":926},{"type":40,"tag":191,"props":3209,"children":3210},{"style":204},[3211],{"type":46,"value":931},{"type":40,"tag":191,"props":3213,"children":3214},{"style":210},[3215],{"type":46,"value":412},{"type":40,"tag":191,"props":3217,"children":3218},{"style":216},[3219],{"type":46,"value":2624},{"type":40,"tag":191,"props":3221,"children":3222},{"style":204},[3223],{"type":46,"value":224},{"type":40,"tag":191,"props":3225,"children":3226},{"style":210},[3227],{"type":46,"value":2633},{"type":40,"tag":191,"props":3229,"children":3230},{"class":193,"line":252},[3231,3235,3239,3243,3248,3252],{"type":40,"tag":191,"props":3232,"children":3233},{"style":308},[3234],{"type":46,"value":2641},{"type":40,"tag":191,"props":3236,"children":3237},{"style":210},[3238],{"type":46,"value":316},{"type":40,"tag":191,"props":3240,"children":3241},{"style":210},[3242],{"type":46,"value":367},{"type":40,"tag":191,"props":3244,"children":3245},{"style":232},[3246],{"type":46,"value":3247},"https:\u002F\u002Fwww.wixapis.com\u002F_api\u002Fdynamic-context\u002Fv1\u002Fdynamic-context\u002Fmarkdown",{"type":40,"tag":191,"props":3249,"children":3250},{"style":210},[3251],{"type":46,"value":229},{"type":40,"tag":191,"props":3253,"children":3254},{"style":210},[3255],{"type":46,"value":398},{"type":40,"tag":191,"props":3257,"children":3258},{"class":193,"line":329},[3259,3263,3267,3271],{"type":40,"tag":191,"props":3260,"children":3261},{"style":308},[3262],{"type":46,"value":2675},{"type":40,"tag":191,"props":3264,"children":3265},{"style":210},[3266],{"type":46,"value":316},{"type":40,"tag":191,"props":3268,"children":3269},{"style":204},[3270],{"type":46,"value":2684},{"type":40,"tag":191,"props":3272,"children":3273},{"style":210},[3274],{"type":46,"value":398},{"type":40,"tag":191,"props":3276,"children":3277},{"class":193,"line":401},[3278,3282,3286,3291],{"type":40,"tag":191,"props":3279,"children":3280},{"style":308},[3281],{"type":46,"value":2696},{"type":40,"tag":191,"props":3283,"children":3284},{"style":210},[3285],{"type":46,"value":316},{"type":40,"tag":191,"props":3287,"children":3288},{"style":210},[3289],{"type":46,"value":3290}," {},",{"type":40,"tag":191,"props":3292,"children":3293},{"style":1070},[3294],{"type":46,"value":3295},"            \u002F\u002F siteId optional — site token returns that site; account token returns up to 10\n",{"type":40,"tag":191,"props":3297,"children":3298},{"class":193,"line":496},[3299,3303],{"type":40,"tag":191,"props":3300,"children":3301},{"style":210},[3302],{"type":46,"value":2195},{"type":40,"tag":191,"props":3304,"children":3305},{"style":204},[3306],{"type":46,"value":1064},{"type":40,"tag":49,"props":3308,"children":3309},{},[3310,3312,3317,3319,3325,3327,3333,3335,3341],{"type":46,"value":3311},"The report can be large — expect ",{"type":40,"tag":73,"props":3313,"children":3315},{"className":3314},[],[3316],{"type":46,"value":2414},{"type":46,"value":3318}," on content-rich sites. And a ",{"type":40,"tag":73,"props":3320,"children":3322},{"className":3321},[],[3323],{"type":46,"value":3324},"200",{"type":46,"value":3326}," with\n",{"type":40,"tag":73,"props":3328,"children":3330},{"className":3329},[],[3331],{"type":46,"value":3332},"{\"markdown\": \"\"}",{"type":46,"value":3334}," means the token or ",{"type":40,"tag":73,"props":3336,"children":3338},{"className":3337},[],[3339],{"type":46,"value":3340},"siteId",{"type":46,"value":3342}," is wrong — the endpoint reports an empty context\ninstead of an auth error, so treat empty as \"check auth\", never as \"empty site\".",{"type":40,"tag":49,"props":3344,"children":3345},{},[3346,3348,3357,3359,3365,3367,3373,3375,3381],{"type":46,"value":3347},"For site management, the ",{"type":40,"tag":55,"props":3349,"children":3350},{},[3351],{"type":40,"tag":73,"props":3352,"children":3354},{"className":3353},[],[3355],{"type":46,"value":3356},"wix-manage",{"type":46,"value":3358}," skill carries per-area recipes. It may already be\ninstalled at\n",{"type":40,"tag":73,"props":3360,"children":3362},{"className":3361},[],[3363],{"type":46,"value":3364},".agents\u002Fskills\u002Fwix-manage\u002F",{"type":46,"value":3366},"; install it with ",{"type":40,"tag":73,"props":3368,"children":3370},{"className":3369},[],[3371],{"type":46,"value":3372},"npx -y skills add wix\u002Fskills\u002Fskills\u002Fwix-manage",{"type":46,"value":3374},",\nor read it straight off the registry: ",{"type":40,"tag":73,"props":3376,"children":3378},{"className":3377},[],[3379],{"type":46,"value":3380},"https:\u002F\u002Fwww.wix.com\u002Fskills\u002Fwix-manage",{"type":46,"value":412},{"type":40,"tag":106,"props":3383,"children":3385},{"id":3384},"the-raw-endpoints-what-the-module-wraps",[3386],{"type":46,"value":3387},"The raw endpoints (what the module wraps)",{"type":40,"tag":579,"props":3389,"children":3390},{},[3391,3407],{"type":40,"tag":583,"props":3392,"children":3393},{},[3394],{"type":40,"tag":587,"props":3395,"children":3396},{},[3397,3402],{"type":40,"tag":591,"props":3398,"children":3399},{},[3400],{"type":46,"value":3401},"endpoint",{"type":40,"tag":591,"props":3403,"children":3404},{},[3405],{"type":46,"value":3406},"function",{"type":40,"tag":607,"props":3408,"children":3409},{},[3410,3475,3526,3571],{"type":40,"tag":587,"props":3411,"children":3412},{},[3413,3422],{"type":40,"tag":614,"props":3414,"children":3415},{},[3416],{"type":40,"tag":73,"props":3417,"children":3419},{"className":3418},[],[3420],{"type":46,"value":3421},"POST https:\u002F\u002Fwww.wixapis.com\u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fmenu\u002Fbrowse",{"type":40,"tag":614,"props":3423,"children":3424},{},[3425,3430,3432,3438,3440,3446,3447,3453,3454,3460,3462,3468,3469],{"type":40,"tag":73,"props":3426,"children":3428},{"className":3427},[],[3429],{"type":46,"value":940},{"type":46,"value":3431}," — body: ",{"type":40,"tag":73,"props":3433,"children":3435},{"className":3434},[],[3436],{"type":46,"value":3437},"menu_url",{"type":46,"value":3439},", ",{"type":40,"tag":73,"props":3441,"children":3443},{"className":3442},[],[3444],{"type":46,"value":3445},"include",{"type":46,"value":3439},{"type":40,"tag":73,"props":3448,"children":3450},{"className":3449},[],[3451],{"type":46,"value":3452},"name_filter",{"type":46,"value":3439},{"type":40,"tag":73,"props":3455,"children":3457},{"className":3456},[],[3458],{"type":46,"value":3459},"depth",{"type":46,"value":3461}," (1–6), ",{"type":40,"tag":73,"props":3463,"children":3465},{"className":3464},[],[3466],{"type":46,"value":3467},"deprecated",{"type":46,"value":3439},{"type":40,"tag":73,"props":3470,"children":3472},{"className":3471},[],[3473],{"type":46,"value":3474},"format",{"type":40,"tag":587,"props":3476,"children":3477},{},[3478,3487],{"type":40,"tag":614,"props":3479,"children":3480},{},[3481],{"type":40,"tag":73,"props":3482,"children":3484},{"className":3483},[],[3485],{"type":46,"value":3486},"POST https:\u002F\u002Fwww.wixapis.com\u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fsearch\u002Fmarkdown",{"type":40,"tag":614,"props":3488,"children":3489},{},[3490,3495,3496,3502,3503,3509,3510,3516,3518,3524],{"type":40,"tag":73,"props":3491,"children":3493},{"className":3492},[],[3494],{"type":46,"value":1161},{"type":46,"value":3431},{"type":40,"tag":73,"props":3497,"children":3499},{"className":3498},[],[3500],{"type":46,"value":3501},"search_term",{"type":46,"value":3439},{"type":40,"tag":73,"props":3504,"children":3506},{"className":3505},[],[3507],{"type":46,"value":3508},"document_type",{"type":46,"value":3439},{"type":40,"tag":73,"props":3511,"children":3513},{"className":3512},[],[3514],{"type":46,"value":3515},"maximum_results",{"type":46,"value":3517}," (1–20), ",{"type":40,"tag":73,"props":3519,"children":3521},{"className":3520},[],[3522],{"type":46,"value":3523},"lines_in_each_result",{"type":46,"value":3525}," (1–200)",{"type":40,"tag":587,"props":3527,"children":3528},{},[3529,3538],{"type":40,"tag":614,"props":3530,"children":3531},{},[3532],{"type":40,"tag":73,"props":3533,"children":3535},{"className":3534},[],[3536],{"type":46,"value":3537},"GET https:\u002F\u002Fdev.wix.com\u002Fdocs\u002F…?.md",{"type":40,"tag":614,"props":3539,"children":3540},{},[3541,3546,3548,3553,3555,3561,3563,3569],{"type":40,"tag":73,"props":3542,"children":3544},{"className":3543},[],[3545],{"type":46,"value":1346},{"type":46,"value":3547}," — every docs path has a ",{"type":40,"tag":73,"props":3549,"children":3551},{"className":3550},[],[3552],{"type":46,"value":133},{"type":46,"value":3554}," twin; ",{"type":40,"tag":73,"props":3556,"children":3558},{"className":3557},[],[3559],{"type":46,"value":3560},"https:\u002F\u002Fdev.wix.com\u002Fdocs\u002Fllms.txt",{"type":46,"value":3562}," is the root map; ",{"type":40,"tag":73,"props":3564,"children":3566},{"className":3565},[],[3567],{"type":46,"value":3568},"?apiView=SDK",{"type":46,"value":3570}," for the SDK view",{"type":40,"tag":587,"props":3572,"children":3573},{},[3574,3583],{"type":40,"tag":614,"props":3575,"children":3576},{},[3577],{"type":40,"tag":73,"props":3578,"children":3580},{"className":3579},[],[3581],{"type":46,"value":3582},"POST https:\u002F\u002Fmcp.wix.com\u002Fapi\u002Fcode-mode\u002Fsearch",{"type":40,"tag":614,"props":3584,"children":3585},{},[3586,3591,3593,3598,3599,3605,3607,3612,3614,3620,3622],{"type":40,"tag":73,"props":3587,"children":3589},{"className":3588},[],[3590],{"type":46,"value":1678},{"type":46,"value":3592}," \u002F ",{"type":40,"tag":73,"props":3594,"children":3596},{"className":3595},[],[3597],{"type":46,"value":1757},{"type":46,"value":1727},{"type":40,"tag":73,"props":3600,"children":3602},{"className":3601},[],[3603],{"type":46,"value":3604},"{ code: \"async function(){…}\" }",{"type":46,"value":3606}," with ",{"type":40,"tag":73,"props":3608,"children":3610},{"className":3609},[],[3611],{"type":46,"value":1785},{"type":46,"value":3613}," and ",{"type":40,"tag":73,"props":3615,"children":3617},{"className":3616},[],[3618],{"type":46,"value":3619},"getResourceSchemaByUrl(docsUrl)",{"type":46,"value":3621}," in scope; response wrapped in ",{"type":40,"tag":73,"props":3623,"children":3625},{"className":3624},[],[3626],{"type":46,"value":807},{"type":40,"tag":49,"props":3628,"children":3629},{},[3630,3632,3638,3640,3646],{"type":46,"value":3631},"There is also a structured search (",{"type":40,"tag":73,"props":3633,"children":3635},{"className":3634},[],[3636],{"type":46,"value":3637},"POST …\u002Fv1\u002Fdocs\u002Fsearch",{"type":46,"value":3639},", same body → ",{"type":40,"tag":73,"props":3641,"children":3643},{"className":3642},[],[3644],{"type":46,"value":3645},"{ results: [{ title, url, relevance_score }] }",{"type":46,"value":3647},") when you want to route on hits programmatically.",{"type":40,"tag":106,"props":3649,"children":3651},{"id":3650},"going-deeper",[3652],{"type":46,"value":3653},"Going deeper",{"type":40,"tag":49,"props":3655,"children":3656},{},[3657,3659,3667,3669,3675,3677,3682,3684,3689,3691,3697],{"type":46,"value":3658},"The ",{"type":40,"tag":68,"props":3660,"children":3661},{"href":70},[3662],{"type":40,"tag":73,"props":3663,"children":3665},{"className":3664},[],[3666],{"type":46,"value":78},{"type":46,"value":3668}," skill carries the shared references — a pruned map of the docs\ntree and per-section slicing recipes in ",{"type":40,"tag":73,"props":3670,"children":3672},{"className":3671},[],[3673],{"type":46,"value":3674},"references\u002FEXTRACTING.md",{"type":46,"value":3676},", and the full ",{"type":40,"tag":73,"props":3678,"children":3680},{"className":3679},[],[3681],{"type":46,"value":1785},{"type":46,"value":3683}," \u002F\n",{"type":40,"tag":73,"props":3685,"children":3687},{"className":3686},[],[3688],{"type":46,"value":2039},{"type":46,"value":3690}," example set in ",{"type":40,"tag":73,"props":3692,"children":3694},{"className":3693},[],[3695],{"type":46,"value":3696},"references\u002FAPI_SPEC_SEARCH.md",{"type":46,"value":3698},". The endpoints are the same;\nonly the transport differs.",{"type":40,"tag":3700,"props":3701,"children":3702},"style",{},[3703],{"type":46,"value":3704},"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":3706,"total":1998},[3707,3721,3737,3749,3767,3776,3783,3796,3810,3825],{"slug":3708,"name":3708,"fn":3709,"description":3710,"org":3711,"tags":3712,"stars":23,"repoUrl":24,"updatedAt":3720},"replatform","route RePlatform source-to-Wix 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},[3713,3716,3719],{"name":3714,"slug":3715,"type":13},"Automation","automation",{"name":3717,"slug":3718,"type":13},"Migration","migration",{"name":9,"slug":8,"type":13},"2026-08-09T04:33:25.965778",{"slug":3722,"name":3722,"fn":3723,"description":3724,"org":3725,"tags":3726,"stars":23,"repoUrl":24,"updatedAt":3736},"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},[3727,3730,3732,3735],{"name":3728,"slug":3729,"type":13},"Backend","backend",{"name":1259,"slug":3731,"type":13},"cli",{"name":3733,"slug":3734,"type":13},"Frontend","frontend",{"name":9,"slug":8,"type":13},"2026-08-13T04:28:43.038354",{"slug":3738,"name":3738,"fn":3739,"description":3740,"org":3741,"tags":3742,"stars":23,"repoUrl":24,"updatedAt":3748},"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},[3743,3744,3747],{"name":21,"slug":22,"type":13},{"name":3745,"slug":3746,"type":13},"Auth","auth",{"name":9,"slug":8,"type":13},"2026-07-07T06:47:46.95263",{"slug":3750,"name":3750,"fn":3751,"description":3752,"org":3753,"tags":3754,"stars":23,"repoUrl":24,"updatedAt":3766},"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},[3755,3758,3761,3762,3765],{"name":3756,"slug":3757,"type":13},"Design","design",{"name":3759,"slug":3760,"type":13},"Design System","design-system",{"name":3733,"slug":3734,"type":13},{"name":3763,"slug":3764,"type":13},"UI Components","ui-components",{"name":9,"slug":8,"type":13},"2026-08-19T03:30:02.365475",{"slug":78,"name":78,"fn":3768,"description":3769,"org":3770,"tags":3771,"stars":23,"repoUrl":24,"updatedAt":3775},"lookup Wix API documentation","Look up the Wix API\u002FSDK documentation to confirm an exact endpoint, HTTP method, request\u002Fresponse shape, field, enum, or error before writing Wix code — never guess a Wix API from memory. A lookup is a short flow: find the right page, then read it. Two ways: (1) plain `curl` (zero dependencies) — find a page by **semantic search** (`POST \u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fsearch`, natural-language `{ search_term, document_type }`) **or by browsing** the docs tree as a menu — a structured, typed, counted browse of the REST API reference (`POST \u002Fmcp-docs-search\u002Fv1\u002Fdocs\u002Fmenu\u002Fbrowse`), or the `.md` menu tree from the `llms.txt` root for any portal — then read the page by appending `.md` to its URL; and (2) the Wix MCP doc tools when your agent has them. Triggers: look up a Wix API, find the Wix endpoint\u002Fmethod, confirm a Wix request body or field, verify a Wix API shape, explore Wix docs, which Wix API do I call, read a Wix method schema.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3772,3773,3774],{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},"2026-08-19T03:30:03.411574",{"slug":4,"name":4,"fn":5,"description":6,"org":3777,"tags":3778,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3779,3780,3781,3782],{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":3784,"name":3784,"fn":3785,"description":3786,"org":3787,"tags":3788,"stars":23,"repoUrl":24,"updatedAt":3795},"wix-headless","build Wix Managed Headless sites","Connect Wix business services (Stores, Bookings, CMS, Blog, Events, Forms, and more) to a Wix Headless frontend — infer the needed capabilities, install the apps, seed backend content, and produce an SDK-integration guide. For managed (Wix-hosted) projects it can also build the frontend: scaffold a new site (create) or wire an existing\u002Fbrought-in design (connect), then build and release. Works across managed, self-managed, and stripe project types. Triggers: set up a Wix Headless backend, add Wix business features to my app, build or host a Wix site, connect\u002Fimplement this design with Wix.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3789,3790,3791,3794],{"name":3756,"slug":3757,"type":13},{"name":3733,"slug":3734,"type":13},{"name":3792,"slug":3793,"type":13},"Web Development","web-development",{"name":9,"slug":8,"type":13},"2026-08-13T04:28:41.194499",{"slug":3356,"name":3356,"fn":3797,"description":3798,"org":3799,"tags":3800,"stars":23,"repoUrl":24,"updatedAt":3809},"manage Wix business solutions via API","Wix business solution management recipes — REST API operations for configuring and managing Wix business solutions. Routes to: stores, bookings, get-paid, CMS, contacts, forms, media, app-installation, pricing-plans, restaurants, rich-content, sites, blog, calendar, domains, events, site-properties, ecommerce, marketing, google-ads, analytics, accessibility, dashboard-navigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3801,3802,3805,3808],{"name":21,"slug":22,"type":13},{"name":3803,"slug":3804,"type":13},"CMS","cms",{"name":3806,"slug":3807,"type":13},"E-commerce","e-commerce",{"name":9,"slug":8,"type":13},"2026-08-19T03:30:04.362389",{"slug":3811,"name":3811,"fn":3812,"description":3813,"org":3814,"tags":3815,"stars":23,"repoUrl":24,"updatedAt":3824},"wix-vibe-headless","connect frontend projects to Wix sites","Client-only, dependency-free REST scaffolds for connecting an already-built front end (a vibe-coded app, an HTML\u002FJSX\u002FVite project, a design-tool export) to a live Wix site over the site's public WIX_CLIENT_ID — the browser talks to Wix directly, no SDK, no backend, no build step. One skill covering every Wix business solution: Stores\u002FeCommerce storefront (products, cart, checkout), Bookings (services, slots, appointments), Blog (posts, categories, tags), Events & Tickets (browse, RSVP, ticketing), Portfolio (collections, projects, galleries), Restaurants (menu, online ordering, reservations), CMS \u002F Wix Data (list, detail, filter, forms, CRUD), Pricing Plans (memberships, subscriptions, checkout), and Members (custom login — email+password, Google\u002FFacebook, and custom SSO — plus account areas and member-gated content). Each vertical ships a copy-as-is REST layer plus wiring instructions. Read-only over the owner's content — never provisions, never mocks data. Triggers: connect my Wix store\u002Fshop, build a storefront over Wix, add a cart and checkout, connect Wix Bookings, take appointments\u002Freservations, show my Wix blog, list my Wix events, sell tickets, take RSVPs, build a portfolio from Wix Portfolio, show my restaurant menu \u002F order online \u002F book a table, display my Wix CMS collection, wire a contact form to Wix, sell membership\u002Fsubscription plans, add member login \u002F sign up, let members log in with Google or Facebook, custom login page, account \u002F profile page, gate content behind login, sign in with SSO\u002FOkta, 'here is my WIX_CLIENT_ID', connect this app to my Wix site over REST. Use this for CLIENT-ONLY REST integration over an existing site; use `wix-headless` instead for SDK + Wix CLI builds, hosting, and one-prompt new-site creation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3816,3817,3820,3823],{"name":3733,"slug":3734,"type":13},{"name":3818,"slug":3819,"type":13},"Integrations","integrations",{"name":3821,"slug":3822,"type":13},"REST API","rest-api",{"name":9,"slug":8,"type":13},"2026-08-13T04:28:44.242483",{"slug":3826,"name":3826,"fn":3827,"description":3828,"org":3829,"tags":3830,"stars":401,"repoUrl":3837,"updatedAt":3838},"interactor","add declarative animations with Interact","Use when user asks to add\u002Fedit motion without specific library, or with @wix\u002Finteract - hover, click, view\u002Fscroll triggered, scroll-driven, and pointer-driven animations for web. Wire animations to user interactions; install or set up @wix\u002Finteract; or edit an existing interact config. Do NOT use for other animation libraries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3831,3834,3835,3836],{"name":3832,"slug":3833,"type":13},"Animation","animation",{"name":3756,"slug":3757,"type":13},{"name":3733,"slug":3734,"type":13},{"name":9,"slug":8,"type":13},"https:\u002F\u002Fgithub.com\u002Fwix\u002Finteract","2026-08-03T06:01:39.765624",{"items":3840,"total":1976},[3841,3847,3854,3860,3868,3874,3881],{"slug":3708,"name":3708,"fn":3709,"description":3710,"org":3842,"tags":3843,"stars":23,"repoUrl":24,"updatedAt":3720},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3844,3845,3846],{"name":3714,"slug":3715,"type":13},{"name":3717,"slug":3718,"type":13},{"name":9,"slug":8,"type":13},{"slug":3722,"name":3722,"fn":3723,"description":3724,"org":3848,"tags":3849,"stars":23,"repoUrl":24,"updatedAt":3736},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3850,3851,3852,3853],{"name":3728,"slug":3729,"type":13},{"name":1259,"slug":3731,"type":13},{"name":3733,"slug":3734,"type":13},{"name":9,"slug":8,"type":13},{"slug":3738,"name":3738,"fn":3739,"description":3740,"org":3855,"tags":3856,"stars":23,"repoUrl":24,"updatedAt":3748},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3857,3858,3859],{"name":21,"slug":22,"type":13},{"name":3745,"slug":3746,"type":13},{"name":9,"slug":8,"type":13},{"slug":3750,"name":3750,"fn":3751,"description":3752,"org":3861,"tags":3862,"stars":23,"repoUrl":24,"updatedAt":3766},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3863,3864,3865,3866,3867],{"name":3756,"slug":3757,"type":13},{"name":3759,"slug":3760,"type":13},{"name":3733,"slug":3734,"type":13},{"name":3763,"slug":3764,"type":13},{"name":9,"slug":8,"type":13},{"slug":78,"name":78,"fn":3768,"description":3769,"org":3869,"tags":3870,"stars":23,"repoUrl":24,"updatedAt":3775},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3871,3872,3873],{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"slug":4,"name":4,"fn":5,"description":6,"org":3875,"tags":3876,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3877,3878,3879,3880],{"name":21,"slug":22,"type":13},{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"slug":3784,"name":3784,"fn":3785,"description":3786,"org":3882,"tags":3883,"stars":23,"repoUrl":24,"updatedAt":3795},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3884,3885,3886,3887],{"name":3756,"slug":3757,"type":13},{"name":3733,"slug":3734,"type":13},{"name":3792,"slug":3793,"type":13},{"name":9,"slug":8,"type":13}]