[{"data":1,"prerenderedAt":946},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Faccount\u002Forganizations":331,"docs-\u002Fdocs\u002Faccount\u002Forganizations-surround":943},[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":61,"body":333,"description":64,"extension":938,"meta":939,"navigation":940,"path":62,"seo":941,"stem":63,"__hash__":942},"docs\u002Fdocs\u002F2.account\u002F2.organizations.md",{"type":334,"value":335,"toc":923},"minimark",[336,341,345,357,377,380,386,390,398,402,416,429,432,437,440,654,665,668,678,686,688,691,695,724,726,730,802,816,820,825,827,831,835,848,850,853,857,864,868,877,881,897,901,919],[337,338,340],"h2",{"id":339},"what-an-organization-is","What an organization is",[342,343,344],"p",{},"An organization is the account your team shares. It holds the members and their roles, the projects, the plan and the invoices. Registering creates one organization named after your company, with you as its only owner.",[342,346,347,348,352,353,356],{},"You can belong to several organizations, for example your own shop and a client's. Each one appears on the ",[349,350,351],"strong",{},"Account"," page under ",[349,354,355],{},"Organizations",", with your role in it. To switch between them, use the organization menu at the start of the breadcrumb at the top of the cabinet. To join another organization, ask one of its owners to add you.",[342,358,359,360,362,363,366,367,370,371,366,374,376],{},"An organization's sidebar has three pages: ",[349,361,67],{},", ",[349,364,365],{},"Members"," and ",[349,368,369],{},"Billing & usage",". See ",[372,373,67],"a",{"href":68},[372,375,320],{"href":321},".",[342,378,379],{},"With the API:",[381,382],"api-route",{"auth":383,"method":384,"path":385},"Signed-in user","GET","\u002Fv1\u002Forgs",[381,387],{"auth":388,"method":384,"path":389},"Any member of the organization","\u002Fv1\u002Forgs\u002F:orgId",[342,391,392,393,397],{},"An organization you do not belong to answers ",[394,395,396],"code",{},"404 ORG_NOT_FOUND",", the same as one that does not exist.",[337,399,401],{"id":400},"roles","Roles",[342,403,404,405,362,408,411,412,415],{},"Each member has one role in the organization: ",[394,406,407],{},"OWNER",[394,409,410],{},"ADMIN"," or ",[394,413,414],{},"MEMBER",". The role applies to every project of the organization. A higher role can do everything a lower role can.",[417,418,419,423,426],"ul",{},[420,421,422],"li",{},"Owner: manages the members and their roles, and does everything an admin does.",[420,424,425],{},"Admin: creates projects and API keys, changes indices, documents and search settings, and changes the plan.",[420,427,428],{},"Member: sees everything and can try searches in the cabinet, but changes nothing.",[342,430,431],{},"In the cabinet, buttons for actions your role does not allow are off or hidden, and the page says who can use them, for example \"Only organization owners can manage members.\"",[433,434,436],"h3",{"id":435},"what-each-role-may-do","What each role may do",[342,438,439],{},"This table follows the access rules of the API routes. API keys are listed too. A key belongs to one project and never reaches the organization's members, billing or keys.",[441,442,443,468],"table",{},[444,445,446],"thead",{},[447,448,449,453,456,459,462,465],"tr",{},[450,451,452],"th",{},"Action",[450,454,455],{},"Member",[450,457,458],{},"Admin",[450,460,461],{},"Owner",[450,463,464],{},"Read key",[450,466,467],{},"Full key",[469,470,471,489,504,519,534,549,564,579,594,609,624,639],"tbody",{},[447,472,473,477,480,482,484,487],{},[474,475,476],"td",{},"See the organization, its projects and its members",[474,478,479],{},"yes",[474,481,479],{},[474,483,479],{},[474,485,486],{},"no",[474,488,486],{},[447,490,491,494,496,498,500,502],{},[474,492,493],{},"See the plan, usage and invoices",[474,495,479],{},[474,497,479],{},[474,499,479],{},[474,501,486],{},[474,503,486],{},[447,505,506,509,511,513,515,517],{},[474,507,508],{},"Change the plan",[474,510,486],{},[474,512,479],{},[474,514,479],{},[474,516,486],{},[474,518,486],{},[447,520,521,524,526,528,530,532],{},[474,522,523],{},"Create a project",[474,525,486],{},[474,527,479],{},[474,529,479],{},[474,531,486],{},[474,533,486],{},[447,535,536,539,541,543,545,547],{},[474,537,538],{},"Add members, change roles, remove members",[474,540,486],{},[474,542,486],{},[474,544,479],{},[474,546,486],{},[474,548,486],{},[447,550,551,554,556,558,560,562],{},[474,552,553],{},"See the project's API keys (name and prefix only)",[474,555,479],{},[474,557,479],{},[474,559,479],{},[474,561,486],{},[474,563,486],{},[447,565,566,569,571,573,575,577],{},[474,567,568],{},"Create and revoke API keys",[474,570,486],{},[474,572,479],{},[474,574,479],{},[474,576,486],{},[474,578,486],{},[447,580,581,584,586,588,590,592],{},[474,582,583],{},"Read indices, mappings, documents, tasks, profiles, synonyms, rules, autocomplete and analytics",[474,585,479],{},[474,587,479],{},[474,589,479],{},[474,591,479],{},[474,593,479],{},[447,595,596,599,601,603,605,607],{},[474,597,598],{},"Search, suggest and test rules in the cabinet",[474,600,479],{},[474,602,479],{},[474,604,479],{},[474,606,479],{},[474,608,479],{},[447,610,611,614,616,618,620,622],{},[474,612,613],{},"Create and delete indices, change mappings and facets, reindex",[474,615,486],{},[474,617,479],{},[474,619,479],{},[474,621,486],{},[474,623,479],{},[447,625,626,629,631,633,635,637],{},[474,627,628],{},"Upload and delete documents, run a full catalog sync",[474,630,486],{},[474,632,479],{},[474,634,479],{},[474,636,486],{},[474,638,479],{},[447,640,641,644,646,648,650,652],{},[474,642,643],{},"Create, change and delete profiles, synonyms, rules and suggestions",[474,645,486],{},[474,647,479],{},[474,649,479],{},[474,651,486],{},[474,653,479],{},[342,655,656,657,660,661,376],{},"A route that your role does not allow answers ",[394,658,659],{},"403 FORBIDDEN",". Creating API keys also needs a verified email, see ",[372,662,664],{"href":663},"\u002Fdocs\u002Faccount\u002Fsign-in#verify-your-email","Verify your email",[337,666,365],{"id":667},"members",[342,669,670,671,673,674,677],{},"Open your organization and click ",[349,672,365],{}," in the sidebar. The page lists everyone in the organization with their email and role. Only owners can change the roles, use the ",[349,675,676],{},"Remove"," buttons and add members.",[342,679,680],{},[681,682],"img",{"alt":683,"src":684,"title":685},"The Members page of Demo Store with an owner, an admin and a member, each with a role select and a Remove button, and the Add a member button at the top right","\u002Fdocs\u002Fscreenshots\u002Fmembers.png","Members and their roles",[342,687,379],{},[381,689],{"auth":388,"method":384,"path":690},"\u002Fv1\u002Forgs\u002F:orgId\u002Fmembers",[433,692,694],{"id":693},"add-a-member","Add a member",[342,696,697,698,700,701,703,704,707,708,711,712,714,715,718,719,723],{},"On ",[349,699,365],{},", click ",[349,702,694],{},". Enter the person's ",[349,705,706],{},"Email",", pick a ",[349,709,710],{},"Role"," (it starts at ",[394,713,414],{},") and click ",[349,716,717],{},"Add member",". The person needs a Zaproo account already, because there are no email invitations yet. Ask them to ",[372,720,722],{"href":721},"\u002Fregister","register"," first. Their registration creates an organization of their own, which they can ignore. They also need to verify their email before you can add them.",[342,725,379],{},[381,727],{"auth":728,"method":729,"path":690},"Owner, not while support is acting as you","POST",[731,732,737],"pre",{"className":733,"code":734,"language":735,"meta":736,"style":736},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -X POST https:\u002F\u002Fapi.search.zaproo.cloud\u002Fv1\u002Forgs\u002F$ORG_ID\u002Fmembers \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"email\": \"anna@shop.example.com\", \"role\": \"ADMIN\"}'\n","bash","",[394,738,739,770,793],{"__ignoreMap":736},[740,741,744,748,752,756,759,763,766],"span",{"class":742,"line":743},"line",1,[740,745,747],{"class":746},"szw1H","curl",[740,749,751],{"class":750},"ssYy9"," -X",[740,753,755],{"class":754},"semJd"," POST",[740,757,758],{"class":754}," https:\u002F\u002Fapi.search.zaproo.cloud\u002Fv1\u002Forgs\u002F",[740,760,762],{"class":761},"s7iLA","$ORG_ID",[740,764,765],{"class":754},"\u002Fmembers",[740,767,769],{"class":768},"sklAV"," \\\n",[740,771,773,776,779,782,785,788,791],{"class":742,"line":772},2,[740,774,775],{"class":750},"  -H",[740,777,778],{"class":754}," \"Authorization: Bearer ",[740,780,781],{"class":761},"$ACCESS_TOKEN",[740,783,784],{"class":754},"\"",[740,786,787],{"class":750}," -H",[740,789,790],{"class":754}," \"Content-Type: application\u002Fjson\"",[740,792,769],{"class":768},[740,794,796,799],{"class":742,"line":795},3,[740,797,798],{"class":750},"  -d",[740,800,801],{"class":754}," '{\"email\": \"anna@shop.example.com\", \"role\": \"ADMIN\"}'\n",[342,803,804,805,808,809,812,813,376],{},"An email without an account answers ",[394,806,807],{},"404 USER_NOT_FOUND",". A person who is already a member answers ",[394,810,811],{},"409 ALREADY_MEMBER",". A person who has not verified their email yet answers ",[394,814,815],{},"409 USER_NOT_VERIFIED",[433,817,819],{"id":818},"change-a-role","Change a role",[342,821,697,822,824],{},[349,823,365],{},", pick the new role in the member's row. The change is saved at once and applies to the member's next request.",[342,826,379],{},[381,828],{"auth":728,"method":829,"path":830},"PUT","\u002Fv1\u002Forgs\u002F:orgId\u002Fmembers\u002F:userId",[433,832,834],{"id":833},"remove-a-member","Remove a member",[342,836,697,837,700,839,841,842,844,845,847],{},[349,838,365],{},[349,840,676],{}," in the member's row. There is no confirmation step. The person loses access to every project of the organization at once. The API keys they created keep working, because keys belong to the project, not to a person. Revoke those keys on the project's ",[349,843,80],{}," page if the person should lose that access too. You cannot remove yourself, so your own row has no ",[349,846,676],{}," button.",[342,849,379],{},[381,851],{"auth":728,"method":852,"path":830},"DELETE",[433,854,856],{"id":855},"keep-at-least-one-owner","Keep at least one owner",[342,858,859,860,863],{},"An organization always has at least one owner. Demoting or removing the last owner answers ",[394,861,862],{},"409 LAST_OWNER",". To hand the organization over, make the new person an owner first, then change your own role.",[337,865,867],{"id":866},"seats","Seats",[342,869,870,871,366,873,876],{},"Each plan includes a number of seats, one per member. The Free plan has 2. When the organization reaches 80% and 100% of its seats, the owners and admins get an email and the cabinet shows a usage banner. Adding a member over the limit still works. The plan cards on ",[349,872,369],{},[372,874,320],{"href":875},"\u002Fdocs\u002Freference\u002Fbilling#plans"," list the seats of each plan.",[337,878,880],{"id":879},"common-mistakes","Common mistakes",[417,882,883,886,889],{},[420,884,885],{},"Giving everyone the owner role. Owners can remove other owners. Give the admin role to people who build search, and keep two owners, so the organization never depends on one person.",[420,887,888],{},"Removing a member and forgetting their keys. Revoke the keys that person used in scripts and servers.",[420,890,891,892,894,895,376],{},"Adding a person before they registered. The API answers ",[394,893,807],{},". Ask them to register first. Until they confirm the email link, the API answers ",[394,896,815],{},[337,898,900],{"id":899},"related","Related",[417,902,903,907,911,915],{},[420,904,905],{},[372,906,67],{"href":68},[420,908,909],{},[372,910,80],{"href":81},[420,912,913],{},[372,914,55],{"href":56},[420,916,917],{},[372,918,320],{"href":321},[920,921,922],"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);}",{"title":736,"searchDepth":772,"depth":772,"links":924},[925,926,929,935,936,937],{"id":339,"depth":772,"text":340},{"id":400,"depth":772,"text":401,"children":927},[928],{"id":435,"depth":795,"text":436},{"id":667,"depth":772,"text":365,"children":930},[931,932,933,934],{"id":693,"depth":795,"text":694},{"id":818,"depth":795,"text":819},{"id":833,"depth":795,"text":834},{"id":855,"depth":795,"text":856},{"id":866,"depth":772,"text":867},{"id":879,"depth":772,"text":880},{"id":899,"depth":772,"text":900},"md",{},{"icon":65},{"title":61,"description":64},"33xLSAc005_0f331210H3UxO1DLYA5nGS0gb67nSMC4",[944,945],{"title":55,"path":56,"stem":57,"description":58,"icon":59,"children":-1},{"title":67,"path":68,"stem":69,"description":70,"icon":71,"children":-1},1793717706300]