Notification updates

This commit is contained in:
Eric Gullickson
2025-12-21 19:56:52 -06:00
parent 144f1d5bb0
commit 719c80ecd8
80 changed files with 7552 additions and 678 deletions

View File

@@ -31,6 +31,16 @@ import {
ImportPreviewResult,
ImportApplyResult,
CascadeDeleteResult,
EmailTemplate,
UpdateEmailTemplateRequest,
// User management types
ManagedUser,
ListUsersResponse,
ListUsersParams,
UpdateUserTierRequest,
DeactivateUserRequest,
UpdateUserProfileRequest,
PromoteToAdminRequest,
} from '../types/admin.types';
export interface AuditLogsResponse {
@@ -267,4 +277,87 @@ export const adminApi = {
);
return response.data;
},
// Email Templates
emailTemplates: {
list: async (): Promise<EmailTemplate[]> => {
const response = await apiClient.get<EmailTemplate[]>('/admin/email-templates');
return response.data;
},
get: async (key: string): Promise<EmailTemplate> => {
const response = await apiClient.get<EmailTemplate>(`/admin/email-templates/${key}`);
return response.data;
},
update: async (key: string, data: UpdateEmailTemplateRequest): Promise<EmailTemplate> => {
const response = await apiClient.put<EmailTemplate>(`/admin/email-templates/${key}`, data);
return response.data;
},
preview: async (key: string, variables: Record<string, string>): Promise<{ subject: string; body: string }> => {
const response = await apiClient.post<{ subject: string; body: string }>(
`/admin/email-templates/${key}/preview`,
{ variables }
);
return response.data;
},
sendTest: async (key: string): Promise<{ message?: string; error?: string; subject: string; body: string }> => {
const response = await apiClient.post<{ message?: string; error?: string; subject: string; body: string }>(
`/admin/email-templates/${key}/test`
);
return response.data;
},
},
// User Management
users: {
list: async (params: ListUsersParams = {}): Promise<ListUsersResponse> => {
const response = await apiClient.get<ListUsersResponse>('/admin/users', { params });
return response.data;
},
get: async (auth0Sub: string): Promise<ManagedUser> => {
const response = await apiClient.get<ManagedUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}`
);
return response.data;
},
updateTier: async (auth0Sub: string, data: UpdateUserTierRequest): Promise<ManagedUser> => {
const response = await apiClient.patch<ManagedUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}/tier`,
data
);
return response.data;
},
deactivate: async (auth0Sub: string, data?: DeactivateUserRequest): Promise<ManagedUser> => {
const response = await apiClient.patch<ManagedUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}/deactivate`,
data || {}
);
return response.data;
},
reactivate: async (auth0Sub: string): Promise<ManagedUser> => {
const response = await apiClient.patch<ManagedUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}/reactivate`
);
return response.data;
},
updateProfile: async (auth0Sub: string, data: UpdateUserProfileRequest): Promise<ManagedUser> => {
const response = await apiClient.patch<ManagedUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}/profile`,
data
);
return response.data;
},
promoteToAdmin: async (auth0Sub: string, data?: PromoteToAdminRequest): Promise<AdminUser> => {
const response = await apiClient.patch<AdminUser>(
`/admin/users/${encodeURIComponent(auth0Sub)}/promote`,
data || {}
);
return response.data;
},
},
};