{"openapi":"3.0.0","paths":{"/topology/datacenters":{"get":{"operationId":"TopologyController_getDatacenters","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatacenterDto"}}}}}},"tags":["topology"]}},"/topology/datacenters/{id}/racks":{"get":{"operationId":"TopologyController_getRacks","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RackDto"}}}}}},"tags":["topology"]}},"/topology/racks/{id}/devices":{"get":{"operationId":"TopologyController_getDevices","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceDto"}}}}}},"tags":["topology"]}},"/topology/nodes/search":{"get":{"operationId":"TopologyController_searchNodes","parameters":[{"name":"q","required":true,"in":"query","description":"Search query string","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchResultDto"}}}}}},"tags":["topology"]}},"/topology/nodes/check-name":{"get":{"operationId":"TopologyController_checkNameExists","parameters":[{"name":"name","required":true,"in":"query","schema":{"type":"string"}},{"name":"type","required":true,"in":"query","schema":{"type":"string","enum":["datacenter","rack","server","switch","router","storage","vm","service"]}},{"name":"parentId","required":false,"in":"query","schema":{"type":"string"}},{"name":"currentId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"properties":{"exists":{"type":"boolean"}}}}}}},"tags":["topology"]}},"/topology/nodes/{id}/path":{"get":{"operationId":"TopologyController_getNodePath","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NodePathDto"}}}}}},"tags":["topology"]}},"/topology/nodes/{id}/metrics":{"get":{"operationId":"TopologyController_getNodeMetrics","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeMetricsDto"}}}}},"tags":["topology"]}},"/topology/nodes/{id}/config":{"get":{"operationId":"TopologyController_getNodeConfig","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeConfigDto"}}}}},"tags":["topology"]},"patch":{"operationId":"TopologyController_updateNodeConfig","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNodeConfigDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeConfigDto"}}}}},"tags":["topology"]}},"/topology/nodes/{id}":{"get":{"operationId":"TopologyController_getNodeDetails","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeDetailsDto"}}}}},"tags":["topology"]},"delete":{"operationId":"TopologyController_deleteNode","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["topology"]}},"/dashboard/stats":{"get":{"operationId":"DashboardController_getStats","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardStatsDto"}}}}},"tags":["Dashboard"]}},"/dashboard/health":{"get":{"operationId":"DashboardController_getHealth","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardHealthDto"}}}}},"tags":["Dashboard"]}},"/alerts":{"get":{"operationId":"AlertsController_getAlerts","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertDto"}}}}}},"tags":["Alerts"]}},"/alerts/{id}":{"get":{"operationId":"AlertsController_getAlertById","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertDto"}}}}},"tags":["Alerts"]}},"/alerts/{id}/acknowledge":{"patch":{"operationId":"AlertsController_acknowledgeAlert","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertDto"}}}}},"tags":["Alerts"]}},"/alerts/{id}/resolve":{"patch":{"operationId":"AlertsController_resolveAlert","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertDto"}}}}},"tags":["Alerts"]}}},"info":{"title":"InfraWatch API","description":"InfraWatch backend API","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"schemas":{"DatacenterDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","example":"datacenter"},"status":{"type":"string"},"location":{"type":"string"}},"required":["id","name","type","status","location"]},"RackDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","example":"rack"},"status":{"type":"string"},"location":{"type":"string"},"parentId":{"type":"string"}},"required":["id","name","type","status","location","parentId"]},"DeviceDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["server","switch","router","storage","vm","service"]},"status":{"type":"string"},"ipAddress":{"type":"string"},"parentId":{"type":"string"}},"required":["id","name","type","status","ipAddress","parentId"]},"NodePathDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}},"required":["id","name","type"]},"SearchResultDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"parentId":{"type":"string"},"path":{"type":"array","items":{"$ref":"#/components/schemas/NodePathDto"}}},"required":["id","name","type","status","path"]},"NodeMetricSeriesDto":{"type":"object","properties":{"1H":{"type":"array","items":{"type":"number"}},"6H":{"type":"array","items":{"type":"number"}},"24H":{"type":"array","items":{"type":"number"}},"7D":{"type":"array","items":{"type":"number"}}},"required":["1H","6H","24H","7D"]},"NodeNetworkSeriesDto":{"type":"object","properties":{"in":{"type":"array","items":{"type":"number"}},"out":{"type":"array","items":{"type":"number"}}},"required":["in","out"]},"NodeNetworkMetricDto":{"type":"object","properties":{"1H":{"$ref":"#/components/schemas/NodeNetworkSeriesDto"},"6H":{"$ref":"#/components/schemas/NodeNetworkSeriesDto"},"24H":{"$ref":"#/components/schemas/NodeNetworkSeriesDto"},"7D":{"$ref":"#/components/schemas/NodeNetworkSeriesDto"}},"required":["1H","6H","24H","7D"]},"NodeMetricsDto":{"type":"object","properties":{"id":{"type":"string"},"cpu":{"$ref":"#/components/schemas/NodeMetricSeriesDto"},"memory":{"$ref":"#/components/schemas/NodeMetricSeriesDto"},"network":{"$ref":"#/components/schemas/NodeNetworkMetricDto"}},"required":["id","cpu","memory","network"]},"NodeConfigDto":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"location":{"type":"string"},"password":{"type":"string"},"registrationId":{"type":"string"},"ipAddress":{"type":"string"},"macAddress":{"type":"string"}},"required":["id","type","name"]},"UpdateNodeConfigDto":{"type":"object","properties":{"name":{"type":"string"},"location":{"type":"string"},"password":{"type":"string"},"registrationId":{"type":"string"},"ipAddress":{"type":"string"}}},"NodeHardwareDto":{"type":"object","properties":{"cpuCores":{"type":"number"},"memory":{"type":"string"},"storage":{"type":"string"},"firmware":{"type":"string"}},"required":["cpuCores","memory","storage","firmware"]},"NodeStatsDto":{"type":"object","properties":{"cpuUsage":{"type":"number"},"memoryUsage":{"type":"number"},"storageUsage":{"type":"number"},"networkIO":{"type":"string"},"networkOut":{"type":"string"},"uptimeDays":{"type":"number"},"availability":{"type":"string"}},"required":["cpuUsage","memoryUsage","storageUsage","networkIO","networkOut","uptimeDays","availability"]},"NodeDetailsDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"location":{"type":"string"},"ipAddress":{"type":"string"},"parentId":{"type":"string"},"vendor":{"type":"string"},"serialNumber":{"type":"string"},"hardware":{"$ref":"#/components/schemas/NodeHardwareDto"},"stats":{"$ref":"#/components/schemas/NodeStatsDto"}},"required":["id","name","type","status","vendor","serialNumber","hardware","stats"]},"TrendDto":{"type":"object","properties":{"change":{"type":"number"},"direction":{"type":"string"}},"required":["change","direction"]},"DashboardTrendsDto":{"type":"object","properties":{"totalNodes":{"$ref":"#/components/schemas/TrendDto"},"warnings":{"$ref":"#/components/schemas/TrendDto"}},"required":["totalNodes","warnings"]},"DashboardStatsDto":{"type":"object","properties":{"totalNodes":{"type":"number"},"online":{"type":"number"},"warnings":{"type":"number"},"offline":{"type":"number"},"datacenters":{"type":"number"},"racks":{"type":"number"},"servers":{"type":"number"},"vms":{"type":"number"},"services":{"type":"number"},"trends":{"$ref":"#/components/schemas/DashboardTrendsDto"}},"required":["totalNodes","online","warnings","offline","datacenters","racks","servers","vms","services","trends"]},"DashboardHealthDto":{"type":"object","properties":{"cpu":{"type":"number"},"memory":{"type":"number"},"network":{"type":"number"},"storage":{"type":"number"}},"required":["cpu","memory","network","storage"]},"AlertDto":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string"},"status":{"type":"string"},"source":{"type":"string"},"deviceType":{"type":"string"},"category":{"type":"string"},"timestamp":{"format":"date-time","type":"string"},"acknowledgedBy":{"type":"object","nullable":true},"nodeId":{"type":"object","nullable":true}},"required":["id","title","message","severity","status","source","deviceType","category","timestamp"]}}}}