/** * API para gestión de roles por compañía */ import { api, type ApiResponse } from '$lib/api'; export interface CompanyRole { id: number; name: string; code: string; description?: string; is_active: boolean; company_id: number; tenant_id: number; created_at?: string; updated_at?: string; } export interface CreateRoleData { name: string; code: string; description?: string; is_active?: boolean; } export interface UpdateRoleData { name?: string; code?: string; description?: string; is_active?: boolean; } export interface RoleListResponse { items: CompanyRole[]; total: number; page: number; page_size: number; } export const rolesAPI = { /** * Listar roles con filtros */ async list( companyId: number, params?: { page?: number; page_size?: number; is_active?: boolean; search?: string; } ): Promise> { const queryParams = new URLSearchParams(); queryParams.set('company_id', companyId.toString()); if (params?.page) queryParams.set('page', params.page.toString()); if (params?.page_size) queryParams.set('page_size', params.page_size.toString()); if (params?.is_active !== undefined) queryParams.set('is_active', params.is_active.toString()); if (params?.search) queryParams.set('search', params.search); return api.get(`/v1/core/permissions/roles?${queryParams.toString()}`); }, /** * Obtener un rol por ID */ async getById(id: number, companyId: number): Promise> { return api.get(`/v1/core/permissions/roles/${id}?company_id=${companyId}`); }, /** * Crear un nuevo rol */ async create(companyId: number, data: CreateRoleData): Promise> { return api.post(`/v1/core/permissions/roles?company_id=${companyId}`, data); }, /** * Actualizar un rol */ async update(id: number, companyId: number, data: UpdateRoleData): Promise> { return api.patch(`/v1/core/permissions/roles/${id}?company_id=${companyId}`, data); }, /** * Eliminar un rol */ async delete(id: number, companyId: number): Promise> { return api.delete(`/v1/core/permissions/roles/${id}?company_id=${companyId}`); } };