salim8898 opened a new issue, #8977:
URL: https://github.com/apache/devlake/issues/8977

   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/incubator-devlake/issues?q=is%3Aissue) and 
found no similar issues.
   
   
   ### What happened
   
   When using a Claude Console Admin API key (`sk-ant-admin01-...`), the 
connection test passes but data collection fails with:
   permission_error: Missing required scopes. Got: ['api:admin'] Needed: 
['read:analytics']
   
   The plugin calls these **Claude Enterprise** endpoints which require 
`read:analytics` scope on an `sk-ant-api01-...` key (only available to Claude 
Enterprise / `claude.ai` customers):
   - `v1/organizations/analytics/users`
   - `v1/organizations/analytics/summaries`
   - `v1/organizations/analytics/connectors`
   
   **Claude Console** organizations (`platform.claude.com`) use a different API 
entirely:
   - `v1/organizations/usage_report/claude_code` (query param: `starting_at` 
instead of `date`)
   
   Claude Console Admin keys (`sk-ant-admin01-...`) have full access to the 
Console endpoint but the plugin never calls it, so Console orgs have no way to 
collect analytics data.
   
   **API differences:**
   
   | | Enterprise API | Console API |
   |---|---|---|
   | Endpoint | `v1/organizations/analytics/users` | 
`v1/organizations/usage_report/claude_code` |
   | Date param | `date` | `starting_at` |
   | User field | `user.id` / `user.email_address` | `actor.type` + 
`actor.email_address` |
   | Sessions | `claude_code_metrics.core_metrics.distinct_session_count` | 
`core_metrics.num_sessions` |
   | Commits | `claude_code_metrics.core_metrics.commit_count` | 
`core_metrics.commits_by_claude_code` |
   | Lines added | `claude_code_metrics.core_metrics.lines_of_code.added_count` 
| `core_metrics.lines_of_code.added` |
   | Tool accepted | `tool_actions.edit_tool.accepted_count` | 
`tool_actions.edit_tool.accepted` |
   | Chat metrics | Yes | No |
   | Model cost breakdown | No | Yes |
   
   Pagination envelope (`data`, `has_more`, `next_page`) is identical across 
both APIs.
   
   References:
   - [Claude Code Analytics API 
(Console)](https://docs.anthropic.com/en/api/claude-code-analytics-api)
   - [Create an Admin API 
key](https://docs.anthropic.com/en/docs/manage-claude/admin-api-keys)
   
   ### What do you expect to happen
   
   Organizations using Claude Console (`platform.claude.com`) with 
`sk-ant-admin01-...` Admin API keys should be able to collect Claude Code 
analytics data via `v1/organizations/usage_report/claude_code`.
   
   Suggested fix: detect API type from key prefix (`sk-ant-admin01-` = Console, 
`sk-ant-api01-` = Enterprise) or add an explicit `ApiType` field to the 
connection model. For Console orgs, the `analytics/summaries` and 
`analytics/connectors` collectors should be skipped gracefully since those 
endpoints have no Console equivalent. All core Claude Code metrics (sessions, 
commits, PRs, lines of code, tool actions) are available in the Console API and 
can map to the existing `ClaudeCodeUserActivity` model.
   
   ### How to reproduce
   
   1. Create a Claude Console Admin API key at 
`platform.claude.com/settings/admin-keys` (key starts with `sk-ant-admin01-`)
   2. In DevLake, go to Connections → Claude Code → create a new connection
   3. Paste the `sk-ant-admin01-...` key and fill in the Organization ID
   4. Click **Test Connection** — it succeeds
   5. Add a scope and trigger a data sync
   6. Sync fails with:
   permission_error: Missing required scopes. Got: ['api:admin'] Needed: 
['read:analytics']
   
   
   
   **Environment:**
   - DevLake version: v1.0.3-beta13
   - Anthropic account type: Claude Console (`platform.claude.com`)
   - Admin key prefix: `sk-ant-admin01-...`
   
   ### Anything else
   
   _No response_
   
   ### Version
   
   v1.0.3-beta13
   
   ### Are you willing to submit PR?
   
   - [x] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to