diff --git a/src/api/adminEmailTemplates.ts b/src/api/adminEmailTemplates.ts new file mode 100644 index 0000000..4c0b225 --- /dev/null +++ b/src/api/adminEmailTemplates.ts @@ -0,0 +1,85 @@ +import apiClient from './client' + +export interface EmailTemplateLanguageStatus { + has_custom: boolean +} + +export interface EmailTemplateType { + type: string + label: Record + description: Record + context_vars: string[] + languages: Record +} + +export interface EmailTemplateListResponse { + items: EmailTemplateType[] + available_languages: string[] +} + +export interface EmailTemplateLanguageData { + subject: string + body_html: string + is_default: boolean + default_subject: string + default_body_html: string +} + +export interface EmailTemplateDetail { + notification_type: string + label: Record + description: Record + context_vars: string[] + languages: Record +} + +export interface EmailTemplateUpdateRequest { + subject: string + body_html: string +} + +export interface EmailTemplatePreviewRequest { + language: string + subject?: string + body_html?: string +} + +export interface EmailTemplatePreviewResponse { + subject: string + body_html: string +} + +export interface EmailTemplateSendTestRequest { + language: string + email?: string +} + +export const adminEmailTemplatesApi = { + getTemplateTypes: async (): Promise => { + const response = await apiClient.get('/cabinet/admin/email-templates') + return response.data + }, + + getTemplate: async (notificationType: string): Promise => { + const response = await apiClient.get(`/cabinet/admin/email-templates/${notificationType}`) + return response.data + }, + + updateTemplate: async (notificationType: string, language: string, data: EmailTemplateUpdateRequest): Promise => { + await apiClient.put(`/cabinet/admin/email-templates/${notificationType}/${language}`, data) + }, + + deleteTemplate: async (notificationType: string, language: string): Promise => { + await apiClient.delete(`/cabinet/admin/email-templates/${notificationType}/${language}`) + }, + + previewTemplate: async (notificationType: string, data: EmailTemplatePreviewRequest): Promise => { + const response = await apiClient.post(`/cabinet/admin/email-templates/${notificationType}/preview`, data) + return response.data + }, + + sendTestEmail: async (notificationType: string, data: EmailTemplateSendTestRequest): Promise<{ sent_to: string }> => { + const response = await apiClient.post<{ status: string; sent_to: string }>(`/cabinet/admin/email-templates/${notificationType}/test`, data) + return response.data + }, +}