import apiClient from './client' import type { Account, SubscriptionDetails, AccountMember, AccountInvite } from '@/types' export interface BulkInviteRow { email: string role: 'engineer' | 'viewer' expires_in_days?: number } export interface BulkInviteFailure { email: string error: string } export interface BulkInviteResponse { created: AccountInvite[] failed: BulkInviteFailure[] } export const accountsApi = { async getMyAccount(): Promise { const response = await apiClient.get('/accounts/me') return response.data }, async getMySubscription(): Promise { const response = await apiClient.get('/accounts/me/subscription') return response.data }, async updateMyAccount(data: { name?: string }): Promise { const response = await apiClient.patch('/accounts/me', data) return response.data }, async getMembers(): Promise { const response = await apiClient.get('/accounts/me/members') return response.data }, async updateMemberRole(userId: string, role: string): Promise { const response = await apiClient.patch( `/accounts/me/members/${userId}/role`, { account_role: role } ) return response.data }, async removeMember(userId: string): Promise { await apiClient.delete(`/accounts/me/members/${userId}`) }, async createInvite(data: { email: string; role: string }): Promise { const response = await apiClient.post('/accounts/me/invites', data) return response.data }, /** * Create multiple invites in one call (used by the welcome wizard step 3). * Per-row failures land in `failed[]`; successes in `created[]`. */ async bulkInvite(invites: BulkInviteRow[]): Promise { const response = await apiClient.post( '/accounts/me/invites/bulk', { invites }, ) return response.data }, async getInvites(): Promise { const response = await apiClient.get('/accounts/me/invites') return response.data }, async resendInvite(inviteId: string): Promise { const response = await apiClient.post(`/accounts/me/invites/${inviteId}/resend`) return response.data }, async transferOwnership(currentPassword: string, targetUserId: string): Promise { const response = await apiClient.post('/accounts/me/transfer-ownership', { current_password: currentPassword, target_user_id: targetUserId, }) return response.data }, async leaveAccount(): Promise { await apiClient.post('/accounts/me/leave') }, async deleteAccount(currentPassword: string): Promise { await apiClient.delete('/accounts/me', { data: { current_password: currentPassword } }) }, } export default accountsApi