✓ GET /.well-known/jwks.json JWKS 公钥 用例提及:8
✓ POST /v1/signup 注册 用例提及:30
✓ POST /v1/token 登录(password)+刷新(refresh_token) 用例提及:124 · pw 33 / refresh 22
✓ POST /v1/recover 找回密码 用例提及:30
✓ POST /v1/update-password 重置密码(token) 用例提及:12
✓ POST /v1/user/password 改密(已登录) 用例提及:9
✓ POST /v1/logout 登出 用例提及:18
✓ GET /v1/sessions 列会话 用例提及:11
✓ POST /v1/sessions/{id}/revoke 撤销单会话 用例提及:11
✓ GET /v1/user 取用户 用例提及:14
✓ GET /v1/authorize/{provider} OAuth 发起 用例提及:10
✓ GET+POST /v1/callback/{provider} OAuth 回调(GET+POST) 用例提及:12 · POST 11
✓ GET /schema schema 列表 用例提及:15
✓ GET /schema/{table} 单表 schema 用例提及:3
✓ GET /doc OpenAPI 文档 用例提及:4
✓ GET /table/{table} 查询 用例提及:70
✓ POST /table/{table} 插入/upsert 用例提及:26 · upsert 29
✓ PATCH /table/{table} 更新 用例提及:12
✓ DELETE /table/{table} 删除 用例提及:11
✓ 被拒路由 /sql /rpc /ddl /rest/v1 /_proc 非公共 API → 501 用例提及:sql6 rpc4 ddl3 rest/v1 7 _proc4 · 501×19
✓ MethodNotAllowed / DDL schema 变更拒绝 405/501 用例提及:unsupported×15
apikey: tidbre…<client key>
{"error":{"code":"policy_denied","message":"policy denied action \"schema.read\" on request","request_id":"claude.sharedgv6CCdD0Jg-000059","status":403,"version":"tidbrest.error.v1"}}
apikey: tidbre…<client key>
{"data":[{"created_at":"2026-06-29T20:56:53Z","id":128,"owner":"qa","priority":124,"status":"todo","title":"bulk-task-124","updated_at":"2026-06-29T20:56:53Z"},{"created_at":"2026-06-29T20:56:53Z","id":127,"owner":"qa","priority":123,"status":"todo","title":"bulk-task-123","updated_at":"2026-06-29T20:56:53Z"},{"created_at":"2026-06-29T20:56:52Z","id":126,"owner":"qa","priority":122,"status":"todo","title":"bulk-task-122","updated_at":"2026-06-29T20:56:52Z"}],"meta":{"count":3,"limit":3,"offset":0}}
apikey: tidbre…<client key>
{"data":[{"id":3,"status":"done","title":"Review OpenAPI"}],"meta":{"count":1,"limit":25,"offset":0}}
apikey: tidbre…<client key>
{"error":{"code":"table_not_published","message":"table \"private_notes\" is not published","request_id":"claude.sharedgv6CCdD0Jg-000062","status":403,"version":"tidbrest.error.v1"}}
Content-Type: application/json apikey: tidbre…<client key>
{"q":"select 1"}{"error":{"code":"unsupported_operation","message":"raw SQL is not part of the public TiDB Data API","request_id":"claude.sharedgv6CCdD0Jg-000063","status":501,"version":"tidbrest.error.v1"}}
apikey: tidbre…<client key>
{"data":[],"meta":{"count":0,"limit":25,"offset":0}}
Content-Type: application/json apikey: tidbre…<client key>
{"project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","password":"E2e!pass-225721"}{"data":{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImUyZS1qd3Qta2V5IiwidHlwIjoiSldUIiwidXNlIjoic2lnIn0.eyJwcm9qZWN0X2lkIjoicHJqX2UyZSIsImVudmlyb25tZW50X2lkIjoiZW52X2UyZSIsInNlc3Npb25faWQiOiJzZXNfNmNiNTUwM2ZmNTAxNmFlN2M0ZjdiYWUzMGNlZGIwMzYiLCJlbWFpbCI6ImUyZSsyMjU3MjFAZXhhbXBsZS5jb20iLCJyb2xlIjoiYXV0aGVudGljYXRlZCIsInNjb3BlcyI6WyJhdXRoZW50aWNhdGVkIl0sInNjb3BlIjoiYXV0aGVudGljYXRlZCIsImlzcyI6InRpZGJyZXN0Oi8vZTJlL3Byb2pBIiwic3ViIjoidXNyXzg2NzIwZjNiZGIwY2FmNDc2NWEyODU2MzBkMGU3ODNlIiwiYXVkIjpbInRpZGJyZXN0LWUyZSJdLCJleHAiOjE3ODI3NzM4OTMsIm5iZiI6MTc4Mjc3MDI5MywiaWF0IjoxNzgyNzcwMjkzfQ.kghf-rq4Is6gQSJ1vc7NbPzEYuzaYWSxOTOz3_tBghxt0mqAA9Upu0rtin08nlc0VinmipO1zoA3pP6SLn-HYo6HVQCjZqKZCLgT6tZmJuh9smD-AEKuKVtZmYFfiMfjuU6oVsYz6zgd7UdnnujpKwQI5WsyDWfRDUwL_bov6_7_JuCw62QvcNrmywwihhft_sbhFdSoS93RhOVkz9I7HZTe9h1WHEYUlQn920ce5Z0OiUZJ2TPG9GyIZNJc-B6eycfoeNBfQgN4gw7fgItic7VWOq-MA9NK0bihbSWtyBshoK4mTDYiimYANKDNXz__LX_UDCQ3e5KY5QoPHEcycg","refresh_token":"QOxATVQY41mTWcCwZg-tEAiKoi66a-z9GD8GDIR0PGA","token_type":"bearer","expires_in":3600,"expires_at":"2026-06-29T22:58:13.125586Z","user":{"id":"usr_86720f3bdb0caf4765a285630d0e783e","project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","email_verified_at":null,"phone_verified_at":null,"disabled_at":null,"banned_until":null,"last_sign_in_at":null,"last_password_change_at":"2026-06-29T21:58:10.420506Z","created_at":"2026-06-29T21:58:10.420522Z","updated_at":"2026-06-29T21:58:10.420522Z"},"session":{"id":"ses_6cb5503ff5016ae7Content-Type: application/json apikey: tidbre…<client key>
{"grant_type":"password","project_id":"prj_e2e","email":"e2e+225721@example.com","password":"E2e!pass-225721"}{"data":{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImUyZS1qd3Qta2V5IiwidHlwIjoiSldUIiwidXNlIjoic2lnIn0.eyJwcm9qZWN0X2lkIjoicHJqX2UyZSIsImVudmlyb25tZW50X2lkIjoiZW52X2UyZSIsInNlc3Npb25faWQiOiJzZXNfM2JiMGQ0N2UwMGRhYzJjNDc3Y2RhM2RkOTQ3NTE2Y2IiLCJlbWFpbCI6ImUyZSsyMjU3MjFAZXhhbXBsZS5jb20iLCJyb2xlIjoiYXV0aGVudGljYXRlZCIsInNjb3BlcyI6WyJhdXRoZW50aWNhdGVkIl0sInNjb3BlIjoiYXV0aGVudGljYXRlZCIsImlzcyI6InRpZGJyZXN0Oi8vZTJlL3Byb2pBIiwic3ViIjoidXNyXzg2NzIwZjNiZGIwY2FmNDc2NWEyODU2MzBkMGU3ODNlIiwiYXVkIjpbInRpZGJyZXN0LWUyZSJdLCJleHAiOjE3ODI3NzM5MDAsIm5iZiI6MTc4Mjc3MDMwMCwiaWF0IjoxNzgyNzcwMzAwfQ.eAk1DrSLaf3NG_7oGBojupRqYRRMd3VXadsFf6hXvR1ts0q2Af2kA2NumJNuuaDTr0A97EF1cZF6Af2_qDk49rvTG8KAQy-azRZvuyEvAuydIeCIMldgGFx8W-YXIWuOkmhdD8aOjR5MA8fllGKOK73JNFal2n_XPDSOM5pUMgcqpbshYNDKWBLMMr_CreElKceTW5I7H52wHo3vB4O0_iiJIIlEymDHCIVnVgffoOS_WH-YkAUh5-OUKWiOlFcA8g3mmGsh8kye8CPjhZNY92JdsBWHTF2L5Ku5GykBGamVxRyeFySDVr4U9jJ4R14VbvhphnUiYzB3g3pJXeuAIw","refresh_token":"MELMoqQR-wYblM-8FD9Ttvf0yFYqx1uIsNZKjGMEiOI","token_type":"bearer","expires_in":3600,"expires_at":"2026-06-29T22:58:20.055226Z","user":{"id":"usr_86720f3bdb0caf4765a285630d0e783e","project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","email_verified_at":null,"phone_verified_at":null,"disabled_at":null,"banned_until":null,"last_sign_in_at":"2026-06-29T21:58:18.136037Z","last_password_change_at":"2026-06-29T21:58:10.420506Z","created_at":"2026-06-29T21:58:10.420522Z","updated_at":"2026-06-29T21:58:18.136037Z"},"session":{"Authorization: Bearer <jwt…redacted> apikey: tidbre…<client key>
{"data":{"session":{"id":"ses_3bb0d47e00dac2c477cda3dd947516cb","project_id":"prj_e2e","user_id":"usr_86720f3bdb0caf4765a285630d0e783e","last_refresh_at":"2026-06-29T21:58:20.934623Z","revoked_at":null,"expires_at":"2026-06-30T21:58:19.154145Z","created_at":"2026-06-29T21:58:19.154145Z"},"user":{"id":"usr_86720f3bdb0caf4765a285630d0e783e","project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","email_verified_at":null,"phone_verified_at":null,"disabled_at":null,"banned_until":null,"last_sign_in_at":"2026-06-29T21:58:18.136037Z","last_password_change_at":"2026-06-29T21:58:10.420506Z","created_at":"2026-06-29T21:58:10.420522Z","updated_at":"2026-06-29T21:58:18.136037Z"}}}
Content-Type: application/json apikey: tidbre…<client key>
{"grant_type":"refresh_token","project_id":"prj_e2e","refresh_token":"MELMoqQR-wYblM-8FD9Ttvf0yFYqx1uIsNZKjGMEiOI"}{"data":{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImUyZS1qd3Qta2V5IiwidHlwIjoiSldUIiwidXNlIjoic2lnIn0.eyJwcm9qZWN0X2lkIjoicHJqX2UyZSIsImVudmlyb25tZW50X2lkIjoiZW52X2UyZSIsInNlc3Npb25faWQiOiJzZXNfM2JiMGQ0N2UwMGRhYzJjNDc3Y2RhM2RkOTQ3NTE2Y2IiLCJlbWFpbCI6ImUyZSsyMjU3MjFAZXhhbXBsZS5jb20iLCJyb2xlIjoiYXV0aGVudGljYXRlZCIsInNjb3BlcyI6WyJhdXRoZW50aWNhdGVkIl0sInNjb3BlIjoiYXV0aGVudGljYXRlZCIsImlzcyI6InRpZGJyZXN0Oi8vZTJlL3Byb2pBIiwic3ViIjoidXNyXzg2NzIwZjNiZGIwY2FmNDc2NWEyODU2MzBkMGU3ODNlIiwiYXVkIjpbInRpZGJyZXN0LWUyZSJdLCJleHAiOjE3ODI3NzM5MTIsIm5iZiI6MTc4Mjc3MDMxMiwiaWF0IjoxNzgyNzcwMzEyfQ.uQorGjDS_E-FYvkc_a8685hAnMezqXYNYa6ICrBzkk9Tsoz0HH-TUofR4AdD8QQfDKPeood-XKGhRJrXF5P1y9RoYrarvtTEYIDRWQ29A6CCoZWMZKlh_s3sG6SNCdDx0g1DpppRuCHbJbKnDvPtePvQgCL2jJJIc6zu_BDT67dYS4uwGpqOof1RAwsn855HCFY-9cETlvbuU-XZZ-ZlRul1esIqu8Dhvm9oZAn9N4u1CtX7P3wnEJsHgta8mbDQ0GTxMRrDQNUB5CXXZFmXiPb2rZCWHuk8q7b4vR2KtmOJa4JzH3lTIr-9PkUsI8sokVYKNXIH76bkIAYrDZllFg","refresh_token":"3aIaO_qUKYa82VkbJWwjPhMa-cacRVkuT1havzcstzQ","token_type":"bearer","expires_in":3600,"expires_at":"2026-06-29T22:58:32.597996Z","user":{"id":"usr_86720f3bdb0caf4765a285630d0e783e","project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","email_verified_at":null,"phone_verified_at":null,"disabled_at":null,"banned_until":null,"last_sign_in_at":"2026-06-29T21:58:18.136037Z","last_password_change_at":"2026-06-29T21:58:10.420506Z","created_at":"2026-06-29T21:58:10.420522Z","updated_at":"2026-06-29T21:58:18.136037Z"},"session":{"Authorization: Bearer <jwt…redacted> apikey: tidbre…<client key>
{"error":{"code":"invalid_token","message":"invalid or revoked auth token"}}
Content-Type: application/json apikey: tidbre…<client key>
{"grant_type":"password","project_id":"prj_e2e","email":"e2e+225721@example.com","password":"E2e!pass-225721"}{"data":{"access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImUyZS1qd3Qta2V5IiwidHlwIjoiSldUIiwidXNlIjoic2lnIn0.eyJwcm9qZWN0X2lkIjoicHJqX2UyZSIsImVudmlyb25tZW50X2lkIjoiZW52X2UyZSIsInNlc3Npb25faWQiOiJzZXNfMjU5OThhYjhlZTkyNDUwZGRmMGViNjk4NjY0NTcwOTgiLCJlbWFpbCI6ImUyZSsyMjU3MjFAZXhhbXBsZS5jb20iLCJyb2xlIjoiYXV0aGVudGljYXRlZCIsInNjb3BlcyI6WyJhdXRoZW50aWNhdGVkIl0sInNjb3BlIjoiYXV0aGVudGljYXRlZCIsImlzcyI6InRpZGJyZXN0Oi8vZTJlL3Byb2pBIiwic3ViIjoidXNyXzg2NzIwZjNiZGIwY2FmNDc2NWEyODU2MzBkMGU3ODNlIiwiYXVkIjpbInRpZGJyZXN0LWUyZSJdLCJleHAiOjE3ODI3NzM5MTcsIm5iZiI6MTc4Mjc3MDMxNywiaWF0IjoxNzgyNzcwMzE3fQ.qlcTn7k-_QiWD3s7EA_RZw_aMUMQr9PjHQzSOOMEy67ZiGgDd9v0jO9L-Yqq6olmV26d3N-x_kr8b6vxUprbYrmHnb4Fzpg25quRhHtldUCDNQQbqeVwvGmJXpndPQNRAwpKKCawd43wIWQhMPpHUeKWVeIlabzJUNUVxmJ_MDAetrGgigksl-tI8O-Zzo4EIwgsIqubUANqMjMSK83bT612lr-Ml85_amvPgzKNtYt7QIu2dn9F5vMhh_5VlawjXqd0WhjLfhDHg_SfEMp6XyITVTpIpJdWTm20bDVRzQHlpHNBvZBz9JR4j6QVySekeNM5vzXm4os8fpypLoy72Q","refresh_token":"vELnB1fPs0Xz_BFlrQLkxLGbVjOMNuqH4avdWxRv5BQ","token_type":"bearer","expires_in":3600,"expires_at":"2026-06-29T22:58:37.877945Z","user":{"id":"usr_86720f3bdb0caf4765a285630d0e783e","project_id":"prj_e2e","environment_id":"env_e2e","email":"e2e+225721@example.com","email_verified_at":null,"phone_verified_at":null,"disabled_at":null,"banned_until":null,"last_sign_in_at":"2026-06-29T21:58:35.829697Z","last_password_change_at":"2026-06-29T21:58:10.420506Z","created_at":"2026-06-29T21:58:10.420522Z","updated_at":"2026-06-29T21:58:35.829697Z"},"session":{"Authorization: Bearer <jwt…redacted> apikey: tidbre…<client key>
{"error":{"code":"invalid_token","message":"invalid or revoked auth token"}}
Authorization: Bearer <jwt…redacted> apikey: tidbre…<client key>
{"data":[{"created_at":"2026-06-29T20:54:54Z","id":1,"owner":"qa","priority":1,"status":"todo","title":"Write tests","updated_at":"2026-06-29T20:54:54Z"},{"created_at":"2026-06-29T20:54:54Z","id":2,"owner":"lead","priority":2,"status":"doing","title":"Ship schema endpoint","updated_at":"2026-06-29T20:54:54Z"},{"created_at":"2026-06-29T20:54:54Z","id":3,"owner":"docs","priority":3,"status":"done","title":"Review OpenAPI","updated_at":"2026-06-29T20:54:54Z"}],"meta":{"count":3,"limit":3,"offset":0}}
Authorization: Bearer <jwt…redacted> Content-Type: application/json apikey: tidbre…<client key>
{"status":"doing"}{"error":{"code":"db_timeout","message":"update failed: database operation timed out","request_id":"claude.sharedgv6CCdD0Jg-000073","status":504,"version":"tidbrest.error.v1"}}
Authorization: Bearer <jwt…redacted> Content-Type: application/json apikey: tidbre…<client key>
{"status":"doing"}{"error":{"code":"db_timeout","message":"update failed: database operation timed out","request_id":"claude.sharedgv6CCdD0Jg-000074","status":504,"version":"tidbrest.error.v1"}}
Authorization: Bearer <jwt…redacted> Content-Type: application/json apikey: tidbre…<client key>
{"status":"doing"}{"error":{"code":"metadata_unavailable","message":"registry metadata is unavailable","request_id":"claude.sharedgv6CCdD0Jg-000075","status":503,"version":"tidbrest.error.v1"}}
Authorization: Bearer <jwt…redacted> Content-Type: application/json apikey: tidbre…<client key>
{"status":"doing"}{"error":{"code":"db_timeout","message":"update failed: database operation timed out","request_id":"claude.sharedgv6CCdD0Jg-000076","status":504,"version":"tidbrest.error.v1"}}
auth: mgmt-bearer
{"error":{"code":"admin_auth_required","message":"admin authorization is required","status":401,"version":"controlplane.error.v1"}}
auth: digest
Get "http://127.0.0.1:8081/admin/v1/projects/prj_e2e": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
auth: digest
Get "http://127.0.0.1:8081/admin/v1/projects/prj_e2e/client-keys": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
sdk: @tidbcloud/auth-js
{"user": "e2e+sdk-1782783667824-181794@example.com", "hasSession": true}sdk: @tidbcloud/auth-js
{"user": "e2e+sdk-1782783667824-181794@example.com", "hasSession": true}sdk: @tidbcloud/auth-js
{"user": "e2e+sdk-1782783667824-181794@example.com", "id": "<present>"}sdk: @tidbcloud/auth-js
{"rowCount": 5, "firstId": 128}sdk: @tidbcloud/auth-js
{"rowCount": 3}sdk: @tidbcloud/auth-js
{"code": "policy_denied", "message": "policy denied action \"table.insert\" on table \"tasks\"", "status": 403, "kind": "data_api"}sdk: @tidbcloud/auth-js
{"code": "metadata_unavailable", "message": "registry metadata is unavailable", "status": 503, "kind": "data_api"}sdk: @tidbcloud/auth-js
{"code": "db_timeout", "message": "delete failed: database operation timed out", "status": 504, "kind": "data_api"}sdk: @tidbcloud/auth-js
{"code": "invalid_token", "message": "invalid or revoked auth token", "status": 401, "kind": "auth_api"}✓ POST /admin/v1/bootstrap/admin-api-keys ✓ POST /admin/v1/onboarding ✓ POST /admin/v1/projects ○ POST /admin/v1/users ✓ POST /v1/bootstrap/admin-api-keys
✓ GET /admin/v1/orgs/{org_id}/projects
✓ GET /v1/orgs/{org_id}/projects
✓ POST /admin/v1/orgs
○ POST /admin/v1/orgs/{org_id}/admin-api-keys
○ POST /admin/v1/orgs/{org_id}/admin-api-keys/{key_id}/revoke
○ POST /admin/v1/orgs/{org_id}/admin-api-keys/{key_id}/rotate
○ POST /admin/v1/orgs/{org_id}/admin-oauth/{provider}/exchange
○ POST /admin/v1/orgs/{org_id}/admin-oauth/{provider}/token
○ POST /admin/v1/orgs/{org_id}/console-user-invitations
○ POST /admin/v1/orgs/{org_id}/projects
○ POST /v1/orgs
○ POST /v1/orgs/{org_id}/admin-api-keys
○ POST /v1/orgs/{org_id}/admin-api-keys/{key_id}/revoke
○ POST /v1/orgs/{org_id}/admin-api-keys/{key_id}/rotate
○ POST /v1/orgs/{org_id}/console-user-invitations
○ POST /v1/orgs/{org_id}/projects
✓ GET /admin/v1/projects/{project_id}
✓ GET /admin/v1/projects/{project_id}/readiness
○ POST /admin/v1/projects/{project_id}/delete
○ POST /admin/v1/projects/{project_id}/members
○ POST /admin/v1/projects/{project_id}/suspend
✓ GET /admin/v1/projects/{project_id}/database-bindings
✓ GET /admin/v1/projects/{project_id}/database-bindings/{binding_id}
✓ POST /admin/v1/projects/{project_id}/database-bindings
○ POST /admin/v1/projects/{project_id}/database-bindings/{binding_id}
○ POST /admin/v1/projects/{project_id}/database-bindings/{binding_id}/disable
○ POST /admin/v1/projects/{project_id}/database-bindings/{binding_id}/validate
✓ GET /admin/v1/projects/{project_id}/published-tables
✓ GET /admin/v1/projects/{project_id}/published-tables/{table_id}
✓ POST /admin/v1/projects/{project_id}/published-tables
○ POST /admin/v1/projects/{project_id}/published-tables/{table_id}/delete
○ POST /admin/v1/projects/{project_id}/published-tables/{table_id}/unpublish
✓ GET /admin/v1/projects/{project_id}/schema-drift
✓ GET /admin/v1/projects/{project_id}/schema-graph
○ GET /admin/v1/projects/{project_id}/schema-source
✓ GET /admin/v1/projects/{project_id}/schema-versions
✓ GET /admin/v1/projects/{project_id}/schema-versions/{version_id}
✓ POST /admin/v1/projects/{project_id}/schema-versions
✓ GET /admin/v1/projects/{project_id}/database/indexes
✓ GET /admin/v1/projects/{project_id}/database/network-restrictions
✓ GET /admin/v1/projects/{project_id}/database/publications
✓ GET /admin/v1/projects/{project_id}/database/roles
✓ GET /admin/v1/projects/{project_id}/database/settings
○ PATCH /admin/v1/projects/{project_id}/database/settings
○ POST /admin/v1/projects/{project_id}/database/roles
○ DELETE /admin/v1/projects/{project_id}/policies/{policy_id}
✓ GET /admin/v1/projects/{project_id}/grants/summary
✓ GET /admin/v1/projects/{project_id}/policies
✓ GET /admin/v1/projects/{project_id}/policies/summary
○ GET /admin/v1/projects/{project_id}/policies/{policy_id}
○ GET /admin/v1/projects/{project_id}/policies/{policy_id}/diff
○ GET /admin/v1/projects/{project_id}/policies/{policy_id}/versions
✓ GET /admin/v1/projects/{project_id}/policy-templates
○ POST /admin/v1/projects/{project_id}/grants/preview
○ POST /admin/v1/projects/{project_id}/grants/reconcile
○ POST /admin/v1/projects/{project_id}/policies
○ POST /admin/v1/projects/{project_id}/policies/{policy_id}
○ POST /admin/v1/projects/{project_id}/policies/{policy_id}/disable
○ POST /admin/v1/projects/{project_id}/policies/{policy_id}/enable
○ POST /admin/v1/projects/{project_id}/policies/{policy_id}/rollback
○ POST /admin/v1/projects/{project_id}/policy-drafts/from-template
○ POST /admin/v1/projects/{project_id}/policy-drafts/publish
○ POST /admin/v1/projects/{project_id}/policy-simulations
✓ GET /admin/v1/projects/{project_id}/admin-api-keys
○ GET /admin/v1/projects/{project_id}/admin-api-keys/{key_id}
✓ GET /admin/v1/projects/{project_id}/client-keys
✓ GET /admin/v1/projects/{project_id}/client-keys/{key_id}
✓ GET /admin/v1/projects/{project_id}/service-keys
○ GET /admin/v1/projects/{project_id}/service-keys/{key_id}
✓ GET /v1/projects/{project_id}/admin-api-keys
○ GET /v1/projects/{project_id}/admin-api-keys/{key_id}
✓ GET /v1/projects/{project_id}/client-keys
✓ GET /v1/projects/{project_id}/client-keys/{key_id}
✓ GET /v1/projects/{project_id}/service-keys
○ GET /v1/projects/{project_id}/service-keys/{key_id}
○ POST /admin/v1/projects/{project_id}/admin-api-keys
○ POST /admin/v1/projects/{project_id}/admin-api-keys/{key_id}/revoke
○ POST /admin/v1/projects/{project_id}/admin-api-keys/{key_id}/rotate
✓ POST /admin/v1/projects/{project_id}/client-keys
○ POST /admin/v1/projects/{project_id}/client-keys/{key_id}/revoke
○ POST /admin/v1/projects/{project_id}/client-keys/{key_id}/rotate
✓ POST /admin/v1/projects/{project_id}/service-keys
○ POST /admin/v1/projects/{project_id}/service-keys/{key_id}/revoke
○ POST /admin/v1/projects/{project_id}/service-keys/{key_id}/rotate
○ POST /v1/projects/{project_id}/admin-api-keys
○ POST /v1/projects/{project_id}/admin-api-keys/{key_id}/revoke
○ POST /v1/projects/{project_id}/admin-api-keys/{key_id}/rotate
○ POST /v1/projects/{project_id}/client-keys
○ POST /v1/projects/{project_id}/client-keys/{key_id}/revoke
○ POST /v1/projects/{project_id}/client-keys/{key_id}/rotate
○ POST /v1/projects/{project_id}/service-keys
○ POST /v1/projects/{project_id}/service-keys/{key_id}/revoke
○ POST /v1/projects/{project_id}/service-keys/{key_id}/rotate
✓ GET /admin/v1/projects/{project_id}/auth/oauth-apps
○ GET /admin/v1/projects/{project_id}/auth/oauth-apps/{client_id}
✓ GET /admin/v1/projects/{project_id}/auth/oauth-server
✓ GET /admin/v1/projects/{project_id}/auth/performance/summary
✓ GET /admin/v1/projects/{project_id}/auth/providers
○ GET /admin/v1/projects/{project_id}/auth/providers/{provider_id}
✓ GET /admin/v1/projects/{project_id}/auth/rate-limits
✓ GET /admin/v1/projects/{project_id}/auth/settings
✓ GET /admin/v1/projects/{project_id}/auth/users
○ GET /admin/v1/projects/{project_id}/auth/users/{user_id}
○ GET /admin/v1/projects/{project_id}/auth/users/{user_id}/identities
○ GET /admin/v1/projects/{project_id}/auth/users/{user_id}/sessions
○ PATCH /admin/v1/projects/{project_id}/auth/oauth-apps/{client_id}
○ PATCH /admin/v1/projects/{project_id}/auth/oauth-server
○ PATCH /admin/v1/projects/{project_id}/auth/rate-limits
○ PATCH /admin/v1/projects/{project_id}/auth/settings
○ POST /admin/v1/projects/{project_id}/auth/oauth-apps
○ POST /admin/v1/projects/{project_id}/auth/oauth-apps/{client_id}/revoke
○ POST /admin/v1/projects/{project_id}/auth/oauth-apps/{client_id}/rotate-secret
○ POST /admin/v1/projects/{project_id}/auth/providers
○ POST /admin/v1/projects/{project_id}/auth/providers/{provider_id}/disable
○ POST /admin/v1/projects/{project_id}/auth/providers/{provider_id}/secrets/rotate
○ POST /admin/v1/projects/{project_id}/auth/providers/{provider_id}/secrets/{secret_id}/revoke
○ POST /admin/v1/projects/{project_id}/auth/users
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/ban
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/disable
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/enable
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/identities/{identity_id}/unlink
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/password-reset
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/sessions/revoke-all
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/sessions/{session_id}/revoke
○ POST /admin/v1/projects/{project_id}/auth/users/{user_id}/unban
✓ GET /admin/v1/projects/{project_id}/audit-events
✓ GET /admin/v1/me
○ GET /admin/v1/me/sessions
○ POST /admin/v1/me/sessions/{session_id}/revoke
○ DELETE /v1/projects/{project_id}/policies/{policy_id}
✓ GET /admin/v1/openapi.json
✓ GET /admin/v1/projects/{project_id}/environments
✓ GET /admin/v1/projects/{project_id}/migration-jobs
○ GET /admin/v1/projects/{project_id}/migration-jobs/{job_id}
✓ GET /v1/projects/{project_id}
✓ GET /v1/projects/{project_id}/audit-events
✓ GET /v1/projects/{project_id}/auth/oauth-apps
○ GET /v1/projects/{project_id}/auth/oauth-apps/{client_id}
✓ GET /v1/projects/{project_id}/auth/oauth-server
✓ GET /v1/projects/{project_id}/auth/performance/summary
✓ GET /v1/projects/{project_id}/auth/providers
○ GET /v1/projects/{project_id}/auth/providers/{provider_id}
✓ GET /v1/projects/{project_id}/auth/rate-limits
✓ GET /v1/projects/{project_id}/auth/settings
✓ GET /v1/projects/{project_id}/auth/users
○ GET /v1/projects/{project_id}/auth/users/{user_id}
○ GET /v1/projects/{project_id}/auth/users/{user_id}/identities
○ GET /v1/projects/{project_id}/auth/users/{user_id}/sessions
✓ GET /v1/projects/{project_id}/database-bindings
✓ GET /v1/projects/{project_id}/database-bindings/{binding_id}
✓ GET /v1/projects/{project_id}/database/indexes
✓ GET /v1/projects/{project_id}/database/network-restrictions
✓ GET /v1/projects/{project_id}/database/publications
✓ GET /v1/projects/{project_id}/database/roles
✓ GET /v1/projects/{project_id}/database/settings
✓ GET /v1/projects/{project_id}/environments
✓ GET /v1/projects/{project_id}/grants/summary
✓ GET /v1/projects/{project_id}/migration-jobs
○ GET /v1/projects/{project_id}/migration-jobs/{job_id}
✓ GET /v1/projects/{project_id}/policies
✓ GET /v1/projects/{project_id}/policies/summary
○ GET /v1/projects/{project_id}/policies/{policy_id}
○ GET /v1/projects/{project_id}/policies/{policy_id}/diff
○ GET /v1/projects/{project_id}/policies/{policy_id}/versions
✓ GET /v1/projects/{project_id}/policy-templates
✓ GET /v1/projects/{project_id}/published-tables
✓ GET /v1/projects/{project_id}/published-tables/{table_id}
✓ GET /v1/projects/{project_id}/readiness
✓ GET /v1/projects/{project_id}/schema-drift
✓ GET /v1/projects/{project_id}/schema-graph
○ GET /v1/projects/{project_id}/schema-source
✓ GET /v1/projects/{project_id}/schema-versions
✓ GET /v1/projects/{project_id}/schema-versions/{version_id}
○ PATCH /v1/projects/{project_id}/auth/oauth-apps/{client_id}
○ PATCH /v1/projects/{project_id}/auth/oauth-server
○ PATCH /v1/projects/{project_id}/auth/rate-limits
○ PATCH /v1/projects/{project_id}/auth/settings
○ PATCH /v1/projects/{project_id}/database/settings
○ POST /admin/v1/projects/{project_id}/migration-jobs
○ POST /admin/v1/projects/{project_id}/migration-jobs/{job_id}/apply
○ POST /admin/v1/projects/{project_id}/migration-jobs/{job_id}/review
○ POST /admin/v1/projects/{project_id}/migration-jobs/{job_id}/status
○ POST /admin/v1/projects/{project_id}/registry-refresh
○ POST /v1/onboarding
○ POST /v1/projects
○ POST /v1/projects/{project_id}/auth/oauth-apps
○ POST /v1/projects/{project_id}/auth/oauth-apps/{client_id}/revoke
○ POST /v1/projects/{project_id}/auth/oauth-apps/{client_id}/rotate-secret
○ POST /v1/projects/{project_id}/auth/providers
○ POST /v1/projects/{project_id}/auth/providers/{provider_id}/disable
○ POST /v1/projects/{project_id}/auth/providers/{provider_id}/secrets/rotate
○ POST /v1/projects/{project_id}/auth/providers/{provider_id}/secrets/{secret_id}/revoke
○ POST /v1/projects/{project_id}/auth/users
○ POST /v1/projects/{project_id}/auth/users/{user_id}/ban
○ POST /v1/projects/{project_id}/auth/users/{user_id}/disable
○ POST /v1/projects/{project_id}/auth/users/{user_id}/enable
○ POST /v1/projects/{project_id}/auth/users/{user_id}/identities/{identity_id}/unlink
○ POST /v1/projects/{project_id}/auth/users/{user_id}/password-reset
○ POST /v1/projects/{project_id}/auth/users/{user_id}/sessions/revoke-all
○ POST /v1/projects/{project_id}/auth/users/{user_id}/sessions/{session_id}/revoke
○ POST /v1/projects/{project_id}/auth/users/{user_id}/unban
○ POST /v1/projects/{project_id}/database-bindings
○ POST /v1/projects/{project_id}/database-bindings/{binding_id}
○ POST /v1/projects/{project_id}/database-bindings/{binding_id}/disable
○ POST /v1/projects/{project_id}/database-bindings/{binding_id}/validate
○ POST /v1/projects/{project_id}/database/roles
○ POST /v1/projects/{project_id}/delete
○ POST /v1/projects/{project_id}/grants/preview
○ POST /v1/projects/{project_id}/grants/reconcile
○ POST /v1/projects/{project_id}/members
○ POST /v1/projects/{project_id}/migration-jobs
○ POST /v1/projects/{project_id}/migration-jobs/{job_id}/apply
○ POST /v1/projects/{project_id}/migration-jobs/{job_id}/review
○ POST /v1/projects/{project_id}/migration-jobs/{job_id}/status
○ POST /v1/projects/{project_id}/policies
○ POST /v1/projects/{project_id}/policies/{policy_id}
○ POST /v1/projects/{project_id}/policies/{policy_id}/disable
○ POST /v1/projects/{project_id}/policies/{policy_id}/enable
○ POST /v1/projects/{project_id}/policies/{policy_id}/rollback
○ POST /v1/projects/{project_id}/policy-drafts/from-template
○ POST /v1/projects/{project_id}/policy-drafts/publish
○ POST /v1/projects/{project_id}/policy-simulations
○ POST /v1/projects/{project_id}/published-tables
○ POST /v1/projects/{project_id}/published-tables/{table_id}/delete
○ POST /v1/projects/{project_id}/published-tables/{table_id}/unpublish
○ POST /v1/projects/{project_id}/registry-refresh
○ POST /v1/projects/{project_id}/schema-versions
○ POST /v1/projects/{project_id}/suspend
○ POST /v1/users