[{"data":1,"prerenderedAt":1556},["ShallowReactive",2],{"navigation":3,"\u002Fauth\u002Fuser-management-api":189,"\u002Fauth\u002Fuser-management-api-surround":1551},[4,34,60,116,137,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":33},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,18,23,28],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":5,"path":16,"stem":17,"icon":6},"\u002Fgetting-started\u002Fgetting-started","1.getting-started\u002F2.getting-started",{"title":19,"path":20,"stem":21,"icon":22},"Choosing a Preset","\u002Fgetting-started\u002Fchoosing-a-preset","1.getting-started\u002F3.choosing-a-preset","i-lucide-git-branch",{"title":24,"path":25,"stem":26,"icon":27},"Deployment","\u002Fgetting-started\u002Fdeployment","1.getting-started\u002F4.deployment","i-lucide-cloud",{"title":29,"path":30,"stem":31,"icon":32},"Background Maintenance","\u002Fgetting-started\u002Fbackground-maintenance","1.getting-started\u002F5.background-maintenance","i-lucide-timer-reset",false,{"title":35,"icon":36,"path":37,"stem":38,"children":39,"page":33},"Build","i-lucide-wrench","\u002Fbuild","2.build",[40,45,50,55],{"title":41,"path":42,"stem":43,"icon":44},"Routers & Prefixes","\u002Fbuild\u002Frouters-and-prefixes","2.build\u002F1.routers-and-prefixes","i-lucide-route",{"title":46,"path":47,"stem":48,"icon":49},"Configuration","\u002Fbuild\u002Fconfiguration","2.build\u002F2.configuration","i-lucide-settings",{"title":51,"path":52,"stem":53,"icon":54},"Authorization Dependencies","\u002Fbuild\u002Fauthorization-dependencies","2.build\u002F3.authorization-dependencies","i-lucide-shield-check",{"title":56,"path":57,"stem":58,"icon":59},"Command Line","\u002Fbuild\u002Fcli","2.build\u002F4.cli","i-lucide-terminal",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":33},"Auth","i-lucide-lock","\u002Fauth","3.auth",[66,71,76,81,86,91,96,101,106,111],{"title":67,"path":68,"stem":69,"icon":70},"OAuth & Social Login","\u002Fauth\u002Foauth-and-social-login","3.auth\u002F1.oauth-and-social-login","i-lucide-log-in",{"title":72,"path":73,"stem":74,"icon":75},"Multi-Frontend Support","\u002Fauth\u002Fmulti-frontend","3.auth\u002F10.multi-frontend","i-lucide-layout-grid",{"title":77,"path":78,"stem":79,"icon":80},"Sessions & Audit","\u002Fauth\u002Fsessions-and-audit","3.auth\u002F2.sessions-and-audit","i-lucide-monitor-smartphone",{"title":82,"path":83,"stem":84,"icon":85},"Passwordless & Messaging","\u002Fauth\u002Fpasswordless-and-messaging","3.auth\u002F3.passwordless-and-messaging","i-lucide-mail",{"title":87,"path":88,"stem":89,"icon":90},"JWT Tokens","\u002Fauth\u002Fjwt-tokens","3.auth\u002F4.jwt-tokens","i-lucide-key-round",{"title":92,"path":93,"stem":94,"icon":95},"User Management API","\u002Fauth\u002Fuser-management-api","3.auth\u002F5.user-management-api","i-lucide-users",{"title":97,"path":98,"stem":99,"icon":100},"User Invitations","\u002Fauth\u002Fuser-invitations","3.auth\u002F6.user-invitations","i-lucide-send",{"title":102,"path":103,"stem":104,"icon":105},"Roles & Permissions","\u002Fauth\u002Froles-and-permissions","3.auth\u002F7.roles-and-permissions","i-lucide-shield",{"title":107,"path":108,"stem":109,"icon":110},"ABAC","\u002Fauth\u002Fabac","3.auth\u002F8.abac","i-lucide-filter",{"title":112,"path":113,"stem":114,"icon":115},"User Status","\u002Fauth\u002Fuser-status","3.auth\u002F9.user-status","i-lucide-user-cog",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":33},"Enterprise","i-lucide-building-2","\u002Fenterprise","4.enterprise",[122,127,132],{"title":123,"path":124,"stem":125,"icon":126},"Core Authorization Concepts","\u002Fenterprise\u002Fcore-authorization-concepts","4.enterprise\u002F1.core-authorization-concepts","i-lucide-network",{"title":128,"path":129,"stem":130,"icon":131},"Entities","\u002Fenterprise\u002Fentities","4.enterprise\u002F2.entities","i-lucide-folder-tree",{"title":133,"path":134,"stem":135,"icon":136},"Entity Memberships","\u002Fenterprise\u002Fentity-memberships","4.enterprise\u002F3.entity-memberships","i-lucide-user-plus",{"title":138,"icon":139,"path":140,"stem":141,"children":142,"page":33},"Integrations","i-lucide-plug","\u002Fintegrations","5.integrations",[143,148],{"title":144,"path":145,"stem":146,"icon":147},"API Keys","\u002Fintegrations\u002Fapi-keys","5.integrations\u002F1.api-keys","i-lucide-key",{"title":149,"path":150,"stem":151,"icon":152},"OutlabsAuth UI","\u002Fintegrations\u002Foutlabsauth-ui","5.integrations\u002F2.outlabsauth-ui","i-lucide-layout-dashboard",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":33},"Reference","i-lucide-book-marked","\u002Freference","6.reference",[159,164,169,174,179,184],{"title":160,"path":161,"stem":162,"icon":163},"Data Models","\u002Freference\u002Fdata-models","6.reference\u002F1.data-models","i-lucide-database",{"title":165,"path":166,"stem":167,"icon":168},"Activity Tracking","\u002Freference\u002Factivity-tracking","6.reference\u002F2.activity-tracking","i-lucide-activity",{"title":170,"path":171,"stem":172,"icon":173},"Testing","\u002Freference\u002Ftesting","6.reference\u002F3.testing","i-lucide-flask-conical",{"title":175,"path":176,"stem":177,"icon":178},"Observability","\u002Freference\u002Fobservability","6.reference\u002F4.observability","i-lucide-eye",{"title":180,"path":181,"stem":182,"icon":183},"Metrics Reference","\u002Freference\u002Fmetrics-reference","6.reference\u002F5.metrics-reference","i-lucide-chart-bar",{"title":185,"path":186,"stem":187,"icon":188},"Log Events Reference","\u002Freference\u002Flog-events-reference","6.reference\u002F6.log-events-reference","i-lucide-scroll-text",{"id":190,"title":92,"body":191,"description":1544,"extension":1545,"links":1546,"meta":1547,"navigation":1548,"path":93,"seo":1549,"stem":94,"__hash__":1550},"docs\u002F3.auth\u002F5.user-management-api.md",{"type":192,"value":193,"toc":1529},"minimark",[194,205,217,232,235,240,284,314,325,341,343,347,426,428,432,435,506,513,515,519,754,769,826,828,835,940,942,946,949,1092,1101,1103,1107,1158,1160,1164,1216,1222,1224,1228,1231,1284,1286,1290,1293,1312,1364,1366,1370,1495,1497,1501,1525],[195,196,197],"note",{},[198,199,200,201,204],"p",{},"HTTP surface for user admin and self-service. Mount details: ",[202,203,41],"a",{"href":42},".",[198,206,207,208,212,213,216],{},"Paths below assume the common example mount ",[209,210,211],"code",{},"prefix=\"\u002Fv1\u002Fusers\"",". Your host may\nuse ",[209,214,215],{},"\u002Fiam\u002Fusers"," or another base — only the suffix after that prefix matters.",[198,218,219,220,224,225,228,229,204],{},"When this page and a running app disagree, trust ",[221,222,223],"strong",{},"live OpenAPI"," at\n",[209,226,227],{},"{your-api}\u002Fdocs"," and ",[209,230,231],{},"outlabs_auth\u002Frouters\u002Fusers.py",[233,234],"hr",{},[236,237,239],"h2",{"id":238},"what-to-mount","What to mount",[241,242,243,256],"table",{},[244,245,246],"thead",{},[247,248,249,253],"tr",{},[250,251,252],"th",{},"Factory",[250,254,255],{},"When",[257,258,259,270],"tbody",{},[247,260,261,267],{},[262,263,264],"td",{},[209,265,266],{},"get_users_router(auth, prefix=\"\u002Fv1\u002Fusers\")",[262,268,269],{},"Full admin + self-service (examples, OutlabsAuth UI)",[247,271,272,277],{},[262,273,274],{},[209,275,276],{},"get_self_service_users_router(...)",[262,278,279,280,283],{},"Tiny embed: own profile + permission ",[221,281,282],{},"names"," only",[285,286,291],"pre",{"className":287,"code":288,"language":289,"meta":290,"style":290},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from outlabs_auth.routers import get_users_router\n\napp.include_router(get_users_router(auth, prefix=\"\u002Fv1\u002Fusers\"))\n","python","",[209,292,293,301,308],{"__ignoreMap":290},[294,295,298],"span",{"class":296,"line":297},"line",1,[294,299,300],{},"from outlabs_auth.routers import get_users_router\n",[294,302,304],{"class":296,"line":303},2,[294,305,307],{"emptyLinePlaceholder":306},true,"\n",[294,309,311],{"class":296,"line":310},3,[294,312,313],{},"app.include_router(get_users_router(auth, prefix=\"\u002Fv1\u002Fusers\"))\n",[198,315,316,317,320,321,324],{},"Optional: ",[209,318,319],{},"requires_verification=True"," tightens auth on ",[209,322,323],{},"\u002Fme*"," routes.",[198,326,327,328,331,332,334,335,338,339,204],{},"Invites are mostly on the ",[221,329,330],{},"auth"," router — see ",[202,333,97],{"href":98},".\nThis router only exposes ",[209,336,337],{},"POST \u002F{user_id}\u002Fresend-invite",". Entity membership\nCRUD lives on the memberships router — see ",[202,340,133],{"href":134},[233,342],{},[236,344,346],{"id":345},"permissions-at-a-glance","Permissions at a glance",[241,348,349,359],{},[244,350,351],{},[247,352,353,356],{},[250,354,355],{},"Action",[250,357,358],{},"Typical permission",[257,360,361,371,381,391,401,416],{},[247,362,363,366],{},[262,364,365],{},"Create user",[262,367,368],{},[209,369,370],{},"user:create",[247,372,373,376],{},[262,374,375],{},"List \u002F get \u002F roles \u002F audit \u002F sessions (admin)",[262,377,378],{},[209,379,380],{},"user:read",[247,382,383,386],{},[262,384,385],{},"Update profile, status, roles, revoke sessions\u002Fkeys",[262,387,388],{},[209,389,390],{},"user:update",[247,392,393,396],{},[262,394,395],{},"Soft-delete",[262,397,398],{},[209,399,400],{},"user:delete",[247,402,403,409],{},[262,404,405,406],{},"Grant\u002Frevoke ",[209,407,408],{},"is_superuser",[262,410,411,412,415],{},"Superuser only (",[209,413,414],{},"require_superuser",")",[247,417,418,423],{},[262,419,420,422],{},[209,421,323],{}," self-service",[262,424,425],{},"Authenticated (optional email verification)",[233,427],{},[236,429,431],{"id":430},"simple-vs-enterprise-scope","Simple vs Enterprise scope",[198,433,434],{},"Same router for both presets. Behavior depends on flags:",[241,436,437,447],{},[244,438,439],{},[247,440,441,444],{},[250,442,443],{},"Concern",[250,445,446],{},"Behavior",[257,448,449,463,481,492],{},[247,450,451,460],{},[262,452,453,456,457,415],{},[221,454,455],{},"SimpleRBAC"," (",[209,458,459],{},"enable_entity_hierarchy=False",[262,461,462],{},"Scope filtering is effectively off — list\u002Fget are system-wide for permitted actors",[247,464,465,474],{},[262,466,467,469,470,473],{},[221,468,117],{}," + ",[209,471,472],{},"enforce_user_scope=True"," (default)",[262,475,476,477,480],{},"Non-global actors only see\u002Fmutate users in their entity trees. Out of scope → ",[221,478,479],{},"404"," (not 403). Self always allowed",[247,482,483,489],{},[262,484,485,488],{},[209,486,487],{},"root_entity_id"," on list",[262,490,491],{},"Narrows within the actor’s scope; never widens it",[247,493,494,503],{},[262,495,496,499,500],{},[209,497,498],{},"\u002Forphaned",", ",[209,501,502],{},"\u002F{id}\u002Fmembership-history",[262,504,505],{},"Meaningful when membership service exists (Enterprise); otherwise empty pages",[198,507,508,509,512],{},"Set ",[209,510,511],{},"enforce_user_scope=False"," only as a transitional escape hatch.",[233,514],{},[236,516,518],{"id":517},"admin-crud-and-lifecycle","Admin CRUD and lifecycle",[241,520,521,537],{},[244,522,523],{},[247,524,525,528,531,534],{},[250,526,527],{},"Method",[250,529,530],{},"Path",[250,532,533],{},"Permission",[250,535,536],{},"Notes",[257,538,539,560,594,612,630,648,666,697,715,732],{},[247,540,541,546,551,555],{},[262,542,543],{},[209,544,545],{},"POST",[262,547,548],{},[209,549,550],{},"\u002F",[262,552,553],{},[209,554,370],{},[262,556,557,558],{},"Admin create (not public register). Only superusers may set ",[209,559,408],{},[247,561,562,567,571,575],{},[262,563,564],{},[209,565,566],{},"GET",[262,568,569],{},[209,570,550],{},[262,572,573],{},[209,574,380],{},[262,576,577,578,499,581,499,584,499,587,499,590,499,592],{},"Paginated list. Query: ",[209,579,580],{},"page",[209,582,583],{},"limit",[209,585,586],{},"search",[209,588,589],{},"status",[209,591,408],{},[209,593,487],{},[247,595,596,600,605,609],{},[262,597,598],{},[209,599,566],{},[262,601,602],{},[209,603,604],{},"\u002F{user_id}",[262,606,607],{},[209,608,380],{},[262,610,611],{},"Single user (scoped)",[247,613,614,619,623,627],{},[262,615,616],{},[209,617,618],{},"PATCH",[262,620,621],{},[209,622,604],{},[262,624,625],{},[209,626,390],{},[262,628,629],{},"Admin profile update",[247,631,632,637,641,645],{},[262,633,634],{},[209,635,636],{},"DELETE",[262,638,639],{},[209,640,604],{},[262,642,643],{},[209,644,400],{},[262,646,647],{},"Soft delete",[247,649,650,654,659,663],{},[262,651,652],{},[209,653,618],{},[262,655,656],{},[209,657,658],{},"\u002F{user_id}\u002Fpassword",[262,660,661],{},[209,662,390],{},[262,664,665],{},"Admin set password (no current password)",[247,667,668,672,677,681],{},[262,669,670],{},[209,671,618],{},[262,673,674],{},[209,675,676],{},"\u002F{user_id}\u002Fstatus",[262,678,679],{},[209,680,390],{},[262,682,683,686,687,686,690,693,694],{},[209,684,685],{},"active"," \u002F ",[209,688,689],{},"suspended",[209,691,692],{},"banned"," only — not ",[209,695,696],{},"deleted",[247,698,699,703,708,712],{},[262,700,701],{},[209,702,545],{},[262,704,705],{},[209,706,707],{},"\u002F{user_id}\u002Frestore",[262,709,710],{},[209,711,390],{},[262,713,714],{},"Restore a deleted identity (does not restore grants\u002Fcredentials)",[247,716,717,721,726,729],{},[262,718,719],{},[209,720,618],{},[262,722,723],{},[209,724,725],{},"\u002F{user_id}\u002Fsuperuser",[262,727,728],{},"Superuser",[262,730,731],{},"Grant\u002Frevoke platform superuser; cannot revoke yourself",[247,733,734,738,743,747],{},[262,735,736],{},[209,737,545],{},[262,739,740],{},[209,741,742],{},"\u002F{user_id}\u002Fresend-invite",[262,744,745],{},[209,746,390],{},[262,748,749,750,753],{},"New invite token for ",[209,751,752],{},"INVITED"," users",[198,755,756,757,759,760,762,763,762,765,762,767,204],{},"List ",[209,758,589],{}," filter: ",[209,761,685],{}," | ",[209,764,689],{},[209,766,692],{},[209,768,696],{},[198,770,771,456,774,777,778,204,780,783,456,786,789,790,792,795,796,799,800,803,804,806,795,809,456,812,499,815,499,818,499,820,499,822,825],{},[221,772,773],{},"Create body",[209,775,776],{},"UserCreateRequest","): email, password, optional names \u002F phone \u002F\n",[209,779,408],{},[781,782],"br",{},[221,784,785],{},"Update body",[209,787,788],{},"UserUpdateRequest","): email, names, phone (partial).",[781,791],{},[221,793,794],{},"Responses",": ",[209,797,798],{},"UserResponse"," (UUID ",[209,801,802],{},"id",", profile fields, status flags).",[781,805],{},[221,807,808],{},"List",[209,810,811],{},"PaginatedResponse[UserResponse]",[209,813,814],{},"items",[209,816,817],{},"total",[209,819,580],{},[209,821,583],{},[209,823,824],{},"pages",").",[233,827],{},[236,829,831,832,415],{"id":830},"self-service-me","Self-service (",[209,833,834],{},"\u002Fme",[241,836,837,849],{},[244,838,839],{},[247,840,841,843,845,847],{},[250,842,527],{},[250,844,530],{},[250,846,61],{},[250,848,536],{},[257,850,851,867,884,903,919],{},[247,852,853,857,861,864],{},[262,854,855],{},[209,856,566],{},[262,858,859],{},[209,860,834],{},[262,862,863],{},"Authenticated",[262,865,866],{},"Own profile",[247,868,869,873,877,879],{},[262,870,871],{},[209,872,618],{},[262,874,875],{},[209,876,834],{},[262,878,863],{},[262,880,881,882,415],{},"Own profile (",[209,883,788],{},[247,885,886,890,895,897],{},[262,887,888],{},[209,889,545],{},[262,891,892],{},[209,893,894],{},"\u002Fme\u002Fchange-password",[262,896,863],{},[262,898,899,902],{},[209,900,901],{},"ChangePasswordRequest"," (current + new) → 204",[247,904,905,909,914,916],{},[262,906,907],{},[209,908,545],{},[262,910,911],{},[209,912,913],{},"\u002Fme\u002Fphone\u002Frequest-code",[262,915,863],{},[262,917,918],{},"OTP to registered phone (rate-limited) → 204",[247,920,921,925,930,932],{},[262,922,923],{},[209,924,545],{},[262,926,927],{},[209,928,929],{},"\u002Fme\u002Fphone\u002Fverify-code",[262,931,863],{},[262,933,934,937,938],{},[209,935,936],{},"PhoneVerifyCodeRequest"," → ",[209,939,798],{},[233,941],{},[236,943,945],{"id":944},"roles-and-effective-permissions","Roles and effective permissions",[198,947,948],{},"Direct role memberships (flat RBAC and Enterprise “direct” roles):",[241,950,951,963],{},[244,952,953],{},[247,954,955,957,959,961],{},[250,956,527],{},[250,958,530],{},[250,960,533],{},[250,962,536],{},[257,964,965,988,1006,1026,1044,1062],{},[247,966,967,971,976,980],{},[262,968,969],{},[209,970,566],{},[262,972,973],{},[209,974,975],{},"\u002F{user_id}\u002Froles",[262,977,978],{},[209,979,380],{},[262,981,982,937,985],{},[209,983,984],{},"?include_inactive",[209,986,987],{},"RoleResponse[]",[247,989,990,994,999,1003],{},[262,991,992],{},[209,993,566],{},[262,995,996],{},[209,997,998],{},"\u002F{user_id}\u002Frole-memberships",[262,1000,1001],{},[209,1002,380],{},[262,1004,1005],{},"Membership rows + embedded role",[247,1007,1008,1012,1016,1020],{},[262,1009,1010],{},[209,1011,545],{},[262,1013,1014],{},[209,1015,975],{},[262,1017,1018],{},[209,1019,390],{},[262,1021,1022,1025],{},[209,1023,1024],{},"AssignRoleRequest"," → membership (201). Actor must hold all permissions on the role",[247,1027,1028,1032,1037,1041],{},[262,1029,1030],{},[209,1031,636],{},[262,1033,1034],{},[209,1035,1036],{},"\u002F{user_id}\u002Froles\u002F{role_id}",[262,1038,1039],{},[209,1040,390],{},[262,1042,1043],{},"Soft-revoke",[247,1045,1046,1050,1055,1059],{},[262,1047,1048],{},[209,1049,618],{},[262,1051,1052],{},[209,1053,1054],{},"\u002F{user_id}\u002Frole-memberships\u002F{membership_id}",[262,1056,1057],{},[209,1058,390],{},[262,1060,1061],{},"Validity window \u002F status",[247,1063,1064,1068,1073,1082],{},[262,1065,1066],{},[209,1067,566],{},[262,1069,1070],{},[209,1071,1072],{},"\u002F{user_id}\u002Fpermissions",[262,1074,1075,1076,1079,1080],{},"Self ",[221,1077,1078],{},"or"," ",[209,1081,380],{},[262,1083,1084,1085,1088,1089],{},"Effective perms: direct roles ",[221,1086,1087],{},"and"," entity-membership roles when present → ",[209,1090,1091],{},"UserPermissionSource[]",[198,1093,1094,1095,1098,1099,204],{},"Entity-scoped role assignment (membership + roles on an entity) is ",[221,1096,1097],{},"not"," here —\nuse ",[202,1100,133],{"href":134},[233,1102],{},[236,1104,1106],{"id":1105},"orphans-and-membership-history-enterprise","Orphans and membership history (Enterprise)",[241,1108,1109,1121],{},[244,1110,1111],{},[247,1112,1113,1115,1117,1119],{},[250,1114,527],{},[250,1116,530],{},[250,1118,533],{},[250,1120,536],{},[257,1122,1123,1140],{},[247,1124,1125,1129,1133,1137],{},[262,1126,1127],{},[209,1128,566],{},[262,1130,1131],{},[209,1132,498],{},[262,1134,1135],{},[209,1136,380],{},[262,1138,1139],{},"Users with no active entity memberships. Empty for non-global scoped actors or without membership service",[247,1141,1142,1146,1151,1155],{},[262,1143,1144],{},[209,1145,566],{},[262,1147,1148],{},[209,1149,1150],{},"\u002F{user_id}\u002Fmembership-history",[262,1152,1153],{},[209,1154,380],{},[262,1156,1157],{},"Append-only entity membership lifecycle events",[233,1159],{},[236,1161,1163],{"id":1162},"personal-api-keys-admin-view","Personal API keys (admin view)",[241,1165,1166,1178],{},[244,1167,1168],{},[247,1169,1170,1172,1174,1176],{},[250,1171,527],{},[250,1173,530],{},[250,1175,533],{},[250,1177,536],{},[257,1179,1180,1198],{},[247,1181,1182,1186,1191,1195],{},[262,1183,1184],{},[209,1185,566],{},[262,1187,1188],{},[209,1189,1190],{},"\u002F{user_id}\u002Fapi-keys",[262,1192,1193],{},[209,1194,380],{},[262,1196,1197],{},"List personal keys (no secrets)",[247,1199,1200,1204,1209,1213],{},[262,1201,1202],{},[209,1203,636],{},[262,1205,1206],{},[209,1207,1208],{},"\u002F{user_id}\u002Fapi-keys\u002F{key_id}",[262,1210,1211],{},[209,1212,390],{},[262,1214,1215],{},"Admin revoke",[198,1217,1218,1219,204],{},"Self-service key minting and system\u002Fintegration keys:\n",[202,1220,1221],{"href":145},"API Key Host Integration",[233,1223],{},[236,1225,1227],{"id":1226},"sessions-social-accounts-audit-elsewhere","Sessions, social accounts, audit (elsewhere)",[198,1229,1230],{},"Do not duplicate those tables here:",[241,1232,1233,1243],{},[244,1234,1235],{},[247,1236,1237,1240],{},[250,1238,1239],{},"Area",[250,1241,1242],{},"Guide",[257,1244,1245,1260,1272],{},[247,1246,1247,1256],{},[262,1248,1249,1250,499,1253,415],{},"List \u002F revoke sessions (",[209,1251,1252],{},"\u002Fme\u002Fsessions",[209,1254,1255],{},"\u002F{user_id}\u002Fsessions",[262,1257,1258],{},[202,1259,77],{"href":78},[247,1261,1262,1269],{},[262,1263,1264,1265,1268],{},"Per-user audit (",[209,1266,1267],{},"\u002F{user_id}\u002Faudit-events",") + cross-user search",[262,1270,1271],{},"same",[247,1273,1274,1280],{},[262,1275,1276,1277,415],{},"Link \u002F unlink social (",[209,1278,1279],{},"\u002Fme\u002Fsocial-accounts",[262,1281,1282],{},[202,1283,67],{"href":68},[233,1285],{},[236,1287,1289],{"id":1288},"minimal-self-service-router","Minimal self-service router",[198,1291,1292],{},"For hosts that only need “who am I?”:",[285,1294,1296],{"className":287,"code":1295,"language":289,"meta":290,"style":290},"from outlabs_auth.routers import get_self_service_users_router\n\napp.include_router(get_self_service_users_router(auth, prefix=\"\u002Fv1\u002Faccount\"))\n",[209,1297,1298,1303,1307],{"__ignoreMap":290},[294,1299,1300],{"class":296,"line":297},[294,1301,1302],{},"from outlabs_auth.routers import get_self_service_users_router\n",[294,1304,1305],{"class":296,"line":303},[294,1306,307],{"emptyLinePlaceholder":306},[294,1308,1309],{"class":296,"line":310},[294,1310,1311],{},"app.include_router(get_self_service_users_router(auth, prefix=\"\u002Fv1\u002Faccount\"))\n",[241,1313,1314,1325],{},[244,1315,1316],{},[247,1317,1318,1320,1322],{},[250,1319,527],{},[250,1321,530],{},[250,1323,1324],{},"Response",[257,1326,1327,1341],{},[247,1328,1329,1333,1337],{},[262,1330,1331],{},[209,1332,566],{},[262,1334,1335],{},[209,1336,834],{},[262,1338,1339],{},[209,1340,798],{},[247,1342,1343,1347,1352],{},[262,1344,1345],{},[209,1346,566],{},[262,1348,1349],{},[209,1350,1351],{},"\u002Fme\u002Fpermissions",[262,1353,1354,1357,1358,1360,1361,415],{},[209,1355,1356],{},"list[str]"," — permission ",[221,1359,282],{}," only (not ",[209,1362,1363],{},"UserPermissionSource",[233,1365],{},[236,1367,1369],{"id":1368},"schemas-quick-reference","Schemas quick reference",[241,1371,1372,1382],{},[244,1373,1374],{},[247,1375,1376,1379],{},[250,1377,1378],{},"Model",[250,1380,1381],{},"Role",[257,1383,1384,1393,1404,1416,1429,1438,1450,1463,1472,1485],{},[247,1385,1386,1390],{},[262,1387,1388],{},[209,1389,798],{},[262,1391,1392],{},"Profile payload",[247,1394,1395,1401],{},[262,1396,1397,686,1399],{},[209,1398,776],{},[209,1400,788],{},[262,1402,1403],{},"Admin create \u002F patch",[247,1405,1406,1413],{},[262,1407,1408,686,1410],{},[209,1409,901],{},[209,1411,1412],{},"AdminResetPasswordRequest",[262,1414,1415],{},"Password changes",[247,1417,1418,1426],{},[262,1419,1420,686,1423],{},[209,1421,1422],{},"UserStatusUpdateRequest",[209,1424,1425],{},"UserSuperuserUpdateRequest",[262,1427,1428],{},"Status \u002F superuser",[247,1430,1431,1435],{},[262,1432,1433],{},[209,1434,936],{},[262,1436,1437],{},"Phone OTP confirm",[247,1439,1440,1447],{},[262,1441,1442,686,1444],{},[209,1443,1024],{},[209,1445,1446],{},"UserRoleMembershipUpdate",[262,1448,1449],{},"Direct roles",[247,1451,1452,1460],{},[262,1453,1454,686,1457],{},[209,1455,1456],{},"UserRoleMembershipResponse",[209,1458,1459],{},"UserRoleMembershipDetailResponse",[262,1461,1462],{},"Membership rows",[247,1464,1465,1469],{},[262,1466,1467],{},[209,1468,1363],{},[262,1470,1471],{},"Effective permission + source metadata",[247,1473,1474,1482],{},[262,1475,1476,686,1479],{},[209,1477,1478],{},"OrphanedUserResponse",[209,1480,1481],{},"MembershipHistoryEventResponse",[262,1483,1484],{},"Enterprise helpers",[247,1486,1487,1492],{},[262,1488,1489],{},[209,1490,1491],{},"PaginatedResponse[T]",[262,1493,1494],{},"List envelopes",[233,1496],{},[236,1498,1500],{"id":1499},"related","Related",[1502,1503,1504,1509,1513,1517,1521],"ul",{},[1505,1506,1507],"li",{},[202,1508,112],{"href":113},[1505,1510,1511],{},[202,1512,97],{"href":98},[1505,1514,1515],{},[202,1516,102],{"href":103},[1505,1518,1519],{},[202,1520,77],{"href":78},[1505,1522,1523],{},[202,1524,123],{"href":124},[1526,1527,1528],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":290,"searchDepth":297,"depth":303,"links":1530},[1531,1532,1533,1534,1535,1537,1538,1539,1540,1541,1542,1543],{"id":238,"depth":303,"text":239},{"id":345,"depth":303,"text":346},{"id":430,"depth":303,"text":431},{"id":517,"depth":303,"text":518},{"id":830,"depth":303,"text":1536},"Self-service (\u002Fme)",{"id":944,"depth":303,"text":945},{"id":1105,"depth":303,"text":1106},{"id":1162,"depth":303,"text":1163},{"id":1226,"depth":303,"text":1227},{"id":1288,"depth":303,"text":1289},{"id":1368,"depth":303,"text":1369},{"id":1499,"depth":303,"text":1500},"Admin and self-service user HTTP surface.","md",null,{},{"icon":95},{"title":92,"description":1544},"GMPfPl9scrzCKRgmNl2KGOZwq9KhHkx9BMW_pG4HBXs",[1552,1554],{"title":87,"path":88,"stem":89,"description":1553,"icon":90,"children":-1},"Access and refresh token behavior.",{"title":97,"path":98,"stem":99,"description":1555,"icon":100,"children":-1},"Invite-by-email onboarding.",1787472745731]