docs: resync the documentation with FerrisKey 0.8.0 - #15
Open
LeadcodeDev wants to merge 1 commit into
Open
LeadcodeDev wants to merge 1 commit into
LeadcodeDev wants to merge 1 commit into
Conversation
The previous inventory was built from the committed openapi.json, which is
36 operations behind the code and still describes one path that has moved.
This pass rebuilds it from `ferriskey-api gen-api` — the spec the binary
prints from its own utoipa annotations — and covers the 229 operations the
server actually serves.
Pages that no longer matched the code:
- Aegis: both mapper pages used an invented config schema (`claim_name`,
`add_to_access_token`, `claim_type`). The real keys are the dotted
Keycloak ones the mapper engine reads, which `client-scopes.mdx` already
documented correctly. Every example was non-functional.
- Abyss: the redirect URI to register at the provider is
`/broker/{alias}/endpoint`, not `/callback`, so the documented setup
failed with redirect_uri_mismatch on all three providers.
- SeaWatch and Compass: the querying pages pointed at an invented
`/admin/realms/…` prefix with filters that do not exist. Real paths carry
`/v1`, responses are enveloped in `data`, and the flows endpoint takes no
time range.
- Realm settings: five fields were documented under their SQL column names;
the PUT payload has no deny_unknown_fields, so those calls returned 200
and changed nothing.
- Roles: `manage_organizations` and `view_organizations` were missing, and
the permission model now resolves through an action catalogue.
- Maintenance: the realm whitelist moved to `/realms/{realm}/settings/…`.
Features that had no page: LDAP user federation (announced as "planned"
while shipped, with ldap3 and a sync API), portal themes and layouts,
the self-service account surface under /users/me, maintenance mode, the
password policy, webhook deliveries and retries, the export/import family,
and the Supabase import source in ferriskey-cli.
SAML moves out of Modules and in beside Authentication as the second
protocol FerrisKey speaks, with the shared authentication chain made
explicit on both pages.
Also fixes the CLI commands index hoisting a duplicate "Overview" to the
section root, and capitalises the command page titles.
Screenshots are all retaken against the 0.8.0 console as light/dark pairs,
swapped by two classes added to globals.css.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The documentation's API inventory was built from the committed
openapi.json. That file is 36 operations behind the code (193 vs 229), reports0.7.0, and still describes one path that has since moved — so anything derived from it inherits the drift.This pass rebuilds the inventory from
ferriskey-api gen-api, the spec the binary prints from its ownutoipaannotations, with no database needed. Every claim below was checked against the source inferriskeyandferriskey-cli.Pages that no longer matched the code
aegis/protocol-mappers,aegis/custom-claimsclaim_name,add_to_access_token,claim_type). The mapper engine reads dotted Keycloak keys —claim.name,access.token.claim,jsonType.label. Sinceconfigis free-form JSON the API accepted the documented payloads and then ignored them, so every example produced a mapper that silently did nothing.client-scopes.mdxalready had the right schema.abyss/providers/broker/{alias}/callbackat Google, GitHub and Discord. FerrisKey sends/broker/{alias}/endpoint, so the documented setup failed withredirect_uri_mismatchon all three.seawatch/querying,compass/querying/admin/realms/…prefix; real paths carry/v1. Filters that do not exist, responses documented unwrapped when they are enveloped indata, and a time range on Compass flows that the handler hardcodes toNone.core-concepts/realmsaccess_token_lifetime_secs, …). The payload has nodeny_unknown_fields, so those calls return200and change nothing.core-concepts/rolesmanage_organizationsandview_organizationsmissing; the permission model now resolves through a 95-entry action catalogue.maintenance/clients/settings/…to/settings/….Plus smaller ones:
scopes_supporteddocumented in a discovery document that does not emit it, the operator example pinned to an old version, and an AuthZen claim that contradicted its own page.Features that had no page
ldap3, seven endpoints, sync modes and connection testing. The most costly gap: an evaluator looking for Active Directory concluded the product did not do it./users/me— 12 endpoints, including a well-designed elevation model where a second factor cannot rotate the factor set it belongs to.ferriskey-cli.Structure
SAML moves out of Modules and in beside Authentication as the second protocol FerrisKey speaks. The authentication page now presents both and makes explicit that they share one chain — same login, MFA, lockout and audit — with Compass recording
saml_authn_requestandsaml_assertionas their own steps.Also fixes the CLI commands index hoisting a duplicate Overview to the section root (Astro drops the
indexsegment from the id, so the page landed outside its own group), and capitalises the command page titles.Screenshots
All retaken against the 0.8.0 console as light/dark pairs, swapped by two classes added to
globals.css— plain CSS rather than Tailwinddark:utilities, which are not guaranteed to be generated from.mdxsources. 24 pairs, matched dimensions, no orphans.Verification
astro buildgreen — 89 pages.#anchorresolved against theids in the built HTML.-lighthas its-dark.Left for the upstream repo
Three findings belong in
ferriskey, not here, and are deliberately not touched:openapi.jsonshould be generated in CI and fail on drift; the/users/mecredential operations write no audit event; andcheck_breached, Kerberos federation and RFC 8693 token exchange are modelled but not served — the docs now say so rather than implying they work.🤖 Generated with Claude Code