// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../core/resource'; import { APIPromise } from '../../core/api-promise'; import { buildHeaders } from '../../internal/headers'; import { RequestOptions } from '../../internal/request-options'; export class UsageAnalyst extends APIResource { /** * Get test results with full question data for user or group * * @example * ```ts * await client.v1.usageAnalyst.getTestQuestions(); * ``` */ getTestQuestions( query: UsageAnalystGetTestQuestionsParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get('/api/v1/usage-analyst/test-questions', { query, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Get all chat messages from sessions for user or group * * @example * ```ts * const response = * await client.v1.usageAnalyst.listChatMessages(); * ``` */ listChatMessages( query: UsageAnalystListChatMessagesParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get('/api/v1/usage-analyst/chat-messages', { query, ...options }); } /** * Get all events based on filters * * @example * ```ts * await client.v1.usageAnalyst.listEvents({ * endDate: 'endDate', * eventType: 'material_created', * startDate: 'startDate', * }); * ``` */ listEvents(query: UsageAnalystListEventsParams, options?: RequestOptions): APIPromise { return this._client.get('/api/v1/usage-analyst/events', { query, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } } export interface UsageAnalystListChatMessagesResponse { messages?: Array; sessionCount?: number; total?: number; } export namespace UsageAnalystListChatMessagesResponse { export interface Message { componentId?: string; content?: string; createdAt?: string; metadata?: unknown; role?: 'user' | 'assistant' | 'system'; sessionId?: string; userId?: string; } } export interface UsageAnalystGetTestQuestionsParams { /** * Array of group IDs to filter */ groupIds?: Array; /** * User ID to get test results for */ userId?: string; } export interface UsageAnalystListChatMessagesParams { /** * Array of group IDs to filter */ groupIds?: Array; /** * User ID to get chat messages for */ userId?: string; } export interface UsageAnalystListEventsParams { /** * End date for filtering (ISO 8601) */ endDate: string; /** * Type of usage event to filter */ eventType: | 'material_created' | 'material_uploaded' | 'material_processed' | 'material_deleted' | 'component_created' | 'component_accessed' | 'component_deleted' | 'component_usage' | 'chat_message_sent' | 'chat_session_started' | 'chat_session_ended' | 'chat_feedback' | 'test_created' | 'test_started' | 'test_completed' | 'test_question_answered' | 'test_retaken' | 'audio_recap_create' | 'audio_recap_progress' | 'audio_recap_feedback' | 'assignment_grader_create' | 'video_generation_created' | 'video_generation_completed' | 'video_generation_failed' | 'api_call' | 'cache_hit' | 'sso_login' | 'sso_logout' | 'student_performance'; /** * Start date for filtering (ISO 8601) */ startDate: string; /** * Array of group IDs to filter */ groupIds?: Array; /** * Array of user IDs to filter */ userIds?: Array; } export declare namespace UsageAnalyst { export { type UsageAnalystListChatMessagesResponse as UsageAnalystListChatMessagesResponse, type UsageAnalystGetTestQuestionsParams as UsageAnalystGetTestQuestionsParams, type UsageAnalystListChatMessagesParams as UsageAnalystListChatMessagesParams, type UsageAnalystListEventsParams as UsageAnalystListEventsParams, }; }