Integer can be used as attribute data type in several scenarios where numerical information is needed to make access control decisions. Here are a few examples:
Age: If access to certain resources is age-restricted, an age attribute stored as an integer can be used to control access.
Security Clearance Level: In a system where users have different security clearance levels, these levels can be stored as integer attributes (e.g., 1, 2, 3 with 3 being the highest clearance).
Resource Size or Length: If access to resources is controlled based on their size or length (like a document’s length or a file’s size), these can be stored as integer attributes.
Version Number: If access control decisions need to consider the version number of a resource (like a software version or a document revision), these can be stored as integer attributes.
Double can be used as attribute data type in several scenarios where precise numerical information is needed to make access control decisions. Here are a few examples:
Usage Limit: If a user has a usage limit (like the amount of storage they can use or the amount of data they can download), and this limit needs to be represented with decimal precision, it can be stored as a double attribute.
Transaction Amount: In a financial system, if access control decisions need to consider the amount of a transaction, and this amount needs to be represented with decimal precision (like $100.50), these amounts can be stored as double attributes.
User Rating: If access control decisions need to consider a user’s rating (like a rating out of 5 with decimal points, such as 4.7), these ratings can be stored as double attributes.
Geolocation: If access control decisions need to consider precise geographical coordinates (like latitude and longitude, which are often represented with decimal points), these coordinates can be stored as double attributes.
The check_balance rule: This rule verifies if the withdrawal amount is less than or equal to the account’s balance and doesn’t exceed 5000 (the maximum amount allowed for a withdrawal). It accepts two parameters, the withdrawal amount (amount) and the account’s current balance (balance).
The owner check: This condition checks if the person requesting the withdrawal is the owner of the account.Both of these conditions need to be true for the withdraw permission to be granted. In other words, a user can withdraw money from an account only if they are the owner of that account, and the amount they want to withdraw is within the account balance and doesn’t exceed 5000.Relationships
account:1#owner@user:1
Attributes
account:1$balance|double:4000
Check Evolution Sub Queries For Account Withdraw
→ account:1$check_balance(context.amount,balance) → true
→ account:1#owner@user:1 → trueRequest keys before hash
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FGA Documentation","colors":{"primary":"#F58320","light":"#fb923c","dark":"#ea580c"},"logo":{"light":"https://mintcdn.com/permify/s--v0P7cOOW3QatA/logo/light.svg?fit=max\u0026auto=format\u0026n=s--v0P7cOOW3QatA\u0026q=85\u0026s=35df6af816b704ec52d1461bb85c5057","dark":"https://mintcdn.com/permify/s--v0P7cOOW3QatA/logo/dark.svg?fit=max\u0026auto=format\u0026n=s--v0P7cOOW3QatA\u0026q=85\u0026s=3cba8f1833c1058096bf4924e49f8931","href":"/"},"favicon":"https://mintcdn.com/permify/s--v0P7cOOW3QatA/favicon.png?fit=max\u0026auto=format\u0026n=s--v0P7cOOW3QatA\u0026q=85\u0026s=f88a89d54d5d30758364ce67ba61ef7f","appearance":{"default":"light","strict":false},"background":{"color":{"light":"#ffffff","dark":"#0f172a"}},"navbar":{"links":[{"href":"/docs/","label":"FusionAuth Documentation"}]},"footer":{"socials":{"twitter":"https://twitter.com/getPermify","github":"https://github.com/Permify/permify","linkedin":"https://www.linkedin.com/company/permifyco"}},"fonts":{"heading":{"family":"Inter","weight":600},"body":{"family":"Inter","weight":400}},"integrations":{"ga4":{"measurementId":"G-BSRXWHBYR1"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"permify","hasAudioNarration":false,"actualSubdomain":"permify","customDomains":["proxy-docs.permify.co"],"gitSource":{"type":"github","owner":"permify","repo":"permify","deployBranch":"master","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac93fe89fc187d74aef743c","collectionId":"84e2b1d9-d591-4fff-bec3-0e97ed69fcc7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac93fe89fc187d74aef743c"},"entitlements":{},"buildId":"6ac94f72a62963626e080c1f","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"FGA Documentation","count":57},{"language":"default","tag":"API References","count":24},{"language":"default","tag":"Getting Started","count":12},{"language":"default","tag":"Setting Up","count":12},{"language":"default","tag":"Deployment","count":11},{"language":"default","tag":"Modeling Guides","count":10},{"language":"default","tag":"Permission Service","count":7},{"language":"default","tag":"Real World Examples","count":7},{"language":"default","tag":"Operations","count":6},{"language":"default","tag":"Use Cases","count":6}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n*,::after,::before{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif!important}code,kbd,pre,samp,tt{font-family:'JetBrains Mono','Fira Code','Menlo','Monaco','Consolas',monospace!important}html:not(.dark) span#background-color{background:0 0!important}html:not(.dark){background-color:#fff!important;background-image:radial-gradient(768px at right top,rgba(199,210,254,.65) 0,#fff 80%),linear-gradient(rgba(99,102,241,.4) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.4) 1px,transparent 1px)!important;background-size:100% 30000px,34px 34px,34px 34px!important;background-position:0 0,0 0,0 0!important;background-repeat:no-repeat,repeat,repeat!important;background-attachment:local,local,local!important}:root{--fa-orange:#F58320;--fa-orange-light:#fb923c;--fa-orange-dark:#ea580c;--fa-slate-800:#1e293b;--fa-slate-700:#334155;--fa-slate-100:#F1F5F9;--fa-slate-200:#E2E8F0}#banner{background-color:var(--fa-slate-800)!important;border-bottom:2px solid var(--fa-orange)!important}#banner a{color:var(--fa-orange-light)!important;text-decoration:underline!important}#banner,#banner a:hover{color:#fff!important}#navbar{background-color:#0f172a!important;border-bottom:1px solid #334155!important}#navbar #navbar-transition{background-color:transparent!important}#navbar a,#navbar button:hover{color:#e2e8f0!important}#navbar a:hover,#navbar li.navbar-link a:hover{color:var(--fa-orange-light)!important}#navbar li.navbar-link a{color:#fff!important;font-size:.875rem!important;font-weight:600!important;letter-spacing:-.01em!important;opacity:1!important}#navbar button{color:#94a3b8!important}#navbar a[data-slot=context-menu-trigger]{display:inline-flex!important;align-items:center!important}#navbar a[data-slot=context-menu-trigger] img{height:3rem!important;width:auto!important;order:1}#navbar a[data-slot=context-menu-trigger]::before{content:\"/\";color:#64748b;font-size:1.5rem;font-weight:300;margin-left:.75rem;margin-right:.375rem;line-height:1;order:2}#navbar a[data-slot=context-menu-trigger]::after{content:\"FGA Docs\";color:#fff;font-size:1.5rem;font-weight:700;letter-spacing:-.025em;line-height:1;order:3}[data-testid=sidebar] a[aria-current=page],aside a[aria-current=page]{border-left:3px solid var(--fa-orange)!important;color:var(--fa-orange-dark)!important;font-weight:600!important;background-color:rgba(245,131,32,.06)!important}[data-testid=sidebar] h3,aside h3{color:var(--fa-slate-800)!important;text-transform:uppercase!important;font-size:.7rem!important;letter-spacing:.06em!important;font-weight:700!important}:is(.dark) [data-testid=sidebar] h3,:is(.dark) aside h3{color:var(--fa-slate-200)!important}[data-testid=sidebar] a,aside a{color:var(--fa-slate-700)!important;transition:color .15s ease!important}[data-testid=sidebar] a:hover,aside a:hover{color:var(--fa-orange)!important}:is(.dark) [data-testid=sidebar] a,:is(.dark) aside a{color:#cbd5e1!important}:is(.dark) [data-testid=sidebar] a:hover,:is(.dark) aside a:hover{color:var(--fa-orange-light)!important}.cta-button,[data-testid=cta-button],a[class*=Button],button[class*=primary]{background-color:var(--fa-orange)!important;border-color:var(--fa-orange)!important;color:#fff!important;border-radius:6px!important;transition:background-color .15s ease!important}.cta-button:hover,[data-testid=cta-button]:hover,a[class*=Button]:hover,button[class*=primary]:hover{background-color:var(--fa-orange-dark)!important;border-color:var(--fa-orange-dark)!important}.prose a,article a,main a:not([class]){color:var(--fa-orange-dark)!important;text-decoration-color:rgba(245,131,32,.3)!important}.prose a:hover,article a:hover,main a:not([class]):hover{color:var(--fa-orange)!important;text-decoration-color:var(--fa-orange)!important}:is(.dark) .prose a,:is(.dark) article a,:is(.dark) main a:not([class]){color:var(--fa-orange-light)!important}[class*=AnchorCard],[class*=anchor-card]{border:1px solid var(--fa-slate-200)!important;border-radius:8px!important;transition:border-color .15s ease,box-shadow .15s ease!important}[class*=AnchorCard]:hover,[class*=anchor-card]:hover{border-color:var(--fa-orange)!important;box-shadow:0 2px 8px rgba(245,131,32,.12)!important}.prose h1,.prose h2,.prose h3,article h1,article h2,article h3{color:var(--fa-slate-800)!important}:is(.dark) .prose h1,:is(.dark) .prose h2,:is(.dark) .prose h3,:is(.dark) article h1,:is(.dark) article h2,:is(.dark) article h3{color:#f1f5f9!important}code,pre{border-radius:6px!important}pre{background-color:#1f273b!important}:is(.dark) pre{background-color:#00081a!important}:not(pre)>code{background-color:#f1f5f9!important;color:var(--fa-slate-800)!important;padding:.15em .4em!important;border-radius:4px!important;font-size:.875em!important}:is(.dark) :not(pre)>code{background-color:#1e293b!important;color:#e2e8f0!important}table th{background-color:var(--fa-slate-800)!important;color:#fff!important;font-weight:600!important}:is(.dark) table th{background-color:#0f172a!important}table tr:nth-child(even){background-color:rgba(241,245,249,.5)!important}:is(.dark) table tr:nth-child(even){background-color:rgba(30,41,59,.3)!important}[role=tab][aria-selected=true]{color:var(--fa-orange)!important;border-bottom-color:var(--fa-orange)!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:3px}::-webkit-scrollbar-track{background:0 0}::selection{background-color:rgba(245,131,32,.2);color:inherit}[class*=Feedback] button:hover,[class*=feedback] button:hover{color:var(--fa-orange)!important}[class*=Badge],[class*=badge]{border-radius:4px!important}[class*=highlight],mark{background-color:rgba(245,131,32,.15)!important}[class*=Card],[class*=card]{border-radius:8px!important}"}],"page":{"pagePath":"modeling-guides/abac/numerical-conditions","slug":"/modeling-guides/abac/numerical-conditions","pageMetadata":{"title":"Numerical Conditions","mode":"wide","description":null,"href":"/modeling-guides/abac/numerical-conditions"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`3`,id:`integers`,children:`Integers`}),`\n`,_jsx(_components.p,{children:`Integer can be used as attribute data type in several scenarios where numerical information is needed to make access control decisions. Here are a few examples:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Age:`}),` If access to certain resources is age-restricted, an age attribute stored as an integer can be used to control access.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Security Clearance Level:`}),` In a system where users have different security clearance levels, these levels can be stored as integer attributes (e.g., 1, 2, 3 with 3 being the highest clearance).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Resource Size or Length:`}),` If access to resources is controlled based on their size or length (like a document’s length or a file’s size), these can be stored as integer attributes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Version Number:`}),` If access control decisions need to consider the version number of a resource (like a software version or a document revision), these can be stored as integer attributes.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entity content {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` permission view = check_age(request.age)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`rule check_age(age integer) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\t\tage >= 18`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Warning,{children:[`If you don’t create the related attribute data, Permify accounts integer as `,_jsx(_components.code,{children:`0`})]}),`\n`,_jsx(Heading,{level:`3`,id:`double`,children:`Double`}),`\n`,_jsx(_components.p,{children:`Double can be used as attribute data type in several scenarios where precise numerical information is needed to make access control decisions. Here are a few examples:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Usage Limit:`}),` If a user has a usage limit (like the amount of storage they can use or the amount of data they can download), and this limit needs to be represented with decimal precision, it can be stored as a double attribute.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Transaction Amount:`}),` In a financial system, if access control decisions need to consider the amount of a transaction, and this amount needs to be represented with decimal precision (like $100.50), these amounts can be stored as double attributes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User Rating:`}),` If access control decisions need to consider a user’s rating (like a rating out of 5 with decimal points, such as 4.7), these ratings can be stored as double attributes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Geolocation:`}),` If access control decisions need to consider precise geographical coordinates (like latitude and longitude, which are often represented with decimal points), these coordinates can be stored as double attributes.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entity user {}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entity account {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` relation owner @user`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` attribute balance double`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` permission withdraw = check_balance(request.amount, balance) and owner`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`rule check_balance(amount double, balance double) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\t(balance >= amount) \u0026\u0026 (amount \u003c= 5000)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Warning,{children:[`If you don’t create the related attribute data, Permify accounts double as `,_jsx(_components.code,{children:`0.0`})]}),`\n`,_jsx(Heading,{level:`3`,id:`withdraw-access-in-banking-system`,children:`Withdraw Access In Banking System`}),`\n`,_jsxs(_components.p,{children:[`This model represents a banking system with two entities: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`user`})}),` and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`account`})}),`.`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`user`})}),`: Represents a customer of the bank.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`account`})}),`: Represents a bank account that has an `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`owner`})}),` (which is a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`user`})}),`), and a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`balance`})}),` (amount of money in the account).`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entity user {}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`entity account {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` relation owner @user`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` attribute balance double`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` permission withdraw = check_balance(request.amount, balance) and owner`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`rule check_balance(amount double, balance double) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` (balance >= amount) \u0026\u0026 (amount \u003c= 5000)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The check_balance rule:`}),` This rule verifies if the withdrawal amount is less than or equal to the account’s balance and doesn’t exceed 5000 (the maximum amount allowed for a withdrawal). It accepts two parameters, the withdrawal amount (amount) and the account’s current balance (balance).\n`,_jsx(_components.strong,{children:`The owner check:`}),` This condition checks if the person requesting the withdrawal is the owner of the account.`]}),`\n`,_jsxs(_components.p,{children:[`Both of these conditions need to be true for the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`withdraw`})}),` permission to be granted. In other words, a user can withdraw money from an account only if they are the owner of that account, and the amount they want to withdraw is within the account balance and doesn’t exceed 5000.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Relationships`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`account:1#owner@user:1`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Attributes`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`account:1$balance|double:4000`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Check Evolution Sub Queries For Account Withdraw`}),`\n→ account:1$check_balance(context.amount,balance) → true\n→ account:1#owner@user:1 → true`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Request keys before hash`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`check*{snapshot}*{schema*version}*{context}\\\\_account:1$check_balance(context.amount,balance)`}),` → true`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`check*{snapshot}*{schema*version}*{context}\\\\_account:1#owner@user:1`}),` → true`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`more-advance-example`,children:`More Advance Example`}),`\n`,_jsxs(_components.p,{children:[`See our `,_jsx(_components.a,{href:`/getting-started/examples/mercury`,children:`Mercury authorization logic example`}),` to learn how to apply numerical conditions in a more complex scenario.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Numerical Conditions","mode":"wide","description":null,"href":"/modeling-guides/abac/numerical-conditions"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Integers","slug":"integers","depth":3,"children":[]},{"title":"Double","slug":"double","depth":3,"children":[]},{"title":"Withdraw Access In Banking System","slug":"withdraw-access-in-banking-system","depth":3,"children":[]},{"title":"More Advance Example","slug":"more-advance-example","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/permify/03abf5c771cc7674/gurubase.js"],"subdomain":"permify","siteName":"FGA Documentation","title":"Numerical Conditions - FGA Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T20:33:01.229Z","originalFileLocation":"modeling-guides/abac/numerical-conditions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"FGA Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Numerical Conditions - FGA Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FGA Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://permify.mintlify.app/_mintlify/api/og/v2?division=Model+Attribute+Based+Access+Control+%28ABAC%29\u0026amp;title=Numerical+Conditions\u0026amp;theme=9be289e78f6ac24dc5c5d06f\u0026amp;signature=5b056f17241bc2518187b86668e6a3961671801ae6828dec2de41ea4b0da33c4\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Numerical Conditions - FGA Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://permify.mintlify.app/_mintlify/api/og/v2?division=Model+Attribute+Based+Access+Control+%28ABAC%29\u0026amp;title=Numerical+Conditions\u0026amp;theme=9be289e78f6ac24dc5c5d06f\u0026amp;signature=5b056f17241bc2518187b86668e6a3961671801ae6828dec2de41ea4b0da33c4\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/permify/a_feQF0dT9qeMKZe/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FGA Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F58320\">\u003clink data-mint-head rel=\"canonical\" href=\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/modeling-guides/abac/numerical-conditions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://proxy-docs.permify.co/#organization\",\"name\":\"FGA Documentation\",\"url\":\"https://proxy-docs.permify.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/permify/s--v0P7cOOW3QatA/logo/light.svg?fit=max\u0026auto=format\u0026n=s--v0P7cOOW3QatA\u0026q=85\u0026s=35df6af816b704ec52d1461bb85c5057\"}},{\"@type\":\"WebSite\",\"@id\":\"https://proxy-docs.permify.co#website\",\"name\":\"FGA Documentation\",\"url\":\"https://proxy-docs.permify.co\",\"publisher\":{\"@id\":\"https://proxy-docs.permify.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions#webpage\",\"url\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions\",\"name\":\"Numerical Conditions\",\"dateModified\":\"2026-10-09T20:33:01.229Z\",\"isPartOf\":{\"@id\":\"https://proxy-docs.permify.co#website\"},\"breadcrumb\":{\"@id\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Modeling Guides\",\"item\":\"https://proxy-docs.permify.co/modeling-guides/rbac/global-roles\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Model Attribute Based Access Control (ABAC)\",\"item\":\"https://proxy-docs.permify.co/modeling-guides/abac/public-private\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Numerical Conditions\",\"item\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions#article\",\"headline\":\"Numerical Conditions\",\"name\":\"Numerical Conditions\",\"url\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions\",\"mainEntityOfPage\":{\"@id\":\"https://proxy-docs.permify.co/modeling-guides/abac/numerical-conditions#webpage\"},\"dateModified\":\"2026-10-09T20:33:01.229Z\",\"publisher\":{\"@id\":\"https://proxy-docs.permify.co/#organization\"},\"isPartOf\":{\"@id\":\"https://proxy-docs.permify.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FGA Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FGA Documentation","nav":{"global":null,"tabs":[{"tab":"FGA Documentation","groups":[{"group":"Introduction","pages":[{"title":"Explore Permify","href":"/permify-overview/intro"},{"title":"Authorization As A Service | Permify","sidebarTitle":"Authorization As A Service","href":"/permify-overview/authorization-service"},{"title":"Permify FAQs","href":"/permify-overview/faqs"},{"title":"Using Permify Playground","sidebarTitle":"Playground","href":"/permify-overview/playground"}]},{"group":"Getting Started","pages":[{"icon":"rocket","title":"Quickstart","href":"/getting-started/quickstart"},{"icon":"code","title":"Modeling Authorization","href":"/getting-started/modeling"},{"title":"Storing Data \u0026 Schema","icon":"database","href":"/getting-started/sync-data"},{"icon":"plug","title":"Interacting With The API","href":"/getting-started/enforcement"},{"icon":"vial","title":"Testing \u0026 Validation","href":"/getting-started/testing"},{"group":"Real World Examples","icon":"globe","pages":[{"title":"Introduction","href":"/getting-started/examples/intro"},{"title":"User Groups","href":"/getting-started/examples/facebook-groups"},{"title":"Healthcare System","mode":"wide","href":"/getting-started/examples/healthcare"},{"title":"Document Management","href":"/getting-started/examples/google-docs"},{"title":"Social Network","href":"/getting-started/examples/instagram"},{"title":"Fintech \u0026 Banking","href":"/getting-started/examples/mercury"},{"title":"Organization Tool","href":"/getting-started/examples/notion"}]}]},{"group":"Modeling Guides","icon":"code","pages":[{"group":"Model Role Based Access Control (RBAC)","pages":[{"title":"Global Roles","mode":"wide","href":"/modeling-guides/rbac/global-roles"},{"title":"Resource Specific Roles","mode":"wide","href":"/modeling-guides/rbac/resource-specific-roles"},{"title":"Custom Roles","mode":"wide","href":"/modeling-guides/rbac/custom-roles"}]},{"group":"Model Attribute Based Access Control (ABAC)","pages":[{"title":"Public or Private Resources","mode":"wide","href":"/modeling-guides/abac/public-private"},{"title":"Text \u0026 Object Based Conditions","mode":"wide","description":null,"href":"/modeling-guides/abac/text-object-based-conditions"},{"title":"Numerical Conditions","mode":"wide","href":"/modeling-guides/abac/numerical-conditions"}]},{"group":"Model Relationship Based Access Control (ReBAC)","pages":[{"title":"User Groups","mode":"wide","description":null,"href":"/modeling-guides/rebac/user-groups"},{"title":"Organization Hierarchies","mode":"wide","href":"/modeling-guides/rebac/hierarchies"},{"title":"Inherited/Nested Permissions","mode":"wide","href":"/modeling-guides/rebac/impersonation"},{"title":"Recursive Relationships","mode":"wide","href":"/modeling-guides/rebac/recursive-rebac"}]}]},{"group":"Setting Up","icon":"cloud-arrow-up","pages":[{"title":"Configuration","icon":"gear","href":"/setting-up/configuration"},{"group":"Deployment","icon":"cloud-arrow-up","pages":[{"title":"Deployment","href":"/setting-up/installation/intro"},{"title":"Database Configuration","href":"/setting-up/installation/database"},{"title":"Deploy on AWS ECS, ECR \u0026 EC2","href":"/setting-up/installation/aws"},{"title":"Install with Brew","href":"/setting-up/installation/brew"},{"title":"Run using Docker","href":"/setting-up/installation/container"},{"title":"Deploy on Fly.io","href":"/setting-up/installation/fly"},{"title":"Deploy on Railway","href":"/setting-up/installation/railway"},{"title":"Deploy on Google Compute Engine","href":"/setting-up/installation/google"},{"title":"Deploying Permify with Helm Charts","href":"/setting-up/installation/helm"},{"title":"Deploy on Kubernetes Cluster","href":"/setting-up/installation/kubernetes"},{"title":"Database Pooling with Pgcat","href":"/setting-up/installation/pooling"}]}]},{"group":"Operations","pages":[{"icon":"cube","title":"Data Bundles","href":"/operations/bundle"},{"icon":"hard-drive","title":"Cache Mechanisms","href":"/operations/cache"},{"icon":"tags","title":"Contextual Permissions","href":"/operations/contextual-tuples"},{"icon":"magnifying-glass","title":"Observability","href":"/operations/tracing"},{"icon":"equals","title":"Consistency (Snap Tokens)","href":"/operations/snap-tokens"},{"icon":"tower-broadcast","title":"Watch","href":"/operations/watch"}]},{"group":"Integrations","icon":"code","pages":[{"title":"Data Synchronization","href":"/integrations/data-sync"},{"group":"Tracing \u0026 Metrics","pages":[{"title":"OpenTelemetry","href":"/integrations/metrics/otlp"},{"title":"Jaeger","href":"/integrations/metrics/jaeger"},{"title":"SigNoz","href":"/integrations/metrics/signoz"},{"title":"Zipkin","href":"/integrations/metrics/zipkin"}]}]},{"group":"Use Cases","pages":[{"title":"Role Based Access Control (RBAC)","href":"/use-cases/rbac"},{"title":"Relationship Based Access Control (ReBAC)","href":"/use-cases/rebac"},{"title":"Attribute Based Access Control (ABAC)","href":"/use-cases/abac"},{"title":"Custom Roles","href":"/use-cases/custom-roles"},{"title":"Multi Tenancy","href":"/use-cases/multi-tenancy"},{"title":"LLM Authorization","href":"/use-cases/llm-authorization"}]},{"group":"Migration","pages":[{"title":"Upgrade Guide from v1.0 to v1.1","href":"/migration/v1.0-v1.1"},{"title":"Database Repair","href":"/migration/repair"}]}]},{"tab":"API References","pages":[{"title":"API References","href":"/api-reference/introduction"}]}]},"title":"Numerical Conditions - FGA Documentation","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}