[{"data":1,"prerenderedAt":1121},["ShallowReactive",2],{"navigation":3,"\u002Fcomposables\u002Fcomposition":250,"\u002Fcomposables\u002Fcomposition-surround":1116},[4,43,120,143,219],{"title":5,"path":6,"stem":7,"children":8,"icon":42},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22,27,32,37],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Install AuthEndpoints","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-play",{"title":23,"path":24,"stem":25,"icon":26},"Pick your setup","\u002Fgetting-started\u002Fchoose-a-sign-in-stack","1.getting-started\u002F4.choose-a-sign-in-stack","i-lucide-signpost",{"title":28,"path":29,"stem":30,"icon":31},"Use the AuthEndpoints skill with coding agents","\u002Fgetting-started\u002Fai-agents","1.getting-started\u002F5.ai-agents","i-lucide-bot",{"title":33,"path":34,"stem":35,"icon":36},"Password auth","\u002Fgetting-started\u002Fpassword-auth","1.getting-started\u002F6.password-auth","i-lucide-key-round",{"title":38,"path":39,"stem":40,"icon":41},"3.x facade","\u002Fgetting-started\u002Fcompatibility-facade","1.getting-started\u002F7.compatibility-facade","i-lucide-archive","i-lucide-rocket",{"title":44,"path":45,"stem":46,"children":47,"icon":119},"Guides","\u002Fguides","2.guides\u002F01.index",[48,50,55,60,65,70,74,79,84,89,94,99,104,109,114],{"title":44,"path":45,"stem":46,"icon":49},"i-lucide-list-checks",{"title":51,"path":52,"stem":53,"icon":54},"Register users","\u002Fguides\u002Fregistration","2.guides\u002F02.registration","i-lucide-user-plus",{"title":56,"path":57,"stem":58,"icon":59},"Sign users in","\u002Fguides\u002Fsign-in","2.guides\u002F03.sign-in","i-lucide-log-in",{"title":61,"path":62,"stem":63,"icon":64},"Sign users out","\u002Fguides\u002Fsign-out","2.guides\u002F04.sign-out","i-lucide-log-out",{"title":66,"path":67,"stem":68,"icon":69},"Turn on two-factor authentication","\u002Fguides\u002Ftwo-factor","2.guides\u002F05.two-factor","i-lucide-smartphone",{"title":71,"path":72,"stem":73,"icon":36},"Reset a forgotten password","\u002Fguides\u002Freset-password","2.guides\u002F06.reset-password",{"title":75,"path":76,"stem":77,"icon":78},"Change a user's email or password","\u002Fguides\u002Fmanage-account","2.guides\u002F07.manage-account","i-lucide-user-cog",{"title":80,"path":81,"stem":82,"icon":83},"Add, rename, and remove passkeys","\u002Fguides\u002Fmanage-passkeys","2.guides\u002F08.manage-passkeys","i-lucide-scan-face",{"title":85,"path":86,"stem":87,"icon":88},"Link and unlink GitHub or Google accounts","\u002Fguides\u002Flink-external-accounts","2.guides\u002F09.link-external-accounts","i-lucide-link",{"title":90,"path":91,"stem":92,"icon":93},"Require step-up before sensitive actions","\u002Fguides\u002Fstep-up","2.guides\u002F10.step-up","i-lucide-shield-check",{"title":95,"path":96,"stem":97,"icon":98},"Call the API from a browser","\u002Fguides\u002Fbrowser-clients","2.guides\u002F11.browser-clients","i-lucide-globe",{"title":100,"path":101,"stem":102,"icon":103},"Prepare for production","\u002Fguides\u002Fproduction","2.guides\u002F12.production","i-lucide-factory",{"title":105,"path":106,"stem":107,"icon":108},"Sign in with an emailed code","\u002Fguides\u002Femail-code","2.guides\u002F13.email-code","i-lucide-mail",{"title":110,"path":111,"stem":112,"icon":113},"Upgrade to 4.0","\u002Fguides\u002Fupgrading-to-4","2.guides\u002F14.upgrading-to-4","i-lucide-arrow-up-right",{"title":115,"path":116,"stem":117,"icon":118},"Run an app with no public sign-up","\u002Fguides\u002Finternal-app","2.guides\u002F15.internal-app","i-lucide-building-2","i-lucide-waypoints",{"title":121,"path":122,"stem":123,"children":124,"icon":142},"Composable endpoints","\u002Fcomposables","3.composables\u002F1.index",[125,128,132,137],{"title":126,"path":122,"stem":123,"icon":127},"How composition works","i-lucide-layout-grid",{"title":129,"path":130,"stem":131,"icon":49},"Composition requirements","\u002Fcomposables\u002Frequirements","3.composables\u002F2.requirements",{"title":133,"path":134,"stem":135,"icon":136},"Compose a custom auth stack","\u002Fcomposables\u002Frecipes","3.composables\u002F3.recipes","i-lucide-book-marked",{"title":138,"path":139,"stem":140,"icon":141},"Composition","\u002Fcomposables\u002Fcomposition","3.composables\u002F4.composition","i-lucide-table","i-lucide-blocks",{"title":144,"icon":145,"path":146,"stem":147,"children":148,"page":218},"Reference","i-lucide-book-open","\u002Fmodules","4.modules",[149,154,158,163,168,173,177,182,186,191,195,200,205,209,213],{"title":150,"path":151,"stem":152,"icon":153},"Endpoint reference","\u002Fmodules\u002Fendpoints","4.modules\u002F01.endpoints","i-lucide-route",{"title":155,"path":156,"stem":157,"icon":78},"Identity management module","\u002Fmodules\u002Fidentity-management","4.modules\u002F02.identity-management",{"title":159,"path":160,"stem":161,"icon":162},"Cookie sign-in module","\u002Fmodules\u002Fcookie-auth","4.modules\u002F03.cookie-auth","i-lucide-cookie",{"title":164,"path":165,"stem":166,"icon":167},"Identity bearer sign-in module","\u002Fmodules\u002Fbearer-auth","4.modules\u002F04.bearer-auth","i-lucide-key",{"title":169,"path":170,"stem":171,"icon":172},"JWT module","\u002Fmodules\u002Fjwt","4.modules\u002F05.jwt","i-lucide-fingerprint",{"title":174,"path":175,"stem":176,"icon":83},"Passkeys module","\u002Fmodules\u002Fpasskeys","4.modules\u002F06.passkeys",{"title":178,"path":179,"stem":180,"icon":181},"ReAuth module","\u002Fmodules\u002Freauth","4.modules\u002F07.reauth","i-lucide-shield-alert",{"title":183,"path":184,"stem":185,"icon":59},"External OAuth packages","\u002Fmodules\u002Fexternal-oauth","4.modules\u002F08.external-oauth",{"title":187,"path":188,"stem":189,"icon":190},"Configuration options","\u002Fmodules\u002Fconfiguration","4.modules\u002F09.configuration","i-lucide-settings",{"title":192,"path":193,"stem":194,"icon":93},"Antiforgery (CSRF) rules","\u002Fmodules\u002Fcsrf","4.modules\u002F10.csrf",{"title":196,"path":197,"stem":198,"icon":199},"Responses and errors","\u002Fmodules\u002Ferrors","4.modules\u002F11.errors","i-lucide-circle-alert",{"title":201,"path":202,"stem":203,"icon":204},"Rate-limit policies","\u002Fmodules\u002Frate-limits","4.modules\u002F12.rate-limits","i-lucide-gauge",{"title":206,"path":207,"stem":208,"icon":108},"Email-code module","\u002Fmodules\u002Femail-code","4.modules\u002F13.email-code",{"title":210,"path":211,"stem":212,"icon":59},"Sign-in completer","\u002Fmodules\u002Fsign-in-completer","4.modules\u002F14.sign-in-completer",{"title":214,"path":215,"stem":216,"icon":217},"Enumeration-safe responses","\u002Fmodules\u002Fenumeration","4.modules\u002F15.enumeration","i-lucide-eye-off",false,{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":218},"Concepts","i-lucide-lightbulb","\u002Fconcepts","5.concepts",[225,230,235,240,245],{"title":226,"path":227,"stem":228,"icon":229},"AuthEndpoints compared with other options","\u002Fconcepts\u002Fcompare","5.concepts\u002F1.compare","i-lucide-git-compare",{"title":231,"path":232,"stem":233,"icon":234},"Stock Identity endpoints vs AuthEndpoints","\u002Fconcepts\u002Fstock-identity-vs-authendpoints","5.concepts\u002F2.stock-identity-vs-authendpoints","i-lucide-columns-2",{"title":236,"path":237,"stem":238,"icon":239},"MapIdentityApi alternative","\u002Fconcepts\u002Fmapidentityapi-alternative","5.concepts\u002F3.mapidentityapi-alternative","i-lucide-arrow-left-right",{"title":241,"path":242,"stem":243,"icon":244},"Security model","\u002Fconcepts\u002Fsecurity-model","5.concepts\u002F4.security-model","i-lucide-shield",{"title":246,"path":247,"stem":248,"icon":249},"FAQ","\u002Fconcepts\u002Ffaq","5.concepts\u002F5.faq","i-lucide-circle-help",{"id":251,"title":252,"body":253,"description":1109,"extension":1110,"faq":218,"links":1111,"meta":1112,"navigation":1113,"path":139,"seo":1114,"stem":140,"__hash__":1115},"docs\u002F3.composables\u002F4.composition.md","Composition table",{"type":254,"value":255,"toc":1103},"minimark",[256,269,285,336,361,387,962,974,1000,1046,1066,1074,1079],[257,258,259,260,264,265,268],"p",{},"Each group is one ",[261,262,263],"code",{},"Add*"," and one ",[261,266,267],{},"Map*",". A per-session group finishes in a sign-in completer, so map it once for each session prefix. A shared group does not start a session, so map it once.",[257,270,271,272,276,277,280,281,284],{},"This table is the route list for the password facade, the 3.x composites, and a custom host. The password facade's expansion is on ",[273,274,33],"a",{"href":275},"\u002Fgetting-started\u002Fpassword-auth\u002F",". The 3.x call is on ",[273,278,38],{"href":279},"\u002Fgetting-started\u002Fcompatibility-facade\u002F",". The upgrade guide links here instead of copying the table: ",[273,282,110],{"href":283},"\u002Fguides\u002Fupgrading-to-4\u002F#compatibility-composites",".",[257,286,287,288,290,291,294,295,298,299,302,303,306,307,310,311,314,315,318,319,322,323,325,326,328,329,332,333,284],{},"Routes below are relative to the group you pass to ",[261,289,267],{},". Passkey maps add the ",[261,292,293],{},"\u002Fpasskeys"," prefix themselves. The composite names in the last column are the route-table snapshots. ",[261,296,297],{},"MapPasswordAuthCookie"," is ",[261,300,301],{},"MapPasswordAuth"," with ",[261,304,305],{},"Session"," left at ",[261,308,309],{},"Cookie"," and no passkey domain. ",[261,312,313],{},"MapPasswordAuthCookiePasskeys"," is that call with ",[261,316,317],{},"Passkeys.ServerDomain"," set. The ",[261,320,321],{},"Jwt"," names are the same split with ",[261,324,305],{}," set to ",[261,327,321],{}," and cookie refresh transport. Body transport drops ",[261,330,331],{},"GET \u002FcsrfToken"," from ",[261,334,335],{},"MapJwtSessionEndpoints",[257,337,338,341,342,345,346,349,350,353,354,345,357,360],{},[261,339,340],{},"MapPasskeySignInEndpoints"," still maps ",[261,343,344],{},"register\u002Foptions"," and ",[261,347,348],{},"register",", and it ensures confirm-email when that endpoint name is new. ",[261,351,352],{},"MapPasskeyEndpoints"," includes those sign-in routes and passkey management, and it leaves confirm-email unmapped. ",[261,355,356],{},"MapPasskeySignUpEndpoints",[261,358,359],{},"MapPasskeyRegisterOptionsEndpoints"," are the split maps for hosts that do not want the whole sign-in bundle.",[257,362,363,366,367,370,371,374,375,378,379,382,383,386],{},[261,364,365],{},"MapAccountManagementEndpoints"," maps ",[261,368,369],{},"POST \u002FconfirmIdentity\u002FpasskeyOptions"," when passkey services are registered. ",[261,372,373],{},"MapIdentityManagementApi"," always maps that route. ",[261,376,377],{},"POST \u002FconfirmIdentity\u002FemailCode\u002Fsend"," is mapped only when email-code services are registered. The ",[261,380,381],{},"AddAuthEndpoints"," \u002F ",[261,384,385],{},"MapAuthEndpoints"," facade maps neither.",[388,389,390,412],"table",{},[391,392,393],"thead",{},[394,395,396,400,403,406,409],"tr",{},[397,398,399],"th",{},"Add",[397,401,402],{},"Map",[397,404,405],{},"Scope",[397,407,408],{},"Routes",[397,410,411],{},"Composites",[413,414,415,451,483,517,551,599,623,642,671,696,724,755,790,809,828,867,888,909,933],"tbody",{},[394,416,417,423,428,431,436],{},[418,419,420],"td",{},[261,421,422],{},"AddPasswordSignUpEndpoints",[418,424,425],{},[261,426,427],{},"MapPasswordSignUpEndpoints",[418,429,430],{},"shared",[418,432,433],{},[261,434,435],{},"POST \u002Fregister",[418,437,438,440,441,440,443,440,445,440,448],{},[261,439,373],{},", ",[261,442,297],{},[261,444,313],{},[261,446,447],{},"MapPasswordAuthJwt",[261,449,450],{},"MapPasswordAuthJwtPasskeys",[394,452,453,458,463,466,471],{},[418,454,455],{},[261,456,457],{},"AddPasswordSignInEndpoints",[418,459,460],{},[261,461,462],{},"MapPasswordSignInEndpoints",[418,464,465],{},"per session",[418,467,468],{},[261,469,470],{},"POST \u002Flogin",[418,472,473,440,476,440,479,440,481],{},[261,474,475],{},"MapCookieAuthEndpoints",[261,477,478],{},"MapBearerAuthEndpoints",[261,480,297],{},[261,482,313],{},[394,484,485,490,495,497,505],{},[418,486,487],{},[261,488,489],{},"AddPasswordRecoveryEndpoints",[418,491,492],{},[261,493,494],{},"MapPasswordRecoveryEndpoints",[418,496,430],{},[418,498,499,440,502],{},[261,500,501],{},"POST \u002FforgotPassword",[261,503,504],{},"POST \u002FresetPassword",[418,506,507,440,509,440,511,440,513,440,515],{},[261,508,373],{},[261,510,297],{},[261,512,313],{},[261,514,447],{},[261,516,450],{},[394,518,519,524,529,531,539],{},[418,520,521],{},[261,522,523],{},"AddAccountAbuseRateLimiting",[418,525,526],{},[261,527,528],{},"MapConfirmEmailEndpoints",[418,530,430],{},[418,532,533,440,536],{},[261,534,535],{},"GET \u002FconfirmEmail",[261,537,538],{},"POST \u002FresendConfirmationEmail",[418,540,541,440,543,440,545,440,547,440,549],{},[261,542,373],{},[261,544,297],{},[261,546,313],{},[261,548,447],{},[261,550,450],{},[394,552,553,558,562,564,587],{},[418,554,555],{},[261,556,557],{},"AddAccountManagementEndpoints",[418,559,560],{},[261,561,365],{},[418,563,430],{},[418,565,566,440,569,440,572,440,575,440,578,440,581,440,584],{},[261,567,568],{},"GET \u002Fmanage\u002Finfo",[261,570,571],{},"POST \u002Fmanage\u002Finfo",[261,573,574],{},"GET \u002Fmanage\u002F2fa",[261,576,577],{},"POST \u002Fmanage\u002F2fa",[261,579,580],{},"GET \u002Fmanage\u002FauthMethods",[261,582,583],{},"POST \u002FconfirmIdentity",[261,585,586],{},"POST \u002Fmanage\u002Fpassword",[418,588,589,440,591,440,593,440,595,440,597],{},[261,590,373],{},[261,592,297],{},[261,594,313],{},[261,596,447],{},[261,598,450],{},[394,600,601,605,609,611,615],{},[418,602,603],{},[261,604,557],{},[418,606,607],{},[261,608,365],{},[418,610,430],{},[418,612,613],{},[261,614,369],{},[418,616,617,440,619,440,621],{},[261,618,373],{},[261,620,313],{},[261,622,450],{},[394,624,625,629,633,635,639],{},[418,626,627],{},[261,628,557],{},[418,630,631],{},[261,632,365],{},[418,634,430],{},[418,636,637],{},[261,638,377],{},[418,640,641],{},"none",[394,643,644,649,654,656,663],{},[418,645,646],{},[261,647,648],{},"AddCookieSessionEndpoints",[418,650,651],{},[261,652,653],{},"MapCookieSessionEndpoints",[418,655,465],{},[418,657,658,440,661],{},[261,659,660],{},"POST \u002Flogout",[261,662,331],{},[418,664,665,440,667,440,669],{},[261,666,475],{},[261,668,297],{},[261,670,313],{},[394,672,673,678,683,685,692],{},[418,674,675],{},[261,676,677],{},"AddBearerSessionEndpoints",[418,679,680],{},[261,681,682],{},"MapBearerSessionEndpoints",[418,684,465],{},[418,686,687,440,690],{},[261,688,689],{},"POST \u002Frefresh",[261,691,660],{},[418,693,694],{},[261,695,478],{},[394,697,698,703,708,710,715],{},[418,699,700],{},[261,701,702],{},"AddJwtEndpoints",[418,704,705],{},[261,706,707],{},"MapJwtPasswordEndpoints",[418,709,465],{},[418,711,712],{},[261,713,714],{},"POST \u002Fcreate",[418,716,717,440,720,440,722],{},[261,718,719],{},"MapJwtAuthEndpoints",[261,721,447],{},[261,723,450],{},[394,725,726,730,734,736,747],{},[418,727,728],{},[261,729,702],{},[418,731,732],{},[261,733,335],{},[418,735,465],{},[418,737,738,440,740,440,743,440,745],{},[261,739,689],{},[261,741,742],{},"GET \u002Fverify",[261,744,660],{},[261,746,331],{},[418,748,749,440,751,440,753],{},[261,750,719],{},[261,752,447],{},[261,754,450],{},[394,756,757,762,766,768,782],{},[418,758,759],{},[261,760,761],{},"AddPasskeySignInEndpoints",[418,763,764],{},[261,765,340],{},[418,767,465],{},[418,769,770,440,773,440,776,440,779],{},[261,771,772],{},"POST \u002Fpasskeys\u002FrequestOptions",[261,774,775],{},"POST \u002Fpasskeys\u002Flogin",[261,777,778],{},"POST \u002Fpasskeys\u002Fregister\u002Foptions",[261,780,781],{},"POST \u002Fpasskeys\u002Fregister",[418,783,784,440,786,440,788],{},[261,785,352],{},[261,787,313],{},[261,789,450],{},[394,791,792,797,801,803,807],{},[418,793,794],{},[261,795,796],{},"AddPasskeySignUpEndpoints",[418,798,799],{},[261,800,356],{},[418,802,465],{},[418,804,805],{},[261,806,781],{},[418,808,641],{},[394,810,811,816,820,822,826],{},[418,812,813],{},[261,814,815],{},"AddPasskeyRegisterOptionsEndpoints",[418,817,818],{},[261,819,359],{},[418,821,430],{},[418,823,824],{},[261,825,778],{},[418,827,641],{},[394,829,830,835,840,842,859],{},[418,831,832],{},[261,833,834],{},"AddPasskeyManagementEndpoints",[418,836,837],{},[261,838,839],{},"MapPasskeyManagementEndpoints",[418,841,430],{},[418,843,844,440,847,440,850,440,853,440,856],{},[261,845,846],{},"GET \u002Fpasskeys\u002F",[261,848,849],{},"POST \u002Fpasskeys\u002F",[261,851,852],{},"POST \u002Fpasskeys\u002FcreationOptions",[261,854,855],{},"PATCH \u002Fpasskeys\u002F",[261,857,858],{},"DELETE \u002Fpasskeys\u002F{credentialIdUrl}",[418,860,861,440,863,440,865],{},[261,862,352],{},[261,864,313],{},[261,866,450],{},[394,868,869,874,879,881,886],{},[418,870,871],{},[261,872,873],{},"AddEmailCodeSendEndpoints",[418,875,876],{},[261,877,878],{},"MapEmailCodeSendEndpoints",[418,880,430],{},[418,882,883],{},[261,884,885],{},"POST \u002FemailCode\u002Fsend",[418,887,641],{},[394,889,890,895,900,902,907],{},[418,891,892],{},[261,893,894],{},"AddEmailCodeSignInEndpoints",[418,896,897],{},[261,898,899],{},"MapEmailCodeSignInEndpoints",[418,901,465],{},[418,903,904],{},[261,905,906],{},"POST \u002FemailCode\u002Fverify",[418,908,641],{},[394,910,911,916,921,923,931],{},[418,912,913],{},[261,914,915],{},"AddExternalAuthEndpoints",[418,917,918],{},[261,919,920],{},"MapExternalAuthEndpoints",[418,922,465],{},[418,924,925,440,928],{},[261,926,927],{},"GET \u002Flogin\u002Fgithub",[261,929,930],{},"GET \u002Flogin\u002Fgithub\u002Fcallback",[418,932,641],{},[394,934,935,939,944,946,960],{},[418,936,937],{},[261,938,915],{},[418,940,941],{},[261,942,943],{},"MapExternalAccountEndpoints",[418,945,430],{},[418,947,948,440,951,440,954,440,957],{},[261,949,950],{},"GET \u002Flogins",[261,952,953],{},"DELETE \u002Flogins\u002F{loginProvider}\u002F{providerKey}",[261,955,956],{},"GET \u002Flink\u002F{scheme}",[261,958,959],{},"GET \u002Flink\u002F{scheme}\u002Fcallback",[418,961,641],{},[257,963,964,966,967,345,970,973],{},[261,965,920],{}," for Google uses ",[261,968,969],{},"GET \u002Flogin\u002Fgoogle",[261,971,972],{},"GET \u002Flogin\u002Fgoogle\u002Fcallback",". Those paths are the same shape as the GitHub row. They are not in a composite snapshot.",[257,975,976,979,980,982,983,985,986,988,989,992,993,995,996,999],{},[261,977,978],{},"MapSignInEndpoints\u003CTUser>(AuthEndpointsSession)"," maps the per-session rows whose ",[261,981,263],{}," is registered, plus that session's session row. Password login on a JWT session is ",[261,984,707],{},", not ",[261,987,470],{},". ",[261,990,991],{},"MapSharedAuthEndpoints\u003CTUser>(sharedPath)"," maps the shared rows whose ",[261,994,263],{}," is registered. Null ",[261,997,998],{},"sharedPath"," uses the builder you call it on.",[257,1001,1002,1005,1006,1008,1009,1011,1012,988,1014,1016,1017,1019,1020,988,1022,298,1024,345,1026,988,1028,298,1030,302,1032,440,1035,1037,1038,988,1040,1042,1043,1045],{},[261,1003,1004],{},"MapPasswordEndpoints"," is sign-up, sign-in, and recovery. ",[261,1007,475],{}," is cookie ",[261,1010,470],{}," on the 3.x handler, then ",[261,1013,653],{},[261,1015,478],{}," is Identity bearer ",[261,1018,470],{},", then ",[261,1021,682],{},[261,1023,719],{},[261,1025,707],{},[261,1027,335],{},[261,1029,373],{},[261,1031,1004],{},[261,1033,1034],{},"PasswordLoginMode.None",[261,1036,528],{},", and ",[261,1039,365],{},[261,1041,352],{}," is passkey sign-in and management on one ",[261,1044,293],{}," group.",[257,1047,1048,1049,1051,1052,1054,1055,1057,1058,988,1060,1062,1063,1065],{},"Two session prefixes can both map ",[261,1050,660],{},". Put them on different groups. ",[261,1053,1004],{}," in cookie mode and ",[261,1056,475],{}," both map ",[261,1059,470],{},[261,1061,352],{}," already includes sign-in, so do not add ",[261,1064,340],{}," on that same prefix.",[257,1067,1068,1069,345,1071,1073],{},"Confirm-email keeps one endpoint name. Map it with the shared routes, not under every session prefix. ",[261,1070,427],{},[261,1072,365],{}," ensure that route when the name is new. A later map with the same name leaves the first route in place.",[1075,1076,1078],"h2",{"id":1077},"related","Related",[1080,1081,1082,1088,1093,1098],"ul",{},[1083,1084,1085],"li",{},[273,1086,126],{"href":1087},"\u002Fcomposables\u002F",[1083,1089,1090],{},[273,1091,129],{"href":1092},"\u002Fcomposables\u002Frequirements\u002F",[1083,1094,1095],{},[273,1096,133],{"href":1097},"\u002Fcomposables\u002Frecipes\u002F",[1083,1099,1100],{},[273,1101,210],{"href":1102},"\u002Fmodules\u002Fsign-in-completer\u002F",{"title":1104,"searchDepth":1105,"depth":1106,"links":1107},"",1,2,[1108],{"id":1077,"depth":1106,"text":1078},"Add and Map pairs, the routes each one maps, whether the group is per session or shared, and which snapshots contain it.","md",null,{},{"title":138,"icon":141},{"title":252,"description":1109},"2H8vyN3GTkZW1UYwnpmbqQDnVIVvUw3sNX9QvR4hqtM",[1117,1119],{"title":133,"path":134,"stem":135,"description":1118,"icon":136,"children":-1},"Building-block recipes for email-code-only, external-first, and passkey-first hosts.",{"title":150,"path":151,"stem":152,"description":1120,"icon":153,"children":-1},"Every route that AuthEndpoints maps, with its auth, CSRF, ReAuth, and rate-limit requirements.",1792054256980]