Repository navigation
feat(web): Developers page to manage API keys - #225
Merged
Merged
Conversation
Adds admin.chrome.nav.developers, admin.developers (the API keys section: list, empty and error states, create dialog with the one-time reveal, revoke confirmation, KEY_LIMIT message) and admin.developerDocs (the docs placeholder), in English and Spanish. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
Between Integrations and Docs, in the desktop rail (open and collapsed) and the mobile drawer, active on /admin/developers and below it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
Client methods for GET/POST /v1/api-keys and DELETE /v1/api-keys/:id, built against the spec contract, and the two server actions the page calls through callAction. Refusals come back as stable codes (INVALID, KEY_LIMIT, FORBIDDEN, FAILED); a 404 on revoke counts as already revoked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
/admin/developers lists the caller's keys (all of the workspace's, with who created each, for owners and admins), creates a key in a dialog that shows the full key once with a copy button and a warning, and revokes with confirmation. Empty and error states, no horizontal scroll on a phone. The docs section is a placeholder component, DeveloperDocs in developer-docs.tsx, that the docs ticket replaces as a unit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
A "use server" file may export async functions only, so the key name limit moves to its own module, and the client panel imports only types from admin-api (the module reads the session cookie and cannot reach a client bundle). vitest stubs both, so only the production build saw it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
- A 404 on revoke is no longer reported as a revoke. The API answers 404 for a key of another workspace too, which happens when the workspace changed in another tab; the page now says the key is no longer in this workspace and refreshes the list (GONE, new catalog string EN + ES). - The create dialog stays open while the key is being created, so Escape or a backdrop click cannot create a key whose secret is never shown. - Overlapping revokes no longer clear each other's busy state. - The page reads /v1/me and the key list in parallel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
josue-commits
force-pushed
the
feat/api-v1-developers-page
branch
from
October 13, 2026 00:14
02e6be4 to
a4b7137
Compare
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.
Summary
Adds a Developers page to the admin rail where workspace members can create, view and revoke API keys for the public v1 API. A new key's secret is shown exactly once, then dropped.
Changes
@quill/shared: EN and ES catalog copy for the Developers page and its rail item.callAction, mapped to the/v1/api-keyscontract (including the key limit error).md.@quill/shared.How it was tested
pnpm typecheck: 16/16.PUBLISH_GATE_LOCAL=1 pnpm run publish-gate: passed.pnpm changeset status: OK.next build+next start.Review notes
An independent review found and fixed (commit 02e6be4, with tests):
GONEerror and shows a dedicated message instead of a success toast.Coordination
The sibling PR for the developer docs page also adds
developer-docs.tsx; expect an add/add conflict there when the second one merges.🤖 Generated with Claude Code