[{"data":1,"prerenderedAt":1799},["ShallowReactive",2],{"navigation":3,"\u002Fsettings\u002Faccess":773,"\u002Fsettings\u002Faccess-surround":1794},[4,28,63,85,103,112,269,355,453,485,506,542,576,594,647,669,693,721,747],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","\u002Fgetting-started","01.getting-started\u002F01.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fgetting-started\u002Finstallation","01.getting-started\u002F02.installation",{"title":16,"path":17,"stem":18},"Quickstart with AI","\u002Fgetting-started\u002Fquickstart-with-ai","01.getting-started\u002F03.quickstart-with-ai",{"title":20,"path":21,"stem":22},"Quickstart by Hand","\u002Fgetting-started\u002Fquickstart-by-hand","01.getting-started\u002F04.quickstart-by-hand",{"title":24,"path":25,"stem":26},"The Admin","\u002Fgetting-started\u002Fadmin-tour","01.getting-started\u002F05.admin-tour","i-lucide-rocket",{"title":29,"icon":30,"path":31,"stem":32,"children":33,"page":62},"Concepts","i-lucide-lightbulb","\u002Fconcepts","02.concepts",[34,38,42,46,50,54,58],{"title":35,"path":36,"stem":37},"PostgreSQL First","\u002Fconcepts\u002Fpostgresql-first","02.concepts\u002F01.postgresql-first",{"title":39,"path":40,"stem":41},"Resources","\u002Fconcepts\u002Fresources","02.concepts\u002F02.resources",{"title":43,"path":44,"stem":45},"Users and Roles","\u002Fconcepts\u002Fusers-and-roles","02.concepts\u002F03.users-and-roles",{"title":47,"path":48,"stem":49},"Permissions","\u002Fconcepts\u002Fpermissions","02.concepts\u002F04.permissions",{"title":51,"path":52,"stem":53},"Drafts and Publishing","\u002Fconcepts\u002Fdrafts-and-publishing","02.concepts\u002F05.drafts-and-publishing",{"title":55,"path":56,"stem":57},"Audit and Events","\u002Fconcepts\u002Faudit-and-events","02.concepts\u002F06.audit-and-events",{"title":59,"path":60,"stem":61},"Object Access","\u002Fconcepts\u002Fobject-access","02.concepts\u002F07.object-access",false,{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":62},"App","i-lucide-app-window","\u002Fapp","03.app",[69,73,77,81],{"title":70,"path":71,"stem":72},"The App","\u002Fapp\u002Foverview","03.app\u002F01.overview",{"title":74,"path":75,"stem":76},"DataViews","\u002Fapp\u002Fdataviews","03.app\u002F02.dataviews",{"title":78,"path":79,"stem":80},"Dashboards","\u002Fapp\u002Fdashboards","03.app\u002F03.dashboards",{"title":82,"path":83,"stem":84},"Arrange menu","\u002Fapp\u002Farrange-menu","03.app\u002F04.arrange-menu",{"title":86,"icon":87,"path":88,"stem":89,"children":90,"page":62},"Database","i-lucide-database","\u002Fdatabase","04.database",[91,95,99],{"title":92,"path":93,"stem":94},"Tables","\u002Fdatabase\u002Ftables","04.database\u002F01.tables",{"title":96,"path":97,"stem":98},"Views","\u002Fdatabase\u002Fviews","04.database\u002F02.views",{"title":100,"path":101,"stem":102},"Functions","\u002Fdatabase\u002Ffunctions","04.database\u002F03.functions",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":62},"SQL Console","i-lucide-square-terminal","\u002Fsql-console","05.sql-console",[109],{"title":104,"path":110,"stem":111},"\u002Fsql-console\u002Foverview","05.sql-console\u002F01.overview",{"title":74,"icon":113,"path":114,"stem":115,"children":116,"page":62},"i-lucide-layout-list","\u002Fdataviews","06.dataviews",[117,121,125,129,183,214],{"title":118,"path":119,"stem":120},"Overview","\u002Fdataviews\u002Foverview","06.dataviews\u002F01.overview",{"title":122,"path":123,"stem":124},"Creating a DataView","\u002Fdataviews\u002Fcreating","06.dataviews\u002F02.creating",{"title":126,"path":127,"stem":128},"Publishing","\u002Fdataviews\u002Fpublishing","06.dataviews\u002F03.publishing",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":62},"Types","i-lucide-shapes","\u002Fdataviews\u002Ftypes","06.dataviews\u002F04.types",[135,139,143,147,151,155,159,163,167,171,175,179],{"title":136,"path":137,"stem":138},"Table","\u002Fdataviews\u002Ftypes\u002Ftable","06.dataviews\u002F04.types\u002F01.table",{"title":140,"path":141,"stem":142},"Cards","\u002Fdataviews\u002Ftypes\u002Fcards","06.dataviews\u002F04.types\u002F02.cards",{"title":144,"path":145,"stem":146},"Kanban","\u002Fdataviews\u002Ftypes\u002Fkanban","06.dataviews\u002F04.types\u002F03.kanban",{"title":148,"path":149,"stem":150},"Calendar","\u002Fdataviews\u002Ftypes\u002Fcalendar","06.dataviews\u002F04.types\u002F04.calendar",{"title":152,"path":153,"stem":154},"Gantt","\u002Fdataviews\u002Ftypes\u002Fgantt","06.dataviews\u002F04.types\u002F05.gantt",{"title":156,"path":157,"stem":158},"Map","\u002Fdataviews\u002Ftypes\u002Fmap","06.dataviews\u002F04.types\u002F06.map",{"title":160,"path":161,"stem":162},"Tree","\u002Fdataviews\u002Ftypes\u002Ftree","06.dataviews\u002F04.types\u002F07.tree",{"title":164,"path":165,"stem":166},"Form","\u002Fdataviews\u002Ftypes\u002Fform","06.dataviews\u002F04.types\u002F08.form",{"title":168,"path":169,"stem":170},"Master-detail","\u002Fdataviews\u002Ftypes\u002Fmaster-detail","06.dataviews\u002F04.types\u002F09.master-detail",{"title":172,"path":173,"stem":174},"Settings","\u002Fdataviews\u002Ftypes\u002Fsettings","06.dataviews\u002F04.types\u002F10.settings",{"title":176,"path":177,"stem":178},"Custom","\u002Fdataviews\u002Ftypes\u002Fcustom","06.dataviews\u002F04.types\u002F11.custom",{"title":180,"path":181,"stem":182},"External Frame","\u002Fdataviews\u002Ftypes\u002Fexternal-frame","06.dataviews\u002F04.types\u002F12.external-frame",{"title":172,"icon":184,"path":185,"stem":186,"children":187,"page":62},"i-lucide-settings-2","\u002Fdataviews\u002Fsettings","06.dataviews\u002F05.settings",[188,192,196,199,202,206,210],{"title":189,"path":190,"stem":191},"General","\u002Fdataviews\u002Fsettings\u002Fgeneral","06.dataviews\u002F05.settings\u002F01.general",{"title":193,"path":194,"stem":195},"Data","\u002Fdataviews\u002Fsettings\u002Fdata","06.dataviews\u002F05.settings\u002F02.data",{"title":96,"path":197,"stem":198},"\u002Fdataviews\u002Fsettings\u002Fviews","06.dataviews\u002F05.settings\u002F03.views",{"title":164,"path":200,"stem":201},"\u002Fdataviews\u002Fsettings\u002Fform","06.dataviews\u002F05.settings\u002F04.form",{"title":203,"path":204,"stem":205},"Actions","\u002Fdataviews\u002Fsettings\u002Factions","06.dataviews\u002F05.settings\u002F05.actions",{"title":207,"path":208,"stem":209},"Security","\u002Fdataviews\u002Fsettings\u002Fsecurity","06.dataviews\u002F05.settings\u002F06.security",{"title":211,"path":212,"stem":213},"Versions","\u002Fdataviews\u002Fsettings\u002Fversions","06.dataviews\u002F05.settings\u002F07.versions",{"title":215,"icon":216,"path":217,"stem":218,"children":219,"page":62},"Design Form","i-lucide-pencil-ruler","\u002Fdataviews\u002Fdesign-form","06.dataviews\u002F06.design-form",[220,223,257,261,265],{"title":118,"path":221,"stem":222},"\u002Fdataviews\u002Fdesign-form\u002Foverview","06.dataviews\u002F06.design-form\u002F01.overview",{"title":224,"icon":131,"path":225,"stem":226,"children":227,"page":62},"Widgets","\u002Fdataviews\u002Fdesign-form\u002Fwidgets","06.dataviews\u002F06.design-form\u002F02.widgets",[228,231,234,238,242,246,250,254],{"title":224,"path":229,"stem":230},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Foverview","06.dataviews\u002F06.design-form\u002F02.widgets\u002F01.overview",{"title":164,"path":232,"stem":233},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fform","06.dataviews\u002F06.design-form\u002F02.widgets\u002F02.form",{"title":235,"path":236,"stem":237},"Inputs","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Finputs","06.dataviews\u002F06.design-form\u002F02.widgets\u002F03.inputs",{"title":239,"path":240,"stem":241},"Display","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fdisplay","06.dataviews\u002F06.design-form\u002F02.widgets\u002F04.display",{"title":243,"path":244,"stem":245},"Embeds","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fembeds","06.dataviews\u002F06.design-form\u002F02.widgets\u002F05.embeds",{"title":247,"path":248,"stem":249},"Layout","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Flayout","06.dataviews\u002F06.design-form\u002F02.widgets\u002F06.layout",{"title":251,"path":252,"stem":253},"Overlays","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Foverlays","06.dataviews\u002F06.design-form\u002F02.widgets\u002F07.overlays",{"title":203,"path":255,"stem":256},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Factions","06.dataviews\u002F06.design-form\u002F02.widgets\u002F08.actions",{"title":258,"path":259,"stem":260},"Variables","\u002Fdataviews\u002Fdesign-form\u002Fvariables","06.dataviews\u002F06.design-form\u002F03.variables",{"title":262,"path":263,"stem":264},"Code","\u002Fdataviews\u002Fdesign-form\u002Fcode","06.dataviews\u002F06.design-form\u002F04.code",{"title":266,"path":267,"stem":268},"Formulas","\u002Fdataviews\u002Fdesign-form\u002Fformulas","06.dataviews\u002F06.design-form\u002F05.formulas",{"title":78,"icon":270,"path":271,"stem":272,"children":273,"page":62},"i-lucide-layout-dashboard","\u002Fdashboards","07.dashboards",[274,277,281,285,332],{"title":118,"path":275,"stem":276},"\u002Fdashboards\u002Foverview","07.dashboards\u002F01.overview",{"title":278,"path":279,"stem":280},"Creating a Dashboard","\u002Fdashboards\u002Fcreating","07.dashboards\u002F02.creating",{"title":282,"path":283,"stem":284},"Editor","\u002Fdashboards\u002Feditor","07.dashboards\u002F03.editor",{"title":224,"icon":286,"path":287,"stem":288,"children":289,"page":62},"i-lucide-chart-bar","\u002Fdashboards\u002Fwidgets","07.dashboards\u002F04.widgets",[290,293,297,301,305,309,313,317,321,324,328],{"title":224,"path":291,"stem":292},"\u002Fdashboards\u002Fwidgets\u002Foverview","07.dashboards\u002F04.widgets\u002F01.overview",{"title":294,"path":295,"stem":296},"Editing a Widget","\u002Fdashboards\u002Fwidgets\u002Fediting-a-widget","07.dashboards\u002F04.widgets\u002F02.editing-a-widget",{"title":298,"path":299,"stem":300},"Indicators","\u002Fdashboards\u002Fwidgets\u002Findicators","07.dashboards\u002F04.widgets\u002F03.indicators",{"title":302,"path":303,"stem":304},"Comparison","\u002Fdashboards\u002Fwidgets\u002Fcomparison","07.dashboards\u002F04.widgets\u002F04.comparison",{"title":306,"path":307,"stem":308},"Trend","\u002Fdashboards\u002Fwidgets\u002Ftrend","07.dashboards\u002F04.widgets\u002F05.trend",{"title":310,"path":311,"stem":312},"Proportion","\u002Fdashboards\u002Fwidgets\u002Fproportion","07.dashboards\u002F04.widgets\u002F06.proportion",{"title":314,"path":315,"stem":316},"Distribution and Relation","\u002Fdashboards\u002Fwidgets\u002Fdistribution-and-relation","07.dashboards\u002F04.widgets\u002F07.distribution-and-relation",{"title":318,"path":319,"stem":320},"Maps","\u002Fdashboards\u002Fwidgets\u002Fmaps","07.dashboards\u002F04.widgets\u002F08.maps",{"title":92,"path":322,"stem":323},"\u002Fdashboards\u002Fwidgets\u002Ftables","07.dashboards\u002F04.widgets\u002F09.tables",{"title":325,"path":326,"stem":327},"Visualization and Insertion","\u002Fdashboards\u002Fwidgets\u002Fvisualization-and-insertion","07.dashboards\u002F04.widgets\u002F10.visualization-and-insertion",{"title":329,"path":330,"stem":331},"SQL Conventions","\u002Fdashboards\u002Fwidgets\u002Fsql-conventions","07.dashboards\u002F04.widgets\u002F11.sql-conventions",{"title":172,"icon":184,"path":333,"stem":334,"children":335,"page":62},"\u002Fdashboards\u002Fsettings","07.dashboards\u002F05.settings",[336,339,342,345,349,352],{"title":189,"path":337,"stem":338},"\u002Fdashboards\u002Fsettings\u002Fgeneral","07.dashboards\u002F05.settings\u002F01.general",{"title":258,"path":340,"stem":341},"\u002Fdashboards\u002Fsettings\u002Fvariables","07.dashboards\u002F05.settings\u002F02.variables",{"title":193,"path":343,"stem":344},"\u002Fdashboards\u002Fsettings\u002Fdata","07.dashboards\u002F05.settings\u002F03.data",{"title":346,"path":347,"stem":348},"Share","\u002Fdashboards\u002Fsettings\u002Fshare","07.dashboards\u002F05.settings\u002F04.share",{"title":207,"path":350,"stem":351},"\u002Fdashboards\u002Fsettings\u002Fsecurity","07.dashboards\u002F05.settings\u002F05.security",{"title":211,"path":353,"stem":354},"\u002Fdashboards\u002Fsettings\u002Fversions","07.dashboards\u002F05.settings\u002F06.versions",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":62},"Workflows","i-lucide-workflow","\u002Fworkflows","08.workflows",[361,364,368,371,393,432],{"title":118,"path":362,"stem":363},"\u002Fworkflows\u002Foverview","08.workflows\u002F01.overview",{"title":365,"path":366,"stem":367},"Creating a Workflow","\u002Fworkflows\u002Fcreating","08.workflows\u002F02.creating",{"title":282,"path":369,"stem":370},"\u002Fworkflows\u002Feditor","08.workflows\u002F03.editor",{"title":372,"icon":373,"path":374,"stem":375,"children":376,"page":62},"Triggers","i-lucide-zap","\u002Fworkflows\u002Ftriggers","08.workflows\u002F04.triggers",[377,381,385,389],{"title":378,"path":379,"stem":380},"Manual","\u002Fworkflows\u002Ftriggers\u002Fmanual","08.workflows\u002F04.triggers\u002F01.manual",{"title":382,"path":383,"stem":384},"Database Event","\u002Fworkflows\u002Ftriggers\u002Fdatabase-event","08.workflows\u002F04.triggers\u002F02.database-event",{"title":386,"path":387,"stem":388},"Schedule","\u002Fworkflows\u002Ftriggers\u002Fschedule","08.workflows\u002F04.triggers\u002F03.schedule",{"title":390,"path":391,"stem":392},"Webhook","\u002Fworkflows\u002Ftriggers\u002Fwebhook","08.workflows\u002F04.triggers\u002F04.webhook",{"title":394,"icon":357,"path":395,"stem":396,"children":397,"page":62},"Steps","\u002Fworkflows\u002Fsteps","08.workflows\u002F05.steps",[398,401,405,408,412,416,420,424,428],{"title":193,"path":399,"stem":400},"\u002Fworkflows\u002Fsteps\u002Fdata","08.workflows\u002F05.steps\u002F01.data",{"title":402,"path":403,"stem":404},"Control","\u002Fworkflows\u002Fsteps\u002Fcontrol","08.workflows\u002F05.steps\u002F02.control",{"title":262,"path":406,"stem":407},"\u002Fworkflows\u002Fsteps\u002Fcode","08.workflows\u002F05.steps\u002F03.code",{"title":409,"path":410,"stem":411},"Integration","\u002Fworkflows\u002Fsteps\u002Fintegration","08.workflows\u002F05.steps\u002F04.integration",{"title":413,"path":414,"stem":415},"Communication","\u002Fworkflows\u002Fsteps\u002Fcommunication","08.workflows\u002F05.steps\u002F05.communication",{"title":417,"path":418,"stem":419},"Files","\u002Fworkflows\u002Fsteps\u002Ffiles","08.workflows\u002F05.steps\u002F06.files",{"title":421,"path":422,"stem":423},"Documents","\u002Fworkflows\u002Fsteps\u002Fdocuments","08.workflows\u002F05.steps\u002F07.documents",{"title":425,"path":426,"stem":427},"Composition","\u002Fworkflows\u002Fsteps\u002Fcomposition","08.workflows\u002F05.steps\u002F08.composition",{"title":429,"path":430,"stem":431},"Values","\u002Fworkflows\u002Fsteps\u002Fvalues","08.workflows\u002F05.steps\u002F09.values",{"title":172,"icon":184,"path":433,"stem":434,"children":435,"page":62},"\u002Fworkflows\u002Fsettings","08.workflows\u002F06.settings",[436,439,443,446,449],{"title":189,"path":437,"stem":438},"\u002Fworkflows\u002Fsettings\u002Fgeneral","08.workflows\u002F06.settings\u002F01.general",{"title":440,"path":441,"stem":442},"Trigger","\u002Fworkflows\u002Fsettings\u002Ftrigger","08.workflows\u002F06.settings\u002F02.trigger",{"title":207,"path":444,"stem":445},"\u002Fworkflows\u002Fsettings\u002Fsecurity","08.workflows\u002F06.settings\u002F03.security",{"title":211,"path":447,"stem":448},"\u002Fworkflows\u002Fsettings\u002Fversions","08.workflows\u002F06.settings\u002F04.versions",{"title":450,"path":451,"stem":452},"Runs","\u002Fworkflows\u002Fsettings\u002Fruns","08.workflows\u002F06.settings\u002F05.runs",{"title":417,"icon":454,"path":455,"stem":456,"children":457,"page":62},"i-lucide-files","\u002Ffiles","09.files",[458,461,465,469,473,477,481],{"title":118,"path":459,"stem":460},"\u002Ffiles\u002Foverview","09.files\u002F01.overview",{"title":462,"path":463,"stem":464},"Uploading","\u002Ffiles\u002Fuploading","09.files\u002F02.uploading",{"title":466,"path":467,"stem":468},"File Details","\u002Ffiles\u002Ffile-details","09.files\u002F03.file-details",{"title":470,"path":471,"stem":472},"Editing Files","\u002Ffiles\u002Fediting-files","09.files\u002F04.editing-files",{"title":474,"path":475,"stem":476},"Using Files in Tables","\u002Ffiles\u002Fusing-files-in-tables","09.files\u002F05.using-files-in-tables",{"title":478,"path":479,"stem":480},"Image Transformations","\u002Ffiles\u002Fimage-transformations","09.files\u002F06.image-transformations",{"title":482,"path":483,"stem":484},"Who Can See a File","\u002Ffiles\u002Fwho-can-see-a-file","09.files\u002F07.who-can-see-a-file",{"title":486,"icon":487,"path":488,"stem":489,"children":490,"page":62},"Templates","i-lucide-file-text","\u002Ftemplates","10.templates",[491,494,498,502],{"title":118,"path":492,"stem":493},"\u002Ftemplates\u002Foverview","10.templates\u002F01.overview",{"title":495,"path":496,"stem":497},"Emails","\u002Ftemplates\u002Femails","10.templates\u002F02.emails",{"title":499,"path":500,"stem":501},"PDF","\u002Ftemplates\u002Fpdf","10.templates\u002F03.pdf",{"title":503,"path":504,"stem":505},"System Emails","\u002Ftemplates\u002Fsystem-emails","10.templates\u002F04.system-emails",{"title":507,"icon":508,"path":509,"stem":510,"children":511,"page":62},"Users","i-lucide-users","\u002Fusers","11.users",[512,516,520,524,528],{"title":513,"path":514,"stem":515},"Managing Users","\u002Fusers\u002Fmanaging-users","11.users\u002F01.managing-users",{"title":517,"path":518,"stem":519},"A User's Page","\u002Fusers\u002Fa-users-page","11.users\u002F02.a-users-page",{"title":521,"path":522,"stem":523},"API Tokens","\u002Fusers\u002Fapi-tokens","11.users\u002F03.api-tokens",{"title":525,"path":526,"stem":527},"Sessions","\u002Fusers\u002Fsessions","11.users\u002F04.sessions",{"title":529,"icon":530,"path":531,"stem":532,"children":533,"page":62},"Insights","i-lucide-chart-line","\u002Fusers\u002Finsights","11.users\u002F05.insights",[534,538],{"title":535,"path":536,"stem":537},"Sign-ins","\u002Fusers\u002Finsights\u002Fsign-ins","11.users\u002F05.insights\u002F01.sign-ins",{"title":539,"path":540,"stem":541},"Activity","\u002Fusers\u002Finsights\u002Factivity","11.users\u002F05.insights\u002F02.activity",{"title":543,"icon":544,"path":545,"stem":546,"children":547,"page":62},"Roles","i-lucide-shield-check","\u002Froles","12.roles",[548,552,556,560,564,568,572],{"title":549,"path":550,"stem":551},"Creating a Role","\u002Froles\u002Fcreating-a-role","12.roles\u002F01.creating-a-role",{"title":553,"path":554,"stem":555},"Granting Permissions","\u002Froles\u002Fgranting-permissions","12.roles\u002F02.granting-permissions",{"title":557,"path":558,"stem":559},"Row Filters","\u002Froles\u002Frow-filters","12.roles\u002F03.row-filters",{"title":561,"path":562,"stem":563},"Payload Checks","\u002Froles\u002Fpayload-checks","12.roles\u002F04.payload-checks",{"title":565,"path":566,"stem":567},"Members","\u002Froles\u002Fmembers","12.roles\u002F05.members",{"title":569,"path":570,"stem":571},"Access Reviews","\u002Froles\u002Faccess-reviews","12.roles\u002F06.access-reviews",{"title":573,"path":574,"stem":575},"Delegated Administration","\u002Froles\u002Fdelegated-administration","12.roles\u002F07.delegated-administration",{"title":577,"icon":578,"path":579,"stem":580,"children":581,"page":62},"Logs","i-lucide-scroll-text","\u002Flogs","13.logs",[582,586,590],{"title":583,"path":584,"stem":585},"Audit Log","\u002Flogs\u002Faudit-log","13.logs\u002F01.audit-log",{"title":587,"path":588,"stem":589},"An Entry","\u002Flogs\u002Fan-entry","13.logs\u002F02.an-entry",{"title":591,"path":592,"stem":593},"Where Else It Shows","\u002Flogs\u002Fwhere-else-it-shows","13.logs\u002F03.where-else-it-shows",{"title":595,"icon":596,"path":597,"stem":598,"children":599,"page":62},"Data API","i-lucide-braces","\u002Fdata-api","14.data-api",[600,603,607,611,615,619,623,627,631,635,639,643],{"title":118,"path":601,"stem":602},"\u002Fdata-api\u002Foverview","14.data-api\u002F01.overview",{"title":604,"path":605,"stem":606},"Authentication","\u002Fdata-api\u002Fauthentication","14.data-api\u002F02.authentication",{"title":608,"path":609,"stem":610},"Reading","\u002Fdata-api\u002Freading","14.data-api\u002F03.reading",{"title":612,"path":613,"stem":614},"Filtering","\u002Fdata-api\u002Ffiltering","14.data-api\u002F04.filtering",{"title":616,"path":617,"stem":618},"Aggregating","\u002Fdata-api\u002Faggregating","14.data-api\u002F05.aggregating",{"title":620,"path":621,"stem":622},"Writing","\u002Fdata-api\u002Fwriting","14.data-api\u002F06.writing",{"title":624,"path":625,"stem":626},"Nested Writes","\u002Fdata-api\u002Fnested-writes","14.data-api\u002F07.nested-writes",{"title":628,"path":629,"stem":630},"Transactions","\u002Fdata-api\u002Ftransactions","14.data-api\u002F08.transactions",{"title":632,"path":633,"stem":634},"Calling Functions","\u002Fdata-api\u002Fcalling-functions","14.data-api\u002F09.calling-functions",{"title":636,"path":637,"stem":638},"OpenAPI","\u002Fdata-api\u002Fopenapi","14.data-api\u002F10.openapi",{"title":640,"path":641,"stem":642},"Routes","\u002Fdata-api\u002Froutes","14.data-api\u002F11.routes",{"title":644,"path":645,"stem":646},"A client, end to end","\u002Fdata-api\u002Fa-client","14.data-api\u002F12.a-client",{"title":172,"icon":648,"path":649,"stem":650,"children":651,"page":62},"i-lucide-settings","\u002Fsettings","15.settings",[652,655,659,662,665],{"title":189,"path":653,"stem":654},"\u002Fsettings\u002Fgeneral","15.settings\u002F01.general",{"title":656,"path":657,"stem":658},"Access","\u002Fsettings\u002Faccess","15.settings\u002F02.access",{"title":207,"path":660,"stem":661},"\u002Fsettings\u002Fsecurity","15.settings\u002F03.security",{"title":595,"path":663,"stem":664},"\u002Fsettings\u002Fdata-api","15.settings\u002F04.data-api",{"title":666,"path":667,"stem":668},"Features","\u002Fsettings\u002Ffeatures","15.settings\u002F05.features",{"title":670,"icon":671,"path":672,"stem":673,"children":674,"page":62},"User Profile","i-lucide-circle-user","\u002Fuser-profile","16.user-profile",[675,679,682,686,690],{"title":676,"path":677,"stem":678},"My Account","\u002Fuser-profile\u002Fmy-account","16.user-profile\u002F01.my-account",{"title":525,"path":680,"stem":681},"\u002Fuser-profile\u002Fsessions","16.user-profile\u002F02.sessions",{"title":683,"path":684,"stem":685},"Tokens","\u002Fuser-profile\u002Ftokens","16.user-profile\u002F03.tokens",{"title":687,"path":688,"stem":689},"Preferences","\u002Fuser-profile\u002Fpreferences","16.user-profile\u002F04.preferences",{"title":539,"path":691,"stem":692},"\u002Fuser-profile\u002Factivity","16.user-profile\u002F05.activity",{"title":694,"icon":695,"path":696,"stem":697,"children":698,"page":62},"AI Agents","i-lucide-bot","\u002Fai-agents","17.ai-agents",[699,702,705,709,713,717],{"title":118,"path":700,"stem":701},"\u002Fai-agents\u002Foverview","17.ai-agents\u002F01.overview",{"title":683,"path":703,"stem":704},"\u002Fai-agents\u002Ftokens","17.ai-agents\u002F02.tokens",{"title":706,"path":707,"stem":708},"MCP Server","\u002Fai-agents\u002Fmcp-server","17.ai-agents\u002F03.mcp-server",{"title":710,"path":711,"stem":712},"Recipes","\u002Fai-agents\u002Frecipes","17.ai-agents\u002F04.recipes",{"title":714,"path":715,"stem":716},"Tools","\u002Fai-agents\u002Ftools","17.ai-agents\u002F05.tools",{"title":718,"path":719,"stem":720},"llms.txt","\u002Fai-agents\u002Fllms-txt","17.ai-agents\u002F06.llms-txt",{"title":722,"icon":723,"path":724,"stem":725,"children":726,"page":62},"Operations","i-lucide-server","\u002Foperations","18.operations",[727,731,735,739,743],{"title":728,"path":729,"stem":730},"Deployment","\u002Foperations\u002Fdeployment","18.operations\u002F01.deployment",{"title":732,"path":733,"stem":734},"PostgreSQL","\u002Foperations\u002Fpostgresql","18.operations\u002F02.postgresql",{"title":736,"path":737,"stem":738},"Public URL, Proxy and CORS","\u002Foperations\u002Fpublic-url-proxy-cors","18.operations\u002F03.public-url-proxy-cors",{"title":740,"path":741,"stem":742},"Backup and Restore","\u002Foperations\u002Fbackup-restore","18.operations\u002F04.backup-restore",{"title":744,"path":745,"stem":746},"Upgrading","\u002Foperations\u002Fupgrading","18.operations\u002F05.upgrading",{"title":748,"icon":749,"path":750,"stem":751,"children":752,"page":62},"Reference","i-lucide-library","\u002Freference","19.reference",[753,757,761,765,769],{"title":754,"path":755,"stem":756},"Query Language","\u002Freference\u002Fquery-language","19.reference\u002F01.query-language",{"title":758,"path":759,"stem":760},"Errors","\u002Freference\u002Ferrors","19.reference\u002F02.errors",{"title":762,"path":763,"stem":764},"Admin API","\u002Freference\u002Fadmin-api","19.reference\u002F03.admin-api",{"title":766,"path":767,"stem":768},"Authentication API","\u002Freference\u002Fauth-api","19.reference\u002F04.auth-api",{"title":770,"path":771,"stem":772},"Environment Variables","\u002Freference\u002Fenvironment","19.reference\u002F05.environment",{"id":774,"title":656,"admin":775,"body":776,"description":1787,"extension":1788,"links":1789,"meta":1790,"navigation":1791,"path":657,"seo":1792,"stem":658,"__hash__":1793},"docs\u002F15.settings\u002F02.access.md","Settings › Access",{"type":777,"value":778,"toc":1767},"minimark",[779,799,803,809,814,819,1054,1058,1124,1128,1131,1196,1214,1218,1285,1291,1295,1336,1339,1344,1360,1379,1383,1395,1462,1473,1483,1493,1498,1504,1508,1522,1526,1529,1535,1542,1548,1553,1566,1570,1573,1593,1596,1599,1603,1610,1614,1667,1670,1675,1687],[780,781,782,785,786,790,791,790,795,798],"p",{},[783,784,775],"strong",{}," groups these pages of the admin: ",[787,788,604],"a",{"href":789},"#authentication",", ",[787,792,794],{"href":793},"#providers","Providers",[787,796,683],{"href":797},"#tokens",".",[800,801,604],"h2",{"id":802},"authentication",[780,804,805],{},[806,807,808],"em",{},"Settings › Access › Authentication",[780,810,811,813],{},[783,812,604],{}," sets how people get an account and sign in: registration, sessions, passwords, the links TotalBase emails, and the notices it sends.",[815,816,818],"h3",{"id":817},"accounts-sessions","Accounts & sessions",[820,821,822,843],"table",{},[823,824,825],"thead",{},[826,827,828,832,835,838,841],"tr",{},[829,830,831],"th",{},"Setting",[829,833,834],{},"Key",[829,836,837],{},"Default",[829,839,840],{},"Range",[829,842],{},[844,845,846,872,892,916,936,956,975,994,1013,1033],"tbody",{},[826,847,848,854,860,863,865],{},[849,850,851],"td",{},[783,852,853],{},"Allow self-registration",[849,855,856],{},[857,858,859],"code",{},"auth.registration_enabled",[849,861,862],{},"off",[849,864],{},[849,866,867,868,871],{},"Anyone can create an account (",[857,869,870],{},"POST \u002Fapi\u002Fauth\u002Fregister",") instead of needing an invitation",[826,873,874,879,884,887,889],{},[849,875,876],{},[783,877,878],{},"Default role for self-registration",[849,880,881],{},[857,882,883],{},"auth.registration_default_role",[849,885,886],{},"none",[849,888],{},[849,890,891],{},"The role every self-registered account gets. Not a reserved or administrative role. Without one, a new account has no access",[826,893,894,899,904,907,909],{},[849,895,896],{},[783,897,898],{},"Require email verification",[849,900,901],{},[857,902,903],{},"auth.email_verification_required",[849,905,906],{},"on",[849,908],{},[849,910,911,912],{},"A new account can't sign in until its email is verified. Needs ",[787,913,915],{"href":914},"\u002Fsettings\u002Fgeneral#smtp","SMTP",[826,917,918,923,928,931,934],{},[849,919,920],{},[783,921,922],{},"Minimum password length",[849,924,925],{},[857,926,927],{},"auth.password_min_length",[849,929,930],{},"12",[849,932,933],{},"8-128",[849,935],{},[826,937,938,943,948,951,954],{},[849,939,940],{},[783,941,942],{},"Session lifetime",[849,944,945],{},[857,946,947],{},"auth.session_ttl_hours",[849,949,950],{},"720 h (30 days)",[849,952,953],{},"≥ 1",[849,955],{},[826,957,958,963,968,971,973],{},[849,959,960],{},[783,961,962],{},"Password reset link lifetime",[849,964,965],{},[857,966,967],{},"auth.password_reset_ttl_minutes",[849,969,970],{},"15 min",[849,972,953],{},[849,974],{},[826,976,977,982,987,990,992],{},[849,978,979],{},[783,980,981],{},"Email verification link lifetime",[849,983,984],{},[857,985,986],{},"auth.email_verification_ttl_hours",[849,988,989],{},"24 h",[849,991,953],{},[849,993],{},[826,995,996,1001,1006,1009,1011],{},[849,997,998],{},[783,999,1000],{},"Invitation lifetime",[849,1002,1003],{},[857,1004,1005],{},"auth.invitation_ttl_hours",[849,1007,1008],{},"168 h (7 days)",[849,1010,953],{},[849,1012],{},[826,1014,1015,1020,1025,1028,1030],{},[849,1016,1017],{},[783,1018,1019],{},"Maximum sessions per user",[849,1021,1022],{},[857,1023,1024],{},"auth.max_sessions_per_user",[849,1026,1027],{},"20",[849,1029,953],{},[849,1031,1032],{},"Devices signed in at once",[826,1034,1035,1040,1045,1048,1051],{},[849,1036,1037],{},[783,1038,1039],{},"Keep ended sessions",[849,1041,1042],{},[857,1043,1044],{},"auth.session_retention_days",[849,1046,1047],{},"30 days",[849,1049,1050],{},"0-3650",[849,1052,1053],{},"Revoked and expired sessions stay listed, then are deleted. 0: forever",[815,1055,1057],{"id":1056},"sign-in-protection","Sign-in protection",[820,1059,1060,1074],{},[823,1061,1062],{},[826,1063,1064,1066,1068,1070,1072],{},[829,1065,831],{},[829,1067,834],{},[829,1069,837],{},[829,1071,840],{},[829,1073],{},[844,1075,1076,1100],{},[826,1077,1078,1083,1088,1091,1094],{},[849,1079,1080],{},[783,1081,1082],{},"Lock after failed sign-ins",[849,1084,1085],{},[857,1086,1087],{},"auth.lockout_max_attempts",[849,1089,1090],{},"5",[849,1092,1093],{},"0-100",[849,1095,1096,1097],{},"0: off. The answer stays the generic ",[806,1098,1099],{},"Invalid email or password",[826,1101,1102,1107,1112,1114,1117],{},[849,1103,1104],{},[783,1105,1106],{},"Lockout duration",[849,1108,1109],{},[857,1110,1111],{},"auth.lockout_duration_minutes",[849,1113,970],{},[849,1115,1116],{},"1-10080",[849,1118,1119,1120,1123],{},"A password reset or an administrator's ",[783,1121,1122],{},"Unlock account"," ends it sooner",[815,1125,1127],{"id":1126},"email-links","Email links",[780,1129,1130],{},"Where the links in invitation, reset and verification emails point. By default, TotalBase's own pages; point them at your own application if it handles these steps itself.",[820,1132,1133,1143],{},[823,1134,1135],{},[826,1136,1137,1139,1141],{},[829,1138,831],{},[829,1140,834],{},[829,1142,837],{},[844,1144,1145,1162,1179],{},[826,1146,1147,1152,1157],{},[849,1148,1149],{},[783,1150,1151],{},"Invitation link",[849,1153,1154],{},[857,1155,1156],{},"auth.links.invitation",[849,1158,1159],{},[857,1160,1161],{},"{{public_url}}\u002Fadmin\u002Fauth\u002Faccept-invitation?token={{token}}",[826,1163,1164,1169,1174],{},[849,1165,1166],{},[783,1167,1168],{},"Password reset link",[849,1170,1171],{},[857,1172,1173],{},"auth.links.password_reset",[849,1175,1176],{},[857,1177,1178],{},"{{public_url}}\u002Fadmin\u002Fauth\u002Freset-password?token={{token}}",[826,1180,1181,1186,1191],{},[849,1182,1183],{},[783,1184,1185],{},"Email verification link",[849,1187,1188],{},[857,1189,1190],{},"auth.links.email_verification",[849,1192,1193],{},[857,1194,1195],{},"{{public_url}}\u002Fadmin\u002Fauth\u002Fverify-email?token={{token}}",[780,1197,1198,1199,1202,1203,1206,1207,1209,1210,1213],{},"A link must be an absolute http(s) URL containing ",[857,1200,1201],{},"{{token}}",", and may use only ",[857,1204,1205],{},"{{public_url}}"," and ",[857,1208,1201],{},". Your page then calls the matching ",[787,1211,1212],{"href":767},"authentication route"," with the token.",[815,1215,1217],{"id":1216},"notices","Notices",[820,1219,1220,1232],{},[823,1221,1222],{},[826,1223,1224,1226,1228,1230],{},[829,1225,831],{},[829,1227,834],{},[829,1229,837],{},[829,1231],{},[844,1233,1234,1251,1268],{},[826,1235,1236,1241,1246,1248],{},[849,1237,1238],{},[783,1239,1240],{},"Password changed notice",[849,1242,1243],{},[857,1244,1245],{},"auth.password_changed_email_enabled",[849,1247,906],{},[849,1249,1250],{},"A security notice to the account's owner",[826,1252,1253,1258,1263,1265],{},[849,1254,1255],{},[783,1256,1257],{},"Email changed notice",[849,1259,1260],{},[857,1261,1262],{},"auth.email_changed_email_enabled",[849,1264,906],{},[849,1266,1267],{},"Sent to the previous address",[826,1269,1270,1275,1280,1282],{},[849,1271,1272],{},[783,1273,1274],{},"Welcome email",[849,1276,1277],{},[857,1278,1279],{},"auth.welcome_email_enabled",[849,1281,862],{},[849,1283,1284],{},"Sent once an account is ready to use",[780,1286,1287,1288,798],{},"The emails themselves are edited in ",[787,1289,1290],{"href":504},"Templates › System",[815,1292,1294],{"id":1293},"access-review","Access review",[820,1296,1297,1311],{},[823,1298,1299],{},[826,1300,1301,1303,1305,1307,1309],{},[829,1302,831],{},[829,1304,834],{},[829,1306,837],{},[829,1308,840],{},[829,1310],{},[844,1312,1313],{},[826,1314,1315,1320,1325,1328,1330],{},[849,1316,1317],{},[783,1318,1319],{},"Access review interval",[849,1321,1322],{},[857,1323,1324],{},"auth.access_review_interval_days",[849,1326,1327],{},"90 days",[849,1329,1050],{},[849,1331,1332,1333],{},"How often the Administrators role's members should be reviewed. 0: off. See ",[787,1334,1335],{"href":570},"Access reviews",[800,1337,794],{"id":1338},"providers",[780,1340,1341],{},[806,1342,1343],{},"Settings › Access › Providers",[780,1345,1346,1347,790,1350,1353,1354,1357,1358,798],{},"Besides passwords, your applications can sign users in with ",[783,1348,1349],{},"Google",[783,1351,1352],{},"GitHub"," or any ",[783,1355,1356],{},"OpenID Connect"," provider: Microsoft Entra ID, Okta, Keycloak, Auth0 and others. Providers are set up in ",[783,1359,1343],{},[780,1361,1362,1363,1366,1367,1370,1371,1374,1375,1378],{},"Provider sign-in works two ways: people sign in to ",[783,1364,1365],{},"your application",", which receives a Data API session (the account needs a role with ",[783,1368,1369],{},"API access","), or to ",[783,1372,1373],{},"the portal itself"," (the admin or the App), from its sign-in page (the account needs ",[783,1376,1377],{},"admin or app access",", as with a password).",[815,1380,1382],{"id":1381},"setting-one-up","Setting one up",[780,1384,1385,1386,1390,1391,1394],{},"Create the client secret first, in ",[787,1387,1389],{"href":1388},"\u002Fsettings\u002Fsecurity#secrets","Settings › Security › Secrets",": providers reference it by key and never store it themselves. Then ",[783,1392,1393],{},"New provider"," opens a wizard:",[1396,1397,1398,1408,1433],"ol",{},[1399,1400,1401,1404,1405,798],"li",{},[783,1402,1403],{},"Provider",": Google, GitHub, Microsoft \u002F Azure AD, GitLab, Apple, Slack, Okta, Auth0, or ",[783,1406,1407],{},"Custom OIDC provider",[1399,1409,1410,1413,1414,1417,1418,1421,1422,1425,1426,1429,1430,798],{},[783,1411,1412],{},"Configuration",": a name, and what the provider needs: Microsoft's ",[783,1415,1416],{},"Tenant ID"," (",[857,1419,1420],{},"common"," or a tenant's id), Okta's or Auth0's ",[783,1423,1424],{},"domain",", a custom provider's ",[783,1427,1428],{},"Issuer"," URL. TotalBase discovers the rest from ",[857,1431,1432],{},"{issuer}\u002F.well-known\u002Fopenid-configuration",[1399,1434,1435,1438,1439,1442,1443,1446,1447,1450,1451,1454,1455,1458,1459,798],{},[783,1436,1437],{},"Credentials & access",": the ",[783,1440,1441],{},"Client ID",", the ",[783,1444,1445],{},"Client secret"," (a key from Secrets), the ",[783,1448,1449],{},"Allowed redirect URLs"," (at least one, unless the provider is shown on the sign-in page; see below), an optional ",[783,1452,1453],{},"Default role"," for accounts the provider creates, ",[783,1456,1457],{},"Enabled",", and ",[783,1460,1461],{},"Show on the sign-in page",[780,1463,1464,1465,1468,1469,1472],{},"Register an application with the provider using the provider's ",[783,1466,1467],{},"Redirect URI",", shown in its ",[783,1470,1471],{},"Edit"," window with a copy button and built from the instance's public URL:",[1474,1475,1481],"pre",{"className":1476,"code":1478,"language":1479,"meta":1480},[1477],"language-text","https:\u002F\u002Fops.acme-field.example\u002Fapi\u002Fauth\u002Foauth\u002Fgoogle\u002Fcallback\n","text","",[857,1482,1478],{"__ignoreMap":1480},[780,1484,1485,1486,1488,1489,1492],{},"The list shows each provider with its type, issuer, number of redirect URLs and an ",[783,1487,1457],{}," switch; its ",[783,1490,1491],{},"⋮"," edits, enables or disables, or deletes it. Deleting a provider keeps the users' accounts and removes only their link to it. A provider's type can't be changed after it's created.",[1494,1495],"screenshot",{"caption":1496,"id":1497},"A Google provider: client ID, secret, allowed redirect URLs and default role.","auth-provider-google",[780,1499,1500,1501,798],{},"There can be one Google and one GitHub provider enabled at a time, and any number of OIDC providers. Each OIDC provider is addressed by a slug made from its name: \"Acme SSO\" becomes ",[857,1502,1503],{},"acme-sso",[815,1505,1507],{"id":1506},"on-the-portals-sign-in-page","On the portal's sign-in page",[780,1509,1510,1511,1513,1514,1517,1518,1521],{},"With ",[783,1512,1461],{}," on, the portal's sign-in page has a ",[783,1515,1516],{},"Continue with {name}"," button for the provider, under the email and password. With more than three such providers, a single ",[783,1519,1520],{},"Sign in with…"," button lists them. Signing in this way follows the same rules as a password: the account needs a role with admin or app access, and then lands where its access opens. The portal's own return page needs no entry in the allowed redirect URLs.",[815,1523,1525],{"id":1524},"the-sign-in-flow","The sign-in flow",[780,1527,1528],{},"An application starts the flow by sending the browser to:",[1474,1530,1533],{"className":1531,"code":1532,"language":1479,"meta":1480},[1477],"GET \u002Fapi\u002Fauth\u002Foauth\u002F{provider}?redirect_to=https:\u002F\u002Fapp.acme-field.example\u002Fafter-login\n",[857,1534,1532],{"__ignoreMap":1480},[780,1536,1537,1538,1541],{},"TotalBase sends the user to the provider (with PKCE and, for Google and OIDC, a nonce), checks the answer, signs the user in, and returns the browser to ",[857,1539,1540],{},"redirect_to"," with the result in the URL fragment:",[1474,1543,1546],{"className":1544,"code":1545,"language":1479,"meta":1480},[1477],"https:\u002F\u002Fapp.acme-field.example\u002Fafter-login#token=\u003Csession token>\nhttps:\u002F\u002Fapp.acme-field.example\u002Fafter-login#error=access_denied\n",[857,1547,1545],{"__ignoreMap":1480},[1549,1550,1552],"h4",{"id":1551},"redirect-allowlist","Redirect allowlist",[780,1554,1555,1557,1558,1561,1562,1565],{},[857,1556,1540],{}," must match one of the provider's ",[783,1559,1560],{},"allowed redirect URLs",": exactly, or under a prefix ending in ",[857,1563,1564],{},"\u002F*",". A provider with no allowed URLs can't complete a sign-in. This is deliberate, so a session token is never handed to an address you didn't approve.",[815,1567,1569],{"id":1568},"how-accounts-are-linked","How accounts are linked",[780,1571,1572],{},"When someone signs in through a provider, TotalBase finds their account in this order:",[1396,1574,1575,1581,1587],{},[1399,1576,1577,1580],{},[783,1578,1579],{},"Already linked",": the provider's user id was linked before, so that account signs in.",[1399,1582,1583,1586],{},[783,1584,1585],{},"Same verified email",": the provider says the email is verified and an account has it, so the provider is linked to that account.",[1399,1588,1589,1592],{},[783,1590,1591],{},"New account",": a new account without a password is created, with the provider's default role if one is set.",[780,1594,1595],{},"An existing account's roles are never changed by signing in. An account that couldn't sign in with a password (inactive, locked or a system account) can't sign in through a provider either. A provider that doesn't share an email can't create an account.",[780,1597,1598],{},"A first sign-in also fills in the user's avatar from the provider, if they don't have one.",[1549,1600,1602],{"id":1601},"restricting-who-gets-in","Restricting who gets in",[780,1604,1605,1606,1609],{},"Signing in creates an account, but access comes from roles. A new account without a role is created, but its sign-in ends with ",[857,1607,1608],{},"#error=access_denied",", because it has no API access. It can sign in once someone assigns a role. For a company directory (an OIDC provider only your staff can use), set a default role that has API access. For a public provider such as Google, leave it empty and assign roles by hand, or invite people first: their invitation creates the account, and signing in with Google then links to it by email.",[815,1611,1613],{"id":1612},"errors-returned-to-the-redirect","Errors returned to the redirect",[820,1615,1616,1626],{},[823,1617,1618],{},[826,1619,1620,1623],{},[829,1621,1622],{},"Fragment",[829,1624,1625],{},"Means",[844,1627,1628,1638,1647,1657],{},[826,1629,1630,1635],{},[849,1631,1632],{},[857,1633,1634],{},"#token=...",[849,1636,1637],{},"signed in",[826,1639,1640,1644],{},[849,1641,1642],{},[857,1643,1608],{},[849,1645,1646],{},"the account can't sign in this way: no API access (no admin or app access, from the sign-in page), inactive, locked, or a system account",[826,1648,1649,1654],{},[849,1650,1651],{},[857,1652,1653],{},"#error=email_required",[849,1655,1656],{},"the provider didn't share an email",[826,1658,1659,1664],{},[849,1660,1661],{},[857,1662,1663],{},"#error=email_not_verified",[849,1665,1666],{},"email verification is required and the address isn't verified",[800,1668,683],{"id":1669},"tokens",[780,1671,1672],{},[806,1673,1674],{},"Settings › Access › Tokens",[780,1676,1677,1679,1680,1683,1684,798],{},[783,1678,683],{}," sets the defaults for personal API tokens. The tokens themselves are listed in ",[787,1681,1682],{"href":522},"Users › API tokens"," and each user's ",[787,1685,1686],{"href":684},"My account › Tokens",[820,1688,1689,1703],{},[823,1690,1691],{},[826,1692,1693,1695,1697,1699,1701],{},[829,1694,831],{},[829,1696,834],{},[829,1698,837],{},[829,1700,840],{},[829,1702],{},[844,1704,1705,1725,1748],{},[826,1706,1707,1712,1717,1720,1722],{},[849,1708,1709],{},[783,1710,1711],{},"Default expiry",[849,1713,1714],{},[857,1715,1716],{},"api_keys.default_ttl_days",[849,1718,1719],{},"365 days",[849,1721,953],{},[849,1723,1724],{},"For a token created without its own expiry",[826,1726,1727,1732,1737,1739,1742],{},[849,1728,1729],{},[783,1730,1731],{},"Rotation warning window",[849,1733,1734],{},[857,1735,1736],{},"api_keys.rotation_warning_days",[849,1738,1047],{},[849,1740,1741],{},"≥ 0",[849,1743,1744,1745],{},"A token this close to expiring is flagged ",[806,1746,1747],{},"expiring",[826,1749,1750,1755,1760,1762,1764],{},[849,1751,1752],{},[783,1753,1754],{},"Keep ended tokens",[849,1756,1757],{},[857,1758,1759],{},"api_keys.purge_after_days",[849,1761,1047],{},[849,1763,1050],{},[849,1765,1766],{},"Revoked and expired tokens are deleted after this. 0: forever. Deactivated tokens are kept",{"title":1480,"searchDepth":1768,"depth":1769,"links":1770},1,2,[1771,1779,1786],{"id":802,"depth":1769,"text":604,"children":1772},[1773,1775,1776,1777,1778],{"id":817,"depth":1774,"text":818},3,{"id":1056,"depth":1774,"text":1057},{"id":1126,"depth":1774,"text":1127},{"id":1216,"depth":1774,"text":1217},{"id":1293,"depth":1774,"text":1294},{"id":1338,"depth":1769,"text":794,"children":1780},[1781,1782,1783,1784,1785],{"id":1381,"depth":1774,"text":1382},{"id":1506,"depth":1774,"text":1507},{"id":1524,"depth":1774,"text":1525},{"id":1568,"depth":1774,"text":1569},{"id":1612,"depth":1774,"text":1613},{"id":1669,"depth":1769,"text":683},"How people get an account and sign in: authentication, providers and token defaults.","md",null,{},true,{"title":656,"description":1787},"Bf_Tg1vk_DtNHppnCnp4VFWlCUeUsgZR95dDNbKWhP4",[1795,1797],{"title":189,"path":653,"stem":654,"description":1796,"children":-1},"The instance itself: its address and name, appearance, the database connection, maintenance and email.",{"title":207,"path":660,"stem":661,"description":1798,"children":-1},"Network protection, encrypted secrets and the audit log.",1792339954938]