Update filter

Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing. **[Permissions](#permissions) required:** Permission to access Jira, however the user must own the filter.

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 filter
8
 * Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing.
9

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