[{"data":1,"prerenderedAt":1452},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Freference\u002Frest-api":331,"docs-\u002Fdocs\u002Freference\u002Frest-api-surround":1449},[4],{"title":5,"path":6,"stem":7,"children":8,"page":46},"Docs","\u002Fdocs","docs",[9,47,72,90,132,198,241,252,276,301],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":46},"Getting started","What Zaproo Search is, a quickstart, and wiring search into a storefront.","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[16,22,28,34,40],{"title":17,"path":18,"stem":19,"description":20,"icon":21},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","What Zaproo Search is, the five things you work with, and how a product catalog becomes a search box on your shop.","i-lucide-book-open-text",{"title":23,"path":24,"stem":25,"description":26,"icon":27},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","Set up search for your shop in the cabinet, from a new account to a first search, with the API and MCP as other ways to do the same.","i-lucide-zap",{"title":29,"path":30,"stem":31,"description":32,"icon":33},"Integrate a storefront","\u002Fdocs\u002Fgetting-started\u002Fstorefront","docs\u002F1.getting-started\u002F3.storefront","Build a search results page with facets and an autocomplete box on top of the search and suggest routes.","i-lucide-store",{"title":35,"path":36,"stem":37,"description":38,"icon":39},"JavaScript SDK","\u002Fdocs\u002Fgetting-started\u002Fjavascript-sdk","docs\u002F1.getting-started\u002F4.javascript-sdk","Search, autocomplete and event tracking from a storefront with one small client that runs in the browser, on your server and in edge functions.","i-lucide-braces",{"title":41,"path":42,"stem":43,"description":44,"icon":45},"AI shopping assistant","\u002Fdocs\u002Fgetting-started\u002Fai-assistant","docs\u002F1.getting-started\u002F5.ai-assistant","A chat widget for your storefront that finds products and answers questions from your indexes.","i-lucide-sparkles",false,{"title":48,"description":49,"icon":50,"path":51,"stem":52,"children":53,"page":46},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[54,60,66],{"title":55,"path":56,"stem":57,"description":58,"icon":59},"Account and sign-in","\u002Fdocs\u002Faccount\u002Fsign-in","docs\u002F2.account\u002F1.sign-in","Create an account, verify your email, stay signed in, manage signed-in devices and change or reset your password.","i-lucide-log-in",{"title":61,"path":62,"stem":63,"description":64,"icon":65},"Organizations, members and roles","\u002Fdocs\u002Faccount\u002Forganizations","docs\u002F2.account\u002F2.organizations","What an organization holds, how to add members, and what owners, admins and members may do.","i-lucide-building-2",{"title":67,"path":68,"stem":69,"description":70,"icon":71},"Projects","\u002Fdocs\u002Faccount\u002Fprojects","docs\u002F2.account\u002F3.projects","Group the indices and API keys of one shop or one environment, and keep staging apart from production.","i-lucide-folder-kanban",{"title":73,"description":74,"icon":75,"path":76,"stem":77,"children":78,"page":46},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[79,84],{"title":80,"path":81,"stem":82,"description":83,"icon":75},"API keys","\u002Fdocs\u002Fkeys\u002Fapi-keys","docs\u002F3.keys\u002F1.api-keys","Secret and public keys, full and read access, index scope, allowed origins, expiry, and how to revoke a key.",{"title":85,"path":86,"stem":87,"description":88,"icon":89},"Rate limits and errors","\u002Fdocs\u002Fkeys\u002Frate-limits","docs\u002F3.keys\u002F2.rate-limits","How many requests each route accepts per minute, what a 429 looks like, the error format and every error code with its HTTP status.","i-lucide-gauge",{"title":91,"description":92,"icon":93,"path":94,"stem":95,"children":96,"page":46},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[97,102,108,114,120,126],{"title":98,"path":99,"stem":100,"description":101,"icon":93},"Indices and languages","\u002Fdocs\u002Findexing\u002Findices","docs\u002F4.indexing\u002F1.indices","Create an index, pick its language, read its status, and change the language later with a reindex.",{"title":103,"path":104,"stem":105,"description":106,"icon":107},"Mapping and fields","\u002Fdocs\u002Findexing\u002Fmapping","docs\u002F4.indexing\u002F2.mapping","Field types, the five flags that decide what a field is used for, text analysis options, unmapped fields, and which changes need a reindex.","i-lucide-table-properties",{"title":109,"path":110,"stem":111,"description":112,"icon":113},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload, browse and delete documents in the cabinet or through the API, follow each write as a task, and retry safely with Idempotency-Key.","i-lucide-file-json",{"title":115,"path":116,"stem":117,"description":118,"icon":119},"Full catalog sync","\u002Fdocs\u002Findexing\u002Ffull-sync","docs\u002F4.indexing\u002F4.full-sync","Replace the whole catalog with a replace session, so products missing from your export disappear from search, without downtime.","i-lucide-refresh-cw",{"title":121,"path":122,"stem":123,"description":124,"icon":125},"Reindex and versions","\u002Fdocs\u002Findexing\u002Fversions","docs\u002F4.indexing\u002F5.versions","Rebuild an index with its saved mapping and swap it in without downtime, follow or cancel the rebuild, and read activeVersion and buildingVersion.","i-lucide-git-compare-arrows",{"title":127,"path":128,"stem":129,"description":130,"icon":131},"Data source","\u002Fdocs\u002Findexing\u002Fdata-source","docs\u002F4.indexing\u002F6.data-source","Let Zaproo download your product feed on a schedule, map it to documents, write only what changed and delete what left the feed.","i-lucide-rss",{"title":133,"description":134,"icon":135,"path":136,"stem":137,"children":138,"page":46},"Integrations","Connect your shop. Magento 2, product feeds and the API work today; more platforms are coming.","i-lucide-plug-zap","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations",[139,145,151,156,162,168,173,178,183,188,193],{"title":140,"path":141,"stem":142,"description":143,"icon":144},"Integrations overview","\u002Fdocs\u002Fintegrations\u002Foverview","docs\u002F4.integrations\u002F01.overview","The ways to get your catalog into Zaproo Search, which one to pick, and how a connected shop shows up in the cabinet.","i-lucide-layout-grid",{"title":146,"path":147,"stem":148,"description":149,"icon":150},"Magento 2","\u002Fdocs\u002Fintegrations\u002Fmagento","docs\u002F4.integrations\u002F02.magento","Install the Zaproo Search module for Magento 2, connect each store view to its own index, and keep the catalog in sync.","i-lucide-shopping-cart",{"title":152,"path":153,"stem":154,"description":155,"icon":131},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. You set it up in the cabinet, and Zaproo downloads the feed on a schedule and writes only what changed.",{"title":157,"path":158,"stem":159,"description":160,"icon":161},"REST API and MCP","\u002Fdocs\u002Fintegrations\u002Frest-api-and-mcp","docs\u002F4.integrations\u002F04.rest-api-and-mcp","Send documents from your own code with the REST API, or let an AI agent manage the index over MCP.","i-lucide-code",{"title":163,"path":164,"stem":165,"description":166,"icon":167},"Shopify","\u002Fdocs\u002Fintegrations\u002Fshopify","docs\u002F4.integrations\u002F05.shopify","A Zaproo Search integration for Shopify is coming soon. Until then, connect the shop through a product feed or the REST API.","i-lucide-shopping-bag",{"title":169,"path":170,"stem":171,"description":172,"icon":167},"WooCommerce","\u002Fdocs\u002Fintegrations\u002Fwoocommerce","docs\u002F4.integrations\u002F06.woocommerce","A Zaproo Search integration for WooCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":174,"path":175,"stem":176,"description":177,"icon":167},"Shopware","\u002Fdocs\u002Fintegrations\u002Fshopware","docs\u002F4.integrations\u002F07.shopware","A Zaproo Search integration for Shopware is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":179,"path":180,"stem":181,"description":182,"icon":167},"BigCommerce","\u002Fdocs\u002Fintegrations\u002Fbigcommerce","docs\u002F4.integrations\u002F08.bigcommerce","A Zaproo Search integration for BigCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":184,"path":185,"stem":186,"description":187,"icon":167},"PrestaShop","\u002Fdocs\u002Fintegrations\u002Fprestashop","docs\u002F4.integrations\u002F09.prestashop","A Zaproo Search integration for PrestaShop is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":189,"path":190,"stem":191,"description":192,"icon":167},"commercetools","\u002Fdocs\u002Fintegrations\u002Fcommercetools","docs\u002F4.integrations\u002F10.commercetools","A Zaproo Search integration for commercetools is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":194,"path":195,"stem":196,"description":197,"icon":167},"Salesforce Commerce Cloud","\u002Fdocs\u002Fintegrations\u002Fsalesforce-commerce-cloud","docs\u002F4.integrations\u002F11.salesforce-commerce-cloud","A Zaproo Search integration for Salesforce Commerce Cloud is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":199,"description":200,"icon":201,"path":202,"stem":203,"children":204,"page":46},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[205,211,217,223,229,235],{"title":206,"path":207,"stem":208,"description":209,"icon":210},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","Try a search in the playground, then the search request and response for developers, with every filter form, sorting, paging, highlighting and the inline profile.","i-lucide-search-code",{"title":212,"path":213,"stem":214,"description":215,"icon":216},"Search profiles","\u002Fdocs\u002Fsearch\u002Fprofiles","docs\u002F5.search\u002F2.profiles","Every setting of a search profile, what it does to results, and the mistakes to avoid.","i-lucide-sliders-horizontal",{"title":218,"path":219,"stem":220,"description":221,"icon":222},"Facets","\u002Fdocs\u002Fsearch\u002Ffacets","docs\u002F5.search\u002F3.facets","The filter panels next to the results, the four facet types, index facets and profile facets, and how a shopper's clicks change the counts.","i-lucide-list-filter",{"title":224,"path":225,"stem":226,"description":227,"icon":228},"Synonyms","\u002Fdocs\u002Fsearch\u002Fsynonyms","docs\u002F5.search\u002F4.synonyms","Let different words find the same products, with equivalent and one-way rules, bulk import and export in the Solr format, and no reindex.","i-lucide-arrow-left-right",{"title":230,"path":231,"stem":232,"description":233,"icon":234},"Ranking rules","\u002Fdocs\u002Fsearch\u002Frules","docs\u002F5.search\u002F5.rules","Change the results for chosen searches. Put products first, hide them, lift or lower a brand, narrow the results or weigh fields differently, on a schedule and per profile.","i-lucide-list-ordered",{"title":236,"path":237,"stem":238,"description":239,"icon":240},"Language groups","\u002Fdocs\u002Fsearch\u002Flanguage-groups","docs\u002F5.search\u002F6.language-groups","Let each store of a multilingual shop find its products by the other stores' text, so an English search on the Estonian store still finds the Estonian product.","i-lucide-languages",{"title":242,"description":243,"icon":244,"path":245,"stem":246,"children":247,"page":46},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[248],{"title":242,"path":249,"stem":250,"description":251,"icon":244},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Set up query suggestions in the cabinet. They are built every hour from your shoppers' searches, field values and custom entries.",{"title":253,"description":254,"icon":255,"path":256,"stem":257,"children":258,"page":46},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[259,264,270],{"title":260,"path":261,"stem":262,"description":263,"icon":255},"Search analytics","\u002Fdocs\u002Fanalytics\u002Fsearch-analytics","docs\u002F7.analytics\u002F1.search-analytics","What the analytics page counts, which traffic it leaves out, how the headline numbers are defined, how comparisons and retention work, and how to get the weekly digest.",{"title":265,"path":266,"stem":267,"description":268,"icon":269},"Reports","\u002Fdocs\u002Fanalytics\u002Freports","docs\u002F7.analytics\u002F2.reports","Every analytics report with the definition of each column, the opportunities list and its fix buttons, the per-query view with before and after, and the CSV download.","i-lucide-table",{"title":271,"path":272,"stem":273,"description":274,"icon":275},"Event tracking","\u002Fdocs\u002Fanalytics\u002Fevent-tracking","docs\u002F7.analytics\u002F3.event-tracking","Send clicks, add-to-cart, purchases and suggestion clicks from your storefront, tie them to the search with searchId, and a copy-paste script that does it.","i-lucide-mouse-pointer-click",{"title":277,"description":278,"icon":279,"path":280,"stem":281,"children":282,"page":46},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[283,289,295],{"title":284,"path":285,"stem":286,"description":287,"icon":288},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or another MCP client to your project from the cabinet's MCP connection page, and let an agent manage indices, documents, profiles, synonyms and rules.","i-lucide-plug",{"title":290,"path":291,"stem":292,"description":293,"icon":294},"MCP tools","\u002Fdocs\u002Fmcp\u002Ftools","docs\u002F8.mcp\u002F2.tools","Every tool the Zaproo Search MCP server offers, what an agent can do with each group, and prompts to start from.","i-lucide-wrench",{"title":296,"path":297,"stem":298,"description":299,"icon":300},"Resources and prompts","\u002Fdocs\u002Fmcp\u002Fresources","docs\u002F8.mcp\u002F3.resources","The index resources an MCP client can read, the tune_relevance prompt, and the errors the MCP server answers.","i-lucide-library",{"title":302,"description":303,"icon":304,"path":305,"stem":306,"children":307,"page":46},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[308,314,319,325],{"title":309,"path":310,"stem":311,"description":312,"icon":313},"REST API","\u002Fdocs\u002Freference\u002Frest-api","docs\u002F9.reference\u002F1.rest-api","The routes of the Zaproo Search REST API, grouped by area, with who may call it.","i-lucide-list-tree",{"title":315,"path":316,"stem":317,"description":318,"icon":89},"Limits","\u002Fdocs\u002Freference\u002Flimits","docs\u002F9.reference\u002F2.limits","Every size limit, cap and default of the Zaproo Search API in one place, with what happens when you reach it.",{"title":320,"path":321,"stem":322,"description":323,"icon":324},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","Check your plan and usage on the Billing & usage page, change the plan, download invoices, and see how quotas and proration work.","i-lucide-credit-card",{"title":326,"path":327,"stem":328,"description":329,"icon":330},"Status","\u002Fdocs\u002Freference\u002Fstatus","docs\u002F9.reference\u002F4.status","The status page and the status route, what each service covers and how to use them in your own monitoring.","i-lucide-activity",{"id":332,"title":309,"body":333,"description":312,"extension":1444,"meta":1445,"navigation":1446,"path":310,"seo":1447,"stem":311,"__hash__":1448},"docs\u002Fdocs\u002F9.reference\u002F1.rest-api.md",{"type":334,"value":335,"toc":1420},"minimark",[336,341,354,376,408,411,495,509,512,579,598,602,615,620,623,626,633,637,657,734,778,796,800,802,805,808,810,813,816,819,821,824,828,830,833,835,838,841,861,866,903,906,908,911,914,916,920,955,958,961,964,966,969,972,975,978,981,984,987,990,993,997,1011,1014,1016,1019,1021,1023,1026,1029,1033,1036,1038,1041,1044,1047,1049,1052,1061,1065,1068,1071,1073,1075,1078,1082,1085,1087,1090,1093,1096,1098,1100,1103,1107,1110,1112,1115,1117,1120,1123,1126,1129,1189,1192,1195,1198,1201,1206,1209,1211,1214,1221,1225,1228,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277,1280,1283,1286,1289,1293,1299,1302,1306,1309,1312,1315,1317,1333,1335,1338,1341,1344,1346,1350,1355,1358,1361,1364,1376,1380,1387,1391,1416],[337,338,340],"h2",{"id":339},"basics","Basics",[342,343,344,345,349,350,353],"p",{},"The API lives at ",[346,347,348],"code",{},"https:\u002F\u002Fapi.search.zaproo.cloud",". Every request body and response is JSON, every route except the health checks sits under ",[346,351,352],{},"\u002Fv1",", and every request authenticates with one header:",[355,356,361],"pre",{"className":357,"code":358,"language":359,"meta":360,"style":360},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","-H \"Authorization: Bearer zs_sk_...\"\n","bash","",[346,362,363],{"__ignoreMap":360},[364,365,368,372],"span",{"class":366,"line":367},"line",1,[364,369,371],{"class":370},"szw1H","-H",[364,373,375],{"class":374},"semJd"," \"Authorization: Bearer zs_sk_...\"\n",[342,377,378,379,382,383,386,387,392,393,396,397,399,400,403,404,407],{},"The bearer is a secret key (",[346,380,381],{},"zs_sk_…",") for a server, a public key (",[346,384,385],{},"zs_pk_…",") for the ",[388,389,391],"a",{"href":390},"#storefront","storefront routes",", or the cabinet's session token for a signed-in user. You create keys in the cabinet, on the project's ",[394,395,80],"strong",{}," page; see ",[388,398,80],{"href":81},". The project id in each path is in the cabinet URL, ",[346,401,402],{},"\u002Fapp\u002Fp\u002F\u003Cproject id>\u002F...",", and on the project's ",[394,405,406],{},"Settings"," page.",[342,409,410],{},"Who may call a route is printed under each one:",[412,413,414,427],"table",{},[415,416,417],"thead",{},[418,419,420,424],"tr",{},[421,422,423],"th",{},"Label",[421,425,426],{},"Means",[428,429,430,439,447,455,463,471,479,487],"tbody",{},[418,431,432,436],{},[433,434,435],"td",{},"Anyone",[433,437,438],{},"No credentials.",[418,440,441,444],{},[433,442,443],{},"No credentials",[433,445,446],{},"Sign-in and account recovery: the route takes its own proof (a password, an emailed token, a refresh cookie).",[418,448,449,452],{},[433,450,451],{},"Signed-in user",[433,453,454],{},"A cabinet session of any user.",[418,456,457,460],{},[433,458,459],{},"Organization member, admin, owner",[433,461,462],{},"A cabinet session whose role in the organization is at least this one. Roles rank owner, admin, member.",[418,464,465,468],{},[433,466,467],{},"Project member or admin (signed in)",[433,469,470],{},"A cabinet session with at least that role in the project's organization. API keys cannot call these routes.",[418,472,473,476],{},[433,474,475],{},"Project member or any secret key",[433,477,478],{},"A cabinet session of a member, or a secret key of the project with read or full access.",[418,480,481,484],{},[433,482,483],{},"Project admin or a full-access secret key",[433,485,486],{},"A cabinet session of an admin, or a secret key of the project with full access.",[418,488,489,492],{},[433,490,491],{},"Public key from an allowed origin, or a secret key",[433,493,494],{},"A public key whose request comes from one of its allowed origins, or a secret key of the same project.",[342,496,497,498,501,502,505,506,508],{},"An id that belongs to another organization or project answers ",[346,499,500],{},"404",", never ",[346,503,504],{},"403",", so ids cannot be probed. A key with an index scope gets ",[346,507,500],{}," for every other index.",[342,510,511],{},"Errors share one shape:",[355,513,517],{"className":514,"code":515,"language":516,"meta":360,"style":360},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\"error\": {\"code\": \"PROFILE_INVALID\", \"message\": \"...\", \"details\": [{\"path\": \"queryFields.title\", \"message\": \"...\"}]}}\n","json",[346,518,519],{"__ignoreMap":360},[364,520,521,525,529,532,535,538,541,544,547,549,552,554,557,560,563,565,568,570,572,574,576],{"class":366,"line":367},[364,522,524],{"class":523},"s7iLA","{",[364,526,528],{"class":527},"sb7M8","\"error\"",[364,530,531],{"class":523},": {",[364,533,534],{"class":527},"\"code\"",[364,536,537],{"class":523},": ",[364,539,540],{"class":374},"\"PROFILE_INVALID\"",[364,542,543],{"class":523},", ",[364,545,546],{"class":527},"\"message\"",[364,548,537],{"class":523},[364,550,551],{"class":374},"\"...\"",[364,553,543],{"class":523},[364,555,556],{"class":527},"\"details\"",[364,558,559],{"class":523},": [{",[364,561,562],{"class":527},"\"path\"",[364,564,537],{"class":523},[364,566,567],{"class":374},"\"queryFields.title\"",[364,569,543],{"class":523},[364,571,546],{"class":527},[364,573,537],{"class":523},[364,575,551],{"class":374},[364,577,578],{"class":523},"}]}}\n",[580,581,582],"note",{},[342,583,584,585,588,589,592,593,597],{},"Writes to documents, a reindex and a suggestion rebuild answer ",[346,586,587],{},"202"," with ",[346,590,591],{},"{\"taskId\": \"...\"}",". Poll the task under ",[388,594,596],{"href":595},"#tasks","Tasks"," until it is done.",[337,599,601],{"id":600},"storefront","Storefront",[342,603,604,605,608,609,611,612,614],{},"The three routes a storefront calls. They take a public handle in the path instead of a project id. ",[346,606,607],{},"POST \u002Fv1\u002Fevents\u002F:profileKey"," takes a bare JSON array of 1 to 100 click, add-to-cart, purchase or suggestion-click events and answers ",[346,610,587],{},"; see ",[388,613,271],{"href":272},".",[616,617],"api-route",{"auth":491,"method":618,"path":619},"POST","\u002Fv1\u002Fsearch\u002F:profileKey",[616,621],{"auth":491,"method":618,"path":622},"\u002Fv1\u002Fsuggest\u002F:suggestKey",[616,624],{"auth":491,"method":618,"path":625},"\u002Fv1\u002Fevents\u002F:profileKey",[342,627,628,629,632],{},"These routes answer the CORS preflight for every origin, without cookies, so a shop's pages can call them from the browser with a public key. The key's allowed origins are checked on the real request. A server sends no ",[346,630,631],{},"Origin"," header, so call them from a server with a secret key.",[337,634,636],{"id":635},"indices","Indices",[342,638,639,640,543,642,644,645,648,649,652,653,656],{},"See ",[388,641,98],{"href":99},[388,643,103],{"href":104}," and ",[388,646,647],{"href":122},"Reindex",". A mapping change, reindex or replace session that would break a profile, rule, facet, autocomplete field or data source answers ",[346,650,651],{},"409 MAPPING_BREAKS_CONFIG","; ",[346,654,655],{},"details"," lists each use to change first.",[342,658,659,660,663,664,543,667,670,671,644,674,543,677,680,681,684,685,688,689,692,693,695,696,699,700,703,704,707,708,711,712,644,715,718,719,722,723,726,727,730,731,614],{},"A shop platform plugin, such as the Magento 2 module, reports itself with ",[346,661,662],{},"PUT ...\u002Fintegration"," (body ",[346,665,666],{},"platform",[346,668,669],{},"name",", optional ",[346,672,673],{},"url",[346,675,676],{},"version",[346,678,679],{},"settings.manageMapping",") each time its settings change, and ",[346,682,683],{},"GET ...\u002F:indexId"," returns it as ",[346,686,687],{},"integration",". Only a full-access secret key may connect one; a signed-in user gets ",[346,690,691],{},"403 INTEGRATION_KEY_ONLY",". While ",[346,694,679],{}," is on, ",[346,697,698],{},"PUT ...\u002Fmapping"," from the plugin's own key only adds the fields the saved mapping lacks and keeps every saved field and the language, and a ",[346,701,702],{},"PUT"," or ",[346,705,706],{},"PATCH ...\u002Fmapping"," from anyone else answers ",[346,709,710],{},"409 MAPPING_MANAGED_BY_INTEGRATION"," if it removes a field. While any integration is connected, ",[346,713,714],{},"PUT ...\u002Ffeed",[346,716,717],{},"POST ...\u002Ffeed\u002Fsync"," answer ",[346,720,721],{},"409 INDEX_HAS_INTEGRATION",". ",[346,724,725],{},"DELETE ...\u002Fintegration"," disconnects it, answers ",[346,728,729],{},"204"," and is safe to repeat. See ",[388,732,133],{"href":733},"\u002Fdocs\u002Findexing\u002Fdata-source#integrations",[342,735,736,739,740,543,743,746,747,749,750,722,753,756,757,760,761,722,764,739,767,769,770,773,774,614],{},[346,737,738],{},"PUT ...\u002F:indexId"," takes ",[346,741,742],{},"{ \"name\" }",[346,744,745],{},"{ \"folderId\" }"," or both. ",[346,748,669],{}," renames the index; a name the project already uses answers ",[346,751,752],{},"409 INDEX_NAME_TAKEN",[346,754,755],{},"folderId"," files the index in a folder of the project, and ",[346,758,759],{},"null"," moves it out; an unknown folder answers ",[346,762,763],{},"404 INDEX_FOLDER_NOT_FOUND",[346,765,766],{},"DELETE ...\u002F:indexId",[346,768,742],{}," too: the index name exactly as saved, or it answers ",[346,771,772],{},"400 INDEX_NAME_MISMATCH"," and deletes nothing. See ",[388,775,777],{"href":776},"\u002Fdocs\u002Findexing\u002Findices#delete-an-index","Delete an index",[342,779,780,783,784,787,788,791,792,795],{},[346,781,782],{},"GET ...\u002Findices"," lists the indices in the order the cabinet shows. ",[346,785,786],{},"PUT ...\u002Findices\u002Forder"," saves a new one: ",[346,789,790],{},"{ \"ids\" }"," with every index id of the project once, or it answers ",[346,793,794],{},"400 INDEX_ORDER_MISMATCH",". A new index goes last.",[616,797],{"auth":475,"method":798,"path":799},"GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices",[616,801],{"auth":483,"method":618,"path":799},[616,803],{"auth":483,"method":702,"path":804},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002Forder",[616,806],{"auth":475,"method":798,"path":807},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId",[616,809],{"auth":483,"method":702,"path":807},[616,811],{"auth":483,"method":812,"path":807},"DELETE",[616,814],{"auth":475,"method":798,"path":815},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fmapping",[616,817],{"auth":475,"method":798,"path":818},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fmapping\u002Fusage",[616,820],{"auth":483,"method":702,"path":815},[616,822],{"auth":483,"method":823,"path":815},"PATCH",[616,825],{"auth":826,"method":702,"path":827},"A full-access secret key","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fintegration",[616,829],{"auth":483,"method":812,"path":827},[616,831],{"auth":475,"method":798,"path":832},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Ffacets",[616,834],{"auth":483,"method":702,"path":832},[616,836],{"auth":483,"method":618,"path":837},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freindex",[616,839],{"auth":483,"method":618,"path":840},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freindex\u002Fcancel",[342,842,843,844,846,847,849,850,853,854,856,857,614],{},"Every index carries ",[346,845,755],{}," (its cabinet folder, or ",[346,848,759],{},") and ",[346,851,852],{},"dataUpdatedAt"," (when its documents last changed, or ",[346,855,759],{},"). See ",[388,858,860],{"href":859},"\u002Fdocs\u002Findexing\u002Findices#last-data-update","Last data update",[862,863,865],"h3",{"id":864},"index-folders","Index folders",[342,867,868,869,644,871,873,874,876,877,722,880,882,883,787,886,888,889,892,893,895,896,898,899,614],{},"Folders only organize the cabinet list, one level deep. Search, API keys and plugins ignore them. ",[346,870,618],{},[346,872,702],{}," take ",[346,875,742],{},", unique in the project, 1 to 100 characters; a taken name answers ",[346,878,879],{},"409 INDEX_FOLDER_NAME_TAKEN",[346,881,798],{}," lists them in the cabinet order. ",[346,884,885],{},"PUT ...\u002Findex-folders\u002Forder",[346,887,790],{}," with every folder id of the project once, or it answers ",[346,890,891],{},"400 INDEX_FOLDER_ORDER_MISMATCH",". A new folder goes last. ",[346,894,812],{}," answers ",[346,897,729],{}," and moves the folder's indices to the top level. See ",[388,900,902],{"href":901},"\u002Fdocs\u002Findexing\u002Findices#organize-indices-in-folders","Organize indices in folders",[616,904],{"auth":475,"method":798,"path":905},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findex-folders",[616,907],{"auth":483,"method":618,"path":905},[616,909],{"auth":483,"method":702,"path":910},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findex-folders\u002Forder",[616,912],{"auth":483,"method":702,"path":913},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findex-folders\u002F:folderId",[616,915],{"auth":483,"method":812,"path":913},[337,917,919],{"id":918},"documents-and-full-sync","Documents and full sync",[342,921,922,925,926,929,930,933,934,937,938,588,940,644,943,611,946,950,951,644,953,614],{},[346,923,924],{},"POST ...\u002Fdocuments"," takes a bare JSON array of up to 1000 documents; ",[346,927,928],{},"POST ...\u002Fdocuments\u002Fdelete"," a bare array of ids. Both accept an ",[346,931,932],{},"Idempotency-Key"," header. ",[346,935,936],{},"POST ...\u002Fdocuments\u002Fflush"," takes no body, deletes every document and answers ",[346,939,587],{},[346,941,942],{},"taskId",[346,944,945],{},"previousDocCount",[388,947,949],{"href":948},"\u002Fdocs\u002Findexing\u002Fdocuments#delete-all-documents","Delete all documents",". Replace sessions upload a whole catalog and swap it in at commit. See ",[388,952,109],{"href":110},[388,954,115],{"href":116},[616,956],{"auth":483,"method":618,"path":957},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fdocuments",[616,959],{"auth":483,"method":618,"path":960},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fdocuments\u002Fdelete",[616,962],{"auth":483,"method":618,"path":963},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fdocuments\u002Fflush",[616,965],{"auth":475,"method":798,"path":957},[616,967],{"auth":475,"method":798,"path":968},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fdocuments\u002F:docId",[616,970],{"auth":483,"method":618,"path":971},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions",[616,973],{"auth":475,"method":798,"path":974},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId",[616,976],{"auth":483,"method":618,"path":977},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fdocuments",[616,979],{"auth":483,"method":618,"path":980},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fcommit",[616,982],{"auth":483,"method":618,"path":983},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fabort",[337,985,596],{"id":986},"tasks",[616,988],{"auth":475,"method":798,"path":989},"\u002Fv1\u002Fprojects\u002F:projectId\u002Ftasks",[616,991],{"auth":475,"method":798,"path":992},"\u002Fv1\u002Fprojects\u002F:projectId\u002Ftasks\u002F:taskId",[337,994,996],{"id":995},"search-and-profiles","Search and profiles",[342,998,999,1002,1003,1006,1007,644,1009,614],{},[346,1000,1001],{},"POST ...\u002Findices\u002F:indexId\u002Fsearch"," is the secret search by index id: a saved profile by ",[346,1004,1005],{},"profileKey",", or an inline profile to try settings before saving them. See ",[388,1008,206],{"href":207},[388,1010,212],{"href":213},[616,1012],{"auth":475,"method":798,"path":1013},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fprofiles",[616,1015],{"auth":483,"method":618,"path":1013},[616,1017],{"auth":475,"method":798,"path":1018},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fprofiles\u002F:profileId",[616,1020],{"auth":483,"method":702,"path":1018},[616,1022],{"auth":483,"method":812,"path":1018},[616,1024],{"auth":475,"method":618,"path":1025},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsearch",[337,1027,224],{"id":1028},"synonyms",[342,1030,639,1031,614],{},[388,1032,224],{"href":225},[616,1034],{"auth":475,"method":798,"path":1035},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms",[616,1037],{"auth":483,"method":618,"path":1035},[616,1039],{"auth":483,"method":618,"path":1040},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002Fimport",[616,1042],{"auth":475,"method":798,"path":1043},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002Fexport",[616,1045],{"auth":483,"method":702,"path":1046},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsynonyms\u002F:synonymId",[616,1048],{"auth":483,"method":812,"path":1046},[337,1050,236],{"id":1051},"language-groups",[342,1053,1054,1055,1058,1059,614],{},"Groups are managed from a cabinet session only; API keys see an index's group in ",[346,1056,1057],{},"languageGroup"," but cannot change groups. See ",[388,1060,236],{"href":237},[616,1062],{"auth":1063,"method":798,"path":1064},"Project member (signed in)","\u002Fv1\u002Fprojects\u002F:projectId\u002Flanguage-groups",[616,1066],{"auth":1067,"method":618,"path":1064},"Project admin (signed in)",[616,1069],{"auth":1063,"method":798,"path":1070},"\u002Fv1\u002Fprojects\u002F:projectId\u002Flanguage-groups\u002F:groupId",[616,1072],{"auth":1067,"method":702,"path":1070},[616,1074],{"auth":1067,"method":812,"path":1070},[337,1076,230],{"id":1077},"ranking-rules",[342,1079,639,1080,614],{},[388,1081,230],{"href":231},[616,1083],{"auth":475,"method":798,"path":1084},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Frules",[616,1086],{"auth":483,"method":618,"path":1084},[616,1088],{"auth":483,"method":702,"path":1089},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Frules\u002Forder",[616,1091],{"auth":475,"method":618,"path":1092},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Frules\u002Ftest",[616,1094],{"auth":475,"method":798,"path":1095},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Frules\u002F:ruleId",[616,1097],{"auth":483,"method":702,"path":1095},[616,1099],{"auth":483,"method":812,"path":1095},[337,1101,242],{"id":1102},"autocomplete",[342,1104,639,1105,614],{},[388,1106,242],{"href":249},[616,1108],{"auth":475,"method":798,"path":1109},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsuggestions\u002Fconfig",[616,1111],{"auth":483,"method":702,"path":1109},[616,1113],{"auth":475,"method":798,"path":1114},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsuggestions\u002Fcustom",[616,1116],{"auth":483,"method":618,"path":1114},[616,1118],{"auth":483,"method":812,"path":1119},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsuggestions\u002Fcustom\u002F:suggestionId",[616,1121],{"auth":483,"method":618,"path":1122},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsuggestions\u002Frebuild",[616,1124],{"auth":475,"method":618,"path":1125},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsuggest",[337,1127,253],{"id":1128},"analytics",[342,1130,1131,1132,543,1135,543,1138,543,1141,543,1144,644,1147,722,1150,1153,1154,543,1157,543,1160,543,1163,543,1166,543,1169,543,1171,543,1174,543,1177,1180,1181,1184,1185,644,1187,614],{},"All three take ",[346,1133,1134],{},"from",[346,1136,1137],{},"to",[346,1139,1140],{},"compare",[346,1142,1143],{},"device",[346,1145,1146],{},"country",[346,1148,1149],{},"includeInternal",[346,1151,1152],{},":report"," is one of ",[346,1155,1156],{},"queries",[346,1158,1159],{},"no-click",[346,1161,1162],{},"products",[346,1164,1165],{},"positions",[346,1167,1168],{},"filters",[346,1170,1102],{},[346,1172,1173],{},"rules",[346,1175,1176],{},"refinements",[346,1178,1179],{},"opportunities","; the query route takes ",[346,1182,1183],{},"q",". See ",[388,1186,260],{"href":261},[388,1188,265],{"href":266},[616,1190],{"auth":475,"method":798,"path":1191},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fanalytics",[616,1193],{"auth":475,"method":798,"path":1194},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fanalytics\u002Fquery",[616,1196],{"auth":475,"method":798,"path":1197},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fanalytics\u002F:report",[337,1199,80],{"id":1200},"api-keys",[342,1202,1203,1204,614],{},"Keys are managed from a cabinet session only; no key can create or revoke another key. Creating a key needs a confirmed email. See ",[388,1205,80],{"href":81},[616,1207],{"auth":1063,"method":798,"path":1208},"\u002Fv1\u002Fprojects\u002F:projectId\u002Fapi-keys",[616,1210],{"auth":1067,"method":618,"path":1208},[616,1212],{"auth":1067,"method":812,"path":1213},"\u002Fv1\u002Fprojects\u002F:projectId\u002Fapi-keys\u002F:keyId",[342,1215,1216,1217,1220],{},"A secret key belongs to one project. An integration given only the key finds that project, ",[346,1218,1219],{},"{ items: [Project] }",", with:",[616,1222],{"auth":1223,"method":798,"path":1224},"Secret key","\u002Fv1\u002Fapi-key\u002Fprojects",[337,1226,55],{"id":1227},"account-and-sign-in",[342,1229,1230,1231,644,1234,1237,1238,644,1241,1244,1245,614],{},"The cabinet's own routes. ",[346,1232,1233],{},"refresh",[346,1235,1236],{},"logout"," read the refresh cookie the cabinet holds. ",[346,1239,1240],{},"impersonate",[346,1242,1243],{},"impersonation\u002Fexit"," serve Zaproo support: they trade a one-time code from an administrator for a session as the account owner, and end it. See ",[388,1246,55],{"href":56},[616,1248],{"auth":443,"method":618,"path":1249},"\u002Fv1\u002Fauth\u002Fregister",[616,1251],{"auth":443,"method":798,"path":1252},"\u002Fv1\u002Fauth\u002Fverify-email",[616,1254],{"auth":451,"method":618,"path":1255},"\u002Fv1\u002Fauth\u002Fresend-verification",[616,1257],{"auth":443,"method":618,"path":1258},"\u002Fv1\u002Fauth\u002Flogin",[616,1260],{"auth":443,"method":618,"path":1261},"\u002Fv1\u002Fauth\u002Frefresh",[616,1263],{"auth":443,"method":618,"path":1264},"\u002Fv1\u002Fauth\u002Flogout",[616,1266],{"auth":443,"method":618,"path":1267},"\u002Fv1\u002Fauth\u002Fforgot-password",[616,1269],{"auth":443,"method":618,"path":1270},"\u002Fv1\u002Fauth\u002Freset-password",[616,1272],{"auth":443,"method":618,"path":1273},"\u002Fv1\u002Fauth\u002Fimpersonate",[616,1275],{"auth":451,"method":618,"path":1276},"\u002Fv1\u002Fauth\u002Fimpersonation\u002Fexit",[616,1278],{"auth":451,"method":798,"path":1279},"\u002Fv1\u002Fauth\u002Fme",[616,1281],{"auth":451,"method":618,"path":1282},"\u002Fv1\u002Fauth\u002Fchange-password",[616,1284],{"auth":451,"method":798,"path":1285},"\u002Fv1\u002Fauth\u002Fsessions",[616,1287],{"auth":451,"method":812,"path":1288},"\u002Fv1\u002Fauth\u002Fsessions\u002F:familyId",[337,1290,1292],{"id":1291},"organizations-members-and-projects","Organizations, members and projects",[342,1294,639,1295,644,1297,614],{},[388,1296,61],{"href":62},[388,1298,67],{"href":68},[616,1300],{"auth":451,"method":798,"path":1301},"\u002Fv1\u002Forgs",[616,1303],{"auth":1304,"method":798,"path":1305},"Organization member","\u002Fv1\u002Forgs\u002F:orgId",[616,1307],{"auth":1304,"method":798,"path":1308},"\u002Fv1\u002Forgs\u002F:orgId\u002Fprojects",[616,1310],{"auth":1311,"method":618,"path":1308},"Organization admin",[616,1313],{"auth":475,"method":798,"path":1314},"\u002Fv1\u002Fprojects\u002F:projectId",[616,1316],{"auth":1311,"method":702,"path":1314},[342,1318,1319,1322,1323,543,1325,1328,1329,1332],{},[346,1320,1321],{},"PUT \u002Fv1\u002Fprojects\u002F:projectId"," takes any of ",[346,1324,669],{},[346,1326,1327],{},"analyticsExcludedIps"," (up to 50 addresses or CIDR ranges) and ",[346,1330,1331],{},"analyticsDigest",", at least one.",[616,1334],{"auth":1311,"method":812,"path":1314},[616,1336],{"auth":1304,"method":798,"path":1337},"\u002Fv1\u002Forgs\u002F:orgId\u002Fmembers",[616,1339],{"auth":1340,"method":618,"path":1337},"Organization owner",[616,1342],{"auth":1340,"method":702,"path":1343},"\u002Fv1\u002Forgs\u002F:orgId\u002Fmembers\u002F:userId",[616,1345],{"auth":1340,"method":812,"path":1343},[337,1347,1349],{"id":1348},"mcp","MCP",[342,1351,1352,1353,614],{},"The MCP server, for AI agents. See ",[388,1354,284],{"href":285},[616,1356],{"auth":1223,"method":618,"path":1357},"\u002Fmcp",[337,1359,326],{"id":1360},"status",[616,1362],{"auth":435,"method":798,"path":1363},"\u002Fv1\u002Fstatus",[342,1365,639,1366,1368,1369,644,1372,1375],{},[388,1367,326],{"href":327}," for what it answers. ",[346,1370,1371],{},"GET \u002Fhealth",[346,1373,1374],{},"GET \u002Fready"," are probes for the infrastructure that runs the API.",[337,1377,1379],{"id":1378},"not-allowed-while-impersonating","Not allowed while impersonating",[342,1381,1382,1383,1386],{},"When Zaproo support acts as an account owner, these routes answer ",[346,1384,1385],{},"403 IMPERSONATION_FORBIDDEN",": creating an API key, changing the password, ending a session, changing the plan, and adding, changing or removing a member.",[337,1388,1390],{"id":1389},"related","Related",[1392,1393,1394,1399,1403,1407,1411],"ul",{},[1395,1396,1397],"li",{},[388,1398,315],{"href":316},[1395,1400,1401],{},[388,1402,80],{"href":81},[1395,1404,1405],{},[388,1406,85],{"href":86},[1395,1408,1409],{},[388,1410,290],{"href":291},[1395,1412,1413],{},[388,1414,23],{"href":1415},"\u002Fdocs\u002Fgetting-started\u002Fquickstart#with-the-api",[1417,1418,1419],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}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);}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}",{"title":360,"searchDepth":1421,"depth":1421,"links":1422},2,[1423,1424,1425,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443],{"id":339,"depth":1421,"text":340},{"id":600,"depth":1421,"text":601},{"id":635,"depth":1421,"text":636,"children":1426},[1427],{"id":864,"depth":1428,"text":865},3,{"id":918,"depth":1421,"text":919},{"id":986,"depth":1421,"text":596},{"id":995,"depth":1421,"text":996},{"id":1028,"depth":1421,"text":224},{"id":1051,"depth":1421,"text":236},{"id":1077,"depth":1421,"text":230},{"id":1102,"depth":1421,"text":242},{"id":1128,"depth":1421,"text":253},{"id":1200,"depth":1421,"text":80},{"id":1227,"depth":1421,"text":55},{"id":1291,"depth":1421,"text":1292},{"id":1348,"depth":1421,"text":1349},{"id":1360,"depth":1421,"text":326},{"id":1378,"depth":1421,"text":1379},{"id":1389,"depth":1421,"text":1390},"md",{},{"icon":313},{"title":309,"description":312},"GUAEajtEYejl4GdREvroCO5KaSLmuaS9lgVYykUP5UU",[1450,1451],{"title":296,"path":297,"stem":298,"description":299,"icon":300,"children":-1},{"title":315,"path":316,"stem":317,"description":318,"icon":89,"children":-1},1793717706328]