\n
Your Docusaurus site did not load properly.
\n
A very common reason is a wrong site baseUrl configuration.
\n
Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}
\n
We suggest trying baseUrl =
\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,m.jsx)($,{location:e,children:G})}function Y(){return(0,m.jsx)(V.A,{children:(0,m.jsx)(C.l,{children:(0,m.jsxs)(O.x,{children:[(0,m.jsxs)(g,{children:[(0,m.jsx)(z,{}),(0,m.jsx)(N,{}),(0,m.jsx)(H,{}),(0,m.jsx)(q,{})]}),(0,m.jsx)(W,{})]})})})}var Q=n(84054);const J=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const s=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;s?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(86921);const Z=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,h.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?J(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),P(e))},re=Object.freeze(ne);function se(e){let{children:t}=e;return"hash"===a.default.future.experimental_router?(0,m.jsx)(o.I9,{children:t}):(0,m.jsx)(o.Kd,{children:t})}const ie=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,m.jsx)(i.vd,{children:(0,m.jsx)(se,{children:(0,m.jsx)(Y,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},o=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ie)window.docusaurusRoot=s.hydrateRoot(e,t,{onRecoverableError:n});else{const r=s.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};P(window.location.pathname).then((()=>{(0,r.startTransition)(o)}))}},26988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>h});var r=n(96540),s=n(4784);const i=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"content/intro","docs":[{"id":"content/authorization-concepts","path":"/docs/authorization-concepts","sidebar":"docs"},{"id":"content/community","path":"/docs/community","sidebar":"docs"},{"id":"content/concepts","path":"/docs/concepts","sidebar":"docs"},{"id":"content/configuration-language","path":"/docs/configuration-language","sidebar":"docs"},{"id":"content/getting-started/cli","path":"/docs/getting-started/cli","sidebar":"docs"},{"id":"content/getting-started/configure-model","path":"/docs/getting-started/configure-model","sidebar":"docs"},{"id":"content/getting-started/configure-telemetry","path":"/docs/getting-started/configure-telemetry","sidebar":"docs"},{"id":"content/getting-started/create-store","path":"/docs/getting-started/create-store","sidebar":"docs"},{"id":"content/getting-started/framework","path":"/docs/getting-started/framework","sidebar":"docs"},{"id":"content/getting-started/immutable-models","path":"/docs/getting-started/immutable-models","sidebar":"docs"},{"id":"content/getting-started/install-sdk","path":"/docs/getting-started/install-sdk","sidebar":"docs"},{"id":"content/getting-started/overview","path":"/docs/getting-started","sidebar":"docs"},{"id":"content/getting-started/perform-check","path":"/docs/getting-started/perform-check","sidebar":"docs"},{"id":"content/getting-started/perform-list-objects","path":"/docs/getting-started/perform-list-objects","sidebar":"docs"},{"id":"content/getting-started/perform-list-users","path":"/docs/getting-started/perform-list-users","sidebar":"docs"},{"id":"content/getting-started/production-best-practices","path":"/docs/getting-started/running-in-production","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/access-control","path":"/docs/getting-started/setup-openfga/access-control","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/configure-openfga","path":"/docs/getting-started/setup-openfga/configure-openfga","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/docker-setup","path":"/docs/getting-started/setup-openfga/docker","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/kubernetes-setup","path":"/docs/getting-started/setup-openfga/kubernetes","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/overview","path":"/docs/getting-started/setup-openfga/overview","sidebar":"docs"},{"id":"content/getting-started/setup-openfga/playground","path":"/docs/getting-started/setup-openfga/playground","sidebar":"docs"},{"id":"content/getting-started/setup-sdk-client","path":"/docs/getting-started/setup-sdk-client","sidebar":"docs"},{"id":"content/getting-started/tuples-api-best-practices","path":"/docs/getting-started/tuples-api-best-practices","sidebar":"docs"},{"id":"content/getting-started/update-tuples","path":"/docs/getting-started/update-tuples","sidebar":"docs"},{"id":"content/interacting/consistency","path":"/docs/interacting/consistency","sidebar":"docs"},{"id":"content/interacting/managing-group-access","path":"/docs/interacting/managing-group-access","sidebar":"docs"},{"id":"content/interacting/managing-group-membership","path":"/docs/interacting/managing-group-membership","sidebar":"docs"},{"id":"content/interacting/managing-relationships-between-objects","path":"/docs/interacting/managing-relationships-between-objects","sidebar":"docs"},{"id":"content/interacting/managing-user-access","path":"/docs/interacting/managing-user-access","sidebar":"docs"},{"id":"content/interacting/overview","path":"/docs/interacting","sidebar":"docs"},{"id":"content/interacting/read-tuple-changes","path":"/docs/interacting/read-tuple-changes","sidebar":"docs"},{"id":"content/interacting/relationship-queries","path":"/docs/interacting/relationship-queries","sidebar":"docs"},{"id":"content/interacting/search-with-permissions","path":"/docs/interacting/search-with-permissions","sidebar":"docs"},{"id":"content/interacting/transactional-writes","path":"/docs/interacting/transactional-writes","sidebar":"docs"},{"id":"content/intro","path":"/docs/fga","sidebar":"docs"},{"id":"content/modeling/advanced/entitlements","path":"/docs/modeling/advanced/entitlements","sidebar":"docs"},{"id":"content/modeling/advanced/gdrive","path":"/docs/modeling/advanced/gdrive","sidebar":"docs"},{"id":"content/modeling/advanced/github","path":"/docs/modeling/advanced/github","sidebar":"docs"},{"id":"content/modeling/advanced/iot","path":"/docs/modeling/advanced/iot","sidebar":"docs"},{"id":"content/modeling/advanced/overview","path":"/docs/modeling/advanced","sidebar":"docs"},{"id":"content/modeling/advanced/slack","path":"/docs/modeling/advanced/slack","sidebar":"docs"},{"id":"content/modeling/blocklists","path":"/docs/modeling/blocklists","sidebar":"docs"},{"id":"content/modeling/building-blocks/concentric-relationships","path":"/docs/modeling/building-blocks/concentric-relationships","sidebar":"docs"},{"id":"content/modeling/building-blocks/direct-relationships","path":"/docs/modeling/building-blocks/direct-relationships","sidebar":"docs"},{"id":"content/modeling/building-blocks/object-to-object-relationships","path":"/docs/modeling/building-blocks/object-to-object-relationships","sidebar":"docs"},{"id":"content/modeling/building-blocks/overview","path":"/docs/modeling/building-blocks","sidebar":"docs"},{"id":"content/modeling/building-blocks/usersets","path":"/docs/modeling/building-blocks/usersets","sidebar":"docs"},{"id":"content/modeling/conditions","path":"/docs/modeling/conditions","sidebar":"docs"},{"id":"content/modeling/contextual-time-based-authorization","path":"/docs/modeling/contextual-time-based-authorization","sidebar":"docs"},{"id":"content/modeling/custom-roles","path":"/docs/modeling/custom-roles","sidebar":"docs"},{"id":"content/modeling/direct-access","path":"/docs/modeling/direct-access","sidebar":"docs"},{"id":"content/modeling/getting-started","path":"/docs/modeling/getting-started","sidebar":"docs"},{"id":"content/modeling/migrating/migrating-models","path":"/docs/modeling/migrating/migrating-models","sidebar":"docs"},{"id":"content/modeling/migrating/migrating-relations","path":"/docs/modeling/migrating/migrating-relations","sidebar":"docs"},{"id":"content/modeling/migrating/overview","path":"/docs/modeling/migrating","sidebar":"docs"},{"id":"content/modeling/modular-models","path":"/docs/modeling/modular-models","sidebar":"docs"},{"id":"content/modeling/multiple-restrictions","path":"/docs/modeling/multiple-restrictions","sidebar":"docs"},{"id":"content/modeling/organization-context-authorization","path":"/docs/modeling/organization-context-authorization","sidebar":"docs"},{"id":"content/modeling/overview","path":"/docs/modeling","sidebar":"docs"},{"id":"content/modeling/parent-child","path":"/docs/modeling/parent-child","sidebar":"docs"},{"id":"content/modeling/public-access","path":"/docs/modeling/public-access","sidebar":"docs"},{"id":"content/modeling/roles-and-permissions","path":"/docs/modeling/roles-and-permissions","sidebar":"docs"},{"id":"content/modeling/testing-models","path":"/docs/modeling/testing","sidebar":"docs"},{"id":"content/modeling/token-claims-contextual-tuples","path":"/docs/modeling/token-claims-contextual-tuples","sidebar":"docs"},{"id":"content/modeling/user-groups","path":"/docs/modeling/user-groups","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/fga","label":"What is OpenFGA"}}}}],"breadcrumbs":true}}}'),o=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var a=n(22654);const l=JSON.parse('{"docusaurusVersion":"3.6.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.6.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.6.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.6.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.6.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.6.3"},"webpack-overrides-docusaurus-plugin":{"type":"project"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.6.3"},"docusaurus-plugin-local-resolve":{"type":"package","name":"docusaurus-plugin-module-alias","version":"0.0.2"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.45.0"}}}');var c=n(74848);const u={siteConfig:s.default,siteMetadata:l,globalData:i,i18n:o,codeTranslations:a},d=r.createContext(u);function h(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(96540),s=n(38193),i=n(5260),o=n(70440),a=n(12161),l=n(53102),c=n(74848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,o.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function h(e){let{children:t}=e;return(0,c.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function p(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(h,{children:(0,c.jsxs)(m,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(i.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(a.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const f=e=>(0,c.jsx)(p,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){s.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??f)(e)}return e??null}}},38193:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,s={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n(96540);var r=n(80545),s=n(74848);function i(e){return(0,s.jsx)(r.mg,{...e})}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(96540),s=n(54625),i=n(70440),o=n(44586),a=n(16654),l=n(38193),c=n(63427),u=n(86025),d=n(74848);function h(e,t){let{isNavLink:n,to:h,href:p,activeClassName:f,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,o.A)(),{trailingSlash:_,baseUrl:E}=v,T=v.future.experimental_router,{withBaseUrl:x}=(0,u.hH)(),w=(0,c.A)(),k=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>k.current));const S=h||p;const N=(0,a.A)(S),A=S?.replace("pathname://","");let O=void 0!==A?(C=A,y&&(e=>e.startsWith("/"))(C)?x(C):C):void 0;var C;"hash"===T&&O?.startsWith("./")&&(O=O?.slice(1)),O&&N&&(O=(0,i.Ks)(O,{trailingSlash:_,baseUrl:E}));const I=(0,r.useRef)(!1),R=n?s.k2:s.N_,L=l.A.canUseIntersectionObserver,P=(0,r.useRef)(),D=()=>{I.current||null==O||(window.docusaurus.preload(O),I.current=!0)};(0,r.useEffect)((()=>(!L&&N&&l.A.canUseDOM&&null!=O&&window.docusaurus.prefetch(O),()=>{L&&P.current&&P.current.disconnect()})),[P,O,L,N]);const $=O?.startsWith("#")??!1,M=!b.target||"_self"===b.target,j=!O||!N||!M||$&&"hash"!==T;g||!$&&j||w.collectLink(O),b.id&&w.collectAnchor(b.id);const F={};return j?(0,d.jsx)("a",{ref:k,href:O,...S&&!N&&{target:"_blank",rel:"noopener noreferrer"},...b,...F}):(0,d.jsx)(R,{...b,onMouseEnter:D,onTouchStart:D,innerRef:e=>{k.current=e,L&&e&&N&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=O&&window.docusaurus.prefetch(O))}))})),P.current.observe(e))},to:O,...n&&{isActive:m,activeClassName:f},...F})}const p=r.forwardRef(h)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>l});var r=n(96540),s=n(74848);function i(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(22654);function a(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return i(a({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal