Update dashboard

Updates a dashboard, replacing all the dashboard details with those provided. **[Permissions](#permissions) required:** None The dashboard to be updated must be owned by the user.

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
 * Update dashboard
8
 * Updates a dashboard, replacing all the dashboard details with those provided.
9

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

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

1176
  const response = await fetch(url, {
1177
    method: "PUT",
1178
    headers: {
1179
      "Content-Type": "application/json",
1180
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
1181
    },
1182
    body: JSON.stringify(body),
1183
  });
1184
  if (!response.ok) {
1185
    const text = await response.text();
1186
    throw new Error(`${response.status} ${text}`);
1187
  }
1188
  return await response.json();
1189
}
1190