package platform type Page[T any] struct { Items []T `json:"items"` Total int `json:"total"` Limit int `json:"limit"` Offset int `json:"offset"` } type MonitorSummary struct { TotalVehicles int `json:"totalVehicles"` LocationVehicles int `json:"locationVehicles"` NoLocationVehicles int `json:"noLocationVehicles"` OnlineVehicles int `json:"onlineVehicles"` OfflineVehicles int `json:"offlineVehicles"` DrivingVehicles int `json:"drivingVehicles"` IdleVehicles int `json:"idleVehicles"` AlertVehicles int `json:"alertVehicles"` UnknownVehicles int `json:"unknownVehicles"` ActiveToday int `json:"activeToday"` FrameToday int `json:"frameToday"` AlertDataAvailable bool `json:"alertDataAvailable"` Truncated bool `json:"truncated"` AsOf string `json:"asOf"` } type MonitorMapResponse struct { Mode string `json:"mode"` Zoom int `json:"zoom"` Total int `json:"total"` Truncated bool `json:"truncated"` Points []MonitorMapPoint `json:"points"` Clusters []MonitorMapCluster `json:"clusters"` ProvincePoints []MonitorMapProvincePoint `json:"provincePoints"` AsOf string `json:"asOf"` } type MonitorWorkspaceResponse struct { Summary MonitorSummary `json:"summary"` Vehicles Page[VehicleRealtimeRow] `json:"vehicles"` Map MonitorMapResponse `json:"map"` } type MonitorMapPoint struct { VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` Protocols []string `json:"protocols"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SpeedKmh float64 `json:"speedKmh"` SOCPercent float64 `json:"socPercent"` TotalMileageKm float64 `json:"totalMileageKm"` LastSeen string `json:"lastSeen"` ReportIntervalMs *int64 `json:"reportIntervalMs,omitempty"` LocationSource string `json:"locationSource"` LocationConflict bool `json:"locationConflict"` Status string `json:"status"` } type MonitorMapCluster struct { ID string `json:"id"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` Count int `json:"count"` Online int `json:"online"` Offline int `json:"offline"` Driving int `json:"driving"` Idle int `json:"idle"` Unknown int `json:"unknown"` } // MonitorMapProvincePoint is deliberately compact and identity-free. At the // nationwide zoom the browser groups these already-scoped coordinates with // AMap's cached administrative boundary node, while Clusters remain available // as a no-blank-map fallback if the boundary resource cannot be loaded. type MonitorMapProvincePoint struct { Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` Status string `json:"status"` } type TrackPlaybackResponse struct { VIN string `json:"vin"` Plate string `json:"plate"` Points []HistoryLocationRow `json:"points"` Events []TrackPlaybackEvent `json:"events"` Sources []TrackPlaybackSource `json:"sources"` Segments []TrackSegment `json:"segments"` Stops []TrackStop `json:"stops"` Summary TrackPlaybackSummary `json:"summary"` Coverage TrackCoverage `json:"coverage"` Quality TrackQuality `json:"quality"` Total int `json:"total"` Truncated bool `json:"truncated"` Sampled bool `json:"sampled"` AsOf string `json:"asOf"` } type TrackPlaybackSummary struct { StartTime string `json:"startTime"` EndTime string `json:"endTime"` DistanceKm float64 `json:"distanceKm"` DurationSeconds int64 `json:"durationSeconds"` AverageSpeedKmh float64 `json:"averageSpeedKmh"` MaximumSpeedKmh float64 `json:"maximumSpeedKmh"` PointCount int `json:"pointCount"` MovingSeconds int64 `json:"movingSeconds"` StoppedSeconds int64 `json:"stoppedSeconds"` StopCount int `json:"stopCount"` SegmentCount int `json:"segmentCount"` } type TrackPlaybackEvent struct { Index int `json:"index"` SampledIndex int `json:"sampledIndex"` Type string `json:"type"` Title string `json:"title"` Time string `json:"time"` SpeedKmh float64 `json:"speedKmh"` SOCPercent float64 `json:"socPercent"` SOCAvailable bool `json:"socAvailable"` DirectionDeg *int64 `json:"directionDeg,omitempty"` AlarmFlag *int64 `json:"alarmFlag,omitempty"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` } type TrackPlaybackSource struct { Protocol string `json:"protocol"` PointCount int `json:"pointCount"` StartTime string `json:"startTime"` EndTime string `json:"endTime"` } // TrackCoverage makes a bounded replay query explicit. Complete=false means // summaries describe only the fetched slice, never the whole requested range. type TrackCoverage struct { RequestedStart string `json:"requestedStart"` RequestedEnd string `json:"requestedEnd"` ActualStart string `json:"actualStart"` ActualEnd string `json:"actualEnd"` TotalPoints int `json:"totalPoints"` FetchedPoints int `json:"fetchedPoints"` ProcessedPoints int `json:"processedPoints"` ReturnedPoints int `json:"returnedPoints"` Complete bool `json:"complete"` LimitReasons []string `json:"limitReasons"` Evidence string `json:"evidence"` } // TrackSegment is inferred from GPS movement and gaps. It deliberately does // not claim ignition state because vehicle_locations does not contain it. type TrackSegment struct { Index int `json:"index"` Type string `json:"type"` Title string `json:"title"` StartTime string `json:"startTime"` EndTime string `json:"endTime"` DurationSeconds int64 `json:"durationSeconds"` DistanceKm float64 `json:"distanceKm"` PointCount int `json:"pointCount"` StartIndex int `json:"startIndex"` EndIndex int `json:"endIndex"` SampledStartIndex int `json:"sampledStartIndex"` SampledEndIndex int `json:"sampledEndIndex"` } type TrackStop struct { Index int `json:"index"` StartTime string `json:"startTime"` EndTime string `json:"endTime"` DurationSeconds int64 `json:"durationSeconds"` PointCount int `json:"pointCount"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SampledIndex int `json:"sampledIndex"` Evidence string `json:"evidence"` startIndex int endIndex int } type TrackQuality struct { Status string `json:"status"` SelectedProtocol string `json:"selectedProtocol"` RawPoints int `json:"rawPoints"` ValidPoints int `json:"validPoints"` AlternateSourcePoints int `json:"alternateSourcePoints"` InvalidCoordinatePoints int `json:"invalidCoordinatePoints"` DuplicatePoints int `json:"duplicatePoints"` DriftPoints int `json:"driftPoints"` SourceSwitches int `json:"sourceSwitches"` LargeGapCount int `json:"largeGapCount"` MaximumGapSeconds int64 `json:"maximumGapSeconds"` Evidence string `json:"evidence"` } type HistoryMetricCatalog struct { Categories []HistoryDataCategory `json:"categories"` Metrics []HistoryMetricDefinition `json:"metrics"` } type MetricCatalog struct { Metrics []MetricDefinition `json:"metrics"` AsOf string `json:"asOf"` } type MetricDefinition struct { Key string `json:"key"` Label string `json:"label"` Description string `json:"description"` Unit string `json:"unit"` Category string `json:"category"` ValueType string `json:"valueType"` Protocols []string `json:"protocols"` SourceFields map[string]string `json:"sourceFields"` Searchable bool `json:"searchable"` Chartable bool `json:"chartable"` Alertable bool `json:"alertable"` } type HistoryDataCategory struct { Key string `json:"key"` Label string `json:"label"` } type HistoryMetricDefinition struct { Key string `json:"key"` Label string `json:"label"` Unit string `json:"unit"` Category string `json:"category"` ValueType string `json:"valueType"` DefaultVisible bool `json:"defaultVisible"` } type HistoryDataResponse struct { Category string `json:"category"` Columns []HistoryMetricDefinition `json:"columns"` Rows []HistoryDataRow `json:"rows"` Summary HistoryDataSummary `json:"summary"` Total int `json:"total"` Limit int `json:"limit"` Offset int `json:"offset"` AsOf string `json:"asOf"` } type HistoryDataSummary struct { ResultRows int `json:"resultRows"` VehicleCount int `json:"vehicleCount"` Sources []string `json:"sources"` QueryDuration int64 `json:"queryDurationMs"` } type HistoryDataRow struct { ID string `json:"id"` VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` DeviceTime string `json:"deviceTime"` ServerTime string `json:"serverTime"` Quality string `json:"quality"` QualityReason string `json:"qualityReason"` EvidenceID string `json:"evidenceId,omitempty"` Values map[string]any `json:"values"` } type HistorySeriesResponse struct { Metrics []HistoryMetricDefinition `json:"metrics"` Series []HistorySeries `json:"series"` Summary HistorySeriesSummary `json:"summary"` DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` AsOf string `json:"asOf"` } type HistorySeries struct { VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` Metric string `json:"metric"` Label string `json:"label"` Unit string `json:"unit"` Aggregation string `json:"aggregation"` Points []HistorySeriesPoint `json:"points"` } type HistorySeriesPoint struct { Time string `json:"time"` Value *float64 `json:"value"` Min *float64 `json:"min"` Max *float64 `json:"max"` Count int64 `json:"count"` } type HistorySeriesSummary struct { RawPointCount int64 `json:"rawPointCount"` BucketCount int `json:"bucketCount"` ReturnedPointCount int `json:"returnedPointCount"` SeriesCount int `json:"seriesCount"` GrainSeconds int `json:"grainSeconds"` TargetPoints int `json:"targetPoints"` ExpectedBucketCount int `json:"expectedBucketCount"` MissingBucketCount int `json:"missingBucketCount"` QueryDuration int64 `json:"queryDurationMs"` Complete bool `json:"complete"` Evidence string `json:"evidence"` } type HistoryLocationSeriesQuery struct { VIN string Protocol string DateFrom string DateTo string GrainSeconds int } type HistoryLocationSeriesBucket struct { Time string Protocol string Count int64 SpeedAverage *float64 SpeedMinimum *float64 SpeedMaximum *float64 SpeedLast *float64 MileageAverage *float64 MileageMinimum *float64 MileageMaximum *float64 MileageLast *float64 } type HistoryExportRequest struct { Keywords []string `json:"keywords"` Category string `json:"category"` Protocol string `json:"protocol"` DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` Metrics []string `json:"metrics"` Format string `json:"format"` } type HistoryExportVehicleScope struct { VIN string `json:"vin"` DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` } type HistoryExportJob struct { ID string `json:"id"` Name string `json:"name"` Status string `json:"status"` Progress int `json:"progress"` Format string `json:"format"` Category string `json:"category"` Protocol string `json:"protocol,omitempty"` Keywords []string `json:"keywords"` Metrics []string `json:"metrics,omitempty"` VehicleVINs []string `json:"vehicleVins"` VehicleScopes []HistoryExportVehicleScope `json:"vehicleScopes"` DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` OwnerID string `json:"ownerId"` OwnerSubjectID string `json:"ownerSubjectId,omitempty"` OwnerName string `json:"ownerName"` OwnerUsername string `json:"ownerUsername"` OwnerRole string `json:"ownerRole"` OwnerUserType string `json:"ownerUserType"` AuthProvider string `json:"authProvider"` CustomerRef string `json:"customerRef,omitempty"` TenantRef string `json:"tenantRef,omitempty"` RowCount int `json:"rowCount"` TotalRows int64 `json:"totalRows"` ProcessedRows int64 `json:"processedRows"` FileSizeBytes int64 `json:"fileSizeBytes"` Error string `json:"error,omitempty"` DownloadURL string `json:"downloadUrl,omitempty"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` CompletedAt string `json:"completedAt,omitempty"` Evidence string `json:"evidence"` filePath string } type HistoryExportStoreQuery struct { Category string VIN string Protocol string DateFrom string DateTo string Metrics []string } type HistoryExportCursor struct { Time string Protocol string ID string Offset int } type AccessQuery struct { Keyword string `json:"keyword"` Protocol string `json:"protocol"` OEM string `json:"oem"` Model string `json:"model"` Provider string `json:"provider"` FirstSeenFrom string `json:"firstSeenFrom"` FirstSeenTo string `json:"firstSeenTo"` LatestSeenFrom string `json:"latestSeenFrom"` LatestSeenTo string `json:"latestSeenTo"` OnlineState string `json:"onlineState"` DelayState string `json:"delayState"` ConnectionState string `json:"connectionState"` Limit int `json:"limit"` Offset int `json:"offset"` } type AccessEvidenceRow struct { VIN string Plate string OEM string Model string Company string Protocol string Provider string Source string FirstSeenAt string LatestEventAt string LatestReceivedAt string LatestUpdatedAt string ReportIntervalSec *int LatestMessageType string LatestEventID string LatestError string FirstSeenEvidence string FirstSeenSource string ReportIntervalProof string ReportSampleCount int64 Longitude float64 Latitude float64 SpeedKmh float64 SOCPercent float64 TotalMileageKm float64 DailyMileageKm float64 } type AccessVehicleRow struct { VIN string `json:"vin"` Plate string `json:"plate"` OEM string `json:"oem"` Model string `json:"model"` Company string `json:"company"` Protocol string `json:"protocol"` Provider string `json:"provider"` Source string `json:"source"` FirstSeenAt string `json:"firstSeenAt"` LatestEventAt string `json:"latestEventAt"` LatestReceivedAt string `json:"latestReceivedAt"` ReportIntervalSec *int `json:"reportIntervalSec"` DataDelaySec *int `json:"dataDelaySec"` FreshnessSec *int `json:"freshnessSec"` OnlineState string `json:"onlineState"` ThresholdSec int `json:"thresholdSec"` LatestMessageType string `json:"latestMessageType"` LatestEventID string `json:"latestEventId"` LatestError string `json:"latestError"` DelayAbnormal bool `json:"delayAbnormal"` FirstSeenEvidence string `json:"firstSeenEvidence"` FirstSeenSource string `json:"firstSeenSource"` ReportIntervalProof string `json:"reportIntervalEvidence"` ReportSampleCount int64 `json:"reportSampleCount"` ExpectedProtocols []string `json:"expectedProtocols"` ActualProtocols []string `json:"actualProtocols"` MissingProtocols []string `json:"missingProtocols"` ProtocolStatuses []AccessProtocolStatus `json:"protocolStatuses"` MasterDataIssues []string `json:"masterDataIssues"` ConnectionState string `json:"connectionState"` ExpectationEvidence string `json:"expectationEvidence"` } type AccessProtocolStatus struct { Protocol string `json:"protocol"` Expected bool `json:"expected"` Connected bool `json:"connected"` Provider string `json:"provider"` FirstSeenAt string `json:"firstSeenAt"` LatestEventAt string `json:"latestEventAt"` LatestReceivedAt string `json:"latestReceivedAt"` ReportIntervalSec *int `json:"reportIntervalSec"` DataDelaySec *int `json:"dataDelaySec"` FreshnessSec *int `json:"freshnessSec"` OnlineState string `json:"onlineState"` ThresholdSec int `json:"thresholdSec"` DelayAbnormal bool `json:"delayAbnormal"` FirstSeenEvidence string `json:"firstSeenEvidence"` ReportIntervalEvidence string `json:"reportIntervalEvidence"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SpeedKmh float64 `json:"speedKmh"` SOCPercent float64 `json:"socPercent"` TotalMileageKm float64 `json:"totalMileageKm"` DailyMileageKm float64 `json:"dailyMileageKm"` } type AccessUnresolvedIdentityQuery struct { Keyword string `json:"keyword"` Protocol string `json:"protocol"` Limit int `json:"limit"` Offset int `json:"offset"` } type AccessUnresolvedIdentity struct { ID string `json:"id"` Protocol string `json:"protocol"` IdentifierMasked string `json:"identifierMasked"` Plate string `json:"plate"` Manufacturer string `json:"manufacturer"` SourceEndpoint string `json:"sourceEndpoint"` FirstRegisteredAt string `json:"firstRegisteredAt"` LatestRegisteredAt string `json:"latestRegisteredAt"` LatestAuthenticatedAt string `json:"latestAuthenticatedAt"` LatestSeenAt string `json:"latestSeenAt"` FreshnessSec int `json:"freshnessSec"` IssueCode string `json:"issueCode"` RecommendedAction string `json:"recommendedAction"` } type AccessDistribution struct { Name string `json:"name"` Total int `json:"total"` Online int `json:"online"` OnlineRate float64 `json:"onlineRate"` } type AccessSummary struct { TotalVehicles int `json:"totalVehicles"` OnlineVehicles int `json:"onlineVehicles"` OfflineVehicles int `json:"offlineVehicles"` LongOfflineVehicles int `json:"longOfflineVehicles"` NeverReported int `json:"neverReported"` UnknownVehicles int `json:"unknownVehicles"` DelayAbnormal int `json:"delayAbnormal"` ReportedToday int `json:"reportedToday"` HealthyVehicles int `json:"healthyVehicles"` IncompleteVehicles int `json:"incompleteVehicles"` DegradedVehicles int `json:"degradedVehicles"` MasterDataIncompleteVehicles int `json:"masterDataIncompleteVehicles"` OnlineRate float64 `json:"onlineRate"` Protocols []AccessDistribution `json:"protocols"` OEMs []AccessDistribution `json:"oems"` AsOf string `json:"asOf"` ThresholdVersion int `json:"thresholdVersion"` } type AccessProtocolThreshold struct { Protocol string `json:"protocol"` ThresholdSec int `json:"thresholdSec"` } type AccessThresholdAudit struct { Version int `json:"version"` Actor string `json:"actor"` ChangedAt string `json:"changedAt"` Summary string `json:"summary"` } type AccessThresholdConfig struct { Version int `json:"version"` DefaultThresholdSec int `json:"defaultThresholdSec"` DelayThresholdSec int `json:"delayThresholdSec"` LongOfflineSec int `json:"longOfflineSec"` Protocols []AccessProtocolThreshold `json:"protocols"` UpdatedBy string `json:"updatedBy"` UpdatedAt string `json:"updatedAt"` Audit []AccessThresholdAudit `json:"audit"` } type AccessThresholdUpdate struct { Version int `json:"version"` DefaultThresholdSec int `json:"defaultThresholdSec"` DelayThresholdSec int `json:"delayThresholdSec"` LongOfflineSec int `json:"longOfflineSec"` Protocols []AccessProtocolThreshold `json:"protocols"` Actor string `json:"actor"` } type AlertQuery struct { Keyword string `json:"keyword"` Severity string `json:"severity"` Status string `json:"status"` RuleID string `json:"ruleId"` Protocol string `json:"protocol"` DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` Limit int `json:"limit"` Offset int `json:"offset"` } type AlertSummary struct { Active int `json:"active"` Unprocessed int `json:"unprocessed"` Processing int `json:"processing"` Recovered int `json:"recovered"` Closed int `json:"closed"` Ignored int `json:"ignored"` UnreadNotifications int `json:"unreadNotifications"` AsOf string `json:"asOf"` } type AlertRule struct { ID string `json:"id"` Name string `json:"name"` Description string `json:"description"` Severity string `json:"severity"` ValueType string `json:"valueType"` Metric string `json:"metric"` Operator string `json:"operator"` Threshold float64 `json:"threshold"` ThresholdHigh float64 `json:"thresholdHigh"` BooleanThreshold *bool `json:"booleanThreshold,omitempty"` DurationSec int `json:"durationSec"` RecoveryOperator string `json:"recoveryOperator"` RecoveryThreshold float64 `json:"recoveryThreshold"` RepeatIntervalSec int `json:"repeatIntervalSec"` ScopeProtocols []string `json:"scopeProtocols"` ScopeVINs []string `json:"scopeVins"` ScopeOEMs []string `json:"scopeOems"` ScopeModels []string `json:"scopeModels"` ScopeCompanies []string `json:"scopeCompanies"` NotificationChannels []string `json:"notificationChannels"` Enabled bool `json:"enabled"` Version int `json:"version"` CreatedBy string `json:"createdBy"` UpdatedBy string `json:"updatedBy"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } type AlertRuleInput struct { ID string `json:"id"` Name string `json:"name"` Description string `json:"description"` Severity string `json:"severity"` ValueType string `json:"valueType"` Metric string `json:"metric"` Operator string `json:"operator"` Threshold float64 `json:"threshold"` ThresholdHigh float64 `json:"thresholdHigh"` BooleanThreshold *bool `json:"booleanThreshold,omitempty"` DurationSec int `json:"durationSec"` RecoveryOperator string `json:"recoveryOperator"` RecoveryThreshold float64 `json:"recoveryThreshold"` RepeatIntervalSec int `json:"repeatIntervalSec"` ScopeProtocols []string `json:"scopeProtocols"` ScopeVINs []string `json:"scopeVins"` ScopeOEMs []string `json:"scopeOems"` ScopeModels []string `json:"scopeModels"` ScopeCompanies []string `json:"scopeCompanies"` NotificationChannels []string `json:"notificationChannels"` Enabled bool `json:"enabled"` Version int `json:"version"` Actor string `json:"actor"` } type AlertRuleEnabledUpdate struct { Version int `json:"version"` Enabled bool `json:"enabled"` Actor string `json:"actor"` } type AlertEvent struct { ID string `json:"id"` RuleID string `json:"ruleId"` RuleName string `json:"ruleName"` RuleVersion int `json:"ruleVersion"` Severity string `json:"severity"` Status string `json:"status"` VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` Metric string `json:"metric"` Operator string `json:"operator"` TriggerValue float64 `json:"triggerValue"` Threshold float64 `json:"threshold"` ThresholdHigh float64 `json:"thresholdHigh"` Unit string `json:"unit"` DurationSec int `json:"durationSec"` Location string `json:"location"` Longitude *float64 `json:"longitude,omitempty"` Latitude *float64 `json:"latitude,omitempty"` SourceEventID string `json:"sourceEventId"` EventAt string `json:"eventAt"` ReceivedAt string `json:"receivedAt"` TriggeredAt string `json:"triggeredAt"` RecoveredAt string `json:"recoveredAt"` Handler string `json:"handler"` Version int `json:"version"` Actions []AlertAction `json:"actions,omitempty"` } type AlertAction struct { ID int64 `json:"id"` Action string `json:"action"` FromStatus string `json:"fromStatus"` ToStatus string `json:"toStatus"` Actor string `json:"actor"` Note string `json:"note"` CreatedAt string `json:"createdAt"` } type AlertActionRequest struct { Version int `json:"version"` Action string `json:"action"` Actor string `json:"actor"` Note string `json:"note"` } type AlertNotification struct { ID int64 `json:"id"` EventID string `json:"eventId"` Title string `json:"title"` Content string `json:"content"` Severity string `json:"severity"` Channel string `json:"channel"` Read bool `json:"read"` CreatedAt string `json:"createdAt"` ReadAt string `json:"readAt"` } type AlertNotificationQuery struct { UnreadOnly bool `json:"unreadOnly"` Limit int `json:"limit"` Offset int `json:"offset"` } type AlertNotificationReadRequest struct { IDs []int64 `json:"ids"` Actor string `json:"actor"` } type ReconciliationQuery struct { Keyword string `json:"keyword"` RuleCode string `json:"ruleCode"` Category string `json:"category"` Severity string `json:"severity"` Status string `json:"status"` Limit int `json:"limit"` Offset int `json:"offset"` } type ReconciliationIssue struct { ID string `json:"id"` RuleCode string `json:"ruleCode"` Category string `json:"category"` Severity string `json:"severity"` Status string `json:"status"` VIN string `json:"vin"` Plate string `json:"plate"` ProtocolA string `json:"protocolA"` ProtocolB string `json:"protocolB"` Title string `json:"title"` Summary string `json:"summary"` Evidence map[string]any `json:"evidence"` FirstSeenAt string `json:"firstSeenAt"` LastSeenAt string `json:"lastSeenAt"` OccurrenceCount int64 `json:"occurrenceCount"` RecoveredAt string `json:"recoveredAt"` ResolutionNote string `json:"resolutionNote"` ResolvedBy string `json:"resolvedBy"` Version int `json:"version"` Actions []ReconciliationAction `json:"actions,omitempty"` } type ReconciliationAction struct { ID int64 `json:"id"` Action string `json:"action"` FromStatus string `json:"fromStatus"` ToStatus string `json:"toStatus"` Actor string `json:"actor"` Note string `json:"note"` CreatedAt string `json:"createdAt"` } type ReconciliationActionRequest struct { Version int `json:"version"` Status string `json:"status"` Note string `json:"note"` Actor string `json:"actor"` } type ReconciliationBucket struct { Name string `json:"name"` Count int `json:"count"` } type ReconciliationTrendPoint struct { Date string `json:"date"` Detected int `json:"detected"` New int `json:"new"` Active int `json:"active"` Recovered int `json:"recovered"` } type ReconciliationSummary struct { Active int `json:"active"` Pending int `json:"pending"` Confirmed int `json:"confirmed"` Recovered int `json:"recovered"` OverSLA int `json:"overSla"` ByRule []ReconciliationBucket `json:"byRule"` BySeverity []ReconciliationBucket `json:"bySeverity"` Trend []ReconciliationTrendPoint `json:"trend"` LastRunAt string `json:"lastRunAt"` AsOf string `json:"asOf"` } type ReconciliationEvaluationResult struct { RunID string `json:"runId"` Detected int `json:"detected"` New int `json:"new"` Active int `json:"active"` Recovered int `json:"recovered"` RuleCounts map[string]int `json:"ruleCounts"` AsOf string `json:"asOf"` } type AlertEvaluationResult struct { RulesEvaluated int `json:"rulesEvaluated"` VehiclesScanned int `json:"vehiclesScanned"` CandidatesAdvanced int `json:"candidatesAdvanced"` DuplicateObservations int `json:"duplicateObservations"` LateObservations int `json:"lateObservations"` StaleEvidenceSkipped int `json:"staleEvidenceSkipped"` Opened int `json:"opened"` Recovered int `json:"recovered"` AsOf string `json:"asOf"` } type DashboardSummary struct { OnlineVehicles int `json:"onlineVehicles"` ActiveToday int `json:"activeToday"` FrameToday int `json:"frameToday"` IssueVehicles int `json:"issueVehicles"` KafkaLag *int `json:"kafkaLag"` Protocols []ProtocolStat `json:"protocols"` ServiceStatuses []ServiceStatusStat `json:"serviceStatuses"` LinkHealth []LinkHealth `json:"linkHealth"` } type ProtocolStat struct { Protocol string `json:"protocol"` Online int `json:"online"` Total int `json:"total"` } type ServiceStatusStat struct { Status string `json:"status"` Title string `json:"title"` Count int `json:"count"` } type LinkHealth struct { Name string `json:"name"` Status string `json:"status"` Detail string `json:"detail,omitempty"` } type VehicleRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocol string `json:"protocol"` Online bool `json:"online"` LastSeen string `json:"lastSeen"` LocationText string `json:"locationText"` BindingScore int `json:"bindingScore"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` } type VehicleCoverageRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocols []string `json:"protocols"` MissingProtocols []string `json:"missingProtocols"` SourceStatus []VehicleSourceStatus `json:"sourceStatus"` SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` Online bool `json:"online"` LastSeen string `json:"lastSeen"` BindingStatus string `json:"bindingStatus"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` SourceConsistency *VehicleSourceConsistency `json:"sourceConsistency,omitempty"` } type VehicleCoverageSummary struct { TotalVehicles int `json:"totalVehicles"` OnlineVehicles int `json:"onlineVehicles"` SingleSourceVehicles int `json:"singleSourceVehicles"` MultiSourceVehicles int `json:"multiSourceVehicles"` NoDataVehicles int `json:"noDataVehicles"` UnboundVehicles int `json:"unboundVehicles"` ArchiveIncompleteVehicles int `json:"archiveIncompleteVehicles"` MissingSources []MissingSourceStat `json:"missingSources"` ArchiveMissingFields []ArchiveMissingFieldStat `json:"archiveMissingFields"` } type VehicleIdentityResolution struct { LookupKey string `json:"lookupKey"` Resolved bool `json:"resolved"` VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocols []string `json:"protocols"` Online bool `json:"online"` LastSeen string `json:"lastSeen"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` } type VehicleDetail struct { VIN string `json:"vin"` LookupKey string `json:"lookupKey"` LookupResolved bool `json:"lookupResolved"` Resolution *VehicleIdentityResolution `json:"resolution,omitempty"` Identity *VehicleRow `json:"identity,omitempty"` Profile *VehicleProfile `json:"profile,omitempty"` RealtimeSummary *VehicleRealtimeRow `json:"realtimeSummary,omitempty"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` ServiceOverview *VehicleServiceOverview `json:"serviceOverview,omitempty"` SourceConsistency *VehicleSourceConsistency `json:"sourceConsistency,omitempty"` Sources []string `json:"sources"` SourceStatus []VehicleSourceStatus `json:"sourceStatus"` Realtime []RealtimeLocationRow `json:"realtime"` History Page[HistoryLocationRow] `json:"history"` Raw Page[RawFrameRow] `json:"raw"` Mileage Page[DailyMileageRow] `json:"mileage"` Quality Page[QualityIssueRow] `json:"quality"` } type VehicleProfile struct { VIN string `json:"vin"` ModelName string `json:"modelName"` VehicleType string `json:"vehicleType"` CompanyName string `json:"companyName"` OperationStatus string `json:"operationStatus"` AccessProvider string `json:"accessProvider"` FirstAccessAt string `json:"firstAccessAt"` RuntimeSeconds *int64 `json:"runtimeSeconds"` SourceSystem string `json:"sourceSystem"` SourceVersion string `json:"sourceVersion"` SyncedAt string `json:"syncedAt"` Version int `json:"version"` UpdatedBy string `json:"updatedBy"` UpdatedAt string `json:"updatedAt"` Completeness int `json:"completeness"` MissingFields []string `json:"missingFields"` } type VehicleProfileInput struct { ModelName string `json:"modelName"` VehicleType string `json:"vehicleType"` CompanyName string `json:"companyName"` OperationStatus string `json:"operationStatus"` AccessProvider string `json:"accessProvider"` FirstAccessAt string `json:"firstAccessAt"` RuntimeSeconds *int64 `json:"runtimeSeconds"` Version int `json:"version"` Actor string `json:"actor"` } type VehicleProfileSyncItem struct { VIN string `json:"vin"` ModelName string `json:"modelName"` VehicleType string `json:"vehicleType"` CompanyName string `json:"companyName"` OperationStatus string `json:"operationStatus"` AccessProvider string `json:"accessProvider"` FirstAccessAt string `json:"firstAccessAt"` RuntimeSeconds *int64 `json:"runtimeSeconds"` } type VehicleProfileSyncRequest struct { SourceSystem string `json:"sourceSystem"` SourceVersion string `json:"sourceVersion"` ConflictPolicy string `json:"conflictPolicy"` DryRun bool `json:"dryRun"` Items []VehicleProfileSyncItem `json:"items"` Actor string `json:"actor"` } type VehicleProfileSyncItemResult struct { VIN string `json:"vin"` Status string `json:"status"` PreviousSource string `json:"previousSource,omitempty"` PreviousVersion string `json:"previousVersion,omitempty"` ProfileVersion int `json:"profileVersion,omitempty"` } type VehicleProfileSyncResult struct { SourceSystem string `json:"sourceSystem"` SourceVersion string `json:"sourceVersion"` DryRun bool `json:"dryRun"` Received int `json:"received"` Created int `json:"created"` Updated int `json:"updated"` Unchanged int `json:"unchanged"` Conflicted int `json:"conflicted"` Missing int `json:"missing"` Items []VehicleProfileSyncItemResult `json:"items"` } type VehicleSourceConsistency struct { SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` LocatedSourceCount int `json:"locatedSourceCount"` MissingProtocols []string `json:"missingProtocols"` MileageDeltaKm float64 `json:"mileageDeltaKm"` SourceTimeDeltaSeconds float64 `json:"sourceTimeDeltaSeconds"` Scope string `json:"scope"` Status string `json:"status"` Severity string `json:"severity"` Title string `json:"title"` Detail string `json:"detail"` } type VehicleSourceEvidence struct { VIN string `json:"vin"` Plate string `json:"plate"` MileageDate string `json:"mileageDate"` RecommendedLocationProtocol string `json:"recommendedLocationProtocol"` RecommendedLocationLabel string `json:"recommendedLocationLabel"` LocationConflict bool `json:"locationConflict"` ConflictDistanceM *float64 `json:"conflictDistanceM,omitempty"` LocationSources []VehicleLocationSourceEvidence `json:"locationSources"` MileageSources []VehicleMileageSourceEvidence `json:"mileageSources"` Comparison VehicleSourceEvidenceComparison `json:"comparison"` AsOf string `json:"asOf"` } type VehicleLocationSourceEvidence struct { Protocol string `json:"protocol"` SourceLabel string `json:"sourceLabel"` TerminalLabel string `json:"terminalLabel"` SourceKind string `json:"sourceKind"` SourceRef string `json:"sourceRef,omitempty"` SelectedWithinProtocol bool `json:"selectedWithinProtocol"` Recommended bool `json:"recommended"` Enabled bool `json:"enabled"` Priority int `json:"priority"` Online bool `json:"online"` QualityStatus string `json:"qualityStatus"` QualityReason string `json:"qualityReason"` Longitude *float64 `json:"longitude,omitempty"` Latitude *float64 `json:"latitude,omitempty"` SpeedKmh *float64 `json:"speedKmh,omitempty"` TotalMileageKm *float64 `json:"totalMileageKm,omitempty"` SOCPercent *float64 `json:"socPercent,omitempty"` EventTime string `json:"eventTime"` ReceivedAt string `json:"receivedAt"` FirstSeenAt string `json:"firstSeenAt,omitempty"` ReportIntervalSec *int `json:"reportIntervalSec,omitempty"` ReportSampleCount int64 `json:"reportSampleCount,omitempty"` SelectionReason string `json:"selectionReason,omitempty"` sourceKey string } type VehicleMileageSourceEvidence struct { Protocol string `json:"protocol"` SourceLabel string `json:"sourceLabel"` TerminalLabel string `json:"terminalLabel"` SourceKind string `json:"sourceKind"` SelectedWithinProtocol bool `json:"selectedWithinProtocol"` Recommended bool `json:"recommended"` Enabled bool `json:"enabled"` Priority int `json:"priority"` QualityStatus string `json:"qualityStatus"` QualityReason string `json:"qualityReason"` FirstTotalMileageKm *float64 `json:"firstTotalMileageKm,omitempty"` LatestTotalMileageKm *float64 `json:"latestTotalMileageKm,omitempty"` DailyMileageKm *float64 `json:"dailyMileageKm,omitempty"` SampleCount int64 `json:"sampleCount"` FirstEventTime string `json:"firstEventTime"` LatestEventTime string `json:"latestEventTime"` sourceKey string } type VehicleSourceEvidenceComparison struct { LocationMaxDistanceM float64 `json:"locationMaxDistanceM"` TotalMileageDeltaKm float64 `json:"totalMileageDeltaKm"` DailyMileageDeltaKm float64 `json:"dailyMileageDeltaKm"` ReportTimeDeltaSeconds float64 `json:"reportTimeDeltaSeconds"` } type VehicleSourceDiagnostic struct { Evidence VehicleSourceEvidence `json:"evidence"` Access *AccessVehicleRow `json:"access,omitempty"` Policy VehicleSourcePolicyConfig `json:"policy"` RecommendationReason string `json:"recommendationReason"` RefreshHint string `json:"refreshHint"` } type VehicleSourcePolicyConfig struct { VIN string `json:"vin"` Version int `json:"version"` UpdatedBy string `json:"updatedBy"` UpdatedAt string `json:"updatedAt"` Audit []VehicleSourcePolicyAudit `json:"audit"` } type VehicleSourcePolicyAudit struct { Version int `json:"version"` Protocol string `json:"protocol"` SourceRef string `json:"sourceRef"` SourceLabel string `json:"sourceLabel"` Actor string `json:"actor"` ChangedAt string `json:"changedAt"` Summary string `json:"summary"` } type VehicleSourcePolicyUpdate struct { Version int `json:"version"` SourceRef string `json:"sourceRef"` Enabled bool `json:"enabled"` Priority int `json:"priority"` Remark string `json:"remark"` Actor string `json:"actor"` } type vehicleSourcePolicyStoreUpdate struct { VehicleSourcePolicyUpdate VIN string Protocol string SourceKey string SourceLabel string CurrentEnabled bool CurrentPriority int CurrentRemark string } type vehicleLocationSourceHistory struct { Protocol string sourceKey string FirstSeenAt string LastSeenAt string ReportSampleCount int64 } type VehicleServiceOverview struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocols []string `json:"protocols"` PrimaryProtocol string `json:"primaryProtocol"` CoverageStatus string `json:"coverageStatus"` SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` LastSeen string `json:"lastSeen"` RealtimeCount int `json:"realtimeCount"` HistoryCount int `json:"historyCount"` RawCount int `json:"rawCount"` MileageCount int `json:"mileageCount"` QualityIssueCount int `json:"qualityIssueCount"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` SourceConsistency *VehicleSourceConsistency `json:"sourceConsistency,omitempty"` } type VehicleServiceSummary struct { TotalVehicles int `json:"totalVehicles"` BoundVehicles int `json:"boundVehicles"` OnlineVehicles int `json:"onlineVehicles"` SingleSourceVehicles int `json:"singleSourceVehicles"` MultiSourceVehicles int `json:"multiSourceVehicles"` NoDataVehicles int `json:"noDataVehicles"` IdentityRequiredVehicles int `json:"identityRequiredVehicles"` ArchiveIncompleteVehicles int `json:"archiveIncompleteVehicles"` ServiceStatuses []ServiceStatusStat `json:"serviceStatuses"` Protocols []ProtocolStat `json:"protocols"` MissingSources []MissingSourceStat `json:"missingSources"` ArchiveMissingFields []ArchiveMissingFieldStat `json:"archiveMissingFields"` } type VehicleServiceStatus struct { Status string `json:"status"` Severity string `json:"severity"` Title string `json:"title"` Detail string `json:"detail"` SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` } type MissingSourceStat struct { Protocol string `json:"protocol"` Count int `json:"count"` } type SourceReadinessPlan struct { TotalVehicles int `json:"totalVehicles"` BoundVehicles int `json:"boundVehicles"` IdentityRequiredVehicles int `json:"identityRequiredVehicles"` OnlineVehicles int `json:"onlineVehicles"` KafkaLag *int `json:"kafkaLag"` ActiveConnections *int `json:"activeConnections"` RedisOnlineKeys *int `json:"redisOnlineKeys"` PlatformRelease string `json:"platformRelease"` Sources []SourceReadinessRow `json:"sources"` } type SourceReadinessRow struct { Protocol string `json:"protocol"` Role string `json:"role"` Online int `json:"online"` Total int `json:"total"` OnlineRate float64 `json:"onlineRate"` MissingVehicles int `json:"missingVehicles"` Severity string `json:"severity"` Status string `json:"status"` Evidence string `json:"evidence"` Action string `json:"action"` Acceptance string `json:"acceptance"` VehiclesHash string `json:"vehiclesHash"` RealtimeHash string `json:"realtimeHash"` HistoryHash string `json:"historyHash"` AlertHash string `json:"alertHash"` } type ArchiveMissingFieldStat struct { Field string `json:"field"` Title string `json:"title"` Count int `json:"count"` } type VehicleSourceStatus struct { Protocol string `json:"protocol"` Online bool `json:"online"` LastSeen string `json:"lastSeen"` HasRealtime bool `json:"hasRealtime"` HasHistory bool `json:"hasHistory"` HasRaw bool `json:"hasRaw"` HasMileage bool `json:"hasMileage"` } type RealtimeLocationRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SpeedKmh float64 `json:"speedKmh"` SOCPercent float64 `json:"socPercent"` TotalMileageKm float64 `json:"totalMileageKm"` LastSeen string `json:"lastSeen"` } type VehicleRealtimeRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocols []string `json:"protocols"` SourceStatus []VehicleSourceStatus `json:"sourceStatus"` SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` Online bool `json:"online"` BindingStatus string `json:"bindingStatus"` ServiceStatus *VehicleServiceStatus `json:"serviceStatus,omitempty"` PrimaryProtocol string `json:"primaryProtocol"` LocationSource string `json:"locationSource"` LocationConflict bool `json:"locationConflict"` ConflictDistanceM *float64 `json:"conflictDistanceM,omitempty"` LocationAvailable bool `json:"locationAvailable"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SpeedAvailable bool `json:"speedAvailable"` SpeedKmh float64 `json:"speedKmh"` SOCAvailable bool `json:"socAvailable"` SOCPercent float64 `json:"socPercent"` MileageAvailable bool `json:"mileageAvailable"` TotalMileageKm float64 `json:"totalMileageKm"` TodayMileageAvailable bool `json:"todayMileageAvailable"` TodayMileageKm float64 `json:"todayMileageKm"` LastSeen string `json:"lastSeen"` ReportIntervalMs *int64 `json:"reportIntervalMs,omitempty"` } type HistoryLocationRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` Longitude float64 `json:"longitude"` Latitude float64 `json:"latitude"` SpeedKmh float64 `json:"speedKmh"` SOCPercent float64 `json:"socPercent"` SOCAvailable bool `json:"socAvailable"` DirectionDeg *int64 `json:"directionDeg,omitempty"` AlarmFlag *int64 `json:"alarmFlag,omitempty"` TotalMileageKm float64 `json:"totalMileageKm"` DeviceTime string `json:"deviceTime"` ServerTime string `json:"serverTime"` } type RawFrameRow struct { ID string `json:"id"` VIN string `json:"vin"` Plate string `json:"plate"` Protocol string `json:"protocol"` FrameType string `json:"frameType"` DeviceTime string `json:"deviceTime"` ServerTime string `json:"serverTime"` RawSizeBytes int `json:"rawSizeBytes"` ParseStatus string `json:"parseStatus,omitempty"` ParseError string `json:"parseError,omitempty"` SourceEndpoint string `json:"sourceEndpoint,omitempty"` ParsedFields map[string]any `json:"parsedFields"` } type LatestTelemetryCategory struct { Key string `json:"key"` Label string `json:"label"` Count int `json:"count"` } type LatestTelemetryValue struct { Key string `json:"key"` SourceField string `json:"sourceField"` Label string `json:"label"` Description string `json:"description,omitempty"` Unit string `json:"unit"` Category string `json:"category"` ValueType string `json:"valueType"` Value any `json:"value"` Protocol string `json:"protocol"` SourceEndpoint string `json:"sourceEndpoint,omitempty"` FrameID string `json:"frameId"` DeviceTime string `json:"deviceTime"` ServerTime string `json:"serverTime"` Quality string `json:"quality"` QualityReason string `json:"qualityReason"` FreshnessSeconds int64 `json:"freshnessSeconds"` DataDelaySeconds *int64 `json:"dataDelaySeconds,omitempty"` } type LatestTelemetryResponse struct { VIN string `json:"vin"` Categories []LatestTelemetryCategory `json:"categories"` Values []LatestTelemetryValue `json:"values"` AsOf string `json:"asOf"` StaleAfterSeconds int64 `json:"staleAfterSeconds"` ScannedFrames int `json:"scannedFrames"` Evidence string `json:"evidence"` } type DailyMileageRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Date string `json:"date"` StartMileageKm float64 `json:"startMileageKm"` EndMileageKm float64 `json:"endMileageKm"` DailyMileageKm float64 `json:"dailyMileageKm"` Source string `json:"source"` AnomalySeverity string `json:"anomalySeverity,omitempty"` } type MileageSummary struct { VehicleCount int `json:"vehicleCount"` RecordCount int `json:"recordCount"` SourceCount int `json:"sourceCount"` TotalMileageKm float64 `json:"totalMileageKm"` AverageMileagePerVIN float64 `json:"averageMileagePerVin"` } type MileageTrendPoint struct { Date string `json:"date"` MileageKm float64 `json:"mileageKm"` Vehicles int `json:"vehicles"` } type MileageVehicleRank struct { VIN string `json:"vin"` Plate string `json:"plate"` MileageKm float64 `json:"mileageKm"` LatestMileageKm float64 `json:"latestMileageKm"` ActiveDays int `json:"activeDays"` } type MileageStatistics struct { DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` VehicleCount int `json:"vehicleCount"` RecordCount int `json:"recordCount"` SourceCount int `json:"sourceCount"` PeriodMileageKm float64 `json:"periodMileageKm"` FleetLatestMileageKm float64 `json:"fleetLatestMileageKm"` AverageMileagePerVIN float64 `json:"averageMileagePerVin"` AverageDailyMileageKm float64 `json:"averageDailyMileageKm"` Trend []MileageTrendPoint `json:"trend"` Ranking []MileageVehicleRank `json:"ranking"` AsOf string `json:"asOf"` Evidence string `json:"evidence"` } type OnlineStatisticsSummary struct { VehicleCount int `json:"vehicleCount"` OnlineVehicleCount int `json:"onlineVehicleCount"` OfflineVehicleCount int `json:"offlineVehicleCount"` OnlineRatePercent float64 `json:"onlineRatePercent"` RedisOnlineKeys *int `json:"redisOnlineKeys"` ProtocolStats []ProtocolStat `json:"protocolStats"` Evidence string `json:"evidence"` } type OnlineVehicleStatusRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` OEM string `json:"oem"` Protocols []string `json:"protocols"` Online bool `json:"online"` LastSeen string `json:"lastSeen"` OfflineDurationMinutes *int `json:"offlineDurationMinutes"` SourceCount int `json:"sourceCount"` OnlineSourceCount int `json:"onlineSourceCount"` BindingStatus string `json:"bindingStatus"` } type QualityIssueRow struct { VIN string `json:"vin"` Plate string `json:"plate"` Phone string `json:"phone"` SourceEndpoint string `json:"sourceEndpoint"` Protocol string `json:"protocol"` IssueType string `json:"issueType"` Severity string `json:"severity"` LastSeen string `json:"lastSeen"` Detail string `json:"detail"` } type QualitySummary struct { IssueVehicleCount int `json:"issueVehicleCount"` IssueRecordCount int `json:"issueRecordCount"` ErrorCount int `json:"errorCount"` WarningCount int `json:"warningCount"` Protocols []QualityBucketStat `json:"protocols"` IssueTypes []QualityBucketStat `json:"issueTypes"` } type QualityBucketStat struct { Name string `json:"name"` Count int `json:"count"` } type QualityNotificationPlan struct { Summary QualitySummary `json:"summary"` Rules []QualityAlertRule `json:"rules"` Policies []QualityNotificationPolicy `json:"policies"` PriorityIssues []QualityPriorityIssue `json:"priorityIssues"` ActiveRuleCount int `json:"activeRuleCount"` P0RuleCount int `json:"p0RuleCount"` } type QualityAlertRule struct { IssueType string `json:"issueType"` Title string `json:"title"` Level string `json:"level"` Owner string `json:"owner"` Trigger string `json:"trigger"` Notify string `json:"notify"` SLA string `json:"sla"` Count int `json:"count"` } type QualityNotificationPolicy struct { Name string `json:"name"` Target string `json:"target"` Channel string `json:"channel"` Condition string `json:"condition"` EscalationMinutes int `json:"escalationMinutes"` AcceptanceCriteria string `json:"acceptanceCriteria"` } type QualityPriorityIssue struct { QualityIssueRow Priority string `json:"priority"` ActionLabel string `json:"actionLabel"` ActionDetail string `json:"actionDetail"` SLA string `json:"sla"` VehicleLabel string `json:"vehicleLabel"` RealtimeHash string `json:"realtimeHash"` HistoryHash string `json:"historyHash"` RawHash string `json:"rawHash"` VehicleHash string `json:"vehicleHash"` NotificationText string `json:"notificationText"` } type OpsHealth struct { LinkHealth []LinkHealth `json:"linkHealth"` KafkaLag *int `json:"kafkaLag"` ActiveConnections *int `json:"activeConnections"` CapacityMetrics CapacityMetrics `json:"capacityMetrics"` CapacityFindings []string `json:"capacityFindings"` RedisOnlineKeys *int `json:"redisOnlineKeys"` TDengineWritable bool `json:"tdengineWritable"` MySQLWritable bool `json:"mysqlWritable"` AlertStream AlertStreamHealth `json:"alertStream"` Runtime RuntimeInfo `json:"runtime"` } type AlertStreamHealth struct { Mode string `json:"mode"` ConsumerGroup string `json:"consumerGroup"` Partitions int `json:"partitions"` Lag int64 `json:"lag"` Processed int64 `json:"processed"` Valid int64 `json:"valid"` Invalid int64 `json:"invalid"` Late int64 `json:"late"` ReplaySkipped int64 `json:"replaySkipped"` UpdatedAt string `json:"updatedAt"` LastInvalidCode string `json:"lastInvalidCode"` LastInvalidAt string `json:"lastInvalidAt"` } type CapacityMetrics struct { ActiveConnections int `json:"activeConnections"` KafkaLag int `json:"kafkaLag"` BridgeConsumerPending int `json:"bridgeConsumerPending"` BridgeAckPending int `json:"bridgeAckPending"` BridgeBatchPendingMessages int `json:"bridgeBatchPendingMessages"` FastWriterConsumerPending int `json:"fastWriterConsumerPending"` FastWriterAckPending int `json:"fastWriterAckPending"` FastWriterBatchPending int `json:"fastWriterBatchPending"` HistoryBatchPending int `json:"historyBatchPending"` HistoryRowsPending int `json:"historyRowsPending"` } type RuntimeInfo struct { DataMode string `json:"dataMode"` ExportDir string `json:"-"` RequestTimeoutMs int `json:"requestTimeoutMs"` AMapWebJSConfigured bool `json:"amapWebJsConfigured"` AMapAPIConfigured bool `json:"amapApiConfigured"` AMapSecurityProxyEnabled bool `json:"amapSecurityProxyEnabled"` AMapSecurityCodeExposed bool `json:"amapSecurityCodeExposed"` AMapSecurityServiceHost string `json:"amapSecurityServiceHost"` PlatformRelease string `json:"platformRelease"` AlertStreamMode string `json:"alertStreamMode"` AlertStreamConsumerGroup string `json:"alertStreamConsumerGroup"` }