@oneuptime/common 11.1.2 → 11.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/Models/DatabaseModels/Alert.ts +55 -0
  2. package/Models/DatabaseModels/Incident.ts +55 -0
  3. package/Models/DatabaseModels/Index.ts +12 -0
  4. package/Models/DatabaseModels/IoTDevice.ts +690 -0
  5. package/Models/DatabaseModels/IoTFleet.ts +862 -0
  6. package/Models/DatabaseModels/IoTFleetLabelRule.ts +514 -0
  7. package/Models/DatabaseModels/IoTFleetOwnerRule.ts +596 -0
  8. package/Models/DatabaseModels/IoTFleetOwnerTeam.ts +485 -0
  9. package/Models/DatabaseModels/IoTFleetOwnerUser.ts +484 -0
  10. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
  11. package/Server/API/IoTDeviceAPI.ts +128 -0
  12. package/Server/API/TelemetryAPI.ts +104 -35
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.ts +399 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.ts +97 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.ts +979 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  17. package/Server/Services/AlertService.ts +24 -3
  18. package/Server/Services/IncidentService.ts +24 -3
  19. package/Server/Services/IoTDeviceService.ts +356 -0
  20. package/Server/Services/IoTFleetLabelRuleEngineService.ts +198 -0
  21. package/Server/Services/IoTFleetLabelRuleService.ts +14 -0
  22. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +216 -0
  23. package/Server/Services/IoTFleetOwnerRuleService.ts +14 -0
  24. package/Server/Services/IoTFleetOwnerTeamService.ts +10 -0
  25. package/Server/Services/IoTFleetOwnerUserService.ts +10 -0
  26. package/Server/Services/IoTFleetService.ts +376 -0
  27. package/Server/Services/OpenTelemetryIngestService.ts +16 -0
  28. package/Server/Services/StatusPageService.ts +69 -26
  29. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +36 -0
  30. package/Server/Services/TelemetryUsageBillingService.ts +18 -0
  31. package/Server/Services/TraceAggregationService.ts +174 -0
  32. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +1 -1
  33. package/Server/Utils/Monitor/MonitorAlert.ts +24 -4
  34. package/Server/Utils/Monitor/MonitorClusterContext.ts +26 -2
  35. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +4 -2
  36. package/Server/Utils/Monitor/MonitorIncident.ts +39 -5
  37. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +14 -0
  38. package/Server/Utils/Monitor/SeriesResourceLabels.ts +22 -0
  39. package/Server/Utils/Telemetry/IoTSnapshotScan.ts +408 -0
  40. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +36 -0
  41. package/Types/Icon/IconProp.ts +1 -0
  42. package/Types/Monitor/IotAlertTemplates.ts +593 -0
  43. package/Types/Monitor/IotMetricCatalog.ts +146 -0
  44. package/Types/Monitor/MonitorStep.ts +31 -0
  45. package/Types/Monitor/MonitorStepIoTMonitor.ts +65 -0
  46. package/Types/Monitor/MonitorType.ts +12 -1
  47. package/Types/Permission.ts +230 -0
  48. package/Types/StatusPage/StatusPageSubscriberNotificationEventType.ts +3 -0
  49. package/Types/Telemetry/ServiceType.ts +1 -0
  50. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +5 -5
  51. package/UI/Components/Icon/Icon.tsx +18 -2
  52. package/UI/Components/Page/Page.tsx +1 -2
  53. package/build/dist/Models/DatabaseModels/Alert.js +54 -0
  54. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  55. package/build/dist/Models/DatabaseModels/Incident.js +54 -0
  56. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  57. package/build/dist/Models/DatabaseModels/Index.js +12 -0
  58. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  59. package/build/dist/Models/DatabaseModels/IoTDevice.js +722 -0
  60. package/build/dist/Models/DatabaseModels/IoTDevice.js.map +1 -0
  61. package/build/dist/Models/DatabaseModels/IoTFleet.js +882 -0
  62. package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -0
  63. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js +522 -0
  64. package/build/dist/Models/DatabaseModels/IoTFleetLabelRule.js.map +1 -0
  65. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js +603 -0
  66. package/build/dist/Models/DatabaseModels/IoTFleetOwnerRule.js.map +1 -0
  67. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js +503 -0
  68. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js.map +1 -0
  69. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js +502 -0
  70. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js.map +1 -0
  71. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
  72. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  73. package/build/dist/Server/API/IoTDeviceAPI.js +92 -0
  74. package/build/dist/Server/API/IoTDeviceAPI.js.map +1 -0
  75. package/build/dist/Server/API/TelemetryAPI.js +76 -27
  76. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  77. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.js +187 -0
  78. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1782900000000-AddIoTFleetAndDeviceTables.js.map +1 -0
  79. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.js +48 -0
  80. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783000000000-AddIoTFleetActivityJoinTables.js.map +1 -0
  81. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.js +340 -0
  82. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783010000000-MigrationName.js.map +1 -0
  83. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  84. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  85. package/build/dist/Server/Services/AlertService.js +22 -3
  86. package/build/dist/Server/Services/AlertService.js.map +1 -1
  87. package/build/dist/Server/Services/IncidentService.js +22 -3
  88. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  89. package/build/dist/Server/Services/IoTDeviceService.js +249 -0
  90. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -0
  91. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +166 -0
  92. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -0
  93. package/build/dist/Server/Services/IoTFleetLabelRuleService.js +13 -0
  94. package/build/dist/Server/Services/IoTFleetLabelRuleService.js.map +1 -0
  95. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +186 -0
  96. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -0
  97. package/build/dist/Server/Services/IoTFleetOwnerRuleService.js +13 -0
  98. package/build/dist/Server/Services/IoTFleetOwnerRuleService.js.map +1 -0
  99. package/build/dist/Server/Services/IoTFleetOwnerTeamService.js +9 -0
  100. package/build/dist/Server/Services/IoTFleetOwnerTeamService.js.map +1 -0
  101. package/build/dist/Server/Services/IoTFleetOwnerUserService.js +9 -0
  102. package/build/dist/Server/Services/IoTFleetOwnerUserService.js.map +1 -0
  103. package/build/dist/Server/Services/IoTFleetService.js +340 -0
  104. package/build/dist/Server/Services/IoTFleetService.js.map +1 -0
  105. package/build/dist/Server/Services/OpenTelemetryIngestService.js +26 -11
  106. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  107. package/build/dist/Server/Services/StatusPageService.js +57 -23
  108. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  109. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +34 -0
  110. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  111. package/build/dist/Server/Services/TelemetryUsageBillingService.js +13 -0
  112. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  113. package/build/dist/Server/Services/TraceAggregationService.js +136 -0
  114. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  115. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +15 -15
  116. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  117. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +37 -19
  118. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  119. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +27 -4
  120. package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +1 -1
  121. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +4 -2
  122. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  123. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +39 -11
  124. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  125. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +8 -0
  126. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  127. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +17 -0
  128. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  129. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +300 -0
  130. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -0
  131. package/build/dist/Types/Icon/IconProp.js +1 -0
  132. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  133. package/build/dist/Types/Monitor/IotAlertTemplates.js +467 -0
  134. package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -0
  135. package/build/dist/Types/Monitor/IotMetricCatalog.js +108 -0
  136. package/build/dist/Types/Monitor/IotMetricCatalog.js.map +1 -0
  137. package/build/dist/Types/Monitor/MonitorStep.js +23 -0
  138. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  139. package/build/dist/Types/Monitor/MonitorStepIoTMonitor.js +32 -0
  140. package/build/dist/Types/Monitor/MonitorStepIoTMonitor.js.map +1 -0
  141. package/build/dist/Types/Monitor/MonitorType.js +11 -1
  142. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  143. package/build/dist/Types/Permission.js +204 -0
  144. package/build/dist/Types/Permission.js.map +1 -1
  145. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js +2 -0
  146. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js.map +1 -1
  147. package/build/dist/Types/Telemetry/ServiceType.js +1 -0
  148. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  149. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +3 -3
  150. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  151. package/build/dist/UI/Components/Icon/Icon.js +12 -2
  152. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  153. package/build/dist/UI/Components/Page/Page.js +1 -2
  154. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  155. package/package.json +1 -1
@@ -0,0 +1,882 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Label from "./Label";
11
+ import Project from "./Project";
12
+ import User from "./User";
13
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
14
+ import Route from "../../Types/API/Route";
15
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
16
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
17
+ import AccessControlColumn from "../../Types/Database/AccessControlColumn";
18
+ import ColumnLength from "../../Types/Database/ColumnLength";
19
+ import ColumnType from "../../Types/Database/ColumnType";
20
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
21
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
22
+ import SlugifyColumn from "../../Types/Database/SlugifyColumn";
23
+ import TableColumn from "../../Types/Database/TableColumn";
24
+ import TableColumnType from "../../Types/Database/TableColumnType";
25
+ import TableMetadata from "../../Types/Database/TableMetadata";
26
+ import TenantColumn from "../../Types/Database/TenantColumn";
27
+ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
28
+ import IconProp from "../../Types/Icon/IconProp";
29
+ import ObjectID from "../../Types/ObjectID";
30
+ import Permission from "../../Types/Permission";
31
+ import { Column, Entity, Index, JoinColumn, JoinTable, ManyToMany, ManyToOne, } from "typeorm";
32
+ let IoTFleet = class IoTFleet extends BaseModel {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.project = undefined;
36
+ this.projectId = undefined;
37
+ this.name = undefined;
38
+ this.slug = undefined;
39
+ this.description = undefined;
40
+ this.otelCollectorStatus = undefined;
41
+ this.agentVersion = undefined;
42
+ this.lastSeenAt = undefined;
43
+ this.deviceCount = undefined;
44
+ this.onlineDeviceCount = undefined;
45
+ this.createdByUser = undefined;
46
+ this.createdByUserId = undefined;
47
+ this.isArchived = undefined;
48
+ this.archivedAt = undefined;
49
+ this.archivedByUser = undefined;
50
+ this.archivedByUserId = undefined;
51
+ this.deletedByUser = undefined;
52
+ this.deletedByUserId = undefined;
53
+ this.labels = undefined;
54
+ this.retainTelemetryDataForDays = undefined;
55
+ this.telemetryRetentionConfig = undefined;
56
+ }
57
+ };
58
+ __decorate([
59
+ ColumnAccessControl({
60
+ create: [
61
+ Permission.ProjectOwner,
62
+ Permission.ProjectAdmin,
63
+ Permission.ProjectMember,
64
+ Permission.SettingsAdmin,
65
+ Permission.SettingsMember,
66
+ Permission.CreateIoTFleet,
67
+ ],
68
+ read: [
69
+ Permission.ProjectOwner,
70
+ Permission.ProjectAdmin,
71
+ Permission.ProjectMember,
72
+ Permission.Viewer,
73
+ Permission.SettingsAdmin,
74
+ Permission.SettingsMember,
75
+ Permission.SettingsViewer,
76
+ Permission.ReadIoTFleet,
77
+ ],
78
+ update: [],
79
+ }),
80
+ TableColumn({
81
+ manyToOneRelationColumn: "projectId",
82
+ type: TableColumnType.Entity,
83
+ modelType: Project,
84
+ title: "Project",
85
+ description: "Relation to Project Resource in which this object belongs",
86
+ }),
87
+ ManyToOne(() => {
88
+ return Project;
89
+ }, {
90
+ eager: false,
91
+ nullable: true,
92
+ onDelete: "CASCADE",
93
+ orphanedRowAction: "nullify",
94
+ }),
95
+ JoinColumn({ name: "projectId" }),
96
+ __metadata("design:type", Project)
97
+ ], IoTFleet.prototype, "project", void 0);
98
+ __decorate([
99
+ ColumnAccessControl({
100
+ create: [
101
+ Permission.ProjectOwner,
102
+ Permission.ProjectAdmin,
103
+ Permission.ProjectMember,
104
+ Permission.SettingsAdmin,
105
+ Permission.SettingsMember,
106
+ Permission.CreateIoTFleet,
107
+ ],
108
+ read: [
109
+ Permission.ProjectOwner,
110
+ Permission.ProjectAdmin,
111
+ Permission.ProjectMember,
112
+ Permission.Viewer,
113
+ Permission.SettingsAdmin,
114
+ Permission.SettingsMember,
115
+ Permission.SettingsViewer,
116
+ Permission.ReadIoTFleet,
117
+ ],
118
+ update: [],
119
+ }),
120
+ Index(),
121
+ TableColumn({
122
+ type: TableColumnType.ObjectID,
123
+ required: true,
124
+ canReadOnRelationQuery: true,
125
+ title: "Project ID",
126
+ description: "ID of your OneUptime Project in which this object belongs",
127
+ }),
128
+ Column({
129
+ type: ColumnType.ObjectID,
130
+ nullable: false,
131
+ transformer: ObjectID.getDatabaseTransformer(),
132
+ }),
133
+ __metadata("design:type", ObjectID)
134
+ ], IoTFleet.prototype, "projectId", void 0);
135
+ __decorate([
136
+ ColumnAccessControl({
137
+ create: [
138
+ Permission.ProjectOwner,
139
+ Permission.ProjectAdmin,
140
+ Permission.ProjectMember,
141
+ Permission.SettingsAdmin,
142
+ Permission.SettingsMember,
143
+ Permission.CreateIoTFleet,
144
+ ],
145
+ read: [
146
+ Permission.ProjectOwner,
147
+ Permission.ProjectAdmin,
148
+ Permission.ProjectMember,
149
+ Permission.Viewer,
150
+ Permission.SettingsAdmin,
151
+ Permission.SettingsMember,
152
+ Permission.SettingsViewer,
153
+ Permission.ReadIoTFleet,
154
+ ],
155
+ update: [
156
+ Permission.ProjectOwner,
157
+ Permission.ProjectAdmin,
158
+ Permission.ProjectMember,
159
+ Permission.SettingsAdmin,
160
+ Permission.SettingsMember,
161
+ Permission.EditIoTFleet,
162
+ ],
163
+ }),
164
+ Index(),
165
+ TableColumn({
166
+ required: true,
167
+ type: TableColumnType.ShortText,
168
+ canReadOnRelationQuery: true,
169
+ title: "Name",
170
+ description: "Name of this IoT fleet. This is the join key — it must match the iot.fleet.name OTel resource attribute stamped by the IoT device or gateway.",
171
+ example: "field-sensors-prod",
172
+ }),
173
+ Column({
174
+ nullable: false,
175
+ type: ColumnType.ShortText,
176
+ length: ColumnLength.ShortText,
177
+ }),
178
+ UniqueColumnBy("projectId"),
179
+ __metadata("design:type", String)
180
+ ], IoTFleet.prototype, "name", void 0);
181
+ __decorate([
182
+ ColumnAccessControl({
183
+ create: [],
184
+ read: [
185
+ Permission.ProjectOwner,
186
+ Permission.ProjectAdmin,
187
+ Permission.ProjectMember,
188
+ Permission.Viewer,
189
+ Permission.SettingsAdmin,
190
+ Permission.SettingsMember,
191
+ Permission.SettingsViewer,
192
+ Permission.ReadIoTFleet,
193
+ ],
194
+ update: [],
195
+ }),
196
+ TableColumn({
197
+ required: true,
198
+ unique: true,
199
+ type: TableColumnType.Slug,
200
+ computed: true,
201
+ title: "Slug",
202
+ description: "Friendly globally unique name for your object",
203
+ }),
204
+ Column({
205
+ nullable: false,
206
+ type: ColumnType.Slug,
207
+ length: ColumnLength.Slug,
208
+ }),
209
+ __metadata("design:type", String)
210
+ ], IoTFleet.prototype, "slug", void 0);
211
+ __decorate([
212
+ ColumnAccessControl({
213
+ create: [
214
+ Permission.ProjectOwner,
215
+ Permission.ProjectAdmin,
216
+ Permission.ProjectMember,
217
+ Permission.SettingsAdmin,
218
+ Permission.SettingsMember,
219
+ Permission.CreateIoTFleet,
220
+ ],
221
+ read: [
222
+ Permission.ProjectOwner,
223
+ Permission.ProjectAdmin,
224
+ Permission.ProjectMember,
225
+ Permission.Viewer,
226
+ Permission.SettingsAdmin,
227
+ Permission.SettingsMember,
228
+ Permission.SettingsViewer,
229
+ Permission.ReadIoTFleet,
230
+ ],
231
+ update: [
232
+ Permission.ProjectOwner,
233
+ Permission.ProjectAdmin,
234
+ Permission.ProjectMember,
235
+ Permission.SettingsAdmin,
236
+ Permission.SettingsMember,
237
+ Permission.EditIoTFleet,
238
+ ],
239
+ }),
240
+ TableColumn({
241
+ required: false,
242
+ type: TableColumnType.LongText,
243
+ canReadOnRelationQuery: true,
244
+ title: "Description",
245
+ description: "Friendly description for this IoT fleet",
246
+ example: "Production field sensor fleet running in US East region",
247
+ }),
248
+ Column({
249
+ nullable: true,
250
+ type: ColumnType.LongText,
251
+ length: ColumnLength.LongText,
252
+ }),
253
+ __metadata("design:type", String)
254
+ ], IoTFleet.prototype, "description", void 0);
255
+ __decorate([
256
+ ColumnAccessControl({
257
+ create: [],
258
+ read: [
259
+ Permission.ProjectOwner,
260
+ Permission.ProjectAdmin,
261
+ Permission.ProjectMember,
262
+ Permission.Viewer,
263
+ Permission.SettingsAdmin,
264
+ Permission.SettingsMember,
265
+ Permission.SettingsViewer,
266
+ Permission.ReadIoTFleet,
267
+ ],
268
+ update: [
269
+ Permission.ProjectOwner,
270
+ Permission.ProjectAdmin,
271
+ Permission.EditIoTFleet,
272
+ ],
273
+ }),
274
+ TableColumn({
275
+ required: false,
276
+ type: TableColumnType.ShortText,
277
+ canReadOnRelationQuery: true,
278
+ title: "OTel Collector Status",
279
+ description: "Connection status of the OTel Collector agent (connected or disconnected)",
280
+ example: "connected",
281
+ }),
282
+ Column({
283
+ nullable: true,
284
+ type: ColumnType.ShortText,
285
+ length: ColumnLength.ShortText,
286
+ default: "disconnected",
287
+ }),
288
+ __metadata("design:type", String)
289
+ ], IoTFleet.prototype, "otelCollectorStatus", void 0);
290
+ __decorate([
291
+ ColumnAccessControl({
292
+ create: [],
293
+ read: [
294
+ Permission.ProjectOwner,
295
+ Permission.ProjectAdmin,
296
+ Permission.ProjectMember,
297
+ Permission.Viewer,
298
+ Permission.SettingsAdmin,
299
+ Permission.SettingsMember,
300
+ Permission.SettingsViewer,
301
+ Permission.ReadIoTFleet,
302
+ ],
303
+ update: [
304
+ Permission.ProjectOwner,
305
+ Permission.ProjectAdmin,
306
+ Permission.EditIoTFleet,
307
+ ],
308
+ }),
309
+ TableColumn({
310
+ required: false,
311
+ type: TableColumnType.ShortText,
312
+ canReadOnRelationQuery: true,
313
+ title: "Agent Version",
314
+ description: "Version of the IoT agent reporting telemetry, as self-reported via the oneuptime.agent.version resource attribute",
315
+ example: "1.0.0",
316
+ }),
317
+ Column({
318
+ nullable: true,
319
+ type: ColumnType.ShortText,
320
+ length: ColumnLength.ShortText,
321
+ }),
322
+ __metadata("design:type", String)
323
+ ], IoTFleet.prototype, "agentVersion", void 0);
324
+ __decorate([
325
+ ColumnAccessControl({
326
+ create: [],
327
+ read: [
328
+ Permission.ProjectOwner,
329
+ Permission.ProjectAdmin,
330
+ Permission.ProjectMember,
331
+ Permission.Viewer,
332
+ Permission.SettingsAdmin,
333
+ Permission.SettingsMember,
334
+ Permission.SettingsViewer,
335
+ Permission.ReadIoTFleet,
336
+ ],
337
+ update: [
338
+ Permission.ProjectOwner,
339
+ Permission.ProjectAdmin,
340
+ Permission.EditIoTFleet,
341
+ ],
342
+ }),
343
+ TableColumn({
344
+ required: false,
345
+ type: TableColumnType.Date,
346
+ canReadOnRelationQuery: true,
347
+ title: "Last Seen At",
348
+ description: "When metrics were last received from this fleet",
349
+ }),
350
+ Column({
351
+ nullable: true,
352
+ type: ColumnType.Date,
353
+ }),
354
+ __metadata("design:type", Date)
355
+ ], IoTFleet.prototype, "lastSeenAt", void 0);
356
+ __decorate([
357
+ ColumnAccessControl({
358
+ create: [],
359
+ read: [
360
+ Permission.ProjectOwner,
361
+ Permission.ProjectAdmin,
362
+ Permission.ProjectMember,
363
+ Permission.Viewer,
364
+ Permission.SettingsAdmin,
365
+ Permission.SettingsMember,
366
+ Permission.SettingsViewer,
367
+ Permission.ReadIoTFleet,
368
+ ],
369
+ update: [
370
+ Permission.ProjectOwner,
371
+ Permission.ProjectAdmin,
372
+ Permission.EditIoTFleet,
373
+ ],
374
+ }),
375
+ TableColumn({
376
+ type: TableColumnType.Number,
377
+ title: "Device Count",
378
+ description: "Cached count of devices in this fleet",
379
+ }),
380
+ Column({
381
+ type: ColumnType.Number,
382
+ nullable: true,
383
+ default: 0,
384
+ }),
385
+ __metadata("design:type", Number)
386
+ ], IoTFleet.prototype, "deviceCount", void 0);
387
+ __decorate([
388
+ ColumnAccessControl({
389
+ create: [],
390
+ read: [
391
+ Permission.ProjectOwner,
392
+ Permission.ProjectAdmin,
393
+ Permission.ProjectMember,
394
+ Permission.Viewer,
395
+ Permission.SettingsAdmin,
396
+ Permission.SettingsMember,
397
+ Permission.SettingsViewer,
398
+ Permission.ReadIoTFleet,
399
+ ],
400
+ update: [
401
+ Permission.ProjectOwner,
402
+ Permission.ProjectAdmin,
403
+ Permission.EditIoTFleet,
404
+ ],
405
+ }),
406
+ TableColumn({
407
+ type: TableColumnType.Number,
408
+ title: "Online Device Count",
409
+ description: "Cached count of devices currently online (iot_device_up == 1) in this fleet. Rendered as 'Devices X/Y online' next to deviceCount.",
410
+ }),
411
+ Column({
412
+ type: ColumnType.Number,
413
+ nullable: true,
414
+ default: 0,
415
+ }),
416
+ __metadata("design:type", Number)
417
+ ], IoTFleet.prototype, "onlineDeviceCount", void 0);
418
+ __decorate([
419
+ ColumnAccessControl({
420
+ create: [
421
+ Permission.ProjectOwner,
422
+ Permission.ProjectAdmin,
423
+ Permission.ProjectMember,
424
+ Permission.SettingsAdmin,
425
+ Permission.SettingsMember,
426
+ Permission.CreateIoTFleet,
427
+ ],
428
+ read: [
429
+ Permission.ProjectOwner,
430
+ Permission.ProjectAdmin,
431
+ Permission.ProjectMember,
432
+ Permission.Viewer,
433
+ Permission.SettingsAdmin,
434
+ Permission.SettingsMember,
435
+ Permission.SettingsViewer,
436
+ Permission.ReadIoTFleet,
437
+ ],
438
+ update: [],
439
+ }),
440
+ TableColumn({
441
+ manyToOneRelationColumn: "createdByUserId",
442
+ type: TableColumnType.Entity,
443
+ modelType: User,
444
+ title: "Created by User",
445
+ description: "Relation to User who created this object (if this object was created by a User)",
446
+ }),
447
+ ManyToOne(() => {
448
+ return User;
449
+ }, {
450
+ eager: false,
451
+ nullable: true,
452
+ onDelete: "SET NULL",
453
+ orphanedRowAction: "nullify",
454
+ }),
455
+ JoinColumn({ name: "createdByUserId" }),
456
+ __metadata("design:type", User)
457
+ ], IoTFleet.prototype, "createdByUser", void 0);
458
+ __decorate([
459
+ ColumnAccessControl({
460
+ create: [
461
+ Permission.ProjectOwner,
462
+ Permission.ProjectAdmin,
463
+ Permission.ProjectMember,
464
+ Permission.SettingsAdmin,
465
+ Permission.SettingsMember,
466
+ Permission.CreateIoTFleet,
467
+ ],
468
+ read: [
469
+ Permission.ProjectOwner,
470
+ Permission.ProjectAdmin,
471
+ Permission.ProjectMember,
472
+ Permission.Viewer,
473
+ Permission.SettingsAdmin,
474
+ Permission.SettingsMember,
475
+ Permission.SettingsViewer,
476
+ Permission.ReadIoTFleet,
477
+ ],
478
+ update: [],
479
+ }),
480
+ TableColumn({
481
+ type: TableColumnType.ObjectID,
482
+ title: "Created by User ID",
483
+ description: "User ID who created this object (if this object was created by a User)",
484
+ }),
485
+ Column({
486
+ type: ColumnType.ObjectID,
487
+ nullable: true,
488
+ transformer: ObjectID.getDatabaseTransformer(),
489
+ }),
490
+ __metadata("design:type", ObjectID)
491
+ ], IoTFleet.prototype, "createdByUserId", void 0);
492
+ __decorate([
493
+ ColumnAccessControl({
494
+ create: [
495
+ Permission.ProjectOwner,
496
+ Permission.ProjectAdmin,
497
+ Permission.ProjectMember,
498
+ Permission.SettingsAdmin,
499
+ Permission.SettingsMember,
500
+ Permission.CreateIoTFleet,
501
+ ],
502
+ read: [
503
+ Permission.ProjectOwner,
504
+ Permission.ProjectAdmin,
505
+ Permission.ProjectMember,
506
+ Permission.Viewer,
507
+ Permission.SettingsAdmin,
508
+ Permission.SettingsMember,
509
+ Permission.SettingsViewer,
510
+ Permission.ReadIoTFleet,
511
+ ],
512
+ update: [
513
+ Permission.ProjectOwner,
514
+ Permission.ProjectAdmin,
515
+ Permission.ProjectMember,
516
+ Permission.SettingsAdmin,
517
+ Permission.SettingsMember,
518
+ Permission.EditIoTFleet,
519
+ ],
520
+ }),
521
+ TableColumn({
522
+ isDefaultValueColumn: true,
523
+ required: true,
524
+ type: TableColumnType.Boolean,
525
+ title: "Is Archived",
526
+ description: "Is this IoT fleet archived? Archived IoT fleets are hidden from lists but keep collecting telemetry.",
527
+ defaultValue: false,
528
+ }),
529
+ Column({
530
+ type: ColumnType.Boolean,
531
+ nullable: false,
532
+ default: false,
533
+ }),
534
+ __metadata("design:type", Boolean)
535
+ ], IoTFleet.prototype, "isArchived", void 0);
536
+ __decorate([
537
+ ColumnAccessControl({
538
+ create: [],
539
+ read: [
540
+ Permission.ProjectOwner,
541
+ Permission.ProjectAdmin,
542
+ Permission.ProjectMember,
543
+ Permission.Viewer,
544
+ Permission.SettingsAdmin,
545
+ Permission.SettingsMember,
546
+ Permission.SettingsViewer,
547
+ Permission.ReadIoTFleet,
548
+ ],
549
+ update: [],
550
+ }),
551
+ TableColumn({
552
+ required: false,
553
+ type: TableColumnType.Date,
554
+ title: "Archived At",
555
+ description: "When was this IoT fleet archived?",
556
+ }),
557
+ Column({
558
+ type: ColumnType.Date,
559
+ nullable: true,
560
+ }),
561
+ __metadata("design:type", Date)
562
+ ], IoTFleet.prototype, "archivedAt", void 0);
563
+ __decorate([
564
+ ColumnAccessControl({
565
+ create: [],
566
+ read: [
567
+ Permission.ProjectOwner,
568
+ Permission.ProjectAdmin,
569
+ Permission.ProjectMember,
570
+ Permission.Viewer,
571
+ Permission.SettingsAdmin,
572
+ Permission.SettingsMember,
573
+ Permission.SettingsViewer,
574
+ Permission.ReadIoTFleet,
575
+ ],
576
+ update: [],
577
+ }),
578
+ TableColumn({
579
+ manyToOneRelationColumn: "archivedByUserId",
580
+ type: TableColumnType.Entity,
581
+ modelType: User,
582
+ title: "Archived by User",
583
+ description: "Relation to User who archived this object (if this object was archived by a User)",
584
+ }),
585
+ ManyToOne(() => {
586
+ return User;
587
+ }, {
588
+ eager: false,
589
+ nullable: true,
590
+ onDelete: "SET NULL",
591
+ orphanedRowAction: "nullify",
592
+ }),
593
+ JoinColumn({ name: "archivedByUserId" }),
594
+ __metadata("design:type", User)
595
+ ], IoTFleet.prototype, "archivedByUser", void 0);
596
+ __decorate([
597
+ ColumnAccessControl({
598
+ create: [],
599
+ read: [
600
+ Permission.ProjectOwner,
601
+ Permission.ProjectAdmin,
602
+ Permission.ProjectMember,
603
+ Permission.Viewer,
604
+ Permission.SettingsAdmin,
605
+ Permission.SettingsMember,
606
+ Permission.SettingsViewer,
607
+ Permission.ReadIoTFleet,
608
+ ],
609
+ update: [],
610
+ }),
611
+ TableColumn({
612
+ type: TableColumnType.ObjectID,
613
+ title: "Archived by User ID",
614
+ description: "User ID who archived this object (if this object was archived by a User)",
615
+ }),
616
+ Column({
617
+ type: ColumnType.ObjectID,
618
+ nullable: true,
619
+ transformer: ObjectID.getDatabaseTransformer(),
620
+ }),
621
+ __metadata("design:type", ObjectID)
622
+ ], IoTFleet.prototype, "archivedByUserId", void 0);
623
+ __decorate([
624
+ ColumnAccessControl({
625
+ create: [],
626
+ read: [
627
+ Permission.ProjectOwner,
628
+ Permission.ProjectAdmin,
629
+ Permission.ProjectMember,
630
+ Permission.Viewer,
631
+ Permission.SettingsAdmin,
632
+ Permission.SettingsMember,
633
+ Permission.SettingsViewer,
634
+ Permission.ReadIoTFleet,
635
+ ],
636
+ update: [],
637
+ }),
638
+ TableColumn({
639
+ manyToOneRelationColumn: "deletedByUserId",
640
+ type: TableColumnType.Entity,
641
+ title: "Deleted by User",
642
+ modelType: User,
643
+ description: "Relation to User who deleted this object (if this object was deleted by a User)",
644
+ }),
645
+ ManyToOne(() => {
646
+ return User;
647
+ }, {
648
+ cascade: false,
649
+ eager: false,
650
+ nullable: true,
651
+ onDelete: "SET NULL",
652
+ orphanedRowAction: "nullify",
653
+ }),
654
+ JoinColumn({ name: "deletedByUserId" }),
655
+ __metadata("design:type", User)
656
+ ], IoTFleet.prototype, "deletedByUser", void 0);
657
+ __decorate([
658
+ ColumnAccessControl({
659
+ create: [],
660
+ read: [
661
+ Permission.ProjectOwner,
662
+ Permission.ProjectAdmin,
663
+ Permission.ProjectMember,
664
+ Permission.Viewer,
665
+ Permission.SettingsAdmin,
666
+ Permission.SettingsMember,
667
+ Permission.SettingsViewer,
668
+ Permission.ReadIoTFleet,
669
+ ],
670
+ update: [],
671
+ }),
672
+ TableColumn({
673
+ type: TableColumnType.ObjectID,
674
+ title: "Deleted by User ID",
675
+ description: "User ID who deleted this object (if this object was deleted by a User)",
676
+ }),
677
+ Column({
678
+ type: ColumnType.ObjectID,
679
+ nullable: true,
680
+ transformer: ObjectID.getDatabaseTransformer(),
681
+ }),
682
+ __metadata("design:type", ObjectID)
683
+ ], IoTFleet.prototype, "deletedByUserId", void 0);
684
+ __decorate([
685
+ ColumnAccessControl({
686
+ create: [
687
+ Permission.ProjectOwner,
688
+ Permission.ProjectAdmin,
689
+ Permission.ProjectMember,
690
+ Permission.SettingsAdmin,
691
+ Permission.SettingsMember,
692
+ Permission.CreateIoTFleet,
693
+ ],
694
+ read: [
695
+ Permission.ProjectOwner,
696
+ Permission.ProjectAdmin,
697
+ Permission.ProjectMember,
698
+ Permission.Viewer,
699
+ Permission.SettingsAdmin,
700
+ Permission.SettingsMember,
701
+ Permission.SettingsViewer,
702
+ Permission.ReadIoTFleet,
703
+ ],
704
+ update: [
705
+ Permission.ProjectOwner,
706
+ Permission.ProjectAdmin,
707
+ Permission.ProjectMember,
708
+ Permission.SettingsAdmin,
709
+ Permission.SettingsMember,
710
+ Permission.EditIoTFleet,
711
+ ],
712
+ }),
713
+ TableColumn({
714
+ required: false,
715
+ type: TableColumnType.EntityArray,
716
+ modelType: Label,
717
+ title: "Labels",
718
+ description: "Relation to Labels Array where this object is categorized in.",
719
+ }),
720
+ ManyToMany(() => {
721
+ return Label;
722
+ }, { eager: false }),
723
+ JoinTable({
724
+ name: "IoTFleetLabel",
725
+ inverseJoinColumn: {
726
+ name: "labelId",
727
+ referencedColumnName: "_id",
728
+ },
729
+ joinColumn: {
730
+ name: "iotFleetId",
731
+ referencedColumnName: "_id",
732
+ },
733
+ }),
734
+ __metadata("design:type", Array)
735
+ ], IoTFleet.prototype, "labels", void 0);
736
+ __decorate([
737
+ ColumnAccessControl({
738
+ create: [
739
+ Permission.ProjectOwner,
740
+ Permission.ProjectAdmin,
741
+ Permission.ProjectMember,
742
+ Permission.SettingsAdmin,
743
+ Permission.SettingsMember,
744
+ Permission.CreateIoTFleet,
745
+ ],
746
+ read: [
747
+ Permission.ProjectOwner,
748
+ Permission.ProjectAdmin,
749
+ Permission.ProjectMember,
750
+ Permission.Viewer,
751
+ Permission.SettingsAdmin,
752
+ Permission.SettingsMember,
753
+ Permission.SettingsViewer,
754
+ Permission.ReadIoTFleet,
755
+ ],
756
+ update: [
757
+ Permission.ProjectOwner,
758
+ Permission.ProjectAdmin,
759
+ Permission.ProjectMember,
760
+ Permission.SettingsAdmin,
761
+ Permission.SettingsMember,
762
+ Permission.EditIoTFleet,
763
+ ],
764
+ }),
765
+ TableColumn({
766
+ type: TableColumnType.Number,
767
+ title: "Retain Telemetry Data For Days",
768
+ description: "Number of days to retain telemetry data for this IoT fleet. Leave blank to use the project-wide default.",
769
+ }),
770
+ Column({
771
+ type: ColumnType.Number,
772
+ nullable: true,
773
+ unique: false,
774
+ }),
775
+ __metadata("design:type", Number)
776
+ ], IoTFleet.prototype, "retainTelemetryDataForDays", void 0);
777
+ __decorate([
778
+ ColumnAccessControl({
779
+ create: [
780
+ Permission.ProjectOwner,
781
+ Permission.ProjectAdmin,
782
+ Permission.ProjectMember,
783
+ Permission.SettingsAdmin,
784
+ Permission.SettingsMember,
785
+ Permission.CreateIoTFleet,
786
+ ],
787
+ read: [
788
+ Permission.ProjectOwner,
789
+ Permission.ProjectAdmin,
790
+ Permission.ProjectMember,
791
+ Permission.Viewer,
792
+ Permission.SettingsAdmin,
793
+ Permission.SettingsMember,
794
+ Permission.SettingsViewer,
795
+ Permission.ReadIoTFleet,
796
+ ],
797
+ update: [
798
+ Permission.ProjectOwner,
799
+ Permission.ProjectAdmin,
800
+ Permission.ProjectMember,
801
+ Permission.SettingsAdmin,
802
+ Permission.SettingsMember,
803
+ Permission.EditIoTFleet,
804
+ ],
805
+ }),
806
+ TableColumn({
807
+ type: TableColumnType.JSON,
808
+ required: false,
809
+ title: "Telemetry Data Retention Overrides",
810
+ description: "Per-pillar retention overrides for this IoT fleet (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the IoT fleet default, then the project's retention settings.",
811
+ }),
812
+ Column({
813
+ type: ColumnType.JSON,
814
+ nullable: true,
815
+ }),
816
+ __metadata("design:type", Object)
817
+ ], IoTFleet.prototype, "telemetryRetentionConfig", void 0);
818
+ IoTFleet = __decorate([
819
+ AccessControlColumn("labels"),
820
+ EnableDocumentation(),
821
+ TenantColumn("projectId"),
822
+ TableAccessControl({
823
+ create: [
824
+ Permission.ProjectOwner,
825
+ Permission.ProjectAdmin,
826
+ Permission.ProjectMember,
827
+ Permission.SettingsAdmin,
828
+ Permission.SettingsMember,
829
+ Permission.CreateIoTFleet,
830
+ ],
831
+ read: [
832
+ Permission.ProjectOwner,
833
+ Permission.ProjectAdmin,
834
+ Permission.ProjectMember,
835
+ Permission.Viewer,
836
+ Permission.SettingsAdmin,
837
+ Permission.SettingsMember,
838
+ Permission.SettingsViewer,
839
+ Permission.ReadIoTFleet,
840
+ ],
841
+ delete: [
842
+ Permission.ProjectOwner,
843
+ Permission.ProjectAdmin,
844
+ Permission.ProjectMember,
845
+ Permission.SettingsAdmin,
846
+ Permission.SettingsMember,
847
+ Permission.DeleteIoTFleet,
848
+ ],
849
+ update: [
850
+ Permission.ProjectOwner,
851
+ Permission.ProjectAdmin,
852
+ Permission.ProjectMember,
853
+ Permission.SettingsAdmin,
854
+ Permission.SettingsMember,
855
+ Permission.EditIoTFleet,
856
+ ],
857
+ }),
858
+ CrudApiEndpoint(new Route("/iot-fleet")),
859
+ SlugifyColumn("name", "slug")
860
+ /*
861
+ * DB-level unique index on (projectId, name) — the @UniqueColumnBy decorator
862
+ * on `name` is app-level only and does not defuse the concurrent
863
+ * find-or-create race at ingest (multiple agent pods discovering the same
864
+ * fleet simultaneously). Mirrors KubernetesCluster's
865
+ * (projectId, clusterIdentifier) unique index.
866
+ */
867
+ ,
868
+ Index(["projectId", "name"], { unique: true }),
869
+ Index(["projectId", "isArchived"]),
870
+ TableMetadata({
871
+ tableName: "IoTFleet",
872
+ singularName: "IoT Fleet",
873
+ pluralName: "IoT Fleets",
874
+ icon: IconProp.IoT,
875
+ tableDescription: "IoT device fleets that are being monitored in this project. Each fleet is auto-discovered when an IoT device or gateway sends metrics with the iot.fleet.name OTel resource attribute, or can be manually registered.",
876
+ }),
877
+ Entity({
878
+ name: "IoTFleet",
879
+ })
880
+ ], IoTFleet);
881
+ export default IoTFleet;
882
+ //# sourceMappingURL=IoTFleet.js.map