[{"data":1,"prerenderedAt":2656},["ShallowReactive",2],{"navigation":3,"/developers/authentication":506,"/developers/authentication-surround":2651},[4,66,204,292,339,402,450,482],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Whitepaper","i-lucide-file-text","/whitepaper","1.whitepaper",[10,13,17,22,27,32,37,42,47,51,56,61],{"title":5,"path":7,"stem":11,"icon":12},"1.whitepaper/index","i-heroicons-document-text",{"title":14,"path":15,"stem":16,"icon":12},"Executive Summary","/whitepaper/executive-summary","1.whitepaper/1.executive-summary",{"title":18,"path":19,"stem":20,"icon":21},"Investment Opportunity","/whitepaper/investment-opportunity","1.whitepaper/10.investment-opportunity","i-heroicons-banknotes",{"title":23,"path":24,"stem":25,"icon":26},"Risk Analysis","/whitepaper/risk-analysis","1.whitepaper/11.risk-analysis","i-lucide-shield-alert",{"title":28,"path":29,"stem":30,"icon":31},"Problem Statement","/whitepaper/problem-statement","1.whitepaper/2.problem-statement","i-heroicons-exclamation-triangle",{"title":33,"path":34,"stem":35,"icon":36},"Solution Overview","/whitepaper/solution-overview","1.whitepaper/3.solution-overview","i-heroicons-light-bulb",{"title":38,"path":39,"stem":40,"icon":41},"Market Opportunity","/whitepaper/market-opportunity","1.whitepaper/4.market-opportunity","i-heroicons-chart-bar",{"title":43,"path":44,"stem":45,"icon":46},"Technology Architecture","/whitepaper/technology-architecture","1.whitepaper/5.technology-architecture","i-heroicons-cog",{"title":48,"path":49,"stem":50,"icon":21},"Business Model","/whitepaper/business-model","1.whitepaper/6.business-model",{"title":52,"path":53,"stem":54,"icon":55},"Competitive Advantages","/whitepaper/competitive-advantages","1.whitepaper/7.competitive-advantages","i-heroicons-rocket-launch",{"title":57,"path":58,"stem":59,"icon":60},"Roadmap & Milestones","/whitepaper/roadmap-milestones","1.whitepaper/8.roadmap-milestones","i-heroicons-map",{"title":62,"path":63,"stem":64,"icon":65},"Team & Advisors","/whitepaper/team-advisors","1.whitepaper/9.team-advisors","i-heroicons-users",{"title":67,"icon":68,"path":69,"stem":70,"children":71},"Techniques","i-lucide-graduation-cap","/techniques","2.techniques",[72,75,107,139,171],{"title":67,"path":69,"stem":73,"icon":74},"2.techniques/index","i-heroicons-academic-cap",{"title":76,"path":77,"stem":78,"children":79,"icon":81,"parent":70,"order":82},"Remote Viewing","/techniques/remote-viewing","2.techniques/1.remote-viewing/index",[80,83,88,93,98,103],{"title":76,"path":77,"stem":78,"icon":81,"parent":70,"order":82},"i-lucide-eye",1,{"title":84,"path":85,"stem":86,"icon":87},"Controlled Remote Viewing (CRV)","/techniques/remote-viewing/controlled-remote-viewing-crv","2.techniques/1.remote-viewing/1.controlled-remote-viewing-crv","i-heroicons-clipboard-document-check",{"title":89,"path":90,"stem":91,"icon":92},"Scientific Remote Viewing (SRV)","/techniques/remote-viewing/scientific-remote-viewing-srv","2.techniques/1.remote-viewing/2.scientific-remote-viewing-srv","i-lucide-microscope",{"title":94,"path":95,"stem":96,"icon":97},"Technical Remote Viewing (TRV)","/techniques/remote-viewing/technical-remote-viewing-trv","2.techniques/1.remote-viewing/3.technical-remote-viewing-trv","i-heroicons-cog-6-tooth",{"title":99,"path":100,"stem":101,"icon":102},"Extended Remote Viewing (ERV)","/techniques/remote-viewing/extended-remote-viewing-erv","2.techniques/1.remote-viewing/4.extended-remote-viewing-erv","i-heroicons-arrows-pointing-out",{"title":104,"path":105,"stem":106,"icon":74},"RV Training & Development","/techniques/remote-viewing/rv-training-development","2.techniques/1.remote-viewing/5.rv-training-development",{"title":108,"path":109,"stem":110,"children":111,"icon":113,"parent":70,"order":114},"Dowsing","/techniques/dowsing","2.techniques/2.dowsing/index",[112,115,120,125,130,134],{"title":108,"path":109,"stem":110,"icon":113,"parent":70,"order":114},"i-lucide-compass",2,{"title":116,"path":117,"stem":118,"icon":119},"Pendulum Dowsing","/techniques/dowsing/pendulum-dowsing","2.techniques/2.dowsing/1.pendulum-dowsing","i-heroicons-clock",{"title":121,"path":122,"stem":123,"icon":124},"L-Rods Dowsing","/techniques/dowsing/l-rods-dowsing","2.techniques/2.dowsing/2.l-rods-dowsing","i-heroicons-adjustments-horizontal",{"title":126,"path":127,"stem":128,"icon":129},"Y-Rods Dowsing","/techniques/dowsing/y-rods-dowsing","2.techniques/2.dowsing/3.y-rods-dowsing","i-lucide-git-fork",{"title":131,"path":132,"stem":133,"icon":60},"Map Dowsing","/techniques/dowsing/map-dowsing","2.techniques/2.dowsing/4.map-dowsing",{"title":135,"path":136,"stem":137,"icon":138},"Information Dowsing","/techniques/dowsing/information-dowsing","2.techniques/2.dowsing/5.information-dowsing","i-heroicons-question-mark-circle",{"title":140,"path":141,"stem":142,"children":143,"icon":145,"parent":70,"order":146},"ESP Development","/techniques/esp-development","2.techniques/3.esp-development/index",[144,147,152,157,162,167],{"title":140,"path":141,"stem":142,"icon":145,"parent":70,"order":146},"i-lucide-brain",3,{"title":148,"path":149,"stem":150,"icon":151},"Telepathy Training","/techniques/esp-development/telepathy-training","2.techniques/3.esp-development/1.telepathy-training","i-heroicons-chat-bubble-left-right",{"title":153,"path":154,"stem":155,"icon":156},"Clairvoyance Development","/techniques/esp-development/clairvoyance-development","2.techniques/3.esp-development/2.clairvoyance-development","i-heroicons-eye",{"title":158,"path":159,"stem":160,"icon":161},"Clairaudience Practice","/techniques/esp-development/clairaudience-practice","2.techniques/3.esp-development/3.clairaudience-practice","i-heroicons-speaker-wave",{"title":163,"path":164,"stem":165,"icon":166},"Clairsentience Enhancement","/techniques/esp-development/clairsentience-enhancement","2.techniques/3.esp-development/4.clairsentience-enhancement","i-heroicons-hand-raised",{"title":168,"path":169,"stem":170,"icon":119},"Precognition Exercises","/techniques/esp-development/precognition-exercises","2.techniques/3.esp-development/5.precognition-exercises",{"title":172,"path":173,"stem":174,"children":175,"icon":177,"parent":70,"order":178},"Other Techniques","/techniques/other-techniques","2.techniques/4.other-techniques/index",[176,179,184,189,194,199],{"title":172,"path":173,"stem":174,"icon":177,"parent":70,"order":178},"i-lucide-sparkles",4,{"title":180,"path":181,"stem":182,"icon":183},"Tarot Reading","/techniques/other-techniques/tarot-reading","2.techniques/4.other-techniques/1.tarot-reading","i-heroicons-rectangle-stack",{"title":185,"path":186,"stem":187,"icon":188},"Astrology Applications","/techniques/other-techniques/astrology-applications","2.techniques/4.other-techniques/2.astrology-applications","i-heroicons-star",{"title":190,"path":191,"stem":192,"icon":193},"Numerology Methods","/techniques/other-techniques/numerology-methods","2.techniques/4.other-techniques/3.numerology-methods","i-heroicons-calculator",{"title":195,"path":196,"stem":197,"icon":198},"Scrying Practices","/techniques/other-techniques/scrying-practices","2.techniques/4.other-techniques/4.scrying-practices","i-heroicons-globe-americas",{"title":200,"path":201,"stem":202,"icon":203},"Meditation & Focus","/techniques/other-techniques/meditation-focus","2.techniques/4.other-techniques/5.meditation-focus","i-heroicons-sun",{"title":205,"icon":206,"path":207,"stem":208,"children":209},"Use Cases","i-lucide-briefcase","/use-cases","3.use-cases",[210,213,218,223,228,233,239,244,249,253,258,263,269,274,280,286],{"title":205,"path":207,"stem":211,"icon":212},"3.use-cases/index","i-heroicons-briefcase",{"title":214,"path":215,"stem":216,"icon":217,"parent":208,"order":82},"Missing Persons Applications","/use-cases/missing-persons","3.use-cases/1.missing-persons","i-heroicons-user-group",{"title":219,"path":220,"stem":221,"icon":41,"parent":208,"order":222},"Market Intelligence","/use-cases/market-intelligence","3.use-cases/10.market-intelligence",10,{"title":224,"path":225,"stem":226,"icon":21,"parent":208,"order":227},"Investment Opportunities","/use-cases/investment-opportunities","3.use-cases/11.investment-opportunities",11,{"title":229,"path":230,"stem":231,"icon":65,"parent":208,"order":232},"Competitive Analysis","/use-cases/competitive-analysis","3.use-cases/12.competitive-analysis",12,{"title":234,"path":235,"stem":236,"icon":237,"parent":208,"order":238},"Personal Guidance","/use-cases/personal-guidance","3.use-cases/13.personal-guidance","i-heroicons-heart",13,{"title":240,"path":241,"stem":242,"icon":74,"parent":208,"order":243},"Skill Development","/use-cases/skill-development","3.use-cases/14.skill-development",14,{"title":245,"path":246,"stem":247,"icon":60,"parent":208,"order":248},"Life Decisions","/use-cases/life-decisions","3.use-cases/15.life-decisions",15,{"title":250,"path":251,"stem":252,"icon":21,"parent":208,"order":114},"FBI Reward Cases","/use-cases/fbi-reward-cases","3.use-cases/2.fbi-reward-cases",{"title":254,"path":255,"stem":256,"icon":257,"parent":208,"order":146},"Success Stories","/use-cases/success-stories","3.use-cases/3.success-stories","i-heroicons-trophy",{"title":259,"path":260,"stem":261,"icon":262,"parent":208,"order":178},"Most Wanted Fugitives","/use-cases/most-wanted-fugitives","3.use-cases/4.most-wanted-fugitives","i-heroicons-finger-print",{"title":264,"path":265,"stem":266,"icon":267,"parent":208,"order":268},"Criminal Investigations","/use-cases/criminal-investigations","3.use-cases/5.criminal-investigations","i-heroicons-shield-check",5,{"title":270,"path":271,"stem":272,"icon":119,"parent":208,"order":273},"Cold Case Solutions","/use-cases/cold-case-solutions","3.use-cases/6.cold-case-solutions",6,{"title":275,"path":276,"stem":277,"icon":278,"parent":208,"order":279},"Archaeological Discoveries","/use-cases/archaeological-discoveries","3.use-cases/7.archaeological-discoveries","i-heroicons-building-library",7,{"title":281,"path":282,"stem":283,"icon":284,"parent":208,"order":285},"Historical Site Location","/use-cases/historical-site-location","3.use-cases/8.historical-site-location","i-heroicons-map-pin",8,{"title":287,"path":288,"stem":289,"icon":290,"parent":208,"order":291},"Ancient Artifact Finding","/use-cases/ancient-artifact-finding","3.use-cases/9.ancient-artifact-finding","i-heroicons-gift",9,{"title":293,"icon":294,"path":295,"stem":296,"children":297},"Investors","i-lucide-dollar-sign","/investors","4.investors",[298,300,304,307,311,316,321,325,330,335],{"title":293,"path":295,"stem":299,"icon":21},"4.investors/index",{"title":301,"path":302,"stem":303,"icon":41,"parent":296,"order":82},"Investment Overview","/investors/investment-overview","4.investors/1.investment-overview",{"title":38,"path":305,"stem":306,"icon":198,"parent":296,"order":114},"/investors/market-opportunity","4.investors/2.market-opportunity",{"title":308,"path":309,"stem":310,"icon":267,"parent":296,"order":146},"Competitive Advantage","/investors/competitive-advantage","4.investors/3.competitive-advantage",{"title":312,"path":313,"stem":314,"icon":315,"parent":296,"order":178},"Financial Projections","/investors/financial-projections","4.investors/4.financial-projections","i-lucide-trending-up",{"title":317,"path":318,"stem":319,"icon":320,"parent":296,"order":268},"Key Metrics","/investors/key-metrics","4.investors/5.key-metrics","i-heroicons-chart-pie",{"title":322,"path":323,"stem":324,"icon":21,"parent":296,"order":273},"Use of Funds","/investors/use-of-funds","4.investors/6.use-of-funds",{"title":326,"path":327,"stem":328,"icon":329,"parent":296,"order":279},"Investment Process","/investors/investment-process","4.investors/7.investment-process","i-heroicons-arrow-path",{"title":331,"path":332,"stem":333,"icon":334,"parent":296,"order":285},"Partnership Opportunities","/investors/partnership-opportunities","4.investors/8.partnership-opportunities","i-lucide-handshake",{"title":336,"path":337,"stem":338,"icon":138,"parent":296,"order":291},"Frequently Asked Questions","/investors/faq","4.investors/9.faq",{"title":340,"icon":341,"path":342,"stem":343,"children":344},"Developers","i-lucide-code","/developers","5.developers",[345,348,352,357,361,366,371,376,380,384,389,394,398],{"title":340,"path":342,"stem":346,"icon":347},"5.developers/index","i-heroicons-code-bracket",{"title":349,"path":350,"stem":351,"icon":55,"parent":343,"order":82},"Getting Started","/developers/getting-started","5.developers/1.getting-started",{"title":353,"path":354,"stem":355,"icon":356,"order":222},"Troubleshooting","/developers/troubleshooting","5.developers/10.troubleshooting","i-heroicons-wrench-screwdriver",{"title":358,"path":359,"stem":360,"icon":12,"order":227},"Changelog","/developers/changelog","5.developers/11.changelog",{"title":362,"path":363,"stem":364,"icon":365,"order":232},"Support","/developers/support","5.developers/12.support","i-heroicons-lifebuoy",{"title":367,"path":368,"stem":369,"icon":370,"parent":343,"order":114},"Platform Overview","/developers/platform-overview","5.developers/2.platform-overview","i-heroicons-cube",{"title":372,"path":373,"stem":374,"icon":375,"parent":343,"order":146},"Authentication","/developers/authentication","5.developers/3.authentication","i-heroicons-key",{"title":377,"path":378,"stem":379,"icon":347,"order":178},"API Reference","/developers/api-reference","5.developers/4.api-reference",{"title":381,"path":382,"stem":383,"icon":370,"order":268},"SDKs & Libraries","/developers/sdks","5.developers/5.sdks",{"title":385,"path":386,"stem":387,"icon":388,"order":273},"Webhooks","/developers/webhooks","5.developers/6.webhooks","i-heroicons-bell",{"title":390,"path":391,"stem":392,"icon":393,"order":279},"Integration Guides","/developers/integration-guides","5.developers/7.integration-guides","i-heroicons-puzzle-piece",{"title":395,"path":396,"stem":397,"icon":356,"order":285},"Developer Tools","/developers/developer-tools","5.developers/8.developer-tools",{"title":399,"path":400,"stem":401,"icon":36,"order":291},"Best Practices","/developers/best-practices","5.developers/9.best-practices",{"title":403,"icon":404,"path":405,"stem":406,"children":407},"Research","i-lucide-search","/research","6.research",[408,410,414,419,423,428,432,437,441,446],{"title":403,"path":405,"stem":409,"icon":92},"6.research/index",{"title":411,"path":412,"stem":413,"icon":92,"parent":406,"order":82},"Research Overview","/research/research-overview","6.research/1.research-overview",{"title":415,"path":416,"stem":417,"icon":418,"parent":406,"order":114},"Methodology Validation","/research/methodology-validation","6.research/2.methodology-validation","i-heroicons-check-circle",{"title":420,"path":421,"stem":422,"icon":55,"order":146},"Stargate Project Research","/research/stargate-project","6.research/3.stargate-project",{"title":424,"path":425,"stem":426,"icon":427,"order":178},"Government Programs Research","/research/government-programs","6.research/4.government-programs","i-heroicons-building-office",{"title":429,"path":430,"stem":431,"icon":257,"order":268},"Historical Success Cases","/research/historical-success-cases","6.research/5.historical-success-cases",{"title":433,"path":434,"stem":435,"icon":436,"order":273},"Ongoing Research","/research/ongoing-research","6.research/6.ongoing-research","i-heroicons-beaker",{"title":438,"path":439,"stem":440,"icon":74,"order":279},"Academic Partnerships","/research/academic-partnerships","6.research/7.academic-partnerships",{"title":442,"path":443,"stem":444,"icon":445,"order":285},"Future Research Directions","/research/future-research","6.research/8.future-research","i-heroicons-sparkles",{"title":447,"path":448,"stem":449,"icon":12,"order":291},"Publications","/research/publications","6.research/9.publications",{"title":451,"icon":452,"path":453,"stem":454,"children":455},"Specifications","i-lucide-settings","/specifications","7.specifications",[456,458,462,466,470,474,478],{"title":451,"path":453,"stem":457,"icon":97},"7.specifications/index",{"title":459,"path":460,"stem":461},"Technical Specifications","/specifications/technical-specifications","7.specifications/1.technical-specifications",{"title":463,"path":464,"stem":465},"API Endpoints Reference","/specifications/api-endpoints","7.specifications/2.api-endpoints",{"title":467,"path":468,"stem":469},"Data Models & Schemas","/specifications/data-models","7.specifications/3.data-models",{"title":471,"path":472,"stem":473},"Integration Requirements","/specifications/integration-requirements","7.specifications/4.integration-requirements",{"title":475,"path":476,"stem":477},"Compliance & Standards","/specifications/compliance-standards","7.specifications/5.compliance-standards",{"title":479,"path":480,"stem":481},"Dir","/specifications/_dir","7.specifications/_dir",{"title":483,"icon":484,"path":485,"stem":486,"children":487},"Resources","i-lucide-book-open","/resources","8.resources",[488,491,495,498,502],{"title":483,"path":485,"stem":489,"icon":490},"8.resources/index","i-heroicons-book-open",{"title":492,"path":493,"stem":494},"Glossary","/resources/glossary","8.resources/1.glossary",{"title":336,"path":496,"stem":497},"/resources/faqs","8.resources/2.faqs",{"title":499,"path":500,"stem":501},"Downloads & Resources","/resources/downloads","8.resources/3.downloads",{"title":503,"path":504,"stem":505},"Community & Support","/resources/community","8.resources/4.community",{"id":507,"title":372,"body":508,"description":2644,"extension":2645,"links":2646,"meta":2647,"navigation":2648,"path":373,"seo":2649,"stem":374,"__hash__":2650},"docs/5.developers/3.authentication.md",{"type":509,"value":510,"toc":2604},"minimark",[511,516,520,525,528,531,591,594,598,601,605,612,678,683,794,799,833,837,842,904,909,964,967,970,973,976,981,1030,1035,1176,1181,1233,1237,1240,1243,1246,1251,1305,1310,1357,1362,1422,1426,1430,1435,1470,1475,1519,1523,1528,1567,1572,1630,1634,1638,1643,1670,1675,1700,1705,1724,1729,1755,1759,1764,1866,1869,1872,1875,1878,1883,1963,1968,2000,2004,2009,2018,2023,2032,2037,2046,2050,2054,2059,2095,2100,2129,2133,2138,2243,2248,2333,2337,2342,2425,2430,2485,2489,2493,2498,2537,2541,2546,2585,2588,2600],[512,513,515],"h2",{"id":514},"authentication-overview","Authentication Overview",[517,518,519],"p",{},"MindPeeker uses OAuth 2.0 for secure authentication and authorization. Our system supports multiple grant types, fine-grained permissions, and enterprise-grade security features to protect your applications and data.",[521,522,524],"h3",{"id":523},"authentication-methods","Authentication Methods",[517,526,527],{},"\u003CUAlert\nicon=\"i-heroicons-shield-check\"\ntitle=\"Supported Authentication Flows\"\ndescription=\"Choose the right authentication method for your use case\"\ncolor=\"green\"",[529,530],"blockquote",{},[532,533,540,541,540,569,590],"div",{"className":534},[535,536,537,538,539],"grid","grid-cols-1","md:grid-cols-2","gap-4","mt-4","\n    ",[532,542,543,544,543,550,540],{},"\n      ",[532,545,549],{"className":546},[547,548],"font-semibold","mb-2","Server-to-Server",[551,552,555,556,555,560,555,563,555,566,543],"ulist",{"className":553},[554],"text-sm","\n        ",[557,558,559],"li",{},"Client Credentials Flow",[557,561,562],{},"API Key Authentication",[557,564,565],{},"Service Account Access",[557,567,568],{},"Background Processing",[532,570,543,571,543,575,540],{},[532,572,574],{"className":573},[547,548],"User-Based Applications",[551,576,555,578,555,581,555,584,555,587,543],{"className":577},[554],[557,579,580],{},"Authorization Code Flow",[557,582,583],{},"PKCE for Mobile Apps",[557,585,586],{},"Device Authorization Flow",[557,588,589],{},"Token Refresh and Renewal","\n  ",[512,592,559],{"id":593},"client-credentials-flow",[521,595,597],{"id":596},"overview","Overview",[517,599,600],{},"The Client Credentials flow is ideal for server-to-server applications where your application needs to access MindPeeker APIs on its own behalf without user interaction.",[521,602,604],{"id":603},"implementation","Implementation",[517,606,607,611],{},[608,609,610],"strong",{},"Step 1: Request Access Token",":",[613,614,619],"pre",{"className":615,"code":616,"language":617,"meta":618,"style":618},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST \"https://auth.mindpeeker.com/oauth2/token\" \\\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\n  -d \"grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&scope=remote-viewing:read remote-viewing:write\"\n","bash","",[620,621,622,651,665],"code",{"__ignoreMap":618},[623,624,626,630,634,637,641,644,647],"span",{"class":625,"line":82},"line",[623,627,629],{"class":628},"sBMFI","curl",[623,631,633],{"class":632},"sfazB"," -X",[623,635,636],{"class":632}," POST",[623,638,640],{"class":639},"sMK4o"," \"",[623,642,643],{"class":632},"https://auth.mindpeeker.com/oauth2/token",[623,645,646],{"class":639},"\"",[623,648,650],{"class":649},"sTEyZ"," \\\n",[623,652,653,656,658,661,663],{"class":625,"line":114},[623,654,655],{"class":632},"  -H",[623,657,640],{"class":639},[623,659,660],{"class":632},"Content-Type: application/x-www-form-urlencoded",[623,662,646],{"class":639},[623,664,650],{"class":649},[623,666,667,670,672,675],{"class":625,"line":146},[623,668,669],{"class":632},"  -d",[623,671,640],{"class":639},[623,673,674],{"class":632},"grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&scope=remote-viewing:read remote-viewing:write",[623,676,677],{"class":639},"\"\n",[517,679,680,611],{},[608,681,682],{},"Response",[613,684,688],{"className":685,"code":686,"language":687,"meta":618,"style":618},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"remote-viewing:read remote-viewing:write\",\n  \"issued_at\": 1640995200\n}\n","json",[620,689,690,695,718,738,755,775,789],{"__ignoreMap":618},[623,691,692],{"class":625,"line":82},[623,693,694],{"class":639},"{\n",[623,696,697,700,704,706,708,710,713,715],{"class":625,"line":114},[623,698,699],{"class":639},"  \"",[623,701,703],{"class":702},"spNyl","access_token",[623,705,646],{"class":639},[623,707,611],{"class":639},[623,709,640],{"class":639},[623,711,712],{"class":632},"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",[623,714,646],{"class":639},[623,716,717],{"class":639},",\n",[623,719,720,722,725,727,729,731,734,736],{"class":625,"line":146},[623,721,699],{"class":639},[623,723,724],{"class":702},"token_type",[623,726,646],{"class":639},[623,728,611],{"class":639},[623,730,640],{"class":639},[623,732,733],{"class":632},"Bearer",[623,735,646],{"class":639},[623,737,717],{"class":639},[623,739,740,742,745,747,749,753],{"class":625,"line":178},[623,741,699],{"class":639},[623,743,744],{"class":702},"expires_in",[623,746,646],{"class":639},[623,748,611],{"class":639},[623,750,752],{"class":751},"sbssI"," 3600",[623,754,717],{"class":639},[623,756,757,759,762,764,766,768,771,773],{"class":625,"line":268},[623,758,699],{"class":639},[623,760,761],{"class":702},"scope",[623,763,646],{"class":639},[623,765,611],{"class":639},[623,767,640],{"class":639},[623,769,770],{"class":632},"remote-viewing:read remote-viewing:write",[623,772,646],{"class":639},[623,774,717],{"class":639},[623,776,777,779,782,784,786],{"class":625,"line":273},[623,778,699],{"class":639},[623,780,781],{"class":702},"issued_at",[623,783,646],{"class":639},[623,785,611],{"class":639},[623,787,788],{"class":751}," 1640995200\n",[623,790,791],{"class":625,"line":279},[623,792,793],{"class":639},"}\n",[517,795,796,611],{},[608,797,798],{},"Step 2: Use Access Token",[613,800,802],{"className":615,"code":801,"language":617,"meta":618,"style":618},"curl -X GET \"https://api.mindpeeker.com/v1/sessions\" \\\n  -H \"Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\"\n",[620,803,804,822],{"__ignoreMap":618},[623,805,806,808,810,813,815,818,820],{"class":625,"line":82},[623,807,629],{"class":628},[623,809,633],{"class":632},[623,811,812],{"class":632}," GET",[623,814,640],{"class":639},[623,816,817],{"class":632},"https://api.mindpeeker.com/v1/sessions",[623,819,646],{"class":639},[623,821,650],{"class":649},[623,823,824,826,828,831],{"class":625,"line":114},[623,825,655],{"class":632},[623,827,640],{"class":639},[623,829,830],{"class":632},"Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",[623,832,677],{"class":639},[521,834,836],{"id":835},"sdk-implementation","SDK Implementation",[517,838,839,611],{},[608,840,841],{},"Node.js SDK",[613,843,847],{"className":844,"code":845,"language":846,"meta":618,"style":618},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const { MindPeekerClient } = require('@mindpeeker/sdk');\n\nconst client = new MindPeekerClient({\n  clientId: 'your_client_id',\n  clientSecret: 'your_client_secret',\n  grantType: 'client_credentials',\n  scopes: ['remote-viewing:read', 'remote-viewing:write']\n});\n\n// Automatic token handling\nconst sessions = await client.sessions.list();\n","javascript",[620,848,849,854,860,865,870,875,880,885,890,894,899],{"__ignoreMap":618},[623,850,851],{"class":625,"line":82},[623,852,853],{},"const { MindPeekerClient } = require('@mindpeeker/sdk');\n",[623,855,856],{"class":625,"line":114},[623,857,859],{"emptyLinePlaceholder":858},true,"\n",[623,861,862],{"class":625,"line":146},[623,863,864],{},"const client = new MindPeekerClient({\n",[623,866,867],{"class":625,"line":178},[623,868,869],{},"  clientId: 'your_client_id',\n",[623,871,872],{"class":625,"line":268},[623,873,874],{},"  clientSecret: 'your_client_secret',\n",[623,876,877],{"class":625,"line":273},[623,878,879],{},"  grantType: 'client_credentials',\n",[623,881,882],{"class":625,"line":279},[623,883,884],{},"  scopes: ['remote-viewing:read', 'remote-viewing:write']\n",[623,886,887],{"class":625,"line":285},[623,888,889],{},"});\n",[623,891,892],{"class":625,"line":291},[623,893,859],{"emptyLinePlaceholder":858},[623,895,896],{"class":625,"line":222},[623,897,898],{},"// Automatic token handling\n",[623,900,901],{"class":625,"line":227},[623,902,903],{},"const sessions = await client.sessions.list();\n",[517,905,906,611],{},[608,907,908],{},"Python SDK",[613,910,914],{"className":911,"code":912,"language":913,"meta":618,"style":618},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from mindpeeker import MindPeekerClient\n\nclient = MindPeekerClient(\n    client_id='your_client_id',\n    client_secret='your_client_secret',\n    grant_type='client_credentials',\n    scopes=['remote-viewing:read', 'remote-viewing:write']\n)\n\nsessions = client.sessions.list()\n","python",[620,915,916,921,925,930,935,940,945,950,955,959],{"__ignoreMap":618},[623,917,918],{"class":625,"line":82},[623,919,920],{},"from mindpeeker import MindPeekerClient\n",[623,922,923],{"class":625,"line":114},[623,924,859],{"emptyLinePlaceholder":858},[623,926,927],{"class":625,"line":146},[623,928,929],{},"client = MindPeekerClient(\n",[623,931,932],{"class":625,"line":178},[623,933,934],{},"    client_id='your_client_id',\n",[623,936,937],{"class":625,"line":268},[623,938,939],{},"    client_secret='your_client_secret',\n",[623,941,942],{"class":625,"line":273},[623,943,944],{},"    grant_type='client_credentials',\n",[623,946,947],{"class":625,"line":279},[623,948,949],{},"    scopes=['remote-viewing:read', 'remote-viewing:write']\n",[623,951,952],{"class":625,"line":285},[623,953,954],{},")\n",[623,956,957],{"class":625,"line":291},[623,958,859],{"emptyLinePlaceholder":858},[623,960,961],{"class":625,"line":222},[623,962,963],{},"sessions = client.sessions.list()\n",[512,965,580],{"id":966},"authorization-code-flow",[521,968,597],{"id":969},"overview-1",[517,971,972],{},"The Authorization Code flow is recommended for web applications that need to access MindPeeker on behalf of users, with user consent and interactive authentication.",[521,974,604],{"id":975},"implementation-1",[517,977,978,611],{},[608,979,980],{},"Step 1: Redirect User for Authorization",[613,982,984],{"className":844,"code":983,"language":846,"meta":618,"style":618},"const authUrl = `https://auth.mindpeeker.com/oauth2/authorize?` +\n  `response_type=code&` +\n  `client_id=${encodeURIComponent(clientId)}&` +\n  `redirect_uri=${encodeURIComponent(redirectUri)}&` +\n  `scope=${encodeURIComponent('remote-viewing:read profile')}&` +\n  `state=${encodeURIComponent(generatedState)}`;\n\n// Redirect user to authUrl\nwindow.location.href = authUrl;\n",[620,985,986,991,996,1001,1006,1011,1016,1020,1025],{"__ignoreMap":618},[623,987,988],{"class":625,"line":82},[623,989,990],{},"const authUrl = `https://auth.mindpeeker.com/oauth2/authorize?` +\n",[623,992,993],{"class":625,"line":114},[623,994,995],{},"  `response_type=code&` +\n",[623,997,998],{"class":625,"line":146},[623,999,1000],{},"  `client_id=${encodeURIComponent(clientId)}&` +\n",[623,1002,1003],{"class":625,"line":178},[623,1004,1005],{},"  `redirect_uri=${encodeURIComponent(redirectUri)}&` +\n",[623,1007,1008],{"class":625,"line":268},[623,1009,1010],{},"  `scope=${encodeURIComponent('remote-viewing:read profile')}&` +\n",[623,1012,1013],{"class":625,"line":273},[623,1014,1015],{},"  `state=${encodeURIComponent(generatedState)}`;\n",[623,1017,1018],{"class":625,"line":279},[623,1019,859],{"emptyLinePlaceholder":858},[623,1021,1022],{"class":625,"line":285},[623,1023,1024],{},"// Redirect user to authUrl\n",[623,1026,1027],{"class":625,"line":291},[623,1028,1029],{},"window.location.href = authUrl;\n",[517,1031,1032,611],{},[608,1033,1034],{},"Step 2: Handle Callback and Exchange Code",[613,1036,1038],{"className":844,"code":1037,"language":846,"meta":618,"style":618},"// In your callback handler\nconst urlParams = new URLSearchParams(window.location.search);\nconst code = urlParams.get('code');\nconst state = urlParams.get('state');\n\n// Verify state to prevent CSRF\nif (state !== storedState) {\n  throw new Error('Invalid state parameter');\n}\n\n// Exchange code for token\nconst tokenResponse = await fetch('https://auth.mindpeeker.com/oauth2/token', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/x-www-form-urlencoded'\n  },\n  body: new URLSearchParams({\n    grant_type: 'authorization_code',\n    client_id: clientId,\n    client_secret: clientSecret,\n    code: code,\n    redirect_uri: redirectUri\n  })\n});\n\nconst tokens = await tokenResponse.json();\n",[620,1039,1040,1045,1050,1055,1060,1064,1069,1074,1079,1083,1087,1092,1097,1102,1107,1112,1118,1124,1130,1136,1142,1148,1154,1160,1165,1170],{"__ignoreMap":618},[623,1041,1042],{"class":625,"line":82},[623,1043,1044],{},"// In your callback handler\n",[623,1046,1047],{"class":625,"line":114},[623,1048,1049],{},"const urlParams = new URLSearchParams(window.location.search);\n",[623,1051,1052],{"class":625,"line":146},[623,1053,1054],{},"const code = urlParams.get('code');\n",[623,1056,1057],{"class":625,"line":178},[623,1058,1059],{},"const state = urlParams.get('state');\n",[623,1061,1062],{"class":625,"line":268},[623,1063,859],{"emptyLinePlaceholder":858},[623,1065,1066],{"class":625,"line":273},[623,1067,1068],{},"// Verify state to prevent CSRF\n",[623,1070,1071],{"class":625,"line":279},[623,1072,1073],{},"if (state !== storedState) {\n",[623,1075,1076],{"class":625,"line":285},[623,1077,1078],{},"  throw new Error('Invalid state parameter');\n",[623,1080,1081],{"class":625,"line":291},[623,1082,793],{},[623,1084,1085],{"class":625,"line":222},[623,1086,859],{"emptyLinePlaceholder":858},[623,1088,1089],{"class":625,"line":227},[623,1090,1091],{},"// Exchange code for token\n",[623,1093,1094],{"class":625,"line":232},[623,1095,1096],{},"const tokenResponse = await fetch('https://auth.mindpeeker.com/oauth2/token', {\n",[623,1098,1099],{"class":625,"line":238},[623,1100,1101],{},"  method: 'POST',\n",[623,1103,1104],{"class":625,"line":243},[623,1105,1106],{},"  headers: {\n",[623,1108,1109],{"class":625,"line":248},[623,1110,1111],{},"    'Content-Type': 'application/x-www-form-urlencoded'\n",[623,1113,1115],{"class":625,"line":1114},16,[623,1116,1117],{},"  },\n",[623,1119,1121],{"class":625,"line":1120},17,[623,1122,1123],{},"  body: new URLSearchParams({\n",[623,1125,1127],{"class":625,"line":1126},18,[623,1128,1129],{},"    grant_type: 'authorization_code',\n",[623,1131,1133],{"class":625,"line":1132},19,[623,1134,1135],{},"    client_id: clientId,\n",[623,1137,1139],{"class":625,"line":1138},20,[623,1140,1141],{},"    client_secret: clientSecret,\n",[623,1143,1145],{"class":625,"line":1144},21,[623,1146,1147],{},"    code: code,\n",[623,1149,1151],{"class":625,"line":1150},22,[623,1152,1153],{},"    redirect_uri: redirectUri\n",[623,1155,1157],{"class":625,"line":1156},23,[623,1158,1159],{},"  })\n",[623,1161,1163],{"class":625,"line":1162},24,[623,1164,889],{},[623,1166,1168],{"class":625,"line":1167},25,[623,1169,859],{"emptyLinePlaceholder":858},[623,1171,1173],{"class":625,"line":1172},26,[623,1174,1175],{},"const tokens = await tokenResponse.json();\n",[517,1177,1178,611],{},[608,1179,1180],{},"Step 3: Use Access Token",[613,1182,1184],{"className":844,"code":1183,"language":846,"meta":618,"style":618},"// Store tokens securely\nlocalStorage.setItem('access_token', tokens.access_token);\nlocalStorage.setItem('refresh_token', tokens.refresh_token);\n\n// Make authenticated requests\nconst response = await fetch('https://api.mindpeeker.com/v1/user/profile', {\n  headers: {\n    'Authorization': `Bearer ${tokens.access_token}`\n  }\n});\n",[620,1185,1186,1191,1196,1201,1205,1210,1215,1219,1224,1229],{"__ignoreMap":618},[623,1187,1188],{"class":625,"line":82},[623,1189,1190],{},"// Store tokens securely\n",[623,1192,1193],{"class":625,"line":114},[623,1194,1195],{},"localStorage.setItem('access_token', tokens.access_token);\n",[623,1197,1198],{"class":625,"line":146},[623,1199,1200],{},"localStorage.setItem('refresh_token', tokens.refresh_token);\n",[623,1202,1203],{"class":625,"line":178},[623,1204,859],{"emptyLinePlaceholder":858},[623,1206,1207],{"class":625,"line":268},[623,1208,1209],{},"// Make authenticated requests\n",[623,1211,1212],{"class":625,"line":273},[623,1213,1214],{},"const response = await fetch('https://api.mindpeeker.com/v1/user/profile', {\n",[623,1216,1217],{"class":625,"line":279},[623,1218,1106],{},[623,1220,1221],{"class":625,"line":285},[623,1222,1223],{},"    'Authorization': `Bearer ${tokens.access_token}`\n",[623,1225,1226],{"class":625,"line":291},[623,1227,1228],{},"  }\n",[623,1230,1231],{"class":625,"line":222},[623,1232,889],{},[512,1234,1236],{"id":1235},"pkce-flow-mobile-apps","PKCE Flow (Mobile Apps)",[521,1238,597],{"id":1239},"overview-2",[517,1241,1242],{},"Proof Key for Code Exchange (PKCE) enhances security for mobile and native applications by preventing authorization code interception attacks.",[521,1244,604],{"id":1245},"implementation-2",[517,1247,1248,611],{},[608,1249,1250],{},"Step 1: Generate PKCE Parameters",[613,1252,1254],{"className":844,"code":1253,"language":846,"meta":618,"style":618},"// Generate code verifier\nconst codeVerifier = crypto.getRandomValues(new Uint8Array(32))\n  .reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n\n// Generate code challenge\nconst encoder = new TextEncoder();\nconst data = encoder.encode(codeVerifier);\nconst digest = await crypto.subtle.digest('SHA-256', data);\nconst codeChallenge = btoa(String.fromCharCode(...new Uint8Array(digest)))\n  .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n",[620,1255,1256,1261,1266,1271,1275,1280,1285,1290,1295,1300],{"__ignoreMap":618},[623,1257,1258],{"class":625,"line":82},[623,1259,1260],{},"// Generate code verifier\n",[623,1262,1263],{"class":625,"line":114},[623,1264,1265],{},"const codeVerifier = crypto.getRandomValues(new Uint8Array(32))\n",[623,1267,1268],{"class":625,"line":146},[623,1269,1270],{},"  .reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n",[623,1272,1273],{"class":625,"line":178},[623,1274,859],{"emptyLinePlaceholder":858},[623,1276,1277],{"class":625,"line":268},[623,1278,1279],{},"// Generate code challenge\n",[623,1281,1282],{"class":625,"line":273},[623,1283,1284],{},"const encoder = new TextEncoder();\n",[623,1286,1287],{"class":625,"line":279},[623,1288,1289],{},"const data = encoder.encode(codeVerifier);\n",[623,1291,1292],{"class":625,"line":285},[623,1293,1294],{},"const digest = await crypto.subtle.digest('SHA-256', data);\n",[623,1296,1297],{"class":625,"line":291},[623,1298,1299],{},"const codeChallenge = btoa(String.fromCharCode(...new Uint8Array(digest)))\n",[623,1301,1302],{"class":625,"line":222},[623,1303,1304],{},"  .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n",[517,1306,1307,611],{},[608,1308,1309],{},"Step 2: Authorization Request",[613,1311,1313],{"className":844,"code":1312,"language":846,"meta":618,"style":618},"const authUrl = `https://auth.mindpeeker.com/oauth2/authorize?` +\n  `response_type=code&` +\n  `client_id=${clientId}&` +\n  `redirect_uri=${redirectUri}&` +\n  `code_challenge=${codeChallenge}&` +\n  `code_challenge_method=S256&` +\n  `scope=${encodeURIComponent('remote-viewing:read profile')}`;\n\n// Open in browser or web view\n",[620,1314,1315,1319,1323,1328,1333,1338,1343,1348,1352],{"__ignoreMap":618},[623,1316,1317],{"class":625,"line":82},[623,1318,990],{},[623,1320,1321],{"class":625,"line":114},[623,1322,995],{},[623,1324,1325],{"class":625,"line":146},[623,1326,1327],{},"  `client_id=${clientId}&` +\n",[623,1329,1330],{"class":625,"line":178},[623,1331,1332],{},"  `redirect_uri=${redirectUri}&` +\n",[623,1334,1335],{"class":625,"line":268},[623,1336,1337],{},"  `code_challenge=${codeChallenge}&` +\n",[623,1339,1340],{"class":625,"line":273},[623,1341,1342],{},"  `code_challenge_method=S256&` +\n",[623,1344,1345],{"class":625,"line":279},[623,1346,1347],{},"  `scope=${encodeURIComponent('remote-viewing:read profile')}`;\n",[623,1349,1350],{"class":625,"line":285},[623,1351,859],{"emptyLinePlaceholder":858},[623,1353,1354],{"class":625,"line":291},[623,1355,1356],{},"// Open in browser or web view\n",[517,1358,1359,611],{},[608,1360,1361],{},"Step 3: Token Exchange",[613,1363,1365],{"className":844,"code":1364,"language":846,"meta":618,"style":618},"const tokenResponse = await fetch('https://auth.mindpeeker.com/oauth2/token', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/x-www-form-urlencoded'\n  },\n  body: new URLSearchParams({\n    grant_type: 'authorization_code',\n    client_id: clientId,\n    code: authorizationCode,\n    redirect_uri: redirectUri,\n    code_verifier: codeVerifier\n  })\n});\n",[620,1366,1367,1371,1375,1379,1383,1387,1391,1395,1399,1404,1409,1414,1418],{"__ignoreMap":618},[623,1368,1369],{"class":625,"line":82},[623,1370,1096],{},[623,1372,1373],{"class":625,"line":114},[623,1374,1101],{},[623,1376,1377],{"class":625,"line":146},[623,1378,1106],{},[623,1380,1381],{"class":625,"line":178},[623,1382,1111],{},[623,1384,1385],{"class":625,"line":268},[623,1386,1117],{},[623,1388,1389],{"class":625,"line":273},[623,1390,1123],{},[623,1392,1393],{"class":625,"line":279},[623,1394,1129],{},[623,1396,1397],{"class":625,"line":285},[623,1398,1135],{},[623,1400,1401],{"class":625,"line":291},[623,1402,1403],{},"    code: authorizationCode,\n",[623,1405,1406],{"class":625,"line":222},[623,1407,1408],{},"    redirect_uri: redirectUri,\n",[623,1410,1411],{"class":625,"line":227},[623,1412,1413],{},"    code_verifier: codeVerifier\n",[623,1415,1416],{"class":625,"line":232},[623,1417,1159],{},[623,1419,1420],{"class":625,"line":238},[623,1421,889],{},[512,1423,1425],{"id":1424},"token-management","Token Management",[521,1427,1429],{"id":1428},"token-refresh","Token Refresh",[517,1431,1432,611],{},[608,1433,1434],{},"Automatic Refresh in SDKs",[613,1436,1438],{"className":844,"code":1437,"language":846,"meta":618,"style":618},"const client = new MindPeekerClient({\n  clientId: 'your_client_id',\n  clientSecret: 'your_client_secret',\n  autoRefresh: true // Default: true\n});\n\n// SDK automatically handles token refresh\n",[620,1439,1440,1444,1448,1452,1457,1461,1465],{"__ignoreMap":618},[623,1441,1442],{"class":625,"line":82},[623,1443,864],{},[623,1445,1446],{"class":625,"line":114},[623,1447,869],{},[623,1449,1450],{"class":625,"line":146},[623,1451,874],{},[623,1453,1454],{"class":625,"line":178},[623,1455,1456],{},"  autoRefresh: true // Default: true\n",[623,1458,1459],{"class":625,"line":268},[623,1460,889],{},[623,1462,1463],{"class":625,"line":273},[623,1464,859],{"emptyLinePlaceholder":858},[623,1466,1467],{"class":625,"line":279},[623,1468,1469],{},"// SDK automatically handles token refresh\n",[517,1471,1472,611],{},[608,1473,1474],{},"Manual Token Refresh",[613,1476,1478],{"className":615,"code":1477,"language":617,"meta":618,"style":618},"curl -X POST \"https://auth.mindpeeker.com/oauth2/token\" \\\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\n  -d \"grant_type=refresh_token&refresh_token=YOUR_REFRESH_TOKEN&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET\"\n",[620,1479,1480,1496,1508],{"__ignoreMap":618},[623,1481,1482,1484,1486,1488,1490,1492,1494],{"class":625,"line":82},[623,1483,629],{"class":628},[623,1485,633],{"class":632},[623,1487,636],{"class":632},[623,1489,640],{"class":639},[623,1491,643],{"class":632},[623,1493,646],{"class":639},[623,1495,650],{"class":649},[623,1497,1498,1500,1502,1504,1506],{"class":625,"line":114},[623,1499,655],{"class":632},[623,1501,640],{"class":639},[623,1503,660],{"class":632},[623,1505,646],{"class":639},[623,1507,650],{"class":649},[623,1509,1510,1512,1514,1517],{"class":625,"line":146},[623,1511,669],{"class":632},[623,1513,640],{"class":639},[623,1515,1516],{"class":632},"grant_type=refresh_token&refresh_token=YOUR_REFRESH_TOKEN&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET",[623,1518,677],{"class":639},[521,1520,1522],{"id":1521},"token-storage-best-practices","Token Storage Best Practices",[517,1524,1525,611],{},[608,1526,1527],{},"Server-Side Storage",[613,1529,1531],{"className":844,"code":1530,"language":846,"meta":618,"style":618},"// Use secure, HTTP-only cookies\nres.cookie('access_token', accessToken, {\n  httpOnly: true,\n  secure: true,\n  sameSite: 'strict',\n  maxAge: 3600000 // 1 hour\n});\n",[620,1532,1533,1538,1543,1548,1553,1558,1563],{"__ignoreMap":618},[623,1534,1535],{"class":625,"line":82},[623,1536,1537],{},"// Use secure, HTTP-only cookies\n",[623,1539,1540],{"class":625,"line":114},[623,1541,1542],{},"res.cookie('access_token', accessToken, {\n",[623,1544,1545],{"class":625,"line":146},[623,1546,1547],{},"  httpOnly: true,\n",[623,1549,1550],{"class":625,"line":178},[623,1551,1552],{},"  secure: true,\n",[623,1554,1555],{"class":625,"line":268},[623,1556,1557],{},"  sameSite: 'strict',\n",[623,1559,1560],{"class":625,"line":273},[623,1561,1562],{},"  maxAge: 3600000 // 1 hour\n",[623,1564,1565],{"class":625,"line":279},[623,1566,889],{},[517,1568,1569,611],{},[608,1570,1571],{},"Client-Side Storage",[613,1573,1575],{"className":844,"code":1574,"language":846,"meta":618,"style":618},"// Use secure storage mechanisms\nconst secureStorage = {\n  set: (key, value) => {\n    // Use secure storage API or encrypted storage\n    sessionStorage.setItem(key, encrypt(value));\n  },\n  get: (key) => {\n    const encrypted = sessionStorage.getItem(key);\n    return encrypted ? decrypt(encrypted) : null;\n  }\n};\n",[620,1576,1577,1582,1587,1592,1597,1602,1606,1611,1616,1621,1625],{"__ignoreMap":618},[623,1578,1579],{"class":625,"line":82},[623,1580,1581],{},"// Use secure storage mechanisms\n",[623,1583,1584],{"class":625,"line":114},[623,1585,1586],{},"const secureStorage = {\n",[623,1588,1589],{"class":625,"line":146},[623,1590,1591],{},"  set: (key, value) => {\n",[623,1593,1594],{"class":625,"line":178},[623,1595,1596],{},"    // Use secure storage API or encrypted storage\n",[623,1598,1599],{"class":625,"line":268},[623,1600,1601],{},"    sessionStorage.setItem(key, encrypt(value));\n",[623,1603,1604],{"class":625,"line":273},[623,1605,1117],{},[623,1607,1608],{"class":625,"line":279},[623,1609,1610],{},"  get: (key) => {\n",[623,1612,1613],{"class":625,"line":285},[623,1614,1615],{},"    const encrypted = sessionStorage.getItem(key);\n",[623,1617,1618],{"class":625,"line":291},[623,1619,1620],{},"    return encrypted ? decrypt(encrypted) : null;\n",[623,1622,1623],{"class":625,"line":222},[623,1624,1228],{},[623,1626,1627],{"class":625,"line":227},[623,1628,1629],{},"};\n",[512,1631,1633],{"id":1632},"scopes-and-permissions","Scopes and Permissions",[521,1635,1637],{"id":1636},"available-scopes","Available Scopes",[517,1639,1640,611],{},[608,1641,1642],{},"Remote Viewing Scopes",[1644,1645,1646,1652,1658,1664],"ul",{},[557,1647,1648,1651],{},[620,1649,1650],{},"remote-viewing:read"," - Read session data and results",[557,1653,1654,1657],{},[620,1655,1656],{},"remote-viewing:write"," - Create and manage sessions",[557,1659,1660,1663],{},[620,1661,1662],{},"remote-viewing:delete"," - Delete sessions and data",[557,1665,1666,1669],{},[620,1667,1668],{},"remote-viewing:admin"," - Administrative access",[517,1671,1672,611],{},[608,1673,1674],{},"Dowsing Scopes",[1644,1676,1677,1683,1689,1695],{},[557,1678,1679,1682],{},[620,1680,1681],{},"dowsing:read"," - Read dowsing results and data",[557,1684,1685,1688],{},[620,1686,1687],{},"dowsing:write"," - Create dowsing requests",[557,1690,1691,1694],{},[620,1692,1693],{},"dowsing:delete"," - Delete dowsing data",[557,1696,1697,1669],{},[620,1698,1699],{},"dowsing:admin",[517,1701,1702,611],{},[608,1703,1704],{},"Analytics Scopes",[1644,1706,1707,1713,1719],{},[557,1708,1709,1712],{},[620,1710,1711],{},"analytics:read"," - Read analytics and reports",[557,1714,1715,1718],{},[620,1716,1717],{},"analytics:export"," - Export analytics data",[557,1720,1721,1669],{},[620,1722,1723],{},"analytics:admin",[517,1725,1726,611],{},[608,1727,1728],{},"User Scopes",[1644,1730,1731,1737,1743,1749],{},[557,1732,1733,1736],{},[620,1734,1735],{},"profile"," - Read user profile information",[557,1738,1739,1742],{},[620,1740,1741],{},"email"," - Read user email address",[557,1744,1745,1748],{},[620,1746,1747],{},"organizations:read"," - Read organization data",[557,1750,1751,1754],{},[620,1752,1753],{},"organizations:write"," - Manage organization settings",[521,1756,1758],{"id":1757},"scope-combinations","Scope Combinations",[517,1760,1761,611],{},[608,1762,1763],{},"Common Combinations",[613,1765,1767],{"className":844,"code":1766,"language":846,"meta":618,"style":618},"// Basic application access\nconst basicScopes = ['remote-viewing:read', 'profile'];\n\n// Full application access\nconst fullScopes = [\n  'remote-viewing:read',\n  'remote-viewing:write',\n  'dowsing:read',\n  'dowsing:write',\n  'analytics:read',\n  'profile'\n];\n\n// Administrative access\nconst adminScopes = [\n  'remote-viewing:admin',\n  'dowsing:admin',\n  'analytics:admin',\n  'organizations:write'\n];\n",[620,1768,1769,1774,1779,1783,1788,1793,1798,1803,1808,1813,1818,1823,1828,1832,1837,1842,1847,1852,1857,1862],{"__ignoreMap":618},[623,1770,1771],{"class":625,"line":82},[623,1772,1773],{},"// Basic application access\n",[623,1775,1776],{"class":625,"line":114},[623,1777,1778],{},"const basicScopes = ['remote-viewing:read', 'profile'];\n",[623,1780,1781],{"class":625,"line":146},[623,1782,859],{"emptyLinePlaceholder":858},[623,1784,1785],{"class":625,"line":178},[623,1786,1787],{},"// Full application access\n",[623,1789,1790],{"class":625,"line":268},[623,1791,1792],{},"const fullScopes = [\n",[623,1794,1795],{"class":625,"line":273},[623,1796,1797],{},"  'remote-viewing:read',\n",[623,1799,1800],{"class":625,"line":279},[623,1801,1802],{},"  'remote-viewing:write',\n",[623,1804,1805],{"class":625,"line":285},[623,1806,1807],{},"  'dowsing:read',\n",[623,1809,1810],{"class":625,"line":291},[623,1811,1812],{},"  'dowsing:write',\n",[623,1814,1815],{"class":625,"line":222},[623,1816,1817],{},"  'analytics:read',\n",[623,1819,1820],{"class":625,"line":227},[623,1821,1822],{},"  'profile'\n",[623,1824,1825],{"class":625,"line":232},[623,1826,1827],{},"];\n",[623,1829,1830],{"class":625,"line":238},[623,1831,859],{"emptyLinePlaceholder":858},[623,1833,1834],{"class":625,"line":243},[623,1835,1836],{},"// Administrative access\n",[623,1838,1839],{"class":625,"line":248},[623,1840,1841],{},"const adminScopes = [\n",[623,1843,1844],{"class":625,"line":1114},[623,1845,1846],{},"  'remote-viewing:admin',\n",[623,1848,1849],{"class":625,"line":1120},[623,1850,1851],{},"  'dowsing:admin',\n",[623,1853,1854],{"class":625,"line":1126},[623,1855,1856],{},"  'analytics:admin',\n",[623,1858,1859],{"class":625,"line":1132},[623,1860,1861],{},"  'organizations:write'\n",[623,1863,1864],{"class":625,"line":1138},[623,1865,1827],{},[512,1867,562],{"id":1868},"api-key-authentication",[521,1870,597],{"id":1871},"overview-3",[517,1873,1874],{},"API Key authentication provides a simple alternative to OAuth 2.0 for server-to-server applications where fine-grained user permissions are not required.",[521,1876,604],{"id":1877},"implementation-3",[517,1879,1880,611],{},[608,1881,1882],{},"Generate API Key",[613,1884,1886],{"className":615,"code":1885,"language":617,"meta":618,"style":618},"curl -X POST \"https://api.mindpeeker.com/v1/api-keys\" \\\n  -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Production API Key\",\n    \"scopes\": [\"remote-viewing:read\", \"remote-viewing:write\"],\n    \"expires_at\": \"2024-12-31T23:59:59Z\"\n  }'\n",[620,1887,1888,1905,1918,1931,1940,1945,1950,1955],{"__ignoreMap":618},[623,1889,1890,1892,1894,1896,1898,1901,1903],{"class":625,"line":82},[623,1891,629],{"class":628},[623,1893,633],{"class":632},[623,1895,636],{"class":632},[623,1897,640],{"class":639},[623,1899,1900],{"class":632},"https://api.mindpeeker.com/v1/api-keys",[623,1902,646],{"class":639},[623,1904,650],{"class":649},[623,1906,1907,1909,1911,1914,1916],{"class":625,"line":114},[623,1908,655],{"class":632},[623,1910,640],{"class":639},[623,1912,1913],{"class":632},"Authorization: Bearer YOUR_ACCESS_TOKEN",[623,1915,646],{"class":639},[623,1917,650],{"class":649},[623,1919,1920,1922,1924,1927,1929],{"class":625,"line":146},[623,1921,655],{"class":632},[623,1923,640],{"class":639},[623,1925,1926],{"class":632},"Content-Type: application/json",[623,1928,646],{"class":639},[623,1930,650],{"class":649},[623,1932,1933,1935,1938],{"class":625,"line":178},[623,1934,669],{"class":632},[623,1936,1937],{"class":639}," '",[623,1939,694],{"class":632},[623,1941,1942],{"class":625,"line":268},[623,1943,1944],{"class":632},"    \"name\": \"Production API Key\",\n",[623,1946,1947],{"class":625,"line":273},[623,1948,1949],{"class":632},"    \"scopes\": [\"remote-viewing:read\", \"remote-viewing:write\"],\n",[623,1951,1952],{"class":625,"line":279},[623,1953,1954],{"class":632},"    \"expires_at\": \"2024-12-31T23:59:59Z\"\n",[623,1956,1957,1960],{"class":625,"line":285},[623,1958,1959],{"class":632},"  }",[623,1961,1962],{"class":639},"'\n",[517,1964,1965,611],{},[608,1966,1967],{},"Use API Key",[613,1969,1971],{"className":615,"code":1970,"language":617,"meta":618,"style":618},"curl -X GET \"https://api.mindpeeker.com/v1/sessions\" \\\n  -H \"X-API-Key: your_api_key_here\"\n",[620,1972,1973,1989],{"__ignoreMap":618},[623,1974,1975,1977,1979,1981,1983,1985,1987],{"class":625,"line":82},[623,1976,629],{"class":628},[623,1978,633],{"class":632},[623,1980,812],{"class":632},[623,1982,640],{"class":639},[623,1984,817],{"class":632},[623,1986,646],{"class":639},[623,1988,650],{"class":649},[623,1990,1991,1993,1995,1998],{"class":625,"line":114},[623,1992,655],{"class":632},[623,1994,640],{"class":639},[623,1996,1997],{"class":632},"X-API-Key: your_api_key_here",[623,1999,677],{"class":639},[521,2001,2003],{"id":2002},"api-key-management","API Key Management",[517,2005,2006,611],{},[608,2007,2008],{},"List API Keys",[613,2010,2012],{"className":844,"code":2011,"language":846,"meta":618,"style":618},"const apiKeys = await client.apiKeys.list();\n",[620,2013,2014],{"__ignoreMap":618},[623,2015,2016],{"class":625,"line":82},[623,2017,2011],{},[517,2019,2020,611],{},[608,2021,2022],{},"Revoke API Key",[613,2024,2026],{"className":844,"code":2025,"language":846,"meta":618,"style":618},"await client.apiKeys.revoke('key_id_here');\n",[620,2027,2028],{"__ignoreMap":618},[623,2029,2030],{"class":625,"line":82},[623,2031,2025],{},[517,2033,2034,611],{},[608,2035,2036],{},"Rotate API Key",[613,2038,2040],{"className":844,"code":2039,"language":846,"meta":618,"style":618},"const newKey = await client.apiKeys.rotate('key_id_here');\n",[620,2041,2042],{"__ignoreMap":618},[623,2043,2044],{"class":625,"line":82},[623,2045,2039],{},[512,2047,2049],{"id":2048},"security-best-practices","Security Best Practices",[521,2051,2053],{"id":2052},"credential-management","Credential Management",[517,2055,2056,611],{},[608,2057,2058],{},"Environment Variables",[613,2060,2062],{"className":615,"code":2061,"language":617,"meta":618,"style":618},"MINDPEEKER_CLIENT_ID=your_client_id\nMINDPEEKER_CLIENT_SECRET=your_client_secret\nMINDPEEKER_API_KEY=your_api_key\n",[620,2063,2064,2075,2085],{"__ignoreMap":618},[623,2065,2066,2069,2072],{"class":625,"line":82},[623,2067,2068],{"class":649},"MINDPEEKER_CLIENT_ID",[623,2070,2071],{"class":639},"=",[623,2073,2074],{"class":632},"your_client_id\n",[623,2076,2077,2080,2082],{"class":625,"line":114},[623,2078,2079],{"class":649},"MINDPEEKER_CLIENT_SECRET",[623,2081,2071],{"class":639},[623,2083,2084],{"class":632},"your_client_secret\n",[623,2086,2087,2090,2092],{"class":625,"line":146},[623,2088,2089],{"class":649},"MINDPEEKER_API_KEY",[623,2091,2071],{"class":639},[623,2093,2094],{"class":632},"your_api_key\n",[517,2096,2097,611],{},[608,2098,2099],{},"Secure Configuration",[613,2101,2103],{"className":844,"code":2102,"language":846,"meta":618,"style":618},"const config = {\n  clientId: process.env.MINDPEEKER_CLIENT_ID,\n  clientSecret: process.env.MINDPEEKER_CLIENT_SECRET,\n  environment: process.env.NODE_ENV || 'development'\n};\n",[620,2104,2105,2110,2115,2120,2125],{"__ignoreMap":618},[623,2106,2107],{"class":625,"line":82},[623,2108,2109],{},"const config = {\n",[623,2111,2112],{"class":625,"line":114},[623,2113,2114],{},"  clientId: process.env.MINDPEEKER_CLIENT_ID,\n",[623,2116,2117],{"class":625,"line":146},[623,2118,2119],{},"  clientSecret: process.env.MINDPEEKER_CLIENT_SECRET,\n",[623,2121,2122],{"class":625,"line":178},[623,2123,2124],{},"  environment: process.env.NODE_ENV || 'development'\n",[623,2126,2127],{"class":625,"line":268},[623,2128,1629],{},[521,2130,2132],{"id":2131},"token-security","Token Security",[517,2134,2135,611],{},[608,2136,2137],{},"Token Validation",[613,2139,2141],{"className":844,"code":2140,"language":846,"meta":618,"style":618},"function validateToken(token) {\n  try {\n    // Decode JWT payload (without verification for demo)\n    const payload = JSON.parse(atob(token.split('.')[1]));\n    \n    // Check expiration\n    if (payload.exp \u003C Date.now() / 1000) {\n      throw new Error('Token expired');\n    }\n    \n    // Check issuer\n    if (payload.iss !== 'https://auth.mindpeeker.com') {\n      throw new Error('Invalid issuer');\n    }\n    \n    return true;\n  } catch (error) {\n    console.error('Token validation failed:', error);\n    return false;\n  }\n}\n",[620,2142,2143,2148,2153,2158,2163,2168,2173,2178,2183,2188,2192,2197,2202,2207,2211,2215,2220,2225,2230,2235,2239],{"__ignoreMap":618},[623,2144,2145],{"class":625,"line":82},[623,2146,2147],{},"function validateToken(token) {\n",[623,2149,2150],{"class":625,"line":114},[623,2151,2152],{},"  try {\n",[623,2154,2155],{"class":625,"line":146},[623,2156,2157],{},"    // Decode JWT payload (without verification for demo)\n",[623,2159,2160],{"class":625,"line":178},[623,2161,2162],{},"    const payload = JSON.parse(atob(token.split('.')[1]));\n",[623,2164,2165],{"class":625,"line":268},[623,2166,2167],{},"    \n",[623,2169,2170],{"class":625,"line":273},[623,2171,2172],{},"    // Check expiration\n",[623,2174,2175],{"class":625,"line":279},[623,2176,2177],{},"    if (payload.exp \u003C Date.now() / 1000) {\n",[623,2179,2180],{"class":625,"line":285},[623,2181,2182],{},"      throw new Error('Token expired');\n",[623,2184,2185],{"class":625,"line":291},[623,2186,2187],{},"    }\n",[623,2189,2190],{"class":625,"line":222},[623,2191,2167],{},[623,2193,2194],{"class":625,"line":227},[623,2195,2196],{},"    // Check issuer\n",[623,2198,2199],{"class":625,"line":232},[623,2200,2201],{},"    if (payload.iss !== 'https://auth.mindpeeker.com') {\n",[623,2203,2204],{"class":625,"line":238},[623,2205,2206],{},"      throw new Error('Invalid issuer');\n",[623,2208,2209],{"class":625,"line":243},[623,2210,2187],{},[623,2212,2213],{"class":625,"line":248},[623,2214,2167],{},[623,2216,2217],{"class":625,"line":1114},[623,2218,2219],{},"    return true;\n",[623,2221,2222],{"class":625,"line":1120},[623,2223,2224],{},"  } catch (error) {\n",[623,2226,2227],{"class":625,"line":1126},[623,2228,2229],{},"    console.error('Token validation failed:', error);\n",[623,2231,2232],{"class":625,"line":1132},[623,2233,2234],{},"    return false;\n",[623,2236,2237],{"class":625,"line":1138},[623,2238,1228],{},[623,2240,2241],{"class":625,"line":1144},[623,2242,793],{},[517,2244,2245,611],{},[608,2246,2247],{},"Secure Token Storage",[613,2249,2251],{"className":844,"code":2250,"language":846,"meta":618,"style":618},"// Use secure storage for tokens\nconst tokenStorage = {\n  setToken: (token) => {\n    // Store in secure HTTP-only cookie or secure storage\n    document.cookie = `token=${token}; HttpOnly; Secure; SameSite=Strict`;\n  },\n  \n  getToken: () => {\n    // Retrieve from secure storage\n    return document.cookie.replace(/(?:(?:^|.*;\\s*)token\\s*\\=\\s*([^;]*).*$)|^.*$/, '$1');\n  },\n  \n  clearToken: () => {\n    // Clear token from storage\n    document.cookie = 'token=; HttpOnly; Secure; SameSite=Strict; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n  }\n};\n",[620,2252,2253,2258,2263,2268,2273,2278,2282,2287,2292,2297,2302,2306,2310,2315,2320,2325,2329],{"__ignoreMap":618},[623,2254,2255],{"class":625,"line":82},[623,2256,2257],{},"// Use secure storage for tokens\n",[623,2259,2260],{"class":625,"line":114},[623,2261,2262],{},"const tokenStorage = {\n",[623,2264,2265],{"class":625,"line":146},[623,2266,2267],{},"  setToken: (token) => {\n",[623,2269,2270],{"class":625,"line":178},[623,2271,2272],{},"    // Store in secure HTTP-only cookie or secure storage\n",[623,2274,2275],{"class":625,"line":268},[623,2276,2277],{},"    document.cookie = `token=${token}; HttpOnly; Secure; SameSite=Strict`;\n",[623,2279,2280],{"class":625,"line":273},[623,2281,1117],{},[623,2283,2284],{"class":625,"line":279},[623,2285,2286],{},"  \n",[623,2288,2289],{"class":625,"line":285},[623,2290,2291],{},"  getToken: () => {\n",[623,2293,2294],{"class":625,"line":291},[623,2295,2296],{},"    // Retrieve from secure storage\n",[623,2298,2299],{"class":625,"line":222},[623,2300,2301],{},"    return document.cookie.replace(/(?:(?:^|.*;\\s*)token\\s*\\=\\s*([^;]*).*$)|^.*$/, '$1');\n",[623,2303,2304],{"class":625,"line":227},[623,2305,1117],{},[623,2307,2308],{"class":625,"line":232},[623,2309,2286],{},[623,2311,2312],{"class":625,"line":238},[623,2313,2314],{},"  clearToken: () => {\n",[623,2316,2317],{"class":625,"line":243},[623,2318,2319],{},"    // Clear token from storage\n",[623,2321,2322],{"class":625,"line":248},[623,2323,2324],{},"    document.cookie = 'token=; HttpOnly; Secure; SameSite=Strict; expires=Thu, 01 Jan 1970 00:00:00 GMT';\n",[623,2326,2327],{"class":625,"line":1114},[623,2328,1228],{},[623,2330,2331],{"class":625,"line":1120},[623,2332,1629],{},[521,2334,2336],{"id":2335},"error-handling","Error Handling",[517,2338,2339,611],{},[608,2340,2341],{},"Authentication Errors",[613,2343,2345],{"className":844,"code":2344,"language":846,"meta":618,"style":618},"try {\n  const response = await client.sessions.create(sessionData);\n} catch (error) {\n  if (error.status === 401) {\n    // Token expired or invalid\n    await refreshToken();\n    // Retry request\n    const response = await client.sessions.create(sessionData);\n  } else if (error.status === 403) {\n    // Insufficient permissions\n    console.error('Insufficient permissions for this operation');\n  } else {\n    // Other error\n    console.error('Request failed:', error);\n  }\n}\n",[620,2346,2347,2352,2357,2362,2367,2372,2377,2382,2387,2392,2397,2402,2407,2412,2417,2421],{"__ignoreMap":618},[623,2348,2349],{"class":625,"line":82},[623,2350,2351],{},"try {\n",[623,2353,2354],{"class":625,"line":114},[623,2355,2356],{},"  const response = await client.sessions.create(sessionData);\n",[623,2358,2359],{"class":625,"line":146},[623,2360,2361],{},"} catch (error) {\n",[623,2363,2364],{"class":625,"line":178},[623,2365,2366],{},"  if (error.status === 401) {\n",[623,2368,2369],{"class":625,"line":268},[623,2370,2371],{},"    // Token expired or invalid\n",[623,2373,2374],{"class":625,"line":273},[623,2375,2376],{},"    await refreshToken();\n",[623,2378,2379],{"class":625,"line":279},[623,2380,2381],{},"    // Retry request\n",[623,2383,2384],{"class":625,"line":285},[623,2385,2386],{},"    const response = await client.sessions.create(sessionData);\n",[623,2388,2389],{"class":625,"line":291},[623,2390,2391],{},"  } else if (error.status === 403) {\n",[623,2393,2394],{"class":625,"line":222},[623,2395,2396],{},"    // Insufficient permissions\n",[623,2398,2399],{"class":625,"line":227},[623,2400,2401],{},"    console.error('Insufficient permissions for this operation');\n",[623,2403,2404],{"class":625,"line":232},[623,2405,2406],{},"  } else {\n",[623,2408,2409],{"class":625,"line":238},[623,2410,2411],{},"    // Other error\n",[623,2413,2414],{"class":625,"line":243},[623,2415,2416],{},"    console.error('Request failed:', error);\n",[623,2418,2419],{"class":625,"line":248},[623,2420,1228],{},[623,2422,2423],{"class":625,"line":1114},[623,2424,793],{},[517,2426,2427,611],{},[608,2428,2429],{},"Rate Limiting",[613,2431,2433],{"className":844,"code":2432,"language":846,"meta":618,"style":618},"const handleRateLimit = async (error) => {\n  if (error.status === 429) {\n    const retryAfter = error.headers['retry-after'] || 60;\n    console.log(`Rate limited. Retrying after ${retryAfter} seconds`);\n    \n    await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));\n    // Retry request\n    return true;\n  }\n  return false;\n};\n",[620,2434,2435,2440,2445,2450,2455,2459,2464,2468,2472,2476,2481],{"__ignoreMap":618},[623,2436,2437],{"class":625,"line":82},[623,2438,2439],{},"const handleRateLimit = async (error) => {\n",[623,2441,2442],{"class":625,"line":114},[623,2443,2444],{},"  if (error.status === 429) {\n",[623,2446,2447],{"class":625,"line":146},[623,2448,2449],{},"    const retryAfter = error.headers['retry-after'] || 60;\n",[623,2451,2452],{"class":625,"line":178},[623,2453,2454],{},"    console.log(`Rate limited. Retrying after ${retryAfter} seconds`);\n",[623,2456,2457],{"class":625,"line":268},[623,2458,2167],{},[623,2460,2461],{"class":625,"line":273},[623,2462,2463],{},"    await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));\n",[623,2465,2466],{"class":625,"line":279},[623,2467,2381],{},[623,2469,2470],{"class":625,"line":285},[623,2471,2219],{},[623,2473,2474],{"class":625,"line":291},[623,2475,1228],{},[623,2477,2478],{"class":625,"line":222},[623,2479,2480],{},"  return false;\n",[623,2482,2483],{"class":625,"line":227},[623,2484,1629],{},[512,2486,2488],{"id":2487},"enterprise-authentication","Enterprise Authentication",[521,2490,2492],{"id":2491},"saml-integration","SAML Integration",[517,2494,2495,611],{},[608,2496,2497],{},"SAML Configuration",[613,2499,2501],{"className":844,"code":2500,"language":846,"meta":618,"style":618},"const samlConfig = {\n  entryPoint: 'https://auth.mindpeeker.com/saml/login',\n  issuer: 'your-entity-id',\n  cert: 'mindpeeker-certificate.pem',\n  privateKey: 'your-private-key.pem',\n  callbackUrl: 'https://your-app.com/auth/saml/callback'\n};\n",[620,2502,2503,2508,2513,2518,2523,2528,2533],{"__ignoreMap":618},[623,2504,2505],{"class":625,"line":82},[623,2506,2507],{},"const samlConfig = {\n",[623,2509,2510],{"class":625,"line":114},[623,2511,2512],{},"  entryPoint: 'https://auth.mindpeeker.com/saml/login',\n",[623,2514,2515],{"class":625,"line":146},[623,2516,2517],{},"  issuer: 'your-entity-id',\n",[623,2519,2520],{"class":625,"line":178},[623,2521,2522],{},"  cert: 'mindpeeker-certificate.pem',\n",[623,2524,2525],{"class":625,"line":268},[623,2526,2527],{},"  privateKey: 'your-private-key.pem',\n",[623,2529,2530],{"class":625,"line":273},[623,2531,2532],{},"  callbackUrl: 'https://your-app.com/auth/saml/callback'\n",[623,2534,2535],{"class":625,"line":279},[623,2536,1629],{},[521,2538,2540],{"id":2539},"ldap-integration","LDAP Integration",[517,2542,2543,611],{},[608,2544,2545],{},"LDAP Authentication",[613,2547,2549],{"className":844,"code":2548,"language":846,"meta":618,"style":618},"const ldapConfig = {\n  url: 'ldap://your-ldap-server.com',\n  bindDN: 'cn=admin,dc=company,dc=com',\n  bindCredentials: 'admin-password',\n  searchBase: 'ou=users,dc=company,dc=com',\n  searchFilter: '(uid={{username}})'\n};\n",[620,2550,2551,2556,2561,2566,2571,2576,2581],{"__ignoreMap":618},[623,2552,2553],{"class":625,"line":82},[623,2554,2555],{},"const ldapConfig = {\n",[623,2557,2558],{"class":625,"line":114},[623,2559,2560],{},"  url: 'ldap://your-ldap-server.com',\n",[623,2562,2563],{"class":625,"line":146},[623,2564,2565],{},"  bindDN: 'cn=admin,dc=company,dc=com',\n",[623,2567,2568],{"class":625,"line":178},[623,2569,2570],{},"  bindCredentials: 'admin-password',\n",[623,2572,2573],{"class":625,"line":268},[623,2574,2575],{},"  searchBase: 'ou=users,dc=company,dc=com',\n",[623,2577,2578],{"class":625,"line":273},[623,2579,2580],{},"  searchFilter: '(uid={{username}})'\n",[623,2582,2583],{"class":625,"line":279},[623,2584,1629],{},[2586,2587],"hr",{},[517,2589,2590,2591,2594,2595,2599],{},"Need help with authentication? Check out our ",[2592,2593,377],"a",{"href":378}," for detailed endpoint documentation, or contact our developer support at ",[2592,2596,2598],{"href":2597},"mailto:developers@mindpeeker.com","developers@mindpeeker.com",".",[2601,2602,2603],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":618,"searchDepth":82,"depth":114,"links":2605},[2606,2609,2614,2618,2622,2626,2630,2635,2640],{"id":514,"depth":114,"text":515,"children":2607},[2608],{"id":523,"depth":146,"text":524},{"id":593,"depth":114,"text":559,"children":2610},[2611,2612,2613],{"id":596,"depth":146,"text":597},{"id":603,"depth":146,"text":604},{"id":835,"depth":146,"text":836},{"id":966,"depth":114,"text":580,"children":2615},[2616,2617],{"id":969,"depth":146,"text":597},{"id":975,"depth":146,"text":604},{"id":1235,"depth":114,"text":1236,"children":2619},[2620,2621],{"id":1239,"depth":146,"text":597},{"id":1245,"depth":146,"text":604},{"id":1424,"depth":114,"text":1425,"children":2623},[2624,2625],{"id":1428,"depth":146,"text":1429},{"id":1521,"depth":146,"text":1522},{"id":1632,"depth":114,"text":1633,"children":2627},[2628,2629],{"id":1636,"depth":146,"text":1637},{"id":1757,"depth":146,"text":1758},{"id":1868,"depth":114,"text":562,"children":2631},[2632,2633,2634],{"id":1871,"depth":146,"text":597},{"id":1877,"depth":146,"text":604},{"id":2002,"depth":146,"text":2003},{"id":2048,"depth":114,"text":2049,"children":2636},[2637,2638,2639],{"id":2052,"depth":146,"text":2053},{"id":2131,"depth":146,"text":2132},{"id":2335,"depth":146,"text":2336},{"id":2487,"depth":114,"text":2488,"children":2641},[2642,2643],{"id":2491,"depth":146,"text":2492},{"id":2539,"depth":146,"text":2540},"Complete guide to MindPeeker's authentication and authorization system","md",null,{},{"icon":375,"parent":343,"order":146},{"title":372,"description":2644},"UGGRHrr6eHW-yxUfomnaPInX0VhAT73euJ75vcZ7UTs",[2652,2654],{"title":367,"path":368,"stem":369,"description":2653,"icon":370,"parent":343,"order":114,"children":-1},"Comprehensive overview of MindPeeker's psychic intelligence platform architecture and capabilities",{"title":377,"path":378,"stem":379,"description":2655,"icon":347,"order":178,"children":-1},"Complete API reference documentation for MindPeeker platform",1776312211796]