package models

// UserSession represents an authenticated user session
type UserSession struct {
	ID            string  `json:"id"`
	Name          string  `json:"name"`
	Email         *string `json:"email,omitempty"`
	ProfileID     string  `json:"profile_id"`
	ProfileName   string  `json:"profile_name,omitempty"`
	RoleID        *string `json:"role_id,omitempty"`
	RoleName      *string `json:"role_name,omitempty"`
	IsSystemAdmin  bool    `json:"is_system_admin"`
	ConnectedAppId string  `json:"connectedAppId,omitempty"` // For audit logging
	Scope          string  `json:"scope,omitempty"`          // For handler-level checks
}

// ConnectedApp is DELETED — use models.SystemConnectedApp from z_generated.go

// SessionToken represents an OAuth token response
// These fields use snake_case per OAuth2 RFC 6749 spec — this is correct.
type SessionToken struct {
	AccessToken  string `json:"access_token"`
	TokenType    string `json:"token_type"`
	RefreshToken string `json:"refresh_token,omitempty"`
	ExpiresIn    int    `json:"expires_in"`
	ID           string `json:"id,omitempty"`           // Identity URL
	InstanceURL  string `json:"instance_url,omitempty"` // Instance URL
	IssuedAt     string `json:"issued_at,omitempty"`    // Timestamp string
	Signature    string `json:"signature,omitempty"`    // Signature
	Scope        string `json:"scope,omitempty"`        // Granted OAuth scope (SF-compatible)
}

// SystemPermissionSetAssignment - use generated
// type PermissionSetAssignment struct { ... }

// SystemGroupMember - use generated
// type GroupMember struct { ... }
