// @ts-nocheck // This file is auto-generated by @hey-api/openapi-ts import { type DefaultError, type InfiniteData, infiniteQueryOptions, queryOptions, type UseMutationOptions } from '@tanstack/react-query'; import { client } from '../client.gen'; import { browseFilesystem, cancelDoctor, createBackupSchedule, createNotificationDestination, createRepository, createVolume, deleteBackupSchedule, deleteNotificationDestination, deleteRepository, deleteSnapshot, deleteSnapshots, deleteSsoInvitation, deleteSsoProvider, deleteUserAccount, deleteVolume, downloadResticPassword, dumpSnapshot, getAdminUsers, getBackupProgress, getBackupSchedule, getBackupScheduleForVolume, getDevPanel, getMirrorCompatibility, getNotificationDestination, getOrgMembers, getPublicSsoProviders, getRegistrationStatus, getRepository, getRepositoryStats, getScheduleMirrors, getScheduleNotifications, getSnapshotDetails, getSsoSettings, getStatus, getSystemInfo, getUpdates, getUserDeletionImpact, getVolume, healthCheckVolume, listBackupSchedules, listFiles, listNotificationDestinations, listRcloneRemotes, listRepositories, listSnapshotFiles, listSnapshots, listVolumes, mountVolume, type Options, refreshRepositoryStats, refreshSnapshots, removeOrgMember, reorderBackupSchedules, restoreSnapshot, runBackupNow, runForget, setRegistrationStatus, startDoctor, stopBackup, tagSnapshots, testConnection, testNotificationDestination, unlockRepository, unmountVolume, updateBackupSchedule, updateMemberRole, updateNotificationDestination, updateRepository, updateScheduleMirrors, updateScheduleNotifications, updateSsoProviderAutoLinking, updateVolume } from '../sdk.gen'; import type { BrowseFilesystemData, BrowseFilesystemResponse, CancelDoctorData, CancelDoctorResponse, CreateBackupScheduleData, CreateBackupScheduleResponse, CreateNotificationDestinationData, CreateNotificationDestinationResponse, CreateRepositoryData, CreateRepositoryResponse, CreateVolumeData, CreateVolumeResponse, DeleteBackupScheduleData, DeleteBackupScheduleResponse, DeleteNotificationDestinationData, DeleteNotificationDestinationResponse, DeleteRepositoryData, DeleteRepositoryResponse, DeleteSnapshotData, DeleteSnapshotResponse, DeleteSnapshotsData, DeleteSnapshotsResponse, DeleteSsoInvitationData, DeleteSsoProviderData, DeleteUserAccountData, DeleteVolumeData, DeleteVolumeResponse, DownloadResticPasswordData, DownloadResticPasswordResponse, DumpSnapshotData, DumpSnapshotResponse, GetAdminUsersData, GetAdminUsersResponse, GetBackupProgressData, GetBackupProgressResponse, GetBackupScheduleData, GetBackupScheduleForVolumeData, GetBackupScheduleForVolumeResponse, GetBackupScheduleResponse, GetDevPanelData, GetDevPanelResponse, GetMirrorCompatibilityData, GetMirrorCompatibilityResponse, GetNotificationDestinationData, GetNotificationDestinationResponse, GetOrgMembersData, GetOrgMembersResponse, GetPublicSsoProvidersData, GetPublicSsoProvidersResponse, GetRegistrationStatusData, GetRegistrationStatusResponse, GetRepositoryData, GetRepositoryResponse, GetRepositoryStatsData, GetRepositoryStatsResponse, GetScheduleMirrorsData, GetScheduleMirrorsResponse, GetScheduleNotificationsData, GetScheduleNotificationsResponse, GetSnapshotDetailsData, GetSnapshotDetailsResponse, GetSsoSettingsData, GetSsoSettingsResponse, GetStatusData, GetStatusResponse, GetSystemInfoData, GetSystemInfoResponse, GetUpdatesData, GetUpdatesResponse, GetUserDeletionImpactData, GetUserDeletionImpactResponse, GetVolumeData, GetVolumeResponse, HealthCheckVolumeData, HealthCheckVolumeResponse, ListBackupSchedulesData, ListBackupSchedulesResponse, ListFilesData, ListFilesResponse, ListNotificationDestinationsData, ListNotificationDestinationsResponse, ListRcloneRemotesData, ListRcloneRemotesResponse, ListRepositoriesData, ListRepositoriesResponse, ListSnapshotFilesData, ListSnapshotFilesResponse, ListSnapshotsData, ListSnapshotsResponse, ListVolumesData, ListVolumesResponse, MountVolumeData, MountVolumeResponse, RefreshRepositoryStatsData, RefreshRepositoryStatsResponse, RefreshSnapshotsData, RefreshSnapshotsResponse, RemoveOrgMemberData, ReorderBackupSchedulesData, ReorderBackupSchedulesResponse, RestoreSnapshotData, RestoreSnapshotResponse, RunBackupNowData, RunBackupNowResponse, RunForgetData, RunForgetResponse, SetRegistrationStatusData, SetRegistrationStatusResponse, StartDoctorData, StartDoctorResponse, StopBackupData, StopBackupResponse, TagSnapshotsData, TagSnapshotsResponse, TestConnectionData, TestConnectionResponse, TestNotificationDestinationData, TestNotificationDestinationResponse, UnlockRepositoryData, UnlockRepositoryResponse, UnmountVolumeData, UnmountVolumeResponse, UpdateBackupScheduleData, UpdateBackupScheduleResponse, UpdateMemberRoleData, UpdateNotificationDestinationData, UpdateNotificationDestinationResponse, UpdateRepositoryData, UpdateRepositoryResponse, UpdateScheduleMirrorsData, UpdateScheduleMirrorsResponse, UpdateScheduleNotificationsData, UpdateScheduleNotificationsResponse, UpdateSsoProviderAutoLinkingData, UpdateVolumeData, UpdateVolumeResponse } from '../types.gen'; export type QueryKey = [ Pick & { _id: string; _infinite?: boolean; tags?: ReadonlyArray; } ]; const createQueryKey = (id: string, options?: TOptions, infinite?: boolean, tags?: ReadonlyArray): [ QueryKey[0] ] => { const params: QueryKey[0] = { _id: id, baseUrl: options?.baseUrl || (options?.client ?? client).getConfig().baseUrl } as QueryKey[0]; if (infinite) { params._infinite = infinite; } if (tags) { params.tags = tags; } if (options?.body) { params.body = options.body; } if (options?.headers) { params.headers = options.headers; } if (options?.path) { params.path = options.path; } if (options?.query) { params.query = options.query; } return [params]; }; export const getStatusQueryKey = (options?: Options) => createQueryKey('getStatus', options); /** * Get authentication system status */ export const getStatusOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getStatus({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getStatusQueryKey(options) }); export const getAdminUsersQueryKey = (options?: Options) => createQueryKey('getAdminUsers', options); /** * List admin users for settings management */ export const getAdminUsersOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getAdminUsers({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getAdminUsersQueryKey(options) }); /** * Delete an account linked to a user */ export const deleteUserAccountMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteUserAccount({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getUserDeletionImpactQueryKey = (options: Options) => createQueryKey('getUserDeletionImpact', options); /** * Get impact of deleting a user */ export const getUserDeletionImpactOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getUserDeletionImpact({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getUserDeletionImpactQueryKey(options) }); export const getOrgMembersQueryKey = (options?: Options) => createQueryKey('getOrgMembers', options); /** * Get members of the active organization */ export const getOrgMembersOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getOrgMembers({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getOrgMembersQueryKey(options) }); /** * Update a member's role in the active organization */ export const updateMemberRoleMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateMemberRole({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Remove a member from the active organization */ export const removeOrgMemberMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await removeOrgMember({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getPublicSsoProvidersQueryKey = (options?: Options) => createQueryKey('getPublicSsoProviders', options); /** * Get public SSO providers for the instance */ export const getPublicSsoProvidersOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getPublicSsoProviders({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getPublicSsoProvidersQueryKey(options) }); export const getSsoSettingsQueryKey = (options?: Options) => createQueryKey('getSsoSettings', options); /** * Get SSO providers and invitations for the active organization */ export const getSsoSettingsOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getSsoSettings({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getSsoSettingsQueryKey(options) }); /** * Delete an SSO provider */ export const deleteSsoProviderMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteSsoProvider({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Update whether SSO sign-in can auto-link existing accounts by email */ export const updateSsoProviderAutoLinkingMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateSsoProviderAutoLinking({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete an SSO invitation */ export const deleteSsoInvitationMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteSsoInvitation({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const listVolumesQueryKey = (options?: Options) => createQueryKey('listVolumes', options); /** * List all volumes */ export const listVolumesOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listVolumes({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listVolumesQueryKey(options) }); /** * Create a new volume */ export const createVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await createVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Test connection to backend */ export const testConnectionMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await testConnection({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete a volume */ export const deleteVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getVolumeQueryKey = (options: Options) => createQueryKey('getVolume', options); /** * Get a volume by name */ export const getVolumeOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getVolume({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getVolumeQueryKey(options) }); /** * Update a volume's configuration */ export const updateVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Mount a volume */ export const mountVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await mountVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Unmount a volume */ export const unmountVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await unmountVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Perform a health check on a volume */ export const healthCheckVolumeMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await healthCheckVolume({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const listFilesQueryKey = (options: Options) => createQueryKey('listFiles', options); /** * List files in a volume directory */ export const listFilesOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listFiles({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listFilesQueryKey(options) }); const createInfiniteParams = [0], 'body' | 'headers' | 'path' | 'query'>>(queryKey: QueryKey, page: K) => { const params = { ...queryKey[0] }; if (page.body) { params.body = { ...queryKey[0].body as any, ...page.body as any }; } if (page.headers) { params.headers = { ...queryKey[0].headers, ...page.headers }; } if (page.path) { params.path = { ...queryKey[0].path as any, ...page.path as any }; } if (page.query) { params.query = { ...queryKey[0].query as any, ...page.query as any }; } return params as unknown as typeof page; }; export const listFilesInfiniteQueryKey = (options: Options): QueryKey> => createQueryKey('listFiles', options, true); /** * List files in a volume directory */ export const listFilesInfiniteOptions = (options: Options) => infiniteQueryOptions, QueryKey>, string | Pick>[0], 'body' | 'headers' | 'path' | 'query'>>( // @ts-ignore { queryFn: async ({ pageParam, queryKey, signal }) => { // @ts-ignore const page: Pick>[0], 'body' | 'headers' | 'path' | 'query'> = typeof pageParam === 'object' ? pageParam : { query: { offset: pageParam } }; const params = createInfiniteParams(queryKey, page); const { data } = await listFiles({ ...options, ...params, signal, throwOnError: true }); return data; }, queryKey: listFilesInfiniteQueryKey(options) }); export const browseFilesystemQueryKey = (options?: Options) => createQueryKey('browseFilesystem', options); /** * Browse directories on the host filesystem */ export const browseFilesystemOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await browseFilesystem({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: browseFilesystemQueryKey(options) }); export const listRepositoriesQueryKey = (options?: Options) => createQueryKey('listRepositories', options); /** * List all repositories */ export const listRepositoriesOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listRepositories({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listRepositoriesQueryKey(options) }); /** * Create a new restic repository */ export const createRepositoryMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await createRepository({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const listRcloneRemotesQueryKey = (options?: Options) => createQueryKey('listRcloneRemotes', options); /** * List all configured rclone remotes on the host system */ export const listRcloneRemotesOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listRcloneRemotes({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listRcloneRemotesQueryKey(options) }); /** * Delete a repository */ export const deleteRepositoryMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteRepository({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getRepositoryQueryKey = (options: Options) => createQueryKey('getRepository', options); /** * Get a single repository by ID */ export const getRepositoryOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getRepository({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getRepositoryQueryKey(options) }); /** * Update a repository's name or settings */ export const updateRepositoryMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateRepository({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getRepositoryStatsQueryKey = (options: Options) => createQueryKey('getRepositoryStats', options); /** * Get repository storage and compression statistics */ export const getRepositoryStatsOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getRepositoryStats({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getRepositoryStatsQueryKey(options) }); /** * Refresh repository storage and compression statistics */ export const refreshRepositoryStatsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await refreshRepositoryStats({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete multiple snapshots from a repository */ export const deleteSnapshotsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteSnapshots({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const listSnapshotsQueryKey = (options: Options) => createQueryKey('listSnapshots', options); /** * List all snapshots in a repository */ export const listSnapshotsOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listSnapshots({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listSnapshotsQueryKey(options) }); /** * Clear snapshot cache and force refresh from repository */ export const refreshSnapshotsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await refreshSnapshots({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete a specific snapshot from a repository */ export const deleteSnapshotMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteSnapshot({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getSnapshotDetailsQueryKey = (options: Options) => createQueryKey('getSnapshotDetails', options); /** * Get details of a specific snapshot */ export const getSnapshotDetailsOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getSnapshotDetails({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getSnapshotDetailsQueryKey(options) }); export const listSnapshotFilesQueryKey = (options: Options) => createQueryKey('listSnapshotFiles', options); /** * List files and directories in a snapshot */ export const listSnapshotFilesOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listSnapshotFiles({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listSnapshotFilesQueryKey(options) }); export const listSnapshotFilesInfiniteQueryKey = (options: Options): QueryKey> => createQueryKey('listSnapshotFiles', options, true); /** * List files and directories in a snapshot */ export const listSnapshotFilesInfiniteOptions = (options: Options) => infiniteQueryOptions, QueryKey>, string | Pick>[0], 'body' | 'headers' | 'path' | 'query'>>( // @ts-ignore { queryFn: async ({ pageParam, queryKey, signal }) => { // @ts-ignore const page: Pick>[0], 'body' | 'headers' | 'path' | 'query'> = typeof pageParam === 'object' ? pageParam : { query: { offset: pageParam } }; const params = createInfiniteParams(queryKey, page); const { data } = await listSnapshotFiles({ ...options, ...params, signal, throwOnError: true }); return data; }, queryKey: listSnapshotFilesInfiniteQueryKey(options) }); export const dumpSnapshotQueryKey = (options: Options) => createQueryKey('dumpSnapshot', options); /** * Download a snapshot path as a tar archive (folders) or raw file stream (single files) */ export const dumpSnapshotOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await dumpSnapshot({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: dumpSnapshotQueryKey(options) }); /** * Restore a snapshot to a target path on the filesystem */ export const restoreSnapshotMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await restoreSnapshot({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Cancel a running doctor operation on a repository */ export const cancelDoctorMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await cancelDoctor({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Start an asynchronous doctor operation on a repository to fix common issues (unlock, check, repair index). The operation runs in the background and sends results via SSE events. */ export const startDoctorMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await startDoctor({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Unlock a repository by removing all stale locks */ export const unlockRepositoryMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await unlockRepository({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Tag multiple snapshots in a repository */ export const tagSnapshotsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await tagSnapshots({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const listBackupSchedulesQueryKey = (options?: Options) => createQueryKey('listBackupSchedules', options); /** * List all backup schedules */ export const listBackupSchedulesOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listBackupSchedules({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listBackupSchedulesQueryKey(options) }); /** * Create a new backup schedule for a volume */ export const createBackupScheduleMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await createBackupSchedule({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete a backup schedule */ export const deleteBackupScheduleMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteBackupSchedule({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getBackupScheduleQueryKey = (options: Options) => createQueryKey('getBackupSchedule', options); /** * Get a backup schedule by ID */ export const getBackupScheduleOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getBackupSchedule({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getBackupScheduleQueryKey(options) }); /** * Update a backup schedule */ export const updateBackupScheduleMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateBackupSchedule({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getBackupScheduleForVolumeQueryKey = (options: Options) => createQueryKey('getBackupScheduleForVolume', options); /** * Get a backup schedule for a specific volume */ export const getBackupScheduleForVolumeOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getBackupScheduleForVolume({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getBackupScheduleForVolumeQueryKey(options) }); /** * Trigger a backup immediately for a schedule */ export const runBackupNowMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await runBackupNow({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Stop a backup that is currently in progress */ export const stopBackupMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await stopBackup({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Manually apply retention policy to clean up old snapshots */ export const runForgetMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await runForget({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getScheduleNotificationsQueryKey = (options: Options) => createQueryKey('getScheduleNotifications', options); /** * Get notification assignments for a backup schedule */ export const getScheduleNotificationsOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getScheduleNotifications({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getScheduleNotificationsQueryKey(options) }); /** * Update notification assignments for a backup schedule */ export const updateScheduleNotificationsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateScheduleNotifications({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getScheduleMirrorsQueryKey = (options: Options) => createQueryKey('getScheduleMirrors', options); /** * Get mirror repository assignments for a backup schedule */ export const getScheduleMirrorsOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getScheduleMirrors({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getScheduleMirrorsQueryKey(options) }); /** * Update mirror repository assignments for a backup schedule */ export const updateScheduleMirrorsMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateScheduleMirrors({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getMirrorCompatibilityQueryKey = (options: Options) => createQueryKey('getMirrorCompatibility', options); /** * Get mirror compatibility info for all repositories relative to a backup schedule's primary repository */ export const getMirrorCompatibilityOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getMirrorCompatibility({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getMirrorCompatibilityQueryKey(options) }); /** * Reorder backup schedules by providing an array of schedule short IDs in the desired order */ export const reorderBackupSchedulesMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await reorderBackupSchedules({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getBackupProgressQueryKey = (options: Options) => createQueryKey('getBackupProgress', options); /** * Get the last known progress for a currently running backup. Returns null if no progress has been reported yet. */ export const getBackupProgressOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getBackupProgress({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getBackupProgressQueryKey(options) }); export const listNotificationDestinationsQueryKey = (options?: Options) => createQueryKey('listNotificationDestinations', options); /** * List all notification destinations */ export const listNotificationDestinationsOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await listNotificationDestinations({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: listNotificationDestinationsQueryKey(options) }); /** * Create a new notification destination */ export const createNotificationDestinationMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await createNotificationDestination({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Delete a notification destination */ export const deleteNotificationDestinationMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await deleteNotificationDestination({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getNotificationDestinationQueryKey = (options: Options) => createQueryKey('getNotificationDestination', options); /** * Get a notification destination by ID */ export const getNotificationDestinationOptions = (options: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getNotificationDestination({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getNotificationDestinationQueryKey(options) }); /** * Update a notification destination */ export const updateNotificationDestinationMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await updateNotificationDestination({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Test a notification destination by sending a test message */ export const testNotificationDestinationMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await testNotificationDestination({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getSystemInfoQueryKey = (options?: Options) => createQueryKey('getSystemInfo', options); /** * Get system information including available capabilities */ export const getSystemInfoOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getSystemInfo({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getSystemInfoQueryKey(options) }); export const getUpdatesQueryKey = (options?: Options) => createQueryKey('getUpdates', options); /** * Check for application updates from GitHub */ export const getUpdatesOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getUpdates({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getUpdatesQueryKey(options) }); export const getRegistrationStatusQueryKey = (options?: Options) => createQueryKey('getRegistrationStatus', options); /** * Get the current registration status for new users */ export const getRegistrationStatusOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getRegistrationStatus({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getRegistrationStatusQueryKey(options) }); /** * Update the registration status for new users. Requires global admin role. */ export const setRegistrationStatusMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await setRegistrationStatus({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; /** * Download the organization's Restic password for backup recovery. Requires organization owner or admin role and password re-authentication. */ export const downloadResticPasswordMutation = (options?: Partial>): UseMutationOptions> => { const mutationOptions: UseMutationOptions> = { mutationFn: async (fnOptions) => { const { data } = await downloadResticPassword({ ...options, ...fnOptions, throwOnError: true }); return data; } }; return mutationOptions; }; export const getDevPanelQueryKey = (options?: Options) => createQueryKey('getDevPanel', options); /** * Get the dev panel status */ export const getDevPanelOptions = (options?: Options) => queryOptions>({ queryFn: async ({ queryKey, signal }) => { const { data } = await getDevPanel({ ...options, ...queryKey[0], signal, throwOnError: true }); return data; }, queryKey: getDevPanelQueryKey(options) });