diff options
Diffstat (limited to 'internal/api/types.go')
-rw-r--r-- | internal/api/types.go | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/internal/api/types.go b/internal/api/types.go new file mode 100644 index 0000000..c641004 --- /dev/null +++ b/internal/api/types.go @@ -0,0 +1,78 @@ +// This file is a part of Taskflow. +// Copyright (C) 2025 Robby Zambito +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +package api + +import "time" + +type statusData struct { + overallStatus overallStatus + services []service + metrics metrics + incidents []incident + maintenanceEvents []maintenanceEvent + uptimeEvents []uptimeEvent +} + +type overallStatus struct { + Status string `json:"status"` + Description string `json:"description"` + Uptime float64 `json:"uptime"` + ResponseTime int `json:"responseTime"` + ActiveIncidents int `json:"activeIncidents"` + ScheduledMaintenance int `json:"scheduledMaintenance"` +} + +type service struct { + Id string `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Icon string `json:"icon"` + Status string `json:"status"` + ResponseTime int `json:"responseTime"` + Uptime float64 `json:"uptime"` +} + +type metrics struct { + Uptime float64 `json:"uptime"` + ResponseTime int `json:"responseTime"` + RequestVolume int `json:"requestVolume"` + ErrorRate float64 `json:"errorRate"` +} + +type incident struct { + Id string `json:"id"` + Title string `json:"title"` + Description string `json:"description"` + Status string `json:"status"` + Severity string `json:"severity"` + StartTime time.Time `json:"startTime"` + AffectedServices []string `json:"affectedServices"` +} + +type maintenanceEvent struct { + Id string `json:"id"` + Title string `json:"title"` + Description string `json:"description"` + StartTime time.Time `json:"startTime"` + EndTime time.Time `json:"endTime"` + AffectedServices []string `json:"affectedServices"` +} + +type uptimeEvent struct { + Date time.Time `json:"date"` + Uptime float64 `json:"uptime"` +} |