Bulk edit dashboards

Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100. **[Permissions](#permissions) required:** None The dashboards to be updated must be owned by the user, or the user must be an administrator.

Script jira Verified

by hugo697 ยท 11/2/2023

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 396 days ago
1
type Jira = {
2
  username: string;
3
  password: string;
4
  domain: string;
5
};
6
/**
7
 * Bulk edit dashboards
8
 * Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100.
9

10
**[Permissions](#permissions) required:** None
11

12
The dashboards to be updated must be owned by the user, or the user must be an administrator.
13
 */
14
export async function main(
15
  auth: Jira,
16
  body: {
17
    action:
18
      | "changeOwner"
19
      | "changePermission"
20
      | "addPermission"
21
      | "removePermission";
22
    changeOwnerDetails?: { autofixName: boolean; newOwner: string };
23
    entityIds: number[];
24
    extendAdminPermissions?: boolean;
25
    permissionDetails?: {
26
      editPermissions: {
27
        group?: { groupId?: string; name?: string; self?: string };
28
        id?: number;
29
        project?: {
30
          archived?: boolean;
31
          archivedBy?: {
32
            accountId?: string;
33
            accountType?: "atlassian" | "app" | "customer" | "unknown";
34
            active?: boolean;
35
            applicationRoles?: {
36
              callback?: {};
37
              items?: {
38
                defaultGroups?: string[];
39
                defaultGroupsDetails?: {
40
                  groupId?: string;
41
                  name?: string;
42
                  self?: string;
43
                }[];
44
                defined?: boolean;
45
                groupDetails?: {
46
                  groupId?: string;
47
                  name?: string;
48
                  self?: string;
49
                }[];
50
                groups?: string[];
51
                hasUnlimitedSeats?: boolean;
52
                key?: string;
53
                name?: string;
54
                numberOfSeats?: number;
55
                platform?: boolean;
56
                remainingSeats?: number;
57
                selectedByDefault?: boolean;
58
                userCount?: number;
59
                userCountDescription?: string;
60
              }[];
61
              "max-results"?: number;
62
              pagingCallback?: {};
63
              size?: number;
64
            };
65
            avatarUrls?: {
66
              "16x16"?: string;
67
              "24x24"?: string;
68
              "32x32"?: string;
69
              "48x48"?: string;
70
            };
71
            displayName?: string;
72
            emailAddress?: string;
73
            expand?: string;
74
            groups?: {
75
              callback?: {};
76
              items?: { groupId?: string; name?: string; self?: string }[];
77
              "max-results"?: number;
78
              pagingCallback?: {};
79
              size?: number;
80
            };
81
            key?: string;
82
            locale?: string;
83
            name?: string;
84
            self?: string;
85
            timeZone?: string;
86
          };
87
          archivedDate?: string;
88
          assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
89
          avatarUrls?: {
90
            "16x16"?: string;
91
            "24x24"?: string;
92
            "32x32"?: string;
93
            "48x48"?: string;
94
          };
95
          components?: {
96
            ari?: string;
97
            assignee?: {
98
              accountId?: string;
99
              accountType?: "atlassian" | "app" | "customer" | "unknown";
100
              active?: boolean;
101
              applicationRoles?: {
102
                callback?: {};
103
                items?: {
104
                  defaultGroups?: string[];
105
                  defaultGroupsDetails?: {
106
                    groupId?: string;
107
                    name?: string;
108
                    self?: string;
109
                  }[];
110
                  defined?: boolean;
111
                  groupDetails?: {
112
                    groupId?: string;
113
                    name?: string;
114
                    self?: string;
115
                  }[];
116
                  groups?: string[];
117
                  hasUnlimitedSeats?: boolean;
118
                  key?: string;
119
                  name?: string;
120
                  numberOfSeats?: number;
121
                  platform?: boolean;
122
                  remainingSeats?: number;
123
                  selectedByDefault?: boolean;
124
                  userCount?: number;
125
                  userCountDescription?: string;
126
                }[];
127
                "max-results"?: number;
128
                pagingCallback?: {};
129
                size?: number;
130
              };
131
              avatarUrls?: {
132
                "16x16"?: string;
133
                "24x24"?: string;
134
                "32x32"?: string;
135
                "48x48"?: string;
136
              };
137
              displayName?: string;
138
              emailAddress?: string;
139
              expand?: string;
140
              groups?: {
141
                callback?: {};
142
                items?: { groupId?: string; name?: string; self?: string }[];
143
                "max-results"?: number;
144
                pagingCallback?: {};
145
                size?: number;
146
              };
147
              key?: string;
148
              locale?: string;
149
              name?: string;
150
              self?: string;
151
              timeZone?: string;
152
            };
153
            assigneeType?:
154
              | "PROJECT_DEFAULT"
155
              | "COMPONENT_LEAD"
156
              | "PROJECT_LEAD"
157
              | "UNASSIGNED";
158
            description?: string;
159
            id?: string;
160
            isAssigneeTypeValid?: boolean;
161
            lead?: {
162
              accountId?: string;
163
              accountType?: "atlassian" | "app" | "customer" | "unknown";
164
              active?: boolean;
165
              applicationRoles?: {
166
                callback?: {};
167
                items?: {
168
                  defaultGroups?: string[];
169
                  defaultGroupsDetails?: {
170
                    groupId?: string;
171
                    name?: string;
172
                    self?: string;
173
                  }[];
174
                  defined?: boolean;
175
                  groupDetails?: {
176
                    groupId?: string;
177
                    name?: string;
178
                    self?: string;
179
                  }[];
180
                  groups?: string[];
181
                  hasUnlimitedSeats?: boolean;
182
                  key?: string;
183
                  name?: string;
184
                  numberOfSeats?: number;
185
                  platform?: boolean;
186
                  remainingSeats?: number;
187
                  selectedByDefault?: boolean;
188
                  userCount?: number;
189
                  userCountDescription?: string;
190
                }[];
191
                "max-results"?: number;
192
                pagingCallback?: {};
193
                size?: number;
194
              };
195
              avatarUrls?: {
196
                "16x16"?: string;
197
                "24x24"?: string;
198
                "32x32"?: string;
199
                "48x48"?: string;
200
              };
201
              displayName?: string;
202
              emailAddress?: string;
203
              expand?: string;
204
              groups?: {
205
                callback?: {};
206
                items?: { groupId?: string; name?: string; self?: string }[];
207
                "max-results"?: number;
208
                pagingCallback?: {};
209
                size?: number;
210
              };
211
              key?: string;
212
              locale?: string;
213
              name?: string;
214
              self?: string;
215
              timeZone?: string;
216
            };
217
            leadAccountId?: string;
218
            leadUserName?: string;
219
            metadata?: { [k: string]: string };
220
            name?: string;
221
            project?: string;
222
            projectId?: number;
223
            realAssignee?: {
224
              accountId?: string;
225
              accountType?: "atlassian" | "app" | "customer" | "unknown";
226
              active?: boolean;
227
              applicationRoles?: {
228
                callback?: {};
229
                items?: {
230
                  defaultGroups?: string[];
231
                  defaultGroupsDetails?: {
232
                    groupId?: string;
233
                    name?: string;
234
                    self?: string;
235
                  }[];
236
                  defined?: boolean;
237
                  groupDetails?: {
238
                    groupId?: string;
239
                    name?: string;
240
                    self?: string;
241
                  }[];
242
                  groups?: string[];
243
                  hasUnlimitedSeats?: boolean;
244
                  key?: string;
245
                  name?: string;
246
                  numberOfSeats?: number;
247
                  platform?: boolean;
248
                  remainingSeats?: number;
249
                  selectedByDefault?: boolean;
250
                  userCount?: number;
251
                  userCountDescription?: string;
252
                }[];
253
                "max-results"?: number;
254
                pagingCallback?: {};
255
                size?: number;
256
              };
257
              avatarUrls?: {
258
                "16x16"?: string;
259
                "24x24"?: string;
260
                "32x32"?: string;
261
                "48x48"?: string;
262
              };
263
              displayName?: string;
264
              emailAddress?: string;
265
              expand?: string;
266
              groups?: {
267
                callback?: {};
268
                items?: { groupId?: string; name?: string; self?: string }[];
269
                "max-results"?: number;
270
                pagingCallback?: {};
271
                size?: number;
272
              };
273
              key?: string;
274
              locale?: string;
275
              name?: string;
276
              self?: string;
277
              timeZone?: string;
278
            };
279
            realAssigneeType?:
280
              | "PROJECT_DEFAULT"
281
              | "COMPONENT_LEAD"
282
              | "PROJECT_LEAD"
283
              | "UNASSIGNED";
284
            self?: string;
285
          }[];
286
          deleted?: boolean;
287
          deletedBy?: {
288
            accountId?: string;
289
            accountType?: "atlassian" | "app" | "customer" | "unknown";
290
            active?: boolean;
291
            applicationRoles?: {
292
              callback?: {};
293
              items?: {
294
                defaultGroups?: string[];
295
                defaultGroupsDetails?: {
296
                  groupId?: string;
297
                  name?: string;
298
                  self?: string;
299
                }[];
300
                defined?: boolean;
301
                groupDetails?: {
302
                  groupId?: string;
303
                  name?: string;
304
                  self?: string;
305
                }[];
306
                groups?: string[];
307
                hasUnlimitedSeats?: boolean;
308
                key?: string;
309
                name?: string;
310
                numberOfSeats?: number;
311
                platform?: boolean;
312
                remainingSeats?: number;
313
                selectedByDefault?: boolean;
314
                userCount?: number;
315
                userCountDescription?: string;
316
              }[];
317
              "max-results"?: number;
318
              pagingCallback?: {};
319
              size?: number;
320
            };
321
            avatarUrls?: {
322
              "16x16"?: string;
323
              "24x24"?: string;
324
              "32x32"?: string;
325
              "48x48"?: string;
326
            };
327
            displayName?: string;
328
            emailAddress?: string;
329
            expand?: string;
330
            groups?: {
331
              callback?: {};
332
              items?: { groupId?: string; name?: string; self?: string }[];
333
              "max-results"?: number;
334
              pagingCallback?: {};
335
              size?: number;
336
            };
337
            key?: string;
338
            locale?: string;
339
            name?: string;
340
            self?: string;
341
            timeZone?: string;
342
          };
343
          deletedDate?: string;
344
          description?: string;
345
          email?: string;
346
          expand?: string;
347
          favourite?: boolean;
348
          id?: string;
349
          insight?: { lastIssueUpdateTime?: string; totalIssueCount?: number };
350
          isPrivate?: boolean;
351
          issueTypeHierarchy?: {
352
            baseLevelId?: number;
353
            levels?: {
354
              aboveLevelId?: number;
355
              belowLevelId?: number;
356
              externalUuid?: string;
357
              hierarchyLevelNumber?: number;
358
              id?: number;
359
              issueTypeIds?: number[];
360
              level?: number;
361
              name?: string;
362
              projectConfigurationId?: number;
363
            }[];
364
          };
365
          issueTypes?: {
366
            avatarId?: number;
367
            description?: string;
368
            entityId?: string;
369
            hierarchyLevel?: number;
370
            iconUrl?: string;
371
            id?: string;
372
            name?: string;
373
            scope?: {
374
              project?: {
375
                avatarUrls?: {
376
                  "16x16"?: string;
377
                  "24x24"?: string;
378
                  "32x32"?: string;
379
                  "48x48"?: string;
380
                };
381
                id?: string;
382
                key?: string;
383
                name?: string;
384
                projectCategory?: {
385
                  description?: string;
386
                  id?: string;
387
                  name?: string;
388
                  self?: string;
389
                };
390
                projectTypeKey?: "software" | "service_desk" | "business";
391
                self?: string;
392
                simplified?: boolean;
393
              };
394
              type?: "PROJECT" | "TEMPLATE";
395
              [k: string]: unknown;
396
            };
397
            self?: string;
398
            subtask?: boolean;
399
          }[];
400
          key?: string;
401
          landingPageInfo?: {
402
            attributes?: { [k: string]: string };
403
            boardId?: number;
404
            boardName?: string;
405
            projectKey?: string;
406
            projectType?: string;
407
            queueCategory?: string;
408
            queueId?: number;
409
            queueName?: string;
410
            simpleBoard?: boolean;
411
            simplified?: boolean;
412
            url?: string;
413
          };
414
          lead?: {
415
            accountId?: string;
416
            accountType?: "atlassian" | "app" | "customer" | "unknown";
417
            active?: boolean;
418
            applicationRoles?: {
419
              callback?: {};
420
              items?: {
421
                defaultGroups?: string[];
422
                defaultGroupsDetails?: {
423
                  groupId?: string;
424
                  name?: string;
425
                  self?: string;
426
                }[];
427
                defined?: boolean;
428
                groupDetails?: {
429
                  groupId?: string;
430
                  name?: string;
431
                  self?: string;
432
                }[];
433
                groups?: string[];
434
                hasUnlimitedSeats?: boolean;
435
                key?: string;
436
                name?: string;
437
                numberOfSeats?: number;
438
                platform?: boolean;
439
                remainingSeats?: number;
440
                selectedByDefault?: boolean;
441
                userCount?: number;
442
                userCountDescription?: string;
443
              }[];
444
              "max-results"?: number;
445
              pagingCallback?: {};
446
              size?: number;
447
            };
448
            avatarUrls?: {
449
              "16x16"?: string;
450
              "24x24"?: string;
451
              "32x32"?: string;
452
              "48x48"?: string;
453
            };
454
            displayName?: string;
455
            emailAddress?: string;
456
            expand?: string;
457
            groups?: {
458
              callback?: {};
459
              items?: { groupId?: string; name?: string; self?: string }[];
460
              "max-results"?: number;
461
              pagingCallback?: {};
462
              size?: number;
463
            };
464
            key?: string;
465
            locale?: string;
466
            name?: string;
467
            self?: string;
468
            timeZone?: string;
469
          };
470
          name?: string;
471
          permissions?: { canEdit?: boolean };
472
          projectCategory?: {
473
            description?: string;
474
            id?: string;
475
            name?: string;
476
            self?: string;
477
          };
478
          projectTypeKey?: "software" | "service_desk" | "business";
479
          properties?: { [k: string]: { [k: string]: unknown } };
480
          retentionTillDate?: string;
481
          roles?: { [k: string]: string };
482
          self?: string;
483
          simplified?: boolean;
484
          style?: "classic" | "next-gen";
485
          url?: string;
486
          uuid?: string;
487
          versions?: {
488
            approvers?: {
489
              accountId?: string;
490
              declineReason?: string;
491
              description?: string;
492
              status?: string;
493
              [k: string]: unknown;
494
            }[];
495
            archived?: boolean;
496
            description?: string;
497
            driver?: string;
498
            expand?: string;
499
            id?: string;
500
            issuesStatusForFixVersion?: {
501
              done?: number;
502
              inProgress?: number;
503
              toDo?: number;
504
              unmapped?: number;
505
              [k: string]: unknown;
506
            };
507
            moveUnfixedIssuesTo?: string;
508
            name?: string;
509
            operations?: {
510
              href?: string;
511
              iconClass?: string;
512
              id?: string;
513
              label?: string;
514
              styleClass?: string;
515
              title?: string;
516
              weight?: number;
517
            }[];
518
            overdue?: boolean;
519
            project?: string;
520
            projectId?: number;
521
            releaseDate?: string;
522
            released?: boolean;
523
            self?: string;
524
            startDate?: string;
525
            userReleaseDate?: string;
526
            userStartDate?: string;
527
          }[];
528
        };
529
        role?: {
530
          actors?: {
531
            actorGroup?: {
532
              displayName?: string;
533
              groupId?: string;
534
              name?: string;
535
            };
536
            actorUser?: { accountId?: string };
537
            avatarUrl?: string;
538
            displayName?: string;
539
            id?: number;
540
            name?: string;
541
            type?: "atlassian-group-role-actor" | "atlassian-user-role-actor";
542
          }[];
543
          admin?: boolean;
544
          currentUserRole?: boolean;
545
          default?: boolean;
546
          description?: string;
547
          id?: number;
548
          name?: string;
549
          roleConfigurable?: boolean;
550
          scope?: {
551
            project?: {
552
              avatarUrls?: {
553
                "16x16"?: string;
554
                "24x24"?: string;
555
                "32x32"?: string;
556
                "48x48"?: string;
557
              };
558
              id?: string;
559
              key?: string;
560
              name?: string;
561
              projectCategory?: {
562
                description?: string;
563
                id?: string;
564
                name?: string;
565
                self?: string;
566
              };
567
              projectTypeKey?: "software" | "service_desk" | "business";
568
              self?: string;
569
              simplified?: boolean;
570
            };
571
            type?: "PROJECT" | "TEMPLATE";
572
            [k: string]: unknown;
573
          };
574
          self?: string;
575
          translatedName?: string;
576
        };
577
        type:
578
          | "user"
579
          | "group"
580
          | "project"
581
          | "projectRole"
582
          | "global"
583
          | "loggedin"
584
          | "authenticated"
585
          | "project-unknown";
586
        user?: {
587
          accountId?: string;
588
          active?: boolean;
589
          avatarUrls?: {
590
            "16x16"?: string;
591
            "24x24"?: string;
592
            "32x32"?: string;
593
            "48x48"?: string;
594
          };
595
          displayName?: string;
596
          key?: string;
597
          name?: string;
598
          self?: string;
599
        };
600
      }[];
601
      sharePermissions: {
602
        group?: { groupId?: string; name?: string; self?: string };
603
        id?: number;
604
        project?: {
605
          archived?: boolean;
606
          archivedBy?: {
607
            accountId?: string;
608
            accountType?: "atlassian" | "app" | "customer" | "unknown";
609
            active?: boolean;
610
            applicationRoles?: {
611
              callback?: {};
612
              items?: {
613
                defaultGroups?: string[];
614
                defaultGroupsDetails?: {
615
                  groupId?: string;
616
                  name?: string;
617
                  self?: string;
618
                }[];
619
                defined?: boolean;
620
                groupDetails?: {
621
                  groupId?: string;
622
                  name?: string;
623
                  self?: string;
624
                }[];
625
                groups?: string[];
626
                hasUnlimitedSeats?: boolean;
627
                key?: string;
628
                name?: string;
629
                numberOfSeats?: number;
630
                platform?: boolean;
631
                remainingSeats?: number;
632
                selectedByDefault?: boolean;
633
                userCount?: number;
634
                userCountDescription?: string;
635
              }[];
636
              "max-results"?: number;
637
              pagingCallback?: {};
638
              size?: number;
639
            };
640
            avatarUrls?: {
641
              "16x16"?: string;
642
              "24x24"?: string;
643
              "32x32"?: string;
644
              "48x48"?: string;
645
            };
646
            displayName?: string;
647
            emailAddress?: string;
648
            expand?: string;
649
            groups?: {
650
              callback?: {};
651
              items?: { groupId?: string; name?: string; self?: string }[];
652
              "max-results"?: number;
653
              pagingCallback?: {};
654
              size?: number;
655
            };
656
            key?: string;
657
            locale?: string;
658
            name?: string;
659
            self?: string;
660
            timeZone?: string;
661
          };
662
          archivedDate?: string;
663
          assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
664
          avatarUrls?: {
665
            "16x16"?: string;
666
            "24x24"?: string;
667
            "32x32"?: string;
668
            "48x48"?: string;
669
          };
670
          components?: {
671
            ari?: string;
672
            assignee?: {
673
              accountId?: string;
674
              accountType?: "atlassian" | "app" | "customer" | "unknown";
675
              active?: boolean;
676
              applicationRoles?: {
677
                callback?: {};
678
                items?: {
679
                  defaultGroups?: string[];
680
                  defaultGroupsDetails?: {
681
                    groupId?: string;
682
                    name?: string;
683
                    self?: string;
684
                  }[];
685
                  defined?: boolean;
686
                  groupDetails?: {
687
                    groupId?: string;
688
                    name?: string;
689
                    self?: string;
690
                  }[];
691
                  groups?: string[];
692
                  hasUnlimitedSeats?: boolean;
693
                  key?: string;
694
                  name?: string;
695
                  numberOfSeats?: number;
696
                  platform?: boolean;
697
                  remainingSeats?: number;
698
                  selectedByDefault?: boolean;
699
                  userCount?: number;
700
                  userCountDescription?: string;
701
                }[];
702
                "max-results"?: number;
703
                pagingCallback?: {};
704
                size?: number;
705
              };
706
              avatarUrls?: {
707
                "16x16"?: string;
708
                "24x24"?: string;
709
                "32x32"?: string;
710
                "48x48"?: string;
711
              };
712
              displayName?: string;
713
              emailAddress?: string;
714
              expand?: string;
715
              groups?: {
716
                callback?: {};
717
                items?: { groupId?: string; name?: string; self?: string }[];
718
                "max-results"?: number;
719
                pagingCallback?: {};
720
                size?: number;
721
              };
722
              key?: string;
723
              locale?: string;
724
              name?: string;
725
              self?: string;
726
              timeZone?: string;
727
            };
728
            assigneeType?:
729
              | "PROJECT_DEFAULT"
730
              | "COMPONENT_LEAD"
731
              | "PROJECT_LEAD"
732
              | "UNASSIGNED";
733
            description?: string;
734
            id?: string;
735
            isAssigneeTypeValid?: boolean;
736
            lead?: {
737
              accountId?: string;
738
              accountType?: "atlassian" | "app" | "customer" | "unknown";
739
              active?: boolean;
740
              applicationRoles?: {
741
                callback?: {};
742
                items?: {
743
                  defaultGroups?: string[];
744
                  defaultGroupsDetails?: {
745
                    groupId?: string;
746
                    name?: string;
747
                    self?: string;
748
                  }[];
749
                  defined?: boolean;
750
                  groupDetails?: {
751
                    groupId?: string;
752
                    name?: string;
753
                    self?: string;
754
                  }[];
755
                  groups?: string[];
756
                  hasUnlimitedSeats?: boolean;
757
                  key?: string;
758
                  name?: string;
759
                  numberOfSeats?: number;
760
                  platform?: boolean;
761
                  remainingSeats?: number;
762
                  selectedByDefault?: boolean;
763
                  userCount?: number;
764
                  userCountDescription?: string;
765
                }[];
766
                "max-results"?: number;
767
                pagingCallback?: {};
768
                size?: number;
769
              };
770
              avatarUrls?: {
771
                "16x16"?: string;
772
                "24x24"?: string;
773
                "32x32"?: string;
774
                "48x48"?: string;
775
              };
776
              displayName?: string;
777
              emailAddress?: string;
778
              expand?: string;
779
              groups?: {
780
                callback?: {};
781
                items?: { groupId?: string; name?: string; self?: string }[];
782
                "max-results"?: number;
783
                pagingCallback?: {};
784
                size?: number;
785
              };
786
              key?: string;
787
              locale?: string;
788
              name?: string;
789
              self?: string;
790
              timeZone?: string;
791
            };
792
            leadAccountId?: string;
793
            leadUserName?: string;
794
            metadata?: { [k: string]: string };
795
            name?: string;
796
            project?: string;
797
            projectId?: number;
798
            realAssignee?: {
799
              accountId?: string;
800
              accountType?: "atlassian" | "app" | "customer" | "unknown";
801
              active?: boolean;
802
              applicationRoles?: {
803
                callback?: {};
804
                items?: {
805
                  defaultGroups?: string[];
806
                  defaultGroupsDetails?: {
807
                    groupId?: string;
808
                    name?: string;
809
                    self?: string;
810
                  }[];
811
                  defined?: boolean;
812
                  groupDetails?: {
813
                    groupId?: string;
814
                    name?: string;
815
                    self?: string;
816
                  }[];
817
                  groups?: string[];
818
                  hasUnlimitedSeats?: boolean;
819
                  key?: string;
820
                  name?: string;
821
                  numberOfSeats?: number;
822
                  platform?: boolean;
823
                  remainingSeats?: number;
824
                  selectedByDefault?: boolean;
825
                  userCount?: number;
826
                  userCountDescription?: string;
827
                }[];
828
                "max-results"?: number;
829
                pagingCallback?: {};
830
                size?: number;
831
              };
832
              avatarUrls?: {
833
                "16x16"?: string;
834
                "24x24"?: string;
835
                "32x32"?: string;
836
                "48x48"?: string;
837
              };
838
              displayName?: string;
839
              emailAddress?: string;
840
              expand?: string;
841
              groups?: {
842
                callback?: {};
843
                items?: { groupId?: string; name?: string; self?: string }[];
844
                "max-results"?: number;
845
                pagingCallback?: {};
846
                size?: number;
847
              };
848
              key?: string;
849
              locale?: string;
850
              name?: string;
851
              self?: string;
852
              timeZone?: string;
853
            };
854
            realAssigneeType?:
855
              | "PROJECT_DEFAULT"
856
              | "COMPONENT_LEAD"
857
              | "PROJECT_LEAD"
858
              | "UNASSIGNED";
859
            self?: string;
860
          }[];
861
          deleted?: boolean;
862
          deletedBy?: {
863
            accountId?: string;
864
            accountType?: "atlassian" | "app" | "customer" | "unknown";
865
            active?: boolean;
866
            applicationRoles?: {
867
              callback?: {};
868
              items?: {
869
                defaultGroups?: string[];
870
                defaultGroupsDetails?: {
871
                  groupId?: string;
872
                  name?: string;
873
                  self?: string;
874
                }[];
875
                defined?: boolean;
876
                groupDetails?: {
877
                  groupId?: string;
878
                  name?: string;
879
                  self?: string;
880
                }[];
881
                groups?: string[];
882
                hasUnlimitedSeats?: boolean;
883
                key?: string;
884
                name?: string;
885
                numberOfSeats?: number;
886
                platform?: boolean;
887
                remainingSeats?: number;
888
                selectedByDefault?: boolean;
889
                userCount?: number;
890
                userCountDescription?: string;
891
              }[];
892
              "max-results"?: number;
893
              pagingCallback?: {};
894
              size?: number;
895
            };
896
            avatarUrls?: {
897
              "16x16"?: string;
898
              "24x24"?: string;
899
              "32x32"?: string;
900
              "48x48"?: string;
901
            };
902
            displayName?: string;
903
            emailAddress?: string;
904
            expand?: string;
905
            groups?: {
906
              callback?: {};
907
              items?: { groupId?: string; name?: string; self?: string }[];
908
              "max-results"?: number;
909
              pagingCallback?: {};
910
              size?: number;
911
            };
912
            key?: string;
913
            locale?: string;
914
            name?: string;
915
            self?: string;
916
            timeZone?: string;
917
          };
918
          deletedDate?: string;
919
          description?: string;
920
          email?: string;
921
          expand?: string;
922
          favourite?: boolean;
923
          id?: string;
924
          insight?: { lastIssueUpdateTime?: string; totalIssueCount?: number };
925
          isPrivate?: boolean;
926
          issueTypeHierarchy?: {
927
            baseLevelId?: number;
928
            levels?: {
929
              aboveLevelId?: number;
930
              belowLevelId?: number;
931
              externalUuid?: string;
932
              hierarchyLevelNumber?: number;
933
              id?: number;
934
              issueTypeIds?: number[];
935
              level?: number;
936
              name?: string;
937
              projectConfigurationId?: number;
938
            }[];
939
          };
940
          issueTypes?: {
941
            avatarId?: number;
942
            description?: string;
943
            entityId?: string;
944
            hierarchyLevel?: number;
945
            iconUrl?: string;
946
            id?: string;
947
            name?: string;
948
            scope?: {
949
              project?: {
950
                avatarUrls?: {
951
                  "16x16"?: string;
952
                  "24x24"?: string;
953
                  "32x32"?: string;
954
                  "48x48"?: string;
955
                };
956
                id?: string;
957
                key?: string;
958
                name?: string;
959
                projectCategory?: {
960
                  description?: string;
961
                  id?: string;
962
                  name?: string;
963
                  self?: string;
964
                };
965
                projectTypeKey?: "software" | "service_desk" | "business";
966
                self?: string;
967
                simplified?: boolean;
968
              };
969
              type?: "PROJECT" | "TEMPLATE";
970
              [k: string]: unknown;
971
            };
972
            self?: string;
973
            subtask?: boolean;
974
          }[];
975
          key?: string;
976
          landingPageInfo?: {
977
            attributes?: { [k: string]: string };
978
            boardId?: number;
979
            boardName?: string;
980
            projectKey?: string;
981
            projectType?: string;
982
            queueCategory?: string;
983
            queueId?: number;
984
            queueName?: string;
985
            simpleBoard?: boolean;
986
            simplified?: boolean;
987
            url?: string;
988
          };
989
          lead?: {
990
            accountId?: string;
991
            accountType?: "atlassian" | "app" | "customer" | "unknown";
992
            active?: boolean;
993
            applicationRoles?: {
994
              callback?: {};
995
              items?: {
996
                defaultGroups?: string[];
997
                defaultGroupsDetails?: {
998
                  groupId?: string;
999
                  name?: string;
1000
                  self?: string;
1001
                }[];
1002
                defined?: boolean;
1003
                groupDetails?: {
1004
                  groupId?: string;
1005
                  name?: string;
1006
                  self?: string;
1007
                }[];
1008
                groups?: string[];
1009
                hasUnlimitedSeats?: boolean;
1010
                key?: string;
1011
                name?: string;
1012
                numberOfSeats?: number;
1013
                platform?: boolean;
1014
                remainingSeats?: number;
1015
                selectedByDefault?: boolean;
1016
                userCount?: number;
1017
                userCountDescription?: string;
1018
              }[];
1019
              "max-results"?: number;
1020
              pagingCallback?: {};
1021
              size?: number;
1022
            };
1023
            avatarUrls?: {
1024
              "16x16"?: string;
1025
              "24x24"?: string;
1026
              "32x32"?: string;
1027
              "48x48"?: string;
1028
            };
1029
            displayName?: string;
1030
            emailAddress?: string;
1031
            expand?: string;
1032
            groups?: {
1033
              callback?: {};
1034
              items?: { groupId?: string; name?: string; self?: string }[];
1035
              "max-results"?: number;
1036
              pagingCallback?: {};
1037
              size?: number;
1038
            };
1039
            key?: string;
1040
            locale?: string;
1041
            name?: string;
1042
            self?: string;
1043
            timeZone?: string;
1044
          };
1045
          name?: string;
1046
          permissions?: { canEdit?: boolean };
1047
          projectCategory?: {
1048
            description?: string;
1049
            id?: string;
1050
            name?: string;
1051
            self?: string;
1052
          };
1053
          projectTypeKey?: "software" | "service_desk" | "business";
1054
          properties?: { [k: string]: { [k: string]: unknown } };
1055
          retentionTillDate?: string;
1056
          roles?: { [k: string]: string };
1057
          self?: string;
1058
          simplified?: boolean;
1059
          style?: "classic" | "next-gen";
1060
          url?: string;
1061
          uuid?: string;
1062
          versions?: {
1063
            approvers?: {
1064
              accountId?: string;
1065
              declineReason?: string;
1066
              description?: string;
1067
              status?: string;
1068
              [k: string]: unknown;
1069
            }[];
1070
            archived?: boolean;
1071
            description?: string;
1072
            driver?: string;
1073
            expand?: string;
1074
            id?: string;
1075
            issuesStatusForFixVersion?: {
1076
              done?: number;
1077
              inProgress?: number;
1078
              toDo?: number;
1079
              unmapped?: number;
1080
              [k: string]: unknown;
1081
            };
1082
            moveUnfixedIssuesTo?: string;
1083
            name?: string;
1084
            operations?: {
1085
              href?: string;
1086
              iconClass?: string;
1087
              id?: string;
1088
              label?: string;
1089
              styleClass?: string;
1090
              title?: string;
1091
              weight?: number;
1092
            }[];
1093
            overdue?: boolean;
1094
            project?: string;
1095
            projectId?: number;
1096
            releaseDate?: string;
1097
            released?: boolean;
1098
            self?: string;
1099
            startDate?: string;
1100
            userReleaseDate?: string;
1101
            userStartDate?: string;
1102
          }[];
1103
        };
1104
        role?: {
1105
          actors?: {
1106
            actorGroup?: {
1107
              displayName?: string;
1108
              groupId?: string;
1109
              name?: string;
1110
            };
1111
            actorUser?: { accountId?: string };
1112
            avatarUrl?: string;
1113
            displayName?: string;
1114
            id?: number;
1115
            name?: string;
1116
            type?: "atlassian-group-role-actor" | "atlassian-user-role-actor";
1117
          }[];
1118
          admin?: boolean;
1119
          currentUserRole?: boolean;
1120
          default?: boolean;
1121
          description?: string;
1122
          id?: number;
1123
          name?: string;
1124
          roleConfigurable?: boolean;
1125
          scope?: {
1126
            project?: {
1127
              avatarUrls?: {
1128
                "16x16"?: string;
1129
                "24x24"?: string;
1130
                "32x32"?: string;
1131
                "48x48"?: string;
1132
              };
1133
              id?: string;
1134
              key?: string;
1135
              name?: string;
1136
              projectCategory?: {
1137
                description?: string;
1138
                id?: string;
1139
                name?: string;
1140
                self?: string;
1141
              };
1142
              projectTypeKey?: "software" | "service_desk" | "business";
1143
              self?: string;
1144
              simplified?: boolean;
1145
            };
1146
            type?: "PROJECT" | "TEMPLATE";
1147
            [k: string]: unknown;
1148
          };
1149
          self?: string;
1150
          translatedName?: string;
1151
        };
1152
        type:
1153
          | "user"
1154
          | "group"
1155
          | "project"
1156
          | "projectRole"
1157
          | "global"
1158
          | "loggedin"
1159
          | "authenticated"
1160
          | "project-unknown";
1161
        user?: {
1162
          accountId?: string;
1163
          active?: boolean;
1164
          avatarUrls?: {
1165
            "16x16"?: string;
1166
            "24x24"?: string;
1167
            "32x32"?: string;
1168
            "48x48"?: string;
1169
          };
1170
          displayName?: string;
1171
          key?: string;
1172
          name?: string;
1173
          self?: string;
1174
        };
1175
      }[];
1176
    };
1177
  }
1178
) {
1179
  const url = new URL(
1180
    `https://${auth.domain}.atlassian.net/rest/api/2/dashboard/bulk/edit`
1181
  );
1182

1183
  const response = await fetch(url, {
1184
    method: "PUT",
1185
    headers: {
1186
      "Content-Type": "application/json",
1187
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
1188
    },
1189
    body: JSON.stringify(body),
1190
  });
1191
  if (!response.ok) {
1192
    const text = await response.text();
1193
    throw new Error(`${response.status} ${text}`);
1194
  }
1195
  return await response.json();
1196
}
1197