summaryrefslogtreecommitdiff
path: root/internal/api/types.go
diff options
context:
space:
mode:
authorRobby Zambito <contact@robbyzambito.me>2025-08-08 12:10:43 -0400
committerRobby Zambito <contact@robbyzambito.me>2025-08-08 12:52:03 -0400
commite641812d9fc55dff2e5d18ae5c557fc8c74c4c14 (patch)
tree59e4ffce74d07e205b53c7d7991e4d6c603a3a98 /internal/api/types.go
parentf1552ea8c2b5e3f09533c08b40ad7331a82d7a33 (diff)
Cleanup api impl
Diffstat (limited to 'internal/api/types.go')
-rw-r--r--internal/api/types.go78
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"`
+}