// This file is auto-generated by @hey-api/openapi-ts import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; import type { BrowseFilesystemData, BrowseFilesystemResponses, ChangePasswordData, ChangePasswordResponses, CreateBackupScheduleData, CreateBackupScheduleResponses, CreateNotificationDestinationData, CreateNotificationDestinationResponses, CreateRepositoryData, CreateRepositoryResponses, CreateVolumeData, CreateVolumeResponses, DeleteBackupScheduleData, DeleteBackupScheduleResponses, DeleteNotificationDestinationData, DeleteNotificationDestinationErrors, DeleteNotificationDestinationResponses, DeleteRepositoryData, DeleteRepositoryResponses, DeleteSnapshotData, DeleteSnapshotResponses, DeleteVolumeData, DeleteVolumeResponses, DoctorRepositoryData, DoctorRepositoryResponses, DownloadResticPasswordData, DownloadResticPasswordResponses, GetBackupScheduleData, GetBackupScheduleForVolumeData, GetBackupScheduleForVolumeResponses, GetBackupScheduleResponses, GetContainersUsingVolumeData, GetContainersUsingVolumeErrors, GetContainersUsingVolumeResponses, GetMeData, GetMeResponses, GetMirrorCompatibilityData, GetMirrorCompatibilityResponses, GetNotificationDestinationData, GetNotificationDestinationErrors, GetNotificationDestinationResponses, GetRepositoryData, GetRepositoryResponses, GetScheduleMirrorsData, GetScheduleMirrorsResponses, GetScheduleNotificationsData, GetScheduleNotificationsResponses, GetSnapshotDetailsData, GetSnapshotDetailsResponses, GetStatusData, GetStatusResponses, GetSystemInfoData, GetSystemInfoResponses, GetVolumeData, GetVolumeErrors, GetVolumeResponses, HealthCheckVolumeData, HealthCheckVolumeErrors, HealthCheckVolumeResponses, ListBackupSchedulesData, ListBackupSchedulesResponses, ListFilesData, ListFilesResponses, ListNotificationDestinationsData, ListNotificationDestinationsResponses, ListRcloneRemotesData, ListRcloneRemotesResponses, ListRepositoriesData, ListRepositoriesResponses, ListSnapshotFilesData, ListSnapshotFilesResponses, ListSnapshotsData, ListSnapshotsResponses, ListVolumesData, ListVolumesResponses, LoginData, LoginResponses, LogoutData, LogoutResponses, MountVolumeData, MountVolumeResponses, RegisterData, RegisterResponses, RestoreSnapshotData, RestoreSnapshotResponses, RunBackupNowData, RunBackupNowResponses, RunForgetData, RunForgetResponses, StopBackupData, StopBackupErrors, StopBackupResponses, TestConnectionData, TestConnectionResponses, TestNotificationDestinationData, TestNotificationDestinationErrors, TestNotificationDestinationResponses, UnmountVolumeData, UnmountVolumeResponses, UpdateBackupScheduleData, UpdateBackupScheduleResponses, UpdateNotificationDestinationData, UpdateNotificationDestinationErrors, UpdateNotificationDestinationResponses, UpdateRepositoryData, UpdateRepositoryErrors, UpdateRepositoryResponses, UpdateScheduleMirrorsData, UpdateScheduleMirrorsResponses, UpdateScheduleNotificationsData, UpdateScheduleNotificationsResponses, UpdateVolumeData, UpdateVolumeErrors, UpdateVolumeResponses } from './types.gen'; export type Options = Options2 & { /** * You can provide a client instance returned by `createClient()` instead of * individual options. This might be also useful if you want to implement a * custom client. */ client?: Client; /** * You can pass arbitrary values through the `meta` object. This can be * used to access values that aren't defined as part of the SDK function. */ meta?: Record; }; /** * Register a new user */ export const register = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/auth/register', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Login with username and password */ export const login = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/auth/login', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Logout current user */ export const logout = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/auth/logout', ...options }); /** * Get current authenticated user */ export const getMe = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/auth/me', ...options }); /** * Get authentication system status */ export const getStatus = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/auth/status', ...options }); /** * Change current user password */ export const changePassword = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/auth/change-password', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * List all volumes */ export const listVolumes = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/volumes', ...options }); /** * Create a new volume */ export const createVolume = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/volumes', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Test connection to backend */ export const testConnection = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/volumes/test-connection', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Delete a volume */ export const deleteVolume = (options: Options) => (options.client ?? client).delete({ url: '/api/v1/volumes/{name}', ...options }); /** * Get a volume by name */ export const getVolume = (options: Options) => (options.client ?? client).get({ url: '/api/v1/volumes/{name}', ...options }); /** * Update a volume's configuration */ export const updateVolume = (options: Options) => (options.client ?? client).put({ url: '/api/v1/volumes/{name}', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Get containers using a volume by name */ export const getContainersUsingVolume = (options: Options) => (options.client ?? client).get({ url: '/api/v1/volumes/{name}/containers', ...options }); /** * Mount a volume */ export const mountVolume = (options: Options) => (options.client ?? client).post({ url: '/api/v1/volumes/{name}/mount', ...options }); /** * Unmount a volume */ export const unmountVolume = (options: Options) => (options.client ?? client).post({ url: '/api/v1/volumes/{name}/unmount', ...options }); /** * Perform a health check on a volume */ export const healthCheckVolume = (options: Options) => (options.client ?? client).post({ url: '/api/v1/volumes/{name}/health-check', ...options }); /** * List files in a volume directory */ export const listFiles = (options: Options) => (options.client ?? client).get({ url: '/api/v1/volumes/{name}/files', ...options }); /** * Browse directories on the host filesystem */ export const browseFilesystem = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/volumes/filesystem/browse', ...options }); /** * List all repositories */ export const listRepositories = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/repositories', ...options }); /** * Create a new restic repository */ export const createRepository = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/repositories', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * List all configured rclone remotes on the host system */ export const listRcloneRemotes = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/repositories/rclone-remotes', ...options }); /** * Delete a repository */ export const deleteRepository = (options: Options) => (options.client ?? client).delete({ url: '/api/v1/repositories/{name}', ...options }); /** * Get a single repository by name */ export const getRepository = (options: Options) => (options.client ?? client).get({ url: '/api/v1/repositories/{name}', ...options }); /** * Update a repository's name or settings */ export const updateRepository = (options: Options) => (options.client ?? client).patch({ url: '/api/v1/repositories/{name}', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * List all snapshots in a repository */ export const listSnapshots = (options: Options) => (options.client ?? client).get({ url: '/api/v1/repositories/{name}/snapshots', ...options }); /** * Delete a specific snapshot from a repository */ export const deleteSnapshot = (options: Options) => (options.client ?? client).delete({ url: '/api/v1/repositories/{name}/snapshots/{snapshotId}', ...options }); /** * Get details of a specific snapshot */ export const getSnapshotDetails = (options: Options) => (options.client ?? client).get({ url: '/api/v1/repositories/{name}/snapshots/{snapshotId}', ...options }); /** * List files and directories in a snapshot */ export const listSnapshotFiles = (options: Options) => (options.client ?? client).get({ url: '/api/v1/repositories/{name}/snapshots/{snapshotId}/files', ...options }); /** * Restore a snapshot to a target path on the filesystem */ export const restoreSnapshot = (options: Options) => (options.client ?? client).post({ url: '/api/v1/repositories/{name}/restore', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Run doctor operations on a repository to fix common issues (unlock, check, repair index). Use this when the repository is locked or has errors. */ export const doctorRepository = (options: Options) => (options.client ?? client).post({ url: '/api/v1/repositories/{name}/doctor', ...options }); /** * List all backup schedules */ export const listBackupSchedules = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/backups', ...options }); /** * Create a new backup schedule for a volume */ export const createBackupSchedule = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/backups', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Delete a backup schedule */ export const deleteBackupSchedule = (options: Options) => (options.client ?? client).delete({ url: '/api/v1/backups/{scheduleId}', ...options }); /** * Get a backup schedule by ID */ export const getBackupSchedule = (options: Options) => (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}', ...options }); /** * Update a backup schedule */ export const updateBackupSchedule = (options: Options) => (options.client ?? client).patch({ url: '/api/v1/backups/{scheduleId}', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Get a backup schedule for a specific volume */ export const getBackupScheduleForVolume = (options: Options) => (options.client ?? client).get({ url: '/api/v1/backups/volume/{volumeId}', ...options }); /** * Trigger a backup immediately for a schedule */ export const runBackupNow = (options: Options) => (options.client ?? client).post({ url: '/api/v1/backups/{scheduleId}/run', ...options }); /** * Stop a backup that is currently in progress */ export const stopBackup = (options: Options) => (options.client ?? client).post({ url: '/api/v1/backups/{scheduleId}/stop', ...options }); /** * Manually apply retention policy to clean up old snapshots */ export const runForget = (options: Options) => (options.client ?? client).post({ url: '/api/v1/backups/{scheduleId}/forget', ...options }); /** * Get notification assignments for a backup schedule */ export const getScheduleNotifications = (options: Options) => (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}/notifications', ...options }); /** * Update notification assignments for a backup schedule */ export const updateScheduleNotifications = (options: Options) => (options.client ?? client).put({ url: '/api/v1/backups/{scheduleId}/notifications', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Get mirror repository assignments for a backup schedule */ export const getScheduleMirrors = (options: Options) => (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}/mirrors', ...options }); /** * Update mirror repository assignments for a backup schedule */ export const updateScheduleMirrors = (options: Options) => (options.client ?? client).put({ url: '/api/v1/backups/{scheduleId}/mirrors', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Get mirror compatibility info for all repositories relative to a backup schedule's primary repository */ export const getMirrorCompatibility = (options: Options) => (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}/mirrors/compatibility', ...options }); /** * Get mirror repository assignments for a backup schedule */ export const getScheduleMirrors = (options: Options) => { return (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}/mirrors', ...options }); }; /** * Update mirror repository assignments for a backup schedule */ export const updateScheduleMirrors = (options: Options) => { return (options.client ?? client).put({ url: '/api/v1/backups/{scheduleId}/mirrors', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); }; /** * Get mirror compatibility info for all repositories relative to a backup schedule's primary repository */ export const getMirrorCompatibility = (options: Options) => { return (options.client ?? client).get({ url: '/api/v1/backups/{scheduleId}/mirrors/compatibility', ...options }); }; /** * List all notification destinations */ export const listNotificationDestinations = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/notifications/destinations', ...options }); /** * Create a new notification destination */ export const createNotificationDestination = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/notifications/destinations', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); /** * Delete a notification destination */ export const deleteNotificationDestination = (options: Options) => (options.client ?? client).delete({ url: '/api/v1/notifications/destinations/{id}', ...options }); /** * Get a notification destination by ID */ export const getNotificationDestination = (options: Options) => (options.client ?? client).get({ url: '/api/v1/notifications/destinations/{id}', ...options }); /** * Update a notification destination */ export const updateNotificationDestination = (options: Options) => (options.client ?? client).patch({ url: '/api/v1/notifications/destinations/{id}', ...options, headers: { 'Content-Type': 'application/json', ...options.headers } }); /** * Test a notification destination by sending a test message */ export const testNotificationDestination = (options: Options) => (options.client ?? client).post({ url: '/api/v1/notifications/destinations/{id}/test', ...options }); /** * Get system information including available capabilities */ export const getSystemInfo = (options?: Options) => (options?.client ?? client).get({ url: '/api/v1/system/info', ...options }); /** * Download the Restic password file for backup recovery. Requires password re-authentication. */ export const downloadResticPassword = (options?: Options) => (options?.client ?? client).post({ url: '/api/v1/system/restic-password', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } });