Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/api-reference/introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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).
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).
3 changes: 1 addition & 2 deletions docs/cloud/intro.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.

352 changes: 352 additions & 0 deletions docs/custom.css
Original file line number Diff line number Diff line change
@@ -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;
Comment on lines +1 to +8
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix the stylelint violations before landing this stylesheet.

These lines already trip the configured CSS rules: import-notation on Line 1 and font-family-name-quotes on Lines 4 and 8. This will keep the new stylesheet from passing lint as-is.

Suggested lint-safe cleanup
-@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
+@import '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;
+  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;
+  font-family: 'JetBrains Mono', 'Fira Code', Menlo, Monaco, Consolas, monospace !important;
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
@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;
`@import` '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;
}
🧰 Tools
🪛 Stylelint (17.7.0)

[error] 4-4: Expected no quotes around "Inter" (font-family-name-quotes)

(font-family-name-quotes)


[error] 8-8: Expected no quotes around "Menlo" (font-family-name-quotes)

(font-family-name-quotes)


[error] 8-8: Expected no quotes around "Monaco" (font-family-name-quotes)

(font-family-name-quotes)


[error] 8-8: Expected no quotes around "Consolas" (font-family-name-quotes)

(font-family-name-quotes)


[error] 1-1: Expected "url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap')" to be "'https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap'" (import-notation)

(import-notation)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/custom.css` around lines 1 - 8, The stylesheet fails stylelint due to
import-notation and font-family-name-quotes issues: replace the `@import` url(...)
with a string-style import (e.g. `@import` "https://fonts.googleapis.com/..." )
and normalize font-family quoting by using double quotes for multi-word font
names and removing quotes from generic family names; update the selectors shown
(*, *::before, *::after and pre, code, kbd, samp, tt) so entries like "Inter",
"JetBrains Mono", "Fira Code" use double quotes and monospace/sans-serif are
unquoted to satisfy the font-family-name-quotes rule.

}

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;
}
Comment on lines +95 to +98
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Keep the docs search entry visible.

This removes the primary search affordance from the navbar. On a docs site this is a high-friction navigation regression, especially for first-time users and keyboard/mouse users who rely on the visible entry point rather than hidden shortcuts.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/custom.css` around lines 95 - 98, The CSS rule hiding the docs search is
removing the primary search affordance; locate the selector `#navbar`
[id="search-bar-entry"] in custom.css and remove or disable the rule (delete the
block or change it so it does not set display:none !important), ensuring the
search entry remains visible (e.g., allow default display or set display:block)
and remove the !important override so other styles can control visibility.


/* 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;
}
3 changes: 1 addition & 2 deletions docs/docs/permify-overview/authorization-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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).

Loading
Loading