@budibase/types 2.3.18-alpha.13 → 2.3.18-alpha.15

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 (74) hide show
  1. package/dist/api/web/global/auditLogs.d.ts +39 -0
  2. package/dist/api/web/global/auditLogs.js +8 -0
  3. package/dist/api/web/global/auditLogs.js.map +1 -0
  4. package/dist/api/web/global/index.d.ts +1 -0
  5. package/dist/api/web/global/index.js +1 -0
  6. package/dist/api/web/global/index.js.map +1 -1
  7. package/dist/api/web/index.d.ts +1 -0
  8. package/dist/api/web/index.js +1 -0
  9. package/dist/api/web/index.js.map +1 -1
  10. package/dist/api/web/pagination.d.ts +23 -0
  11. package/dist/api/web/pagination.js +14 -0
  12. package/dist/api/web/pagination.js.map +1 -0
  13. package/dist/documents/global/auditLogs.d.ts +11 -0
  14. package/dist/documents/global/auditLogs.js +5 -0
  15. package/dist/documents/global/auditLogs.js.map +1 -0
  16. package/dist/documents/global/index.d.ts +1 -0
  17. package/dist/documents/global/index.js +1 -0
  18. package/dist/documents/global/index.js.map +1 -1
  19. package/dist/sdk/auditLogs.d.ts +14 -0
  20. package/dist/sdk/auditLogs.js +3 -0
  21. package/dist/sdk/auditLogs.js.map +1 -0
  22. package/dist/sdk/context.d.ts +2 -1
  23. package/dist/sdk/db.d.ts +18 -1
  24. package/dist/sdk/db.js +6 -1
  25. package/dist/sdk/db.js.map +1 -1
  26. package/dist/sdk/events/app.d.ts +33 -0
  27. package/dist/sdk/events/auditLog.d.ts +8 -0
  28. package/dist/sdk/events/auditLog.js +3 -0
  29. package/dist/sdk/events/auditLog.js.map +1 -0
  30. package/dist/sdk/events/auth.d.ts +6 -0
  31. package/dist/sdk/events/automation.d.ts +12 -0
  32. package/dist/sdk/events/backup.d.ts +2 -0
  33. package/dist/sdk/events/event.d.ts +7 -1
  34. package/dist/sdk/events/event.js +160 -1
  35. package/dist/sdk/events/event.js.map +1 -1
  36. package/dist/sdk/events/identification.d.ts +5 -0
  37. package/dist/sdk/events/index.d.ts +1 -0
  38. package/dist/sdk/events/index.js +1 -0
  39. package/dist/sdk/events/index.js.map +1 -1
  40. package/dist/sdk/events/screen.d.ts +6 -0
  41. package/dist/sdk/events/table.d.ts +15 -0
  42. package/dist/sdk/events/user.d.ts +36 -0
  43. package/dist/sdk/events/userGroup.d.ts +22 -0
  44. package/dist/sdk/index.d.ts +1 -0
  45. package/dist/sdk/index.js +1 -0
  46. package/dist/sdk/index.js.map +1 -1
  47. package/dist/sdk/licensing/feature.d.ts +1 -0
  48. package/dist/sdk/licensing/feature.js +1 -0
  49. package/dist/sdk/licensing/feature.js.map +1 -1
  50. package/dist/tsconfig.build.tsbuildinfo +1 -1
  51. package/package.json +2 -2
  52. package/src/api/web/global/auditLogs.ts +44 -0
  53. package/src/api/web/global/index.ts +1 -0
  54. package/src/api/web/index.ts +1 -0
  55. package/src/api/web/pagination.ts +27 -0
  56. package/src/documents/global/auditLogs.ts +13 -0
  57. package/src/documents/global/index.ts +1 -0
  58. package/src/sdk/auditLogs.ts +21 -0
  59. package/src/sdk/context.ts +2 -1
  60. package/src/sdk/db.ts +19 -1
  61. package/src/sdk/events/app.ts +33 -0
  62. package/src/sdk/events/auditLog.ts +10 -0
  63. package/src/sdk/events/auth.ts +6 -0
  64. package/src/sdk/events/automation.ts +12 -0
  65. package/src/sdk/events/backup.ts +2 -0
  66. package/src/sdk/events/event.ts +189 -0
  67. package/src/sdk/events/identification.ts +6 -0
  68. package/src/sdk/events/index.ts +1 -0
  69. package/src/sdk/events/screen.ts +6 -0
  70. package/src/sdk/events/table.ts +15 -0
  71. package/src/sdk/events/user.ts +38 -1
  72. package/src/sdk/events/userGroup.ts +23 -0
  73. package/src/sdk/index.ts +1 -0
  74. package/src/sdk/licensing/feature.ts +1 -0
@@ -0,0 +1,27 @@
1
+ export enum SortOrder {
2
+ ASCENDING = "ascending",
3
+ DESCENDING = "descending",
4
+ }
5
+
6
+ export enum SortType {
7
+ STRING = "string",
8
+ number = "number",
9
+ }
10
+
11
+ export interface BasicPaginationRequest {
12
+ bookmark?: string
13
+ }
14
+
15
+ export interface PaginationRequest extends BasicPaginationRequest {
16
+ limit?: number
17
+ sort?: {
18
+ order: SortOrder
19
+ column: string
20
+ type: SortType
21
+ }
22
+ }
23
+
24
+ export interface PaginationResponse {
25
+ bookmark: string
26
+ hasNextPage: boolean
27
+ }
@@ -0,0 +1,13 @@
1
+ import { Document } from "../document"
2
+ import { Event } from "../../sdk"
3
+
4
+ export const AuditLogSystemUser = "SYSTEM"
5
+
6
+ export interface AuditLogDoc extends Document {
7
+ appId?: string
8
+ event: Event
9
+ userId: string
10
+ timestamp: string
11
+ metadata: any
12
+ name: string
13
+ }
@@ -6,3 +6,4 @@ export * from "./quotas"
6
6
  export * from "./schedule"
7
7
  export * from "./templates"
8
8
  export * from "./environmentVariables"
9
+ export * from "./auditLogs"
@@ -0,0 +1,21 @@
1
+ import { Event, HostInfo } from "./events"
2
+ import { AuditLogDoc } from "../documents"
3
+
4
+ export type AuditWriteOpts = {
5
+ appId?: string
6
+ timestamp?: string | number
7
+ userId?: string
8
+ hostInfo?: HostInfo
9
+ }
10
+
11
+ export type AuditLogFn = (
12
+ event: Event,
13
+ metadata: any,
14
+ opts: AuditWriteOpts
15
+ ) => Promise<AuditLogDoc | undefined>
16
+
17
+ export type AuditLogQueueEvent = {
18
+ event: Event
19
+ properties: any
20
+ opts: AuditWriteOpts
21
+ }
@@ -1,5 +1,5 @@
1
1
  import { User, Account } from "../documents"
2
- import { IdentityType } from "./events"
2
+ import { IdentityType, HostInfo } from "./events"
3
3
 
4
4
  export interface BaseContext {
5
5
  _id: string
@@ -16,6 +16,7 @@ export interface UserContext extends BaseContext, User {
16
16
  _id: string
17
17
  tenantId: string
18
18
  account?: Account
19
+ hostInfo: HostInfo
19
20
  }
20
21
 
21
22
  export type IdentityContext = BaseContext | AccountUserContext | UserContext
package/src/sdk/db.ts CHANGED
@@ -1,5 +1,11 @@
1
1
  import Nano from "@budibase/nano"
2
2
  import { AllDocsResponse, AnyDocument, Document } from "../"
3
+ import { Writable } from "stream"
4
+
5
+ export enum SearchIndex {
6
+ ROWS = "rows",
7
+ AUDIT = "audit",
8
+ }
3
9
 
4
10
  export type PouchOptions = {
5
11
  inMemory?: boolean
@@ -63,6 +69,18 @@ export const isDocument = (doc: any): doc is Document => {
63
69
  return typeof doc === "object" && doc._id && doc._rev
64
70
  }
65
71
 
72
+ export interface DatabaseDumpOpts {
73
+ filter?: (doc: AnyDocument) => boolean
74
+ batch_size?: number
75
+ batch_limit?: number
76
+ style?: "main_only" | "all_docs"
77
+ timeout?: number
78
+ doc_ids?: string[]
79
+ query_params?: any
80
+ view?: string
81
+ selector?: any
82
+ }
83
+
66
84
  export interface Database {
67
85
  name: string
68
86
 
@@ -87,7 +105,7 @@ export interface Database {
87
105
  compact(): Promise<Nano.OkResponse | void>
88
106
  // these are all PouchDB related functions that are rarely used - in future
89
107
  // should be replaced by better typed/non-pouch implemented methods
90
- dump(...args: any[]): Promise<any>
108
+ dump(stream: Writable, opts?: DatabaseDumpOpts): Promise<any>
91
109
  load(...args: any[]): Promise<any>
92
110
  createIndex(...args: any[]): Promise<any>
93
111
  deleteIndex(...args: any[]): Promise<any>
@@ -3,50 +3,83 @@ import { BaseEvent } from "./event"
3
3
  export interface AppCreatedEvent extends BaseEvent {
4
4
  appId: string
5
5
  version: string
6
+ audited: {
7
+ name: string
8
+ }
6
9
  }
7
10
 
8
11
  export interface AppUpdatedEvent extends BaseEvent {
9
12
  appId: string
10
13
  version: string
14
+ audited: {
15
+ name: string
16
+ }
11
17
  }
12
18
 
13
19
  export interface AppDeletedEvent extends BaseEvent {
14
20
  appId: string
21
+ audited: {
22
+ name: string
23
+ }
15
24
  }
16
25
 
17
26
  export interface AppPublishedEvent extends BaseEvent {
18
27
  appId: string
28
+ audited: {
29
+ name: string
30
+ }
19
31
  }
20
32
 
21
33
  export interface AppUnpublishedEvent extends BaseEvent {
22
34
  appId: string
35
+ audited: {
36
+ name: string
37
+ }
23
38
  }
24
39
 
25
40
  export interface AppFileImportedEvent extends BaseEvent {
26
41
  appId: string
42
+ audited: {
43
+ name: string
44
+ }
27
45
  }
28
46
 
29
47
  export interface AppTemplateImportedEvent extends BaseEvent {
30
48
  appId: string
31
49
  templateKey: string
50
+ audited: {
51
+ name: string
52
+ }
32
53
  }
33
54
 
34
55
  export interface AppVersionUpdatedEvent extends BaseEvent {
35
56
  appId: string
36
57
  currentVersion: string
37
58
  updatedToVersion: string
59
+ audited: {
60
+ name: string
61
+ }
38
62
  }
39
63
 
40
64
  export interface AppVersionRevertedEvent extends BaseEvent {
41
65
  appId: string
42
66
  currentVersion: string
43
67
  revertedToVersion: string
68
+ audited: {
69
+ name: string
70
+ }
44
71
  }
45
72
 
46
73
  export interface AppRevertedEvent extends BaseEvent {
47
74
  appId: string
75
+ audited: {
76
+ name: string
77
+ }
48
78
  }
49
79
 
50
80
  export interface AppExportedEvent extends BaseEvent {
51
81
  appId: string
82
+ audited: {
83
+ name: string
84
+ }
52
85
  }
@@ -0,0 +1,10 @@
1
+ import { BaseEvent } from "./event"
2
+ import { AuditLogSearchParams } from "../../api"
3
+
4
+ export interface AuditLogFilteredEvent extends BaseEvent {
5
+ filters: AuditLogSearchParams
6
+ }
7
+
8
+ export interface AuditLogDownloadedEvent extends BaseEvent {
9
+ filters: AuditLogSearchParams
10
+ }
@@ -7,10 +7,16 @@ export type SSOType = ConfigType.OIDC | ConfigType.GOOGLE
7
7
  export interface LoginEvent extends BaseEvent {
8
8
  userId: string
9
9
  source: LoginSource
10
+ audited: {
11
+ email: string
12
+ }
10
13
  }
11
14
 
12
15
  export interface LogoutEvent extends BaseEvent {
13
16
  userId: string
17
+ audited: {
18
+ email?: string
19
+ }
14
20
  }
15
21
 
16
22
  export interface SSOCreatedEvent extends BaseEvent {
@@ -5,6 +5,9 @@ export interface AutomationCreatedEvent extends BaseEvent {
5
5
  automationId: string
6
6
  triggerId: string
7
7
  triggerType: string
8
+ audited: {
9
+ name: string
10
+ }
8
11
  }
9
12
 
10
13
  export interface AutomationTriggerUpdatedEvent extends BaseEvent {
@@ -19,6 +22,9 @@ export interface AutomationDeletedEvent extends BaseEvent {
19
22
  automationId: string
20
23
  triggerId: string
21
24
  triggerType: string
25
+ audited: {
26
+ name: string
27
+ }
22
28
  }
23
29
 
24
30
  export interface AutomationTestedEvent extends BaseEvent {
@@ -35,6 +41,9 @@ export interface AutomationStepCreatedEvent extends BaseEvent {
35
41
  triggerType: string
36
42
  stepId: string
37
43
  stepType: string
44
+ audited: {
45
+ name: string
46
+ }
38
47
  }
39
48
 
40
49
  export interface AutomationStepDeletedEvent extends BaseEvent {
@@ -44,6 +53,9 @@ export interface AutomationStepDeletedEvent extends BaseEvent {
44
53
  triggerType: string
45
54
  stepId: string
46
55
  stepType: string
56
+ audited: {
57
+ name: string
58
+ }
47
59
  }
48
60
 
49
61
  export interface AutomationsRunEvent extends BaseEvent {
@@ -5,6 +5,7 @@ export interface AppBackupRestoreEvent extends BaseEvent {
5
5
  appId: string
6
6
  restoreId: string
7
7
  backupCreatedAt: string
8
+ name: string
8
9
  }
9
10
 
10
11
  export interface AppBackupTriggeredEvent extends BaseEvent {
@@ -12,4 +13,5 @@ export interface AppBackupTriggeredEvent extends BaseEvent {
12
13
  appId: string
13
14
  trigger: AppBackupTrigger
14
15
  type: AppBackupType
16
+ name: string
15
17
  }
@@ -180,6 +180,190 @@ export enum Event {
180
180
  ENVIRONMENT_VARIABLE_CREATED = "environment_variable:created",
181
181
  ENVIRONMENT_VARIABLE_DELETED = "environment_variable:deleted",
182
182
  ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED = "environment_variable:upgrade_panel_opened",
183
+
184
+ // AUDIT LOG
185
+ AUDIT_LOGS_FILTERED = "audit_log:filtered",
186
+ AUDIT_LOGS_DOWNLOADED = "audit_log:downloaded",
187
+ }
188
+
189
+ // all events that are not audited have been added to this record as undefined, this means
190
+ // that Typescript can protect us against new events being added and auditing of those
191
+ // events not being considered. This might be a little ugly, but provides a level of
192
+ // Typescript build protection for the audit log feature, any new event also needs to be
193
+ // added to this map, during which the developer will need to consider if it should be
194
+ // a user facing event or not.
195
+ export const AuditedEventFriendlyName: Record<Event, string | undefined> = {
196
+ // USER
197
+ [Event.USER_CREATED]: `User "{{ email }}" created`,
198
+ [Event.USER_UPDATED]: `User "{{ email }}" updated`,
199
+ [Event.USER_DELETED]: `User "{{ email }}" deleted`,
200
+ [Event.USER_PERMISSION_ADMIN_ASSIGNED]: `User "{{ email }}" admin role assigned`,
201
+ [Event.USER_PERMISSION_ADMIN_REMOVED]: `User "{{ email }}" admin role removed`,
202
+ [Event.USER_PERMISSION_BUILDER_ASSIGNED]: `User "{{ email }}" builder role assigned`,
203
+ [Event.USER_PERMISSION_BUILDER_REMOVED]: `User "{{ email }}" builder role removed`,
204
+ [Event.USER_INVITED]: `User "{{ email }}" invited`,
205
+ [Event.USER_INVITED_ACCEPTED]: `User "{{ email }}" accepted invite`,
206
+ [Event.USER_PASSWORD_UPDATED]: `User "{{ email }}" password updated`,
207
+ [Event.USER_PASSWORD_RESET_REQUESTED]: `User "{{ email }}" password reset requested`,
208
+ [Event.USER_PASSWORD_RESET]: `User "{{ email }}" password reset`,
209
+ [Event.USER_GROUP_CREATED]: `User group "{{ name }}" created`,
210
+ [Event.USER_GROUP_UPDATED]: `User group "{{ name }}" updated`,
211
+ [Event.USER_GROUP_DELETED]: `User group "{{ name }}" deleted`,
212
+ [Event.USER_GROUP_USERS_ADDED]: `User group "{{ name }}" {{ count }} users added`,
213
+ [Event.USER_GROUP_USERS_REMOVED]: `User group "{{ name }}" {{ count }} users removed`,
214
+ [Event.USER_GROUP_PERMISSIONS_EDITED]: `User group "{{ name }}" permissions edited`,
215
+ [Event.USER_PASSWORD_FORCE_RESET]: undefined,
216
+ [Event.USER_GROUP_ONBOARDING]: undefined,
217
+ [Event.USER_ONBOARDING_COMPLETE]: undefined,
218
+
219
+ // EMAIL
220
+ [Event.EMAIL_SMTP_CREATED]: `Email configuration created`,
221
+ [Event.EMAIL_SMTP_UPDATED]: `Email configuration updated`,
222
+
223
+ // AUTH
224
+ [Event.AUTH_SSO_CREATED]: `SSO configuration created`,
225
+ [Event.AUTH_SSO_UPDATED]: `SSO configuration updated`,
226
+ [Event.AUTH_SSO_ACTIVATED]: `SSO configuration activated`,
227
+ [Event.AUTH_SSO_DEACTIVATED]: `SSO configuration deactivated`,
228
+ [Event.AUTH_LOGIN]: `User "{{ email }}" logged in`,
229
+ [Event.AUTH_LOGOUT]: `User "{{ email }}" logged out`,
230
+
231
+ // ORG
232
+ [Event.ORG_NAME_UPDATED]: `Organisation name updated`,
233
+ [Event.ORG_LOGO_UPDATED]: `Organisation logo updated`,
234
+ [Event.ORG_PLATFORM_URL_UPDATED]: `Organisation platform URL updated`,
235
+
236
+ // APP
237
+ [Event.APP_CREATED]: `App "{{ name }}" created`,
238
+ [Event.APP_UPDATED]: `App "{{ name }}" updated`,
239
+ [Event.APP_DELETED]: `App "{{ name }}" deleted`,
240
+ [Event.APP_PUBLISHED]: `App "{{ name }}" published`,
241
+ [Event.APP_UNPUBLISHED]: `App "{{ name }}" unpublished`,
242
+ [Event.APP_TEMPLATE_IMPORTED]: `App "{{ name }}" template imported`,
243
+ [Event.APP_FILE_IMPORTED]: `App "{{ name }}" file imported`,
244
+ [Event.APP_VERSION_UPDATED]: `App "{{ name }}" version updated`,
245
+ [Event.APP_VERSION_REVERTED]: `App "{{ name }}" version reverted`,
246
+ [Event.APP_REVERTED]: `App "{{ name }}" reverted`,
247
+ [Event.APP_EXPORTED]: `App "{{ name }}" exported`,
248
+ [Event.APP_BACKUP_RESTORED]: `App backup "{{ name }}" restored`,
249
+ [Event.APP_BACKUP_TRIGGERED]: `App backup "{{ name }}" triggered`,
250
+
251
+ // DATASOURCE
252
+ [Event.DATASOURCE_CREATED]: `Datasource created`,
253
+ [Event.DATASOURCE_UPDATED]: `Datasource updated`,
254
+ [Event.DATASOURCE_DELETED]: `Datasource deleted`,
255
+
256
+ // QUERY
257
+ [Event.QUERY_CREATED]: `Query created`,
258
+ [Event.QUERY_UPDATED]: `Query updated`,
259
+ [Event.QUERY_DELETED]: `Query deleted`,
260
+ [Event.QUERY_IMPORT]: `Query import`,
261
+ [Event.QUERIES_RUN]: undefined,
262
+ [Event.QUERY_PREVIEWED]: undefined,
263
+
264
+ // TABLE
265
+ [Event.TABLE_CREATED]: `Table "{{ name }}" created`,
266
+ [Event.TABLE_UPDATED]: `Table "{{ name }}" updated`,
267
+ [Event.TABLE_DELETED]: `Table "{{ name }}" deleted`,
268
+ [Event.TABLE_EXPORTED]: `Table "{{ name }}" exported`,
269
+ [Event.TABLE_IMPORTED]: `Table "{{ name }}" imported`,
270
+ [Event.TABLE_DATA_IMPORTED]: `Data imported to table`,
271
+
272
+ // ROWS
273
+ [Event.ROWS_CREATED]: `Rows created`,
274
+ [Event.ROWS_IMPORTED]: `Rows imported`,
275
+
276
+ // AUTOMATION
277
+ [Event.AUTOMATION_CREATED]: `Automation "{{ name }}" created`,
278
+ [Event.AUTOMATION_DELETED]: `Automation "{{ name }}" deleted`,
279
+ [Event.AUTOMATION_STEP_CREATED]: `Automation "{{ name }}" step added`,
280
+ [Event.AUTOMATION_STEP_DELETED]: `Automation "{{ name }}" step removed`,
281
+ [Event.AUTOMATION_TESTED]: undefined,
282
+ [Event.AUTOMATIONS_RUN]: undefined,
283
+ [Event.AUTOMATION_TRIGGER_UPDATED]: undefined,
284
+
285
+ // SCREEN
286
+ [Event.SCREEN_CREATED]: `Screen "{{ name }}" created`,
287
+ [Event.SCREEN_DELETED]: `Screen "{{ name }}" deleted`,
288
+
289
+ // COMPONENT
290
+ [Event.COMPONENT_CREATED]: `Component created`,
291
+ [Event.COMPONENT_DELETED]: `Component deleted`,
292
+
293
+ // ENVIRONMENT VARIABLE
294
+ [Event.ENVIRONMENT_VARIABLE_CREATED]: `Environment variable created`,
295
+ [Event.ENVIRONMENT_VARIABLE_DELETED]: `Environment variable deleted`,
296
+ [Event.ENVIRONMENT_VARIABLE_UPGRADE_PANEL_OPENED]: undefined,
297
+
298
+ // PLUGIN
299
+ [Event.PLUGIN_IMPORTED]: `Plugin imported`,
300
+ [Event.PLUGIN_DELETED]: `Plugin deleted`,
301
+ [Event.PLUGIN_INIT]: undefined,
302
+
303
+ // ROLE - NOT AUDITED
304
+ [Event.ROLE_CREATED]: undefined,
305
+ [Event.ROLE_UPDATED]: undefined,
306
+ [Event.ROLE_DELETED]: undefined,
307
+ [Event.ROLE_ASSIGNED]: undefined,
308
+ [Event.ROLE_UNASSIGNED]: undefined,
309
+
310
+ // LICENSE - NOT AUDITED
311
+ [Event.LICENSE_PLAN_CHANGED]: undefined,
312
+ [Event.LICENSE_TIER_CHANGED]: undefined,
313
+ [Event.LICENSE_ACTIVATED]: undefined,
314
+ [Event.LICENSE_PAYMENT_FAILED]: undefined,
315
+ [Event.LICENSE_PAYMENT_RECOVERED]: undefined,
316
+ [Event.LICENSE_CHECKOUT_OPENED]: undefined,
317
+ [Event.LICENSE_CHECKOUT_SUCCESS]: undefined,
318
+ [Event.LICENSE_PORTAL_OPENED]: undefined,
319
+
320
+ // ACCOUNT - NOT AUDITED
321
+ [Event.ACCOUNT_CREATED]: undefined,
322
+ [Event.ACCOUNT_DELETED]: undefined,
323
+ [Event.ACCOUNT_VERIFIED]: undefined,
324
+
325
+ // BACKFILL - NOT AUDITED
326
+ [Event.APP_BACKFILL_SUCCEEDED]: undefined,
327
+ [Event.APP_BACKFILL_FAILED]: undefined,
328
+ [Event.TENANT_BACKFILL_SUCCEEDED]: undefined,
329
+ [Event.TENANT_BACKFILL_FAILED]: undefined,
330
+ [Event.INSTALLATION_BACKFILL_SUCCEEDED]: undefined,
331
+ [Event.INSTALLATION_BACKFILL_FAILED]: undefined,
332
+
333
+ // LAYOUT - NOT AUDITED
334
+ [Event.LAYOUT_CREATED]: undefined,
335
+ [Event.LAYOUT_DELETED]: undefined,
336
+
337
+ // VIEW - NOT AUDITED
338
+ [Event.VIEW_CREATED]: undefined,
339
+ [Event.VIEW_UPDATED]: undefined,
340
+ [Event.VIEW_DELETED]: undefined,
341
+ [Event.VIEW_EXPORTED]: undefined,
342
+ [Event.VIEW_FILTER_CREATED]: undefined,
343
+ [Event.VIEW_FILTER_UPDATED]: undefined,
344
+ [Event.VIEW_FILTER_DELETED]: undefined,
345
+ [Event.VIEW_CALCULATION_CREATED]: undefined,
346
+ [Event.VIEW_CALCULATION_UPDATED]: undefined,
347
+ [Event.VIEW_CALCULATION_DELETED]: undefined,
348
+
349
+ // SERVED - NOT AUDITED
350
+ [Event.SERVED_BUILDER]: undefined,
351
+ [Event.SERVED_APP]: undefined,
352
+ [Event.SERVED_APP_PREVIEW]: undefined,
353
+
354
+ // ANALYTICS - NOT AUDITED
355
+ [Event.ANALYTICS_OPT_OUT]: undefined,
356
+ [Event.ANALYTICS_OPT_IN]: undefined,
357
+
358
+ // INSTALLATION - NOT AUDITED
359
+ [Event.INSTALLATION_VERSION_CHECKED]: undefined,
360
+ [Event.INSTALLATION_VERSION_UPGRADED]: undefined,
361
+ [Event.INSTALLATION_VERSION_DOWNGRADED]: undefined,
362
+ [Event.INSTALLATION_FIRST_STARTUP]: undefined,
363
+
364
+ // AUDIT LOG - NOT AUDITED
365
+ [Event.AUDIT_LOGS_FILTERED]: undefined,
366
+ [Event.AUDIT_LOGS_DOWNLOADED]: undefined,
183
367
  }
184
368
 
185
369
  // properties added at the final stage of the event pipeline
@@ -191,6 +375,11 @@ export interface BaseEvent {
191
375
  installationId?: string
192
376
  tenantId?: string
193
377
  hosting?: Hosting
378
+ // any props in the audited section will be removed before passing events
379
+ // up out of system (purely for use with auditing)
380
+ audited?: {
381
+ [key: string]: any
382
+ }
194
383
  }
195
384
 
196
385
  export type TableExportFormat = "json" | "csv"
@@ -34,6 +34,11 @@ export enum IdentityType {
34
34
  INSTALLATION = "installation",
35
35
  }
36
36
 
37
+ export interface HostInfo {
38
+ ipAddress?: string
39
+ userAgent?: string
40
+ }
41
+
37
42
  export interface Identity {
38
43
  id: string
39
44
  type: IdentityType
@@ -41,6 +46,7 @@ export interface Identity {
41
46
  environment: string
42
47
  installationId?: string
43
48
  tenantId?: string
49
+ hostInfo?: HostInfo
44
50
  }
45
51
 
46
52
  export interface UserIdentity extends Identity {
@@ -22,3 +22,4 @@ export * from "./userGroup"
22
22
  export * from "./plugin"
23
23
  export * from "./backup"
24
24
  export * from "./environmentVariable"
25
+ export * from "./auditLog"
@@ -4,10 +4,16 @@ export interface ScreenCreatedEvent extends BaseEvent {
4
4
  screenId: string
5
5
  layoutId?: string
6
6
  roleId: string
7
+ audited: {
8
+ name: string
9
+ }
7
10
  }
8
11
 
9
12
  export interface ScreenDeletedEvent extends BaseEvent {
10
13
  screenId: string
11
14
  layoutId?: string
12
15
  roleId: string
16
+ audited: {
17
+ name: string
18
+ }
13
19
  }
@@ -2,21 +2,36 @@ import { BaseEvent, TableExportFormat } from "./event"
2
2
 
3
3
  export interface TableCreatedEvent extends BaseEvent {
4
4
  tableId: string
5
+ audited: {
6
+ name: string
7
+ }
5
8
  }
6
9
 
7
10
  export interface TableUpdatedEvent extends BaseEvent {
8
11
  tableId: string
12
+ audited: {
13
+ name: string
14
+ }
9
15
  }
10
16
 
11
17
  export interface TableDeletedEvent extends BaseEvent {
12
18
  tableId: string
19
+ audited: {
20
+ name: string
21
+ }
13
22
  }
14
23
 
15
24
  export interface TableExportedEvent extends BaseEvent {
16
25
  tableId: string
17
26
  format: TableExportFormat
27
+ audited: {
28
+ name: string
29
+ }
18
30
  }
19
31
 
20
32
  export interface TableImportedEvent extends BaseEvent {
21
33
  tableId: string
34
+ audited: {
35
+ name: string
36
+ }
22
37
  }
@@ -2,47 +2,84 @@ import { BaseEvent } from "./event"
2
2
 
3
3
  export interface UserCreatedEvent extends BaseEvent {
4
4
  userId: string
5
+ audited: {
6
+ email: string
7
+ }
5
8
  }
6
9
 
7
10
  export interface UserUpdatedEvent extends BaseEvent {
8
11
  userId: string
12
+ audited: {
13
+ email: string
14
+ }
9
15
  }
10
16
 
11
17
  export interface UserDeletedEvent extends BaseEvent {
12
18
  userId: string
19
+ audited: {
20
+ email: string
21
+ }
13
22
  }
14
23
 
15
24
  export interface UserOnboardingEvent extends BaseEvent {
16
25
  userId: string
17
26
  step?: string
27
+ audited: {
28
+ email: string
29
+ }
18
30
  }
19
31
 
20
32
  export interface UserPermissionAssignedEvent extends BaseEvent {
21
33
  userId: string
34
+ audited: {
35
+ email: string
36
+ }
22
37
  }
23
38
 
24
39
  export interface UserPermissionRemovedEvent extends BaseEvent {
25
40
  userId: string
41
+ audited: {
42
+ email: string
43
+ }
26
44
  }
27
45
 
28
- export interface UserInvitedEvent extends BaseEvent {}
46
+ export interface UserInvitedEvent extends BaseEvent {
47
+ audited: {
48
+ email: string
49
+ }
50
+ }
29
51
 
30
52
  export interface UserInviteAcceptedEvent extends BaseEvent {
31
53
  userId: string
54
+ audited: {
55
+ email: string
56
+ }
32
57
  }
33
58
 
34
59
  export interface UserPasswordForceResetEvent extends BaseEvent {
35
60
  userId: string
61
+ audited: {
62
+ email: string
63
+ }
36
64
  }
37
65
 
38
66
  export interface UserPasswordUpdatedEvent extends BaseEvent {
39
67
  userId: string
68
+ audited: {
69
+ email: string
70
+ }
40
71
  }
41
72
 
42
73
  export interface UserPasswordResetRequestedEvent extends BaseEvent {
43
74
  userId: string
75
+ audited: {
76
+ email: string
77
+ }
44
78
  }
45
79
 
46
80
  export interface UserPasswordResetEvent extends BaseEvent {
47
81
  userId: string
82
+ audited: {
83
+ email: string
84
+ }
48
85
  }