[{"data":1,"prerenderedAt":1975},["ShallowReactive",2],{"navigation":3,"\u002Fdata-api\u002Freading":773,"\u002Fdata-api\u002Freading-surround":1970},[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":608,"admin":775,"body":776,"description":1964,"extension":1965,"links":775,"meta":1966,"navigation":1967,"path":609,"seo":1968,"stem":610,"__hash__":1969},"docs\u002F14.data-api\u002F03.reading.md",null,{"type":777,"value":778,"toc":1950},"minimark",[779,809,817,822,961,969,972,980,990,1002,1008,1104,1107,1111,1114,1326,1339,1343,1352,1455,1474,1477,1483,1499,1567,1578,1596,1600,1606,1620,1623,1629,1645,1649,1659,1711,1717,1720,1728,1734,1820,1829,1833,1840,1844,1854,1863,1927,1930,1934,1946],[780,781,786],"pre",{"className":782,"code":783,"language":784,"meta":785,"style":785},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GET \u002Fapi\u002F{schema}\u002Ftable\u002F{name}\nGET \u002Fapi\u002F{schema}\u002Fview\u002F{name}\nGET \u002Fapi\u002F{schema}\u002Ftable\u002F{name}\u002F{id}\n","http","",[787,788,789,797,803],"code",{"__ignoreMap":785},[790,791,794],"span",{"class":792,"line":793},"line",1,[790,795,796],{},"GET \u002Fapi\u002F{schema}\u002Ftable\u002F{name}\n",[790,798,800],{"class":792,"line":799},2,[790,801,802],{},"GET \u002Fapi\u002F{schema}\u002Fview\u002F{name}\n",[790,804,806],{"class":792,"line":805},3,[790,807,808],{},"GET \u002Fapi\u002F{schema}\u002Ftable\u002F{name}\u002F{id}\n",[810,811,812,813,816],"p",{},"A read needs ",[787,814,815],{},"READ"," on the resource. It returns only the rows your row filters allow and only the fields you may read.",[818,819,821],"h2",{"id":820},"query-parameters","Query parameters",[823,824,825,838],"table",{},[826,827,828],"thead",{},[829,830,831,835],"tr",{},[832,833,834],"th",{},"Parameter",[832,836,837],{},"Does",[839,840,841,852,865,875,888,898,912,922,932],"tbody",{},[829,842,843,849],{},[844,845,846],"td",{},[787,847,848],{},"fields",[844,850,851],{},"which columns and relation paths to return",[829,853,854,859],{},[844,855,856],{},[787,857,858],{},"where",[844,860,861,862],{},"which rows: ",[863,864,612],"a",{"href":613},[829,866,867,872],{},[844,868,869],{},[787,870,871],{},"search",[844,873,874],{},"rows containing some words",[829,876,877,882],{},[844,878,879],{},[787,880,881],{},"search_fields",[844,883,884,885,887],{},"where ",[787,886,871],{}," looks",[829,889,890,895],{},[844,891,892],{},[787,893,894],{},"order_by",[844,896,897],{},"the order",[829,899,900,909],{},[844,901,902,905,906],{},[787,903,904],{},"limit",", ",[787,907,908],{},"offset",[844,910,911],{},"pagination",[829,913,914,919],{},[844,915,916],{},[787,917,918],{},"count",[844,920,921],{},"also return the total",[829,923,924,929],{},[844,925,926],{},[787,927,928],{},"flags",[844,930,931],{},"check each row against named conditions",[829,933,934,957],{},[844,935,936,905,939,905,942,905,945,905,948,905,951,905,954],{},[787,937,938],{},"group_by",[787,940,941],{},"having",[787,943,944],{},"_sum",[787,946,947],{},"_count",[787,949,950],{},"_avg",[787,952,953],{},"_min",[787,955,956],{},"_max",[844,958,959],{},[863,960,616],{"href":617},[810,962,963,964,905,966,968],{},"The order of parameters doesn't matter. The order inside a list (",[787,965,848],{},[787,967,894],{},") does.",[818,970,971],{"id":848},"Fields",[780,973,978],{"className":974,"code":976,"language":977,"meta":785},[975],"language-text","fields=number,status,due_at\nfields=number,status,site.name,site.customer.name\n","text",[787,979,976],{"__ignoreMap":785},[810,981,982,983,985,986,989],{},"Without ",[787,984,848],{},", a read returns every column you may read, silently leaving out the others. Asking for a column you may not read is ",[787,987,988],{},"403 FIELD_PERMISSION_DENIED",".",[810,991,992,993,997,998,1001],{},"Dotted paths follow foreign keys: see ",[863,994,996],{"href":995},"\u002Fdatabase\u002Ftables#relations","Tables › Relations",". A path's output key is the path itself (",[787,999,1000],{},"\"site.name\"","). To name the output, use aliases:",[780,1003,1006],{"className":1004,"code":1005,"language":977,"meta":785},[975],"fields[number]=Order&fields[site.customer.name]=Customer&fields[due_at]=Due\n",[787,1007,1005],{"__ignoreMap":785},[780,1009,1013],{"className":1010,"code":1011,"language":1012,"meta":785,"style":785},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"data\": [ { \"Order\": \"WO-000412\", \"Customer\": \"Mercado del Norte S.A.\", \"Due\": \"2026-10-15T12:00:00Z\" } ] }\n","json",[787,1014,1015],{"__ignoreMap":785},[790,1016,1017,1021,1024,1028,1031,1034,1037,1040,1042,1046,1048,1050,1052,1056,1058,1061,1063,1066,1068,1070,1072,1075,1077,1079,1081,1084,1086,1088,1090,1093,1095,1098,1101],{"class":792,"line":793},[790,1018,1020],{"class":1019},"sMK4o","{",[790,1022,1023],{"class":1019}," \"",[790,1025,1027],{"class":1026},"spNyl","data",[790,1029,1030],{"class":1019},"\"",[790,1032,1033],{"class":1019},":",[790,1035,1036],{"class":1019}," [",[790,1038,1039],{"class":1019}," {",[790,1041,1023],{"class":1019},[790,1043,1045],{"class":1044},"sBMFI","Order",[790,1047,1030],{"class":1019},[790,1049,1033],{"class":1019},[790,1051,1023],{"class":1019},[790,1053,1055],{"class":1054},"sfazB","WO-000412",[790,1057,1030],{"class":1019},[790,1059,1060],{"class":1019},",",[790,1062,1023],{"class":1019},[790,1064,1065],{"class":1044},"Customer",[790,1067,1030],{"class":1019},[790,1069,1033],{"class":1019},[790,1071,1023],{"class":1019},[790,1073,1074],{"class":1054},"Mercado del Norte S.A.",[790,1076,1030],{"class":1019},[790,1078,1060],{"class":1019},[790,1080,1023],{"class":1019},[790,1082,1083],{"class":1044},"Due",[790,1085,1030],{"class":1019},[790,1087,1033],{"class":1019},[790,1089,1023],{"class":1019},[790,1091,1092],{"class":1054},"2026-10-15T12:00:00Z",[790,1094,1030],{"class":1019},[790,1096,1097],{"class":1019}," }",[790,1099,1100],{"class":1019}," ]",[790,1102,1103],{"class":1019}," }\n",[810,1105,1106],{},"A request uses either the list form or the alias form, not both.",[818,1108,1110],{"id":1109},"how-values-come-back","How values come back",[810,1112,1113],{},"Values are JSON, following each column's PostgreSQL type:",[823,1115,1116,1129],{},[826,1117,1118],{},[829,1119,1120,1123,1126],{},[832,1121,1122],{},"PostgreSQL type",[832,1124,1125],{},"JSON",[832,1127,1128],{},"Example",[839,1130,1131,1155,1177,1197,1217,1232,1247,1261,1280,1297,1310],{},[829,1132,1133,1147,1150],{},[844,1134,1135,905,1138,905,1141,905,1144],{},[787,1136,1137],{},"integer",[787,1139,1140],{},"smallint",[787,1142,1143],{},"real",[787,1145,1146],{},"double precision",[844,1148,1149],{},"number",[844,1151,1152],{},[787,1153,1154],{},"42",[829,1156,1157,1165,1172],{},[844,1158,1159,905,1162],{},[787,1160,1161],{},"bigint",[787,1163,1164],{},"numeric",[844,1166,1167,1171],{},[1168,1169,1170],"strong",{},"string",", so no precision is lost",[844,1173,1174],{},[787,1175,1176],{},"\"1250.50\"",[829,1178,1179,1190,1192],{},[844,1180,1181,905,1183,905,1186,1189],{},[787,1182,977],{},[787,1184,1185],{},"varchar",[787,1187,1188],{},"uuid",", enums",[844,1191,1170],{},[844,1193,1194],{},[787,1195,1196],{},"\"ASSIGNED\"",[829,1198,1199,1204,1213],{},[844,1200,1201],{},[787,1202,1203],{},"boolean",[844,1205,1206,1209,1210],{},[787,1207,1208],{},"true"," \u002F ",[787,1211,1212],{},"false",[844,1214,1215],{},[787,1216,1208],{},[829,1218,1219,1224,1227],{},[844,1220,1221],{},[787,1222,1223],{},"date",[844,1225,1226],{},"string, the day as stored",[844,1228,1229],{},[787,1230,1231],{},"\"2026-10-14\"",[829,1233,1234,1239,1242],{},[844,1235,1236],{},[787,1237,1238],{},"timestamptz",[844,1240,1241],{},"string, ISO 8601 in UTC",[844,1243,1244],{},[787,1245,1246],{},"\"2026-10-14T13:05:30.000Z\"",[829,1248,1249,1254,1256],{},[844,1250,1251],{},[787,1252,1253],{},"time",[844,1255,1170],{},[844,1257,1258],{},[787,1259,1260],{},"\"09:30:00\"",[829,1262,1263,1268,1275],{},[844,1264,1265],{},[787,1266,1267],{},"point",[844,1269,1270,1271,1274],{},"object, ",[787,1272,1273],{},"x"," as longitude",[844,1276,1277],{},[787,1278,1279],{},"{ \"lng\": -65.4117, \"lat\": -24.7821 }",[829,1281,1282,1289,1292],{},[844,1283,1284,905,1286],{},[787,1285,1012],{},[787,1287,1288],{},"jsonb",[844,1290,1291],{},"the JSON value",[844,1293,1294],{},[787,1295,1296],{},"{ \"plan\": \"PREMIUM\" }",[829,1298,1299,1302,1305],{},[844,1300,1301],{},"arrays",[844,1303,1304],{},"array",[844,1306,1307],{},[787,1308,1309],{},"[\"HVAC\", \"SOLAR\"]",[829,1311,1312,1317,1322],{},[844,1313,1314],{},[787,1315,1316],{},"NULL",[844,1318,1319],{},[787,1320,1321],{},"null",[844,1323,1324],{},[787,1325,1321],{},[810,1327,1328,1329,1331,1332,1335,1336,1338],{},"Writes take the same shapes: a ",[787,1330,1267],{}," is written as ",[787,1333,1334],{},"{ \"lng\": …, \"lat\": … }",", and a ",[787,1337,1164],{}," as a number or a string.",[818,1340,1342],{"id":1341},"one-row","One row",[780,1344,1346],{"className":782,"code":1345,"language":784,"meta":785,"style":785},"GET \u002Fapi\u002Fpublic\u002Ftable\u002Fwork_orders\u002F8f1c2e0a-…\n",[787,1347,1348],{"__ignoreMap":785},[790,1349,1350],{"class":792,"line":793},[790,1351,1345],{},[780,1353,1355],{"className":1010,"code":1354,"language":1012,"meta":785,"style":785},"{ \"data\": { \"id\": \"8f1c…\", \"number\": \"WO-000412\", \"status\": \"ASSIGNED\" }, \"meta\": { \"version\": \"48213\" } }\n",[787,1356,1357],{"__ignoreMap":785},[790,1358,1359,1361,1363,1365,1367,1369,1371,1373,1376,1378,1380,1382,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1410,1412,1414,1416,1419,1421,1424,1426,1429,1431,1433,1435,1437,1440,1442,1444,1446,1449,1451,1453],{"class":792,"line":793},[790,1360,1020],{"class":1019},[790,1362,1023],{"class":1019},[790,1364,1027],{"class":1026},[790,1366,1030],{"class":1019},[790,1368,1033],{"class":1019},[790,1370,1039],{"class":1019},[790,1372,1023],{"class":1019},[790,1374,1375],{"class":1044},"id",[790,1377,1030],{"class":1019},[790,1379,1033],{"class":1019},[790,1381,1023],{"class":1019},[790,1383,1384],{"class":1054},"8f1c…",[790,1386,1030],{"class":1019},[790,1388,1060],{"class":1019},[790,1390,1023],{"class":1019},[790,1392,1149],{"class":1044},[790,1394,1030],{"class":1019},[790,1396,1033],{"class":1019},[790,1398,1023],{"class":1019},[790,1400,1055],{"class":1054},[790,1402,1030],{"class":1019},[790,1404,1060],{"class":1019},[790,1406,1023],{"class":1019},[790,1408,1409],{"class":1044},"status",[790,1411,1030],{"class":1019},[790,1413,1033],{"class":1019},[790,1415,1023],{"class":1019},[790,1417,1418],{"class":1054},"ASSIGNED",[790,1420,1030],{"class":1019},[790,1422,1423],{"class":1019}," },",[790,1425,1023],{"class":1019},[790,1427,1428],{"class":1026},"meta",[790,1430,1030],{"class":1019},[790,1432,1033],{"class":1019},[790,1434,1039],{"class":1019},[790,1436,1023],{"class":1019},[790,1438,1439],{"class":1044},"version",[790,1441,1030],{"class":1019},[790,1443,1033],{"class":1019},[790,1445,1023],{"class":1019},[790,1447,1448],{"class":1054},"48213",[790,1450,1030],{"class":1019},[790,1452,1097],{"class":1019},[790,1454,1103],{"class":1019},[810,1456,1457,1458,1461,1462,1465,1466,1469,1470,1473],{},"A row that doesn't exist, or that your row filter hides, is ",[787,1459,1460],{},"404 ROW_NOT_FOUND",". ",[787,1463,1464],{},"meta.version"," (also sent as the ",[787,1467,1468],{},"ETag"," header) lets a later update make sure nobody changed the row in between. See ",[863,1471,620],{"href":1472},"\u002Fdata-api\u002Fwriting#optimistic-writes",". Reading by key needs a single-column primary key, and takes no query parameters.",[818,1475,1476],{"id":871},"Search",[780,1478,1481],{"className":1479,"code":1480,"language":977,"meta":785},[975],"search=mercado salta\nsearch=mercado&search_fields=name,site.name\n",[787,1482,1480],{"__ignoreMap":785},[810,1484,1485,1487,1488,1491,1492,1495,1496,1498],{},[787,1486,871],{}," finds rows where ",[1168,1489,1490],{},"every word"," appears in ",[1168,1493,1494],{},"some"," field. By default it looks in the fields the request returns, or in exactly ",[787,1497,881],{}," when given.",[823,1500,1501,1511],{},[826,1502,1503],{},[829,1504,1505,1508],{},[832,1506,1507],{},"Field type",[832,1509,1510],{},"A word matches when",[839,1512,1513,1524,1539,1546,1557],{},[829,1514,1515,1517],{},[844,1516,977],{},[844,1518,1519,1520,1523],{},"the field contains it, ignoring case and accents: ",[787,1521,1522],{},"perez"," finds \"Pérez\"",[829,1525,1526,1528],{},[844,1527,1149],{},[844,1529,1530,1531,1534,1535,1538],{},"the word is that exact number: ",[787,1532,1533],{},"412"," finds order 412, ",[787,1536,1537],{},"41"," doesn't",[829,1540,1541,1543],{},[844,1542,1188],{},[844,1544,1545],{},"the word is the whole uuid",[829,1547,1548,1551],{},[844,1549,1550],{},"date, timestamp",[844,1552,1553,1554],{},"the word is that day, as ",[787,1555,1556],{},"YYYY-MM-DD",[829,1558,1559,1561],{},[844,1560,1253],{},[844,1562,1563,1564],{},"the word is that minute, as ",[787,1565,1566],{},"HH:mm",[810,1568,1569,1570,1573,1574,1577],{},"Other types (booleans, JSON, arrays) aren't searched. Fields you can't read are skipped. ",[787,1571,1572],{},"%"," and ",[787,1575,1576],{},"_"," in a search are literal characters.",[1579,1580,1581],"tip",{},[810,1582,1583,1584,1587,1588,1591,1592,1595],{},"On a large table, search uses a ",[787,1585,1586],{},"LIKE '%word%'",", which a normal index can't serve. Add a trigram index on the expression TotalBase uses: ",[787,1589,1590],{},"CREATE INDEX ON customers USING gin (totalbase.search_normalize(name) gin_trgm_ops);"," (needs the ",[787,1593,1594],{},"pg_trgm"," extension).",[818,1597,1599],{"id":1598},"sorting","Sorting",[780,1601,1604],{"className":1602,"code":1603,"language":977,"meta":785},[975],"order_by=-priority,due_at,site.name\n",[787,1605,1603],{"__ignoreMap":785},[810,1607,1608,1609,1612,1613,1615,1616,1619],{},"A field sorts ascending, and ",[787,1610,1611],{},"-field"," sorts descending. Without ",[787,1614,894],{},", rows come in the resource's ",[1168,1617,1618],{},"default order"," (set in Database › table › Columns › Order), then by primary key, so pages never overlap.",[818,1621,1622],{"id":911},"Pagination",[780,1624,1627],{"className":1625,"code":1626,"language":977,"meta":785},[975],"limit=50&offset=100\n",[787,1628,1626],{"__ignoreMap":785},[810,1630,1631,1633,1634,1637,1638,1641,1642,1644],{},[787,1632,904],{}," defaults to 50 (",[787,1635,1636],{},"api.default_limit",") and is capped at 500 (",[787,1639,1640],{},"api.max_limit","). ",[787,1643,908],{}," is capped at 100 000. Values over a cap are lowered to it, not rejected.",[818,1646,1648],{"id":1647},"counting","Counting",[810,1650,1651,1654,1655,1573,1657,1033],{},[787,1652,1653],{},"count=true"," adds the number of matching rows, before ",[787,1656,904],{},[787,1658,908],{},[780,1660,1662],{"className":1010,"code":1661,"language":1012,"meta":785,"style":785},"{ \"data\": [ … ], \"meta\": { \"count\": 184 } }\n",[787,1663,1664],{"__ignoreMap":785},[790,1665,1666,1668,1670,1672,1674,1676,1678,1682,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1707,1709],{"class":792,"line":793},[790,1667,1020],{"class":1019},[790,1669,1023],{"class":1019},[790,1671,1027],{"class":1026},[790,1673,1030],{"class":1019},[790,1675,1033],{"class":1019},[790,1677,1036],{"class":1019},[790,1679,1681],{"class":1680},"sTEyZ"," … ",[790,1683,1684],{"class":1019},"],",[790,1686,1023],{"class":1019},[790,1688,1428],{"class":1026},[790,1690,1030],{"class":1019},[790,1692,1033],{"class":1019},[790,1694,1039],{"class":1019},[790,1696,1023],{"class":1019},[790,1698,918],{"class":1044},[790,1700,1030],{"class":1019},[790,1702,1033],{"class":1019},[790,1704,1706],{"class":1705},"sbssI"," 184",[790,1708,1097],{"class":1019},[790,1710,1103],{"class":1019},[810,1712,1713,1714,1716],{},"The rows and the count come from the same snapshot. Without ",[787,1715,1653],{},", no count query runs.",[818,1718,1719],{"id":928},"Flags",[810,1721,1722,1724,1725,1727],{},[787,1723,928],{}," checks each returned row against named conditions, without filtering anything. Each flag uses the ",[787,1726,858],{}," syntax:",[780,1729,1732],{"className":1730,"code":1731,"language":977,"meta":785},[975],"flags[overdue][due_at][_lt]=$CURRENT_TIMESTAMP&flags[urgent][priority][_eq]=URGENT\n",[787,1733,1731],{"__ignoreMap":785},[780,1735,1737],{"className":1010,"code":1736,"language":1012,"meta":785,"style":785},"{ \"data\": [ {…}, {…} ], \"meta\": { \"flags\": [ [\"overdue\", \"urgent\"], [] ] } }\n",[787,1738,1739],{"__ignoreMap":785},[790,1740,1741,1743,1745,1747,1749,1751,1753,1755,1758,1761,1763,1765,1768,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1798,1800,1802,1804,1807,1809,1811,1814,1816,1818],{"class":792,"line":793},[790,1742,1020],{"class":1019},[790,1744,1023],{"class":1019},[790,1746,1027],{"class":1026},[790,1748,1030],{"class":1019},[790,1750,1033],{"class":1019},[790,1752,1036],{"class":1019},[790,1754,1039],{"class":1019},[790,1756,1757],{"class":1680},"…",[790,1759,1760],{"class":1019},"},",[790,1762,1039],{"class":1019},[790,1764,1757],{"class":1680},[790,1766,1767],{"class":1019},"}",[790,1769,1770],{"class":1019}," ],",[790,1772,1023],{"class":1019},[790,1774,1428],{"class":1026},[790,1776,1030],{"class":1019},[790,1778,1033],{"class":1019},[790,1780,1039],{"class":1019},[790,1782,1023],{"class":1019},[790,1784,928],{"class":1044},[790,1786,1030],{"class":1019},[790,1788,1033],{"class":1019},[790,1790,1036],{"class":1019},[790,1792,1036],{"class":1019},[790,1794,1030],{"class":1019},[790,1796,1797],{"class":1054},"overdue",[790,1799,1030],{"class":1019},[790,1801,1060],{"class":1019},[790,1803,1023],{"class":1019},[790,1805,1806],{"class":1054},"urgent",[790,1808,1030],{"class":1019},[790,1810,1684],{"class":1019},[790,1812,1813],{"class":1019}," []",[790,1815,1100],{"class":1019},[790,1817,1097],{"class":1019},[790,1819,1103],{"class":1019},[810,1821,1822,1825,1826,1828],{},[787,1823,1824],{},"meta.flags"," has one list per row, in the same order as ",[787,1827,1027],{},". PostgreSQL evaluates the conditions with the rows. DataViews use this for conditional formatting. At most 32 flags per request.",[818,1830,1832],{"id":1831},"reads-and-the-audit-log","Reads and the audit log",[810,1834,1835,1836,1839],{},"Reads aren't audited by default. For sensitive tables, turn on ",[1168,1837,1838],{},"Audit reads"," in the table's Auditing section. Every read then records who read, which fields, with which filter, and how many rows came back, but not the rows themselves.",[818,1841,1843],{"id":1842},"the-sql-it-runs","The SQL it runs",[810,1845,1846,1847,1849,1850,1853],{},"This is the SQL TotalBase sent to PostgreSQL for the example above, as PostgreSQL's own log recorded it - ids shortened, long column lists cut with ",[787,1848,1757],{},". Every value travels as a parameter (",[787,1851,1852],{},"$1","), never inside the SQL text. A dispatcher reads urgent assigned orders with their site's name:",[780,1855,1857],{"className":782,"code":1856,"language":784,"meta":785,"style":785},"GET \u002Fapi\u002Fpublic\u002Ftable\u002Fwork_orders?fields=number,status,site.name&where[status][_eq]=ASSIGNED&where[priority][_eq]=URGENT&order_by=-reported_at&limit=20\n",[787,1858,1859],{"__ignoreMap":785},[790,1860,1861],{"class":792,"line":793},[790,1862,1856],{},[780,1864,1868],{"className":1865,"code":1866,"language":1867,"meta":785,"style":785},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","BEGIN;\nSELECT set_config('statement_timeout', '30000', true);\nSELECT t0.\"number\" AS \"number\", t0.\"status\" AS \"status\", t1.\"name\" AS \"site.name\"\nFROM \"public\".\"work_orders\" AS t0\nLEFT JOIN \"public\".\"sites\" AS t1 ON t1.\"id\" = t0.\"site\"       -- site.name follows the foreign key\nWHERE (t0.\"status\" = $1 AND t0.\"priority\" = $2)               -- the request's where\n  AND t0.\"branch\" = $3                                        -- AND the role's row filter: their branch\nORDER BY t0.\"reported_at\" DESC\nLIMIT $4 OFFSET $5;                                           -- $1 = 'ASSIGNED', $2 = 'URGENT', $3 = 'de01…', $4 = '20', $5 = '0'\nCOMMIT;\n","sql",[787,1869,1870,1875,1880,1885,1891,1897,1903,1909,1915,1921],{"__ignoreMap":785},[790,1871,1872],{"class":792,"line":793},[790,1873,1874],{},"BEGIN;\n",[790,1876,1877],{"class":792,"line":799},[790,1878,1879],{},"SELECT set_config('statement_timeout', '30000', true);\n",[790,1881,1882],{"class":792,"line":805},[790,1883,1884],{},"SELECT t0.\"number\" AS \"number\", t0.\"status\" AS \"status\", t1.\"name\" AS \"site.name\"\n",[790,1886,1888],{"class":792,"line":1887},4,[790,1889,1890],{},"FROM \"public\".\"work_orders\" AS t0\n",[790,1892,1894],{"class":792,"line":1893},5,[790,1895,1896],{},"LEFT JOIN \"public\".\"sites\" AS t1 ON t1.\"id\" = t0.\"site\"       -- site.name follows the foreign key\n",[790,1898,1900],{"class":792,"line":1899},6,[790,1901,1902],{},"WHERE (t0.\"status\" = $1 AND t0.\"priority\" = $2)               -- the request's where\n",[790,1904,1906],{"class":792,"line":1905},7,[790,1907,1908],{},"  AND t0.\"branch\" = $3                                        -- AND the role's row filter: their branch\n",[790,1910,1912],{"class":792,"line":1911},8,[790,1913,1914],{},"ORDER BY t0.\"reported_at\" DESC\n",[790,1916,1918],{"class":792,"line":1917},9,[790,1919,1920],{},"LIMIT $4 OFFSET $5;                                           -- $1 = 'ASSIGNED', $2 = 'URGENT', $3 = 'de01…', $4 = '20', $5 = '0'\n",[790,1922,1924],{"class":792,"line":1923},10,[790,1925,1926],{},"COMMIT;\n",[810,1928,1929],{},"The row filter is added by TotalBase, never by the request, so no query string can widen it. An administrator's read has no such condition.",[818,1931,1933],{"id":1932},"next-steps","Next steps",[1935,1936,1937,1942],"ul",{},[1938,1939,1940,989],"li",{},[863,1941,612],{"href":613},[1938,1943,1944,989],{},[863,1945,616],{"href":617},[1947,1948,1949],"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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":785,"searchDepth":793,"depth":799,"links":1951},[1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963],{"id":820,"depth":799,"text":821},{"id":848,"depth":799,"text":971},{"id":1109,"depth":799,"text":1110},{"id":1341,"depth":799,"text":1342},{"id":871,"depth":799,"text":1476},{"id":1598,"depth":799,"text":1599},{"id":911,"depth":799,"text":1622},{"id":1647,"depth":799,"text":1648},{"id":928,"depth":799,"text":1719},{"id":1831,"depth":799,"text":1832},{"id":1842,"depth":799,"text":1843},{"id":1932,"depth":799,"text":1933},"Read rows: choose fields and aliases, follow relations, search, sort, paginate and count.","md",{},true,{"title":608,"description":1964},"WnddkIPTU3ro1v9pajQnMr7R0zZnwmzlNixdAqOzii0",[1971,1973],{"title":604,"path":605,"stem":606,"description":1972,"children":-1},"Sessions and personal access tokens on the Data API: signing in, sending the credential, and what each one can reach.",{"title":612,"path":613,"stem":614,"description":1974,"children":-1},"The where parameter: operators, relation paths, AND\u002FOR\u002FNOT in a query string, and the variables for users, dates and periods.",1792339952572]