import { api } from './client'; import type { OrganizationRecord } from './types'; export type OrganizationUpdatePayload = Partial< Pick< OrganizationRecord, | 'name' | 'description' | 'email' | 'phone' | 'website' | 'address' | 'logo' | 'timezone' | 'dateFormat' | 'language' | 'subscription' > >; export const organizationApi = { /** Use cacheBust after subscription/checkout so browsers/CDNs cannot serve a stale org document. */ async get(options?: { cacheBust?: boolean }): Promise { const suffix = options?.cacheBust ? `?_=${encodeURIComponent(String(Date.now()))}` : ''; const r = await api.get(`/organization${suffix}`); if (r.error) throw new Error(r.error); return r.data ?? null; }, async update(payload: OrganizationUpdatePayload): Promise { const r = await api.put('/organization', payload); if (r.error || r.data == null) throw new Error(r.error ?? 'Update failed'); return r.data; }, getEmailSettings() { return api.get<{ enabled: boolean; host: string; port: number; secure: boolean; user: string; userLast4: string; hasPassword: boolean; fromName: string; fromAddress: string; }>('/organization/email-settings'); }, updateEmailSettings(payload: { enabled?: boolean; host?: string; port?: number; secure?: boolean; user?: string; password?: string; fromName?: string; fromAddress?: string; }) { return api.put<{ enabled: boolean; host: string; port: number; secure: boolean; user: string; userLast4: string; hasPassword: boolean; fromName: string; fromAddress: string; }>('/organization/email-settings', payload); }, testEmailSettings(to: string) { return api.post<{ ok: boolean }>('/organization/email-settings/test', { to }); }, getWhatsAppSettings() { return api.get<{ enabled: boolean; wabaId: string; phoneNumberId: string; hasAccessToken: boolean; /** True when org has not saved its own WABA+token and env `META_WHATSAPP_*` defaults are in use. */ usingServerDefaults: boolean; /** WABA + token available (org or server) — template sync / Graph. */ graphAccess: boolean; /** Token + phone number id — required to send template messages. */ canSendMessages: boolean; }>('/organization/whatsapp-settings'); }, updateWhatsAppSettings(payload: { enabled?: boolean; wabaId?: string; phoneNumberId?: string; accessToken?: string; }) { return api.put<{ enabled: boolean; wabaId: string; phoneNumberId: string; hasAccessToken: boolean; usingServerDefaults: boolean; graphAccess: boolean; canSendMessages: boolean; }>('/organization/whatsapp-settings', payload); }, };