@oneuptime/common 10.2.1 → 10.2.3

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 (77) hide show
  1. package/Models/DatabaseModels/Index.ts +6 -0
  2. package/Models/DatabaseModels/ProjectOidc.ts +705 -0
  3. package/Models/DatabaseModels/UserNotificationRule.ts +49 -0
  4. package/Models/DatabaseModels/UserNotificationSetting.ts +17 -0
  5. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +48 -0
  6. package/Models/DatabaseModels/UserWebhook.ts +290 -0
  7. package/Models/DatabaseModels/WebhookLog.ts +992 -0
  8. package/Server/API/ProjectOIDC.ts +73 -0
  9. package/Server/API/UserWebhookAPI.ts +159 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1778506655291-AddProjectOIDC.ts +79 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1778514515756-MigrationName.ts +259 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  13. package/Server/Services/Index.ts +2 -0
  14. package/Server/Services/OnCallDutyPolicyScheduleService.ts +139 -26
  15. package/Server/Services/ProjectOidcService.ts +10 -0
  16. package/Server/Services/UserNotificationRuleService.ts +213 -1
  17. package/Server/Services/UserNotificationSettingService.ts +95 -0
  18. package/Server/Services/UserWebhookService.ts +208 -0
  19. package/Server/Services/WebhookLogService.ts +15 -0
  20. package/Server/Services/WebhookService.ts +126 -0
  21. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +155 -0
  22. package/Types/Permission.ts +54 -0
  23. package/Types/Webhook/WebhookMessage.ts +8 -0
  24. package/Types/WebhookStatus.ts +6 -0
  25. package/UI/Components/Calendar/Calendar.css +257 -0
  26. package/UI/Components/Calendar/Calendar.tsx +22 -11
  27. package/build/dist/Models/DatabaseModels/Index.js +6 -0
  28. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  29. package/build/dist/Models/DatabaseModels/ProjectOidc.js +727 -0
  30. package/build/dist/Models/DatabaseModels/ProjectOidc.js.map +1 -0
  31. package/build/dist/Models/DatabaseModels/UserNotificationRule.js +49 -0
  32. package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
  33. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js +19 -0
  34. package/build/dist/Models/DatabaseModels/UserNotificationSetting.js.map +1 -1
  35. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  36. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  37. package/build/dist/Models/DatabaseModels/UserWebhook.js +307 -0
  38. package/build/dist/Models/DatabaseModels/UserWebhook.js.map +1 -0
  39. package/build/dist/Models/DatabaseModels/WebhookLog.js +1021 -0
  40. package/build/dist/Models/DatabaseModels/WebhookLog.js.map +1 -0
  41. package/build/dist/Server/API/ProjectOIDC.js +45 -0
  42. package/build/dist/Server/API/ProjectOIDC.js.map +1 -0
  43. package/build/dist/Server/API/UserWebhookAPI.js +99 -0
  44. package/build/dist/Server/API/UserWebhookAPI.js.map +1 -0
  45. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778506655291-AddProjectOIDC.js +34 -0
  46. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778506655291-AddProjectOIDC.js.map +1 -0
  47. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778514515756-MigrationName.js +94 -0
  48. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1778514515756-MigrationName.js.map +1 -0
  49. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  50. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  51. package/build/dist/Server/Services/Index.js +2 -0
  52. package/build/dist/Server/Services/Index.js.map +1 -1
  53. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +106 -17
  54. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  55. package/build/dist/Server/Services/ProjectOidcService.js +9 -0
  56. package/build/dist/Server/Services/ProjectOidcService.js.map +1 -0
  57. package/build/dist/Server/Services/UserNotificationRuleService.js +178 -21
  58. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  59. package/build/dist/Server/Services/UserNotificationSettingService.js +84 -1
  60. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  61. package/build/dist/Server/Services/UserWebhookService.js +190 -0
  62. package/build/dist/Server/Services/UserWebhookService.js.map +1 -0
  63. package/build/dist/Server/Services/WebhookLogService.js +13 -0
  64. package/build/dist/Server/Services/WebhookLogService.js.map +1 -0
  65. package/build/dist/Server/Services/WebhookService.js +92 -0
  66. package/build/dist/Server/Services/WebhookService.js.map +1 -0
  67. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +86 -0
  68. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -0
  69. package/build/dist/Types/Permission.js +50 -0
  70. package/build/dist/Types/Permission.js.map +1 -1
  71. package/build/dist/Types/Webhook/WebhookMessage.js +2 -0
  72. package/build/dist/Types/Webhook/WebhookMessage.js.map +1 -0
  73. package/build/dist/Types/WebhookStatus.js +7 -0
  74. package/build/dist/Types/WebhookStatus.js.map +1 -0
  75. package/build/dist/UI/Components/Calendar/Calendar.js +12 -10
  76. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  77. package/package.json +1 -1
@@ -0,0 +1,992 @@
1
+ import Project from "./Project";
2
+ import Incident from "./Incident";
3
+ import Alert from "./Alert";
4
+ import Monitor from "./Monitor";
5
+ import ScheduledMaintenance from "./ScheduledMaintenance";
6
+ import StatusPage from "./StatusPage";
7
+ import StatusPageAnnouncement from "./StatusPageAnnouncement";
8
+ import User from "./User";
9
+ import OnCallDutyPolicy from "./OnCallDutyPolicy";
10
+ import OnCallDutyPolicyEscalationRule from "./OnCallDutyPolicyEscalationRule";
11
+ import OnCallDutyPolicySchedule from "./OnCallDutyPolicySchedule";
12
+ import Team from "./Team";
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 ColumnLength from "../../Types/Database/ColumnLength";
18
+ import ColumnType from "../../Types/Database/ColumnType";
19
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
20
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
21
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
22
+ import TableColumn from "../../Types/Database/TableColumn";
23
+ import TableColumnType from "../../Types/Database/TableColumnType";
24
+ import TableMetadata from "../../Types/Database/TableMetadata";
25
+ import TenantColumn from "../../Types/Database/TenantColumn";
26
+ import IconProp from "../../Types/Icon/IconProp";
27
+ import ObjectID from "../../Types/ObjectID";
28
+ import Permission from "../../Types/Permission";
29
+ import WebhookStatus from "../../Types/WebhookStatus";
30
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
31
+
32
+ @EnableDocumentation()
33
+ @TenantColumn("projectId")
34
+ @TableAccessControl({
35
+ create: [],
36
+ read: [
37
+ Permission.ProjectOwner,
38
+ Permission.ProjectAdmin,
39
+ Permission.ProjectMember,
40
+ Permission.Viewer,
41
+ Permission.ReadWebhookLog,
42
+ Permission.ReadAllProjectResources,
43
+ ],
44
+ delete: [],
45
+ update: [],
46
+ })
47
+ @CrudApiEndpoint(new Route("/webhook-log"))
48
+ @Entity({
49
+ name: "WebhookLog",
50
+ })
51
+ @EnableWorkflow({
52
+ create: true,
53
+ delete: false,
54
+ update: false,
55
+ })
56
+ @TableMetadata({
57
+ tableName: "WebhookLog",
58
+ singularName: "Webhook Log",
59
+ pluralName: "Webhook Logs",
60
+ icon: IconProp.Webhook,
61
+ tableDescription:
62
+ "Logs of all the outbound Webhook requests sent for this project.",
63
+ })
64
+ export default class WebhookLog extends BaseModel {
65
+ @ColumnAccessControl({
66
+ create: [],
67
+ read: [
68
+ Permission.ProjectOwner,
69
+ Permission.ProjectAdmin,
70
+ Permission.ProjectMember,
71
+ Permission.Viewer,
72
+ Permission.ReadWebhookLog,
73
+ Permission.ReadAllProjectResources,
74
+ ],
75
+ update: [],
76
+ })
77
+ @TableColumn({
78
+ manyToOneRelationColumn: "projectId",
79
+ type: TableColumnType.Entity,
80
+ modelType: Project,
81
+ title: "Project",
82
+ description: "Relation to Project Resource in which this object belongs",
83
+ })
84
+ @ManyToOne(
85
+ () => {
86
+ return Project;
87
+ },
88
+ {
89
+ eager: false,
90
+ nullable: true,
91
+ onDelete: "CASCADE",
92
+ orphanedRowAction: "nullify",
93
+ },
94
+ )
95
+ @JoinColumn({ name: "projectId" })
96
+ public project?: Project = undefined;
97
+
98
+ @ColumnAccessControl({
99
+ create: [],
100
+ read: [
101
+ Permission.ProjectOwner,
102
+ Permission.ProjectAdmin,
103
+ Permission.ProjectMember,
104
+ Permission.Viewer,
105
+ Permission.ReadWebhookLog,
106
+ Permission.ReadAllProjectResources,
107
+ ],
108
+ update: [],
109
+ })
110
+ @Index()
111
+ @TableColumn({
112
+ type: TableColumnType.ObjectID,
113
+ required: true,
114
+ canReadOnRelationQuery: true,
115
+ title: "Project ID",
116
+ description: "ID of your OneUptime Project in which this object belongs",
117
+ })
118
+ @Column({
119
+ type: ColumnType.ObjectID,
120
+ nullable: false,
121
+ transformer: ObjectID.getDatabaseTransformer(),
122
+ })
123
+ public projectId?: ObjectID = undefined;
124
+
125
+ @ColumnAccessControl({
126
+ create: [],
127
+ read: [
128
+ Permission.ProjectOwner,
129
+ Permission.ProjectAdmin,
130
+ Permission.ProjectMember,
131
+ Permission.Viewer,
132
+ Permission.ReadWebhookLog,
133
+ Permission.ReadAllProjectResources,
134
+ ],
135
+ update: [],
136
+ })
137
+ @TableColumn({
138
+ required: true,
139
+ type: TableColumnType.LongText,
140
+ title: "Webhook URL",
141
+ description: "URL the request was sent to",
142
+ canReadOnRelationQuery: false,
143
+ })
144
+ @Column({
145
+ nullable: false,
146
+ type: ColumnType.LongText,
147
+ length: ColumnLength.LongText,
148
+ })
149
+ public webhookUrl?: string = undefined;
150
+
151
+ @ColumnAccessControl({
152
+ create: [],
153
+ read: [
154
+ Permission.ProjectOwner,
155
+ Permission.ProjectAdmin,
156
+ Permission.ProjectMember,
157
+ Permission.Viewer,
158
+ Permission.ReadWebhookLog,
159
+ Permission.ReadAllProjectResources,
160
+ ],
161
+ update: [],
162
+ })
163
+ @TableColumn({
164
+ required: false,
165
+ type: TableColumnType.VeryLongText,
166
+ title: "Request Body",
167
+ description: "JSON body that was POSTed to the webhook URL",
168
+ canReadOnRelationQuery: false,
169
+ })
170
+ @Column({
171
+ nullable: true,
172
+ type: ColumnType.VeryLongText,
173
+ })
174
+ public requestBody?: string = undefined;
175
+
176
+ @ColumnAccessControl({
177
+ create: [],
178
+ read: [
179
+ Permission.ProjectOwner,
180
+ Permission.ProjectAdmin,
181
+ Permission.ProjectMember,
182
+ Permission.Viewer,
183
+ Permission.ReadWebhookLog,
184
+ Permission.ReadAllProjectResources,
185
+ ],
186
+ update: [],
187
+ })
188
+ @TableColumn({
189
+ required: false,
190
+ type: TableColumnType.Number,
191
+ title: "Response Status Code",
192
+ description: "HTTP status code returned by the webhook endpoint",
193
+ canReadOnRelationQuery: false,
194
+ })
195
+ @Column({
196
+ nullable: true,
197
+ type: ColumnType.Number,
198
+ })
199
+ public responseStatusCode?: number = undefined;
200
+
201
+ @ColumnAccessControl({
202
+ create: [],
203
+ read: [
204
+ Permission.ProjectOwner,
205
+ Permission.ProjectAdmin,
206
+ Permission.ProjectMember,
207
+ Permission.Viewer,
208
+ Permission.ReadWebhookLog,
209
+ Permission.ReadAllProjectResources,
210
+ ],
211
+ update: [],
212
+ })
213
+ @TableColumn({
214
+ required: false,
215
+ type: TableColumnType.VeryLongText,
216
+ title: "Response Body",
217
+ description: "Response body returned by the webhook endpoint (truncated)",
218
+ canReadOnRelationQuery: false,
219
+ })
220
+ @Column({
221
+ nullable: true,
222
+ type: ColumnType.VeryLongText,
223
+ })
224
+ public responseBody?: string = undefined;
225
+
226
+ @ColumnAccessControl({
227
+ create: [],
228
+ read: [
229
+ Permission.ProjectOwner,
230
+ Permission.ProjectAdmin,
231
+ Permission.ProjectMember,
232
+ Permission.Viewer,
233
+ Permission.ReadWebhookLog,
234
+ Permission.ReadAllProjectResources,
235
+ ],
236
+ update: [],
237
+ })
238
+ @TableColumn({
239
+ required: false,
240
+ type: TableColumnType.LongText,
241
+ title: "Status Message",
242
+ description: "Status Message (if any)",
243
+ canReadOnRelationQuery: false,
244
+ })
245
+ @Column({
246
+ nullable: true,
247
+ type: ColumnType.LongText,
248
+ length: ColumnLength.LongText,
249
+ })
250
+ public statusMessage?: string = undefined;
251
+
252
+ @ColumnAccessControl({
253
+ create: [],
254
+ read: [
255
+ Permission.ProjectOwner,
256
+ Permission.ProjectAdmin,
257
+ Permission.ProjectMember,
258
+ Permission.Viewer,
259
+ Permission.ReadWebhookLog,
260
+ Permission.ReadAllProjectResources,
261
+ ],
262
+ update: [],
263
+ })
264
+ @TableColumn({
265
+ required: true,
266
+ type: TableColumnType.ShortText,
267
+ title: "Status",
268
+ description: "Status of the Webhook request",
269
+ canReadOnRelationQuery: false,
270
+ })
271
+ @Column({
272
+ nullable: false,
273
+ type: ColumnType.ShortText,
274
+ length: ColumnLength.ShortText,
275
+ })
276
+ public status?: WebhookStatus = undefined;
277
+
278
+ @ColumnAccessControl({
279
+ create: [],
280
+ read: [
281
+ Permission.ProjectOwner,
282
+ Permission.ProjectAdmin,
283
+ Permission.ProjectMember,
284
+ Permission.Viewer,
285
+ Permission.ReadWebhookLog,
286
+ Permission.ReadAllProjectResources,
287
+ ],
288
+ update: [],
289
+ })
290
+ @TableColumn({
291
+ manyToOneRelationColumn: "incidentId",
292
+ type: TableColumnType.Entity,
293
+ modelType: Incident,
294
+ title: "Incident",
295
+ description: "Incident associated with this request (if any)",
296
+ })
297
+ @ManyToOne(
298
+ () => {
299
+ return Incident;
300
+ },
301
+ {
302
+ eager: false,
303
+ nullable: true,
304
+ onDelete: "CASCADE",
305
+ orphanedRowAction: "nullify",
306
+ },
307
+ )
308
+ @JoinColumn({ name: "incidentId" })
309
+ public incident?: Incident = undefined;
310
+
311
+ @ColumnAccessControl({
312
+ create: [],
313
+ read: [
314
+ Permission.ProjectOwner,
315
+ Permission.ProjectAdmin,
316
+ Permission.ProjectMember,
317
+ Permission.Viewer,
318
+ Permission.ReadWebhookLog,
319
+ Permission.ReadAllProjectResources,
320
+ ],
321
+ update: [],
322
+ })
323
+ @Index()
324
+ @TableColumn({
325
+ type: TableColumnType.ObjectID,
326
+ required: false,
327
+ canReadOnRelationQuery: true,
328
+ title: "Incident ID",
329
+ description: "ID of Incident associated with this request (if any)",
330
+ })
331
+ @Column({
332
+ type: ColumnType.ObjectID,
333
+ nullable: true,
334
+ transformer: ObjectID.getDatabaseTransformer(),
335
+ })
336
+ public incidentId?: ObjectID = undefined;
337
+
338
+ @ColumnAccessControl({
339
+ create: [],
340
+ read: [
341
+ Permission.ProjectOwner,
342
+ Permission.ProjectAdmin,
343
+ Permission.ProjectMember,
344
+ Permission.Viewer,
345
+ Permission.ReadWebhookLog,
346
+ Permission.ReadAllProjectResources,
347
+ ],
348
+ update: [],
349
+ })
350
+ @TableColumn({
351
+ manyToOneRelationColumn: "userId",
352
+ type: TableColumnType.Entity,
353
+ modelType: User,
354
+ title: "User",
355
+ description: "User who initiated this request (if any)",
356
+ })
357
+ @ManyToOne(
358
+ () => {
359
+ return User;
360
+ },
361
+ {
362
+ eager: false,
363
+ nullable: true,
364
+ onDelete: "CASCADE",
365
+ orphanedRowAction: "nullify",
366
+ },
367
+ )
368
+ @JoinColumn({ name: "userId" })
369
+ public user?: User = undefined;
370
+
371
+ @ColumnAccessControl({
372
+ create: [],
373
+ read: [
374
+ Permission.ProjectOwner,
375
+ Permission.ProjectAdmin,
376
+ Permission.ProjectMember,
377
+ Permission.Viewer,
378
+ Permission.ReadWebhookLog,
379
+ Permission.ReadAllProjectResources,
380
+ ],
381
+ update: [],
382
+ })
383
+ @Index()
384
+ @TableColumn({
385
+ type: TableColumnType.ObjectID,
386
+ required: false,
387
+ canReadOnRelationQuery: true,
388
+ title: "User ID",
389
+ description: "ID of User who initiated this request (if any)",
390
+ })
391
+ @Column({
392
+ type: ColumnType.ObjectID,
393
+ nullable: true,
394
+ transformer: ObjectID.getDatabaseTransformer(),
395
+ })
396
+ public userId?: ObjectID = undefined;
397
+
398
+ @ColumnAccessControl({
399
+ create: [],
400
+ read: [
401
+ Permission.ProjectOwner,
402
+ Permission.ProjectAdmin,
403
+ Permission.ProjectMember,
404
+ Permission.Viewer,
405
+ Permission.ReadWebhookLog,
406
+ Permission.ReadAllProjectResources,
407
+ ],
408
+ update: [],
409
+ })
410
+ @TableColumn({
411
+ manyToOneRelationColumn: "alertId",
412
+ type: TableColumnType.Entity,
413
+ modelType: Alert,
414
+ title: "Alert",
415
+ description: "Alert associated with this request (if any)",
416
+ })
417
+ @ManyToOne(
418
+ () => {
419
+ return Alert;
420
+ },
421
+ {
422
+ eager: false,
423
+ nullable: true,
424
+ onDelete: "CASCADE",
425
+ orphanedRowAction: "nullify",
426
+ },
427
+ )
428
+ @JoinColumn({ name: "alertId" })
429
+ public alert?: Alert = undefined;
430
+
431
+ @ColumnAccessControl({
432
+ create: [],
433
+ read: [
434
+ Permission.ProjectOwner,
435
+ Permission.ProjectAdmin,
436
+ Permission.ProjectMember,
437
+ Permission.Viewer,
438
+ Permission.ReadWebhookLog,
439
+ Permission.ReadAllProjectResources,
440
+ ],
441
+ update: [],
442
+ })
443
+ @Index()
444
+ @TableColumn({
445
+ type: TableColumnType.ObjectID,
446
+ required: false,
447
+ canReadOnRelationQuery: true,
448
+ title: "Alert ID",
449
+ description: "ID of Alert associated with this request (if any)",
450
+ })
451
+ @Column({
452
+ type: ColumnType.ObjectID,
453
+ nullable: true,
454
+ transformer: ObjectID.getDatabaseTransformer(),
455
+ })
456
+ public alertId?: ObjectID = undefined;
457
+
458
+ @ColumnAccessControl({
459
+ create: [],
460
+ read: [
461
+ Permission.ProjectOwner,
462
+ Permission.ProjectAdmin,
463
+ Permission.ProjectMember,
464
+ Permission.Viewer,
465
+ Permission.ReadWebhookLog,
466
+ Permission.ReadAllProjectResources,
467
+ ],
468
+ update: [],
469
+ })
470
+ @TableColumn({
471
+ manyToOneRelationColumn: "monitorId",
472
+ type: TableColumnType.Entity,
473
+ modelType: Monitor,
474
+ title: "Monitor",
475
+ description: "Monitor associated with this request (if any)",
476
+ })
477
+ @ManyToOne(
478
+ () => {
479
+ return Monitor;
480
+ },
481
+ {
482
+ eager: false,
483
+ nullable: true,
484
+ onDelete: "CASCADE",
485
+ orphanedRowAction: "nullify",
486
+ },
487
+ )
488
+ @JoinColumn({ name: "monitorId" })
489
+ public monitor?: Monitor = undefined;
490
+
491
+ @ColumnAccessControl({
492
+ create: [],
493
+ read: [
494
+ Permission.ProjectOwner,
495
+ Permission.ProjectAdmin,
496
+ Permission.ProjectMember,
497
+ Permission.Viewer,
498
+ Permission.ReadWebhookLog,
499
+ Permission.ReadAllProjectResources,
500
+ ],
501
+ update: [],
502
+ })
503
+ @Index()
504
+ @TableColumn({
505
+ type: TableColumnType.ObjectID,
506
+ required: false,
507
+ canReadOnRelationQuery: true,
508
+ title: "Monitor ID",
509
+ description: "ID of Monitor associated with this request (if any)",
510
+ })
511
+ @Column({
512
+ type: ColumnType.ObjectID,
513
+ nullable: true,
514
+ transformer: ObjectID.getDatabaseTransformer(),
515
+ })
516
+ public monitorId?: ObjectID = undefined;
517
+
518
+ @ColumnAccessControl({
519
+ create: [],
520
+ read: [
521
+ Permission.ProjectOwner,
522
+ Permission.ProjectAdmin,
523
+ Permission.ProjectMember,
524
+ Permission.Viewer,
525
+ Permission.ReadWebhookLog,
526
+ Permission.ReadAllProjectResources,
527
+ ],
528
+ update: [],
529
+ })
530
+ @TableColumn({
531
+ manyToOneRelationColumn: "scheduledMaintenanceId",
532
+ type: TableColumnType.Entity,
533
+ modelType: ScheduledMaintenance,
534
+ title: "Scheduled Maintenance",
535
+ description: "Scheduled Maintenance associated with this request (if any)",
536
+ })
537
+ @ManyToOne(
538
+ () => {
539
+ return ScheduledMaintenance;
540
+ },
541
+ {
542
+ eager: false,
543
+ nullable: true,
544
+ onDelete: "CASCADE",
545
+ orphanedRowAction: "nullify",
546
+ },
547
+ )
548
+ @JoinColumn({ name: "scheduledMaintenanceId" })
549
+ public scheduledMaintenance?: ScheduledMaintenance = undefined;
550
+
551
+ @ColumnAccessControl({
552
+ create: [],
553
+ read: [
554
+ Permission.ProjectOwner,
555
+ Permission.ProjectAdmin,
556
+ Permission.ProjectMember,
557
+ Permission.Viewer,
558
+ Permission.ReadWebhookLog,
559
+ Permission.ReadAllProjectResources,
560
+ ],
561
+ update: [],
562
+ })
563
+ @Index()
564
+ @TableColumn({
565
+ type: TableColumnType.ObjectID,
566
+ required: false,
567
+ canReadOnRelationQuery: true,
568
+ title: "Scheduled Maintenance ID",
569
+ description:
570
+ "ID of Scheduled Maintenance associated with this request (if any)",
571
+ })
572
+ @Column({
573
+ type: ColumnType.ObjectID,
574
+ nullable: true,
575
+ transformer: ObjectID.getDatabaseTransformer(),
576
+ })
577
+ public scheduledMaintenanceId?: ObjectID = undefined;
578
+
579
+ @ColumnAccessControl({
580
+ create: [],
581
+ read: [
582
+ Permission.ProjectOwner,
583
+ Permission.ProjectAdmin,
584
+ Permission.ProjectMember,
585
+ Permission.Viewer,
586
+ Permission.ReadWebhookLog,
587
+ Permission.ReadAllProjectResources,
588
+ ],
589
+ update: [],
590
+ })
591
+ @TableColumn({
592
+ manyToOneRelationColumn: "statusPageId",
593
+ type: TableColumnType.Entity,
594
+ modelType: StatusPage,
595
+ title: "Status Page",
596
+ description: "Status Page associated with this request (if any)",
597
+ })
598
+ @ManyToOne(
599
+ () => {
600
+ return StatusPage;
601
+ },
602
+ {
603
+ eager: false,
604
+ nullable: true,
605
+ onDelete: "CASCADE",
606
+ orphanedRowAction: "nullify",
607
+ },
608
+ )
609
+ @JoinColumn({ name: "statusPageId" })
610
+ public statusPage?: StatusPage = undefined;
611
+
612
+ @ColumnAccessControl({
613
+ create: [],
614
+ read: [
615
+ Permission.ProjectOwner,
616
+ Permission.ProjectAdmin,
617
+ Permission.ProjectMember,
618
+ Permission.Viewer,
619
+ Permission.ReadWebhookLog,
620
+ Permission.ReadAllProjectResources,
621
+ ],
622
+ update: [],
623
+ })
624
+ @Index()
625
+ @TableColumn({
626
+ type: TableColumnType.ObjectID,
627
+ required: false,
628
+ canReadOnRelationQuery: true,
629
+ title: "Status Page ID",
630
+ description: "ID of Status Page associated with this request (if any)",
631
+ })
632
+ @Column({
633
+ type: ColumnType.ObjectID,
634
+ nullable: true,
635
+ transformer: ObjectID.getDatabaseTransformer(),
636
+ })
637
+ public statusPageId?: ObjectID = undefined;
638
+
639
+ @ColumnAccessControl({
640
+ create: [],
641
+ read: [
642
+ Permission.ProjectOwner,
643
+ Permission.ProjectAdmin,
644
+ Permission.ProjectMember,
645
+ Permission.Viewer,
646
+ Permission.ReadWebhookLog,
647
+ Permission.ReadAllProjectResources,
648
+ ],
649
+ update: [],
650
+ })
651
+ @TableColumn({
652
+ manyToOneRelationColumn: "statusPageAnnouncementId",
653
+ type: TableColumnType.Entity,
654
+ modelType: StatusPageAnnouncement,
655
+ title: "Status Page Announcement",
656
+ description:
657
+ "Status Page Announcement associated with this request (if any)",
658
+ })
659
+ @ManyToOne(
660
+ () => {
661
+ return StatusPageAnnouncement;
662
+ },
663
+ {
664
+ eager: false,
665
+ nullable: true,
666
+ onDelete: "CASCADE",
667
+ orphanedRowAction: "nullify",
668
+ },
669
+ )
670
+ @JoinColumn({ name: "statusPageAnnouncementId" })
671
+ public statusPageAnnouncement?: StatusPageAnnouncement = undefined;
672
+
673
+ @ColumnAccessControl({
674
+ create: [],
675
+ read: [
676
+ Permission.ProjectOwner,
677
+ Permission.ProjectAdmin,
678
+ Permission.ProjectMember,
679
+ Permission.Viewer,
680
+ Permission.ReadWebhookLog,
681
+ Permission.ReadAllProjectResources,
682
+ ],
683
+ update: [],
684
+ })
685
+ @Index()
686
+ @TableColumn({
687
+ type: TableColumnType.ObjectID,
688
+ required: false,
689
+ canReadOnRelationQuery: true,
690
+ title: "Status Page Announcement ID",
691
+ description:
692
+ "ID of Status Page Announcement associated with this request (if any)",
693
+ })
694
+ @Column({
695
+ type: ColumnType.ObjectID,
696
+ nullable: true,
697
+ transformer: ObjectID.getDatabaseTransformer(),
698
+ })
699
+ public statusPageAnnouncementId?: ObjectID = undefined;
700
+
701
+ @ColumnAccessControl({
702
+ create: [],
703
+ read: [
704
+ Permission.ProjectOwner,
705
+ Permission.ProjectAdmin,
706
+ Permission.ProjectMember,
707
+ Permission.Viewer,
708
+ Permission.ReadWebhookLog,
709
+ Permission.ReadAllProjectResources,
710
+ ],
711
+ update: [],
712
+ })
713
+ @TableColumn({
714
+ manyToOneRelationColumn: "teamId",
715
+ type: TableColumnType.Entity,
716
+ modelType: Team,
717
+ title: "Team",
718
+ description: "Team associated with this request (if any)",
719
+ })
720
+ @ManyToOne(
721
+ () => {
722
+ return Team;
723
+ },
724
+ {
725
+ eager: false,
726
+ nullable: true,
727
+ onDelete: "CASCADE",
728
+ orphanedRowAction: "nullify",
729
+ },
730
+ )
731
+ @JoinColumn({ name: "teamId" })
732
+ public team?: Team = undefined;
733
+
734
+ @ColumnAccessControl({
735
+ create: [],
736
+ read: [
737
+ Permission.ProjectOwner,
738
+ Permission.ProjectAdmin,
739
+ Permission.ProjectMember,
740
+ Permission.Viewer,
741
+ Permission.ReadWebhookLog,
742
+ Permission.ReadAllProjectResources,
743
+ ],
744
+ update: [],
745
+ })
746
+ @Index()
747
+ @TableColumn({
748
+ type: TableColumnType.ObjectID,
749
+ required: false,
750
+ canReadOnRelationQuery: true,
751
+ title: "Team ID",
752
+ description: "ID of Team associated with this request (if any)",
753
+ })
754
+ @Column({
755
+ type: ColumnType.ObjectID,
756
+ nullable: true,
757
+ transformer: ObjectID.getDatabaseTransformer(),
758
+ })
759
+ public teamId?: ObjectID = undefined;
760
+
761
+ @ColumnAccessControl({
762
+ create: [],
763
+ read: [
764
+ Permission.ProjectOwner,
765
+ Permission.ProjectAdmin,
766
+ Permission.ProjectMember,
767
+ Permission.Viewer,
768
+ Permission.ReadWebhookLog,
769
+ Permission.ReadAllProjectResources,
770
+ ],
771
+ update: [],
772
+ })
773
+ @TableColumn({
774
+ manyToOneRelationColumn: "onCallDutyPolicyId",
775
+ type: TableColumnType.Entity,
776
+ modelType: OnCallDutyPolicy,
777
+ title: "On-Call Duty Policy",
778
+ description: "On-Call Duty Policy associated with this request (if any)",
779
+ })
780
+ @ManyToOne(
781
+ () => {
782
+ return OnCallDutyPolicy;
783
+ },
784
+ {
785
+ eager: false,
786
+ nullable: true,
787
+ onDelete: "CASCADE",
788
+ orphanedRowAction: "nullify",
789
+ },
790
+ )
791
+ @JoinColumn({ name: "onCallDutyPolicyId" })
792
+ public onCallDutyPolicy?: OnCallDutyPolicy = undefined;
793
+
794
+ @ColumnAccessControl({
795
+ create: [],
796
+ read: [
797
+ Permission.ProjectOwner,
798
+ Permission.ProjectAdmin,
799
+ Permission.ProjectMember,
800
+ Permission.Viewer,
801
+ Permission.ReadWebhookLog,
802
+ Permission.ReadAllProjectResources,
803
+ ],
804
+ update: [],
805
+ })
806
+ @Index()
807
+ @TableColumn({
808
+ type: TableColumnType.ObjectID,
809
+ required: false,
810
+ canReadOnRelationQuery: true,
811
+ title: "On-Call Duty Policy ID",
812
+ description:
813
+ "ID of On-Call Duty Policy associated with this request (if any)",
814
+ })
815
+ @Column({
816
+ type: ColumnType.ObjectID,
817
+ nullable: true,
818
+ transformer: ObjectID.getDatabaseTransformer(),
819
+ })
820
+ public onCallDutyPolicyId?: ObjectID = undefined;
821
+
822
+ @ColumnAccessControl({
823
+ create: [],
824
+ read: [
825
+ Permission.ProjectOwner,
826
+ Permission.ProjectAdmin,
827
+ Permission.ProjectMember,
828
+ Permission.Viewer,
829
+ Permission.ReadWebhookLog,
830
+ Permission.ReadAllProjectResources,
831
+ ],
832
+ update: [],
833
+ })
834
+ @TableColumn({
835
+ manyToOneRelationColumn: "onCallDutyPolicyEscalationRuleId",
836
+ type: TableColumnType.Entity,
837
+ modelType: OnCallDutyPolicyEscalationRule,
838
+ title: "On-Call Duty Policy Escalation Rule",
839
+ description:
840
+ "On-Call Duty Policy Escalation Rule associated with this request (if any)",
841
+ })
842
+ @ManyToOne(
843
+ () => {
844
+ return OnCallDutyPolicyEscalationRule;
845
+ },
846
+ {
847
+ eager: false,
848
+ nullable: true,
849
+ onDelete: "CASCADE",
850
+ orphanedRowAction: "nullify",
851
+ },
852
+ )
853
+ @JoinColumn({ name: "onCallDutyPolicyEscalationRuleId" })
854
+ public onCallDutyPolicyEscalationRule?: OnCallDutyPolicyEscalationRule =
855
+ undefined;
856
+
857
+ @ColumnAccessControl({
858
+ create: [],
859
+ read: [
860
+ Permission.ProjectOwner,
861
+ Permission.ProjectAdmin,
862
+ Permission.ProjectMember,
863
+ Permission.Viewer,
864
+ Permission.ReadWebhookLog,
865
+ Permission.ReadAllProjectResources,
866
+ ],
867
+ update: [],
868
+ })
869
+ @Index()
870
+ @TableColumn({
871
+ type: TableColumnType.ObjectID,
872
+ required: false,
873
+ canReadOnRelationQuery: true,
874
+ title: "On-Call Duty Policy Escalation Rule ID",
875
+ description:
876
+ "ID of On-Call Duty Policy Escalation Rule associated with this request (if any)",
877
+ })
878
+ @Column({
879
+ type: ColumnType.ObjectID,
880
+ nullable: true,
881
+ transformer: ObjectID.getDatabaseTransformer(),
882
+ })
883
+ public onCallDutyPolicyEscalationRuleId?: ObjectID = undefined;
884
+
885
+ @ColumnAccessControl({
886
+ create: [],
887
+ read: [
888
+ Permission.ProjectOwner,
889
+ Permission.ProjectAdmin,
890
+ Permission.ProjectMember,
891
+ Permission.Viewer,
892
+ Permission.ReadWebhookLog,
893
+ Permission.ReadAllProjectResources,
894
+ ],
895
+ update: [],
896
+ })
897
+ @TableColumn({
898
+ manyToOneRelationColumn: "onCallDutyPolicyScheduleId",
899
+ type: TableColumnType.Entity,
900
+ modelType: OnCallDutyPolicySchedule,
901
+ title: "On-Call Duty Policy Schedule",
902
+ description:
903
+ "On-Call Duty Policy Schedule associated with this request (if any)",
904
+ })
905
+ @ManyToOne(
906
+ () => {
907
+ return OnCallDutyPolicySchedule;
908
+ },
909
+ {
910
+ eager: false,
911
+ nullable: true,
912
+ onDelete: "CASCADE",
913
+ orphanedRowAction: "nullify",
914
+ },
915
+ )
916
+ @JoinColumn({ name: "onCallDutyPolicyScheduleId" })
917
+ public onCallDutyPolicySchedule?: OnCallDutyPolicySchedule = undefined;
918
+
919
+ @ColumnAccessControl({
920
+ create: [],
921
+ read: [
922
+ Permission.ProjectOwner,
923
+ Permission.ProjectAdmin,
924
+ Permission.ProjectMember,
925
+ Permission.Viewer,
926
+ Permission.ReadWebhookLog,
927
+ Permission.ReadAllProjectResources,
928
+ ],
929
+ update: [],
930
+ })
931
+ @Index()
932
+ @TableColumn({
933
+ type: TableColumnType.ObjectID,
934
+ required: false,
935
+ canReadOnRelationQuery: true,
936
+ title: "On-Call Duty Policy Schedule ID",
937
+ description:
938
+ "ID of On-Call Duty Policy Schedule associated with this request (if any)",
939
+ })
940
+ @Column({
941
+ type: ColumnType.ObjectID,
942
+ nullable: true,
943
+ transformer: ObjectID.getDatabaseTransformer(),
944
+ })
945
+ public onCallDutyPolicyScheduleId?: ObjectID = undefined;
946
+
947
+ @ColumnAccessControl({
948
+ create: [],
949
+ read: [],
950
+ update: [],
951
+ })
952
+ @TableColumn({
953
+ manyToOneRelationColumn: "deletedByUserId",
954
+ type: TableColumnType.Entity,
955
+ title: "Deleted by User",
956
+ modelType: User,
957
+ description:
958
+ "Relation to User who deleted this object (if this object was deleted by a User)",
959
+ })
960
+ @ManyToOne(
961
+ () => {
962
+ return User;
963
+ },
964
+ {
965
+ cascade: false,
966
+ eager: false,
967
+ nullable: true,
968
+ onDelete: "SET NULL",
969
+ orphanedRowAction: "nullify",
970
+ },
971
+ )
972
+ @JoinColumn({ name: "deletedByUserId" })
973
+ public deletedByUser?: User = undefined;
974
+
975
+ @ColumnAccessControl({
976
+ create: [],
977
+ read: [],
978
+ update: [],
979
+ })
980
+ @TableColumn({
981
+ type: TableColumnType.ObjectID,
982
+ title: "Deleted by User ID",
983
+ description:
984
+ "User ID who deleted this object (if this object was deleted by a User)",
985
+ })
986
+ @Column({
987
+ type: ColumnType.ObjectID,
988
+ nullable: true,
989
+ transformer: ObjectID.getDatabaseTransformer(),
990
+ })
991
+ public deletedByUserId?: ObjectID = undefined;
992
+ }