import request from '@/axios' export const serversApi = { list(params: Record = {}) { return request.get('/servers', { params }) }, create(data: Record) { return request.post('/servers', data) }, update(id: number, data: Record) { return request.put(`/servers/${id}`, data) }, remove(id: number) { return request.delete(`/servers/${id}`) }, userPermissions(id: number, params: Record = {}) { return request.get(`/servers/${id}/user-permissions`, { params }) }, syncUserPermissions(id: number, users: Array>, partial = false) { return request.put(`/servers/${id}/user-permissions`, { users, partial }) }, systemUsersMeta(id: number) { return request.get(`/servers/${id}/system-users/meta`) }, createSystemUser(id: number, data: Record) { return request.post(`/servers/${id}/system-users`, data) }, removeSystemUser(id: number, username: string) { return request.delete(`/servers/${id}/system-users/${encodeURIComponent(username)}`) }, updateSystemUserPassword(id: number, username: string, data: Record) { return request.patch(`/servers/${id}/system-users/${encodeURIComponent(username)}/password`, data) }, updateBoundSystemUserPassword(id: number, data: Record) { return request.patch(`/servers/${id}/bound-system-user/password`, data) }, updateDefaultEnvironment(id: number, content: string) { return request.put(`/servers/${id}/default-environment`, { content }) }, updateAllUserEnvironments(id: number, content: string) { return request.put(`/servers/${id}/system-users/environment`, { content }) }, updateDefaultUserGroups(id: number, groups: string[]) { return request.put(`/servers/${id}/default-user-groups`, { groups }) }, userEnvironment(id: number, username: string) { return request.get(`/servers/${id}/system-users/${encodeURIComponent(username)}/environment`) }, updateUserEnvironment(id: number, username: string, content: string) { return request.put(`/servers/${id}/system-users/${encodeURIComponent(username)}/environment`, { content }) }, createSystemGroup(id: number, data: Record) { return request.post(`/servers/${id}/system-groups`, data) }, removeSystemGroup(id: number, groupname: string) { return request.delete(`/servers/${id}/system-groups/${encodeURIComponent(groupname)}`) }, syncSystemUserGroups(id: number, username: string, groups: string[], mode = 'replace') { return request.put(`/servers/${id}/system-users/${encodeURIComponent(username)}/groups`, { groups, mode }) }, useResource(id: number, data: Record) { return request.post(`/servers/${id}/use`, data) }, opsMeta() { return request.get('/ops-clients/meta') }, createOpsProtocol(data: Record) { return request.post('/ops-clients/protocols', data) }, updateOpsProtocol(id: number, data: Record) { return request.put(`/ops-clients/protocols/${id}`, data) }, removeOpsProtocol(id: number) { return request.delete(`/ops-clients/protocols/${id}`) }, createOpsSoftware(protocolId: number, data: Record) { return request.post(`/ops-clients/protocols/${protocolId}/softwares`, data) }, updateOpsSoftware(id: number, data: Record) { return request.put(`/ops-clients/softwares/${id}`, data) }, removeOpsSoftware(id: number) { return request.delete(`/ops-clients/softwares/${id}`) }, saveOpsPreferences(items: Array>) { return request.put('/ops-clients/preferences', { items }) }, generateOpsLink(data: Record) { return request.post('/ops-clients/link', data) }, }