/** * Vikunja API Types * Adapted from the Deno prototype with additions from API documentation */ import type { Task as VikunjaTask } from 'node-vikunja'; export interface LoginCredentials { username: string; password: string; totp_passcode?: string; } export interface AuthToken { token: string; expires_at: string; } export interface AuthSession { apiUrl: string; apiToken: string; tokenExpiry?: Date; userId?: string; authType: 'api-token' | 'jwt'; } export interface Message { message: string; } export interface Pagination { page?: number; per_page?: number; } export interface SearchParams { s?: string; } export interface DateRange { date_from?: string; date_to?: string; } export interface User { id: number; username: string; email?: string; name?: string; created?: string; updated?: string; email_reminders_enabled?: boolean; overdue_tasks_reminders_enabled?: boolean; overdue_tasks_reminders_time?: string; language?: string; timezone?: string; week_start?: number; frontend_settings?: Record; } export interface ExtendedUserSettings { name?: string; email?: string; language?: string; timezone?: string; week_start?: number; frontend_settings?: Record; email_reminders_enabled?: boolean; overdue_tasks_reminders_enabled?: boolean; overdue_tasks_reminders_time?: string; discoverable_by_name?: boolean; discoverable_by_email?: boolean; default_project_id?: number; } export interface Project { id?: number; title: string; description?: string; parent_project_id?: number; is_archived?: boolean; hex_color?: string; created?: string; updated?: string; owner?: User; } export interface ProjectUser { user_id: number; project_id: number; right: number; created?: string; updated?: string; } export interface ProjectView { id?: number; project_id: number; title: string; view_kind: 'list' | 'board' | 'table' | 'gantt'; position?: number; bucket_configuration?: unknown; created?: string; updated?: string; } export interface Task { id?: number; project_id: number; title: string; description?: string; done?: boolean; done_at?: string | null; due_date?: string | null; start_date?: string | null; end_date?: string | null; repeat_after?: number; repeat_mode?: 'day' | 'week' | 'month' | 'year'; priority?: number; percent_done?: number; labels?: Label[]; assignees?: User[]; attachments?: Attachment[]; reminders?: TaskReminder[]; created?: string; updated?: string; created_by?: User; } export interface TaskReminder { id: number; reminder_date: string; } export interface TaskComment { id?: number; task_id: number; comment: string; author?: User; created?: string; updated?: string; } export interface TaskRelation { id?: number; task_id: number; other_task_id: number; relation_kind: string; created_by?: User; created?: string; } export interface Label { id?: number; title: string; description?: string; hex_color?: string; created_by?: User; created?: string; updated?: string; } export interface Team { id?: number; name: string; description?: string; members?: TeamMember[]; created?: string; updated?: string; created_by?: User; } export interface TeamMember { id: number; username: string; email?: string; admin: boolean; } export interface Attachment { id?: number; task_id: number; file: File | string; created?: string; created_by?: User; } export interface SavedFilter { id?: number; title: string; description?: string; filters: FilterQuery; created?: string; updated?: string; owner?: User; } export interface FilterQuery { filter?: string; filter_timezone?: string; filter_include_nulls?: boolean; } export interface Notification { id?: number; name?: string; notification?: unknown; read?: boolean; read_at?: string | null; created?: string; } export interface Bucket { id?: number; project_id: number; view_id: number; title: string; position: number; limit?: number; is_done_bucket?: boolean; created?: string; updated?: string; created_by?: User; } export interface Webhook { id?: number; project_id: number; target_url: string; events: string[]; secret?: string; created?: string; updated?: string; created_by?: User; } export interface MigrationStatus { id?: number; migrator_name?: string; started?: string; finished?: string | null; } export interface ProjectShare { id?: number; project_id: number; hash?: string; right?: number; sharing_type?: number; shared_by?: User; created?: string; updated?: string; } export interface Subscription { id?: number; entity: string; entity_id: number; user?: User; created?: string; } export interface VikunjaError { code?: number; message: string; } export interface ApiResponse { data?: T; error?: VikunjaError; } export interface MinimalTask { id?: number; title: string; assignees?: User[]; } export interface StandardTaskResponse { success: boolean; operation: 'create' | 'update' | 'delete' | 'list' | 'get' | 'assign' | 'unassign' | 'comment' | 'bulk-update' | 'bulk-delete' | 'relate' | 'unrelate' | 'relations' | 'add-reminder' | 'remove-reminder' | 'list-reminders'; message?: string; task?: VikunjaTask | MinimalTask; tasks?: VikunjaTask[]; comment?: TaskComment; comments?: TaskComment[]; reminder?: TaskReminder; reminders?: TaskReminder[]; metadata?: { timestamp: string; affectedFields?: string[]; previousState?: Partial | VikunjaTask[]; count?: number; fetchErrors?: number; failedCount?: number; failedIds?: number[]; }; } export interface StandardProjectResponse { success: boolean; operation: 'create' | 'update' | 'delete' | 'list' | 'get' | 'archive' | 'unarchive'; message?: string; project?: Project; projects?: Project[]; metadata?: { timestamp: string; count?: number; affectedFields?: string[]; }; } export interface ApiToken { id?: number; title: string; token?: string; permissions?: string[]; expires_at?: string; created?: string; } //# sourceMappingURL=vikunja.d.ts.map