// 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, CreateBackupScheduleData, CreateBackupScheduleResponses, CreateNotificationDestinationData, CreateNotificationDestinationResponses, CreateRepositoryData, CreateRepositoryResponses, CreateVolumeData, CreateVolumeResponses, DeleteBackupScheduleData, DeleteBackupScheduleResponses, DeleteNotificationDestinationData, DeleteNotificationDestinationErrors, DeleteNotificationDestinationResponses, DeleteRepositoryData, DeleteRepositoryResponses, DeleteSnapshotData, DeleteSnapshotResponses, DeleteSnapshotsData, DeleteSnapshotsResponses, DeleteVolumeData, DeleteVolumeResponses, DoctorRepositoryData, DoctorRepositoryResponses, DownloadResticPasswordData, DownloadResticPasswordResponses, GetBackupScheduleData, GetBackupScheduleForVolumeData, GetBackupScheduleForVolumeResponses, GetBackupScheduleResponses, GetMirrorCompatibilityData, GetMirrorCompatibilityResponses, GetNotificationDestinationData, GetNotificationDestinationErrors, GetNotificationDestinationResponses, GetRepositoryData, GetRepositoryResponses, GetScheduleMirrorsData, GetScheduleMirrorsResponses, GetScheduleNotificationsData, GetScheduleNotificationsResponses, GetSnapshotDetailsData, GetSnapshotDetailsResponses, GetStatusData, GetStatusResponses, GetSystemInfoData, GetSystemInfoResponses, GetUpdatesData, GetUpdatesResponses, GetVolumeData, GetVolumeErrors, GetVolumeResponses, HealthCheckVolumeData, HealthCheckVolumeErrors, HealthCheckVolumeResponses, ListBackupSchedulesData, ListBackupSchedulesResponses, ListFilesData, ListFilesResponses, ListNotificationDestinationsData, ListNotificationDestinationsResponses, ListRcloneRemotesData, ListRcloneRemotesResponses, ListRepositoriesData, ListRepositoriesResponses, ListSnapshotFilesData, ListSnapshotFilesResponses, ListSnapshotsData, ListSnapshotsResponses, ListVolumesData, ListVolumesResponses, MountVolumeData, MountVolumeResponses, ReorderBackupSchedulesData, ReorderBackupSchedulesResponses, RestoreSnapshotData, RestoreSnapshotResponses, RunBackupNowData, RunBackupNowResponses, RunForgetData, RunForgetResponses, StopBackupData, StopBackupErrors, StopBackupResponses, TagSnapshotsData, TagSnapshotsResponses, 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< TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, > = 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; }; /** * Get authentication system status */ export const getStatus = ( options?: Options, ) => (options?.client ?? client).get({ url: "/api/v1/auth/status", ...options, }); /** * 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< CreateVolumeResponses, unknown, ThrowOnError >({ 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< TestConnectionResponses, unknown, ThrowOnError >({ 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< DeleteVolumeResponses, unknown, ThrowOnError >({ url: "/api/v1/volumes/{name}", ...options }); /** * Get a volume by name */ export const getVolume = ( options: Options, ) => (options.client ?? client).get< GetVolumeResponses, GetVolumeErrors, ThrowOnError >({ url: "/api/v1/volumes/{name}", ...options }); /** * Update a volume's configuration */ export const updateVolume = ( options: Options, ) => (options.client ?? client).put< UpdateVolumeResponses, UpdateVolumeErrors, ThrowOnError >({ url: "/api/v1/volumes/{name}", ...options, headers: { "Content-Type": "application/json", ...options.headers, }, }); /** * 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< UnmountVolumeResponses, unknown, ThrowOnError >({ url: "/api/v1/volumes/{name}/unmount", ...options }); /** * Perform a health check on a volume */ export const healthCheckVolume = ( options: Options, ) => (options.client ?? client).post< HealthCheckVolumeResponses, HealthCheckVolumeErrors, ThrowOnError >({ 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< BrowseFilesystemResponses, unknown, ThrowOnError >({ url: "/api/v1/volumes/filesystem/browse", ...options }); /** * List all repositories */ export const listRepositories = ( options?: Options, ) => (options?.client ?? client).get< ListRepositoriesResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories", ...options }); /** * Create a new restic repository */ export const createRepository = ( options?: Options, ) => (options?.client ?? client).post< CreateRepositoryResponses, unknown, ThrowOnError >({ 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< ListRcloneRemotesResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/rclone-remotes", ...options }); /** * Delete a repository */ export const deleteRepository = ( options: Options, ) => (options.client ?? client).delete< DeleteRepositoryResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}", ...options }); /** * Get a single repository by ID */ export const getRepository = ( options: Options, ) => (options.client ?? client).get( { url: "/api/v1/repositories/{id}", ...options }, ); /** * Update a repository's name or settings */ export const updateRepository = ( options: Options, ) => (options.client ?? client).patch< UpdateRepositoryResponses, UpdateRepositoryErrors, ThrowOnError >({ url: "/api/v1/repositories/{id}", ...options, headers: { "Content-Type": "application/json", ...options.headers, }, }); /** * Delete multiple snapshots from a repository */ export const deleteSnapshots = ( options: Options, ) => (options.client ?? client).delete< DeleteSnapshotsResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/snapshots", ...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/{id}/snapshots", ...options }, ); /** * Delete a specific snapshot from a repository */ export const deleteSnapshot = ( options: Options, ) => (options.client ?? client).delete< DeleteSnapshotResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/snapshots/{snapshotId}", ...options }); /** * Get details of a specific snapshot */ export const getSnapshotDetails = ( options: Options, ) => (options.client ?? client).get< GetSnapshotDetailsResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/snapshots/{snapshotId}", ...options }); /** * List files and directories in a snapshot */ export const listSnapshotFiles = ( options: Options, ) => (options.client ?? client).get< ListSnapshotFilesResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/snapshots/{snapshotId}/files", ...options, }); /** * Restore a snapshot to a target path on the filesystem */ export const restoreSnapshot = ( options: Options, ) => (options.client ?? client).post< RestoreSnapshotResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/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< DoctorRepositoryResponses, unknown, ThrowOnError >({ url: "/api/v1/repositories/{id}/doctor", ...options }); /** * Tag multiple snapshots in a repository */ export const tagSnapshots = ( options: Options, ) => (options.client ?? client).post( { url: "/api/v1/repositories/{id}/snapshots/tag", ...options, headers: { "Content-Type": "application/json", ...options.headers, }, }, ); /** * List all backup schedules */ export const listBackupSchedules = ( options?: Options, ) => (options?.client ?? client).get< ListBackupSchedulesResponses, unknown, ThrowOnError >({ url: "/api/v1/backups", ...options }); /** * Create a new backup schedule for a volume */ export const createBackupSchedule = ( options?: Options, ) => (options?.client ?? client).post< CreateBackupScheduleResponses, unknown, ThrowOnError >({ 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< DeleteBackupScheduleResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}", ...options }); /** * Get a backup schedule by ID */ export const getBackupSchedule = ( options: Options, ) => (options.client ?? client).get< GetBackupScheduleResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}", ...options }); /** * Update a backup schedule */ export const updateBackupSchedule = ( options: Options, ) => (options.client ?? client).patch< UpdateBackupScheduleResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}", ...options, headers: { "Content-Type": "application/json", ...options.headers, }, }); /** * Get a backup schedule for a specific volume */ export const getBackupScheduleForVolume = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).get< GetBackupScheduleForVolumeResponses, unknown, ThrowOnError >({ 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< StopBackupResponses, StopBackupErrors, ThrowOnError >({ 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< GetScheduleNotificationsResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}/notifications", ...options }); /** * Update notification assignments for a backup schedule */ export const updateScheduleNotifications = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).put< UpdateScheduleNotificationsResponses, unknown, ThrowOnError >({ 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< GetScheduleMirrorsResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}/mirrors", ...options }); /** * Update mirror repository assignments for a backup schedule */ export const updateScheduleMirrors = ( options: Options, ) => (options.client ?? client).put< UpdateScheduleMirrorsResponses, unknown, ThrowOnError >({ 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< GetMirrorCompatibilityResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/{scheduleId}/mirrors/compatibility", ...options }); /** * Reorder backup schedules by providing an array of schedule IDs in the desired order */ export const reorderBackupSchedules = ( options?: Options, ) => (options?.client ?? client).post< ReorderBackupSchedulesResponses, unknown, ThrowOnError >({ url: "/api/v1/backups/reorder", ...options, headers: { "Content-Type": "application/json", ...options?.headers, }, }); /** * List all notification destinations */ export const listNotificationDestinations = < ThrowOnError extends boolean = false, >( options?: Options, ) => (options?.client ?? client).get< ListNotificationDestinationsResponses, unknown, ThrowOnError >({ url: "/api/v1/notifications/destinations", ...options }); /** * Create a new notification destination */ export const createNotificationDestination = < ThrowOnError extends boolean = false, >( options?: Options, ) => (options?.client ?? client).post< CreateNotificationDestinationResponses, unknown, ThrowOnError >({ url: "/api/v1/notifications/destinations", ...options, headers: { "Content-Type": "application/json", ...options?.headers, }, }); /** * Delete a notification destination */ export const deleteNotificationDestination = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).delete< DeleteNotificationDestinationResponses, DeleteNotificationDestinationErrors, ThrowOnError >({ url: "/api/v1/notifications/destinations/{id}", ...options }); /** * Get a notification destination by ID */ export const getNotificationDestination = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).get< GetNotificationDestinationResponses, GetNotificationDestinationErrors, ThrowOnError >({ url: "/api/v1/notifications/destinations/{id}", ...options }); /** * Update a notification destination */ export const updateNotificationDestination = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).patch< UpdateNotificationDestinationResponses, UpdateNotificationDestinationErrors, ThrowOnError >({ 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 = < ThrowOnError extends boolean = false, >( options: Options, ) => (options.client ?? client).post< TestNotificationDestinationResponses, TestNotificationDestinationErrors, ThrowOnError >({ url: "/api/v1/notifications/destinations/{id}/test", ...options }); /** * Get system information including available capabilities */ export const getSystemInfo = ( options?: Options, ) => (options?.client ?? client).get< GetSystemInfoResponses, unknown, ThrowOnError >({ url: "/api/v1/system/info", ...options }); /** * Check for application updates from GitHub */ export const getUpdates = ( options?: Options, ) => (options?.client ?? client).get({ url: "/api/v1/system/updates", ...options, }); /** * Download the Restic password file for backup recovery. Requires password re-authentication. */ export const downloadResticPassword = ( options?: Options, ) => (options?.client ?? client).post< DownloadResticPasswordResponses, unknown, ThrowOnError >({ url: "/api/v1/system/restic-password", ...options, headers: { "Content-Type": "application/json", ...options?.headers, }, });