import { apiRequest } from '@/lib/api/client'; import type { NodeAgentReleaseInfo, NodeAgentUpdatePayload, NodeBootstrapToken, NodeItem, NodeMutationPayload, } from '@/features/nodes/types'; import type { ReleaseChannel } from '@/features/update/types'; export function getNodes() { return apiRequest('/nodes/'); } export function createNode(payload: NodeMutationPayload) { return apiRequest('/nodes/', { method: 'POST', body: JSON.stringify(payload), }); } export function updateNode(id: number, payload: NodeMutationPayload) { return apiRequest(`/nodes/${id}`, { method: 'PUT', body: JSON.stringify(payload), }); } export function deleteNode(id: number) { return apiRequest(`/nodes/${id}`, { method: 'DELETE', }); } export function getNodeBootstrapToken() { return apiRequest('/nodes/bootstrap-token'); } export function rotateNodeBootstrapToken() { return apiRequest('/nodes/bootstrap-token/rotate', { method: 'POST', }); } export function getNodeAgentRelease( id: number, channel: ReleaseChannel = 'stable', ) { return apiRequest( `/nodes/${id}/agent-release?channel=${channel}`, ); } export function requestNodeAgentUpdate( id: number, payload?: NodeAgentUpdatePayload, ) { return apiRequest(`/nodes/${id}/agent-update`, { method: 'POST', body: JSON.stringify(payload ?? {}), }); } export function requestNodeOpenrestyRestart(id: number) { return apiRequest(`/nodes/${id}/openresty-restart`, { method: 'POST', }); }