@shuffl/api-contracts 0.1.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.
@@ -0,0 +1,973 @@
1
+ // Reviewed UI action coverage. Generation derives portable schemas from these
2
+ // private procedure types; execution still uses their complete domain validation.
3
+ export const managementOperations = [
4
+ [
5
+ 'runs.dispatch',
6
+ 'management.dispatchRun',
7
+ 'runs:write',
8
+ 'write',
9
+ 'Dispatch this queued introduction run',
10
+ ],
11
+ [
12
+ 'operations.dispatchInbox',
13
+ 'management.dispatchInbox',
14
+ 'operations:write',
15
+ 'write',
16
+ 'Resume already-admitted workspace provider events and support delivery',
17
+ ],
18
+ [
19
+ 'hr.deliver',
20
+ 'management.deliverHr',
21
+ 'hr:write',
22
+ 'write',
23
+ 'Deliver your HR reply to the employee',
24
+ ],
25
+ ['assistant.send', 'management.sendAssistant', 'assistant:write', 'write'],
26
+ [
27
+ 'credentials.api.create',
28
+ 'management.createApiToken',
29
+ 'credentials:write',
30
+ 'write',
31
+ 'Delegate a subset of this credential with bounded expiry and inherited revocation',
32
+ ],
33
+ [
34
+ 'invitations.create',
35
+ 'management.invite',
36
+ 'access:write',
37
+ 'write',
38
+ 'Invite this person with the selected workspace role',
39
+ ],
40
+ ['invitations.list', 'management.invitations', 'access:read', 'read'],
41
+ [
42
+ 'invitations.cancel',
43
+ 'management.cancelInvitation',
44
+ 'access:write',
45
+ 'write',
46
+ ],
47
+ ['exports.workspace', 'management.export', 'exports:read', 'read'],
48
+ [
49
+ 'knowledge.uploads.create',
50
+ 'management.createPdfUpload',
51
+ 'knowledge:write',
52
+ 'write',
53
+ ],
54
+ [
55
+ 'knowledge.uploads.appendPart',
56
+ 'management.uploadPdfPart',
57
+ 'knowledge:write',
58
+ 'write',
59
+ ],
60
+ [
61
+ 'knowledge.uploads.complete',
62
+ 'management.completePdfUpload',
63
+ 'knowledge:write',
64
+ 'write',
65
+ ],
66
+ [
67
+ 'knowledge.uploads.retry',
68
+ 'management.retryPdfUpload',
69
+ 'knowledge:write',
70
+ 'write',
71
+ ],
72
+ ['knowledge.uploads.get', 'management.pdfUpload', 'knowledge:write', 'read'],
73
+ [
74
+ 'knowledge.sources.importWebsite',
75
+ 'management.importWebsite',
76
+ 'knowledge:write',
77
+ 'write',
78
+ ],
79
+ [
80
+ 'provisioning.current',
81
+ 'management.provisioning',
82
+ 'integrations:read',
83
+ 'read',
84
+ ],
85
+ ['sync.current', 'directory.directorySync', 'integrations:read', 'read'],
86
+ [
87
+ 'sync.connect',
88
+ 'directory.connectDirectoryProvider',
89
+ 'integrations:write',
90
+ 'write',
91
+ 'Connect a directory sync provider with the credential given',
92
+ ],
93
+ [
94
+ 'sync.run',
95
+ 'directory.syncDirectoryConnection',
96
+ 'integrations:write',
97
+ 'write',
98
+ ],
99
+ [
100
+ 'sync.disconnect',
101
+ 'directory.disconnectDirectoryProvider',
102
+ 'integrations:write',
103
+ 'write',
104
+ 'Disconnect this directory sync provider',
105
+ ],
106
+ [
107
+ 'sync.request',
108
+ 'directory.requestDirectorySource',
109
+ 'integrations:write',
110
+ 'write',
111
+ ],
112
+ [
113
+ 'provisioning.configure',
114
+ 'management.configureProvisioning',
115
+ 'integrations:write',
116
+ 'write',
117
+ 'Change provisioning credentials or employee access policy',
118
+ ],
119
+ ['credentials.api.list', 'management.apiTokens', 'credentials:read', 'read'],
120
+ [
121
+ 'credentials.api.revoke',
122
+ 'management.revokeApiToken',
123
+ 'credentials:write',
124
+ 'write',
125
+ ],
126
+ [
127
+ 'assistant.conversations',
128
+ 'management.conversations',
129
+ 'assistant:read',
130
+ 'read',
131
+ ],
132
+ ['assistant.history', 'management.conversation', 'assistant:read', 'read'],
133
+ ['assistant.stop', 'management.stopAnswer', 'assistant:write', 'write'],
134
+ [
135
+ 'assistant.delete',
136
+ 'management.deleteConversation',
137
+ 'assistant:write',
138
+ 'write',
139
+ ],
140
+ [
141
+ 'integrations.authorize',
142
+ 'management.authorizeIntegration',
143
+ 'integrations:write',
144
+ 'read',
145
+ ],
146
+ ['users.details', 'directory.directoryPerson', 'users:read', 'read'],
147
+ ['users.page', 'people.peoplePage', 'users:read', 'read'],
148
+ ['users.filterOptions', 'people.peopleFilterOptions', 'users:read', 'read'],
149
+ ['users.participants', 'people.participants', 'users:read', 'read'],
150
+ ['users.managers', 'directory.directoryManagers', 'users:read', 'read'],
151
+ ['users.managerHistory', 'directory.managerHistory', 'users:read', 'read'],
152
+ ['users.save', 'directory.saveDirectoryPerson', 'users:write', 'write'],
153
+ [
154
+ 'users.participation',
155
+ 'people.participation',
156
+ 'participation:write',
157
+ 'write',
158
+ ],
159
+ ['users.profile', 'people.profile', 'profile:write', 'write'],
160
+ [
161
+ 'timeOff.balances',
162
+ 'people.timeOffBalances',
163
+ 'self:read',
164
+ 'read',
165
+ 'Read your own time-off balances from the connected HR system',
166
+ ],
167
+ // #735: profiles everyone in the workspace can open. Reads apply the
168
+ // person's visibility choices; writes are the person's own or an
169
+ // administrator's, checked in core.
170
+ [
171
+ 'profiles.get',
172
+ 'profiles.profile',
173
+ 'users:read',
174
+ 'read',
175
+ 'Read a person’s profile as this workspace sees it',
176
+ ],
177
+ ['profiles.save', 'profiles.saveProfile', 'profile:write', 'write'],
178
+ [
179
+ 'profiles.settings',
180
+ 'profiles.saveSettings',
181
+ 'profile:write',
182
+ 'write',
183
+ 'Choose who sees the optional parts of your own profile',
184
+ ],
185
+ [
186
+ 'profiles.positions.save',
187
+ 'profiles.savePosition',
188
+ 'profile:write',
189
+ 'write',
190
+ ],
191
+ [
192
+ 'profiles.positions.delete',
193
+ 'profiles.deletePosition',
194
+ 'profile:write',
195
+ 'write',
196
+ ],
197
+ ['profiles.photo.delete', 'profiles.deletePhoto', 'profile:write', 'write'],
198
+ ['profiles.cover.delete', 'profiles.deleteCover', 'profile:write', 'write'],
199
+ [
200
+ 'profiles.draft',
201
+ 'profiles.draft',
202
+ 'profile:write',
203
+ 'write',
204
+ 'Draft the empty parts of your own profile with Mello; nothing is saved',
205
+ ],
206
+ [
207
+ 'profiles.employeeNumber',
208
+ 'profiles.setEmployeeNumber',
209
+ 'users:write',
210
+ 'write',
211
+ 'Set a person’s employee number to an unused number',
212
+ ],
213
+ // #695 / #740: badges and communities. Who may give, claim, hide or see a
214
+ // badge, and which members of a community a viewer may see, is decided in
215
+ // core for the API and MCP alike.
216
+ [
217
+ 'badges.list',
218
+ 'badges.list',
219
+ 'users:read',
220
+ 'read',
221
+ 'List the workspace’s badges, who holds them and any open requests you decide',
222
+ ],
223
+ ['badges.ofPerson', 'badges.ofPerson', 'users:read', 'read'],
224
+ [
225
+ 'badges.save',
226
+ 'badges.save',
227
+ 'profile:write',
228
+ 'write',
229
+ 'Create or edit a badge you own',
230
+ ],
231
+ [
232
+ 'badges.award',
233
+ 'badges.award',
234
+ 'profile:write',
235
+ 'write',
236
+ 'Give a badge you own to a person',
237
+ ],
238
+ ['badges.revoke', 'badges.revoke', 'profile:write', 'write'],
239
+ [
240
+ 'badges.claim',
241
+ 'badges.claim',
242
+ 'profile:write',
243
+ 'write',
244
+ 'Claim a badge with its code',
245
+ ],
246
+ ['badges.request', 'badges.request', 'profile:write', 'write'],
247
+ ['badges.decideRequest', 'badges.decideRequest', 'profile:write', 'write'],
248
+ ['badges.hideOwn', 'badges.hideOwn', 'profile:write', 'write'],
249
+ ['badges.setHidden', 'badges.setHidden', 'users:write', 'write'],
250
+ [
251
+ 'communities.list',
252
+ 'communities.list',
253
+ 'users:read',
254
+ 'read',
255
+ 'List communities with the members you may see',
256
+ ],
257
+ ['communities.members', 'communities.members', 'users:read', 'read'],
258
+ ['communities.ofPerson', 'communities.ofPerson', 'users:read', 'read'],
259
+ [
260
+ 'communities.save',
261
+ 'communities.save',
262
+ 'profile:write',
263
+ 'write',
264
+ 'Create or edit a community, optionally tied to a Slack channel',
265
+ ],
266
+ ['communities.join', 'communities.join', 'profile:write', 'write'],
267
+ ['communities.leave', 'communities.leave', 'profile:write', 'write'],
268
+ [
269
+ 'communities.setVisibility',
270
+ 'communities.setVisibility',
271
+ 'profile:write',
272
+ 'write',
273
+ ],
274
+ ['communities.archive', 'communities.archive', 'profile:write', 'write'],
275
+ [
276
+ 'communities.removeMember',
277
+ 'communities.removeMember',
278
+ 'profile:write',
279
+ 'write',
280
+ 'Remove someone from a community, as its owner or moderator',
281
+ ],
282
+ ['communities.sync', 'communities.sync', 'profile:write', 'write'],
283
+ [
284
+ 'home.feed',
285
+ 'home.feed',
286
+ 'self:read',
287
+ 'read',
288
+ 'What happened to people you know, and who Mello thinks you should meet',
289
+ ],
290
+ [
291
+ 'network.orgChart',
292
+ 'network.orgChart',
293
+ 'users:read',
294
+ 'read',
295
+ 'Everyone in the workspace with their manager, for the org chart',
296
+ ],
297
+ [
298
+ 'network.mine',
299
+ 'network.mine',
300
+ 'users:read',
301
+ 'read',
302
+ 'Who you know and who you should meet',
303
+ ],
304
+ [
305
+ 'network.ofPerson',
306
+ 'network.ofPerson',
307
+ 'users:read',
308
+ 'read',
309
+ 'People you and this person both know',
310
+ ],
311
+ [
312
+ 'network.claim',
313
+ 'network.claim',
314
+ 'profile:write',
315
+ 'write',
316
+ 'Say you know someone or would like to meet them',
317
+ ],
318
+ ['users.blockPair', 'people.blockPair', 'users:write', 'write'],
319
+ ['users.blockedPairs', 'people.blockedPairs', 'users:read', 'read'],
320
+ ['units.list', 'directory.directoryUnits', 'users:read', 'read'],
321
+ ['units.save', 'directory.saveDirectoryUnit', 'users:write', 'write'],
322
+ ['units.archive', 'directory.archiveDirectoryUnit', 'users:write', 'write'],
323
+ ['access.get', 'directory.employeeAccess', 'access:read', 'read'],
324
+ [
325
+ 'access.save',
326
+ 'directory.saveEmployeeAccess',
327
+ 'access:write',
328
+ 'write',
329
+ 'Change employee product access',
330
+ ],
331
+ [
332
+ 'access.saveRole',
333
+ 'directory.saveWorkspaceRole',
334
+ 'access:write',
335
+ 'write',
336
+ 'Change a member’s workspace role',
337
+ ],
338
+ ['identities.list', 'identities.personAccounts', 'identities:read', 'read'],
339
+ [
340
+ 'identities.slackAccounts',
341
+ 'identities.slackAccounts',
342
+ 'identities:read',
343
+ 'read',
344
+ ],
345
+ [
346
+ 'identities.webAccounts',
347
+ 'identities.webAccounts',
348
+ 'identities:read',
349
+ 'read',
350
+ ],
351
+ [
352
+ 'identities.linkSlack',
353
+ 'identities.linkSlackAccount',
354
+ 'identities:write',
355
+ 'write',
356
+ 'Link a verified Slack account',
357
+ ],
358
+ [
359
+ 'identities.linkWeb',
360
+ 'identities.linkWebAccount',
361
+ 'identities:write',
362
+ 'write',
363
+ 'Link a verified web account',
364
+ ],
365
+ [
366
+ 'identities.unlink',
367
+ 'identities.unlinkPersonAccount',
368
+ 'identities:write',
369
+ 'write',
370
+ 'Revoke an employee identity link',
371
+ ],
372
+ [
373
+ 'programs.schedulePreview',
374
+ 'programs.schedulePreview',
375
+ 'programs:read',
376
+ 'read',
377
+ ],
378
+ ['programs.people', 'programs.people', 'programs:read', 'read'],
379
+ ['runs.list', 'runs.roundsPage', 'runs:read', 'read'],
380
+ ['runs.details', 'runs.run', 'runs:read', 'read'],
381
+ [
382
+ 'runs.retry',
383
+ 'runs.retry',
384
+ 'runs:write',
385
+ 'write',
386
+ 'Retry introduction delivery',
387
+ ],
388
+ ['knowledge.sources.list', 'knowledge.list', 'knowledge:manage', 'read'],
389
+ ['knowledge.sources.get', 'knowledge.read', 'knowledge:manage', 'read'],
390
+ [
391
+ 'knowledge.policies.coverage',
392
+ 'knowledge.policyCoverage',
393
+ 'knowledge:manage',
394
+ 'read',
395
+ ],
396
+ [
397
+ 'knowledge.sources.history',
398
+ 'knowledge.history',
399
+ 'knowledge:manage',
400
+ 'read',
401
+ ],
402
+ ['knowledge.sources.search', 'knowledge.search', 'knowledge:read', 'read'],
403
+ ['knowledge.sources.save', 'knowledge.save', 'knowledge:write', 'write'],
404
+ [
405
+ 'knowledge.sources.publish',
406
+ 'knowledge.publish',
407
+ 'knowledge:write',
408
+ 'write',
409
+ 'Publish this knowledge version to its audience',
410
+ ],
411
+ [
412
+ 'knowledge.sources.changeAudience',
413
+ 'knowledge.changeAudience',
414
+ 'knowledge:write',
415
+ 'write',
416
+ 'Change who can read this knowledge source',
417
+ ],
418
+ [
419
+ 'knowledge.sources.withdraw',
420
+ 'knowledge.withdraw',
421
+ 'knowledge:write',
422
+ 'write',
423
+ ],
424
+ [
425
+ 'knowledge.sources.archive',
426
+ 'knowledge.archive',
427
+ 'knowledge:write',
428
+ 'write',
429
+ 'Archive an unpublished knowledge source',
430
+ ],
431
+ [
432
+ 'knowledge.sources.restore',
433
+ 'knowledge.restore',
434
+ 'knowledge:write',
435
+ 'write',
436
+ 'Restore an archived knowledge source',
437
+ ],
438
+ [
439
+ 'knowledge.connections.list',
440
+ 'knowledge.connections',
441
+ 'integrations:read',
442
+ 'read',
443
+ ],
444
+ [
445
+ 'knowledge.connections.disconnect',
446
+ 'knowledge.disconnect',
447
+ 'integrations:write',
448
+ 'write',
449
+ 'Disconnect a knowledge provider',
450
+ ],
451
+ [
452
+ 'knowledge.sources.importConnected',
453
+ 'knowledge.importConnected',
454
+ 'knowledge:write',
455
+ 'write',
456
+ 'Import a document from a connected Knowledge source',
457
+ ],
458
+ [
459
+ 'knowledge.connections.browse',
460
+ 'knowledge.browseConnected',
461
+ 'integrations:read',
462
+ 'read',
463
+ 'List documents a connected Knowledge source can see',
464
+ ],
465
+ [
466
+ 'knowledge.connections.connect',
467
+ 'knowledge.connectProvider',
468
+ 'integrations:write',
469
+ 'write',
470
+ 'Connect a Knowledge provider with a token',
471
+ ],
472
+ [
473
+ 'knowledge.sources.refresh',
474
+ 'knowledge.refreshSource',
475
+ 'knowledge:write',
476
+ 'write',
477
+ ],
478
+ ['hr.list', 'hrRequests.hrRequests', 'hr:read', 'read'],
479
+ ['hr.get', 'hrRequests.hrRequest', 'hr:read', 'read'],
480
+ ['hr.readiness', 'hrRequests.hrReadiness', 'hr:read', 'read'],
481
+ ['hr.settings', 'hrRequests.hrSettings', 'hr:read', 'read'],
482
+ ['hr.shareSources', 'hrRequests.hrShareSources', 'hr:read', 'read'],
483
+ ['hr.command', 'hrRequests.commandHrRequest', 'hr:write', 'write'],
484
+ [
485
+ 'hr.configure',
486
+ 'hrRequests.configureHrDestination',
487
+ 'hr:write',
488
+ 'write',
489
+ 'Change the HR request destination',
490
+ ],
491
+ [
492
+ 'hr.share',
493
+ 'hrRequests.shareHrRequest',
494
+ 'hr:write',
495
+ 'write',
496
+ 'Share this request with the selected HR responders',
497
+ ],
498
+ [
499
+ 'hr.retryDelivery',
500
+ 'hrRequests.retryHrDelivery',
501
+ 'hr:write',
502
+ 'write',
503
+ 'Retry HR request delivery',
504
+ ],
505
+ ['support.list', 'support.support', 'support:read', 'read'],
506
+ ['support.get', 'support.supportThread', 'support:read', 'read'],
507
+ ['support.create', 'support.createSupport', 'support:write', 'write'],
508
+ ['support.reply', 'support.reply', 'support:write', 'write'],
509
+ ['support.close', 'support.closeSupport', 'support:write', 'write'],
510
+ ['support.assign', 'support.assignSupport', 'support:write', 'write'],
511
+ ['billing.legacy', 'billing.billing', 'billing:read', 'read'],
512
+ ['billing.current', 'billing.companyBilling', 'billing:read', 'read'],
513
+ [
514
+ 'billing.initialize',
515
+ 'billing.initializeCompanyBilling',
516
+ 'billing:write',
517
+ 'write',
518
+ ],
519
+ [
520
+ 'billing.refresh',
521
+ 'billing.refreshCompanyBilling',
522
+ 'billing:write',
523
+ 'write',
524
+ ],
525
+ [
526
+ 'billing.activateTrial',
527
+ 'billing.activateCompanyTrial',
528
+ 'billing:write',
529
+ 'write',
530
+ 'Activate the company trial',
531
+ ],
532
+ [
533
+ 'billing.checkout',
534
+ 'billing.companyCheckout',
535
+ 'billing:write',
536
+ 'write',
537
+ 'Open checkout for the company subscription',
538
+ ],
539
+ ['billing.portal', 'billing.companyPortal', 'billing:write', 'write'],
540
+ ['billing.legacyPortal', 'billing.billingPortal', 'billing:write', 'write'],
541
+ [
542
+ 'billing.cancelSubscription',
543
+ 'billing.cancelCompanySubscription',
544
+ 'billing:write',
545
+ 'write',
546
+ 'Cancel the company subscription',
547
+ ],
548
+ ['operations.activity', 'operations.activity', 'operations:read', 'read'],
549
+ ['operations.status', 'operations.operations', 'operations:read', 'read'],
550
+ [
551
+ 'operations.reconcile',
552
+ 'operations.reconcile',
553
+ 'operator:write',
554
+ 'write',
555
+ 'Reconcile an externally verified delivery outcome',
556
+ ],
557
+ ['reports.overview', 'reporting.overview', 'reports:read', 'read'],
558
+ [
559
+ 'reports.connections',
560
+ 'reporting.connectionsInsights',
561
+ 'reports:read',
562
+ 'read',
563
+ ],
564
+ [
565
+ 'reports.onboarding',
566
+ 'reporting.onboardingInsights',
567
+ 'reports:read',
568
+ 'read',
569
+ ],
570
+ [
571
+ 'workspaces.status',
572
+ 'workspaces.workspaceStatus',
573
+ 'workspace:write',
574
+ 'write',
575
+ ],
576
+ ['workspaces.setup', 'setup.setup', 'workspace:read', 'read'],
577
+ [
578
+ 'workspaces.initialize',
579
+ 'workspaces.initialize',
580
+ 'workspace:write',
581
+ 'write',
582
+ ],
583
+ // #662: the rest of the app, so a person's own agent can do what they can.
584
+ [
585
+ 'onboarding.program',
586
+ 'onboarding.onboardingProgram',
587
+ 'onboarding:read',
588
+ 'read',
589
+ ],
590
+ [
591
+ 'onboarding.saveProgram',
592
+ 'onboarding.saveOnboardingProgram',
593
+ 'onboarding:write',
594
+ 'write',
595
+ 'Save the onboarding program and its messages',
596
+ ],
597
+ [
598
+ 'onboarding.candidates',
599
+ 'onboarding.onboardingCandidates',
600
+ 'onboarding:read',
601
+ 'read',
602
+ ],
603
+ [
604
+ 'onboarding.person',
605
+ 'onboarding.personOnboarding',
606
+ 'onboarding:read',
607
+ 'read',
608
+ ],
609
+ [
610
+ 'onboarding.enrollmentPreview',
611
+ 'onboarding.onboardingEnrollmentPreview',
612
+ 'onboarding:read',
613
+ 'read',
614
+ ],
615
+ [
616
+ 'onboarding.previewEnrollment',
617
+ 'onboarding.previewOnboardingEnrollment',
618
+ 'onboarding:write',
619
+ 'write',
620
+ ],
621
+ [
622
+ 'onboarding.enroll',
623
+ 'onboarding.enrollOnboarding',
624
+ 'onboarding:write',
625
+ 'write',
626
+ 'Enroll this person in onboarding',
627
+ ],
628
+ [
629
+ 'onboarding.approve',
630
+ 'onboarding.approveOnboardingEnrollment',
631
+ 'onboarding:write',
632
+ 'write',
633
+ 'Approve these exact onboarding messages for sending',
634
+ ],
635
+ [
636
+ 'onboarding.assignBuddy',
637
+ 'onboarding.assignOnboardingBuddy',
638
+ 'onboarding:write',
639
+ 'write',
640
+ ],
641
+ [
642
+ 'onboarding.update',
643
+ 'onboarding.updateOnboardingEnrollment',
644
+ 'onboarding:write',
645
+ 'write',
646
+ ],
647
+ [
648
+ 'onboarding.remove',
649
+ 'onboarding.removeOnboardingEnrollment',
650
+ 'onboarding:write',
651
+ 'write',
652
+ ],
653
+ [
654
+ 'onboarding.retry',
655
+ 'onboarding.retryOnboardingStep',
656
+ 'onboarding:write',
657
+ 'write',
658
+ ],
659
+ ['onboarding.mine', 'onboarding.myOnboarding', 'self:read', 'read'],
660
+ [
661
+ 'onboarding.answerCheckIn',
662
+ 'onboarding.answerOnboardingCheckIn',
663
+ 'self:write',
664
+ 'write',
665
+ ],
666
+ [
667
+ 'onboarding.respondBuddy',
668
+ 'onboarding.respondBuddyInvitation',
669
+ 'self:write',
670
+ 'write',
671
+ ],
672
+ [
673
+ 'onboarding.buddySuggestions',
674
+ 'onboarding.buddySuggestions',
675
+ 'self:read',
676
+ 'read',
677
+ 'Suggest coworkers who could be your onboarding buddy',
678
+ ],
679
+ [
680
+ 'onboarding.askBuddy',
681
+ 'onboarding.askBuddy',
682
+ 'self:write',
683
+ 'write',
684
+ 'Ask this coworker to be your onboarding buddy',
685
+ ],
686
+ [
687
+ 'celebrations.program',
688
+ 'milestones.celebrationProgram',
689
+ 'celebrations:read',
690
+ 'read',
691
+ ],
692
+ [
693
+ 'celebrations.save',
694
+ 'milestones.saveCelebrationProgram',
695
+ 'celebrations:write',
696
+ 'write',
697
+ 'Save celebration settings; enabling them schedules messages',
698
+ ],
699
+ [
700
+ 'celebrations.preview',
701
+ 'milestones.previewCelebration',
702
+ 'celebrations:read',
703
+ 'read',
704
+ ],
705
+ [
706
+ 'celebrations.review',
707
+ 'milestones.milestoneReview',
708
+ 'celebrations:read',
709
+ 'read',
710
+ ],
711
+ [
712
+ 'celebrations.refresh',
713
+ 'milestones.refreshMilestones',
714
+ 'celebrations:write',
715
+ 'write',
716
+ ],
717
+ [
718
+ 'celebrations.deliveries',
719
+ 'milestones.celebrationDeliveries',
720
+ 'celebrations:read',
721
+ 'read',
722
+ ],
723
+ ['celebrations.mine', 'milestones.myCelebrations', 'self:read', 'read'],
724
+ [
725
+ 'celebrations.preferences',
726
+ 'milestones.milestonePreferences',
727
+ 'self:read',
728
+ 'read',
729
+ ],
730
+ [
731
+ 'celebrations.savePreferences',
732
+ 'milestones.saveMilestonePreferences',
733
+ 'self:write',
734
+ 'write',
735
+ ],
736
+ [
737
+ 'notifications.preferences',
738
+ 'notifications.notificationPreferences',
739
+ 'self:read',
740
+ 'read',
741
+ ],
742
+ [
743
+ 'notifications.save',
744
+ 'notifications.saveNotificationPreference',
745
+ 'self:write',
746
+ 'write',
747
+ ],
748
+ [
749
+ 'reports.answerFeedback',
750
+ 'reporting.answerFeedback',
751
+ 'reports:read',
752
+ 'read',
753
+ ],
754
+ ['reports.knowledge', 'reporting.knowledgeActivity', 'reports:read', 'read'],
755
+ [
756
+ 'reports.knowledgeSource',
757
+ 'reporting.knowledgeSourceActivity',
758
+ 'reports:read',
759
+ 'read',
760
+ ],
761
+ ['reports.needsYou', 'reporting.needsYouInsights', 'reports:read', 'read'],
762
+ ['reports.people', 'reporting.peopleInsights', 'reports:read', 'read'],
763
+ [
764
+ 'knowledge.connections.requests',
765
+ 'knowledge.sourceRequests',
766
+ 'integrations:read',
767
+ 'read',
768
+ ],
769
+ [
770
+ 'knowledge.connections.request',
771
+ 'knowledge.requestSource',
772
+ 'integrations:write',
773
+ 'write',
774
+ ],
775
+ [
776
+ 'access.slackWaiting',
777
+ 'directory.slackAccessWaiting',
778
+ 'access:read',
779
+ 'read',
780
+ ],
781
+ [
782
+ 'access.enableSlack',
783
+ 'directory.enableSlackAccess',
784
+ 'access:write',
785
+ 'write',
786
+ 'Give these Slack people employee access',
787
+ ],
788
+ [
789
+ 'workspaces.slackJoinAccess',
790
+ 'directory.slackJoinAccess',
791
+ 'workspace:read',
792
+ 'read',
793
+ ],
794
+ [
795
+ 'workspaces.saveSlackJoinAccess',
796
+ 'directory.saveSlackJoinAccess',
797
+ 'workspace:write',
798
+ 'write',
799
+ ],
800
+ [
801
+ 'workspaces.slackProfileLink',
802
+ 'directory.slackProfileLink',
803
+ 'workspace:read',
804
+ 'read',
805
+ ],
806
+ [
807
+ 'workspaces.saveSlackProfileLink',
808
+ 'directory.saveSlackProfileLink',
809
+ 'workspace:write',
810
+ 'write',
811
+ ],
812
+ [
813
+ 'workspaces.syncSlackProfileLinks',
814
+ 'directory.syncSlackProfileLinks',
815
+ 'workspace:write',
816
+ 'write',
817
+ 'Write the Shuffl profile link to every Slack profile again',
818
+ ],
819
+ [
820
+ 'workspaces.saveAgentSetup',
821
+ 'setup.saveAgentSetup',
822
+ 'workspace:write',
823
+ 'write',
824
+ ],
825
+ [
826
+ 'workspaces.resendSlackWelcome',
827
+ 'setup.resendSlackWelcome',
828
+ 'integrations:write',
829
+ 'write',
830
+ 'Send the Slack install welcome to your own Slack DM again',
831
+ ],
832
+ ['users.activity', 'personActivity.personActivity', 'users:read', 'read'],
833
+ [
834
+ 'programs.joinChannel',
835
+ 'programs.joinChannel',
836
+ 'programs:write',
837
+ 'write',
838
+ 'Add Shuffl to this public Slack channel',
839
+ ],
840
+ ['hr.renameTeam', 'personRoles.renameHrTeam', 'hr:write', 'write'],
841
+ // Pulse (#699, #711): administrators run the program and read the frozen
842
+ // totals, which the database already nulls below the reporting floor. A
843
+ // person reads what was asked and whether their own answer is in; answering
844
+ // and skipping stay session-only, because the answer must be the person's
845
+ // own act. Praise (#749, #751) follows the same split.
846
+ [
847
+ 'pulse.program',
848
+ 'pulse.program',
849
+ 'pulse:read',
850
+ 'read',
851
+ 'Read the Pulse settings',
852
+ ],
853
+ [
854
+ 'pulse.saveProgram',
855
+ 'pulse.saveProgram',
856
+ 'pulse:write',
857
+ 'write',
858
+ 'Save Pulse settings; enabling Pulse schedules questions to everyone',
859
+ ],
860
+ [
861
+ 'pulse.questions',
862
+ 'pulse.questions',
863
+ 'pulse:read',
864
+ 'read',
865
+ 'List the Pulse question library',
866
+ ],
867
+ [
868
+ 'pulse.addQuestion',
869
+ 'pulse.addQuestion',
870
+ 'pulse:write',
871
+ 'write',
872
+ 'Add a Pulse question to the library',
873
+ ],
874
+ [
875
+ 'pulse.addTemplate',
876
+ 'pulse.addTemplate',
877
+ 'pulse:write',
878
+ 'write',
879
+ 'Add a Pulse question set from a template',
880
+ ],
881
+ [
882
+ 'pulse.setQuestionStatus',
883
+ 'pulse.setQuestionStatus',
884
+ 'pulse:write',
885
+ 'write',
886
+ 'Retire or restore a Pulse question',
887
+ ],
888
+ [
889
+ 'pulse.insights',
890
+ 'pulse.insights',
891
+ 'pulse:read',
892
+ 'read',
893
+ 'Read Pulse totals and trends (groups of seven or more)',
894
+ ],
895
+ [
896
+ 'pulse.asked',
897
+ 'pulse.asked',
898
+ 'self:read',
899
+ 'read',
900
+ 'List the Pulse questions asked so far',
901
+ ],
902
+ [
903
+ 'pulse.today',
904
+ 'pulse.today',
905
+ 'self:read',
906
+ 'read',
907
+ 'Read today’s Pulse question',
908
+ ],
909
+ [
910
+ 'praise.settings',
911
+ 'praise.settings',
912
+ 'praise:read',
913
+ 'read',
914
+ 'Read the Praise settings',
915
+ ],
916
+ [
917
+ 'praise.saveSettings',
918
+ 'praise.saveSettings',
919
+ 'praise:write',
920
+ 'write',
921
+ 'Save the Praise settings and company values',
922
+ ],
923
+ [
924
+ 'praise.addChannel',
925
+ 'praise.addChannel',
926
+ 'praise:write',
927
+ 'write',
928
+ 'Read praise from this Slack channel from now on',
929
+ ],
930
+ [
931
+ 'praise.removeChannel',
932
+ 'praise.removeChannel',
933
+ 'praise:write',
934
+ 'write',
935
+ 'Stop reading praise from a Slack channel',
936
+ ],
937
+ [
938
+ 'praise.insights',
939
+ 'praise.insights',
940
+ 'praise:read',
941
+ 'read',
942
+ 'Read Praise totals by value (groups of seven or more)',
943
+ ],
944
+ ['praise.feed', 'praise.feed', 'self:read', 'read', 'Read the Praise feed'],
945
+ [
946
+ 'praise.ofPerson',
947
+ 'praise.ofPerson',
948
+ 'self:read',
949
+ 'read',
950
+ 'Read the public praise one person received',
951
+ ],
952
+ [
953
+ 'praise.mine',
954
+ 'praise.mine',
955
+ 'self:read',
956
+ 'read',
957
+ 'Read praise you gave and received',
958
+ ],
959
+ [
960
+ 'praise.setDigest',
961
+ 'praise.setDigest',
962
+ 'self:write',
963
+ 'write',
964
+ 'Choose whether you get the daily Praise digest',
965
+ ],
966
+ [
967
+ 'praise.setHidden',
968
+ 'praise.setHidden',
969
+ 'self:write',
970
+ 'write',
971
+ 'Hide or show a praise you received',
972
+ ],
973
+ ];