import type { CurrentUserResponse, IPersonalizationLatestVersion, IRestApiContext, IUserResponse, } from '@/Interface'; import type { IDataObject } from 'n8n-workflow'; import { makeRestApiRequest } from '@/utils/apiUtils'; export async function loginCurrentUser( context: IRestApiContext, ): Promise { return makeRestApiRequest(context, 'GET', '/login'); } export async function login( context: IRestApiContext, params: { email: string; password: string; mfaToken?: string; mfaRecoveryToken?: string }, ): Promise { return makeRestApiRequest(context, 'POST', '/login', params); } export async function logout(context: IRestApiContext): Promise { await makeRestApiRequest(context, 'POST', '/logout'); } export async function setupOwner( context: IRestApiContext, params: { firstName: string; lastName: string; email: string; password: string }, ): Promise { return makeRestApiRequest(context, 'POST', '/owner/setup', params as unknown as IDataObject); } export async function validateSignupToken( context: IRestApiContext, params: { inviterId: string; inviteeId: string }, ): Promise<{ inviter: { firstName: string; lastName: string } }> { return makeRestApiRequest(context, 'GET', '/resolve-signup-token', params); } export async function signup( context: IRestApiContext, params: { inviterId: string; inviteeId: string; firstName: string; lastName: string; password: string; }, ): Promise { const { inviteeId, ...props } = params; return makeRestApiRequest( context, 'POST', `/users/${params.inviteeId}`, props as unknown as IDataObject, ); } export async function sendForgotPasswordEmail( context: IRestApiContext, params: { email: string }, ): Promise { await makeRestApiRequest(context, 'POST', '/forgot-password', params); } export async function validatePasswordToken( context: IRestApiContext, params: { token: string }, ): Promise { await makeRestApiRequest(context, 'GET', '/resolve-password-token', params); } export async function changePassword( context: IRestApiContext, params: { token: string; password: string; mfaToken?: string }, ): Promise { await makeRestApiRequest(context, 'POST', '/change-password', params); } export async function updateCurrentUser( context: IRestApiContext, params: { id?: string; firstName?: string; lastName?: string; email: string; }, ): Promise { return makeRestApiRequest(context, 'PATCH', '/me', params as unknown as IDataObject); } export async function updateCurrentUserSettings( context: IRestApiContext, settings: IUserResponse['settings'], ): Promise { return makeRestApiRequest(context, 'PATCH', '/me/settings', settings as IDataObject); } export async function updateOtherUserSettings( context: IRestApiContext, userId: string, settings: IUserResponse['settings'], ): Promise { return makeRestApiRequest(context, 'PATCH', `/users/${userId}/settings`, settings as IDataObject); } export async function updateCurrentUserPassword( context: IRestApiContext, params: { newPassword: string; currentPassword: string }, ): Promise { return makeRestApiRequest(context, 'PATCH', '/me/password', params); } export async function deleteUser( context: IRestApiContext, { id, transferId }: { id: string; transferId?: string }, ): Promise { await makeRestApiRequest(context, 'DELETE', `/users/${id}`, transferId ? { transferId } : {}); } export async function getUsers(context: IRestApiContext): Promise { return makeRestApiRequest(context, 'GET', '/users'); } export async function getInviteLink( context: IRestApiContext, { id }: { id: string }, ): Promise<{ link: string }> { return makeRestApiRequest(context, 'GET', `/users/${id}/invite-link`); } export async function getPasswordResetLink( context: IRestApiContext, { id }: { id: string }, ): Promise<{ link: string }> { return makeRestApiRequest(context, 'GET', `/users/${id}/password-reset-link`); } export async function submitPersonalizationSurvey( context: IRestApiContext, params: IPersonalizationLatestVersion, ): Promise { await makeRestApiRequest(context, 'POST', '/me/survey', params as unknown as IDataObject); }