[{"data":1,"prerenderedAt":2657},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fsearch\u002Fsearch-api":319,"docs-\u002Fdocs\u002Fsearch\u002Fsearch-api-surround":2654},[4],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Docs","\u002Fdocs","docs",[9,35,60,78,120,186,229,240,264,289],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":34},"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],{"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","From a new account to a first search request in six steps, with curl or from your AI agent.","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",false,{"title":36,"description":37,"icon":38,"path":39,"stem":40,"children":41,"page":34},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[42,48,54],{"title":43,"path":44,"stem":45,"description":46,"icon":47},"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":49,"path":50,"stem":51,"description":52,"icon":53},"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":55,"path":56,"stem":57,"description":58,"icon":59},"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":61,"description":62,"icon":63,"path":64,"stem":65,"children":66,"page":34},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[67,72],{"title":68,"path":69,"stem":70,"description":71,"icon":63},"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":73,"path":74,"stem":75,"description":76,"icon":77},"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":79,"description":80,"icon":81,"path":82,"stem":83,"children":84,"page":34},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[85,90,96,102,108,114],{"title":86,"path":87,"stem":88,"description":89,"icon":81},"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":91,"path":92,"stem":93,"description":94,"icon":95},"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":97,"path":98,"stem":99,"description":100,"icon":101},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload and delete documents in batches, follow each write as a task, retry safely with Idempotency-Key, and browse what the index holds.","i-lucide-file-json",{"title":103,"path":104,"stem":105,"description":106,"icon":107},"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":109,"path":110,"stem":111,"description":112,"icon":113},"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":115,"path":116,"stem":117,"description":118,"icon":119},"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":121,"description":122,"icon":123,"path":124,"stem":125,"children":126,"page":34},"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",[127,133,139,144,150,156,161,166,171,176,181],{"title":128,"path":129,"stem":130,"description":131,"icon":132},"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 an integration shows up in the cabinet.","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"description":137,"icon":138},"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":140,"path":141,"stem":142,"description":143,"icon":119},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. Zaproo downloads it on a schedule and writes only what changed.",{"title":145,"path":146,"stem":147,"description":148,"icon":149},"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":151,"path":152,"stem":153,"description":154,"icon":155},"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":157,"path":158,"stem":159,"description":160,"icon":155},"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":162,"path":163,"stem":164,"description":165,"icon":155},"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":167,"path":168,"stem":169,"description":170,"icon":155},"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":172,"path":173,"stem":174,"description":175,"icon":155},"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":177,"path":178,"stem":179,"description":180,"icon":155},"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":182,"path":183,"stem":184,"description":185,"icon":155},"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":187,"description":188,"icon":189,"path":190,"stem":191,"children":192,"page":34},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[193,199,205,211,217,223],{"title":194,"path":195,"stem":196,"description":197,"icon":198},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","The search request and response, every filter form, sorting, paging, highlighting and the inline profile for previews.","i-lucide-search-code",{"title":200,"path":201,"stem":202,"description":203,"icon":204},"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":206,"path":207,"stem":208,"description":209,"icon":210},"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":212,"path":213,"stem":214,"description":215,"icon":216},"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":218,"path":219,"stem":220,"description":221,"icon":222},"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":224,"path":225,"stem":226,"description":227,"icon":228},"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":230,"description":231,"icon":232,"path":233,"stem":234,"children":235,"page":34},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[236],{"title":230,"path":237,"stem":238,"description":239,"icon":232},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Query suggestions as the shopper types, built every hour from your own searches, field values and custom entries.",{"title":241,"description":242,"icon":243,"path":244,"stem":245,"children":246,"page":34},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[247,252,258],{"title":248,"path":249,"stem":250,"description":251,"icon":243},"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":253,"path":254,"stem":255,"description":256,"icon":257},"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":259,"path":260,"stem":261,"description":262,"icon":263},"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":265,"description":266,"icon":267,"path":268,"stem":269,"children":270,"page":34},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[271,277,283],{"title":272,"path":273,"stem":274,"description":275,"icon":276},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or any MCP client to Zaproo Search and manage indices, documents, profiles, synonyms and ranking rules from your agent.","i-lucide-plug",{"title":278,"path":279,"stem":280,"description":281,"icon":282},"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":284,"path":285,"stem":286,"description":287,"icon":288},"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":290,"description":291,"icon":292,"path":293,"stem":294,"children":295,"page":34},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[296,302,307,313],{"title":297,"path":298,"stem":299,"description":300,"icon":301},"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":303,"path":304,"stem":305,"description":306,"icon":77},"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":308,"path":309,"stem":310,"description":311,"icon":312},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","The plans, how usage is measured, what happens near a quota, and how plan changes and invoices work.","i-lucide-credit-card",{"title":314,"path":315,"stem":316,"description":317,"icon":318},"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":320,"title":194,"body":321,"description":197,"extension":2649,"meta":2650,"navigation":2651,"path":195,"seo":2652,"stem":196,"__hash__":2653},"docs\u002Fdocs\u002F5.search\u002F1.search-api.md",{"type":322,"value":323,"toc":2623},"minimark",[324,329,338,341,346,352,360,430,449,452,456,460,472,531,541,545,681,699,701,706,722,726,729,769,773,776,820,824,842,896,900,910,937,941,963,1006,1016,1020,1030,1049,1055,1208,1224,1234,1245,1248,1260,1299,1302,1311,1343,1346,1360,1381,1392,1395,1415,1425,1428,1445,1466,1472,1481,1484,1499,1502,1516,1544,1618,1625,1629,1648,1936,1987,1997,2009,2013,2305,2397,2411,2415,2422,2586,2590,2611,2619],[325,326,328],"h2",{"id":327},"two-ways-to-search","Two ways to search",[330,331,332,333,337],"p",{},"Every search runs through a ",[334,335,336],"a",{"href":201},"search profile",". The profile decides which fields a query looks in, the facets, the allowed sorts and what a hit returns. The request only says what the shopper did: the query, the filters, the sort and the page.",[330,339,340],{},"There are two routes. They take the same request fields and return the same response.",[342,343,345],"h3",{"id":344},"public-route","Public route",[347,348],"api-route",{"auth":349,"method":350,"path":351},"Public key from an allowed origin, or a secret key","POST","\u002Fv1\u002Fsearch\u002F:profileKey",[330,353,354,355,359],{},"This is the route for storefronts. The profile key in the path picks the index and the profile, so the URL holds no project or index id. The route counts against the search rate limit: by default 600 requests a minute per key and 1200 a minute per client IP, then ",[356,357,358],"code",{},"429 RATE_LIMITED",".",[361,362,367],"pre",{"className":363,"code":364,"language":365,"meta":366,"style":366},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fsearch\u002F$PROFILE_KEY \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"q\": \"oled tv\", \"filters\": {\"brand\": [\"Samsung\", \"LG\"]}, \"sort\": \"price:asc\", \"page\": 1}'\n","bash","",[356,368,369,397,421],{"__ignoreMap":366},[370,371,374,378,382,386,389,393],"span",{"class":372,"line":373},"line",1,[370,375,377],{"class":376},"szw1H","curl",[370,379,381],{"class":380},"ssYy9"," -X",[370,383,385],{"class":384},"semJd"," POST",[370,387,388],{"class":384}," https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fsearch\u002F",[370,390,392],{"class":391},"s7iLA","$PROFILE_KEY ",[370,394,396],{"class":395},"sklAV","\\\n",[370,398,400,403,406,409,412,415,418],{"class":372,"line":399},2,[370,401,402],{"class":380},"  -H",[370,404,405],{"class":384}," \"Authorization: Bearer ",[370,407,408],{"class":391},"$ZS_KEY",[370,410,411],{"class":384},"\"",[370,413,414],{"class":380}," -H",[370,416,417],{"class":384}," \"Content-Type: application\u002Fjson\"",[370,419,420],{"class":395}," \\\n",[370,422,424,427],{"class":372,"line":423},3,[370,425,426],{"class":380},"  -d",[370,428,429],{"class":384}," '{\"q\": \"oled tv\", \"filters\": {\"brand\": [\"Samsung\", \"LG\"]}, \"sort\": \"price:asc\", \"page\": 1}'\n",[330,431,432,433,436,437,440,441,444,445,448],{},"A public key (",[356,434,435],{},"zs_pk_…",") answers only requests whose ",[356,438,439],{},"Origin"," header is one of the key's allowed origins, and ",[356,442,443],{},"403"," otherwise. A key limited to some indices answers ",[356,446,447],{},"404 PROFILE_NOT_FOUND"," for a profile of any other index.",[330,450,451],{},"Browsers on any domain may call this route: the API answers the CORS preflight for every origin, without cookies, and the key's allowed origins decide on the real request.",[342,453,455],{"id":454},"project-route","Project route",[347,457],{"auth":458,"method":350,"path":459},"Project member or any secret key","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fsearch",[330,461,462,463,466,467,471],{},"This route is for your back office and for tools. It takes either a stored profile by ",[356,464,465],{},"profileKey"," in the body, or a whole profile inline (see ",[334,468,470],{"href":469},"#inline-profile","Inline profile","). Send exactly one of the two.",[361,473,475],{"className":363,"code":474,"language":365,"meta":366,"style":366},"curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fsearch \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"profileKey\": \"'$PROFILE_KEY'\", \"q\": \"oled tv\"}'\n",[356,476,477,502,518],{"__ignoreMap":366},[370,478,479,481,483,485,488,491,494,497,500],{"class":372,"line":373},[370,480,377],{"class":376},[370,482,381],{"class":380},[370,484,385],{"class":384},[370,486,487],{"class":384}," https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F",[370,489,490],{"class":391},"$PROJECT_ID",[370,492,493],{"class":384},"\u002Findices\u002F",[370,495,496],{"class":391},"$INDEX_ID",[370,498,499],{"class":384},"\u002Fsearch",[370,501,420],{"class":395},[370,503,504,506,508,510,512,514,516],{"class":372,"line":399},[370,505,402],{"class":380},[370,507,405],{"class":384},[370,509,408],{"class":391},[370,511,411],{"class":384},[370,513,414],{"class":380},[370,515,417],{"class":384},[370,517,420],{"class":395},[370,519,520,522,525,528],{"class":372,"line":423},[370,521,426],{"class":380},[370,523,524],{"class":384}," '{\"profileKey\": \"'",[370,526,527],{"class":391},"$PROFILE_KEY",[370,529,530],{"class":384},"'\", \"q\": \"oled tv\"}'\n",[330,532,533,534,537,538,359],{},"From an AI agent, the MCP tool ",[356,535,536],{},"search"," takes the same body plus the ",[356,539,540],{},"indexId",[325,542,544],{"id":543},"request","Request",[546,547,548,556,583,598,608,618,625,638,656,666],"field-group",{},[549,550,553],"field",{"name":551,"type":552},"q","string",[330,554,555],{},"The search text, up to 500 characters. Empty (the default) returns every product the filters allow, which is what a category page needs.",[549,557,560],{"name":558,"type":559},"filters","object",[330,561,562,563,566,567,570,571,574,575,579,580,359],{},"Field name to filter, plus optional ",[356,564,565],{},"$or",", ",[356,568,569],{},"$and"," and ",[356,572,573],{},"$not"," groups, see ",[334,576,578],{"href":577},"#filters","Filters",". Default ",[356,581,582],{},"{}",[549,584,587],{"name":585,"type":586},"fields","string[]",[330,588,589,590,593,594,359],{},"1 to 100 field names. Each hit returns only these fields and ",[356,591,592],{},"id",". See ",[334,595,597],{"href":596},"#returned-fields","Returned fields",[549,599,601],{"name":600,"type":586},"excludeIds",[330,602,603,604,359],{},"1 to 1000 document ids to leave out of the results. See ",[334,605,607],{"href":606},"#excluding-products","Excluding products",[549,609,611],{"name":610,"type":552},"sort",[330,612,613,614,359],{},"One of the profile's sort options, written exactly as in the profile. Leave it out for the profile's default sort. See ",[334,615,617],{"href":616},"#sorting","Sorting",[549,619,622],{"name":620,"type":621},"page","integer",[330,623,624],{},"The page to return, from 1. Default 1.",[549,626,628],{"name":627,"type":621},"perPage",[330,629,630,631,593,634,359],{},"Hits per page. Default: the profile's ",[356,632,633],{},"perPage.default",[334,635,637],{"href":636},"#paging","Paging",[549,639,642],{"name":640,"type":641},"highlight","boolean",[330,643,644,645,648,649,593,652,359],{},"Adds ",[356,646,647],{},"_highlight"," to every hit. Default ",[356,650,651],{},"false",[334,653,655],{"href":654},"#highlighting","Highlighting",[549,657,659],{"name":658,"type":552},"sessionId",[330,660,661,662,359],{},"An id for the visitor's session, so their pages come from the same copies of the index. See ",[334,663,665],{"href":664},"#session-id","Session id",[549,667,669],{"name":668,"type":641},"analytics",[330,670,671,673,674,593,677,359],{},[356,672,651],{}," serves the search as usual but keeps it out of the analytics reports, for uptime checks, load tests and demo pages. Default ",[356,675,676],{},"true",[334,678,680],{"href":679},"\u002Fdocs\u002Fanalytics\u002Fsearch-analytics#opting-a-search-out","Opting a search out",[330,682,683,684,566,686,566,689,570,692,695,696,698],{},"The project route also takes ",[356,685,465],{},[356,687,688],{},"profile",[356,690,691],{},"rulesFor",[356,693,694],{},"explain",". The public route takes ",[356,697,688],{}," from a secret key only.",[325,700,578],{"id":558},[330,702,703,705],{},[356,704,558],{}," maps a field name to one filter. A product must match the filters of every field (AND). Inside one field, a list matches any of its values (OR).",[330,707,708,709,713,714,717,718,721],{},"A request may filter only on the profile's facet fields and its ",[334,710,712],{"href":711},"\u002Fdocs\u002Fsearch\u002Fprofiles#extra-filterable-fields","extra filterable fields",". Any other field answers ",[356,715,716],{},"400 FILTER_NOT_ALLOWED",". A filter that does not fit the field answers ",[356,719,720],{},"400 INVALID_FILTER",", for example a range on a text field.",[342,723,725],{"id":724},"one-value","One value",[330,727,728],{},"A string, a number or a boolean. Strings are matched exactly, capital letters included.",[361,730,734],{"className":731,"code":732,"language":733,"meta":366,"style":366},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{ \"filters\": { \"brand\": \"Samsung\", \"inStock\": true } }\n","json",[356,735,736],{"__ignoreMap":366},[370,737,738,741,745,748,751,754,757,759,762,764,766],{"class":372,"line":373},[370,739,740],{"class":391},"{ ",[370,742,744],{"class":743},"sb7M8","\"filters\"",[370,746,747],{"class":391},": { ",[370,749,750],{"class":743},"\"brand\"",[370,752,753],{"class":391},": ",[370,755,756],{"class":384},"\"Samsung\"",[370,758,566],{"class":391},[370,760,761],{"class":743},"\"inStock\"",[370,763,753],{"class":391},[370,765,676],{"class":380},[370,767,768],{"class":391}," } }\n",[342,770,772],{"id":771},"any-of-several-values","Any of several values",[330,774,775],{},"A list of 1 to 1000 strings or numbers.",[361,777,779],{"className":731,"code":778,"language":733,"meta":366,"style":366},"{ \"filters\": { \"brand\": [\"Samsung\", \"LG\"], \"size\": [55, 65] } }\n",[356,780,781],{"__ignoreMap":366},[370,782,783,785,787,789,791,794,796,798,801,804,807,809,812,814,817],{"class":372,"line":373},[370,784,740],{"class":391},[370,786,744],{"class":743},[370,788,747],{"class":391},[370,790,750],{"class":743},[370,792,793],{"class":391},": [",[370,795,756],{"class":384},[370,797,566],{"class":391},[370,799,800],{"class":384},"\"LG\"",[370,802,803],{"class":391},"], ",[370,805,806],{"class":743},"\"size\"",[370,808,793],{"class":391},[370,810,811],{"class":380},"55",[370,813,566],{"class":391},[370,815,816],{"class":380},"65",[370,818,819],{"class":391},"] } }\n",[342,821,823],{"id":822},"range","Range",[330,825,826,829,830,833,834,837,838,841],{},[356,827,828],{},"gte"," (at least), ",[356,831,832],{},"gt"," (more than), ",[356,835,836],{},"lte"," (at most) and ",[356,839,840],{},"lt"," (less than), at least one of them. Ranges work on number and date fields. Dates are ISO strings.",[361,843,845],{"className":731,"code":844,"language":733,"meta":366,"style":366},"{ \"filters\": { \"price\": { \"gte\": 300, \"lt\": 1000 }, \"releasedAt\": { \"gte\": \"2026-01-01\" } } }\n",[356,846,847],{"__ignoreMap":366},[370,848,849,851,853,855,858,860,863,865,868,870,873,875,878,881,884,886,888,890,893],{"class":372,"line":373},[370,850,740],{"class":391},[370,852,744],{"class":743},[370,854,747],{"class":391},[370,856,857],{"class":743},"\"price\"",[370,859,747],{"class":391},[370,861,862],{"class":743},"\"gte\"",[370,864,753],{"class":391},[370,866,867],{"class":380},"300",[370,869,566],{"class":391},[370,871,872],{"class":743},"\"lt\"",[370,874,753],{"class":391},[370,876,877],{"class":380},"1000",[370,879,880],{"class":391}," }, ",[370,882,883],{"class":743},"\"releasedAt\"",[370,885,747],{"class":391},[370,887,862],{"class":743},[370,889,753],{"class":391},[370,891,892],{"class":384},"\"2026-01-01\"",[370,894,895],{"class":391}," } } }\n",[342,897,899],{"id":898},"field-is-set-or-empty","Field is set or empty",[330,901,902,905,906,909],{},[356,903,904],{},"{\"exists\": true}"," keeps products that have a value in the field. ",[356,907,908],{},"{\"exists\": false}"," keeps those that have none.",[361,911,913],{"className":731,"code":912,"language":733,"meta":366,"style":366},"{ \"filters\": { \"salePrice\": { \"exists\": true } } }\n",[356,914,915],{"__ignoreMap":366},[370,916,917,919,921,923,926,928,931,933,935],{"class":372,"line":373},[370,918,740],{"class":391},[370,920,744],{"class":743},[370,922,747],{"class":391},[370,924,925],{"class":743},"\"salePrice\"",[370,927,747],{"class":391},[370,929,930],{"class":743},"\"exists\"",[370,932,753],{"class":391},[370,934,676],{"class":380},[370,936,895],{"class":391},[342,938,940],{"id":939},"category-nodes","Category nodes",[330,942,943,944,947,948,951,952,954,955,958,959,962],{},"On a hierarchy field, a node is written as its path with ",[356,945,946],{},">"," between the levels and no spaces: ",[356,949,950],{},"TV>OLED",". Spaces around ",[356,953,946],{}," are allowed and dropped. ",[356,956,957],{},"terms"," takes 1 to 100 nodes, and a product in any of them, or below them, matches. The optional ",[356,960,961],{},"level"," (the top level is 0) makes the API check that every node sits at that depth.",[361,964,966],{"className":731,"code":965,"language":733,"meta":366,"style":366},"{ \"filters\": { \"category\": { \"terms\": [\"TV>OLED\", \"TV>QLED\"], \"level\": 1 } } }\n",[356,967,968],{"__ignoreMap":366},[370,969,970,972,974,976,979,981,984,986,989,991,994,996,999,1001,1004],{"class":372,"line":373},[370,971,740],{"class":391},[370,973,744],{"class":743},[370,975,747],{"class":391},[370,977,978],{"class":743},"\"category\"",[370,980,747],{"class":391},[370,982,983],{"class":743},"\"terms\"",[370,985,793],{"class":391},[370,987,988],{"class":384},"\"TV>OLED\"",[370,990,566],{"class":391},[370,992,993],{"class":384},"\"TV>QLED\"",[370,995,803],{"class":391},[370,997,998],{"class":743},"\"level\"",[370,1000,753],{"class":391},[370,1002,1003],{"class":380},"1",[370,1005,895],{"class":391},[330,1007,1008,1009,1012,1013,1015],{},"A hierarchy field also takes the plain value and list forms: ",[356,1010,1011],{},"{\"category\": \"TV>OLED\"}",". The ",[356,1014,957],{}," form works on hierarchy fields only.",[342,1017,1019],{"id":1018},"filter-groups","Filter groups",[330,1021,1022,1023,1025,1026,1029],{},"Next to the field names, ",[356,1024,558],{}," takes three group keys. Field names cannot contain ",[356,1027,1028],{},"$",", so a group key never clashes with a field.",[1031,1032,1033,1039,1044],"ul",{},[1034,1035,1036,1038],"li",{},[356,1037,565],{},": a list of 2 to 20 filters. A product must match at least one of them.",[1034,1040,1041,1043],{},[356,1042,569],{},": a list of 1 to 20 filters. A product must match all of them.",[1034,1045,1046,1048],{},[356,1047,573],{},": one filter. A product that matches it is left out.",[330,1050,1051,1052,1054],{},"Each filter in a group is written like ",[356,1053,558],{}," itself: field names ANDed, and groups of its own. This request finds posters that are at least 200 by 200, or at most 400 wide and at least 400 high, and leaves out the Acme posters that are on discount:",[361,1056,1058],{"className":731,"code":1057,"language":733,"meta":366,"style":366},"{\n  \"filters\": {\n    \"category\": \"Posters\",\n    \"$or\": [\n      { \"width\": { \"gte\": 200 }, \"height\": { \"gte\": 200 } },\n      { \"width\": { \"lte\": 400 }, \"height\": { \"gte\": 400 } }\n    ],\n    \"$not\": { \"brand\": [\"Acme\"], \"discount\": { \"exists\": true } }\n  }\n}\n",[356,1059,1060,1065,1073,1086,1095,1129,1160,1166,1196,1202],{"__ignoreMap":366},[370,1061,1062],{"class":372,"line":373},[370,1063,1064],{"class":391},"{\n",[370,1066,1067,1070],{"class":372,"line":399},[370,1068,1069],{"class":743},"  \"filters\"",[370,1071,1072],{"class":391},": {\n",[370,1074,1075,1078,1080,1083],{"class":372,"line":423},[370,1076,1077],{"class":743},"    \"category\"",[370,1079,753],{"class":391},[370,1081,1082],{"class":384},"\"Posters\"",[370,1084,1085],{"class":391},",\n",[370,1087,1089,1092],{"class":372,"line":1088},4,[370,1090,1091],{"class":743},"    \"$or\"",[370,1093,1094],{"class":391},": [\n",[370,1096,1098,1101,1104,1106,1108,1110,1113,1115,1118,1120,1122,1124,1126],{"class":372,"line":1097},5,[370,1099,1100],{"class":391},"      { ",[370,1102,1103],{"class":743},"\"width\"",[370,1105,747],{"class":391},[370,1107,862],{"class":743},[370,1109,753],{"class":391},[370,1111,1112],{"class":380},"200",[370,1114,880],{"class":391},[370,1116,1117],{"class":743},"\"height\"",[370,1119,747],{"class":391},[370,1121,862],{"class":743},[370,1123,753],{"class":391},[370,1125,1112],{"class":380},[370,1127,1128],{"class":391}," } },\n",[370,1130,1132,1134,1136,1138,1141,1143,1146,1148,1150,1152,1154,1156,1158],{"class":372,"line":1131},6,[370,1133,1100],{"class":391},[370,1135,1103],{"class":743},[370,1137,747],{"class":391},[370,1139,1140],{"class":743},"\"lte\"",[370,1142,753],{"class":391},[370,1144,1145],{"class":380},"400",[370,1147,880],{"class":391},[370,1149,1117],{"class":743},[370,1151,747],{"class":391},[370,1153,862],{"class":743},[370,1155,753],{"class":391},[370,1157,1145],{"class":380},[370,1159,768],{"class":391},[370,1161,1163],{"class":372,"line":1162},7,[370,1164,1165],{"class":391},"    ],\n",[370,1167,1169,1172,1174,1176,1178,1181,1183,1186,1188,1190,1192,1194],{"class":372,"line":1168},8,[370,1170,1171],{"class":743},"    \"$not\"",[370,1173,747],{"class":391},[370,1175,750],{"class":743},[370,1177,793],{"class":391},[370,1179,1180],{"class":384},"\"Acme\"",[370,1182,803],{"class":391},[370,1184,1185],{"class":743},"\"discount\"",[370,1187,747],{"class":391},[370,1189,930],{"class":743},[370,1191,753],{"class":391},[370,1193,676],{"class":380},[370,1195,768],{"class":391},[370,1197,1199],{"class":372,"line":1198},9,[370,1200,1201],{"class":391},"  }\n",[370,1203,1205],{"class":372,"line":1204},10,[370,1206,1207],{"class":391},"}\n",[330,1209,1210,1211,1213,1214,1216,1217,1220,1221,359],{},"A field inside a group follows the same rules as a top-level one: the profile must allow it (",[356,1212,716],{},") and the filter must fit its type (",[356,1215,720],{},"). The error's ",[356,1218,1219],{},"path"," names the place, for example ",[356,1222,1223],{},"$or[1].width",[330,1225,1226,1227,1230,1231,359],{},"Groups nest up to 4 levels deep, and a request holds at most 100 field filters in all, groups included. A group member cannot be empty. Past these limits, or with an unknown key such as ",[356,1228,1229],{},"$any",", the API answers ",[356,1232,1233],{},"400 VALIDATION_FAILED",[330,1235,1236,1240,1241,1244],{},[1237,1238,1239],"strong",{},"Groups and facets."," Top-level field filters work as facet selections: a facet's counts leave out the filter on its own field, so the shopper still sees the other values. A group narrows the whole result instead, and every facet counts only the products the group lets through. A facet value shows ",[356,1242,1243],{},"selected: true"," only for a top-level filter on its field, never for a field inside a group.",[325,1246,597],{"id":1247},"returned-fields",[330,1249,1250,1252,1253,1255,1256,1259],{},[356,1251,585],{}," trims every hit to the fields listed, plus ",[356,1254,592],{},". Each field must be one the profile returns, or the API answers ",[356,1257,1258],{},"400 FIELD_NOT_RETURNED",". Use it when a page or an agent needs a few fields of each hit, such as a quick list of titles and prices.",[361,1261,1263],{"className":731,"code":1262,"language":733,"meta":366,"style":366},"{ \"q\": \"oled tv\", \"fields\": [\"title\", \"price\", \"imageUrl\"] }\n",[356,1264,1265],{"__ignoreMap":366},[370,1266,1267,1269,1272,1274,1277,1279,1282,1284,1287,1289,1291,1293,1296],{"class":372,"line":373},[370,1268,740],{"class":391},[370,1270,1271],{"class":743},"\"q\"",[370,1273,753],{"class":391},[370,1275,1276],{"class":384},"\"oled tv\"",[370,1278,566],{"class":391},[370,1280,1281],{"class":743},"\"fields\"",[370,1283,793],{"class":391},[370,1285,1286],{"class":384},"\"title\"",[370,1288,566],{"class":391},[370,1290,857],{"class":384},[370,1292,566],{"class":391},[370,1294,1295],{"class":384},"\"imageUrl\"",[370,1297,1298],{"class":391},"] }\n",[325,1300,607],{"id":1301},"excluding-products",[330,1303,1304,1306,1307,1310],{},[356,1305,600],{}," leaves the listed documents out of the results, for example the products already in the cart or the one on the current product page. An id that a ",[334,1308,1309],{"href":219},"ranking rule"," pins is left out too. Unknown ids are ignored.",[361,1312,1314],{"className":731,"code":1313,"language":733,"meta":366,"style":366},"{ \"q\": \"oled tv\", \"excludeIds\": [\"tv-1\", \"tv-7\"] }\n",[356,1315,1316],{"__ignoreMap":366},[370,1317,1318,1320,1322,1324,1326,1328,1331,1333,1336,1338,1341],{"class":372,"line":373},[370,1319,740],{"class":391},[370,1321,1271],{"class":743},[370,1323,753],{"class":391},[370,1325,1276],{"class":384},[370,1327,566],{"class":391},[370,1329,1330],{"class":743},"\"excludeIds\"",[370,1332,793],{"class":391},[370,1334,1335],{"class":384},"\"tv-1\"",[370,1337,566],{"class":391},[370,1339,1340],{"class":384},"\"tv-7\"",[370,1342,1298],{"class":391},[325,1344,617],{"id":1345},"sorting",[330,1347,1348,1350,1351,1355,1356,1359],{},[356,1349,610],{}," must be one of the profile's ",[334,1352,1354],{"href":1353},"\u002Fdocs\u002Fsearch\u002Fprofiles#sort-options","sort options",", character for character, or the API answers ",[356,1357,1358],{},"400 SORT_NOT_ALLOWED",". An option is up to 10 clauses joined by commas:",[1031,1361,1362,1368],{},[1034,1363,1364,1367],{},[356,1365,1366],{},"_relevance",": best match first.",[1034,1369,1370,1373,1374,1377,1378,359],{},[356,1371,1372],{},"field:asc"," or ",[356,1375,1376],{},"field:desc"," on a sortable field, for example ",[356,1379,1380],{},"price:asc",[330,1382,1383,1386,1387,1391],{},[356,1384,1385],{},"inStock:desc,price:asc"," sorts in-stock products first and then by price. Products that tie on every field clause come out best match first. The profile's ",[334,1388,1390],{"href":1389},"\u002Fdocs\u002Fsearch\u002Fprofiles#always-show-first","always-show-first clauses"," lead every sort.",[325,1393,637],{"id":1394},"paging",[330,1396,1397,1399,1400,1402,1403,1406,1407,1410,1411,1414],{},[356,1398,620],{}," starts at 1. ",[356,1401,627],{}," can be at most the profile's ",[356,1404,1405],{},"perPage.max",", else ",[356,1408,1409],{},"400 PER_PAGE_TOO_LARGE",". A page must start within the first 10,000 results, else ",[356,1412,1413],{},"400 PAGE_OUT_OF_RANGE","; the last page stops at the 10,000th. The API never pages past the first 10,000 results.",[330,1416,1417,1420,1421,1424],{},[356,1418,1419],{},"total"," counts matching products up to 10,000. A search with more matches answers ",[356,1422,1423],{},"10000",". Show \"10,000+\" in the storefront rather than a page count past that.",[325,1426,655],{"id":1427},"highlighting",[330,1429,1430,1431,1434,1435,1437,1438,1440,1441,1444],{},"With ",[356,1432,1433],{},"\"highlight\": true"," and a non-empty ",[356,1436,551],{},", every hit gets ",[356,1439,647],{},". It holds, for each query field where the query matched, a list of text fragments with the matching words wrapped in ",[356,1442,1443],{},"\u003Cem>"," tags.",[361,1446,1448],{"className":731,"code":1447,"language":733,"meta":366,"style":366},"\"_highlight\": { \"title\": [\"55 inch \u003Cem>OLED\u003C\u002Fem> \u003Cem>TV\u003C\u002Fem>\"] }\n",[356,1449,1450],{"__ignoreMap":366},[370,1451,1452,1455,1457,1459,1461,1464],{"class":372,"line":373},[370,1453,1454],{"class":384},"\"_highlight\"",[370,1456,747],{"class":391},[370,1458,1286],{"class":743},[370,1460,793],{"class":391},[370,1462,1463],{"class":384},"\"55 inch \u003Cem>OLED\u003C\u002Fem> \u003Cem>TV\u003C\u002Fem>\"",[370,1465,1298],{"class":391},[330,1467,1468,1469,359],{},"The key is the field the query ran on. For a text field that is its name. For a keyword field it is the field's text subfield, such as ",[356,1470,1471],{},"brand.text",[1473,1474,1475],"caution",{},[330,1476,1477,1478,1480],{},"The fragments come from your own product data. Escape everything in them except the ",[356,1479,1443],{}," tags before you insert them into a page as HTML.",[325,1482,665],{"id":1483},"session-id",[330,1485,1486,1488,1489,1373,1492,1495,1496,1498],{},[356,1487,658],{}," is 1 to 100 letters, digits, ",[356,1490,1491],{},"-",[356,1493,1494],{},"_",", and cannot start with ",[356,1497,1494],{},". Searches with the same session id are served by the same copies of the index, so scores, and with them the order of the results, stay the same from one page to the next. Use your storefront's session or visitor id. The search log stores it with each search.",[325,1500,470],{"id":1501},"inline-profile",[330,1503,1504,1505,1507,1508,1511,1512,1515],{},"The cabinet's live preview runs a profile that is not saved yet. You can do the same by sending the whole profile as ",[356,1506,688],{}," in the body. It must be a complete profile, as ",[356,1509,1510],{},"POST ...\u002Fprofiles"," takes it, and it is checked against the mapping first (",[356,1513,1514],{},"400 PROFILE_INVALID",").",[1031,1517,1518,1528],{},[1034,1519,1520,1521,1523,1524,1527],{},"On the public route, only a secret key may send ",[356,1522,688],{},". A public key gets ",[356,1525,1526],{},"403 INLINE_PROFILE_FORBIDDEN",". The inline profile replaces the stored one for that request.",[1034,1529,1530,1531,1533,1534,1536,1537,1539,1540,1543],{},"On the project route, send ",[356,1532,688],{}," instead of ",[356,1535,465],{},". Add ",[356,1538,691],{}," with a stored profile's id to apply the ",[334,1541,1542],{"href":219},"ranking rules"," of that profile. Without it, only rules for every profile apply.",[361,1545,1547],{"className":363,"code":1546,"language":365,"meta":366,"style":366},"curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Fsearch \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"profile\": {\"name\": \"Draft\", \"queryFields\": {\"title\": 3, \"brand\": 2}, \"match\": \"any\"},\n    \"rulesFor\": \"'$PROFILE_ID'\",\n    \"q\": \"samsung oled\"\n  }'\n",[356,1548,1549,1569,1585,1592,1597,1608,1613],{"__ignoreMap":366},[370,1550,1551,1553,1555,1557,1559,1561,1563,1565,1567],{"class":372,"line":373},[370,1552,377],{"class":376},[370,1554,381],{"class":380},[370,1556,385],{"class":384},[370,1558,487],{"class":384},[370,1560,490],{"class":391},[370,1562,493],{"class":384},[370,1564,496],{"class":391},[370,1566,499],{"class":384},[370,1568,420],{"class":395},[370,1570,1571,1573,1575,1577,1579,1581,1583],{"class":372,"line":399},[370,1572,402],{"class":380},[370,1574,405],{"class":384},[370,1576,408],{"class":391},[370,1578,411],{"class":384},[370,1580,414],{"class":380},[370,1582,417],{"class":384},[370,1584,420],{"class":395},[370,1586,1587,1589],{"class":372,"line":423},[370,1588,426],{"class":380},[370,1590,1591],{"class":384}," '{\n",[370,1593,1594],{"class":372,"line":1088},[370,1595,1596],{"class":384},"    \"profile\": {\"name\": \"Draft\", \"queryFields\": {\"title\": 3, \"brand\": 2}, \"match\": \"any\"},\n",[370,1598,1599,1602,1605],{"class":372,"line":1097},[370,1600,1601],{"class":384},"    \"rulesFor\": \"'",[370,1603,1604],{"class":391},"$PROFILE_ID",[370,1606,1607],{"class":384},"'\",\n",[370,1609,1610],{"class":372,"line":1131},[370,1611,1612],{"class":384},"    \"q\": \"samsung oled\"\n",[370,1614,1615],{"class":372,"line":1162},[370,1616,1617],{"class":384},"  }'\n",[330,1619,1620,1621,1624],{},"Searches with an inline profile are not counted in Analytics. The MCP tool ",[356,1622,1623],{},"preview_profile"," runs a draft profile the same way.",[325,1626,1628],{"id":1627},"explaining-scores","Explaining scores",[330,1630,1631,1632,1635,1636,1639,1640,1643,1644,1647],{},"On the project route and in ",[356,1633,1634],{},"POST ...\u002Frules\u002Ftest",", send ",[356,1637,1638],{},"\"explain\": true"," to see why each hit ranks where it does. Every hit then gets ",[356,1641,1642],{},"_explain",", and the response gets ",[356,1645,1646],{},"sortedBy",". The public route never explains. An explained search costs a little more, so leave it off in production.",[361,1649,1651],{"className":731,"code":1650,"language":733,"meta":366,"style":366},"\"_explain\": {\n  \"score\": 43.2,\n  \"matches\": [\n    { \"kind\": \"query\", \"text\": \"oled tv\", \"boost\": 1, \"fields\": [\n      { \"field\": \"title\", \"weight\": 5, \"score\": 9.6 },\n      { \"field\": \"shortDescription\", \"weight\": 2, \"score\": 3.1 }\n    ] },\n    { \"kind\": \"phrase\", \"text\": \"oled tv\", \"boost\": 2, \"fields\": [{ \"field\": \"title\", \"weight\": 5, \"score\": 4.8 }] }\n  ],\n  \"relevance\": 14.4,\n  \"boosts\": [{ \"rule\": { \"id\": \"…\", \"name\": \"Sony week\" }, \"factor\": 3 }],\n  \"multiplier\": 3,\n  \"pin\": null\n}\n",[356,1652,1653,1660,1672,1679,1716,1750,1782,1787,1847,1852,1864,1908,1920,1931],{"__ignoreMap":366},[370,1654,1655,1658],{"class":372,"line":373},[370,1656,1657],{"class":384},"\"_explain\"",[370,1659,1072],{"class":391},[370,1661,1662,1665,1667,1670],{"class":372,"line":399},[370,1663,1664],{"class":743},"  \"score\"",[370,1666,753],{"class":391},[370,1668,1669],{"class":380},"43.2",[370,1671,1085],{"class":391},[370,1673,1674,1677],{"class":372,"line":423},[370,1675,1676],{"class":743},"  \"matches\"",[370,1678,1094],{"class":391},[370,1680,1681,1684,1687,1689,1692,1694,1697,1699,1701,1703,1706,1708,1710,1712,1714],{"class":372,"line":1088},[370,1682,1683],{"class":391},"    { ",[370,1685,1686],{"class":743},"\"kind\"",[370,1688,753],{"class":391},[370,1690,1691],{"class":384},"\"query\"",[370,1693,566],{"class":391},[370,1695,1696],{"class":743},"\"text\"",[370,1698,753],{"class":391},[370,1700,1276],{"class":384},[370,1702,566],{"class":391},[370,1704,1705],{"class":743},"\"boost\"",[370,1707,753],{"class":391},[370,1709,1003],{"class":380},[370,1711,566],{"class":391},[370,1713,1281],{"class":743},[370,1715,1094],{"class":391},[370,1717,1718,1720,1723,1725,1727,1729,1732,1734,1737,1739,1742,1744,1747],{"class":372,"line":1097},[370,1719,1100],{"class":391},[370,1721,1722],{"class":743},"\"field\"",[370,1724,753],{"class":391},[370,1726,1286],{"class":384},[370,1728,566],{"class":391},[370,1730,1731],{"class":743},"\"weight\"",[370,1733,753],{"class":391},[370,1735,1736],{"class":380},"5",[370,1738,566],{"class":391},[370,1740,1741],{"class":743},"\"score\"",[370,1743,753],{"class":391},[370,1745,1746],{"class":380},"9.6",[370,1748,1749],{"class":391}," },\n",[370,1751,1752,1754,1756,1758,1761,1763,1765,1767,1770,1772,1774,1776,1779],{"class":372,"line":1131},[370,1753,1100],{"class":391},[370,1755,1722],{"class":743},[370,1757,753],{"class":391},[370,1759,1760],{"class":384},"\"shortDescription\"",[370,1762,566],{"class":391},[370,1764,1731],{"class":743},[370,1766,753],{"class":391},[370,1768,1769],{"class":380},"2",[370,1771,566],{"class":391},[370,1773,1741],{"class":743},[370,1775,753],{"class":391},[370,1777,1778],{"class":380},"3.1",[370,1780,1781],{"class":391}," }\n",[370,1783,1784],{"class":372,"line":1162},[370,1785,1786],{"class":391},"    ] },\n",[370,1788,1789,1791,1793,1795,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1844],{"class":372,"line":1168},[370,1790,1683],{"class":391},[370,1792,1686],{"class":743},[370,1794,753],{"class":391},[370,1796,1797],{"class":384},"\"phrase\"",[370,1799,566],{"class":391},[370,1801,1696],{"class":743},[370,1803,753],{"class":391},[370,1805,1276],{"class":384},[370,1807,566],{"class":391},[370,1809,1705],{"class":743},[370,1811,753],{"class":391},[370,1813,1769],{"class":380},[370,1815,566],{"class":391},[370,1817,1281],{"class":743},[370,1819,1820],{"class":391},": [{ ",[370,1822,1722],{"class":743},[370,1824,753],{"class":391},[370,1826,1286],{"class":384},[370,1828,566],{"class":391},[370,1830,1731],{"class":743},[370,1832,753],{"class":391},[370,1834,1736],{"class":380},[370,1836,566],{"class":391},[370,1838,1741],{"class":743},[370,1840,753],{"class":391},[370,1842,1843],{"class":380},"4.8",[370,1845,1846],{"class":391}," }] }\n",[370,1848,1849],{"class":372,"line":1198},[370,1850,1851],{"class":391},"  ],\n",[370,1853,1854,1857,1859,1862],{"class":372,"line":1204},[370,1855,1856],{"class":743},"  \"relevance\"",[370,1858,753],{"class":391},[370,1860,1861],{"class":380},"14.4",[370,1863,1085],{"class":391},[370,1865,1867,1870,1872,1875,1877,1880,1882,1885,1887,1890,1892,1895,1897,1900,1902,1905],{"class":372,"line":1866},11,[370,1868,1869],{"class":743},"  \"boosts\"",[370,1871,1820],{"class":391},[370,1873,1874],{"class":743},"\"rule\"",[370,1876,747],{"class":391},[370,1878,1879],{"class":743},"\"id\"",[370,1881,753],{"class":391},[370,1883,1884],{"class":384},"\"…\"",[370,1886,566],{"class":391},[370,1888,1889],{"class":743},"\"name\"",[370,1891,753],{"class":391},[370,1893,1894],{"class":384},"\"Sony week\"",[370,1896,880],{"class":391},[370,1898,1899],{"class":743},"\"factor\"",[370,1901,753],{"class":391},[370,1903,1904],{"class":380},"3",[370,1906,1907],{"class":391}," }],\n",[370,1909,1911,1914,1916,1918],{"class":372,"line":1910},12,[370,1912,1913],{"class":743},"  \"multiplier\"",[370,1915,753],{"class":391},[370,1917,1904],{"class":380},[370,1919,1085],{"class":391},[370,1921,1923,1926,1928],{"class":372,"line":1922},13,[370,1924,1925],{"class":743},"  \"pin\"",[370,1927,753],{"class":391},[370,1929,1930],{"class":380},"null\n",[370,1932,1934],{"class":372,"line":1933},14,[370,1935,1207],{"class":391},[1031,1937,1938,1961,1967,1977],{},[1034,1939,1940,1943,1944,566,1947,1950,1951,1953,1954,1373,1957,1960],{},[356,1941,1942],{},"matches"," lists each part of the query that matched. The kind is ",[356,1945,1946],{},"query",[356,1948,1949],{},"synonym"," (a synonym of the query), ",[356,1952,356],{}," (the query against normalized product codes), ",[356,1955,1956],{},"phrase",[356,1958,1959],{},"wordPairs",". A part searches every query field, but only its best field counts. That field comes first.",[1034,1962,1963,1966],{},[356,1964,1965],{},"relevance"," is the sum of each match's best field score.",[1034,1968,1969,1972,1973,1976],{},[356,1970,1971],{},"boosts"," are the rule boosts whose filter the hit matches. ",[356,1974,1975],{},"multiplier"," is their factors multiplied, at most 100.",[1034,1978,1979,1982,1983,1986],{},[356,1980,1981],{},"pin"," is set when a rule pinned the hit. It holds the rule, the position (1 is the top) and the ",[356,1984,1985],{},"lift"," added to the score.",[330,1988,1989,1990,1993,1994,1996],{},"The score is ",[356,1991,1992],{},"relevance × multiplier + lift",". With an empty ",[356,1995,551],{},", every hit has a relevance of 1.",[330,1998,1999,2001,2002,2005,2006,2008],{},[356,2000,1646],{}," lists the sort keys in the order they apply, such as ",[356,2003,2004],{},"[\"inStock:desc\", \"_relevance\"]",". The score decides only where the keys before ",[356,2007,1366],{}," tie.",[325,2010,2012],{"id":2011},"response","Response",[361,2014,2016],{"className":731,"code":2015,"language":733,"meta":366,"style":366},"{\n  \"items\": [\n    { \"id\": \"tv-1\", \"title\": \"55 inch OLED TV\", \"brand\": \"Samsung\", \"price\": 899, \"_pinned\": true },\n    { \"id\": \"tv-7\", \"title\": \"65 inch OLED TV\", \"brand\": \"LG\", \"price\": 1299 }\n  ],\n  \"total\": 2,\n  \"page\": 1,\n  \"perPage\": 24,\n  \"facets\": [\n    { \"type\": \"terms\", \"field\": \"brand\", \"label\": \"Brand\", \"items\": [\n      { \"key\": \"Samsung\", \"count\": 1, \"selected\": true },\n      { \"key\": \"LG\", \"count\": 1, \"selected\": false }\n    ] }\n  ],\n  \"correctedQuery\": null,\n  \"tookMs\": 12,\n  \"searchId\": \"8f2Kq9xWv1pLmN3cT6yZ0a\"\n}\n",[356,2017,2018,2022,2029,2076,2114,2118,2129,2140,2152,2159,2195,2226,2254,2259,2263,2276,2289,2300],{"__ignoreMap":366},[370,2019,2020],{"class":372,"line":373},[370,2021,1064],{"class":391},[370,2023,2024,2027],{"class":372,"line":399},[370,2025,2026],{"class":743},"  \"items\"",[370,2028,1094],{"class":391},[370,2030,2031,2033,2035,2037,2039,2041,2043,2045,2048,2050,2052,2054,2056,2058,2060,2062,2065,2067,2070,2072,2074],{"class":372,"line":423},[370,2032,1683],{"class":391},[370,2034,1879],{"class":743},[370,2036,753],{"class":391},[370,2038,1335],{"class":384},[370,2040,566],{"class":391},[370,2042,1286],{"class":743},[370,2044,753],{"class":391},[370,2046,2047],{"class":384},"\"55 inch OLED TV\"",[370,2049,566],{"class":391},[370,2051,750],{"class":743},[370,2053,753],{"class":391},[370,2055,756],{"class":384},[370,2057,566],{"class":391},[370,2059,857],{"class":743},[370,2061,753],{"class":391},[370,2063,2064],{"class":380},"899",[370,2066,566],{"class":391},[370,2068,2069],{"class":743},"\"_pinned\"",[370,2071,753],{"class":391},[370,2073,676],{"class":380},[370,2075,1749],{"class":391},[370,2077,2078,2080,2082,2084,2086,2088,2090,2092,2095,2097,2099,2101,2103,2105,2107,2109,2112],{"class":372,"line":1088},[370,2079,1683],{"class":391},[370,2081,1879],{"class":743},[370,2083,753],{"class":391},[370,2085,1340],{"class":384},[370,2087,566],{"class":391},[370,2089,1286],{"class":743},[370,2091,753],{"class":391},[370,2093,2094],{"class":384},"\"65 inch OLED TV\"",[370,2096,566],{"class":391},[370,2098,750],{"class":743},[370,2100,753],{"class":391},[370,2102,800],{"class":384},[370,2104,566],{"class":391},[370,2106,857],{"class":743},[370,2108,753],{"class":391},[370,2110,2111],{"class":380},"1299",[370,2113,1781],{"class":391},[370,2115,2116],{"class":372,"line":1097},[370,2117,1851],{"class":391},[370,2119,2120,2123,2125,2127],{"class":372,"line":1131},[370,2121,2122],{"class":743},"  \"total\"",[370,2124,753],{"class":391},[370,2126,1769],{"class":380},[370,2128,1085],{"class":391},[370,2130,2131,2134,2136,2138],{"class":372,"line":1162},[370,2132,2133],{"class":743},"  \"page\"",[370,2135,753],{"class":391},[370,2137,1003],{"class":380},[370,2139,1085],{"class":391},[370,2141,2142,2145,2147,2150],{"class":372,"line":1168},[370,2143,2144],{"class":743},"  \"perPage\"",[370,2146,753],{"class":391},[370,2148,2149],{"class":380},"24",[370,2151,1085],{"class":391},[370,2153,2154,2157],{"class":372,"line":1198},[370,2155,2156],{"class":743},"  \"facets\"",[370,2158,1094],{"class":391},[370,2160,2161,2163,2166,2168,2170,2172,2174,2176,2178,2180,2183,2185,2188,2190,2193],{"class":372,"line":1204},[370,2162,1683],{"class":391},[370,2164,2165],{"class":743},"\"type\"",[370,2167,753],{"class":391},[370,2169,983],{"class":384},[370,2171,566],{"class":391},[370,2173,1722],{"class":743},[370,2175,753],{"class":391},[370,2177,750],{"class":384},[370,2179,566],{"class":391},[370,2181,2182],{"class":743},"\"label\"",[370,2184,753],{"class":391},[370,2186,2187],{"class":384},"\"Brand\"",[370,2189,566],{"class":391},[370,2191,2192],{"class":743},"\"items\"",[370,2194,1094],{"class":391},[370,2196,2197,2199,2202,2204,2206,2208,2211,2213,2215,2217,2220,2222,2224],{"class":372,"line":1866},[370,2198,1100],{"class":391},[370,2200,2201],{"class":743},"\"key\"",[370,2203,753],{"class":391},[370,2205,756],{"class":384},[370,2207,566],{"class":391},[370,2209,2210],{"class":743},"\"count\"",[370,2212,753],{"class":391},[370,2214,1003],{"class":380},[370,2216,566],{"class":391},[370,2218,2219],{"class":743},"\"selected\"",[370,2221,753],{"class":391},[370,2223,676],{"class":380},[370,2225,1749],{"class":391},[370,2227,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252],{"class":372,"line":1910},[370,2229,1100],{"class":391},[370,2231,2201],{"class":743},[370,2233,753],{"class":391},[370,2235,800],{"class":384},[370,2237,566],{"class":391},[370,2239,2210],{"class":743},[370,2241,753],{"class":391},[370,2243,1003],{"class":380},[370,2245,566],{"class":391},[370,2247,2219],{"class":743},[370,2249,753],{"class":391},[370,2251,651],{"class":380},[370,2253,1781],{"class":391},[370,2255,2256],{"class":372,"line":1922},[370,2257,2258],{"class":391},"    ] }\n",[370,2260,2261],{"class":372,"line":1933},[370,2262,1851],{"class":391},[370,2264,2266,2269,2271,2274],{"class":372,"line":2265},15,[370,2267,2268],{"class":743},"  \"correctedQuery\"",[370,2270,753],{"class":391},[370,2272,2273],{"class":380},"null",[370,2275,1085],{"class":391},[370,2277,2279,2282,2284,2287],{"class":372,"line":2278},16,[370,2280,2281],{"class":743},"  \"tookMs\"",[370,2283,753],{"class":391},[370,2285,2286],{"class":380},"12",[370,2288,1085],{"class":391},[370,2290,2292,2295,2297],{"class":372,"line":2291},17,[370,2293,2294],{"class":743},"  \"searchId\"",[370,2296,753],{"class":391},[370,2298,2299],{"class":384},"\"8f2Kq9xWv1pLmN3cT6yZ0a\"\n",[370,2301,2303],{"class":372,"line":2302},18,[370,2304,1207],{"class":391},[546,2306,2307,2321,2326,2331,2336,2357,2378,2384],{},[549,2308,2311],{"name":2309,"type":2310},"items","array",[330,2312,2313,2314,2316,2317,2320],{},"The hits of this page. A hit holds the fields the profile returns, plus ",[356,2315,647],{}," when asked for and ",[356,2318,2319],{},"_pinned: true"," when a ranking rule put it there.",[549,2322,2323],{"name":1419,"type":621},[330,2324,2325],{},"Matching products, counted up to 10,000.",[549,2327,2328],{"name":620,"type":621},[330,2329,2330],{},"The page returned.",[549,2332,2333],{"name":627,"type":621},[330,2334,2335],{},"The page size used: the request's or the profile's default.",[549,2337,2339],{"name":2338,"type":2310},"facets",[330,2340,2341,2342,566,2345,566,2347,2350,2351,2353,2354,359],{},"The profile's facets in order, each with its ",[356,2343,2344],{},"type",[356,2346,549],{},[356,2348,2349],{},"label"," (",[356,2352,2273],{}," when none is set) and values. See ",[334,2355,206],{"href":2356},"\u002Fdocs\u002Fsearch\u002Ffacets#facet-results",[549,2358,2361],{"name":2359,"type":2360},"correctedQuery","string | null",[330,2362,2363,2364,2368,2369,2371,2372,2374,2375,2377],{},"Set when the query found nothing and ",[334,2365,2367],{"href":2366},"\u002Fdocs\u002Fsearch\u002Fprofiles#did-you-mean","did you mean"," found a better spelling. When the profile searches the suggestion, ",[356,2370,2309],{}," are the results for ",[356,2373,2359],{},"; otherwise ",[356,2376,2309],{}," is empty.",[549,2379,2381],{"name":2380,"type":621},"tookMs",[330,2382,2383],{},"How long the API took, in milliseconds.",[549,2385,2387],{"name":2386,"type":2360},"searchId",[330,2388,2389,2390,2393,2394,2396],{},"The id of this search in the log. Send it with the click, add-to-cart and purchase ",[334,2391,2392],{"href":260},"events"," the search leads to. ",[356,2395,2273],{}," when the search is not logged (an inline profile).",[330,2398,2399,2400,2402,2403,570,2405,2407,2408,2410],{},"A hit returns only the fields in the profile's ",[356,2401,585],{}," list, or the request's ",[356,2404,585],{},[356,2406,592],{}," when sent. When you set the profile's list, keep ",[356,2409,592],{}," in it. Without it the hits carry no id, and the storefront cannot link or track the product.",[325,2412,2414],{"id":2413},"errors","Errors",[330,2416,2417,2418,2421],{},"Errors come as ",[356,2419,2420],{},"{\"error\": {\"code\", \"message\", \"details\"}}",". The codes a search can answer:",[2423,2424,2425,2440],"table",{},[2426,2427,2428],"thead",{},[2429,2430,2431,2434,2437],"tr",{},[2432,2433,314],"th",{},[2432,2435,2436],{},"Code",[2432,2438,2439],{},"Why",[2441,2442,2443,2456,2468,2483,2497,2511,2523,2535,2548,2560,2573],"tbody",{},[2429,2444,2445,2448,2453],{},[2446,2447,1145],"td",{},[2446,2449,2450],{},[356,2451,2452],{},"FILTER_NOT_ALLOWED",[2446,2454,2455],{},"The profile does not allow filtering on that field.",[2429,2457,2458,2460,2465],{},[2446,2459,1145],{},[2446,2461,2462],{},[356,2463,2464],{},"INVALID_FILTER",[2446,2466,2467],{},"The field is not mapped, or the filter does not fit its type.",[2429,2469,2470,2472,2477],{},[2446,2471,1145],{},[2446,2473,2474],{},[356,2475,2476],{},"FIELD_NOT_RETURNED",[2446,2478,2479,2480,2482],{},"A name in ",[356,2481,585],{}," is not one the profile returns.",[2429,2484,2485,2487,2492],{},[2446,2486,1145],{},[2446,2488,2489],{},[356,2490,2491],{},"SORT_NOT_ALLOWED",[2446,2493,2494,2496],{},[356,2495,610],{}," is not one of the profile's sort options.",[2429,2498,2499,2501,2506],{},[2446,2500,1145],{},[2446,2502,2503],{},[356,2504,2505],{},"PER_PAGE_TOO_LARGE",[2446,2507,2508,2510],{},[356,2509,627],{}," is above the profile's maximum.",[2429,2512,2513,2515,2520],{},[2446,2514,1145],{},[2446,2516,2517],{},[356,2518,2519],{},"PAGE_OUT_OF_RANGE",[2446,2521,2522],{},"The page starts past the first 10,000 results.",[2429,2524,2525,2527,2532],{},[2446,2526,1145],{},[2446,2528,2529],{},[356,2530,2531],{},"PROFILE_INVALID",[2446,2533,2534],{},"The inline profile does not fit the mapping.",[2429,2536,2537,2540,2545],{},[2446,2538,2539],{},"401",[2446,2541,2542],{},[356,2543,2544],{},"UNAUTHENTICATED",[2446,2546,2547],{},"No key, or an unknown, revoked or expired one.",[2429,2549,2550,2552,2557],{},[2446,2551,443],{},[2446,2553,2554],{},[356,2555,2556],{},"INLINE_PROFILE_FORBIDDEN",[2446,2558,2559],{},"A public key sent an inline profile.",[2429,2561,2562,2565,2570],{},[2446,2563,2564],{},"404",[2446,2566,2567],{},[356,2568,2569],{},"PROFILE_NOT_FOUND",[2446,2571,2572],{},"No such profile for this key's project and indices.",[2429,2574,2575,2578,2583],{},[2446,2576,2577],{},"429",[2446,2579,2580],{},[356,2581,2582],{},"RATE_LIMITED",[2446,2584,2585],{},"Too many searches in the last minute.",[325,2587,2589],{"id":2588},"try-it-in-the-playground","Try it in the playground",[330,2591,2592,2593,2596,2597,2600,2601,2603,2604,2607,2608,359],{},"In the cabinet, open an index and then ",[1237,2594,2595],{},"Playground",". Pick a profile, type a search, choose a sort, and click facet values to filter. ",[1237,2598,2599],{},"Advanced filters (JSON)"," takes any ",[356,2602,558],{}," object, groups included, and shows the first problem under the field while the JSON is not valid. The results show as product cards; ",[1237,2605,2606],{},"Card fields"," picks which field fills the title, the image and the price. The playground calls the project route with the profile's key. Its searches are logged as cabinet traffic, which Analytics leaves out unless you tick ",[1237,2609,2610],{},"Include internal traffic",[330,2612,2613],{},[2614,2615],"img",{"alt":2616,"src":2617,"title":2618},"The Playground with the Storefront profile, the query tape, category facets with counts and result cards, the first two marked Pinned","\u002Fdocs\u002Fscreenshots\u002Fplayground.png","The playground searches with a profile, as the storefront does",[2620,2621,2622],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}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 .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}",{"title":366,"searchDepth":399,"depth":399,"links":2624},[2625,2629,2630,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648],{"id":327,"depth":399,"text":328,"children":2626},[2627,2628],{"id":344,"depth":423,"text":345},{"id":454,"depth":423,"text":455},{"id":543,"depth":399,"text":544},{"id":558,"depth":399,"text":578,"children":2631},[2632,2633,2634,2635,2636,2637],{"id":724,"depth":423,"text":725},{"id":771,"depth":423,"text":772},{"id":822,"depth":423,"text":823},{"id":898,"depth":423,"text":899},{"id":939,"depth":423,"text":940},{"id":1018,"depth":423,"text":1019},{"id":1247,"depth":399,"text":597},{"id":1301,"depth":399,"text":607},{"id":1345,"depth":399,"text":617},{"id":1394,"depth":399,"text":637},{"id":1427,"depth":399,"text":655},{"id":1483,"depth":399,"text":665},{"id":1501,"depth":399,"text":470},{"id":1627,"depth":399,"text":1628},{"id":2011,"depth":399,"text":2012},{"id":2413,"depth":399,"text":2414},{"id":2588,"depth":399,"text":2589},"md",{},{"icon":198},{"title":194,"description":197},"HOz_yu5HHgK-Ni8Bk2TDROxPMrbn_mG4NWCaDg9oHAQ",[2655,2656],{"title":182,"path":183,"stem":184,"description":185,"icon":155,"children":-1},{"title":200,"path":201,"stem":202,"description":203,"icon":204,"children":-1},1792794344462]