import { apiClient } from './client'; export interface Tenant { id: string; nombre: string; rfc: string; plan: string; databaseName: string; createdAt: string; _count?: { /** Memberships activos (matches el `_count.memberships` que retorna `getAllTenants`). */ memberships: number; }; } export interface CreateTenantData { nombre: string; rfc: string; plan?: string; verticalProfile?: 'CONTABLE' | 'JURIDICO' | 'ARQUITECTURA'; frequency?: 'monthly' | 'annual'; adminEmail: string; adminNombre: string; amount?: number; } export async function getTenants(): Promise { const response = await apiClient.get('/tenants'); return response.data; } export async function getTenant(id: string): Promise { const response = await apiClient.get(`/tenants/${id}`); return response.data; } export async function createTenant(data: CreateTenantData): Promise { const response = await apiClient.post('/tenants', data); return response.data; } export interface UpdateTenantData { nombre?: string; rfc?: string; plan?: string; verticalProfile?: 'CONTABLE' | 'JURIDICO' | 'ARQUITECTURA'; active?: boolean; } export async function updateTenant(id: string, data: UpdateTenantData): Promise { const response = await apiClient.put(`/tenants/${id}`, data); return response.data; } export async function deleteTenant(id: string): Promise { await apiClient.delete(`/tenants/${id}`); } // ============================================================================ // Self-serve multi-tenant (memberships del caller) // ============================================================================ export interface MyTenantDetailed { tenantId: string; nombre: string; rfc: string; plan: string; role: string; isOwner: boolean; trialEndsAt: string | null; subscription: { status: string; plan: string; amount: number; frequency: string; currentPeriodEnd: string | null; pendingPlan: string | null; pendingEffectiveAt: string | null; } | null; } export async function getMyTenants(): Promise { const response = await apiClient.get('/tenants/mine'); return response.data; } export interface AddMyTenantData { nombre: string; rfc: string; plan?: 'starter' | 'business' | 'business_ia' | 'enterprise'; } export async function addMyTenant(data: AddMyTenantData): Promise<{ tenant: Tenant }> { const response = await apiClient.post<{ tenant: Tenant }>('/tenants/mine', data); return response.data; }