[{"data":1,"prerenderedAt":2354},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002Fdocs\u002Fauth-h3client":64,"navigation":217,"navLinks_footer":829,"\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change_page":842,"\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change_surround":1725,"\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change":1728},{"id":4,"extension":5,"links":6,"meta":61,"stem":62,"__hash__":63},"navigationMenu\u002Fnavigation.json","json",[7,52,57],{"nested":8,"label":9,"icon":10,"to":11,"children":12},true,"Docs","i-lucide-book-open","\u002Fdocs\u002Fgetting-started",[13,19,26,32,39,45],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},"Getting Started","i-lucide-rocket","An introduction to help you understand the core components.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fdocshub","Start Here",{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},"Auth H3 Client","i-lucide-key-round","\u002Fdocs\u002Fauth-h3client","Seamlessly enforce OAuth 2.0 authentication and session management integrated directly as the client of the IAM module.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth-h3client","Core",{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},"IAM","i-lucide-shield-check","\u002Fdocs\u002Fiam","Identity and Access Management featuring granular roles, permissions, and security policies.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth",{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},"Bot Detection","i-lucide-cpu","\u002Fdocs\u002Fbot-detection","Advanced behavioral analysis and request fingerprinting to stop malicious automated traffic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fbot-detector","Security",{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},"Shield Base","i-lucide-database-zap","\u002Fdocs\u002Fshield-base","CLI and programmatic toolkit for compiling offline-ready IP intelligence databases from BGP, GeoIP, Tor, FireHOL, and other public threat feeds.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fshield-base-cli",{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},"Utils","i-lucide-wrench","\u002Fdocs\u002Futils","A standard library of highly optimized helpers for formatting, validation, and core logic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Futils","Library",{"nested":53,"label":54,"icon":55,"to":56},false,"Blog","i-lucide-pen-line","\u002Fblog",{"nested":53,"label":58,"icon":59,"to":60},"Website","lucide:app-window-mac","https:\u002F\u002Friavzon.com",{},"navigation","gkaQ0xRGxSLrLyM3kttLe0oBwkrR1EBjlepF8LSbwF8",[65],{"title":9,"path":66,"stem":67,"children":68,"page":53},"\u002Fdocs","docs",[69],{"title":20,"path":22,"stem":70,"children":71},"docs\u002Fauth-h3client\u002Findex",[72,73,82,119,145,167,170,191,195],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":76},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[77,78],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":83,"path":84,"stem":85,"children":86},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[87,88,92,96,100,104,108,111,115],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":93,"path":94,"stem":95},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":97,"path":98,"stem":99},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":101,"path":102,"stem":103},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":105,"path":106,"stem":107},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":109,"stem":110},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":112,"path":113,"stem":114},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":116,"path":117,"stem":118},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":120,"path":121,"stem":122,"children":123},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[124,125,129,133,137,141],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":130,"path":131,"stem":132},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":134,"path":135,"stem":136},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":138,"path":139,"stem":140},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":142,"path":143,"stem":144},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":146,"path":147,"stem":148,"children":149},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[150,151,155,159,163],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":156,"path":157,"stem":158},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":160,"path":161,"stem":162},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":164,"path":165,"stem":166},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":168,"stem":169},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":171,"path":172,"stem":173,"children":174,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[175,179,183,187],{"title":176,"path":177,"stem":178},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":180,"path":181,"stem":182},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":184,"path":185,"stem":186},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":188,"path":189,"stem":190},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":192,"path":193,"stem":194},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":196,"path":197,"stem":198,"children":199},"API Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[200,201,205,209,213],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":206,"path":207,"stem":208},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":210,"path":211,"stem":212},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":214,"path":215,"stem":216},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",[218],{"title":9,"path":66,"stem":67,"children":219,"page":53},[220,268,386,391,569,636],{"title":20,"path":22,"stem":70,"children":221},[222,223,227,238,246,253,254,260,261],{"title":20,"path":22,"stem":70},{"title":14,"path":74,"stem":75,"children":224},[225,226],{"title":14,"path":74,"stem":75},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85,"children":228},[229,230,231,232,233,234,235,236,237],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99},{"title":101,"path":102,"stem":103},{"title":105,"path":106,"stem":107},{"title":33,"path":109,"stem":110},{"title":112,"path":113,"stem":114},{"title":116,"path":117,"stem":118},{"title":120,"path":121,"stem":122,"children":239},[240,241,242,243,244,245],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},{"title":130,"path":131,"stem":132},{"title":134,"path":135,"stem":136},{"title":138,"path":139,"stem":140},{"title":142,"path":143,"stem":144},{"title":146,"path":147,"stem":148,"children":247},[248,249,250,251,252],{"title":146,"path":147,"stem":148},{"title":152,"path":153,"stem":154},{"title":156,"path":157,"stem":158},{"title":160,"path":161,"stem":162},{"title":164,"path":165,"stem":166},{"title":38,"path":168,"stem":169},{"title":171,"path":172,"stem":173,"children":255,"page":53},[256,257,258,259],{"title":176,"path":177,"stem":178},{"title":180,"path":181,"stem":182},{"title":184,"path":185,"stem":186},{"title":188,"path":189,"stem":190},{"title":192,"path":193,"stem":194},{"title":196,"path":197,"stem":198,"children":262},[263,264,265,266,267],{"title":196,"path":197,"stem":198},{"title":202,"path":203,"stem":204},{"title":206,"path":207,"stem":208},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":269,"path":35,"stem":270,"children":271},"Bot Detector","docs\u002Fbot-detection\u002Findex",[272,273,276,280,284,303,377,380,383],{"title":269,"path":35,"stem":270},{"title":14,"path":274,"stem":275},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":277,"path":278,"stem":279},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":281,"path":282,"stem":283},"Data Sources","\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":171,"path":285,"stem":286,"children":287,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[288,292,296,299],{"title":289,"path":290,"stem":291},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":293,"path":294,"stem":295},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":116,"path":297,"stem":298},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":300,"path":301,"stem":302},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":304,"path":305,"stem":306,"children":307},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[308,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373],{"title":304,"path":305,"stem":306},{"title":310,"path":311,"stem":312},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":314,"path":315,"stem":316},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":318,"path":319,"stem":320},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":322,"path":323,"stem":324},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":326,"path":327,"stem":328},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":330,"path":331,"stem":332},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":334,"path":335,"stem":336},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":338,"path":339,"stem":340},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":342,"path":343,"stem":344},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":346,"path":347,"stem":348},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":350,"path":351,"stem":352},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":354,"path":355,"stem":356},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":358,"path":359,"stem":360},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":362,"path":363,"stem":364},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":366,"path":367,"stem":368},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":370,"path":371,"stem":372},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":374,"path":375,"stem":376},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":378,"stem":379},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":196,"path":381,"stem":382},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":192,"path":384,"stem":385},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":387,"path":11,"stem":388,"children":389},"Introduction","docs\u002Fgetting-started\u002Findex",[390],{"title":387,"path":11,"stem":388},{"title":27,"path":29,"stem":392,"children":393},"docs\u002Fiam\u002Findex",[394,395,398,533,536,552,555],{"title":27,"path":29,"stem":392},{"title":14,"path":396,"stem":397},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":83,"path":399,"stem":400,"children":401},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[402,403,407,411,415,419,423,427,431,435,439,443,446,450,454,458,462,465,469,473,476,480,483],{"title":83,"path":399,"stem":400},{"title":404,"path":405,"stem":406},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":408,"path":409,"stem":410},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":412,"path":413,"stem":414},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":416,"path":417,"stem":418},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":420,"path":421,"stem":422},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":424,"path":425,"stem":426},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":428,"path":429,"stem":430},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":432,"path":433,"stem":434},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":436,"path":437,"stem":438},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":440,"path":441,"stem":442},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":120,"path":444,"stem":445},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":447,"path":448,"stem":449},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":451,"path":452,"stem":453},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":455,"path":456,"stem":457},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":459,"path":460,"stem":461},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":116,"path":463,"stem":464},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":466,"path":467,"stem":468},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":470,"path":471,"stem":472},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":112,"path":474,"stem":475},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":477,"path":478,"stem":479},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":130,"path":481,"stem":482},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":484,"path":485,"stem":486,"children":487},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[488,489,493,497,527,530],{"title":484,"path":485,"stem":486},{"title":490,"path":491,"stem":492},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":494,"path":495,"stem":496},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":498,"path":499,"stem":500,"children":501},"Manage Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[502,503,507,511,515,519,523],{"title":498,"path":499,"stem":500},{"title":504,"path":505,"stem":506},"Privileges","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":508,"path":509,"stem":510},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":512,"path":513,"stem":514},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":516,"path":517,"stem":518},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":520,"path":521,"stem":522},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":524,"path":525,"stem":526},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":466,"path":528,"stem":529},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":531,"stem":532},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":534,"stem":535},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":171,"path":537,"stem":538,"children":539,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[540,544,548],{"title":541,"path":542,"stem":543},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":545,"path":546,"stem":547},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":549,"path":550,"stem":551},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":192,"path":553,"stem":554},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":556,"path":557,"stem":558,"children":559,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[560,563,566],{"title":196,"path":561,"stem":562},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":206,"path":564,"stem":565},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":202,"path":567,"stem":568},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":570,"children":571},"docs\u002Fshield-base\u002Findex",[572,573,576,580,621,625,629,633],{"title":40,"path":42,"stem":570},{"title":14,"path":574,"stem":575},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":577,"path":578,"stem":579},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":281,"path":581,"stem":582,"children":583},"\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[584,585,589,593,597,601,605,609,613,617],{"title":281,"path":581,"stem":582},{"title":586,"path":587,"stem":588},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":590,"path":591,"stem":592},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":594,"path":595,"stem":596},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":598,"path":599,"stem":600},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":602,"path":603,"stem":604},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":606,"path":607,"stem":608},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":610,"path":611,"stem":612},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":614,"path":615,"stem":616},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":618,"path":619,"stem":620},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":622,"path":623,"stem":624},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":626,"path":627,"stem":628},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":630,"path":631,"stem":632},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":196,"path":634,"stem":635},"\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",{"title":214,"path":48,"stem":637,"children":638},"docs\u002Futils\u002Findex",[639,640,657,690,787],{"title":214,"path":48,"stem":637},{"title":641,"path":642,"stem":643,"children":644,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[645,649,653],{"title":646,"path":647,"stem":648},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":650,"path":651,"stem":652},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":654,"path":655,"stem":656},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":658,"path":659,"stem":660,"children":661,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[662,666,670,674,678,682,686],{"title":663,"path":664,"stem":665},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":667,"path":668,"stem":669},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":671,"path":672,"stem":673},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":675,"path":676,"stem":677},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":679,"path":680,"stem":681},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":683,"path":684,"stem":685},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":687,"path":688,"stem":689},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":691,"path":692,"stem":693,"children":694,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755,759,763,767,771,775,779,783],{"title":696,"path":697,"stem":698},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":700,"path":701,"stem":702},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":704,"path":705,"stem":706},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":708,"path":709,"stem":710},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":712,"path":713,"stem":714},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":716,"path":717,"stem":718},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":720,"path":721,"stem":722},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":724,"path":725,"stem":726},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":728,"path":729,"stem":730},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":732,"path":733,"stem":734},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":736,"path":737,"stem":738},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":740,"path":741,"stem":742},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":744,"path":745,"stem":746},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":748,"path":749,"stem":750},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":752,"path":753,"stem":754},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":756,"path":757,"stem":758},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":760,"path":761,"stem":762},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":764,"path":765,"stem":766},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":768,"path":769,"stem":770},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":772,"path":773,"stem":774},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":776,"path":777,"stem":778},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":780,"path":781,"stem":782},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":784,"path":785,"stem":786},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":788,"path":789,"stem":790,"children":791},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[792,793,797,801,805,809,813,817,821,825],{"title":788,"path":789,"stem":790},{"title":794,"path":795,"stem":796},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":798,"path":799,"stem":800},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":802,"path":803,"stem":804},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":806,"path":807,"stem":808},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":810,"path":811,"stem":812},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":814,"path":815,"stem":816},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":818,"path":819,"stem":820},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":822,"path":823,"stem":824},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":826,"path":827,"stem":828},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"id":4,"extension":5,"links":830,"meta":841,"stem":62,"__hash__":63},[831,839,840],{"nested":8,"label":9,"icon":10,"to":11,"children":832},[833,834,835,836,837,838],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},{"nested":53,"label":54,"icon":55,"to":56},{"nested":53,"label":58,"icon":59,"to":60},{},{"id":843,"title":134,"body":844,"description":1717,"extension":1718,"icon":1719,"meta":1720,"module":1721,"navigation":8,"path":135,"rawbody":1722,"seo":1723,"stem":136,"__hash__":1724},"docs\u002Fdocs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change.md",{"type":845,"value":846,"toc":1708},"minimark",[847,851,859,862,867,873,1078,1090,1097,1175,1177,1181,1192,1227,1234,1262,1269,1280,1289,1291,1295,1326,1329,1343,1346,1461,1464,1467,1479,1481,1485,1492,1495,1515,1518,1522,1593,1595,1599,1610,1689,1698,1704],[848,849,850],"p",{},"The email change flow allows authenticated users to update their email address. It follows the same magic link pattern as the other MFA flows: the user initiates the change, verifies their identity through the magic link and code, and submits the new email.",[848,852,853,854,858],{},"All three routes are registered by ",[855,856,857],"code",{},"magicLinksRouter"," and require no custom server code.",[860,861],"hr",{},[863,864,866],"h2",{"id":865},"route-registration","Route registration",[848,868,869,870,872],{},"Call ",[855,871,857],{}," with your router or app instance during startup.",[874,875,876,993],"code-group",{},[877,878,884],"pre",{"className":879,"code":880,"filename":881,"language":882,"meta":883,"style":883},"language-ts shiki shiki-themes light-plus light-plus dracula","import { createRouter } from 'h3'\nimport { magicLinksRouter } from 'auth-h3client\u002Fv1'\n\nconst router = createRouter()\nmagicLinksRouter(router, 'api')\n","H3 v1","ts","",[855,885,886,920,940,946,968],{"__ignoreMap":883},[887,888,891,895,899,903,906,909,913,917],"span",{"class":889,"line":890},"line",1,[887,892,894],{"class":893},"sZ328","import",[887,896,898],{"class":897},"sDd4n"," { ",[887,900,902],{"class":901},"sjsA6","createRouter",[887,904,905],{"class":897}," } ",[887,907,908],{"class":893},"from",[887,910,912],{"class":911},"sFkSl"," '",[887,914,916],{"class":915},"sFB1V","h3",[887,918,919],{"class":911},"'\n",[887,921,923,925,927,929,931,933,935,938],{"class":889,"line":922},2,[887,924,894],{"class":893},[887,926,898],{"class":897},[887,928,857],{"class":901},[887,930,905],{"class":897},[887,932,908],{"class":893},[887,934,912],{"class":911},[887,936,937],{"class":915},"auth-h3client\u002Fv1",[887,939,919],{"class":911},[887,941,943],{"class":889,"line":942},3,[887,944,945],{"emptyLinePlaceholder":8},"\n",[887,947,949,953,957,961,965],{"class":889,"line":948},4,[887,950,952],{"class":951},"sl46w","const",[887,954,956],{"class":955},"s3JHE"," router",[887,958,960],{"class":959},"saOXh"," =",[887,962,964],{"class":963},"sHOzp"," createRouter",[887,966,967],{"class":897},"()\n",[887,969,971,973,976,979,982,985,988,990],{"class":889,"line":970},5,[887,972,857],{"class":963},[887,974,975],{"class":897},"(",[887,977,978],{"class":901},"router",[887,980,981],{"class":897},", ",[887,983,984],{"class":911},"'",[887,986,987],{"class":915},"api",[887,989,984],{"class":911},[887,991,992],{"class":897},")\n",[877,994,997],{"className":879,"code":995,"filename":996,"language":882,"meta":883,"style":883},"import { H3 } from 'h3'\nimport { magicLinksRouter } from 'auth-h3client\u002Fv2'\n\nconst app = new H3()\nmagicLinksRouter(app, 'api')\n","H3 v2",[855,998,999,1018,1037,1041,1059],{"__ignoreMap":883},[887,1000,1001,1003,1005,1008,1010,1012,1014,1016],{"class":889,"line":890},[887,1002,894],{"class":893},[887,1004,898],{"class":897},[887,1006,1007],{"class":901},"H3",[887,1009,905],{"class":897},[887,1011,908],{"class":893},[887,1013,912],{"class":911},[887,1015,916],{"class":915},[887,1017,919],{"class":911},[887,1019,1020,1022,1024,1026,1028,1030,1032,1035],{"class":889,"line":922},[887,1021,894],{"class":893},[887,1023,898],{"class":897},[887,1025,857],{"class":901},[887,1027,905],{"class":897},[887,1029,908],{"class":893},[887,1031,912],{"class":911},[887,1033,1034],{"class":915},"auth-h3client\u002Fv2",[887,1036,919],{"class":911},[887,1038,1039],{"class":889,"line":942},[887,1040,945],{"emptyLinePlaceholder":8},[887,1042,1043,1045,1048,1050,1054,1057],{"class":889,"line":948},[887,1044,952],{"class":951},[887,1046,1047],{"class":955}," app",[887,1049,960],{"class":959},[887,1051,1053],{"class":1052},"sakC6"," new",[887,1055,1056],{"class":963}," H3",[887,1058,967],{"class":897},[887,1060,1061,1063,1065,1068,1070,1072,1074,1076],{"class":889,"line":970},[887,1062,857],{"class":963},[887,1064,975],{"class":897},[887,1066,1067],{"class":901},"app",[887,1069,981],{"class":897},[887,1071,984],{"class":911},[887,1073,987],{"class":915},[887,1075,984],{"class":911},[887,1077,992],{"class":897},[848,1079,1080,1081,1084,1085,1089],{},"When using the Nuxt module, all magic link routes are registered automatically by ",[855,1082,1083],{},"defineAuthConfiguration"," in your Nitro plugin. See the ",[1086,1087,1088],"a",{"href":80},"Nuxt Module setup"," for details.",[848,1091,1092,1093,1096],{},"With the ",[855,1094,1095],{},"'api'"," prefix, the following routes are registered:",[1098,1099,1100,1119],"table",{},[1101,1102,1103],"thead",{},[1104,1105,1106,1110,1113,1116],"tr",{},[1107,1108,1109],"th",{},"Method",[1107,1111,1112],{},"Path",[1107,1114,1115],{},"Handler",[1107,1117,1118],{},"Purpose",[1120,1121,1122,1141,1159],"tbody",{},[1104,1123,1124,1128,1133,1138],{},[1125,1126,1127],"td",{},"POST",[1125,1129,1130],{},[855,1131,1132],{},"\u002Fapi\u002Fauth\u002Fchange-email",[1125,1134,1135],{},[855,1136,1137],{},"initEmailChangeFlow",[1125,1139,1140],{},"Sends the verification email to the current address",[1104,1142,1143,1146,1151,1156],{},[1125,1144,1145],{},"GET",[1125,1147,1148],{},[855,1149,1150],{},"\u002Fapi\u002Fauth\u002Fupdate-email",[1125,1152,1153],{},[855,1154,1155],{},"changeEmailGetAPI",[1125,1157,1158],{},"Validates the magic link",[1104,1160,1161,1163,1167,1172],{},[1125,1162,1127],{},[1125,1164,1165],{},[855,1166,1150],{},[1125,1168,1169],{},[855,1170,1171],{},"updateNewEmail",[1125,1173,1174],{},"Submits the new email with the verification code",[860,1176],{},[863,1178,1180],{"id":1179},"step-1-initiate-the-change","Step 1: initiate the change",[848,1182,1183,1184,1187,1188,1191],{},"The user requests an email change by calling ",[855,1185,1186],{},"POST \u002Fapi\u002Fauth\u002Fchange-email",". The request requires valid session cookies and a CSRF token. The body must be ",[855,1189,1190],{},"Content-Type: application\u002Fjson"," with a single field:",[877,1193,1196],{"className":1194,"code":1195,"language":5,"meta":883,"style":883},"language-json shiki shiki-themes light-plus light-plus dracula","{ \"init\": \"1\" }\n",[855,1197,1198],{"__ignoreMap":883},[887,1199,1200,1203,1207,1211,1213,1216,1219,1222,1224],{"class":889,"line":890},[887,1201,1202],{"class":897},"{ ",[887,1204,1206],{"class":1205},"saJyd","\"",[887,1208,1210],{"class":1209},"s_W10","init",[887,1212,1206],{"class":1205},[887,1214,1215],{"class":959},":",[887,1217,1218],{"class":911}," \"",[887,1220,1221],{"class":915},"1",[887,1223,1206],{"class":911},[887,1225,1226],{"class":897}," }\n",[848,1228,1229,1230,1233],{},"The gateway validates the session, generates a 128-byte random token, and calls the IAM service via ",[855,1231,1232],{},"askForMfaFlow",". The IAM service:",[1235,1236,1237,1241,1248,1251,1259],"ol",{},[1238,1239,1240],"li",{},"Validates the user's session.",[1238,1242,1243,1244,1247],{},"Generates a magic link JWT with ",[855,1245,1246],{},"purpose: \"change_email\""," and a 20-minute TTL.",[1238,1249,1250],{},"Generates a 7-digit verification code.",[1238,1252,1253,1254,1258],{},"Sends both to the user's ",[1255,1256,1257],"strong",{},"current"," email address.",[1238,1260,1261],{},"Returns success.",[848,1263,1264,1265,1268],{},"The gateway returns ",[855,1266,1267],{},"{ ok: true, data: \"Please check your email to complete the action.\" }"," to the client. The frontend should show a \"check your email\" message.",[848,1270,1271,1272,1275,1276,1279],{},"If the session has anomalies, the IAM may require the user to complete the ",[1086,1273,1274],{"href":127},"built-in MFA flow"," first. In that case the gateway returns ",[855,1277,1278],{},"{ ok: false, code: \"MFA_REQUIRED\", reason: \"...\" }",".",[1281,1282,1283],"note",{},[848,1284,1285,1286,1288],{},"If the IAM service detects anomalies on the current session, it may return HTTP 202 requiring the user to complete the standard ",[1086,1287,1274],{"href":127}," before the email change can proceed.",[860,1290],{},[863,1292,1294],{"id":1293},"step-2-verify-the-link","Step 2: verify the link",[848,1296,1297,1298,1302,1303,981,1306,981,1309,981,1312,1315,1316,1318,1319,1322,1323,1325],{},"When the user clicks the magic link in their email, the ",[1086,1299,1301],{"href":1300},"\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side#bounce-route","bounce route"," redirects them to your frontend verification page with query parameters (",[855,1304,1305],{},"token",[855,1307,1308],{},"random",[855,1310,1311],{},"reason",[855,1313,1314],{},"visitor","). The frontend code then needs to detect that the ",[855,1317,1311],{}," is ",[855,1320,1321],{},"\"change_email\""," and sends a GET request to ",[855,1324,1150],{}," with those parameters, and all cookies identifiers.",[848,1327,1328],{},"The handler:",[1235,1330,1331,1337,1340],{},[1238,1332,1333,1334,1279],{},"Sets ",[855,1335,1336],{},"Cache-Control: no-store",[1238,1338,1339],{},"Issues a CSRF cookie for the subsequent POST.",[1238,1341,1342],{},"Validates the magic link with the IAM service.",[848,1344,1345],{},"On success, the handler returns the verification result from the IAM service:",[877,1347,1349],{"className":1194,"code":1348,"language":5,"meta":883,"style":883},"{\n  \"ok\": true,\n  \"date\": \"2026-04-12T10:00:00.000Z\",\n  \"data\": {\n    \"reason\": \"change_email\",\n    \"link\": \"Custom MFA\"\n  }\n}\n",[855,1350,1351,1356,1375,1395,1409,1429,1449,1455],{"__ignoreMap":883},[887,1352,1353],{"class":889,"line":890},[887,1354,1355],{"class":897},"{\n",[887,1357,1358,1361,1364,1366,1368,1372],{"class":889,"line":922},[887,1359,1360],{"class":1205},"  \"",[887,1362,1363],{"class":1209},"ok",[887,1365,1206],{"class":1205},[887,1367,1215],{"class":959},[887,1369,1371],{"class":1370},"sjR7W"," true",[887,1373,1374],{"class":897},",\n",[887,1376,1377,1379,1382,1384,1386,1388,1391,1393],{"class":889,"line":942},[887,1378,1360],{"class":1205},[887,1380,1381],{"class":1209},"date",[887,1383,1206],{"class":1205},[887,1385,1215],{"class":959},[887,1387,1218],{"class":911},[887,1389,1390],{"class":915},"2026-04-12T10:00:00.000Z",[887,1392,1206],{"class":911},[887,1394,1374],{"class":897},[887,1396,1397,1399,1402,1404,1406],{"class":889,"line":948},[887,1398,1360],{"class":1205},[887,1400,1401],{"class":1209},"data",[887,1403,1206],{"class":1205},[887,1405,1215],{"class":959},[887,1407,1408],{"class":897}," {\n",[887,1410,1411,1414,1416,1418,1420,1422,1425,1427],{"class":889,"line":970},[887,1412,1413],{"class":1205},"    \"",[887,1415,1311],{"class":1209},[887,1417,1206],{"class":1205},[887,1419,1215],{"class":959},[887,1421,1218],{"class":911},[887,1423,1424],{"class":915},"change_email",[887,1426,1206],{"class":911},[887,1428,1374],{"class":897},[887,1430,1432,1434,1437,1439,1441,1443,1446],{"class":889,"line":1431},6,[887,1433,1413],{"class":1205},[887,1435,1436],{"class":1209},"link",[887,1438,1206],{"class":1205},[887,1440,1215],{"class":959},[887,1442,1218],{"class":911},[887,1444,1445],{"class":915},"Custom MFA",[887,1447,1448],{"class":911},"\"\n",[887,1450,1452],{"class":889,"line":1451},7,[887,1453,1454],{"class":897},"  }\n",[887,1456,1458],{"class":889,"line":1457},8,[887,1459,1460],{"class":897},"}\n",[848,1462,1463],{},"The frontend needs to renders the email change form with fields for the 7-digit code, the current email, and the new email address.",[848,1465,1466],{},"If the link is invalid or expired, the handler returns a 404 error response.",[848,1468,1469,1470,1472,1473,1322,1476,1478],{},"The ",[855,1471,156],{}," composable detects ",[855,1474,1475],{},"reason: \"change_email\"",[855,1477,1150],{}," automatically.",[860,1480],{},[863,1482,1484],{"id":1483},"step-3-submit-the-new-email","Step 3: submit the new email",[848,1486,1487,1488,1491],{},"The user enters the 7-digit code from their email, their current email, the new email address, and their password. The frontend submits all of these to ",[855,1489,1490],{},"POST \u002Fapi\u002Fauth\u002Fupdate-email"," with the magic link query parameters.",[848,1493,1494],{},"The handler proxies the request to the IAM service, which:",[1235,1496,1497,1500,1503,1506,1509,1512],{},[1238,1498,1499],{},"Verifies the magic link and the 7-digit code.",[1238,1501,1502],{},"Validates the new email (MX lookup, disposable email check).",[1238,1504,1505],{},"Confirms the password.",[1238,1507,1508],{},"Updates the email address in the database.",[1238,1510,1511],{},"Rotates the session tokens.",[1238,1513,1514],{},"Returns the new credentials.",[848,1516,1517],{},"The gateway applies the token rotation and returns success to the client.",[916,1519,1521],{"id":1520},"error-responses","Error responses",[1098,1523,1524,1537],{},[1101,1525,1526],{},[1104,1527,1528,1531,1534],{},[1107,1529,1530],{},"IAM status",[1107,1532,1533],{},"Gateway response",[1107,1535,1536],{},"Meaning",[1120,1538,1539,1549,1559,1569,1583],{},[1104,1540,1541,1544,1546],{},[1125,1542,1543],{},"200",[1125,1545,1543],{},[1125,1547,1548],{},"Email updated, tokens rotated",[1104,1550,1551,1554,1556],{},[1125,1552,1553],{},"400",[1125,1555,1553],{},[1125,1557,1558],{},"Invalid code, validation error, or email already in use",[1104,1560,1561,1564,1566],{},[1125,1562,1563],{},"401",[1125,1565,1563],{},[1125,1567,1568],{},"Invalid credentials",[1104,1570,1571,1574,1580],{},[1125,1572,1573],{},"429",[1125,1575,1576,1577],{},"429 with ",[855,1578,1579],{},"Retry-After",[1125,1581,1582],{},"Rate limited",[1104,1584,1585,1588,1590],{},[1125,1586,1587],{},"500",[1125,1589,1587],{},[1125,1591,1592],{},"Server error",[860,1594],{},[863,1596,1598],{"id":1597},"client-side-integration","Client-side integration",[848,1600,1469,1601,1603,1604,1606,1607,1609],{},[855,1602,156],{}," composable routes ",[855,1605,1475],{}," to ",[855,1608,1150],{}," automatically. Your verification page checks the returned reason and renders the email change form:",[877,1611,1615],{"className":1612,"code":1613,"language":1614,"meta":883,"style":883},"language-vue shiki shiki-themes light-plus light-plus dracula","\u003Cscript setup lang=\"ts\">\nconst data = await useMagicLink()\n\n\u002F\u002F data.reason === 'change_email'\n\u002F\u002F Render email change form with: code, current email, new email, password\n\u003C\u002Fscript>\n","vue",[855,1616,1617,1648,1665,1669,1675,1680],{"__ignoreMap":883},[887,1618,1619,1623,1627,1631,1634,1637,1640,1643,1645],{"class":889,"line":890},[887,1620,1622],{"class":1621},"spX-7","\u003C",[887,1624,1626],{"class":1625},"scd-l","script",[887,1628,1630],{"class":1629},"sAY9V"," setup",[887,1632,1633],{"class":1629}," lang",[887,1635,1636],{"class":959},"=",[887,1638,1206],{"class":1639},"seisi",[887,1641,882],{"class":1642},"sKKzR",[887,1644,1206],{"class":1639},[887,1646,1647],{"class":1621},">\n",[887,1649,1650,1652,1655,1657,1660,1663],{"class":889,"line":922},[887,1651,952],{"class":951},[887,1653,1654],{"class":955}," data",[887,1656,960],{"class":959},[887,1658,1659],{"class":893}," await",[887,1661,1662],{"class":963}," useMagicLink",[887,1664,967],{"class":897},[887,1666,1667],{"class":889,"line":942},[887,1668,945],{"emptyLinePlaceholder":8},[887,1670,1671],{"class":889,"line":948},[887,1672,1674],{"class":1673},"sghk6","\u002F\u002F data.reason === 'change_email'\n",[887,1676,1677],{"class":889,"line":970},[887,1678,1679],{"class":1673},"\u002F\u002F Render email change form with: code, current email, new email, password\n",[887,1681,1682,1685,1687],{"class":889,"line":1431},[887,1683,1684],{"class":1621},"\u003C\u002F",[887,1686,1626],{"class":1625},[887,1688,1647],{"class":1621},[848,1690,1691,1692,1694,1695,1697],{},"The form submits to ",[855,1693,1490],{}," using ",[855,1696,160],{},", passing the original query parameters as query string values.",[848,1699,1700,1701,1703],{},"See ",[1086,1702,142],{"href":143}," for the full page implementation pattern.",[1705,1706,1707],"style",{},"html pre.shiki code .sZ328, html code.shiki .sZ328{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#FF79C6}html pre.shiki code .sDd4n, html code.shiki .sDd4n{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sjsA6, html code.shiki .sjsA6{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sFB1V, html code.shiki .sFB1V{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#F1FA8C}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .s3JHE, html code.shiki .s3JHE{--shiki-light:#0070C1;--shiki-default:#0070C1;--shiki-dark:#F8F8F2}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .sHOzp, html code.shiki .sHOzp{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#50FA7B}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 .sakC6, html code.shiki .sakC6{--shiki-light:#0000FF;--shiki-light-font-weight:inherit;--shiki-default:#0000FF;--shiki-default-font-weight:inherit;--shiki-dark:#FF79C6;--shiki-dark-font-weight:bold}html pre.shiki code .saJyd, html code.shiki .saJyd{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FE}html pre.shiki code .s_W10, html code.shiki .s_W10{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FD}html pre.shiki code .sjR7W, html code.shiki .sjR7W{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#BD93F9}html pre.shiki code .spX-7, html code.shiki .spX-7{--shiki-light:#800000;--shiki-default:#800000;--shiki-dark:#F8F8F2}html pre.shiki code .scd-l, html code.shiki .scd-l{--shiki-light:#800000;--shiki-default:#800000;--shiki-dark:#FF79C6}html pre.shiki code .sAY9V, html code.shiki .sAY9V{--shiki-light:#E50000;--shiki-light-font-style:inherit;--shiki-default:#E50000;--shiki-default-font-style:inherit;--shiki-dark:#50FA7B;--shiki-dark-font-style:italic}html pre.shiki code .seisi, html code.shiki .seisi{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#E9F284}html pre.shiki code .sKKzR, html code.shiki .sKKzR{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#F1FA8C}html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}",{"title":883,"searchDepth":922,"depth":922,"links":1709},[1710,1711,1712,1713,1716],{"id":865,"depth":922,"text":866},{"id":1179,"depth":922,"text":1180},{"id":1293,"depth":922,"text":1294},{"id":1483,"depth":922,"text":1484,"children":1714},[1715],{"id":1520,"depth":942,"text":1521},{"id":1597,"depth":922,"text":1598},"The three-step email change flow that verifies the user's identity through a magic link before allowing them to update their email address.","md","i-lucide-mail",{},null,"---\ntitle: Email Change\ndescription: The three-step email change flow that verifies the user's identity through a magic link before allowing them to update their email address.\nicon: i-lucide-mail\n---\n\nThe email change flow allows authenticated users to update their email address. It follows the same magic link pattern as the other MFA flows: the user initiates the change, verifies their identity through the magic link and code, and submits the new email.\n\nAll three routes are registered by `magicLinksRouter` and require no custom server code.\n\n---\n\n## Route registration\n\nCall `magicLinksRouter` with your router or app instance during startup.\n\n::code-group\n\n```ts [H3 v1]\nimport { createRouter } from 'h3'\nimport { magicLinksRouter } from 'auth-h3client\u002Fv1'\n\nconst router = createRouter()\nmagicLinksRouter(router, 'api')\n```\n\n```ts [H3 v2]\nimport { H3 } from 'h3'\nimport { magicLinksRouter } from 'auth-h3client\u002Fv2'\n\nconst app = new H3()\nmagicLinksRouter(app, 'api')\n```\n\n::\n\nWhen using the Nuxt module, all magic link routes are registered automatically by `defineAuthConfiguration` in your Nitro plugin. See the [Nuxt Module setup](\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt) for details.\n\nWith the `'api'` prefix, the following routes are registered:\n\n| Method | Path | Handler | Purpose |\n|---|---|---|---|\n| POST | `\u002Fapi\u002Fauth\u002Fchange-email` | `initEmailChangeFlow` | Sends the verification email to the current address |\n| GET | `\u002Fapi\u002Fauth\u002Fupdate-email` | `changeEmailGetAPI` | Validates the magic link |\n| POST | `\u002Fapi\u002Fauth\u002Fupdate-email` | `updateNewEmail` | Submits the new email with the verification code |\n\n---\n\n## Step 1: initiate the change\n\nThe user requests an email change by calling `POST \u002Fapi\u002Fauth\u002Fchange-email`. The request requires valid session cookies and a CSRF token. The body must be `Content-Type: application\u002Fjson` with a single field:\n\n```json\n{ \"init\": \"1\" }\n```\n\nThe gateway validates the session, generates a 128-byte random token, and calls the IAM service via `askForMfaFlow`. The IAM service:\n\n1. Validates the user's session.\n2. Generates a magic link JWT with `purpose: \"change_email\"` and a 20-minute TTL.\n3. Generates a 7-digit verification code.\n4. Sends both to the user's **current** email address.\n5. Returns success.\n\nThe gateway returns `{ ok: true, data: \"Please check your email to complete the action.\" }` to the client. The frontend should show a \"check your email\" message.\n\nIf the session has anomalies, the IAM may require the user to complete the [built-in MFA flow](\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow) first. In that case the gateway returns `{ ok: false, code: \"MFA_REQUIRED\", reason: \"...\" }`.\n\n::note\nIf the IAM service detects anomalies on the current session, it may return HTTP 202 requiring the user to complete the standard [built-in MFA flow](\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow) before the email change can proceed.\n::\n\n---\n\n## Step 2: verify the link\n\nWhen the user clicks the magic link in their email, the [bounce route](\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side#bounce-route) redirects them to your frontend verification page with query parameters (`token`, `random`, `reason`, `visitor`). The frontend code then needs to detect that the `reason` is `\"change_email\"` and sends a GET request to `\u002Fapi\u002Fauth\u002Fupdate-email` with those parameters, and all cookies identifiers.\n\n\nThe handler:\n\n1. Sets `Cache-Control: no-store`.\n2. Issues a CSRF cookie for the subsequent POST.\n3. Validates the magic link with the IAM service.\n\nOn success, the handler returns the verification result from the IAM service:\n\n```json\n{\n  \"ok\": true,\n  \"date\": \"2026-04-12T10:00:00.000Z\",\n  \"data\": {\n    \"reason\": \"change_email\",\n    \"link\": \"Custom MFA\"\n  }\n}\n```\n\nThe frontend needs to renders the email change form with fields for the 7-digit code, the current email, and the new email address.\n\nIf the link is invalid or expired, the handler returns a 404 error response.\n\nThe `useMagicLink` composable detects `reason: \"change_email\"` and sends a GET request to `\u002Fapi\u002Fauth\u002Fupdate-email` automatically.\n\n---\n\n## Step 3: submit the new email\n\nThe user enters the 7-digit code from their email, their current email, the new email address, and their password. The frontend submits all of these to `POST \u002Fapi\u002Fauth\u002Fupdate-email` with the magic link query parameters.\n\nThe handler proxies the request to the IAM service, which:\n\n1. Verifies the magic link and the 7-digit code.\n2. Validates the new email (MX lookup, disposable email check).\n3. Confirms the password.\n4. Updates the email address in the database.\n5. Rotates the session tokens.\n6. Returns the new credentials.\n\nThe gateway applies the token rotation and returns success to the client.\n\n### Error responses\n\n| IAM status | Gateway response | Meaning |\n|---|---|---|\n| 200 | 200 | Email updated, tokens rotated |\n| 400 | 400 | Invalid code, validation error, or email already in use |\n| 401 | 401 | Invalid credentials |\n| 429 | 429 with `Retry-After` | Rate limited |\n| 500 | 500 | Server error |\n\n---\n\n## Client-side integration\n\nThe `useMagicLink` composable routes `reason: \"change_email\"` to `\u002Fapi\u002Fauth\u002Fupdate-email` automatically. Your verification page checks the returned reason and renders the email change form:\n\n```vue\n\u003Cscript setup lang=\"ts\">\nconst data = await useMagicLink()\n\n\u002F\u002F data.reason === 'change_email'\n\u002F\u002F Render email change form with: code, current email, new email, password\n\u003C\u002Fscript>\n```\n\nThe form submits to `POST \u002Fapi\u002Fauth\u002Fupdate-email` using `executeRequest`, passing the original query parameters as query string values.\n\nSee [Client-Side MFA](\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side) for the full page implementation pattern.\n",{"title":134,"description":1717},"MtIB4WVcfuLx7Gt5PZUL6JISGvJwW2IQ9uigOJfuqEw",[1726,1727],{"title":130,"path":131,"stem":132,"children":-1},{"title":138,"path":139,"stem":140,"children":-1},{"id":843,"title":134,"body":1729,"description":1717,"extension":1718,"icon":1719,"meta":2352,"module":1721,"navigation":8,"path":135,"rawbody":1722,"seo":2353,"stem":136,"__hash__":1724},{"type":845,"value":1730,"toc":2343},[1731,1733,1737,1739,1741,1745,1897,1903,1907,1965,1967,1969,1975,1999,2003,2019,2023,2029,2035,2037,2039,2057,2059,2069,2071,2165,2167,2169,2177,2179,2181,2185,2187,2201,2203,2205,2261,2263,2265,2273,2331,2337,2341],[848,1732,850],{},[848,1734,853,1735,858],{},[855,1736,857],{},[860,1738],{},[863,1740,866],{"id":865},[848,1742,869,1743,872],{},[855,1744,857],{},[874,1746,1747,1821],{},[877,1748,1749],{"className":879,"code":880,"filename":881,"language":882,"meta":883,"style":883},[855,1750,1751,1769,1787,1791,1803],{"__ignoreMap":883},[887,1752,1753,1755,1757,1759,1761,1763,1765,1767],{"class":889,"line":890},[887,1754,894],{"class":893},[887,1756,898],{"class":897},[887,1758,902],{"class":901},[887,1760,905],{"class":897},[887,1762,908],{"class":893},[887,1764,912],{"class":911},[887,1766,916],{"class":915},[887,1768,919],{"class":911},[887,1770,1771,1773,1775,1777,1779,1781,1783,1785],{"class":889,"line":922},[887,1772,894],{"class":893},[887,1774,898],{"class":897},[887,1776,857],{"class":901},[887,1778,905],{"class":897},[887,1780,908],{"class":893},[887,1782,912],{"class":911},[887,1784,937],{"class":915},[887,1786,919],{"class":911},[887,1788,1789],{"class":889,"line":942},[887,1790,945],{"emptyLinePlaceholder":8},[887,1792,1793,1795,1797,1799,1801],{"class":889,"line":948},[887,1794,952],{"class":951},[887,1796,956],{"class":955},[887,1798,960],{"class":959},[887,1800,964],{"class":963},[887,1802,967],{"class":897},[887,1804,1805,1807,1809,1811,1813,1815,1817,1819],{"class":889,"line":970},[887,1806,857],{"class":963},[887,1808,975],{"class":897},[887,1810,978],{"class":901},[887,1812,981],{"class":897},[887,1814,984],{"class":911},[887,1816,987],{"class":915},[887,1818,984],{"class":911},[887,1820,992],{"class":897},[877,1822,1823],{"className":879,"code":995,"filename":996,"language":882,"meta":883,"style":883},[855,1824,1825,1843,1861,1865,1879],{"__ignoreMap":883},[887,1826,1827,1829,1831,1833,1835,1837,1839,1841],{"class":889,"line":890},[887,1828,894],{"class":893},[887,1830,898],{"class":897},[887,1832,1007],{"class":901},[887,1834,905],{"class":897},[887,1836,908],{"class":893},[887,1838,912],{"class":911},[887,1840,916],{"class":915},[887,1842,919],{"class":911},[887,1844,1845,1847,1849,1851,1853,1855,1857,1859],{"class":889,"line":922},[887,1846,894],{"class":893},[887,1848,898],{"class":897},[887,1850,857],{"class":901},[887,1852,905],{"class":897},[887,1854,908],{"class":893},[887,1856,912],{"class":911},[887,1858,1034],{"class":915},[887,1860,919],{"class":911},[887,1862,1863],{"class":889,"line":942},[887,1864,945],{"emptyLinePlaceholder":8},[887,1866,1867,1869,1871,1873,1875,1877],{"class":889,"line":948},[887,1868,952],{"class":951},[887,1870,1047],{"class":955},[887,1872,960],{"class":959},[887,1874,1053],{"class":1052},[887,1876,1056],{"class":963},[887,1878,967],{"class":897},[887,1880,1881,1883,1885,1887,1889,1891,1893,1895],{"class":889,"line":970},[887,1882,857],{"class":963},[887,1884,975],{"class":897},[887,1886,1067],{"class":901},[887,1888,981],{"class":897},[887,1890,984],{"class":911},[887,1892,987],{"class":915},[887,1894,984],{"class":911},[887,1896,992],{"class":897},[848,1898,1080,1899,1084,1901,1089],{},[855,1900,1083],{},[1086,1902,1088],{"href":80},[848,1904,1092,1905,1096],{},[855,1906,1095],{},[1098,1908,1909,1921],{},[1101,1910,1911],{},[1104,1912,1913,1915,1917,1919],{},[1107,1914,1109],{},[1107,1916,1112],{},[1107,1918,1115],{},[1107,1920,1118],{},[1120,1922,1923,1937,1951],{},[1104,1924,1925,1927,1931,1935],{},[1125,1926,1127],{},[1125,1928,1929],{},[855,1930,1132],{},[1125,1932,1933],{},[855,1934,1137],{},[1125,1936,1140],{},[1104,1938,1939,1941,1945,1949],{},[1125,1940,1145],{},[1125,1942,1943],{},[855,1944,1150],{},[1125,1946,1947],{},[855,1948,1155],{},[1125,1950,1158],{},[1104,1952,1953,1955,1959,1963],{},[1125,1954,1127],{},[1125,1956,1957],{},[855,1958,1150],{},[1125,1960,1961],{},[855,1962,1171],{},[1125,1964,1174],{},[860,1966],{},[863,1968,1180],{"id":1179},[848,1970,1183,1971,1187,1973,1191],{},[855,1972,1186],{},[855,1974,1190],{},[877,1976,1977],{"className":1194,"code":1195,"language":5,"meta":883,"style":883},[855,1978,1979],{"__ignoreMap":883},[887,1980,1981,1983,1985,1987,1989,1991,1993,1995,1997],{"class":889,"line":890},[887,1982,1202],{"class":897},[887,1984,1206],{"class":1205},[887,1986,1210],{"class":1209},[887,1988,1206],{"class":1205},[887,1990,1215],{"class":959},[887,1992,1218],{"class":911},[887,1994,1221],{"class":915},[887,1996,1206],{"class":911},[887,1998,1226],{"class":897},[848,2000,1229,2001,1233],{},[855,2002,1232],{},[1235,2004,2005,2007,2011,2013,2017],{},[1238,2006,1240],{},[1238,2008,1243,2009,1247],{},[855,2010,1246],{},[1238,2012,1250],{},[1238,2014,1253,2015,1258],{},[1255,2016,1257],{},[1238,2018,1261],{},[848,2020,1264,2021,1268],{},[855,2022,1267],{},[848,2024,1271,2025,1275,2027,1279],{},[1086,2026,1274],{"href":127},[855,2028,1278],{},[1281,2030,2031],{},[848,2032,1285,2033,1288],{},[1086,2034,1274],{"href":127},[860,2036],{},[863,2038,1294],{"id":1293},[848,2040,1297,2041,1302,2043,981,2045,981,2047,981,2049,1315,2051,1318,2053,1322,2055,1325],{},[1086,2042,1301],{"href":1300},[855,2044,1305],{},[855,2046,1308],{},[855,2048,1311],{},[855,2050,1314],{},[855,2052,1311],{},[855,2054,1321],{},[855,2056,1150],{},[848,2058,1328],{},[1235,2060,2061,2065,2067],{},[1238,2062,1333,2063,1279],{},[855,2064,1336],{},[1238,2066,1339],{},[1238,2068,1342],{},[848,2070,1345],{},[877,2072,2073],{"className":1194,"code":1348,"language":5,"meta":883,"style":883},[855,2074,2075,2079,2093,2111,2123,2141,2157,2161],{"__ignoreMap":883},[887,2076,2077],{"class":889,"line":890},[887,2078,1355],{"class":897},[887,2080,2081,2083,2085,2087,2089,2091],{"class":889,"line":922},[887,2082,1360],{"class":1205},[887,2084,1363],{"class":1209},[887,2086,1206],{"class":1205},[887,2088,1215],{"class":959},[887,2090,1371],{"class":1370},[887,2092,1374],{"class":897},[887,2094,2095,2097,2099,2101,2103,2105,2107,2109],{"class":889,"line":942},[887,2096,1360],{"class":1205},[887,2098,1381],{"class":1209},[887,2100,1206],{"class":1205},[887,2102,1215],{"class":959},[887,2104,1218],{"class":911},[887,2106,1390],{"class":915},[887,2108,1206],{"class":911},[887,2110,1374],{"class":897},[887,2112,2113,2115,2117,2119,2121],{"class":889,"line":948},[887,2114,1360],{"class":1205},[887,2116,1401],{"class":1209},[887,2118,1206],{"class":1205},[887,2120,1215],{"class":959},[887,2122,1408],{"class":897},[887,2124,2125,2127,2129,2131,2133,2135,2137,2139],{"class":889,"line":970},[887,2126,1413],{"class":1205},[887,2128,1311],{"class":1209},[887,2130,1206],{"class":1205},[887,2132,1215],{"class":959},[887,2134,1218],{"class":911},[887,2136,1424],{"class":915},[887,2138,1206],{"class":911},[887,2140,1374],{"class":897},[887,2142,2143,2145,2147,2149,2151,2153,2155],{"class":889,"line":1431},[887,2144,1413],{"class":1205},[887,2146,1436],{"class":1209},[887,2148,1206],{"class":1205},[887,2150,1215],{"class":959},[887,2152,1218],{"class":911},[887,2154,1445],{"class":915},[887,2156,1448],{"class":911},[887,2158,2159],{"class":889,"line":1451},[887,2160,1454],{"class":897},[887,2162,2163],{"class":889,"line":1457},[887,2164,1460],{"class":897},[848,2166,1463],{},[848,2168,1466],{},[848,2170,1469,2171,1472,2173,1322,2175,1478],{},[855,2172,156],{},[855,2174,1475],{},[855,2176,1150],{},[860,2178],{},[863,2180,1484],{"id":1483},[848,2182,1487,2183,1491],{},[855,2184,1490],{},[848,2186,1494],{},[1235,2188,2189,2191,2193,2195,2197,2199],{},[1238,2190,1499],{},[1238,2192,1502],{},[1238,2194,1505],{},[1238,2196,1508],{},[1238,2198,1511],{},[1238,2200,1514],{},[848,2202,1517],{},[916,2204,1521],{"id":1520},[1098,2206,2207,2217],{},[1101,2208,2209],{},[1104,2210,2211,2213,2215],{},[1107,2212,1530],{},[1107,2214,1533],{},[1107,2216,1536],{},[1120,2218,2219,2227,2235,2243,2253],{},[1104,2220,2221,2223,2225],{},[1125,2222,1543],{},[1125,2224,1543],{},[1125,2226,1548],{},[1104,2228,2229,2231,2233],{},[1125,2230,1553],{},[1125,2232,1553],{},[1125,2234,1558],{},[1104,2236,2237,2239,2241],{},[1125,2238,1563],{},[1125,2240,1563],{},[1125,2242,1568],{},[1104,2244,2245,2247,2251],{},[1125,2246,1573],{},[1125,2248,1576,2249],{},[855,2250,1579],{},[1125,2252,1582],{},[1104,2254,2255,2257,2259],{},[1125,2256,1587],{},[1125,2258,1587],{},[1125,2260,1592],{},[860,2262],{},[863,2264,1598],{"id":1597},[848,2266,1469,2267,1603,2269,1606,2271,1609],{},[855,2268,156],{},[855,2270,1475],{},[855,2272,1150],{},[877,2274,2275],{"className":1612,"code":1613,"language":1614,"meta":883,"style":883},[855,2276,2277,2297,2311,2315,2319,2323],{"__ignoreMap":883},[887,2278,2279,2281,2283,2285,2287,2289,2291,2293,2295],{"class":889,"line":890},[887,2280,1622],{"class":1621},[887,2282,1626],{"class":1625},[887,2284,1630],{"class":1629},[887,2286,1633],{"class":1629},[887,2288,1636],{"class":959},[887,2290,1206],{"class":1639},[887,2292,882],{"class":1642},[887,2294,1206],{"class":1639},[887,2296,1647],{"class":1621},[887,2298,2299,2301,2303,2305,2307,2309],{"class":889,"line":922},[887,2300,952],{"class":951},[887,2302,1654],{"class":955},[887,2304,960],{"class":959},[887,2306,1659],{"class":893},[887,2308,1662],{"class":963},[887,2310,967],{"class":897},[887,2312,2313],{"class":889,"line":942},[887,2314,945],{"emptyLinePlaceholder":8},[887,2316,2317],{"class":889,"line":948},[887,2318,1674],{"class":1673},[887,2320,2321],{"class":889,"line":970},[887,2322,1679],{"class":1673},[887,2324,2325,2327,2329],{"class":889,"line":1431},[887,2326,1684],{"class":1621},[887,2328,1626],{"class":1625},[887,2330,1647],{"class":1621},[848,2332,1691,2333,1694,2335,1697],{},[855,2334,1490],{},[855,2336,160],{},[848,2338,1700,2339,1703],{},[1086,2340,142],{"href":143},[1705,2342,1707],{},{"title":883,"searchDepth":922,"depth":922,"links":2344},[2345,2346,2347,2348,2351],{"id":865,"depth":922,"text":866},{"id":1179,"depth":922,"text":1180},{"id":1293,"depth":922,"text":1294},{"id":1483,"depth":922,"text":1484,"children":2349},[2350],{"id":1520,"depth":942,"text":1521},{"id":1597,"depth":922,"text":1598},{},{"title":134,"description":1717},1780436291743]