[{"data":1,"prerenderedAt":742},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin\u002F":3,"docs-nav":289},{"id":4,"title":5,"body":6,"description":16,"extension":279,"layout":280,"meta":281,"navGroup":280,"navGroupOrder":280,"navOrder":280,"navTitle":5,"navigation":148,"originalPath":282,"path":283,"redirect":280,"seo":284,"stem":285,"updated":286,"version":287,"__hash__":288},"docs\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin.md","User Login Flows",{"type":7,"value":8,"toc":277},"minimark",[9,13,17,273],[10,11,5],"h1",{"id":12},"user-login-flows",[14,15,16],"p",{},"This represents the login flow as of FlowFuse 1.2, that incorporates optional\nSSO",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sequenceDiagram\nparticipant U as User\nparticipant B as Browser\nparticipant RT as ForgeApp\nparticipant DB as Database\nparticipant IDP as IdentifyProvider\nU->>B: Enters username\u002Femail on sign-up page\nU->>B: Clicks login\nB->>RT: POST \u002Faccount\u002Flogin (username=XYZ)\nRT->DB: Checks username\u002Femail against list of SSO registered domains\nalt Email not SSO enabled\n    RT->>B: 403:{ code: 'password_required' }\n    B->>U: Shows password box\n    U->>B: Enters password\n    U->>B: Clicks login\n    B->>RT: POST \u002Faccount\u002Flogin (username\u002Fpassword)\n    RT->>DB: Validates username\u002Fpassword\n    RT->>B: 200:{}\nend\n\nalt Email SSO enabled\n    alt Username provided or Password provided\n        RT->>B: 403:{ code:'sso_required', error:'Please login with your email' }\n        B->>U: Prompts user to enter email not username\n    end\n    alt Email provided\n        RT->>B: 403:{ code:'sso_required', redirect:'\u002Faccount\u002Flogin?u=\u003Cbase64 encoded email>' }\n        B->>RT: GET \u002Faccount\u002Flogin?u=\u003Cbase64 encoded email>\n        RT->>RT: passport.authenticate\n        RT->>IDP: SAML exchange\n        IDP->>IDP: User authentication\n        IDP->>RT: POST \u003CTBD>\n        RT->>DB: Verify Email against users\n        alt Valid User\n            RT->>DB: create session\n            RT->>B: redirect to \u002F\n            else Unknown User\n            RT->>B: redirect to \u002F\n        end\n    end\nend\n","mermaid","",[25,26,27,35,41,47,53,59,65,71,77,83,89,95,101,107,113,119,125,131,137,143,150,156,162,168,174,180,186,192,198,204,210,216,222,228,234,240,246,252,257,263,268],"code",{"__ignoreMap":23},[28,29,32],"span",{"class":30,"line":31},"line",1,[28,33,34],{},"sequenceDiagram\n",[28,36,38],{"class":30,"line":37},2,[28,39,40],{},"participant U as User\n",[28,42,44],{"class":30,"line":43},3,[28,45,46],{},"participant B as Browser\n",[28,48,50],{"class":30,"line":49},4,[28,51,52],{},"participant RT as ForgeApp\n",[28,54,56],{"class":30,"line":55},5,[28,57,58],{},"participant DB as Database\n",[28,60,62],{"class":30,"line":61},6,[28,63,64],{},"participant IDP as IdentifyProvider\n",[28,66,68],{"class":30,"line":67},7,[28,69,70],{},"U->>B: Enters username\u002Femail on sign-up page\n",[28,72,74],{"class":30,"line":73},8,[28,75,76],{},"U->>B: Clicks login\n",[28,78,80],{"class":30,"line":79},9,[28,81,82],{},"B->>RT: POST \u002Faccount\u002Flogin (username=XYZ)\n",[28,84,86],{"class":30,"line":85},10,[28,87,88],{},"RT->DB: Checks username\u002Femail against list of SSO registered domains\n",[28,90,92],{"class":30,"line":91},11,[28,93,94],{},"alt Email not SSO enabled\n",[28,96,98],{"class":30,"line":97},12,[28,99,100],{},"    RT->>B: 403:{ code: 'password_required' }\n",[28,102,104],{"class":30,"line":103},13,[28,105,106],{},"    B->>U: Shows password box\n",[28,108,110],{"class":30,"line":109},14,[28,111,112],{},"    U->>B: Enters password\n",[28,114,116],{"class":30,"line":115},15,[28,117,118],{},"    U->>B: Clicks login\n",[28,120,122],{"class":30,"line":121},16,[28,123,124],{},"    B->>RT: POST \u002Faccount\u002Flogin (username\u002Fpassword)\n",[28,126,128],{"class":30,"line":127},17,[28,129,130],{},"    RT->>DB: Validates username\u002Fpassword\n",[28,132,134],{"class":30,"line":133},18,[28,135,136],{},"    RT->>B: 200:{}\n",[28,138,140],{"class":30,"line":139},19,[28,141,142],{},"end\n",[28,144,146],{"class":30,"line":145},20,[28,147,149],{"emptyLinePlaceholder":148},true,"\n",[28,151,153],{"class":30,"line":152},21,[28,154,155],{},"alt Email SSO enabled\n",[28,157,159],{"class":30,"line":158},22,[28,160,161],{},"    alt Username provided or Password provided\n",[28,163,165],{"class":30,"line":164},23,[28,166,167],{},"        RT->>B: 403:{ code:'sso_required', error:'Please login with your email' }\n",[28,169,171],{"class":30,"line":170},24,[28,172,173],{},"        B->>U: Prompts user to enter email not username\n",[28,175,177],{"class":30,"line":176},25,[28,178,179],{},"    end\n",[28,181,183],{"class":30,"line":182},26,[28,184,185],{},"    alt Email provided\n",[28,187,189],{"class":30,"line":188},27,[28,190,191],{},"        RT->>B: 403:{ code:'sso_required', redirect:'\u002Faccount\u002Flogin?u=\u003Cbase64 encoded email>' }\n",[28,193,195],{"class":30,"line":194},28,[28,196,197],{},"        B->>RT: GET \u002Faccount\u002Flogin?u=\u003Cbase64 encoded email>\n",[28,199,201],{"class":30,"line":200},29,[28,202,203],{},"        RT->>RT: passport.authenticate\n",[28,205,207],{"class":30,"line":206},30,[28,208,209],{},"        RT->>IDP: SAML exchange\n",[28,211,213],{"class":30,"line":212},31,[28,214,215],{},"        IDP->>IDP: User authentication\n",[28,217,219],{"class":30,"line":218},32,[28,220,221],{},"        IDP->>RT: POST \u003CTBD>\n",[28,223,225],{"class":30,"line":224},33,[28,226,227],{},"        RT->>DB: Verify Email against users\n",[28,229,231],{"class":30,"line":230},34,[28,232,233],{},"        alt Valid User\n",[28,235,237],{"class":30,"line":236},35,[28,238,239],{},"            RT->>DB: create session\n",[28,241,243],{"class":30,"line":242},36,[28,244,245],{},"            RT->>B: redirect to \u002F\n",[28,247,249],{"class":30,"line":248},37,[28,250,251],{},"            else Unknown User\n",[28,253,255],{"class":30,"line":254},38,[28,256,245],{},[28,258,260],{"class":30,"line":259},39,[28,261,262],{},"        end\n",[28,264,266],{"class":30,"line":265},40,[28,267,179],{},[28,269,271],{"class":30,"line":270},41,[28,272,142],{},[274,275,276],"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":23,"searchDepth":49,"depth":49,"links":278},[],"md",null,{},"contribute\u002Fworkflows\u002Flogin.md","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Flogin",{"title":5,"description":16},"docs\u002Fcontribute\u002Fworkflows\u002Flogin","2024-07-11 18:05:53 +0530","2.33.2","NjHAQwV2KxJPN1MBuliYRoiUXBIc2u4mPxELk7_kO64",[290,297,316,327],{"name":291,"order":31,"children":292},"FlowFuse User Manuals",[293],{"title":294,"path":295,"group":291,"groupOrder":31,"order":37,"children":296},"FlowFuse API","\u002Fdocs\u002Fapi",[],{"name":298,"order":49,"children":299},"FlowFuse Self-Hosted",[300,304],{"title":301,"path":302,"group":298,"groupOrder":49,"order":31,"children":303},"Quick Start","\u002Fdocs\u002Fquick-start",[],{"title":305,"path":306,"group":298,"groupOrder":49,"order":43,"children":307},"Upgrading FlowFuse","\u002Fdocs\u002Fupgrade",[308,312],{"title":309,"path":310,"order":280,"children":311},"Installing a license","\u002Fdocs\u002Fupgrade\u002Fopen-source-to-premium",[],{"title":313,"path":314,"order":280,"children":315},"Upgrading the Node-RED version","\u002Fdocs\u002Fupgrade\u002Fnodered-version",[],{"name":317,"order":55,"children":318},"Support",[319,323],{"title":320,"path":321,"group":317,"groupOrder":55,"order":43,"children":322},"Premium Support","\u002Fdocs\u002Fpremium-support",[],{"title":324,"path":325,"group":317,"groupOrder":55,"order":280,"children":326},"Debugging Node-RED issues","\u002Fdocs\u002Fdebugging",[],{"name":328,"order":280,"children":329},"Other",[330,378,390,467,515,534,608,619],{"title":331,"path":332,"order":280,"children":333},"admin","\u002Fdocs\u002Fadmin",[334,338,350,358,362,366,370,374],{"title":335,"path":336,"order":31,"children":337},"Administering FlowFuse","\u002Fdocs\u002Fadmin\u002Fintroduction",[],{"title":339,"path":340,"order":280,"children":341},"Configuring Single Sign-On (SSO)","\u002Fdocs\u002Fadmin\u002Fsso",[342,346],{"title":343,"path":344,"order":280,"children":345},"LDAP SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fldap",[],{"title":347,"path":348,"order":280,"children":349},"SAML SSO","\u002Fdocs\u002Fadmin\u002Fsso\u002Fsaml",[],{"title":351,"path":352,"order":280,"children":353},"hardening","\u002Fdocs\u002Fadmin\u002Fhardening",[354],{"title":355,"path":356,"order":280,"children":357},"Kubernetes Hardening","\u002Fdocs\u002Fadmin\u002Fhardening\u002Fkubernetes",[],{"title":359,"path":360,"order":280,"children":361},"Monitoring","\u002Fdocs\u002Fadmin\u002Fmonitoring",[],{"title":363,"path":364,"order":280,"children":365},"Observability","\u002Fdocs\u002Fadmin\u002Fobservability",[],{"title":367,"path":368,"order":280,"children":369},"Soft Launch Enablement","\u002Fdocs\u002Fadmin\u002Ffeature-flags",[],{"title":371,"path":372,"order":280,"children":373},"Telemetry","\u002Fdocs\u002Fadmin\u002Ftelemetry",[],{"title":375,"path":376,"order":280,"children":377},"User Management","\u002Fdocs\u002Fadmin\u002Fuser-management",[],{"title":379,"path":380,"order":280,"children":381},"cloud","\u002Fdocs\u002Fcloud",[382,386],{"title":383,"path":384,"order":31,"children":385},"Introduction","\u002Fdocs\u002Fcloud\u002Fintroduction",[],{"title":387,"path":388,"order":280,"children":389},"FlowFuse Cloud Billing","\u002Fdocs\u002Fcloud\u002Fbilling",[],{"title":391,"path":392,"order":280,"children":393},"contribute","\u002Fdocs\u002Fcontribute",[394,397,401,405,409,413,417,425,459,463],{"title":383,"path":395,"order":31,"children":396},"\u002Fdocs\u002Fcontribute\u002Fintroduction",[],{"title":398,"path":399,"order":280,"children":400},"Adding Template Settings","\u002Fdocs\u002Fcontribute\u002Fadding-template-settings",[],{"title":402,"path":403,"order":280,"children":404},"API Design","\u002Fdocs\u002Fcontribute\u002Fapi-design",[],{"title":406,"path":407,"order":280,"children":408},"Creating debug stack containers","\u002Fdocs\u002Fcontribute\u002Fcreating-debug-stack-containers",[],{"title":410,"path":411,"order":280,"children":412},"Database migrations","\u002Fdocs\u002Fcontribute\u002Fdb-migrations",[],{"title":414,"path":415,"order":280,"children":416},"FlowFuse Architecture","\u002Fdocs\u002Fcontribute\u002Farchitecture",[],{"title":418,"path":419,"order":280,"children":420},"Local Install","\u002Fdocs\u002Fcontribute\u002Flocal",[421],{"title":422,"path":423,"order":280,"children":424},"Local Stacks","\u002Fdocs\u002Fcontribute\u002Flocal\u002Fstacks",[],{"title":426,"path":427,"order":280,"children":428},"State Flows","\u002Fdocs\u002Fcontribute\u002Fworkflows",[429,433,437,441,445,449,453,455],{"title":430,"path":431,"order":280,"children":432},"Device Editor","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fdevice-editor",[],{"title":434,"path":435,"order":280,"children":436},"Instance states","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-states",[],{"title":438,"path":439,"order":280,"children":440},"Invite External Users","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Finvite-external-user",[],{"title":442,"path":443,"order":280,"children":444},"Project Creation","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fproject-create",[],{"title":446,"path":447,"order":280,"children":448},"Reset Password Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fpassword-reset",[],{"title":450,"path":451,"order":280,"children":452},"Team creation Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fteam-create",[],{"title":5,"path":283,"order":280,"children":454},[],{"title":456,"path":457,"order":280,"children":458},"User Sign up Flow","\u002Fdocs\u002Fcontribute\u002Fworkflows\u002Fsignup",[],{"title":460,"path":461,"order":280,"children":462},"Team Broker","\u002Fdocs\u002Fcontribute\u002Fteam-broker",[],{"title":464,"path":465,"order":280,"children":466},"Working with Feature Flags","\u002Fdocs\u002Fcontribute\u002Ffeature-flags",[],{"title":468,"path":469,"order":280,"children":470},"device-agent","\u002Fdocs\u002Fdevice-agent",[471,475,478,482,486,490],{"title":472,"path":473,"order":31,"children":474},"FlowFuse Device Agent Introduction","\u002Fdocs\u002Fdevice-agent\u002Fintroduction",[],{"title":301,"path":476,"order":37,"children":477},"\u002Fdocs\u002Fdevice-agent\u002Fquickstart",[],{"title":479,"path":480,"order":49,"children":481},"Register your Remote Instance","\u002Fdocs\u002Fdevice-agent\u002Fregister",[],{"title":483,"path":484,"order":55,"children":485},"Running the Agent","\u002Fdocs\u002Fdevice-agent\u002Frunning",[],{"title":487,"path":488,"order":61,"children":489},"Deploying your Flows","\u002Fdocs\u002Fdevice-agent\u002Fdeploy",[],{"title":491,"path":492,"order":280,"children":493},"install","\u002Fdocs\u002Fdevice-agent\u002Finstall",[494,499,503,507,511],{"title":495,"path":496,"group":497,"order":31,"children":498},"Overview","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview","DeviceAgentInstallation",[],{"title":500,"path":501,"group":497,"order":37,"children":502},"Device Agent Installer","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdevice-agent-installer",[],{"title":504,"path":505,"group":497,"order":43,"children":506},"Docker Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fdocker",[],{"title":508,"path":509,"group":497,"order":49,"children":510},"Kubernetes Install","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fkubernetes",[],{"title":512,"path":513,"group":497,"order":55,"children":514},"Manual Install with NPM","\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Fmanual",[],{"title":516,"path":517,"order":280,"children":518},"hardware","\u002Fdocs\u002Fhardware",[519,522,526,530],{"title":495,"path":520,"order":31,"children":521},"\u002Fdocs\u002Fhardware\u002Fintroduction",[],{"title":523,"path":524,"order":37,"children":525},"ctrlX - Node-RED","\u002Fdocs\u002Fhardware\u002Fctrlx-node-red",[],{"title":527,"path":528,"order":43,"children":529},"ctrlX - Device Agent","\u002Fdocs\u002Fhardware\u002Fctrlx-device-agent",[],{"title":531,"path":532,"order":43,"children":533},"Raspberry Pi with Raspbian","\u002Fdocs\u002Fhardware\u002Fraspbian",[],{"title":491,"path":535,"order":280,"children":536},"\u002Fdocs\u002Finstall",[537,540,544,548,568,572,576,580],{"title":495,"path":538,"order":31,"children":539},"\u002Fdocs\u002Finstall\u002Fintroduction",[],{"title":541,"path":542,"order":280,"children":543},"Configuring FlowFuse","\u002Fdocs\u002Finstall\u002Fconfiguration",[],{"title":545,"path":546,"order":280,"children":547},"DNS Setup","\u002Fdocs\u002Finstall\u002Fdns-setup",[],{"title":549,"path":550,"order":280,"children":551},"Docker install","\u002Fdocs\u002Finstall\u002Fdocker",[552,556,560,564],{"title":553,"path":554,"order":280,"children":555},"Add Project Stacks on Docker","\u002Fdocs\u002Finstall\u002Fdocker\u002Fstacks",[],{"title":557,"path":558,"order":280,"children":559},"Docker Engine on Windows","\u002Fdocs\u002Finstall\u002Fdocker\u002Fwindows-docker-ce",[],{"title":561,"path":562,"order":280,"children":563},"Docker from AWS Market Place","\u002Fdocs\u002Finstall\u002Fdocker\u002Faws-marketplace",[],{"title":565,"path":566,"order":280,"children":567},"Docker on Digital Ocean","\u002Fdocs\u002Finstall\u002Fdocker\u002Fdigital-ocean",[],{"title":569,"path":570,"order":280,"children":571},"Email configuration","\u002Fdocs\u002Finstall\u002Femail-providers",[],{"title":573,"path":574,"order":280,"children":575},"First Run Setup","\u002Fdocs\u002Finstall\u002Ffirst-run",[],{"title":577,"path":578,"order":280,"children":579},"FlowFuse File Storage","\u002Fdocs\u002Finstall\u002Ffile-storage",[],{"title":581,"path":582,"order":280,"children":583},"Install FlowFuse on Kubernetes","\u002Fdocs\u002Finstall\u002Fkubernetes",[584,588,592,596,600,604],{"title":585,"path":586,"order":280,"children":587},"AWS EKS Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws",[],{"title":589,"path":590,"order":280,"children":591},"AWS EKS Installation with Terraform and Helm","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Faws-terraform",[],{"title":593,"path":594,"order":280,"children":595},"Digital Ocean Kubernetes Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fdigital-ocean",[],{"title":597,"path":598,"order":280,"children":599},"Ingress Controller Migration","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fingress-controller-migration",[],{"title":601,"path":602,"order":280,"children":603},"Kubernetes Project Stacks","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fstacks",[],{"title":605,"path":606,"order":280,"children":607},"OpenShift Installation","\u002Fdocs\u002Finstall\u002Fkubernetes\u002Fopenshift",[],{"title":609,"path":610,"order":280,"children":611},"migration","\u002Fdocs\u002Fmigration",[612,615],{"title":383,"path":613,"order":31,"children":614},"\u002Fdocs\u002Fmigration\u002Fintroduction",[],{"title":616,"path":617,"order":280,"children":618},"Node-RED Tools plugin","\u002Fdocs\u002Fmigration\u002Fnode-red-tools",[],{"title":620,"path":621,"order":280,"children":622},"user","\u002Fdocs\u002Fuser",[623,627,631,635,639,643,647,651,655,659,663,667,679,683,687,691,695,699,703,707,711,715,719,723,727,731,734,738],{"title":624,"path":625,"order":31,"children":626},"Getting Started","\u002Fdocs\u002Fuser\u002Fintroduction",[],{"title":628,"path":629,"order":31,"children":630},"Static asset service","\u002Fdocs\u002Fuser\u002Fstatic-asset-service",[],{"title":632,"path":633,"order":37,"children":634},"Bill of Materials","\u002Fdocs\u002Fuser\u002Fbill-of-materials",[],{"title":636,"path":637,"order":37,"children":638},"FlowFuse Concepts","\u002Fdocs\u002Fuser\u002Fconcepts",[],{"title":640,"path":641,"order":85,"children":642},"Instance States","\u002Fdocs\u002Fuser\u002Finstance-states",[],{"title":644,"path":645,"order":280,"children":646},"Changing the Stack","\u002Fdocs\u002Fuser\u002Fchangestack",[],{"title":648,"path":649,"order":280,"children":650},"Custom Hostnames","\u002Fdocs\u002Fuser\u002Fcustom-hostnames",[],{"title":652,"path":653,"order":280,"children":654},"Custom Node Packages","\u002Fdocs\u002Fuser\u002Fcustom-npm-packages",[],{"title":656,"path":657,"order":280,"children":658},"Dashboards","\u002Fdocs\u002Fuser\u002Fdashboards",[],{"title":660,"path":661,"order":280,"children":662},"DevOps Pipelines","\u002Fdocs\u002Fuser\u002Fdevops-pipelines",[],{"title":664,"path":665,"order":280,"children":666},"Environment Variables","\u002Fdocs\u002Fuser\u002Fenvvar",[],{"title":668,"path":669,"order":280,"children":670},"FlowFuse Expert","\u002Fdocs\u002Fuser\u002Fexpert",[671,675],{"title":672,"path":673,"order":280,"children":674},"AI in Node-RED","\u002Fdocs\u002Fuser\u002Fexpert\u002Fnode-red-embedded-ai",[],{"title":676,"path":677,"order":280,"children":678},"Chat Interface","\u002Fdocs\u002Fuser\u002Fexpert\u002Fchat",[],{"title":680,"path":681,"order":280,"children":682},"FlowFuse File Nodes","\u002Fdocs\u002Fuser\u002Ffilenodes",[],{"title":684,"path":685,"order":280,"children":686},"FlowFuse MQTT Nodes","\u002Fdocs\u002Fuser\u002Fmqtt-nodes",[],{"title":688,"path":689,"order":280,"children":690},"FlowFuse Persistent Context","\u002Fdocs\u002Fuser\u002Fpersistent-context",[],{"title":692,"path":693,"order":280,"children":694},"FlowFuse Project Nodes","\u002Fdocs\u002Fuser\u002Fprojectnodes",[],{"title":696,"path":697,"order":280,"children":698},"FlowFuse Tables","\u002Fdocs\u002Fuser\u002Fff-tables",[],{"title":700,"path":701,"order":280,"children":702},"Groups","\u002Fdocs\u002Fuser\u002Fdevice-groups",[],{"title":704,"path":705,"order":280,"children":706},"High Availability mode","\u002Fdocs\u002Fuser\u002Fhigh-availability",[],{"title":708,"path":709,"order":280,"children":710},"HTTP Access Tokens","\u002Fdocs\u002Fuser\u002Fhttp-access-tokens",[],{"title":712,"path":713,"order":280,"children":714},"Instance Settings","\u002Fdocs\u002Fuser\u002Finstance-settings",[],{"title":716,"path":717,"order":280,"children":718},"Logging","\u002Fdocs\u002Fuser\u002Flogs",[],{"title":720,"path":721,"order":280,"children":722},"Role-Based Access Control","\u002Fdocs\u002Fuser\u002Frole-based-access-control",[],{"title":724,"path":725,"order":280,"children":726},"Shared Team Library","\u002Fdocs\u002Fuser\u002Fshared-library",[],{"title":728,"path":729,"order":280,"children":730},"Snapshots","\u002Fdocs\u002Fuser\u002Fsnapshots",[],{"title":460,"path":732,"order":280,"children":733},"\u002Fdocs\u002Fuser\u002Fteambroker",[],{"title":735,"path":736,"order":280,"children":737},"Teams","\u002Fdocs\u002Fuser\u002Fteam",[],{"title":739,"path":740,"order":280,"children":741},"User Settings","\u002Fdocs\u002Fuser\u002Fuser-settings",[],1786546038218]