/** * Generated by orval v8.23.0 🍺 * Do not edit manually. * Api * ToolRate API — Tool listing and rating platform * OpenAPI spec version: 0.1.0 */ import { useMutation, useQuery } from '@tanstack/react-query'; import type { MutationFunction, QueryFunction, QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; import type { AnalyticsSummary, AuditLog, AuthMode, AuthUser, CategoryStats, ChangePasswordInput, CsrfToken, EmptyTrash200, ErrorResponse, GetRatingDistributionParams, GetTopToolsParams, HealthStatus, ListAuditLogsParams, ListCompareToolsParams, ListToolsParams, ListTrashedToolsParams, LocalLoginInput, PasswordRedirect, Rating, RatingDistribution, RatingHistoryItem, RatingInput, RestoreTools200, SetPasswordInput, Tool, ToolInput, ToolUpdate, ToolWithStats, TopToolEntry, TrashTools200, TrashToolsInput, User, UserCreateInput, UserPreferences, UserRoleUpdate, VersionInfo } from './api.schemas'; import { customFetch } from '../custom-fetch'; import type { ErrorType , BodyType } from '../custom-fetch'; type AwaitedInput = PromiseLike | T; type Awaited = O extends AwaitedInput ? T : never; type SecondParameter unknown> = Parameters[1]; const withQueryKey = (query: T, queryKey: K): T & { queryKey: K } => { const result = { queryKey } as T & { queryKey: K }; for (const key of Object.keys(query)) { // The explicit queryKey always wins, matching the previous // `{ ...query, queryKey }` spread where it was set last. if (key === 'queryKey') continue; Object.defineProperty(result, key, { enumerable: true, configurable: true, get: () => (query as Record)[key], }); } return result; }; export const getHealthCheckUrl = () => { return `/api/healthz` } /** * Returns server health status * @summary Health check */ export const healthCheck = async ( options?: Parameters[1]): Promise => { return customFetch(getHealthCheckUrl(), { ...options, method: 'GET' } );} export const getHealthCheckQueryKey = () => { return [ `/api/healthz` ] as const; } export const getHealthCheckQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getHealthCheckQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => healthCheck({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type HealthCheckQueryResult = NonNullable>> export type HealthCheckQueryError = ErrorType /** * @summary Health check */ export function useHealthCheck>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getHealthCheckQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetVersionUrl = () => { return `/api/version` } /** * Returns the running build version, commit SHA and build date * @summary Build version information */ export const getVersion = async ( options?: Parameters[1]): Promise => { return customFetch(getGetVersionUrl(), { ...options, method: 'GET' } );} export const getGetVersionQueryKey = () => { return [ `/api/version` ] as const; } export const getGetVersionQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetVersionQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getVersion({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetVersionQueryResult = NonNullable>> export type GetVersionQueryError = ErrorType /** * @summary Build version information */ export function useGetVersion>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetVersionQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getListToolsUrl = (params?: ListToolsParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/tools?${stringifiedParams}` : `/api/tools` } /** * @summary List all tools */ export const listTools = async (params?: ListToolsParams, options?: Parameters[1]): Promise => { return customFetch(getListToolsUrl(params), { ...options, method: 'GET' } );} export const getListToolsQueryKey = (params?: ListToolsParams,) => { return [ `/api/tools`, ...(params ? [params] : []) ] as const; } export const getListToolsQueryOptions = >, TError = ErrorType>(params?: ListToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListToolsQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => listTools(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListToolsQueryResult = NonNullable>> export type ListToolsQueryError = ErrorType /** * @summary List all tools */ export function useListTools>, TError = ErrorType>( params?: ListToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListToolsQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getCreateToolUrl = () => { return `/api/tools` } /** * @summary Create a new tool */ export const createTool = async (toolInput: ToolInput, options?: Parameters[1]): Promise => { return customFetch(getCreateToolUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(toolInput) } );} export const getCreateToolMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['createTool']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return createTool(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type CreateToolMutationResult = NonNullable>> export type CreateToolMutationBody = BodyType export type CreateToolMutationError = ErrorType /** * @summary Create a new tool */ export const useCreateTool = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getCreateToolMutationOptions(options)); } export const getListCompareToolsUrl = (params: ListCompareToolsParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/compare?${stringifiedParams}` : `/api/compare` } /** * @summary Compare tools side by side (premium) */ export const listCompareTools = async (params: ListCompareToolsParams, options?: Parameters[1]): Promise => { return customFetch(getListCompareToolsUrl(params), { ...options, method: 'GET' } );} export const getListCompareToolsQueryKey = (params?: ListCompareToolsParams,) => { return [ `/api/compare`, ...(params ? [params] : []) ] as const; } export const getListCompareToolsQueryOptions = >, TError = ErrorType>(params: ListCompareToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListCompareToolsQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => listCompareTools(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListCompareToolsQueryResult = NonNullable>> export type ListCompareToolsQueryError = ErrorType /** * @summary Compare tools side by side (premium) */ export function useListCompareTools>, TError = ErrorType>( params: ListCompareToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListCompareToolsQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetToolRatingHistoryUrl = (id: number,) => { return `/api/tools/${id}/rating-history` } /** * @summary Get a tool's rating history over time */ export const getToolRatingHistory = async (id: number, options?: Parameters[1]): Promise => { return customFetch(getGetToolRatingHistoryUrl(id), { ...options, method: 'GET' } );} export const getGetToolRatingHistoryQueryKey = (id: number,) => { return [ `/api/tools/${id}/rating-history` ] as const; } export const getGetToolRatingHistoryQueryOptions = >, TError = ErrorType>(id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetToolRatingHistoryQueryKey(id); const queryFn: QueryFunction>> = ({ signal }) => getToolRatingHistory(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: id !== null && id !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetToolRatingHistoryQueryResult = NonNullable>> export type GetToolRatingHistoryQueryError = ErrorType /** * @summary Get a tool's rating history over time */ export function useGetToolRatingHistory>, TError = ErrorType>( id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetToolRatingHistoryQueryOptions(id,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetToolUrl = (id: number,) => { return `/api/tools/${id}` } /** * @summary Get a tool by ID */ export const getTool = async (id: number, options?: Parameters[1]): Promise => { return customFetch(getGetToolUrl(id), { ...options, method: 'GET' } );} export const getGetToolQueryKey = (id: number,) => { return [ `/api/tools/${id}` ] as const; } export const getGetToolQueryOptions = >, TError = ErrorType>(id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetToolQueryKey(id); const queryFn: QueryFunction>> = ({ signal }) => getTool(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: id !== null && id !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetToolQueryResult = NonNullable>> export type GetToolQueryError = ErrorType /** * @summary Get a tool by ID */ export function useGetTool>, TError = ErrorType>( id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetToolQueryOptions(id,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getUpdateToolUrl = (id: number,) => { return `/api/tools/${id}` } /** * @summary Update a tool */ export const updateTool = async (id: number, toolUpdate: ToolUpdate, options?: Parameters[1]): Promise => { return customFetch(getUpdateToolUrl(id), { ...options, method: 'PATCH', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(toolUpdate) } );} export const getUpdateToolMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number;data: BodyType}, TContext> => { const mutationKey = ['updateTool']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number;data: BodyType}> = (props) => { const {id,data} = props ?? {}; return updateTool(id,data,requestOptions) } return { mutationFn, ...mutationOptions }} export type UpdateToolMutationResult = NonNullable>> export type UpdateToolMutationBody = BodyType export type UpdateToolMutationError = ErrorType /** * @summary Update a tool */ export const useUpdateTool = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number;data: BodyType}, TContext > => { return useMutation(getUpdateToolMutationOptions(options)); } export const getDeleteToolUrl = (id: number,) => { return `/api/tools/${id}` } /** * @summary Delete a tool */ export const deleteTool = async (id: number, options?: Parameters[1]): Promise => { return customFetch(getDeleteToolUrl(id), { ...options, method: 'DELETE' } );} export const getDeleteToolMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number}, TContext> => { const mutationKey = ['deleteTool']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number}> = (props) => { const {id} = props ?? {}; return deleteTool(id,requestOptions) } return { mutationFn, ...mutationOptions }} export type DeleteToolMutationResult = NonNullable>> export type DeleteToolMutationError = ErrorType /** * @summary Delete a tool */ export const useDeleteTool = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number}, TContext > => { return useMutation(getDeleteToolMutationOptions(options)); } export const getListTrashedToolsUrl = (params?: ListTrashedToolsParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/tools/trash?${stringifiedParams}` : `/api/tools/trash` } /** * @summary List trashed (soft-deleted) tools */ export const listTrashedTools = async (params?: ListTrashedToolsParams, options?: Parameters[1]): Promise => { return customFetch(getListTrashedToolsUrl(params), { ...options, method: 'GET' } );} export const getListTrashedToolsQueryKey = (params?: ListTrashedToolsParams,) => { return [ `/api/tools/trash`, ...(params ? [params] : []) ] as const; } export const getListTrashedToolsQueryOptions = >, TError = ErrorType>(params?: ListTrashedToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListTrashedToolsQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => listTrashedTools(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListTrashedToolsQueryResult = NonNullable>> export type ListTrashedToolsQueryError = ErrorType /** * @summary List trashed (soft-deleted) tools */ export function useListTrashedTools>, TError = ErrorType>( params?: ListTrashedToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListTrashedToolsQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getTrashToolsUrl = () => { return `/api/tools/trash` } /** * @summary Move tools to trash (admin) */ export const trashTools = async (trashToolsInput: TrashToolsInput, options?: Parameters[1]): Promise => { return customFetch(getTrashToolsUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(trashToolsInput) } );} export const getTrashToolsMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['trashTools']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return trashTools(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type TrashToolsMutationResult = NonNullable>> export type TrashToolsMutationBody = BodyType export type TrashToolsMutationError = ErrorType /** * @summary Move tools to trash (admin) */ export const useTrashTools = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getTrashToolsMutationOptions(options)); } export const getDeleteTrashedToolsUrl = () => { return `/api/tools/trash` } /** * @summary Permanently delete trashed tools (admin) */ export const deleteTrashedTools = async (trashToolsInput: TrashToolsInput, options?: Parameters[1]): Promise => { return customFetch(getDeleteTrashedToolsUrl(), { ...options, method: 'DELETE', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(trashToolsInput) } );} export const getDeleteTrashedToolsMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['deleteTrashedTools']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return deleteTrashedTools(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type DeleteTrashedToolsMutationResult = NonNullable>> export type DeleteTrashedToolsMutationBody = BodyType export type DeleteTrashedToolsMutationError = ErrorType /** * @summary Permanently delete trashed tools (admin) */ export const useDeleteTrashedTools = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getDeleteTrashedToolsMutationOptions(options)); } export const getRestoreToolsUrl = () => { return `/api/tools/trash/restore` } /** * @summary Restore trashed tools */ export const restoreTools = async (trashToolsInput: TrashToolsInput, options?: Parameters[1]): Promise => { return customFetch(getRestoreToolsUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(trashToolsInput) } );} export const getRestoreToolsMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['restoreTools']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return restoreTools(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type RestoreToolsMutationResult = NonNullable>> export type RestoreToolsMutationBody = BodyType export type RestoreToolsMutationError = ErrorType /** * @summary Restore trashed tools */ export const useRestoreTools = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getRestoreToolsMutationOptions(options)); } export const getEmptyTrashUrl = () => { return `/api/tools/trash/empty` } /** * @summary Permanently delete all trashed tools (admin) */ export const emptyTrash = async ( options?: Parameters[1]): Promise => { return customFetch(getEmptyTrashUrl(), { ...options, method: 'POST' } );} export const getEmptyTrashMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,void, TContext> => { const mutationKey = ['emptyTrash']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, void> = () => { return emptyTrash(requestOptions) } return { mutationFn, ...mutationOptions }} export type EmptyTrashMutationResult = NonNullable>> export type EmptyTrashMutationError = ErrorType /** * @summary Permanently delete all trashed tools (admin) */ export const useEmptyTrash = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, void, TContext > => { return useMutation(getEmptyTrashMutationOptions(options)); } export const getListToolRatingsUrl = (id: number,) => { return `/api/tools/${id}/ratings` } /** * @summary List ratings for a tool */ export const listToolRatings = async (id: number, options?: Parameters[1]): Promise => { return customFetch(getListToolRatingsUrl(id), { ...options, method: 'GET' } );} export const getListToolRatingsQueryKey = (id: number,) => { return [ `/api/tools/${id}/ratings` ] as const; } export const getListToolRatingsQueryOptions = >, TError = ErrorType>(id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListToolRatingsQueryKey(id); const queryFn: QueryFunction>> = ({ signal }) => listToolRatings(id, { signal, ...requestOptions }); return { queryKey, queryFn, enabled: id !== null && id !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListToolRatingsQueryResult = NonNullable>> export type ListToolRatingsQueryError = ErrorType /** * @summary List ratings for a tool */ export function useListToolRatings>, TError = ErrorType>( id: number, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListToolRatingsQueryOptions(id,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getCreateRatingUrl = (id: number,) => { return `/api/tools/${id}/ratings` } /** * @summary Submit a rating for a tool */ export const createRating = async (id: number, ratingInput: RatingInput, options?: Parameters[1]): Promise => { return customFetch(getCreateRatingUrl(id), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(ratingInput) } );} export const getCreateRatingMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number;data: BodyType}, TContext> => { const mutationKey = ['createRating']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number;data: BodyType}> = (props) => { const {id,data} = props ?? {}; return createRating(id,data,requestOptions) } return { mutationFn, ...mutationOptions }} export type CreateRatingMutationResult = NonNullable>> export type CreateRatingMutationBody = BodyType export type CreateRatingMutationError = ErrorType /** * @summary Submit a rating for a tool */ export const useCreateRating = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number;data: BodyType}, TContext > => { return useMutation(getCreateRatingMutationOptions(options)); } export const getGetAnalyticsSummaryUrl = () => { return `/api/analytics/summary` } /** * @summary Overall platform statistics */ export const getAnalyticsSummary = async ( options?: Parameters[1]): Promise => { return customFetch(getGetAnalyticsSummaryUrl(), { ...options, method: 'GET' } );} export const getGetAnalyticsSummaryQueryKey = () => { return [ `/api/analytics/summary` ] as const; } export const getGetAnalyticsSummaryQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAnalyticsSummaryQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getAnalyticsSummary({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetAnalyticsSummaryQueryResult = NonNullable>> export type GetAnalyticsSummaryQueryError = ErrorType /** * @summary Overall platform statistics */ export function useGetAnalyticsSummary>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAnalyticsSummaryQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetTopToolsUrl = (params?: GetTopToolsParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/analytics/top-tools?${stringifiedParams}` : `/api/analytics/top-tools` } /** * @summary Top-rated tools */ export const getTopTools = async (params?: GetTopToolsParams, options?: Parameters[1]): Promise => { return customFetch(getGetTopToolsUrl(params), { ...options, method: 'GET' } );} export const getGetTopToolsQueryKey = (params?: GetTopToolsParams,) => { return [ `/api/analytics/top-tools`, ...(params ? [params] : []) ] as const; } export const getGetTopToolsQueryOptions = >, TError = ErrorType>(params?: GetTopToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetTopToolsQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => getTopTools(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetTopToolsQueryResult = NonNullable>> export type GetTopToolsQueryError = ErrorType /** * @summary Top-rated tools */ export function useGetTopTools>, TError = ErrorType>( params?: GetTopToolsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetTopToolsQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetAnalyticsByCategoryUrl = () => { return `/api/analytics/by-category` } /** * @summary Rating statistics grouped by category */ export const getAnalyticsByCategory = async ( options?: Parameters[1]): Promise => { return customFetch(getGetAnalyticsByCategoryUrl(), { ...options, method: 'GET' } );} export const getGetAnalyticsByCategoryQueryKey = () => { return [ `/api/analytics/by-category` ] as const; } export const getGetAnalyticsByCategoryQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAnalyticsByCategoryQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getAnalyticsByCategory({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetAnalyticsByCategoryQueryResult = NonNullable>> export type GetAnalyticsByCategoryQueryError = ErrorType /** * @summary Rating statistics grouped by category */ export function useGetAnalyticsByCategory>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAnalyticsByCategoryQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetRatingDistributionUrl = (params?: GetRatingDistributionParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/analytics/rating-distribution?${stringifiedParams}` : `/api/analytics/rating-distribution` } /** * @summary Distribution of rating scores across the platform */ export const getRatingDistribution = async (params?: GetRatingDistributionParams, options?: Parameters[1]): Promise => { return customFetch(getGetRatingDistributionUrl(params), { ...options, method: 'GET' } );} export const getGetRatingDistributionQueryKey = (params?: GetRatingDistributionParams,) => { return [ `/api/analytics/rating-distribution`, ...(params ? [params] : []) ] as const; } export const getGetRatingDistributionQueryOptions = >, TError = ErrorType>(params?: GetRatingDistributionParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetRatingDistributionQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => getRatingDistribution(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetRatingDistributionQueryResult = NonNullable>> export type GetRatingDistributionQueryError = ErrorType /** * @summary Distribution of rating scores across the platform */ export function useGetRatingDistribution>, TError = ErrorType>( params?: GetRatingDistributionParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetRatingDistributionQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getListCategoriesUrl = () => { return `/api/categories` } /** * @summary List all distinct tool categories */ export const listCategories = async ( options?: Parameters[1]): Promise => { return customFetch(getListCategoriesUrl(), { ...options, method: 'GET' } );} export const getListCategoriesQueryKey = () => { return [ `/api/categories` ] as const; } export const getListCategoriesQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListCategoriesQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => listCategories({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListCategoriesQueryResult = NonNullable>> export type ListCategoriesQueryError = ErrorType /** * @summary List all distinct tool categories */ export function useListCategories>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListCategoriesQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getListAllFeaturesUrl = () => { return `/api/features/all` } /** * @summary List all distinct feature strings across all tools */ export const listAllFeatures = async ( options?: Parameters[1]): Promise => { return customFetch(getListAllFeaturesUrl(), { ...options, method: 'GET' } );} export const getListAllFeaturesQueryKey = () => { return [ `/api/features/all` ] as const; } export const getListAllFeaturesQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListAllFeaturesQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => listAllFeatures({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListAllFeaturesQueryResult = NonNullable>> export type ListAllFeaturesQueryError = ErrorType /** * @summary List all distinct feature strings across all tools */ export function useListAllFeatures>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListAllFeaturesQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getListAllTagsUrl = () => { return `/api/tags/all` } /** * @summary List all distinct tag strings across all tools */ export const listAllTags = async ( options?: Parameters[1]): Promise => { return customFetch(getListAllTagsUrl(), { ...options, method: 'GET' } );} export const getListAllTagsQueryKey = () => { return [ `/api/tags/all` ] as const; } export const getListAllTagsQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListAllTagsQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => listAllTags({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListAllTagsQueryResult = NonNullable>> export type ListAllTagsQueryError = ErrorType /** * @summary List all distinct tag strings across all tools */ export function useListAllTags>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListAllTagsQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetAuthModeUrl = () => { return `/api/auth/mode` } /** * @summary Get authentication mode (oidc or local) */ export const getAuthMode = async ( options?: Parameters[1]): Promise => { return customFetch(getGetAuthModeUrl(), { ...options, method: 'GET' } );} export const getGetAuthModeQueryKey = () => { return [ `/api/auth/mode` ] as const; } export const getGetAuthModeQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetAuthModeQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getAuthMode({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetAuthModeQueryResult = NonNullable>> export type GetAuthModeQueryError = ErrorType /** * @summary Get authentication mode (oidc or local) */ export function useGetAuthMode>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetAuthModeQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetCsrfTokenUrl = () => { return `/api/auth/csrf` } /** * @summary Get a CSRF token for state-changing requests */ export const getCsrfToken = async ( options?: Parameters[1]): Promise => { return customFetch(getGetCsrfTokenUrl(), { ...options, method: 'GET' } );} export const getGetCsrfTokenQueryKey = () => { return [ `/api/auth/csrf` ] as const; } export const getGetCsrfTokenQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetCsrfTokenQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getCsrfToken({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetCsrfTokenQueryResult = NonNullable>> export type GetCsrfTokenQueryError = ErrorType /** * @summary Get a CSRF token for state-changing requests */ export function useGetCsrfToken>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetCsrfTokenQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getLocalLoginUrl = () => { return `/api/auth/login` } /** * @summary Local username/password login */ export const localLogin = async (localLoginInput: LocalLoginInput, options?: Parameters[1]): Promise => { return customFetch(getLocalLoginUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(localLoginInput) } );} export const getLocalLoginMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['localLogin']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return localLogin(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type LocalLoginMutationResult = NonNullable>> export type LocalLoginMutationBody = BodyType export type LocalLoginMutationError = ErrorType /** * @summary Local username/password login */ export const useLocalLogin = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getLocalLoginMutationOptions(options)); } export const getGetMeUrl = () => { return `/api/auth/me` } /** * @summary Get current authenticated user */ export const getMe = async ( options?: Parameters[1]): Promise => { return customFetch(getGetMeUrl(), { ...options, method: 'GET' } );} export const getGetMeQueryKey = () => { return [ `/api/auth/me` ] as const; } export const getGetMeQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetMeQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getMe({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetMeQueryResult = NonNullable>> export type GetMeQueryError = ErrorType /** * @summary Get current authenticated user */ export function useGetMe>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetMeQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getChangeMyPasswordUrl = () => { return `/api/auth/me/password` } /** * @summary Change own password (local users only) */ export const changeMyPassword = async (changePasswordInput: ChangePasswordInput, options?: Parameters[1]): Promise => { return customFetch(getChangeMyPasswordUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(changePasswordInput) } );} export const getChangeMyPasswordMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['changeMyPassword']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return changeMyPassword(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type ChangeMyPasswordMutationResult = NonNullable>> export type ChangeMyPasswordMutationBody = BodyType export type ChangeMyPasswordMutationError = ErrorType /** * @summary Change own password (local users only) */ export const useChangeMyPassword = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getChangeMyPasswordMutationOptions(options)); } export const getGetPasswordRedirectUrl = () => { return `/api/auth/password-redirect` } /** * @summary Get redirect URL for managing credentials in the identity provider */ export const getPasswordRedirect = async ( options?: Parameters[1]): Promise => { return customFetch(getGetPasswordRedirectUrl(), { ...options, method: 'GET' } );} export const getGetPasswordRedirectQueryKey = () => { return [ `/api/auth/password-redirect` ] as const; } export const getGetPasswordRedirectQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetPasswordRedirectQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getPasswordRedirect({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetPasswordRedirectQueryResult = NonNullable>> export type GetPasswordRedirectQueryError = ErrorType /** * @summary Get redirect URL for managing credentials in the identity provider */ export function useGetPasswordRedirect>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetPasswordRedirectQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getGetMePreferencesUrl = () => { return `/api/auth/me/preferences` } /** * @summary Get current user's browse preferences */ export const getMePreferences = async ( options?: Parameters[1]): Promise => { return customFetch(getGetMePreferencesUrl(), { ...options, method: 'GET' } );} export const getGetMePreferencesQueryKey = () => { return [ `/api/auth/me/preferences` ] as const; } export const getGetMePreferencesQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetMePreferencesQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getMePreferences({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetMePreferencesQueryResult = NonNullable>> export type GetMePreferencesQueryError = ErrorType /** * @summary Get current user's browse preferences */ export function useGetMePreferences>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetMePreferencesQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getUpdateMePreferencesUrl = () => { return `/api/auth/me/preferences` } /** * @summary Update current user's browse preferences */ export const updateMePreferences = async (userPreferences: UserPreferences, options?: Parameters[1]): Promise => { return customFetch(getUpdateMePreferencesUrl(), { ...options, method: 'PUT', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(userPreferences) } );} export const getUpdateMePreferencesMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['updateMePreferences']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return updateMePreferences(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type UpdateMePreferencesMutationResult = NonNullable>> export type UpdateMePreferencesMutationBody = BodyType export type UpdateMePreferencesMutationError = ErrorType /** * @summary Update current user's browse preferences */ export const useUpdateMePreferences = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getUpdateMePreferencesMutationOptions(options)); } export const getGetMeWatchlistUrl = () => { return `/api/auth/me/watchlist` } /** * @summary Get current user's watchlist tools (premium) */ export const getMeWatchlist = async ( options?: Parameters[1]): Promise => { return customFetch(getGetMeWatchlistUrl(), { ...options, method: 'GET' } );} export const getGetMeWatchlistQueryKey = () => { return [ `/api/auth/me/watchlist` ] as const; } export const getGetMeWatchlistQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getGetMeWatchlistQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => getMeWatchlist({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type GetMeWatchlistQueryResult = NonNullable>> export type GetMeWatchlistQueryError = ErrorType /** * @summary Get current user's watchlist tools (premium) */ export function useGetMeWatchlist>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getGetMeWatchlistQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getListUsersUrl = () => { return `/api/users` } /** * @summary List all local users (admin only) */ export const listUsers = async ( options?: Parameters[1]): Promise => { return customFetch(getListUsersUrl(), { ...options, method: 'GET' } );} export const getListUsersQueryKey = () => { return [ `/api/users` ] as const; } export const getListUsersQueryOptions = >, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListUsersQueryKey(); const queryFn: QueryFunction>> = ({ signal }) => listUsers({ signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListUsersQueryResult = NonNullable>> export type ListUsersQueryError = ErrorType /** * @summary List all local users (admin only) */ export function useListUsers>, TError = ErrorType>( options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListUsersQueryOptions(options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); } export const getCreateUserUrl = () => { return `/api/users` } /** * @summary Create a new local user (admin only) */ export const createUser = async (userCreateInput: UserCreateInput, options?: Parameters[1]): Promise => { return customFetch(getCreateUserUrl(), { ...options, method: 'POST', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(userCreateInput) } );} export const getCreateUserMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{data: BodyType}, TContext> => { const mutationKey = ['createUser']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { const {data} = props ?? {}; return createUser(data,requestOptions) } return { mutationFn, ...mutationOptions }} export type CreateUserMutationResult = NonNullable>> export type CreateUserMutationBody = BodyType export type CreateUserMutationError = ErrorType /** * @summary Create a new local user (admin only) */ export const useCreateUser = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {data: BodyType}, TContext > => { return useMutation(getCreateUserMutationOptions(options)); } export const getUpdateUserUrl = (id: number,) => { return `/api/users/${id}` } /** * @summary Update user role (admin only) */ export const updateUser = async (id: number, userRoleUpdate: UserRoleUpdate, options?: Parameters[1]): Promise => { return customFetch(getUpdateUserUrl(id), { ...options, method: 'PATCH', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(userRoleUpdate) } );} export const getUpdateUserMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number;data: BodyType}, TContext> => { const mutationKey = ['updateUser']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number;data: BodyType}> = (props) => { const {id,data} = props ?? {}; return updateUser(id,data,requestOptions) } return { mutationFn, ...mutationOptions }} export type UpdateUserMutationResult = NonNullable>> export type UpdateUserMutationBody = BodyType export type UpdateUserMutationError = ErrorType /** * @summary Update user role (admin only) */ export const useUpdateUser = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number;data: BodyType}, TContext > => { return useMutation(getUpdateUserMutationOptions(options)); } export const getDeleteUserUrl = (id: number,) => { return `/api/users/${id}` } /** * @summary Delete a user (admin only) */ export const deleteUser = async (id: number, options?: Parameters[1]): Promise => { return customFetch(getDeleteUserUrl(id), { ...options, method: 'DELETE' } );} export const getDeleteUserMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number}, TContext> => { const mutationKey = ['deleteUser']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number}> = (props) => { const {id} = props ?? {}; return deleteUser(id,requestOptions) } return { mutationFn, ...mutationOptions }} export type DeleteUserMutationResult = NonNullable>> export type DeleteUserMutationError = ErrorType /** * @summary Delete a user (admin only) */ export const useDeleteUser = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number}, TContext > => { return useMutation(getDeleteUserMutationOptions(options)); } export const getSetUserPasswordUrl = (id: number,) => { return `/api/users/${id}/password` } /** * @summary Set/reset a user's password (admin only, local users only) */ export const setUserPassword = async (id: number, setPasswordInput: SetPasswordInput, options?: Parameters[1]): Promise => { return customFetch(getSetUserPasswordUrl(id), { ...options, method: 'PATCH', headers: { 'Content-Type': 'application/json', ...options?.headers }, body: JSON.stringify(setPasswordInput) } );} export const getSetUserPasswordMutationOptions = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationOptions>, TError,{id: number;data: BodyType}, TContext> => { const mutationKey = ['setUserPassword']; const {mutation: mutationOptions, request: requestOptions} = options ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? options : {...options, mutation: {...options.mutation, mutationKey}} : {mutation: { mutationKey, }, request: undefined}; const mutationFn: MutationFunction>, {id: number;data: BodyType}> = (props) => { const {id,data} = props ?? {}; return setUserPassword(id,data,requestOptions) } return { mutationFn, ...mutationOptions }} export type SetUserPasswordMutationResult = NonNullable>> export type SetUserPasswordMutationBody = BodyType export type SetUserPasswordMutationError = ErrorType /** * @summary Set/reset a user's password (admin only, local users only) */ export const useSetUserPassword = , TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{id: number;data: BodyType}, TContext>, request?: SecondParameter} ): UseMutationResult< Awaited>, TError, {id: number;data: BodyType}, TContext > => { return useMutation(getSetUserPasswordMutationOptions(options)); } export const getListAuditLogsUrl = (params?: ListAuditLogsParams,) => { const normalizedParams = new URLSearchParams(); Object.entries(params || {}).forEach(([key, value]) => { if (value !== undefined) { normalizedParams.append(key, value === null ? 'null' : String(value)) } }); const stringifiedParams = normalizedParams.toString(); return stringifiedParams.length > 0 ? `/api/audit-logs?${stringifiedParams}` : `/api/audit-logs` } /** * @summary List audit log entries (admin only) */ export const listAuditLogs = async (params?: ListAuditLogsParams, options?: Parameters[1]): Promise => { return customFetch(getListAuditLogsUrl(params), { ...options, method: 'GET' } );} export const getListAuditLogsQueryKey = (params?: ListAuditLogsParams,) => { return [ `/api/audit-logs`, ...(params ? [params] : []) ] as const; } export const getListAuditLogsQueryOptions = >, TError = ErrorType>(params?: ListAuditLogsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ) => { const {query: queryOptions, request: requestOptions} = options ?? {}; const queryKey = queryOptions?.queryKey ?? getListAuditLogsQueryKey(params); const queryFn: QueryFunction>> = ({ signal }) => listAuditLogs(params, { signal, ...requestOptions }); return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: QueryKey } } export type ListAuditLogsQueryResult = NonNullable>> export type ListAuditLogsQueryError = ErrorType /** * @summary List audit log entries (admin only) */ export function useListAuditLogs>, TError = ErrorType>( params?: ListAuditLogsParams, options?: { query?:UseQueryOptions>, TError, TData>, request?: SecondParameter} ): UseQueryResult & { queryKey: QueryKey } { const queryOptions = getListAuditLogsQueryOptions(params,options) const query = useQuery(queryOptions) as UseQueryResult & { queryKey: QueryKey }; return withQueryKey(query, queryOptions.queryKey); }