Open
Conversation
added 4 commits
April 17, 2026 16:08
- Introduced a new endpoint for bulk exporting private keys. - Added corresponding types and interfaces for handling bulk export requests and responses. - Updated the audit log to track bulk export events. - Enhanced the KMS service and data access layer to support bulk key retrieval. - Implemented frontend hooks and components for initiating bulk exports and handling responses.
- Updated the event type for bulk exporting private keys to improve clarity. - Enhanced error handling in the KMS service to provide more informative messages for missing keys and key material. - Refactored frontend components to utilize the new FileSaver library for JSON export functionality.
- Added a check to prevent exporting more than 100 keys at once, displaying an error notification if the limit is exceeded. - Updated the logic for selecting keys to ensure that the selected key IDs do not exceed the 100-key limit during selection.
- Wrapped the export button in a span for better styling control. - Enhanced tooltip content to provide clearer feedback based on user permissions. - Removed unnecessary state reset on search input change. - Simplified page change handling by directly setting the page state without resetting selected keys.
Collaborator
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 524aaa02c8
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
- Updated the KMS service to handle unique key IDs for bulk retrieval, improving error handling for missing keys. - Added a new API endpoint for bulk exporting private keys and corresponding documentation. - Refactored the CmekTable component to utilize the new InfoIcon for tooltips, enhancing user experience.
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.
Context
Adds bulk private key export for project KMS keys:
POST /api/v1/kms/keys/bulk-export-private-keys(up to 100 UUIDs, same auth as other KMS routes). Server validates keys (same project, customer-managed, not disabled), checks Export private key once, returns material (+ publicKey for asymmetric keys), and logsCMEK_BULK_EXPORT_PRIVATE_KEYS. UI: row/page selection (max 100), Export downloads JSON; KMS table moved to v3 Unstable components.Screenshots
Steps to verify
keyIds.Type
Checklist
type(scope): short description(scope is optional, e.g.,fix: prevent crash on syncorfix(api): handle null response).