[{"data":1,"prerenderedAt":1366},["ShallowReactive",2],{"navigation":3,"\u002Fmodules\u002Fendpoints":203,"\u002Fmodules\u002Fendpoints-surround":1361},[4,33,96,114,177],{"title":5,"path":6,"stem":7,"children":8,"icon":32},"Get started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22,27],{"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},"Choose a sign-in stack","\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","i-lucide-rocket",{"title":34,"path":35,"stem":36,"children":37,"icon":95},"Guides","\u002Fguides","2.guides\u002F01.index",[38,40,45,50,55,60,65,70,75,80,85,90],{"title":34,"path":35,"stem":36,"icon":39},"i-lucide-list-checks",{"title":41,"path":42,"stem":43,"icon":44},"Register users","\u002Fguides\u002Fregistration","2.guides\u002F02.registration","i-lucide-user-plus",{"title":46,"path":47,"stem":48,"icon":49},"Sign users in","\u002Fguides\u002Fsign-in","2.guides\u002F03.sign-in","i-lucide-log-in",{"title":51,"path":52,"stem":53,"icon":54},"Sign users out","\u002Fguides\u002Fsign-out","2.guides\u002F04.sign-out","i-lucide-log-out",{"title":56,"path":57,"stem":58,"icon":59},"Turn on two-factor authentication","\u002Fguides\u002Ftwo-factor","2.guides\u002F05.two-factor","i-lucide-smartphone",{"title":61,"path":62,"stem":63,"icon":64},"Reset a forgotten password","\u002Fguides\u002Freset-password","2.guides\u002F06.reset-password","i-lucide-key-round",{"title":66,"path":67,"stem":68,"icon":69},"Change a user's email or password","\u002Fguides\u002Fmanage-account","2.guides\u002F07.manage-account","i-lucide-user-cog",{"title":71,"path":72,"stem":73,"icon":74},"Add, rename, and remove passkeys","\u002Fguides\u002Fmanage-passkeys","2.guides\u002F08.manage-passkeys","i-lucide-scan-face",{"title":76,"path":77,"stem":78,"icon":79},"Link and unlink GitHub or Google accounts","\u002Fguides\u002Flink-external-accounts","2.guides\u002F09.link-external-accounts","i-lucide-link",{"title":81,"path":82,"stem":83,"icon":84},"Require step-up before sensitive actions","\u002Fguides\u002Fstep-up","2.guides\u002F10.step-up","i-lucide-shield-check",{"title":86,"path":87,"stem":88,"icon":89},"Call the API from a browser","\u002Fguides\u002Fbrowser-clients","2.guides\u002F11.browser-clients","i-lucide-globe",{"title":91,"path":92,"stem":93,"icon":94},"Prepare for production","\u002Fguides\u002Fproduction","2.guides\u002F12.production","i-lucide-factory","i-lucide-waypoints",{"title":97,"path":98,"stem":99,"children":100,"icon":113},"Composable endpoints","\u002Fcomposables","3.composables\u002F1.index",[101,104,108],{"title":102,"path":98,"stem":99,"icon":103},"How composition works","i-lucide-layout-grid",{"title":105,"path":106,"stem":107,"icon":39},"Composition requirements","\u002Fcomposables\u002Frequirements","3.composables\u002F2.requirements",{"title":109,"path":110,"stem":111,"icon":112},"Compose a custom auth stack","\u002Fcomposables\u002Frecipes","3.composables\u002F3.recipes","i-lucide-book-marked","i-lucide-blocks",{"title":115,"icon":116,"path":117,"stem":118,"children":119,"page":176},"Reference","i-lucide-book-open","\u002Fmodules","4.modules",[120,125,129,134,139,144,148,153,157,162,166,171],{"title":121,"path":122,"stem":123,"icon":124},"Endpoint reference","\u002Fmodules\u002Fendpoints","4.modules\u002F01.endpoints","i-lucide-route",{"title":126,"path":127,"stem":128,"icon":69},"Identity management module","\u002Fmodules\u002Fidentity-management","4.modules\u002F02.identity-management",{"title":130,"path":131,"stem":132,"icon":133},"Cookie sign-in module","\u002Fmodules\u002Fcookie-auth","4.modules\u002F03.cookie-auth","i-lucide-cookie",{"title":135,"path":136,"stem":137,"icon":138},"Identity bearer sign-in module","\u002Fmodules\u002Fbearer-auth","4.modules\u002F04.bearer-auth","i-lucide-key",{"title":140,"path":141,"stem":142,"icon":143},"JWT module","\u002Fmodules\u002Fjwt","4.modules\u002F05.jwt","i-lucide-fingerprint",{"title":145,"path":146,"stem":147,"icon":74},"Passkeys module","\u002Fmodules\u002Fpasskeys","4.modules\u002F06.passkeys",{"title":149,"path":150,"stem":151,"icon":152},"ReAuth module","\u002Fmodules\u002Freauth","4.modules\u002F07.reauth","i-lucide-shield-alert",{"title":154,"path":155,"stem":156,"icon":49},"External OAuth packages","\u002Fmodules\u002Fexternal-oauth","4.modules\u002F08.external-oauth",{"title":158,"path":159,"stem":160,"icon":161},"Configuration options","\u002Fmodules\u002Fconfiguration","4.modules\u002F09.configuration","i-lucide-settings",{"title":163,"path":164,"stem":165,"icon":84},"Antiforgery (CSRF) rules","\u002Fmodules\u002Fcsrf","4.modules\u002F10.csrf",{"title":167,"path":168,"stem":169,"icon":170},"Responses and errors","\u002Fmodules\u002Ferrors","4.modules\u002F11.errors","i-lucide-circle-alert",{"title":172,"path":173,"stem":174,"icon":175},"Rate-limit policies","\u002Fmodules\u002Frate-limits","4.modules\u002F12.rate-limits","i-lucide-gauge",false,{"title":178,"icon":179,"path":180,"stem":181,"children":182,"page":176},"Concepts","i-lucide-lightbulb","\u002Fconcepts","5.concepts",[183,188,193,198],{"title":184,"path":185,"stem":186,"icon":187},"AuthEndpoints compared with other options","\u002Fconcepts\u002Fcompare","5.concepts\u002F1.compare","i-lucide-git-compare",{"title":189,"path":190,"stem":191,"icon":192},"Stock Identity endpoints vs AuthEndpoints","\u002Fconcepts\u002Fstock-identity-vs-authendpoints","5.concepts\u002F2.stock-identity-vs-authendpoints","i-lucide-columns-2",{"title":194,"path":195,"stem":196,"icon":197},"Security model","\u002Fconcepts\u002Fsecurity-model","5.concepts\u002F3.security-model","i-lucide-shield",{"title":199,"path":200,"stem":201,"icon":202},"FAQ","\u002Fconcepts\u002Ffaq","5.concepts\u002F4.faq","i-lucide-circle-help",{"id":204,"title":121,"body":205,"description":1354,"extension":1355,"links":1356,"meta":1357,"navigation":1358,"path":122,"seo":1359,"stem":123,"__hash__":1360},"docs\u002F4.modules\u002F01.endpoints.md",{"type":206,"value":207,"toc":1343},"minimark",[208,239,242,286,291,301,572,578,582,590,670,675,679,688,765,770,774,793,998,1003,1007,1021,1142,1147,1151,1189,1327,1338],[209,210,211,212,216,217,220,221,216,224,227,228,216,231,234,235,238],"p",{},"Paths use the facade defaults: ",[213,214,215],"code",{},"IdentityPath"," is ",[213,218,219],{},"\u002Fidentity",", ",[213,222,223],{},"PasskeyPath",[213,225,226],{},"\u002Faccount",", and ",[213,229,230],{},"Jwt.Path",[213,232,233],{},"\u002Fauth",". External OAuth routes have no default prefix. The table uses ",[213,236,237],{},"\u002Fauth\u002Fexternal",", the prefix from the examples.",[209,240,241],{},"Column meanings:",[243,244,245,253,264,273],"ul",{},[246,247,248,252],"li",{},[249,250,251],"strong",{},"Auth",": the route requires a signed-in user.",[246,254,255,258,259,263],{},[249,256,257],{},"CSRF",": the route runs the antiforgery filter. See ",[260,261,163],"a",{"href":262},"\u002Fmodules\u002Fcsrf\u002F",".",[246,265,266,269,270,263],{},[249,267,268],{},"ReAuth",": the route requires a fresh step-up proof. See ",[260,271,149],{"href":272},"\u002Fmodules\u002Freauth\u002F",[246,274,275,278,279,282,283,263],{},[249,276,277],{},"Rate limit",": the policy name without the ",[213,280,281],{},"AuthEndpoints."," prefix. See ",[260,284,172],{"href":285},"\u002Fmodules\u002Frate-limits\u002F",[287,288,290],"h2",{"id":289},"identity-management","Identity management",[209,292,293,294,297,298,300],{},"Mapped by ",[213,295,296],{},"MapIdentityManagementApi",". The facade always maps it under ",[213,299,215],{},". Management routes accept the application cookie, Identity bearer tokens, and JWT bearer tokens, when those schemes are registered.",[302,303,304,325],"table",{},[305,306,307],"thead",{},[308,309,310,314,317,319,321,323],"tr",{},[311,312,313],"th",{},"Method",[311,315,316],{},"Path",[311,318,251],{},[311,320,257],{},[311,322,268],{},[311,324,277],{},[326,327,328,352,372,394,415,436,458,479,498,517,535,554],"tbody",{},[308,329,330,336,341,343,345,347],{},[331,332,333],"td",{},[213,334,335],{},"POST",[331,337,338],{},[213,339,340],{},"\u002Fidentity\u002Fregister",[331,342],{},[331,344],{},[331,346],{},[331,348,349],{},[213,350,351],{},"AccountAbuse",[308,353,354,359,364,366,368,370],{},[331,355,356],{},[213,357,358],{},"GET",[331,360,361],{},[213,362,363],{},"\u002Fidentity\u002FconfirmEmail",[331,365],{},[331,367],{},[331,369],{},[331,371],{},[308,373,374,378,383,386,388,390],{},[331,375,376],{},[213,377,335],{},[331,379,380],{},[213,381,382],{},"\u002Fidentity\u002FresendConfirmationEmail",[331,384,385],{},"Yes",[331,387,385],{},[331,389],{},[331,391,392],{},[213,393,351],{},[308,395,396,400,405,407,409,411],{},[331,397,398],{},[213,399,335],{},[331,401,402],{},[213,403,404],{},"\u002Fidentity\u002FforgotPassword",[331,406],{},[331,408],{},[331,410],{},[331,412,413],{},[213,414,351],{},[308,416,417,421,426,428,430,432],{},[331,418,419],{},[213,420,335],{},[331,422,423],{},[213,424,425],{},"\u002Fidentity\u002FresetPassword",[331,427],{},[331,429],{},[331,431],{},[331,433,434],{},[213,435,351],{},[308,437,438,442,447,449,451,453],{},[331,439,440],{},[213,441,335],{},[331,443,444],{},[213,445,446],{},"\u002Fidentity\u002FconfirmIdentity",[331,448,385],{},[331,450,385],{},[331,452],{},[331,454,455],{},[213,456,457],{},"ConfirmIdentity",[308,459,460,464,469,471,473,475],{},[331,461,462],{},[213,463,335],{},[331,465,466],{},[213,467,468],{},"\u002Fidentity\u002FconfirmIdentity\u002FpasskeyOptions",[331,470,385],{},[331,472,385],{},[331,474],{},[331,476,477],{},[213,478,457],{},[308,480,481,485,490,492,494,496],{},[331,482,483],{},[213,484,358],{},[331,486,487],{},[213,488,489],{},"\u002Fidentity\u002Fmanage\u002FauthMethods",[331,491,385],{},[331,493],{},[331,495],{},[331,497],{},[308,499,500,504,509,511,513,515],{},[331,501,502],{},[213,503,358],{},[331,505,506],{},[213,507,508],{},"\u002Fidentity\u002Fmanage\u002F2fa",[331,510,385],{},[331,512],{},[331,514],{},[331,516],{},[308,518,519,523,527,529,531,533],{},[331,520,521],{},[213,522,335],{},[331,524,525],{},[213,526,508],{},[331,528,385],{},[331,530,385],{},[331,532,385],{},[331,534],{},[308,536,537,541,546,548,550,552],{},[331,538,539],{},[213,540,358],{},[331,542,543],{},[213,544,545],{},"\u002Fidentity\u002Fmanage\u002Finfo",[331,547,385],{},[331,549],{},[331,551],{},[331,553],{},[308,555,556,560,564,566,568,570],{},[331,557,558],{},[213,559,335],{},[331,561,562],{},[213,563,545],{},[331,565,385],{},[331,567,385],{},[331,569,385],{},[331,571],{},[209,573,574,575,263],{},"Details: ",[260,576,126],{"href":577},"\u002Fmodules\u002Fidentity-management\u002F",[287,579,581],{"id":580},"cookie-sign-in","Cookie sign-in",[209,583,293,584,587,588,263],{},[213,585,586],{},"MapCookieAuthEndpoints",". The cookie facade maps it under ",[213,589,215],{},[302,591,592,608],{},[305,593,594],{},[308,595,596,598,600,602,604,606],{},[311,597,313],{},[311,599,316],{},[311,601,251],{},[311,603,257],{},[311,605,268],{},[311,607,277],{},[326,609,610,632,651],{},[308,611,612,616,621,623,625,627],{},[331,613,614],{},[213,615,335],{},[331,617,618],{},[213,619,620],{},"\u002Fidentity\u002Flogin",[331,622],{},[331,624],{},[331,626],{},[331,628,629],{},[213,630,631],{},"Login",[308,633,634,638,643,645,647,649],{},[331,635,636],{},[213,637,335],{},[331,639,640],{},[213,641,642],{},"\u002Fidentity\u002Flogout",[331,644,385],{},[331,646,385],{},[331,648],{},[331,650],{},[308,652,653,657,662,664,666,668],{},[331,654,655],{},[213,656,358],{},[331,658,659],{},[213,660,661],{},"\u002Fidentity\u002FcsrfToken",[331,663],{},[331,665],{},[331,667],{},[331,669],{},[209,671,574,672,263],{},[260,673,130],{"href":674},"\u002Fmodules\u002Fcookie-auth\u002F",[287,676,678],{"id":677},"identity-bearer-sign-in","Identity bearer sign-in",[209,680,293,681,684,685,687],{},[213,682,683],{},"MapBearerAuthEndpoints",". The bearer facade maps it under ",[213,686,215],{}," instead of cookie sign-in.",[302,689,690,706],{},[305,691,692],{},[308,693,694,696,698,700,702,704],{},[311,695,313],{},[311,697,316],{},[311,699,251],{},[311,701,257],{},[311,703,268],{},[311,705,277],{},[326,707,708,728,747],{},[308,709,710,714,718,720,722,724],{},[331,711,712],{},[213,713,335],{},[331,715,716],{},[213,717,620],{},[331,719],{},[331,721],{},[331,723],{},[331,725,726],{},[213,727,631],{},[308,729,730,734,739,741,743,745],{},[331,731,732],{},[213,733,335],{},[331,735,736],{},[213,737,738],{},"\u002Fidentity\u002Frefresh",[331,740],{},[331,742],{},[331,744],{},[331,746],{},[308,748,749,753,757,759,761,763],{},[331,750,751],{},[213,752,335],{},[331,754,755],{},[213,756,642],{},[331,758,385],{},[331,760],{},[331,762],{},[331,764],{},[209,766,574,767,263],{},[260,768,135],{"href":769},"\u002Fmodules\u002Fbearer-auth\u002F",[287,771,773],{"id":772},"passkeys","Passkeys",[209,775,293,776,779,780,783,784,786,787,216,790,263],{},[213,777,778],{},"MapPasskeyEndpoints"," under ",[213,781,782],{},"{prefix}\u002Fpasskeys",". The facade maps it under ",[213,785,223],{}," unless ",[213,788,789],{},"Passkeys.Enabled",[213,791,792],{},"false",[302,794,795,811],{},[305,796,797],{},[308,798,799,801,803,805,807,809],{},[311,800,313],{},[311,802,316],{},[311,804,251],{},[311,806,257],{},[311,808,268],{},[311,810,277],{},[326,812,813,835,856,877,899,920,941,959,978],{},[308,814,815,819,824,826,828,830],{},[331,816,817],{},[213,818,335],{},[331,820,821],{},[213,822,823],{},"\u002Faccount\u002Fpasskeys\u002FcreationOptions",[331,825,385],{},[331,827,385],{},[331,829,385],{},[331,831,832],{},[213,833,834],{},"Passkey.ObtainOptions",[308,836,837,841,846,848,850,852],{},[331,838,839],{},[213,840,335],{},[331,842,843],{},[213,844,845],{},"\u002Faccount\u002Fpasskeys\u002FrequestOptions",[331,847],{},[331,849,385],{},[331,851],{},[331,853,854],{},[213,855,834],{},[308,857,858,862,867,869,871,873],{},[331,859,860],{},[213,861,335],{},[331,863,864],{},[213,865,866],{},"\u002Faccount\u002Fpasskeys\u002Fregister\u002Foptions",[331,868],{},[331,870,385],{},[331,872],{},[331,874,875],{},[213,876,834],{},[308,878,879,883,888,890,892,894],{},[331,880,881],{},[213,882,335],{},[331,884,885],{},[213,886,887],{},"\u002Faccount\u002Fpasskeys\u002Fregister",[331,889],{},[331,891,385],{},[331,893],{},[331,895,896],{},[213,897,898],{},"Passkey.Register",[308,900,901,905,910,912,914,916],{},[331,902,903],{},[213,904,335],{},[331,906,907],{},[213,908,909],{},"\u002Faccount\u002Fpasskeys\u002Flogin",[331,911],{},[331,913,385],{},[331,915],{},[331,917,918],{},[213,919,631],{},[308,921,922,926,931,933,935,937],{},[331,923,924],{},[213,925,335],{},[331,927,928],{},[213,929,930],{},"\u002Faccount\u002Fpasskeys\u002F",[331,932,385],{},[331,934,385],{},[331,936,385],{},[331,938,939],{},[213,940,898],{},[308,942,943,947,951,953,955,957],{},[331,944,945],{},[213,946,358],{},[331,948,949],{},[213,950,930],{},[331,952,385],{},[331,954],{},[331,956],{},[331,958],{},[308,960,961,966,970,972,974,976],{},[331,962,963],{},[213,964,965],{},"PATCH",[331,967,968],{},[213,969,930],{},[331,971,385],{},[331,973,385],{},[331,975,385],{},[331,977],{},[308,979,980,985,990,992,994,996],{},[331,981,982],{},[213,983,984],{},"DELETE",[331,986,987],{},[213,988,989],{},"\u002Faccount\u002Fpasskeys\u002F{credentialIdUrl}",[331,991,385],{},[331,993,385],{},[331,995,385],{},[331,997],{},[209,999,574,1000,263],{},[260,1001,145],{"href":1002},"\u002Fmodules\u002Fpasskeys\u002F",[287,1004,1006],{"id":1005},"jwt","JWT",[209,1008,293,1009,783,1012,1014,1015,216,1018,263],{},[213,1010,1011],{},"MapJwtAuthEndpoints",[213,1013,230],{}," when ",[213,1016,1017],{},"Jwt.Enabled",[213,1019,1020],{},"true",[302,1022,1023,1039],{},[305,1024,1025],{},[308,1026,1027,1029,1031,1033,1035,1037],{},[311,1028,313],{},[311,1030,316],{},[311,1032,251],{},[311,1034,257],{},[311,1036,268],{},[311,1038,277],{},[326,1040,1041,1062,1084,1104,1123],{},[308,1042,1043,1047,1052,1054,1056,1058],{},[331,1044,1045],{},[213,1046,335],{},[331,1048,1049],{},[213,1050,1051],{},"\u002Fauth\u002Fcreate",[331,1053],{},[331,1055],{},[331,1057],{},[331,1059,1060],{},[213,1061,631],{},[308,1063,1064,1068,1073,1076,1078,1080],{},[331,1065,1066],{},[213,1067,335],{},[331,1069,1070],{},[213,1071,1072],{},"\u002Fauth\u002Frefresh",[331,1074,1075],{},"Refresh cookie",[331,1077,385],{},[331,1079],{},[331,1081,1082],{},[213,1083,631],{},[308,1085,1086,1090,1095,1098,1100,1102],{},[331,1087,1088],{},[213,1089,358],{},[331,1091,1092],{},[213,1093,1094],{},"\u002Fauth\u002Fverify",[331,1096,1097],{},"JWT bearer",[331,1099],{},[331,1101],{},[331,1103],{},[308,1105,1106,1110,1115,1117,1119,1121],{},[331,1107,1108],{},[213,1109,335],{},[331,1111,1112],{},[213,1113,1114],{},"\u002Fauth\u002Flogout",[331,1116],{},[331,1118,385],{},[331,1120],{},[331,1122],{},[308,1124,1125,1129,1134,1136,1138,1140],{},[331,1126,1127],{},[213,1128,358],{},[331,1130,1131],{},[213,1132,1133],{},"\u002Fauth\u002FcsrfToken",[331,1135],{},[331,1137],{},[331,1139],{},[331,1141],{},[209,1143,574,1144,263],{},[260,1145,140],{"href":1146},"\u002Fmodules\u002Fjwt\u002F",[287,1148,1150],{"id":1149},"external-oauth","External OAuth",[209,1152,293,1153,220,1156,220,1159,220,1162,227,1165,1168,1169,216,1172,1175,1176,1179,1180,216,1183,1175,1186,263],{},[213,1154,1155],{},"MapGitHubAuthEndpoints",[213,1157,1158],{},"MapGoogleAuthEndpoints",[213,1160,1161],{},"MapExternalAuthEndpoints",[213,1163,1164],{},"MapExternalAuthProvider",[213,1166,1167],{},"MapExternalAccountEndpoints",". The facade never maps these routes. ",[213,1170,1171],{},"{provider}",[213,1173,1174],{},"github"," or ",[213,1177,1178],{},"google",". ",[213,1181,1182],{},"{scheme}",[213,1184,1185],{},"GitHub",[213,1187,1188],{},"Google",[302,1190,1191,1207],{},[305,1192,1193],{},[308,1194,1195,1197,1199,1201,1203,1205],{},[311,1196,313],{},[311,1198,316],{},[311,1200,251],{},[311,1202,257],{},[311,1204,268],{},[311,1206,277],{},[326,1208,1209,1230,1249,1268,1287,1308],{},[308,1210,1211,1215,1220,1222,1224,1226],{},[331,1212,1213],{},[213,1214,358],{},[331,1216,1217],{},[213,1218,1219],{},"\u002Fauth\u002Fexternal\u002Flogin\u002F{provider}",[331,1221],{},[331,1223],{},[331,1225],{},[331,1227,1228],{},[213,1229,631],{},[308,1231,1232,1236,1241,1243,1245,1247],{},[331,1233,1234],{},[213,1235,358],{},[331,1237,1238],{},[213,1239,1240],{},"\u002Fauth\u002Fexternal\u002Flogin\u002F{provider}\u002Fcallback",[331,1242],{},[331,1244],{},[331,1246],{},[331,1248],{},[308,1250,1251,1255,1260,1262,1264,1266],{},[331,1252,1253],{},[213,1254,358],{},[331,1256,1257],{},[213,1258,1259],{},"\u002Fauth\u002Fexternal\u002Flogins",[331,1261,385],{},[331,1263],{},[331,1265],{},[331,1267],{},[308,1269,1270,1274,1279,1281,1283,1285],{},[331,1271,1272],{},[213,1273,984],{},[331,1275,1276],{},[213,1277,1278],{},"\u002Fauth\u002Fexternal\u002Flogins\u002F{loginProvider}\u002F{providerKey}",[331,1280,385],{},[331,1282,385],{},[331,1284,385],{},[331,1286],{},[308,1288,1289,1293,1298,1300,1302,1304],{},[331,1290,1291],{},[213,1292,358],{},[331,1294,1295],{},[213,1296,1297],{},"\u002Fauth\u002Fexternal\u002Flink\u002F{scheme}",[331,1299,385],{},[331,1301],{},[331,1303],{},[331,1305,1306],{},[213,1307,631],{},[308,1309,1310,1314,1319,1321,1323,1325],{},[331,1311,1312],{},[213,1313,358],{},[331,1315,1316],{},[213,1317,1318],{},"\u002Fauth\u002Fexternal\u002Flink\u002F{scheme}\u002Fcallback",[331,1320,385],{},[331,1322],{},[331,1324],{},[331,1326],{},[209,1328,1329,1330,1333,1334,1337],{},"The OAuth handlers also own ",[213,1331,1332],{},"\u002Fsignin-github"," and ",[213,1335,1336],{},"\u002Fsignin-google",". Register those callback paths with each provider.",[209,1339,574,1340,263],{},[260,1341,154],{"href":1342},"\u002Fmodules\u002Fexternal-oauth\u002F",{"title":1344,"searchDepth":1345,"depth":1346,"links":1347},"",1,2,[1348,1349,1350,1351,1352,1353],{"id":289,"depth":1346,"text":290},{"id":580,"depth":1346,"text":581},{"id":677,"depth":1346,"text":678},{"id":772,"depth":1346,"text":773},{"id":1005,"depth":1346,"text":1006},{"id":1149,"depth":1346,"text":1150},"Every route that AuthEndpoints maps, with its auth, CSRF, ReAuth, and rate-limit requirements.","md",null,{},{"icon":124},{"title":121,"description":1354},"USGcPf3mdYo9n8CaC30dYgtqIABdE-fd0XanpZWFmkU",[1362,1364],{"title":109,"path":110,"stem":111,"description":1363,"icon":112,"children":-1},"Common composition patterns for cookie web clients, Identity bearer, JWT-only, and custom paths.",{"title":126,"path":127,"stem":128,"description":1365,"icon":69,"children":-1},"Account lifecycle endpoints — register, confirm, forgot\u002Freset password, manage info and 2FA.",1791123627850]