vibe-proxy/backend/internal/auth/claude/anthropic.go
2026-08-24 00:10:41 +02:00

40 lines
1.7 KiB
Go

package claude
// PKCECodes holds PKCE verification codes for OAuth2 PKCE flow
type PKCECodes struct {
// CodeVerifier is the cryptographically random string used to correlate
// the authorization request to the token request
CodeVerifier string `json:"code_verifier"`
// CodeChallenge is the SHA256 hash of the code verifier, base64url-encoded
CodeChallenge string `json:"code_challenge"`
}
// ClaudeTokenData holds OAuth token information from Anthropic
type ClaudeTokenData struct {
// AccessToken is the OAuth2 access token for API access.
AccessToken string `json:"access_token"`
// RefreshToken is used to obtain new access tokens.
RefreshToken string `json:"refresh_token"`
// Email is the Anthropic account email.
Email string `json:"email"`
// AccountUUID identifies the Anthropic account returned by OAuth.
AccountUUID string `json:"account_uuid"`
// OrganizationUUID identifies the Anthropic organization returned by OAuth.
OrganizationUUID string `json:"organization_uuid"`
// OrganizationName is the display name returned by OAuth.
OrganizationName string `json:"organization_name"`
// Expire is the timestamp of the token expiry.
Expire string `json:"expired"`
}
// ClaudeAuthBundle aggregates authentication data after OAuth flow completion
type ClaudeAuthBundle struct {
// APIKey is the Anthropic API key obtained from token exchange.
APIKey string `json:"api_key"`
// TokenData contains the OAuth tokens from the authentication flow.
TokenData ClaudeTokenData `json:"token_data"`
// DeviceIDs contains the single device identity persisted with this credential.
DeviceIDs []string `json:"claude_device_ids"`
// LastRefresh is the timestamp of the last token refresh.
LastRefresh string `json:"last_refresh"`
}