diff --git a/docs/api-reference/introduction.mdx b/docs/api-reference/introduction.mdx index 3a974f64f..7459f01ff 100644 --- a/docs/api-reference/introduction.mdx +++ b/docs/api-reference/introduction.mdx @@ -87,8 +87,8 @@ These credits are your sole remedy for any availability failures under our SLA. ## Request Rate Limits -Default rate limit is set to 100 requests per second. However, users can adjust this based on their specific needs following our [documentation](https://docs.permify.co/docs/reference/configuration). We used [Token bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm for rate limiting. +Default rate limit is set to 100 requests per second. However, users can adjust this based on their specific needs following our [documentation](/setting-up/configuration). We used [Token bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm for rate limiting. ## Need any help? -Our team is happy to help you get started with Permify. If you'd like to learn more about using Permify in your app or have any questions about this example, [schedule a consultation call with one of our account executives](https://www.permify.co/book-demo). \ No newline at end of file +Our team is happy to help you get started with Permify. If you'd like to learn more about using Permify in your app or have any questions about this example, [schedule a consultation call with one of our account executives](https://www.permify.co/book-demo). diff --git a/docs/cloud/intro.mdx b/docs/cloud/intro.mdx index bfb472102..7db7aab20 100644 --- a/docs/cloud/intro.mdx +++ b/docs/cloud/intro.mdx @@ -258,7 +258,7 @@ This approach allows for: * High availability and resilience in the face of individual nodes or even entire availability zone failure. * Improved performance due to data locality benefits. -Read More: [How Consistent Hashing Operates In Permify?](https://docs.permify.co/operations/cache#how-consistent-hashing-operates-in-permify) +Read More: [How Consistent Hashing Operates In Permify?](/operations/cache#how-consistent-hashing-operates-in-permify) ### Private Link @@ -267,4 +267,3 @@ Read More: [How Consistent Hashing Operates In Permify?](https://docs.permify.co By request, we can set up a Permify instance with Private Link. It is completely private, not exposed to the public internet and ensures that your data traffic remains within the preferred network. - diff --git a/docs/custom.css b/docs/custom.css new file mode 100644 index 000000000..abebc1707 --- /dev/null +++ b/docs/custom.css @@ -0,0 +1,352 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap'); + +*, *::before, *::after { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif !important; +} + +pre, code, kbd, samp, tt { + font-family: 'JetBrains Mono', 'Fira Code', 'Menlo', 'Monaco', 'Consolas', monospace !important; +} + +html:not(.dark) span#background-color { + background: transparent !important; +} + +html:not(.dark) { + background-color: #ffffff !important; + background-image: + radial-gradient(768px at right top, rgba(199, 210, 254, 0.65) 0%, rgba(255, 255, 255, 1.0) 80%), + linear-gradient(rgba(99, 102, 241, 0.4) 1px, transparent 1px), + linear-gradient(90deg, rgba(99, 102, 241, 0.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 color overrides ---------- */ +: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 ---------- */ +#banner { + background-color: var(--fa-slate-800) !important; + color: #fff !important; + border-bottom: 2px solid var(--fa-orange) !important; +} + +#banner a { + color: var(--fa-orange-light) !important; + text-decoration: underline !important; +} + +#banner a:hover { + color: #fff !important; +} + +#navbar { + background-color: #0f172a !important; + border-bottom: 1px solid #334155 !important; +} + +/* Keep the backdrop-blur overlay transparent so the parent dark bg shows */ +#navbar #navbar-transition { + background-color: transparent !important; +} + +/* All links in navbar → light on dark background */ +#navbar a { + color: #e2e8f0 !important; +} + +#navbar a:hover { + color: var(--fa-orange-light) !important; +} + +/* FusionAuth Documentation topbar link — match tab brightness */ +#navbar li.navbar-link a { + color: #ffffff !important; + font-size: 0.875rem !important; + font-weight: 600 !important; + letter-spacing: -0.01em !important; + opacity: 1 !important; +} + +#navbar li.navbar-link a:hover { + color: var(--fa-orange-light) !important; +} + +/* Mode toggle & other icon buttons in navbar */ +#navbar button { + color: #94a3b8 !important; +} + +#navbar button:hover { + color: #e2e8f0 !important; +} + +/* Search bar — hidden */ +#navbar [id="search-bar-entry"] { + display: none !important; +} + +/* Logo link — inline-flex so the "/ Docs" label sits to the right */ +#navbar a[data-slot="context-menu-trigger"] { + display: inline-flex !important; + align-items: center !important; +} + +/* Logo icon — h-12 (48px) matches FusionAuth navbar */ +#navbar a[data-slot="context-menu-trigger"] img { + height: 3rem !important; + width: auto !important; + order: 1; +} + +/* Slash — pushed after the logo via flex order */ +#navbar a[data-slot="context-menu-trigger"]::before { + content: "/"; + color: #64748b; + font-size: 1.5rem; + font-weight: 300; + margin-left: 0.75rem; + margin-right: 0.375rem; + line-height: 1; + order: 2; +} + +/* "Docs" — after the slash */ +#navbar a[data-slot="context-menu-trigger"]::after { + content: "FGA Docs"; + color: #ffffff; + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.025em; + line-height: 1; + order: 3; +} + +/* ---------- Sidebar ---------- */ +/* Active / selected sidebar item: orange left accent */ +[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, 0.06) !important; +} + +/* Sidebar group headings: slate-800 uppercase small */ +[data-testid="sidebar"] h3, +aside h3 { + color: var(--fa-slate-800) !important; + text-transform: uppercase !important; + font-size: 0.7rem !important; + letter-spacing: 0.06em !important; + font-weight: 700 !important; +} + +:is(.dark) [data-testid="sidebar"] h3, +:is(.dark) aside h3 { + color: var(--fa-slate-200) !important; +} + +/* Sidebar links: slate-700 default, orange on hover */ +[data-testid="sidebar"] a, +aside a { + color: var(--fa-slate-700) !important; + transition: color 0.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; +} + +/* ---------- Buttons / CTA ---------- */ +/* Primary buttons: FusionAuth orange */ +a[class*="Button"], +button[class*="primary"], +.cta-button, +[data-testid="cta-button"] { + background-color: var(--fa-orange) !important; + border-color: var(--fa-orange) !important; + color: #fff !important; + border-radius: 6px !important; + transition: background-color 0.15s ease !important; +} + +a[class*="Button"]:hover, +button[class*="primary"]:hover, +.cta-button:hover, +[data-testid="cta-button"]:hover { + background-color: var(--fa-orange-dark) !important; + border-color: var(--fa-orange-dark) !important; +} + +/* ---------- Links in content ---------- */ +article a, +.prose a, +main a:not([class]) { + color: var(--fa-orange-dark) !important; + text-decoration-color: rgba(245, 131, 32, 0.3) !important; +} + +article a:hover, +.prose a:hover, +main a:not([class]):hover { + color: var(--fa-orange) !important; + text-decoration-color: var(--fa-orange) !important; +} + +:is(.dark) article a, +:is(.dark) .prose a, +:is(.dark) main a:not([class]) { + color: var(--fa-orange-light) !important; +} + +/* ---------- Anchor cards / icon cards ---------- */ +[class*="anchor-card"], +[class*="AnchorCard"] { + border: 1px solid var(--fa-slate-200) !important; + border-radius: 8px !important; + transition: border-color 0.15s ease, box-shadow 0.15s ease !important; +} + +[class*="anchor-card"]:hover, +[class*="AnchorCard"]:hover { + border-color: var(--fa-orange) !important; + box-shadow: 0 2px 8px rgba(245, 131, 32, 0.12) !important; +} + +/* ---------- Headings ---------- */ +article h1, +article h2, +article h3, +.prose h1, +.prose h2, +.prose h3 { + color: var(--fa-slate-800) !important; +} + +:is(.dark) article h1, +:is(.dark) article h2, +:is(.dark) article h3, +:is(.dark) .prose h1, +:is(.dark) .prose h2, +:is(.dark) .prose h3 { + color: #f1f5f9 !important; +} + +/* ---------- Code blocks ---------- */ +pre, code { + border-radius: 6px !important; +} + +pre { + background-color: #1f273b !important; +} + +:is(.dark) pre { + background-color: #00081a !important; +} + +/* Inline code */ +:not(pre) > code { + background-color: #f1f5f9 !important; + color: var(--fa-slate-800) !important; + padding: 0.15em 0.4em !important; + border-radius: 4px !important; + font-size: 0.875em !important; +} + +:is(.dark) :not(pre) > code { + background-color: #1e293b !important; + color: #e2e8f0 !important; +} + +/* ---------- Tables ---------- */ +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, 0.5) !important; +} + +:is(.dark) table tr:nth-child(even) { + background-color: rgba(30, 41, 59, 0.3) !important; +} + +/* ---------- Tabs ---------- */ +[role="tab"][aria-selected="true"] { + color: var(--fa-orange) !important; + border-bottom-color: var(--fa-orange) !important; +} + +/* ---------- Scrollbar (webkit) ---------- */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-thumb { + background: #94a3b8; + border-radius: 3px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +/* ---------- Selection highlight ---------- */ +::selection { + background-color: rgba(245, 131, 32, 0.2); + color: inherit; +} + +/* ---------- Feedback / rating widgets ---------- */ +[class*="feedback"] button:hover, +[class*="Feedback"] button:hover { + color: var(--fa-orange) !important; +} + +/* ---------- Badge-style version tags ---------- */ +[class*="badge"], +[class*="Badge"] { + border-radius: 4px !important; +} + +/* ---------- Search highlight ---------- */ +mark, [class*="highlight"] { + background-color: rgba(245, 131, 32, 0.15) !important; +} + +/* ---------- Card components ---------- */ +[class*="Card"], +[class*="card"] { + border-radius: 8px !important; +} diff --git a/docs/docs/permify-overview/authorization-service.md b/docs/docs/permify-overview/authorization-service.md index 846b3a3e4..d94de3553 100644 --- a/docs/docs/permify-overview/authorization-service.md +++ b/docs/docs/permify-overview/authorization-service.md @@ -48,7 +48,7 @@ Zanzibar system achieved more than 95% of the access checks responded in 10 mill Permify applies proven techniques that Google used. We’re trying to make Zanzibar available to everyone to use and benefit in their applications and services :::success Metrics -Currently, Permify can achieve response times of up to **10ms** for access control checks, with handling up to **1 trillion access requests** per second. Thanks to our state-of-the-art [parallel graph engine](https://docs.permify.co/docs/api-overview/permission/check-api/#how-access-decisions-evaluated) and various [cache mechanisms](https://docs.permify.co/docs/reference/cache/) that we operate. +Currently, Permify can achieve response times of up to **10ms** for access control checks, with handling up to **1 trillion access requests** per second. Thanks to our state-of-the-art [parallel graph engine](/api-reference/permission/check-api#how-access-decisions-evaluated) and various [cache mechanisms](/operations/cache/) that we operate. ::: [Google Zanzibar]: https://permify.co/post/google-zanzibar-in-a-nutshell @@ -77,4 +77,3 @@ Permify can help you with things like fraud detection, real-time transaction mon ## Need any help on Authorization ? Our team is happy to help you get started with Permify. If you'd like to learn more about using Permify or how it might fit into your authorization workflow, [schedule a consultation call with one of our account executives](https://www.permify.co/book-demo). - diff --git a/docs/docs/permify-overview/intro.md b/docs/docs/permify-overview/intro.md index 507737a99..ac4292992 100644 --- a/docs/docs/permify-overview/intro.md +++ b/docs/docs/permify-overview/intro.md @@ -107,10 +107,6 @@ If you like Permify, please consider giving us a :star: on [github](https://gith

-## Roadmap - -You can find Permify's Public Roadmap [here](https://github.com/orgs/Permify/projects/1)! - ## Need any help on Authorization ? Our team is happy to help you get started with Permify. If you'd like to learn more about using Permify or how it might fit into your authorization workflow, [schedule a consultation call with one of our account executives](https://www.permify.co/book-demo). diff --git a/docs/favicon.png b/docs/favicon.png new file mode 100644 index 000000000..487b6f0bc Binary files /dev/null and b/docs/favicon.png differ diff --git a/docs/getting-started/end-to-end-example.mdx b/docs/getting-started/end-to-end-example.mdx index 470f41d95..81a25f8c1 100644 --- a/docs/getting-started/end-to-end-example.mdx +++ b/docs/getting-started/end-to-end-example.mdx @@ -340,7 +340,7 @@ To see a live example and test of this example schema, visit the [Permify Playgr ### Apply Model via SDK -Let's insert the example schema into Permify using the [Write Schema API](https://docs.permify.co/api-reference/schema/write-schema) +Let's insert the example schema into Permify using the [Write Schema API](/api-reference/schema/write-schema) @@ -466,7 +466,7 @@ For more information about adding permissions and storing data refer to [Storing #### Relationships -In Permify, relationship between your entities, objects, and users builds up a collection of access control lists (ACLs). Here is how we insert relationships into Permify via our SDKs using the [Data Write API](https://docs.permify.co/api-reference/data/write-data) +In Permify, relationship between your entities, objects, and users builds up a collection of access control lists (ACLs). Here is how we insert relationships into Permify via our SDKs using the [Data Write API](/api-reference/data/write-data) We will assign **admin** role to the user:1 in organization:1 --> `organization:1@admin#user:1` @@ -809,4 +809,4 @@ try { Below is an example of an implemented Python access check request and response -![python-check](https://github.com/user-attachments/assets/494b13a6-8f6c-4b3a-a0cb-01e5c045e5b7) \ No newline at end of file +![python-check](https://github.com/user-attachments/assets/494b13a6-8f6c-4b3a-a0cb-01e5c045e5b7) diff --git a/docs/getting-started/enforcement.mdx b/docs/getting-started/enforcement.mdx index 451bf5c3a..1de488763 100644 --- a/docs/getting-started/enforcement.mdx +++ b/docs/getting-started/enforcement.mdx @@ -85,7 +85,7 @@ These credits are your sole remedy for any availability failures under our SLA. ## Request Rate Limits -Default rate limit is set to 100 requests per second. However, users can adjust this based on their specific needs following our [documentation](https://docs.permify.co/docs/reference/configuration). We used [Token bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm for rate limiting. +Default rate limit is set to 100 requests per second. However, users can adjust this based on their specific needs following our [documentation](/setting-up/configuration). We used [Token bucket](https://en.wikipedia.org/wiki/Token_bucket) algorithm for rate limiting. ## Need any help? diff --git a/docs/logo/dark.svg b/docs/logo/dark.svg index d45a31565..5351c3c2f 100644 --- a/docs/logo/dark.svg +++ b/docs/logo/dark.svg @@ -1,55 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/logo/light.svg b/docs/logo/light.svg index 2dbef5b9e..5351c3c2f 100644 --- a/docs/logo/light.svg +++ b/docs/logo/light.svg @@ -1,55 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/mint.json b/docs/mint.json index aa4800ea4..d9b92363b 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -1,42 +1,57 @@ { "$schema": "https://mintlify.com/schema.json", - "name": "Permify Docs", + "name": "FGA Documentation", "logo": { "dark": "/logo/dark.svg", - "light": "/logo/light.svg" + "light": "/logo/light.svg", + "href": "/" }, - "favicon": "/favicon.svg", + "favicon": "/favicon.png", "colors": { - "primary": "#8246FF", - "light": "#8246FF", - "dark": "#6318FF", + "primary": "#F58320", + "light": "#fb923c", + "dark": "#ea580c", "anchors": { - "from": "#8246FF", - "to": "#8246FF" + "from": "#F58320", + "to": "#ea580c" + }, + "background": { + "light": "#ffffff", + "dark": "#0f172a" + } + }, + "font": { + "headings": { + "family": "Inter", + "weight": 600 + }, + "body": { + "family": "Inter", + "weight": 400 } }, + "css": "/custom.css", "topbarLinks": [ { - "name": "Support", - "url": "https://discord.gg/permify" + "name": "FusionAuth Documentation", + "url": "/docs/" } ], "modeToggle": { - "default": "dark" + "default": "light", + "isHidden": false }, "banner": { - "content": "**Permify** has been acquired by **FusionAuth** 🎉 [Read the official announcement](https://fusionauth.io/blog/fusionauth-permify-pr) for more details.", + "content": "**Permify** is now part of **FusionAuth** \ud83c\udf89 [Learn more at fusionauth.io](https://fusionauth.io/blog/fusionauth-permify-pr)", "dismissible": false }, + "rounded": "default", "analytics": { "ga4": { "measurementId": "G-BSRXWHBYR1" } }, - "topbarCtaButton": { - "name": "Playground", - "url": "https://play.permify.co/?s=organizations-hierarchies" - }, + "redirects": [ { "source": "/docs/:slug*", @@ -211,29 +226,16 @@ "destination": "/use-cases/rbac" } ], + "primaryTab": { + "name": "FGA Documentation" + }, "tabs": [ { "name": "API References", "url": "api-reference" } ], - "anchors": [ - { - "name": "Community", - "icon": "discord", - "url": "https://discord.gg/permify" - }, - { - "name": "Open Source", - "icon": "github", - "url": "https://github.com/Permify/permify" - }, - { - "name": "Playground", - "icon": "play", - "url": "https://play.permify.co/?s=organizations-hierarchies" - } - ], + "navigation": [ { "group": "Introduction", diff --git a/docs/modeling-guides/abac/public-private.mdx b/docs/modeling-guides/abac/public-private.mdx index 329aeced4..2b229a34b 100644 --- a/docs/modeling-guides/abac/public-private.mdx +++ b/docs/modeling-guides/abac/public-private.mdx @@ -26,7 +26,7 @@ In this schema we define two entities: `user` and `resource`. The resource entit So if `is_public` is set to **true**, anyone can view the resource. If it's **false**, only the owner can view and edit it. -To create a resource with the `is_public` attribute, you would use the attributes argument in a [data write request](https://docs.permify.co/api-reference/data/write-data). +To create a resource with the `is_public` attribute, you would use the attributes argument in a [data write request](/api-reference/data/write-data). Here's an example using the Go client: diff --git a/docs/permify-overview/intro.mdx b/docs/permify-overview/intro.mdx index a54e24c4f..5bb028862 100644 --- a/docs/permify-overview/intro.mdx +++ b/docs/permify-overview/intro.mdx @@ -3,10 +3,6 @@ title: Explore Permify description: 'Start building scalable and fine-grained authorization systems in mere minutes.' --- - - 🎉 Exciting news: Permify has been acquired by FusionAuth! Read more: Permify Blog Post | Official Press Release | FusionAuth Blog Post - -