Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
1 Skipped Deployment
|
|
Caution Review failedThe pull request is closed. 📝 WalkthroughWalkthroughThis change introduces a comprehensive migration guide for the Unkey API, detailing the transition from v1 to v2 across multiple areas including keys, APIs, identities, permissions, rate limiting, and error handling. It restructures documentation navigation to include these guides, updates warning notices, and makes minor OpenAPI schema reference adjustments and benchmarking script improvements. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Docs
participant APIv1
participant APIv2
User->>Docs: Access Migration Guide
Docs-->>User: Show v1 vs v2 endpoint changes, examples, migration steps
User->>APIv1: (Legacy) Make v1 request
APIv1-->>User: v1 response format
User->>APIv2: (Migrated) Make v2 request (per migration guide)
APIv2-->>User: v2 response format ({meta, data} envelope)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (4)
✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Thank you for following the naming conventions for pull request titles! 🙏 |
|
There was a problem hiding this comment.
Actionable comments posted: 13
♻️ Duplicate comments (1)
go/apps/api/openapi/spec/paths/v2/permissions/getRole/V2PermissionsGetRoleResponseData.yaml (1)
4-4: Same case-sensitivity concern forrole.yamlreferenceSee previous comment – verify that the lowercase file is present to avoid broken $ref links.
Graphite Automations"Notify author when CI fails" took an action on this PR • (07/29/25)1 teammate was notified to this PR based on Andreas Thomas's automation. |
perkinsjr
left a comment
There was a problem hiding this comment.
See the notes.
One more thing we should probably post a note that V1 is deprecrated here also just in case you land there.
api-reference/v1/overview
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (3)
apps/docs/api-reference/v1/migration/index.mdx (1)
21-25: Caret version specifier breakspip install
Same issue was raised previously and is still present.
pip install unkey-py@^2.0.0will fail under PEP 440 semantics.- pip install unkey-py@^2.0.0 +pip install "unkey-py>=2.0.0,<3.0.0" # or: pip install -U unkey-pyapps/docs/api-reference/v1/migration/ratelimiting.mdx (2)
12-17:autoApplyvsasync– examples still use legacy fieldBullet point states the parameter was renamed to
autoApply, yet subsequent request/response examples continue to show"async". Update all JSON and code samples accordingly to prevent users from adopting the deprecated field.
114-146: Replace all"async"occurrences with"autoApply"in override examplesAt Lines 121, 143, 171 etc. the old field is still present.
- "async": false + "autoApply": falseApply the same replacement across request and response snippets in this file.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (3)
apps/docs/api-reference/v1/migration/index.mdx(1 hunks)apps/docs/api-reference/v1/migration/ratelimiting.mdx(1 hunks)apps/docs/api-reference/v1/overview.mdx(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
apps/docs/api-reference/v1/overview.mdx (4)
Learnt from: Flo4604
PR: #2955
File: go/apps/api/routes/v2_identities_create_identity/handler.go:162-202
Timestamp: 2025-03-19T09:25:59.751Z
Learning: In the Unkey codebase, input validation for API endpoints is primarily handled through OpenAPI schema validation, which occurs before requests reach the handler code. For example, in the identities.createIdentity endpoint, minimum values for ratelimit duration and limit are defined in the OpenAPI schema rather than duplicating these checks in the handler.
Learnt from: chronark
PR: #3560
File: go/apps/api/routes/v2_keys_create_key/handler.go:353-466
Timestamp: 2025-07-15T14:25:05.608Z
Learning: In the Unkey codebase, input validation for API endpoints is handled at the OpenAPI schema layer, which validates request fields like permission slugs (pattern: "^[a-zA-Z0-9_]+$", length: 1-100 characters) before requests reach the handler code. This validation occurs during the zen.BindBody call in handlers.
Learnt from: ogzhanolguncu
PR: #3321
File: apps/dashboard/lib/trpc/routers/authorization/roles/keys/schema-with-helpers.ts:5-8
Timestamp: 2025-06-18T12:28:10.449Z
Learning: In the unkey dashboard application, API validation for pagination limits is controlled at the UI level rather than requiring additional server-side validation, as the APIs are internal and protected by UI logic.
Learnt from: Flo4604
PR: #3421
File: go/apps/api/openapi/openapi.yaml:196-200
Timestamp: 2025-07-03T05:58:10.699Z
Learning: In the Unkey codebase, OpenAPI 3.1 is used, which allows sibling keys (such as description) alongside $ref in schema objects. Do not flag this as an error in future reviews.
apps/docs/api-reference/v1/migration/index.mdx (2)
Learnt from: chronark
PR: #2693
File: apps/api/src/routes/v1_keys_updateKey.ts:350-368
Timestamp: 2024-11-29T15:15:47.308Z
Learning: In apps/api/src/routes/v1_keys_updateKey.ts, the code intentionally handles externalId and ownerId separately for clarity. The ownerId field will be removed in the future, simplifying the code.
Learnt from: Flo4604
PR: #3421
File: go/apps/api/openapi/openapi.yaml:196-200
Timestamp: 2025-07-03T05:58:10.699Z
Learning: In the Unkey codebase, OpenAPI 3.1 is used, which allows sibling keys (such as description) alongside $ref in schema objects. Do not flag this as an error in future reviews.
apps/docs/api-reference/v1/migration/ratelimiting.mdx (6)
Learnt from: chronark
PR: #2544
File: apps/api/src/pkg/env.ts:4-6
Timestamp: 2024-10-23T12:05:31.121Z
Learning: The cloudflareRatelimiter type definition in apps/api/src/pkg/env.ts should not have its interface changed; it should keep the limit method returning Promise<{ success: boolean }> without additional error properties.
Learnt from: ogzhanolguncu
PR: #2707
File: apps/dashboard/lib/trpc/routers/ratelimit/createOverride.ts:63-63
Timestamp: 2024-12-05T13:27:55.555Z
Learning: In apps/dashboard/lib/trpc/routers/ratelimit/createOverride.ts, when determining the maximum number of rate limit overrides (max), the intentional use of const max = hasWorkspaceAccess("ratelimitOverrides", namespace.workspace) || 5; allows max to fall back to 5 when hasWorkspaceAccess returns 0 or false. This fallback behavior is expected and intended in the codebase.
Learnt from: MichaelUnkey
PR: #3173
File: apps/docs/security/delete-protection.mdx:21-24
Timestamp: 2025-04-22T17:34:04.438Z
Learning: In the Unkey dashboard UI for enabling delete protection, the button/link to initiate the process is labeled "Enable Delete Protection" while the confirmation button is labeled "Enable API Delete Protection". The documentation should maintain these different labels to match the actual UI.
Learnt from: MichaelUnkey
PR: #3173
File: apps/docs/security/delete-protection.mdx:32-36
Timestamp: 2025-04-22T17:33:28.162Z
Learning: In the Unkey dashboard UI for delete protection, the button/link to initiate the process is labeled "Disable Delete Protection" while the confirmation button is labeled "Disable API Delete Protection". The documentation should maintain these different labels to match the actual UI.
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-21T18:05:58.236Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,env,conf,html,css,scss,xml,c,h,cpp,java,rb,rs,php,pl,sql} : Use AIDEV-NOTE:, AIDEV-TODO:, AIDEV-BUSINESS_RULE:, or AIDEV-QUESTION: (all-caps prefix) as anchor comments aimed at AI and developers.
Learnt from: ogzhanolguncu
PR: #3321
File: apps/dashboard/lib/trpc/routers/authorization/roles/keys/schema-with-helpers.ts:5-8
Timestamp: 2025-06-18T12:28:10.449Z
Learning: In the unkey dashboard application, API validation for pagination limits is controlled at the UI level rather than requiring additional server-side validation, as the APIs are internal and protected by UI logic.
🪛 LanguageTool
apps/docs/api-reference/v1/overview.mdx
[grammar] ~6-~6: Use correct spacing
Context: ...January 2026. Please migrate to the v2 API. The Unkey API uses HTTP RPC-style method...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
apps/docs/api-reference/v1/migration/index.mdx
[grammar] ~6-~6: Use correct spacing
Context: ...structures that require updates to your integration. The v2 API is available at **api.unkey.c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~8-~8: Use correct spacing
Context: ...ill be shut down at the end of the year 2025. ## Quick Start The fastest way to migrate ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...end of the year 2025. ## Quick Start The fastest way to migrate is to update ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...astest way to migrate is to update your SDK: bash npm install @unkey/api@latest bash pip install unkey-py@^2.0.0 bash go get github.com/unkeyed/unkey-go@v2 The v2 SDK automatically points to the n...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~33-~33: Use correct spacing
Context: ...gh all request/response changes via its types. ## Why Migrate to v2? ### Proven Performan...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~35-~35: Use correct spacing
Context: ...anges via its types. ## Why Migrate to v2? ### Proven Performance Improvements Our v2 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: Use correct spacing
Context: ... Migrate to v2? ### Proven Performance Improvements Our v2 changes produce measurable latenc...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~39-~39: Use correct spacing
Context: ...surable latency improvements across all regions:
### Key Changes of v2 - New Domain: API...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~45-~45: Use correct spacing
Context: ...op.png" /> ### Key Changes of v2 - New Domain: API available at `api.unke...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~50-~50: Use correct spacing
Context: ... consistent error handling and response formats ## What You Need to Change The main change...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~52-~52: Use correct spacing
Context: ...d response formats ## What You Need to Change The main changes you'll need to make whe...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~54-~54: Use correct spacing
Context: ...e main changes you'll need to make when migrating: - Update your base URL from `api.unkey.d...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ... SDKs do this automatically starting at v2.0.0) - Change response parsing from direct re...
(QB_NEW_EN_OTHER)
[grammar] ~58-~58: There might be a mistake here.
Context: ...th hierarchical error codes and request IDs ## Response Format Changes All v2 response...
(QB_NEW_EN_OTHER)
[grammar] ~60-~60: Use correct spacing
Context: ...des and request IDs ## Response Format Changes All v2 responses now use a standardized ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~62-~62: Use correct spacing
Context: ... envelope format with meta and data fields: #### v1 Response Format ```json { "valid": ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~64-~64: Use correct spacing
Context: ...aanddata` fields: #### v1 Response Format json { "valid": true, "keyId": "key_123", "name": "Production API Key" } #### v2 Response Format ```json { "meta": {...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~73-~73: Use correct spacing
Context: ...uction API Key" } #### v2 Response Formatjson { "meta": { "requestId": "req_abc123" }, "data": { "valid": true, "keyId": "key_123", "name": "Production API Key" } } ``` --- ## Detailed Migration by Category Choose t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~90-~90: Use correct spacing
Context: ...} } ``` --- ## Detailed Migration by Category Choose the endpoint category you need to...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~92-~92: Use correct spacing
Context: ...hoose the endpoint category you need to migrate: Key creation, verification, updates, permissions, and roles API namespace creation, retrieval, and key listing Identity management and shared rate limits Standalone permission and role management Rate limiting and override management Error response format changes and codes ### Getting Help - Documentation: https...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~116-~116: Use correct spacing
Context: ...odes ### Getting Help - Documentation: https://unkey.com/docs/...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
apps/docs/api-reference/v1/migration/ratelimiting.mdx
[grammar] ~6-~6: Use hyphens correctly
Context: ...s from v1 to v2" --- This guide covers rate limiting functionality including namespa...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~6-~6: Use a comma after introductory words or phrases
Context: ...2" --- This guide covers rate limiting functionality including namespace creation, override ...
(QB_NEW_EN_OTHER_ERROR_IDS_19)
[grammar] ~6-~6: Use hyphens correctly
Context: ...pace creation, override management, and rate limit checking. ## Overview Rate limit...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~6-~6: Use correct spacing
Context: ...on, override management, and rate limit checking. ## Overview Rate limiting endpoints manage...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: Use hyphens correctly
Context: ... and rate limit checking. ## Overview Rate limiting endpoints manage request limits...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~10-~10: Use correct spacing
Context: ...ace-based rate limiting across your API infrastructure. ### Key Changes in v2: - Response format...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~16-~16: Use correct spacing
Context: ...mproved autoApply parameter (formerly async) ### Migration Impact: - Existing in v1: ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~21-~21: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...lities - Maintained in v2: All core rate limiting functionality with backward-compatible ...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~21-~21: Use correct spacing
Context: ...nality with backward-compatible request formats --- ## Rate Limit Checking ### POST /v1/rateli...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: Use correct spacing
Context: ...ble request formats --- ## Rate Limit Checking ### POST /v1/ratelimits.limit → POST /v2/rat...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ...g ### POST /v1/ratelimits.limit → POST /v2/ratelimits.limit Key Changes: - Response format: Direct...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~32-~32: Use correct spacing
Context: ...h additional metadata - Better override handling json title="Rate Limit Request" icon="bolt" { "namespace": "email_sending", "identifier": "user_123", "limit": 100, "duration": 3600000, "cost": 1 } ```json title="Rate Limit Response Diff" icon="database" expandable // v1 Response (direct response) { "success": true, // [!code --] "limit": 100, // [!code --] "remaining": 99, // [!code --] "reset": 1672531200000 // [!code --] } // v2 Response { "meta": { // [!code +...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~69-~69: Use correct spacing
Context: ...ost": 1 // [!code ++] } // [!code ++] } </Tab> <Tab title="cURL Examples">bash title="v1 cURL" icon="terminal" curl -X POST https://api.unkey.dev/v1/ratelimits.limit \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "namespace": "email_sending", "identifier": "user_123", "limit": 100, "duration": 3600000, "cost": 1 }' bash title="v2 cURL" icon="terminal" curl -X POST https://api.unkey.com/v2/ratelimits.limit \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "namespace": "email_sending", "identifier": "user_123", "limit": 100, "duration": 3600000, "cost": 1 }' ``` --- ## Rate Limit Overrides ### POST /v1/ratel...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~104-~104: Use correct spacing
Context: ... ``` --- ## Rate Limit Overrides ### POST /v1/ratelimits.setOverride → POST /...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~106-~106: Use correct spacing
Context: ... POST /v1/ratelimits.setOverride → POST /v2/ratelimits.setOverride Key Changes: - Response format: Direct...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~111-~111: Use correct spacing
Context: ...g options - Better validation and error handling json title="Set Override Request" icon="settings" expandable { "namespace": "api_requests", "identifier": "premium_user_456", "limit": 10000, "duration": 3600000, "async": false } ```json title="Set Override Response Diff" icon="check-circle" expandable // v1 Response (direct response) { "overrideId": "over_123" // [!code --] } // v2 Response { "meta": { // [!code +...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~145-~145: Use correct spacing
Context: ...30:00Z" // [!code ++] } // [!code ++] } </Tab> <Tab title="cURL Examples">bash title="v1 cURL" icon="terminal" curl -X POST https://api.unkey.dev/v1/ratelimits.setOverride \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "identifier": "premium_user_456", "limit": 10000, "duration": 3600000 }' bash title="v2 cURL" icon="terminal" curl -X POST https://api.unkey.com/v2/ratelimits.setOverride \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "identifier": "premium_user_456", "limit": 10000, "duration": 3600000, "async": false }' ``` --- ### GET /v1/ratelimits.getOverride → POST /v...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~179-~179: Use correct spacing
Context: ...# GET /v1/ratelimits.getOverride → POST /v2/ratelimits.getOverride Key Changes: - HTTP method: GET → POST...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~184-~184: Use correct spacing
Context: ...ormat: Direct response → {meta, data} envelope json title="Get Override Request" icon="search" { "namespace": "api_requests", "identifier": "premium_user_456" } json title="Get Override Response Diff" icon="database" expandable // v1 Response (direct response) { "id": "over_123", // [!code --] "identifier": "premium_user_456", // [!code --] "limit": 10000, // [!code --] "duration": 3600000, // [!code --] "async": false // [!code --] } // v2 Response { "meta": { // [!code ++] "requestId": "req_getoverride789" // [!code ++] }, // [!code ++] "data": { // [!code ++] "overrideId": "override_abc123", // [!code ++] "namespace": "api_requests", // [!code ++] "identifier": "premium_user_456", // [!code ++] "limit": 10000, // [!code ++] "duration": 3600000, // [!code ++] "async": false, // [!code ++] "createdAt": "2024-01-15T10:30:00Z" // [!code ++] } // [!code ++] } bash title="v1 cURL" icon="terminal" curl -X GET "https://api.unkey.dev/v1/ratelimits.getOverride?identifier=premium_user_456&namespaceName=api_requests" \ -H "Authorization: Bearer <your-root-key>" bash title="v2 cURL" icon="terminal" curl -X POST https://api.unkey.com/v2/ratelimits.getOverride \ -H "Authorization: Bearer <your-root-key>" \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "identifier": "premium_user_456" }' --- ### GET /v1/ratelimits.listOverrides → POST ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~242-~242: Use correct spacing
Context: ...GET /v1/ratelimits.listOverrides → POST /v2/ratelimits.listOverrides Purpose: Get paginated list of all ove...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~244-~244: Use correct spacing
Context: ...et paginated list of all overrides in a namespace. Key Changes: - HTTP method: GET → POST...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~249-~249: Use correct spacing
Context: ...ormat: Direct response → {meta, data} envelope json title="List Overrides Request" icon="list" { "namespace": "api_requests", "limit": 100, "cursor": "optional_cursor" } ```json title="List Overrides Response Diff" icon="database" expandable // v1 Response (direct response) { "overrides": [ // [!code --] { // [!code --] "id": "override_abc123", // [!code --] "identifier": "premium_user_456", // [!code --] "limit": 10000, // [!code --] "duration": 3600000, // [!code --] "async": false // [!code --] } // [!code --] ], // [!code --] "cursor": "next_page_cursor_here", // [!code --] "total": 42 // [!code --] } // v2 Response (envelope format) { "me...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~296-~296: Use correct spacing
Context: ...r_here" // [!code ++] } // [!code ++] } </Tab> <Tab title="cURL Examples" icon="terminal">bash title="v1 cURL" icon="terminal" curl -X GET "https://api.unkey.dev/v1/ratelimits.listOverrides?namespaceName=api_requests&limit=100" \ -H "Authorization: Bearer " bash title="v2 cURL" icon="terminal" curl -X POST https://api.unkey.com/v2/ratelimits.listOverrides \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "limit": 100, "cursor": "optional_cursor" }' ``` --- ### POST /v1/ratelimits.deleteOverride → POS...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~321-~321: Use correct spacing
Context: ...ST /v1/ratelimits.deleteOverride → POST /v2/ratelimits.deleteOverride Key Changes: - Response format: Direct...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~324-~324: Use correct spacing
Context: ...ormat: Direct response → {meta, data} envelope json title="Delete Override Request" icon="trash" { "namespace": "api_requests", "identifier": "premium_user_456" } json title="Delete Override Response Diff" icon="check-circle" // v1 Response (direct empty response) {} // [!code --] // v2 Response { "meta": { // [!code ++] "requestId": "req_deleteoverride999" // [!code ++] }, // [!code ++] "data": {} // [!code ++] } bash title="v1 cURL" icon="terminal" curl -X POST https://api.unkey.dev/v1/ratelimits.deleteOverride \ -H "Authorization: Bearer <your-root-key>" \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "identifier": "premium_user_456" }' bash title="v2 cURL" icon="terminal" curl -X POST https://api.unkey.com/v2/ratelimits.deleteOverride \ -H "Authorization: Bearer <your-root-key>" \ -H "Content-Type: application/json" \ -d '{ "namespace": "api_requests", "identifier": "premium_user_456" }' --- ## Key-Level Rate Limiting Changes ### v1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~373-~373: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...' ``` --- ## Key-Level Rate Limiting Changes ### v1 Single Rate Limit → v2 ...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~373-~373: Use correct spacing
Context: .../Tabs> --- ## Key-Level Rate Limiting Changes ### v1 Single Rate Limit → v2 Multiple Named...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~375-~375: Use correct spacing
Context: ...gle Rate Limit → v2 Multiple Named Rate Limits ```json title="Key Rate Limit Structure Migration" icon="key" expandable // v1 Key Creation { "apiId": "api_123", "ratelimit": { // [!code --] "limit": 1000, // [!code --] "duration": 3600000, // [!code --] "async": true // [!code --] } // [!code --] } // v2 Key Creation { "apiId": "api_123...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~406-~406: Use correct spacing
Context: ...] } // [!code ++] ] // [!code ++] } </Tab> <Tab title="Key Verification Changes">json title="Rate Limit Verification Migration" icon="shield-check" expandable // v1 Key Verification Request { "key": "sk_123" } // v2 Key Verification Request with Named Rate Limits { "key": "sk_123", "ratelimits": [ { "name": "api_requests", "cost": 1 }, { "name": "heavy_operations", "cost": 5 } ] } </Tab> <Tab title="Response Changes">json title="Rate Limit Response Migration" icon="database" expandable // v1 Response { "result": { "valid": true, "ratelimit": { // [!code --] "limit": 1000, // [!code --] "remaining": 999, // [!code --] "reset": 1672531200000 // [!code --] } // [!code --] } } // v2 Response { "data": { "valid"...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~530-~530: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...e ++] ``` ### Key-Level Rate Limiting Migration <Tab title="Rate Limi...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~530-~530: Use correct spacing
Context: ...b> ### Key-Level Rate Limiting Migration ```json title="v1 vs v2: Key Rate Limit Structure" // v1: Single Rate Limit { "apiId": "api_123", "ratelimit": { // [!code --] "limit": 1000, // [!code --] "duration": 3600000, // [!code --] "async": true // [!code --] } // [!code --] } // v2: Multiple Named Rate Limits { "a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~548-~548: Using many exclamation marks might seem excessive (in this case: 91 exclamation marks for a text that’s 8535 characters long)
Context: ...piId": "api_123", "ratelimits": [ // [!code ++] { // [!code ++] "name": "general_requests", // [!code ++] "limit": 1000, // [!code ++] "duration": 3600000, // [!code ++] "autoApply": true // [!code ++] }, // [!code ++] { // [!code ++] "name": "expensive_ops", // [!code ++] "limit": 10, // [!code ++] "duration": 60000, // [!code ++] "autoApply": false // [!code ++] } // [!code ++] ] // [!code ++] } ``` ### Overr...
(EN_EXCESSIVE_EXCLAMATION)
[grammar] ~561-~561: Use correct spacing
Context: ...] } // [!code ++] ] // [!code ++] } </Tab> </Tabs> ### Override Management Patterns <Tabs> <Tab title="Basic Override Operations" icon="settings">typescript title="Override CRUD Operations" // Set override (same in v1 & v2) const override = await fetch('/v2/ratelimits.setOverride', { method: 'POST', headers: { 'Authorization': 'Bearer ', 'Content-Type': 'application/json' }, body: JSON.stringify({ namespace: 'api_requests', identifier: 'premium_user', limit: 10000, duration: 3600000 }) }); // Get override (same in v1 & v2) const existing = await fetch('/v2/ratelimits.getOverride', { method: 'POST', headers: { 'Authorization': 'Bearer ', 'Content-Type': 'application/json' }, body: JSON.stringify({ namespace: 'api_requests', identifier: 'premium_user' }) }); const result = await existing.json(); const limit = result.data.limit; // v2: access via data </Tab> <Tab title="v2 Enhanced Override Management" icon="list-check">typescript title="v2: List and Batch Management" // v2: List all overrides (new capability) const overrides = await fetch('/v2/ratelimits.listOverrides', { method: 'POST', headers: { 'Authorization': 'Bearer ', 'Content-Type': 'application/json' }, body: JSON.stringify({ namespace: 'api_requests', limit: 100 }) }); const result = await overrides.json(); c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~620-~620: Use correct spacing
Context: ... overrides.json(); const overrideList = result.data.overrides; // Process overrides in batches for (con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~639-~639: Use correct spacing
Context: ... override.duration }) }); } } </Tab> </Tabs> --- ## Advanced Features in v2 ### Multiple Rate Limits per Key json title="Complex rate limiting setup" icon="bolt" expandable { "apiId": "api_123", "ratelimits": [ { "name": "requests_per_minute", "limit": 60, "duration": 60000, "autoApply": true }, { "name": "requests_per_hour", "limit": 1000, "duration": 3600000, "autoApply": true }, { "name": "expensive_operations", "limit": 5, "duration": 300000, "autoApply": false } ] } ### Named Rate Limit Targeting json titl...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~677-~677: Use correct spacing
Context: ...e } ] } ### Named Rate Limit Targeting json title="Selective rate limit application" icon="target" { "key": "sk_123", "ratelimits": [ { "name": "expensive_operations", "cost": 1 } ] } ``` Only applies cost to the "expensive_oper...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~691-~691: Use correct spacing
Context: ..._operations" rate limit, leaving others unchanged. ### Batch Override Management ```typescript...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~693-~693: Use correct spacing
Context: ...g others unchanged. ### Batch Override Management typescript title="Managing multiple overrides" icon="list-check" // List all overrides in namespace const overrides = await unkey.ratelimits.listOverrides({ namespace: "api_requests" }); // Process overrides in batches for (const override of overrides.data?.overrides || []) { if (override.limit < 1000) { // Update low-limit overrides await unkey.ratelimits.setOverride({ namespace: override.namespace, identifier: override.identifier, limit: 1000, duration: override.duration }); } } --- ## Migration Checklist ### Response Format...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~717-~717: Use correct spacing
Context: ...on }); } } ``` --- ## Migration Checklist ### Response Format Updates - [ ] Change dir...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~720-~720: Use hyphens correctly
Context: ...sponse access to response.data in all rate limiting calls - [ ] Extract and log `me...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~720-~720: There might be a mistake here.
Context: ...to response.data in all rate limiting calls - [ ] Extract and log meta.requestId fro...
(QB_NEW_EN_OTHER)
[grammar] ~721-~721: There might be a mistake here.
Context: ...log meta.requestId from responses for debugging - [ ] Update error handling for new envelo...
(QB_NEW_EN_OTHER)
[grammar] ~722-~722: There might be a mistake here.
Context: ...rror handling for new envelope response structure - [ ] Handle enhanced metadata in override...
(QB_NEW_EN_OTHER)
[grammar] ~723-~723: There might be a mistake here.
Context: ... ] Handle enhanced metadata in override responses ### Key-Level Rate Limiting Updates - [ ] Co...
(QB_NEW_EN_OTHER)
[uncategorized] ~725-~725: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ta in override responses ### Key-Level Rate Limiting Updates - [ ] Convert ratelimit objec...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~726-~726: There might be a mistake here.
Context: ...itobject toratelimitsarray in key creation - [ ] Addname` field to all rate limit c...
(QB_NEW_EN_OTHER)
[grammar] ~727-~727: There might be a mistake here.
Context: ... [ ] Add name field to all rate limit configurations - [ ] Change async parameter to `autoApp...
(QB_NEW_EN_OTHER)
[grammar] ~729-~729: There might be a mistake here.
Context: ...ate limits per key (different operation types) - [ ] Update key verification to handle mu...
(QB_NEW_EN_OTHER)
[grammar] ~730-~730: There might be a mistake here.
Context: ...ey verification to handle multiple rate limits ### Override Management Updates - [ ] Update...
(QB_NEW_EN_OTHER)
[grammar] ~736-~736: Use correct spacing
Context: ...sor-based pagination for large override lists ### Enhanced Features - [ ] Implement named ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~739-~739: There might be a mistake here.
Context: ...ement named rate limit targeting in key verification - [ ] Use multiple rate limits for differe...
(QB_NEW_EN_OTHER)
[grammar] ~740-~740: There might be a mistake here.
Context: ...ple rate limits for different operation types - [ ] Set up batch override management pro...
(QB_NEW_EN_OTHER)
[grammar] ~741-~741: There might be a mistake here.
Context: ...tch override management processes using listOverrides - [ ] Plan for granular rate limit control...
(QB_NEW_EN_OTHER)
[grammar] ~742-~742: There might be a mistake here.
Context: ...lan for granular rate limit control and monitoring - [ ] Use request IDs for debugging and su...
(QB_NEW_EN_OTHER)
[grammar] ~743-~743: There might be a mistake here.
Context: ...- [ ] Use request IDs for debugging and support ### Advanced Rate Limiting Patterns - [ ] Im...
(QB_NEW_EN_OTHER)
[uncategorized] ~745-~745: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...for debugging and support ### Advanced Rate Limiting Patterns - [ ] Implement selective rate...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~746-~746: There might be a mistake here.
Context: ...ent selective rate limit application by name - [ ] Set up different costs for different...
(QB_NEW_EN_OTHER)
[grammar] ~747-~747: There might be a mistake here.
Context: ...t up different costs for different rate limits - [ ] Use identity-level rate limiting com...
(QB_NEW_EN_OTHER)
[grammar] ~748-~748: There might be a mistake here.
Context: ...l rate limiting combined with key-level limits - [ ] Build override management dashboards...
(QB_NEW_EN_OTHER)
[grammar] ~749-~749: There might be a mistake here.
Context: ...ide management dashboards with enhanced data ### Testing - [ ] Test rate limiting with ne...
(QB_NEW_EN_OTHER)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
- GitHub Check: Test API / API Test Local
- GitHub Check: Build / Build
- GitHub Check: Test Agent Local / test_agent_local
- GitHub Check: Test Go API Local / Test
- GitHub Check: Test Packages / Test
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (1)
apps/docs/api-reference/v1/overview.mdx (1)
6-7: Deprecation date conflicts with migration guide – verify before publishingHere you announce removal in January 2026, while
migration/index.mdx(Line 8) states shutdown end of 2025. Please confirm the correct EOL and keep it consistent across docs to avoid confusing users.
|
addressed all |
* Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * almost * re ordered badge list collapse * undo rabbit * [autofix.ci] apply automated fixes * fix scroll * changes before merge * chore: deprecate v1 endpoints (#3680) * fix: openapi * chore: deprecate v1 endpoints * fix: vault credentials and chproxy config (#3681) * fix: openapi * fix: vault credentials and chproxy config * fix: rename flag accessor too * fix: linter issues * fix: some more v2 api changes (#3677) * remove namespaceID * actually use limit and cursor * filter out delted overrides * fix error messages list endpoints * fix more error messages * ensure identity create handles like permission/role create * fix regex for roles * fix regex for roles * fix list keys cursor * fix: uppercase common files (#3683) * name files uppercase * name files uppercase * [autofix.ci] apply automated fixes * name files uppercase * name files uppercase --------- Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: conflicting casing (#3689) * fix the openapi spec again (#3692) * dont trace chproxy endpoints (#3691) * fix: log verifications to the owning workspace (#3693) * functioning again * style change * more tweaks * fix: validate s3 config (#3694) * Fix all the fucking things * remove close button * fmt * fix: speakeasy ignore directive is ignored if it's a string (#3699) * fix: upsert permissions with slug or name colission (#3696) * fix: upsert permissions with slug or name colission * chore: also remove index * fix permission test and remove unnnecessary test --------- Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com> * docs: migration (#3678) * fix: openapi * docs: migration from v1 to v2 * fix: remove binaries * [autofix.ci] apply automated fixes * docs: add james' feedback --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: api list keys zod errors (#3702) * fix api zod errors * [autofix.ci] apply automated fixes * make array handling uniform * make array handling uniform * fix rabbi comment * fix: permission array for roles --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * ci: don't build for windows and freebsd (#3700) * docs: errors (#3703) * chore: move sdks to unkeyed/sdks (#3701) * fix: omitting array vs null (#3704) * fix omitting array vs null * [autofix.ci] apply automated fixes * fix flakey test * fix flakey test --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: panics not being catched (#3706) * fix panics not being catched * feat: add counter to track panics Signed-off-by: Ian Meyer <k@imeyer.io> --------- Signed-off-by: Ian Meyer <k@imeyer.io> Co-authored-by: Ian Meyer <k@imeyer.io> * docs: use `CodeGroup` in hono/nextjs TS libraries (#3708) * Update hono.mdx * Update nextjs.mdx * ci: remove outdated steps and flows (#3709) * docs: update sdks (#3712) * docs: update sdks * Update nextjs.mdx * [autofix.ci] apply automated fixes * fix: rabbit feedback * Update nextjs.mdx * fix: root key is required --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * dialog and confirm added * feat(deployment beta): projects UI for Unkey Deploy (#3662) * projects and branches * wip * wip * spec differ wip * fix some docker, add some trpc, integrate diff viewer * change version to deployments, add feature flag, update go schema * update versions page * fix null condition * delete old router, fix null assertion * fmt * fmt * fmt again * apply auth and feature flagging access to projects, remove versions * yolo * stable yolo * stable yolo * style: fmt * fix: hardcode time, so it doesn't fail on the first of a month * [autofix.ci] apply automated fixes --------- Co-authored-by: chronark <dev@chronark.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * chore: add missingd delete endpoint for v2 (#3711) * only log key at the end (#3716) * fix: allow wildcard and colon in permissions query (#3717) * remove regex for permissions * allow for asterix and colon in permissions * fix: update identity by identity key instead of externalId and fix wrong body for permission and role (#3713) * docs and remove externalId from keyResponse * fix updateIdentity to take in an identity parameter instead of an externalId * fix get role/permission * Update go/apps/api/openapi/spec/common/Permission.yaml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update openapi-generated.yaml * fix comment --------- Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * chore: openapi references (#3723) * feat: add paginated tRPC endpoint for projects (#3697) * feat: add new endpoint for deploy projects * chore: replace file path * [autofix.ci] apply automated fixes * feat: add missing endpoint * fix: trpc path * fix: add feature flag * chore: remove optin --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: region not showing and wrong rl id (#3722) * fix: region not showing and wrong rl id * pass region down * perf: bad get key performance (#3724) * perf: make getKey 2 seperate queries so mysql chooses correct idx * fix query * fix query name * docs: verify identities endpoints (#3727) * chore: docs (#3728) * chore: fixup migration guide * adjust more * adjust more * adjust more * rabbit comments * Update index.mdx * working updates * re factor for clarity * only update if diff than existing * [autofix.ci] apply automated fixes * re name create-root-key to root-key folder --------- Signed-off-by: Ian Meyer <k@imeyer.io> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com> Co-authored-by: Oğuzhan Olguncu <21091016+ogzhanolguncu@users.noreply.github.com> Co-authored-by: James Perkins <jamesperkins@hey.com> Co-authored-by: Ian Meyer <k@imeyer.io> Co-authored-by: JA Castro <51177379+ubinatus@users.noreply.github.com> Co-authored-by: Meg Stepp <mcstepp@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* chore: new root key dialog (#3637) * Dialog created * small changes * feat: ui show permission side bar when select permission button is (#3654) * Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * feat: UI when a permission is selected it should show in the modal (#3663) * Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * almost * re ordered badge list collapse * undo rabbit * [autofix.ci] apply automated fixes * fix scroll * button size and margin --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * feat: UI when a user searches for a permission it should show (#3695) * Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * almost * re ordered badge list collapse * undo rabbit * [autofix.ci] apply automated fixes * fix scroll * changes before merge * functioning again * style change * more tweaks * Fix all the fucking things * remove close button * fmt --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: James Perkins <jamesperkins@hey.com> * feat: rootkey create with success dialog and confirm close (#3714) * Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * almost * re ordered badge list collapse * undo rabbit * [autofix.ci] apply automated fixes * fix scroll * changes before merge * functioning again * style change * more tweaks * Fix all the fucking things * remove close button * fmt * dialog and confirm added --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: James Perkins <jamesperkins@hey.com> * feat: a user selects edit root key and an edit root key modal (#3731) * Dialog created * small changes * half functional * small spacing changes and chevron * Rabbit Changes * remove useffect * almost * re ordered badge list collapse * undo rabbit * [autofix.ci] apply automated fixes * fix scroll * changes before merge * chore: deprecate v1 endpoints (#3680) * fix: openapi * chore: deprecate v1 endpoints * fix: vault credentials and chproxy config (#3681) * fix: openapi * fix: vault credentials and chproxy config * fix: rename flag accessor too * fix: linter issues * fix: some more v2 api changes (#3677) * remove namespaceID * actually use limit and cursor * filter out delted overrides * fix error messages list endpoints * fix more error messages * ensure identity create handles like permission/role create * fix regex for roles * fix regex for roles * fix list keys cursor * fix: uppercase common files (#3683) * name files uppercase * name files uppercase * [autofix.ci] apply automated fixes * name files uppercase * name files uppercase --------- Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: conflicting casing (#3689) * fix the openapi spec again (#3692) * dont trace chproxy endpoints (#3691) * fix: log verifications to the owning workspace (#3693) * functioning again * style change * more tweaks * fix: validate s3 config (#3694) * Fix all the fucking things * remove close button * fmt * fix: speakeasy ignore directive is ignored if it's a string (#3699) * fix: upsert permissions with slug or name colission (#3696) * fix: upsert permissions with slug or name colission * chore: also remove index * fix permission test and remove unnnecessary test --------- Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com> * docs: migration (#3678) * fix: openapi * docs: migration from v1 to v2 * fix: remove binaries * [autofix.ci] apply automated fixes * docs: add james' feedback --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: api list keys zod errors (#3702) * fix api zod errors * [autofix.ci] apply automated fixes * make array handling uniform * make array handling uniform * fix rabbi comment * fix: permission array for roles --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * ci: don't build for windows and freebsd (#3700) * docs: errors (#3703) * chore: move sdks to unkeyed/sdks (#3701) * fix: omitting array vs null (#3704) * fix omitting array vs null * [autofix.ci] apply automated fixes * fix flakey test * fix flakey test --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: panics not being catched (#3706) * fix panics not being catched * feat: add counter to track panics Signed-off-by: Ian Meyer <k@imeyer.io> --------- Signed-off-by: Ian Meyer <k@imeyer.io> Co-authored-by: Ian Meyer <k@imeyer.io> * docs: use `CodeGroup` in hono/nextjs TS libraries (#3708) * Update hono.mdx * Update nextjs.mdx * ci: remove outdated steps and flows (#3709) * docs: update sdks (#3712) * docs: update sdks * Update nextjs.mdx * [autofix.ci] apply automated fixes * fix: rabbit feedback * Update nextjs.mdx * fix: root key is required --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * dialog and confirm added * feat(deployment beta): projects UI for Unkey Deploy (#3662) * projects and branches * wip * wip * spec differ wip * fix some docker, add some trpc, integrate diff viewer * change version to deployments, add feature flag, update go schema * update versions page * fix null condition * delete old router, fix null assertion * fmt * fmt * fmt again * apply auth and feature flagging access to projects, remove versions * yolo * stable yolo * stable yolo * style: fmt * fix: hardcode time, so it doesn't fail on the first of a month * [autofix.ci] apply automated fixes --------- Co-authored-by: chronark <dev@chronark.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * chore: add missingd delete endpoint for v2 (#3711) * only log key at the end (#3716) * fix: allow wildcard and colon in permissions query (#3717) * remove regex for permissions * allow for asterix and colon in permissions * fix: update identity by identity key instead of externalId and fix wrong body for permission and role (#3713) * docs and remove externalId from keyResponse * fix updateIdentity to take in an identity parameter instead of an externalId * fix get role/permission * Update go/apps/api/openapi/spec/common/Permission.yaml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update openapi-generated.yaml * fix comment --------- Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * chore: openapi references (#3723) * feat: add paginated tRPC endpoint for projects (#3697) * feat: add new endpoint for deploy projects * chore: replace file path * [autofix.ci] apply automated fixes * feat: add missing endpoint * fix: trpc path * fix: add feature flag * chore: remove optin --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> * fix: region not showing and wrong rl id (#3722) * fix: region not showing and wrong rl id * pass region down * perf: bad get key performance (#3724) * perf: make getKey 2 seperate queries so mysql chooses correct idx * fix query * fix query name * docs: verify identities endpoints (#3727) * chore: docs (#3728) * chore: fixup migration guide * adjust more * adjust more * adjust more * rabbit comments * Update index.mdx * working updates * re factor for clarity * only update if diff than existing * [autofix.ci] apply automated fixes * re name create-root-key to root-key folder --------- Signed-off-by: Ian Meyer <k@imeyer.io> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com> Co-authored-by: Oğuzhan Olguncu <21091016+ogzhanolguncu@users.noreply.github.com> Co-authored-by: James Perkins <jamesperkins@hey.com> Co-authored-by: Ian Meyer <k@imeyer.io> Co-authored-by: JA Castro <51177379+ubinatus@users.noreply.github.com> Co-authored-by: Meg Stepp <mcstepp@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fresh * start rabbit changes * rabbits * missing processing * Update apps/dashboard/lib/trpc/routers/index.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/dashboard/app/(app)/settings/root-keys/components/root-key/components/permission-badge-list.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * more rabbit * function name * [autofix.ci] apply automated fixes * minor changes * rabbit checked locally * comment changes * light mode fix * removed old page files * updated success * slack comment changes * cleanup * rabbit * more rabbits * most consts * change clear and details * cleanup * pr suggested changes * few nits --------- Signed-off-by: Ian Meyer <k@imeyer.io> Co-authored-by: CodeReaper <148160799+MichaelUnkey@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Andreas Thomas <dev@chronark.com> Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com> Co-authored-by: Oğuzhan Olguncu <21091016+ogzhanolguncu@users.noreply.github.com> Co-authored-by: Ian Meyer <k@imeyer.io> Co-authored-by: JA Castro <51177379+ubinatus@users.noreply.github.com> Co-authored-by: Meg Stepp <mcstepp@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: MichaelUnkey <michael@unkey.com>
Check the migration docs at
http://localhost:3000/api-reference/v1/migration/Summary by CodeRabbit
New Features
Documentation
Style
Chores