@oneuptime/common 9.3.22 → 9.4.0

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 (121) hide show
  1. package/Models/DatabaseModels/IncomingCallLog.ts +521 -0
  2. package/Models/DatabaseModels/IncomingCallLogItem.ts +463 -0
  3. package/Models/DatabaseModels/IncomingCallPolicy.ts +811 -0
  4. package/Models/DatabaseModels/IncomingCallPolicyEscalationRule.ts +597 -0
  5. package/Models/DatabaseModels/Index.ts +18 -0
  6. package/Models/DatabaseModels/ProjectSCIMLog.ts +422 -0
  7. package/Models/DatabaseModels/StatusPageSCIMLog.ts +455 -0
  8. package/Models/DatabaseModels/User.ts +0 -15
  9. package/Models/DatabaseModels/UserIncomingCallNumber.ts +296 -0
  10. package/Server/API/UserIncomingCallNumberAPI.ts +128 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.ts +121 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.ts +22 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.ts +787 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.ts +29 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  16. package/Server/Services/IncomingCallLogItemService.ts +10 -0
  17. package/Server/Services/IncomingCallLogService.ts +10 -0
  18. package/Server/Services/IncomingCallPolicyEscalationRuleService.ts +267 -0
  19. package/Server/Services/IncomingCallPolicyService.ts +10 -0
  20. package/Server/Services/Index.ts +7 -0
  21. package/Server/Services/ProjectSCIMLogService.ts +11 -0
  22. package/Server/Services/StatusPageSCIMLogService.ts +11 -0
  23. package/Server/Services/UserCallService.ts +31 -0
  24. package/Server/Services/UserIncomingCallNumberService.ts +258 -0
  25. package/Server/Services/UserSmsService.ts +31 -0
  26. package/Server/Utils/StartServer.ts +5 -0
  27. package/Types/Call/CallProvider.ts +99 -0
  28. package/Types/Call/CallProviderType.ts +6 -0
  29. package/Types/Icon/IconProp.ts +1 -0
  30. package/Types/IncomingCall/IncomingCallStatus.ts +13 -0
  31. package/Types/Permission.ts +126 -0
  32. package/Types/Phone.ts +53 -4
  33. package/Types/SCIM/SCIMLogStatus.ts +7 -0
  34. package/UI/Components/Diagram/ConceptCards.tsx +74 -0
  35. package/UI/Components/Diagram/HorizontalStepChain.tsx +92 -0
  36. package/UI/Components/Diagram/Index.ts +11 -0
  37. package/UI/Components/Diagram/NumberedSteps.tsx +77 -0
  38. package/UI/Components/Diagram/VerticalFlowSteps.tsx +59 -0
  39. package/UI/Components/Icon/Icon.tsx +10 -0
  40. package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +86 -2
  41. package/build/dist/Models/DatabaseModels/IncomingCallLog.js +565 -0
  42. package/build/dist/Models/DatabaseModels/IncomingCallLog.js.map +1 -0
  43. package/build/dist/Models/DatabaseModels/IncomingCallLogItem.js +497 -0
  44. package/build/dist/Models/DatabaseModels/IncomingCallLogItem.js.map +1 -0
  45. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js +840 -0
  46. package/build/dist/Models/DatabaseModels/IncomingCallPolicy.js.map +1 -0
  47. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js +619 -0
  48. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js.map +1 -0
  49. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  50. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  51. package/build/dist/Models/DatabaseModels/ProjectSCIMLog.js +455 -0
  52. package/build/dist/Models/DatabaseModels/ProjectSCIMLog.js.map +1 -0
  53. package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js +486 -0
  54. package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js.map +1 -0
  55. package/build/dist/Models/DatabaseModels/User.js +0 -16
  56. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  57. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +315 -0
  58. package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -0
  59. package/build/dist/Server/API/UserIncomingCallNumberAPI.js +72 -0
  60. package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.js +48 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768583966447-MigrationName.js.map +1 -0
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.js +34 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768647802022-RemoveAlertPhoneNumberFromUser.js.map +1 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.js +270 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768649699509-MigrationName.js.map +1 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.js +16 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1768682071562-MigrationName.js.map +1 -0
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  71. package/build/dist/Server/Services/IncomingCallLogItemService.js +9 -0
  72. package/build/dist/Server/Services/IncomingCallLogItemService.js.map +1 -0
  73. package/build/dist/Server/Services/IncomingCallLogService.js +9 -0
  74. package/build/dist/Server/Services/IncomingCallLogService.js.map +1 -0
  75. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js +197 -0
  76. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js.map +1 -0
  77. package/build/dist/Server/Services/IncomingCallPolicyService.js +9 -0
  78. package/build/dist/Server/Services/IncomingCallPolicyService.js.map +1 -0
  79. package/build/dist/Server/Services/Index.js +6 -0
  80. package/build/dist/Server/Services/Index.js.map +1 -1
  81. package/build/dist/Server/Services/ProjectSCIMLogService.js +10 -0
  82. package/build/dist/Server/Services/ProjectSCIMLogService.js.map +1 -0
  83. package/build/dist/Server/Services/StatusPageSCIMLogService.js +10 -0
  84. package/build/dist/Server/Services/StatusPageSCIMLogService.js.map +1 -0
  85. package/build/dist/Server/Services/UserCallService.js +21 -0
  86. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  87. package/build/dist/Server/Services/UserIncomingCallNumberService.js +225 -0
  88. package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -0
  89. package/build/dist/Server/Services/UserSmsService.js +21 -0
  90. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  91. package/build/dist/Server/Utils/StartServer.js +5 -0
  92. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  93. package/build/dist/Types/Call/CallProvider.js +2 -0
  94. package/build/dist/Types/Call/CallProvider.js.map +1 -0
  95. package/build/dist/Types/Call/CallProviderType.js +7 -0
  96. package/build/dist/Types/Call/CallProviderType.js.map +1 -0
  97. package/build/dist/Types/Icon/IconProp.js +1 -0
  98. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  99. package/build/dist/Types/IncomingCall/IncomingCallStatus.js +14 -0
  100. package/build/dist/Types/IncomingCall/IncomingCallStatus.js.map +1 -0
  101. package/build/dist/Types/Permission.js +104 -0
  102. package/build/dist/Types/Permission.js.map +1 -1
  103. package/build/dist/Types/Phone.js +47 -3
  104. package/build/dist/Types/Phone.js.map +1 -1
  105. package/build/dist/Types/SCIM/SCIMLogStatus.js +8 -0
  106. package/build/dist/Types/SCIM/SCIMLogStatus.js.map +1 -0
  107. package/build/dist/UI/Components/Diagram/ConceptCards.js +30 -0
  108. package/build/dist/UI/Components/Diagram/ConceptCards.js.map +1 -0
  109. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +30 -0
  110. package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -0
  111. package/build/dist/UI/Components/Diagram/Index.js +5 -0
  112. package/build/dist/UI/Components/Diagram/Index.js.map +1 -0
  113. package/build/dist/UI/Components/Diagram/NumberedSteps.js +18 -0
  114. package/build/dist/UI/Components/Diagram/NumberedSteps.js.map +1 -0
  115. package/build/dist/UI/Components/Diagram/VerticalFlowSteps.js +16 -0
  116. package/build/dist/UI/Components/Diagram/VerticalFlowSteps.js.map +1 -0
  117. package/build/dist/UI/Components/Icon/Icon.js +4 -0
  118. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  119. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +30 -1
  120. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
  121. package/package.json +1 -1
@@ -0,0 +1,463 @@
1
+ import IncomingCallLog from "./IncomingCallLog";
2
+ import IncomingCallPolicyEscalationRule from "./IncomingCallPolicyEscalationRule";
3
+ import Project from "./Project";
4
+ import User from "./User";
5
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
6
+ import Route from "../../Types/API/Route";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import ColumnLength from "../../Types/Database/ColumnLength";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import TableColumn from "../../Types/Database/TableColumn";
14
+ import TableColumnType from "../../Types/Database/TableColumnType";
15
+ import TableMetadata from "../../Types/Database/TableMetadata";
16
+ import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import IconProp from "../../Types/Icon/IconProp";
18
+ import IncomingCallStatus from "../../Types/IncomingCall/IncomingCallStatus";
19
+ import ObjectID from "../../Types/ObjectID";
20
+ import Permission from "../../Types/Permission";
21
+ import Phone from "../../Types/Phone";
22
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
+
24
+ @EnableDocumentation()
25
+ @TenantColumn("projectId")
26
+ @TableAccessControl({
27
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
28
+ read: [
29
+ Permission.ProjectOwner,
30
+ Permission.ProjectAdmin,
31
+ Permission.ProjectMember,
32
+ Permission.ReadProjectIncomingCallLogItem,
33
+ ],
34
+ delete: [Permission.ProjectOwner, Permission.ProjectAdmin],
35
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
36
+ })
37
+ @CrudApiEndpoint(new Route("/incoming-call-log-item"))
38
+ @Entity({
39
+ name: "IncomingCallLogItem",
40
+ })
41
+ @TableMetadata({
42
+ tableName: "IncomingCallLogItem",
43
+ singularName: "Incoming Call Log Item",
44
+ pluralName: "Incoming Call Log Items",
45
+ icon: IconProp.Call,
46
+ tableDescription:
47
+ "Child log for each escalation attempt / user ring within a call.",
48
+ })
49
+ export default class IncomingCallLogItem extends BaseModel {
50
+ @ColumnAccessControl({
51
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
52
+ read: [
53
+ Permission.ProjectOwner,
54
+ Permission.ProjectAdmin,
55
+ Permission.ProjectMember,
56
+ Permission.ReadProjectIncomingCallLogItem,
57
+ ],
58
+ update: [],
59
+ })
60
+ @TableColumn({
61
+ manyToOneRelationColumn: "projectId",
62
+ type: TableColumnType.Entity,
63
+ modelType: Project,
64
+ title: "Project",
65
+ description: "Relation to Project Resource in which this object belongs",
66
+ })
67
+ @ManyToOne(
68
+ () => {
69
+ return Project;
70
+ },
71
+ {
72
+ eager: false,
73
+ nullable: true,
74
+ onDelete: "CASCADE",
75
+ orphanedRowAction: "nullify",
76
+ },
77
+ )
78
+ @JoinColumn({ name: "projectId" })
79
+ public project?: Project = undefined;
80
+
81
+ @ColumnAccessControl({
82
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
83
+ read: [
84
+ Permission.ProjectOwner,
85
+ Permission.ProjectAdmin,
86
+ Permission.ProjectMember,
87
+ Permission.ReadProjectIncomingCallLogItem,
88
+ ],
89
+ update: [],
90
+ })
91
+ @Index()
92
+ @TableColumn({
93
+ type: TableColumnType.ObjectID,
94
+ required: true,
95
+ canReadOnRelationQuery: true,
96
+ title: "Project ID",
97
+ description: "ID of your OneUptime Project in which this object belongs",
98
+ })
99
+ @Column({
100
+ type: ColumnType.ObjectID,
101
+ nullable: false,
102
+ transformer: ObjectID.getDatabaseTransformer(),
103
+ })
104
+ public projectId?: ObjectID = undefined;
105
+
106
+ @ColumnAccessControl({
107
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
108
+ read: [
109
+ Permission.ProjectOwner,
110
+ Permission.ProjectAdmin,
111
+ Permission.ProjectMember,
112
+ Permission.ReadProjectIncomingCallLogItem,
113
+ ],
114
+ update: [],
115
+ })
116
+ @TableColumn({
117
+ manyToOneRelationColumn: "incomingCallLogId",
118
+ type: TableColumnType.Entity,
119
+ modelType: IncomingCallLog,
120
+ title: "Incoming Call Log",
121
+ description: "Relation to the parent Incoming Call Log",
122
+ })
123
+ @ManyToOne(
124
+ () => {
125
+ return IncomingCallLog;
126
+ },
127
+ {
128
+ eager: false,
129
+ nullable: false,
130
+ onDelete: "CASCADE",
131
+ orphanedRowAction: "nullify",
132
+ },
133
+ )
134
+ @JoinColumn({ name: "incomingCallLogId" })
135
+ public incomingCallLog?: IncomingCallLog = undefined;
136
+
137
+ @ColumnAccessControl({
138
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
139
+ read: [
140
+ Permission.ProjectOwner,
141
+ Permission.ProjectAdmin,
142
+ Permission.ProjectMember,
143
+ Permission.ReadProjectIncomingCallLogItem,
144
+ ],
145
+ update: [],
146
+ })
147
+ @Index()
148
+ @TableColumn({
149
+ type: TableColumnType.ObjectID,
150
+ required: true,
151
+ canReadOnRelationQuery: true,
152
+ title: "Incoming Call Log ID",
153
+ description: "ID of the parent Incoming Call Log",
154
+ })
155
+ @Column({
156
+ type: ColumnType.ObjectID,
157
+ nullable: false,
158
+ transformer: ObjectID.getDatabaseTransformer(),
159
+ })
160
+ public incomingCallLogId?: ObjectID = undefined;
161
+
162
+ @ColumnAccessControl({
163
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
164
+ read: [
165
+ Permission.ProjectOwner,
166
+ Permission.ProjectAdmin,
167
+ Permission.ProjectMember,
168
+ Permission.ReadProjectIncomingCallLogItem,
169
+ ],
170
+ update: [],
171
+ })
172
+ @TableColumn({
173
+ manyToOneRelationColumn: "incomingCallPolicyEscalationRuleId",
174
+ type: TableColumnType.Entity,
175
+ modelType: IncomingCallPolicyEscalationRule,
176
+ title: "Escalation Rule",
177
+ description: "Which escalation rule was used",
178
+ })
179
+ @ManyToOne(
180
+ () => {
181
+ return IncomingCallPolicyEscalationRule;
182
+ },
183
+ {
184
+ eager: false,
185
+ nullable: true,
186
+ onDelete: "SET NULL",
187
+ orphanedRowAction: "nullify",
188
+ },
189
+ )
190
+ @JoinColumn({ name: "incomingCallPolicyEscalationRuleId" })
191
+ public incomingCallPolicyEscalationRule?: IncomingCallPolicyEscalationRule =
192
+ undefined;
193
+
194
+ @ColumnAccessControl({
195
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
196
+ read: [
197
+ Permission.ProjectOwner,
198
+ Permission.ProjectAdmin,
199
+ Permission.ProjectMember,
200
+ Permission.ReadProjectIncomingCallLogItem,
201
+ ],
202
+ update: [],
203
+ })
204
+ @TableColumn({
205
+ type: TableColumnType.ObjectID,
206
+ title: "Escalation Rule ID",
207
+ description: "ID of the escalation rule used",
208
+ })
209
+ @Column({
210
+ type: ColumnType.ObjectID,
211
+ nullable: true,
212
+ transformer: ObjectID.getDatabaseTransformer(),
213
+ })
214
+ public incomingCallPolicyEscalationRuleId?: ObjectID = undefined;
215
+
216
+ @ColumnAccessControl({
217
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
218
+ read: [
219
+ Permission.ProjectOwner,
220
+ Permission.ProjectAdmin,
221
+ Permission.ProjectMember,
222
+ Permission.ReadProjectIncomingCallLogItem,
223
+ ],
224
+ update: [],
225
+ })
226
+ @TableColumn({
227
+ manyToOneRelationColumn: "userId",
228
+ type: TableColumnType.Entity,
229
+ modelType: User,
230
+ title: "User",
231
+ description: "User who was called",
232
+ })
233
+ @ManyToOne(
234
+ () => {
235
+ return User;
236
+ },
237
+ {
238
+ eager: false,
239
+ nullable: true,
240
+ onDelete: "SET NULL",
241
+ orphanedRowAction: "nullify",
242
+ },
243
+ )
244
+ @JoinColumn({ name: "userId" })
245
+ public user?: User = undefined;
246
+
247
+ @ColumnAccessControl({
248
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
249
+ read: [
250
+ Permission.ProjectOwner,
251
+ Permission.ProjectAdmin,
252
+ Permission.ProjectMember,
253
+ Permission.ReadProjectIncomingCallLogItem,
254
+ ],
255
+ update: [],
256
+ })
257
+ @Index()
258
+ @TableColumn({
259
+ type: TableColumnType.ObjectID,
260
+ title: "User ID",
261
+ description: "User ID who was called",
262
+ canReadOnRelationQuery: true,
263
+ })
264
+ @Column({
265
+ type: ColumnType.ObjectID,
266
+ nullable: true,
267
+ transformer: ObjectID.getDatabaseTransformer(),
268
+ })
269
+ public userId?: ObjectID = undefined;
270
+
271
+ @ColumnAccessControl({
272
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
273
+ read: [
274
+ Permission.ProjectOwner,
275
+ Permission.ProjectAdmin,
276
+ Permission.ProjectMember,
277
+ Permission.ReadProjectIncomingCallLogItem,
278
+ ],
279
+ update: [],
280
+ })
281
+ @TableColumn({
282
+ required: false,
283
+ type: TableColumnType.Phone,
284
+ title: "User Phone Number",
285
+ description: "Phone number that was dialed",
286
+ canReadOnRelationQuery: true,
287
+ })
288
+ @Column({
289
+ nullable: true,
290
+ type: ColumnType.Phone,
291
+ length: ColumnLength.Phone,
292
+ transformer: Phone.getDatabaseTransformer(),
293
+ })
294
+ public userPhoneNumber?: Phone = undefined;
295
+
296
+ @ColumnAccessControl({
297
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
298
+ read: [
299
+ Permission.ProjectOwner,
300
+ Permission.ProjectAdmin,
301
+ Permission.ProjectMember,
302
+ Permission.ReadProjectIncomingCallLogItem,
303
+ ],
304
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
305
+ })
306
+ @Index()
307
+ @TableColumn({
308
+ required: true,
309
+ type: TableColumnType.ShortText,
310
+ title: "Status",
311
+ description: "Status of this dial attempt",
312
+ canReadOnRelationQuery: true,
313
+ })
314
+ @Column({
315
+ nullable: false,
316
+ type: ColumnType.ShortText,
317
+ length: ColumnLength.ShortText,
318
+ default: IncomingCallStatus.Ringing,
319
+ })
320
+ public status?: IncomingCallStatus = undefined;
321
+
322
+ @ColumnAccessControl({
323
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
324
+ read: [
325
+ Permission.ProjectOwner,
326
+ Permission.ProjectAdmin,
327
+ Permission.ProjectMember,
328
+ Permission.ReadProjectIncomingCallLogItem,
329
+ ],
330
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
331
+ })
332
+ @TableColumn({
333
+ required: false,
334
+ type: TableColumnType.LongText,
335
+ title: "Status Message",
336
+ description: "Additional status information",
337
+ })
338
+ @Column({
339
+ nullable: true,
340
+ type: ColumnType.LongText,
341
+ length: ColumnLength.LongText,
342
+ })
343
+ public statusMessage?: string = undefined;
344
+
345
+ @ColumnAccessControl({
346
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
347
+ read: [
348
+ Permission.ProjectOwner,
349
+ Permission.ProjectAdmin,
350
+ Permission.ProjectMember,
351
+ Permission.ReadProjectIncomingCallLogItem,
352
+ ],
353
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
354
+ })
355
+ @TableColumn({
356
+ required: false,
357
+ type: TableColumnType.Number,
358
+ title: "Dial Duration (Seconds)",
359
+ description: "How long this dial lasted in seconds",
360
+ canReadOnRelationQuery: true,
361
+ })
362
+ @Column({
363
+ nullable: true,
364
+ type: ColumnType.Number,
365
+ default: 0,
366
+ })
367
+ public dialDurationInSeconds?: number = undefined;
368
+
369
+ @ColumnAccessControl({
370
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
371
+ read: [
372
+ Permission.ProjectOwner,
373
+ Permission.ProjectAdmin,
374
+ Permission.ProjectMember,
375
+ Permission.ReadProjectIncomingCallLogItem,
376
+ ],
377
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
378
+ })
379
+ @TableColumn({
380
+ required: false,
381
+ type: TableColumnType.Number,
382
+ title: "Call Cost (USD Cents)",
383
+ description: "Cost for this dial attempt in USD cents",
384
+ })
385
+ @Column({
386
+ nullable: true,
387
+ type: ColumnType.Number,
388
+ default: 0,
389
+ })
390
+ public callCostInUSDCents?: number = undefined;
391
+
392
+ @ColumnAccessControl({
393
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
394
+ read: [
395
+ Permission.ProjectOwner,
396
+ Permission.ProjectAdmin,
397
+ Permission.ProjectMember,
398
+ Permission.ReadProjectIncomingCallLogItem,
399
+ ],
400
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
401
+ })
402
+ @Index()
403
+ @TableColumn({
404
+ required: false,
405
+ type: TableColumnType.Date,
406
+ title: "Started At",
407
+ description: "When dial started",
408
+ canReadOnRelationQuery: true,
409
+ })
410
+ @Column({
411
+ nullable: true,
412
+ type: ColumnType.Date,
413
+ })
414
+ public startedAt?: Date = undefined;
415
+
416
+ @ColumnAccessControl({
417
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
418
+ read: [
419
+ Permission.ProjectOwner,
420
+ Permission.ProjectAdmin,
421
+ Permission.ProjectMember,
422
+ Permission.ReadProjectIncomingCallLogItem,
423
+ ],
424
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
425
+ })
426
+ @TableColumn({
427
+ required: false,
428
+ type: TableColumnType.Date,
429
+ title: "Ended At",
430
+ description: "When dial ended",
431
+ })
432
+ @Column({
433
+ nullable: true,
434
+ type: ColumnType.Date,
435
+ })
436
+ public endedAt?: Date = undefined;
437
+
438
+ @ColumnAccessControl({
439
+ create: [Permission.ProjectOwner, Permission.ProjectAdmin],
440
+ read: [
441
+ Permission.ProjectOwner,
442
+ Permission.ProjectAdmin,
443
+ Permission.ProjectMember,
444
+ Permission.ReadProjectIncomingCallLogItem,
445
+ ],
446
+ update: [Permission.ProjectOwner, Permission.ProjectAdmin],
447
+ })
448
+ @TableColumn({
449
+ required: true,
450
+ isDefaultValueColumn: true,
451
+ type: TableColumnType.Boolean,
452
+ title: "Is Answered",
453
+ description: "Whether this user answered the call",
454
+ defaultValue: false,
455
+ canReadOnRelationQuery: true,
456
+ })
457
+ @Column({
458
+ nullable: false,
459
+ default: false,
460
+ type: ColumnType.Boolean,
461
+ })
462
+ public isAnswered?: boolean = undefined;
463
+ }