-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDtos.cs
More file actions
170 lines (150 loc) · 5.33 KB
/
Copy pathDtos.cs
File metadata and controls
170 lines (150 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
using Onevo.Api.Domain;
namespace Onevo.Api.Contracts;
// ---- Auth ----
public record LoginRequest(string Email, string Password);
public record ChangePasswordRequest(string CurrentPassword, string NewPassword);
public record LoginResponse(string Token, string Email, string Role, Guid? StoreId);
// ---- Users ----
public record CreateUserRequest(string Email, string Password, string Role, Guid? StoreId);
public record UserResponse(Guid Id, string Email, string Role, Guid? StoreId, DateTimeOffset CreatedAt);
// ---- Stores ----
public record CreateStoreRequest(
string Name,
string? Organization,
string? NotificationEmail,
string? AlertVisibilityMode);
public record UpdateStoreRequest(string? Name, string? AlertVisibilityMode, string? NotificationEmail);
public record StoreOverviewResponse(
Guid Id,
string Name,
string AlertVisibilityMode,
string? NotificationEmail,
int CameraCount,
int ConnectorCount,
int OnlineConnectorCount,
int PendingAlertCount,
DateTimeOffset? LastAlertAt);
// ---- Cameras ----
public record CreateCameraRequest(Guid StoreId, string Name, string RtspUrl, string? OnvifHost, int? OnvifPort);
public record UpdateCameraRequest(string? Name, string? RtspUrl, string? Status, string? OnvifHost, int? OnvifPort);
public record BulkDisableCamerasRequest(List<Guid> CameraIds);
public record UpdateDeviceInfoRequest(
string? Manufacturer,
string? Model,
string? Serial,
string? Firmware,
string? OnvifHost,
int? OnvifPort,
string? RtspUrl);
// ---- Zones ----
public record CreateZoneRequest(Guid CameraId, string Name, string ZoneType, string PolygonJson);
public record UpdateZoneRequest(string? Name, string? ZoneType, string? PolygonJson);
// ---- Connectors ----
public record RegisterConnectorRequest(Guid StoreId, string Name, string Version, string BootstrapKey);
public record RegisterConnectorResponse(Guid ConnectorId, string ApiKey);
public record HeartbeatRequest(
double DiskFreePct,
int UploadQueueDepth,
string? DegradedReason,
string Version,
string? AdminHost = null,
int? AdminPort = null);
public record CreateSetupCodeRequest(Guid StoreId);
public record CreateSetupCodeResponse(string Code, Guid StoreId, DateTimeOffset ExpiresAt);
public record ClaimSetupCodeRequest(string SetupCode, string Name, string Version);
public record ClaimSetupCodeResponse(Guid ConnectorId, string ApiKey, Guid StoreId);
public record ConnectorCreateCameraRequest(
string SourceKey,
string Name,
string RtspUrl,
string? OnvifHost,
int? OnvifPort,
bool UseDemoZones = false);
public record FinalizeConnectorSetupRequest(List<string> SourceKeys);
public record InstallerInfoResponse(string Version, string FileName, long SizeBytes, string Sha256, string DownloadPath);
// ---- Clips ----
public record UploadUrlRequest(Guid CameraId, double DurationSec, string? TriggerReason);
public record UploadUrlResponse(Guid ClipId, string ObjectKey, string UploadUrl, int ExpirySeconds);
public record CompleteClipRequest(Guid ClipId);
public record ClipListItemResponse(
Guid Id,
Guid CameraId,
string CameraName,
Guid StoreId,
string StoreName,
string Status,
double DurationSec,
string TriggerReason,
DateTimeOffset CreatedAt,
DateTimeOffset? AnalyzedAt,
int EventCount,
int? RiskScore,
Guid? AlertId);
public record ClipAiEventItemResponse(
string EventType,
string? ZoneName,
double Value,
double Confidence,
DateTimeOffset StartTs,
DateTimeOffset EndTs,
string ModelVersion);
public record ClipDetailResponse(
Guid Id,
Guid CameraId,
string CameraName,
Guid StoreId,
string StoreName,
string Status,
double DurationSec,
string TriggerReason,
DateTimeOffset CreatedAt,
DateTimeOffset? AnalyzedAt,
string? ClipUrl,
int EventCount,
int? RiskScore,
string? RiskDetails,
Guid? AlertId,
string? ModelVersion,
string? AnalysisNote,
List<ClipAiEventItemResponse> AiEvents);
public record PipelineHealthResponse(int RedisQueueDepth, int FailedJobs);
public record AnalyticsSummaryResponse(
int TotalAlerts,
int PendingAlerts,
int HighRiskAlerts,
int MediumRiskAlerts,
int FalsePositives,
int TotalClips,
int AnalyzedClips,
Dictionary<string, int> AlertsByType);
public record ConnectorLogEntry(
Guid Id,
Guid StoreId,
string Name,
string Status,
string Version,
DateTimeOffset? LastHeartbeat,
string? DegradedReason,
int UploadQueueDepth,
double DiskFreePct);
public record SystemLogsResponse(
List<ConnectorLogEntry> Connectors,
int RedisQueueDepth,
int FailedJobs,
DateTimeOffset GeneratedAt);
// ---- AI events (posted by cloud-ai worker) ----
public record AiEventDto(
int TrackId,
Guid? ZoneId,
string EventType,
double Value,
double Confidence,
DateTimeOffset StartTs,
DateTimeOffset EndTs,
int[]? EvidenceFrames,
float[]? Embedding);
public record AiEventsBatchRequest(Guid ClipId, string ModelVersion, List<AiEventDto> Events);
// ---- Alerts / reviews ----
public record ReviewRequest(string Action, string? ReasonCode, string? Notes);
public record BulkDeleteRequest(Guid? StoreId, List<Guid>? Ids, bool DeleteAllInStore = false);
public record BulkDeleteResponse(int Deleted, int Skipped, List<string> Errors);