Create filter

Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-2-filter-post). The filter is not selected as a favorite. **[Permissions](#permissions) required:** Permission to access Jira.

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
 * Create filter
8
 * Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-2-filter-post). The filter is not selected as a favorite.
9

10
**[Permissions](#permissions) required:** Permission to access Jira.
11
 */
12
export async function main(
13
  auth: Jira,
14
  expand: string | undefined,
15
  overrideSharePermissions: string | undefined,
16
  body: {
17
    approximateLastUsed?: string;
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
    favourite?: boolean;
595
    favouritedCount?: number;
596
    id?: string;
597
    jql?: string;
598
    name: string;
599
    owner?: {
600
      accountId?: string;
601
      accountType?: "atlassian" | "app" | "customer" | "unknown";
602
      active?: boolean;
603
      applicationRoles?: {
604
        callback?: {};
605
        items?: {
606
          defaultGroups?: string[];
607
          defaultGroupsDetails?: {
608
            groupId?: string;
609
            name?: string;
610
            self?: string;
611
          }[];
612
          defined?: boolean;
613
          groupDetails?: { groupId?: string; name?: string; self?: string }[];
614
          groups?: string[];
615
          hasUnlimitedSeats?: boolean;
616
          key?: string;
617
          name?: string;
618
          numberOfSeats?: number;
619
          platform?: boolean;
620
          remainingSeats?: number;
621
          selectedByDefault?: boolean;
622
          userCount?: number;
623
          userCountDescription?: string;
624
        }[];
625
        "max-results"?: number;
626
        pagingCallback?: {};
627
        size?: number;
628
      };
629
      avatarUrls?: {
630
        "16x16"?: string;
631
        "24x24"?: string;
632
        "32x32"?: string;
633
        "48x48"?: string;
634
      };
635
      displayName?: string;
636
      emailAddress?: string;
637
      expand?: string;
638
      groups?: {
639
        callback?: {};
640
        items?: { groupId?: string; name?: string; self?: string }[];
641
        "max-results"?: number;
642
        pagingCallback?: {};
643
        size?: number;
644
      };
645
      key?: string;
646
      locale?: string;
647
      name?: string;
648
      self?: string;
649
      timeZone?: string;
650
    };
651
    searchUrl?: string;
652
    self?: string;
653
    sharePermissions?: {
654
      group?: { groupId?: string; name?: string; self?: string };
655
      id?: number;
656
      project?: {
657
        archived?: boolean;
658
        archivedBy?: {
659
          accountId?: string;
660
          accountType?: "atlassian" | "app" | "customer" | "unknown";
661
          active?: boolean;
662
          applicationRoles?: {
663
            callback?: {};
664
            items?: {
665
              defaultGroups?: string[];
666
              defaultGroupsDetails?: {
667
                groupId?: string;
668
                name?: string;
669
                self?: string;
670
              }[];
671
              defined?: boolean;
672
              groupDetails?: {
673
                groupId?: string;
674
                name?: string;
675
                self?: string;
676
              }[];
677
              groups?: string[];
678
              hasUnlimitedSeats?: boolean;
679
              key?: string;
680
              name?: string;
681
              numberOfSeats?: number;
682
              platform?: boolean;
683
              remainingSeats?: number;
684
              selectedByDefault?: boolean;
685
              userCount?: number;
686
              userCountDescription?: string;
687
            }[];
688
            "max-results"?: number;
689
            pagingCallback?: {};
690
            size?: number;
691
          };
692
          avatarUrls?: {
693
            "16x16"?: string;
694
            "24x24"?: string;
695
            "32x32"?: string;
696
            "48x48"?: string;
697
          };
698
          displayName?: string;
699
          emailAddress?: string;
700
          expand?: string;
701
          groups?: {
702
            callback?: {};
703
            items?: { groupId?: string; name?: string; self?: string }[];
704
            "max-results"?: number;
705
            pagingCallback?: {};
706
            size?: number;
707
          };
708
          key?: string;
709
          locale?: string;
710
          name?: string;
711
          self?: string;
712
          timeZone?: string;
713
        };
714
        archivedDate?: string;
715
        assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
716
        avatarUrls?: {
717
          "16x16"?: string;
718
          "24x24"?: string;
719
          "32x32"?: string;
720
          "48x48"?: string;
721
        };
722
        components?: {
723
          ari?: string;
724
          assignee?: {
725
            accountId?: string;
726
            accountType?: "atlassian" | "app" | "customer" | "unknown";
727
            active?: boolean;
728
            applicationRoles?: {
729
              callback?: {};
730
              items?: {
731
                defaultGroups?: string[];
732
                defaultGroupsDetails?: {
733
                  groupId?: string;
734
                  name?: string;
735
                  self?: string;
736
                }[];
737
                defined?: boolean;
738
                groupDetails?: {
739
                  groupId?: string;
740
                  name?: string;
741
                  self?: string;
742
                }[];
743
                groups?: string[];
744
                hasUnlimitedSeats?: boolean;
745
                key?: string;
746
                name?: string;
747
                numberOfSeats?: number;
748
                platform?: boolean;
749
                remainingSeats?: number;
750
                selectedByDefault?: boolean;
751
                userCount?: number;
752
                userCountDescription?: string;
753
              }[];
754
              "max-results"?: number;
755
              pagingCallback?: {};
756
              size?: number;
757
            };
758
            avatarUrls?: {
759
              "16x16"?: string;
760
              "24x24"?: string;
761
              "32x32"?: string;
762
              "48x48"?: string;
763
            };
764
            displayName?: string;
765
            emailAddress?: string;
766
            expand?: string;
767
            groups?: {
768
              callback?: {};
769
              items?: { groupId?: string; name?: string; self?: string }[];
770
              "max-results"?: number;
771
              pagingCallback?: {};
772
              size?: number;
773
            };
774
            key?: string;
775
            locale?: string;
776
            name?: string;
777
            self?: string;
778
            timeZone?: string;
779
          };
780
          assigneeType?:
781
            | "PROJECT_DEFAULT"
782
            | "COMPONENT_LEAD"
783
            | "PROJECT_LEAD"
784
            | "UNASSIGNED";
785
          description?: string;
786
          id?: string;
787
          isAssigneeTypeValid?: boolean;
788
          lead?: {
789
            accountId?: string;
790
            accountType?: "atlassian" | "app" | "customer" | "unknown";
791
            active?: boolean;
792
            applicationRoles?: {
793
              callback?: {};
794
              items?: {
795
                defaultGroups?: string[];
796
                defaultGroupsDetails?: {
797
                  groupId?: string;
798
                  name?: string;
799
                  self?: string;
800
                }[];
801
                defined?: boolean;
802
                groupDetails?: {
803
                  groupId?: string;
804
                  name?: string;
805
                  self?: string;
806
                }[];
807
                groups?: string[];
808
                hasUnlimitedSeats?: boolean;
809
                key?: string;
810
                name?: string;
811
                numberOfSeats?: number;
812
                platform?: boolean;
813
                remainingSeats?: number;
814
                selectedByDefault?: boolean;
815
                userCount?: number;
816
                userCountDescription?: string;
817
              }[];
818
              "max-results"?: number;
819
              pagingCallback?: {};
820
              size?: number;
821
            };
822
            avatarUrls?: {
823
              "16x16"?: string;
824
              "24x24"?: string;
825
              "32x32"?: string;
826
              "48x48"?: string;
827
            };
828
            displayName?: string;
829
            emailAddress?: string;
830
            expand?: string;
831
            groups?: {
832
              callback?: {};
833
              items?: { groupId?: string; name?: string; self?: string }[];
834
              "max-results"?: number;
835
              pagingCallback?: {};
836
              size?: number;
837
            };
838
            key?: string;
839
            locale?: string;
840
            name?: string;
841
            self?: string;
842
            timeZone?: string;
843
          };
844
          leadAccountId?: string;
845
          leadUserName?: string;
846
          metadata?: { [k: string]: string };
847
          name?: string;
848
          project?: string;
849
          projectId?: number;
850
          realAssignee?: {
851
            accountId?: string;
852
            accountType?: "atlassian" | "app" | "customer" | "unknown";
853
            active?: boolean;
854
            applicationRoles?: {
855
              callback?: {};
856
              items?: {
857
                defaultGroups?: string[];
858
                defaultGroupsDetails?: {
859
                  groupId?: string;
860
                  name?: string;
861
                  self?: string;
862
                }[];
863
                defined?: boolean;
864
                groupDetails?: {
865
                  groupId?: string;
866
                  name?: string;
867
                  self?: string;
868
                }[];
869
                groups?: string[];
870
                hasUnlimitedSeats?: boolean;
871
                key?: string;
872
                name?: string;
873
                numberOfSeats?: number;
874
                platform?: boolean;
875
                remainingSeats?: number;
876
                selectedByDefault?: boolean;
877
                userCount?: number;
878
                userCountDescription?: string;
879
              }[];
880
              "max-results"?: number;
881
              pagingCallback?: {};
882
              size?: number;
883
            };
884
            avatarUrls?: {
885
              "16x16"?: string;
886
              "24x24"?: string;
887
              "32x32"?: string;
888
              "48x48"?: string;
889
            };
890
            displayName?: string;
891
            emailAddress?: string;
892
            expand?: string;
893
            groups?: {
894
              callback?: {};
895
              items?: { groupId?: string; name?: string; self?: string }[];
896
              "max-results"?: number;
897
              pagingCallback?: {};
898
              size?: number;
899
            };
900
            key?: string;
901
            locale?: string;
902
            name?: string;
903
            self?: string;
904
            timeZone?: string;
905
          };
906
          realAssigneeType?:
907
            | "PROJECT_DEFAULT"
908
            | "COMPONENT_LEAD"
909
            | "PROJECT_LEAD"
910
            | "UNASSIGNED";
911
          self?: string;
912
        }[];
913
        deleted?: boolean;
914
        deletedBy?: {
915
          accountId?: string;
916
          accountType?: "atlassian" | "app" | "customer" | "unknown";
917
          active?: boolean;
918
          applicationRoles?: {
919
            callback?: {};
920
            items?: {
921
              defaultGroups?: string[];
922
              defaultGroupsDetails?: {
923
                groupId?: string;
924
                name?: string;
925
                self?: string;
926
              }[];
927
              defined?: boolean;
928
              groupDetails?: {
929
                groupId?: string;
930
                name?: string;
931
                self?: string;
932
              }[];
933
              groups?: string[];
934
              hasUnlimitedSeats?: boolean;
935
              key?: string;
936
              name?: string;
937
              numberOfSeats?: number;
938
              platform?: boolean;
939
              remainingSeats?: number;
940
              selectedByDefault?: boolean;
941
              userCount?: number;
942
              userCountDescription?: string;
943
            }[];
944
            "max-results"?: number;
945
            pagingCallback?: {};
946
            size?: number;
947
          };
948
          avatarUrls?: {
949
            "16x16"?: string;
950
            "24x24"?: string;
951
            "32x32"?: string;
952
            "48x48"?: string;
953
          };
954
          displayName?: string;
955
          emailAddress?: string;
956
          expand?: string;
957
          groups?: {
958
            callback?: {};
959
            items?: { groupId?: string; name?: string; self?: string }[];
960
            "max-results"?: number;
961
            pagingCallback?: {};
962
            size?: number;
963
          };
964
          key?: string;
965
          locale?: string;
966
          name?: string;
967
          self?: string;
968
          timeZone?: string;
969
        };
970
        deletedDate?: string;
971
        description?: string;
972
        email?: string;
973
        expand?: string;
974
        favourite?: boolean;
975
        id?: string;
976
        insight?: { lastIssueUpdateTime?: string; totalIssueCount?: number };
977
        isPrivate?: boolean;
978
        issueTypeHierarchy?: {
979
          baseLevelId?: number;
980
          levels?: {
981
            aboveLevelId?: number;
982
            belowLevelId?: number;
983
            externalUuid?: string;
984
            hierarchyLevelNumber?: number;
985
            id?: number;
986
            issueTypeIds?: number[];
987
            level?: number;
988
            name?: string;
989
            projectConfigurationId?: number;
990
          }[];
991
        };
992
        issueTypes?: {
993
          avatarId?: number;
994
          description?: string;
995
          entityId?: string;
996
          hierarchyLevel?: number;
997
          iconUrl?: string;
998
          id?: string;
999
          name?: string;
1000
          scope?: {
1001
            project?: {
1002
              avatarUrls?: {
1003
                "16x16"?: string;
1004
                "24x24"?: string;
1005
                "32x32"?: string;
1006
                "48x48"?: string;
1007
              };
1008
              id?: string;
1009
              key?: string;
1010
              name?: string;
1011
              projectCategory?: {
1012
                description?: string;
1013
                id?: string;
1014
                name?: string;
1015
                self?: string;
1016
              };
1017
              projectTypeKey?: "software" | "service_desk" | "business";
1018
              self?: string;
1019
              simplified?: boolean;
1020
            };
1021
            type?: "PROJECT" | "TEMPLATE";
1022
            [k: string]: unknown;
1023
          };
1024
          self?: string;
1025
          subtask?: boolean;
1026
        }[];
1027
        key?: string;
1028
        landingPageInfo?: {
1029
          attributes?: { [k: string]: string };
1030
          boardId?: number;
1031
          boardName?: string;
1032
          projectKey?: string;
1033
          projectType?: string;
1034
          queueCategory?: string;
1035
          queueId?: number;
1036
          queueName?: string;
1037
          simpleBoard?: boolean;
1038
          simplified?: boolean;
1039
          url?: string;
1040
        };
1041
        lead?: {
1042
          accountId?: string;
1043
          accountType?: "atlassian" | "app" | "customer" | "unknown";
1044
          active?: boolean;
1045
          applicationRoles?: {
1046
            callback?: {};
1047
            items?: {
1048
              defaultGroups?: string[];
1049
              defaultGroupsDetails?: {
1050
                groupId?: string;
1051
                name?: string;
1052
                self?: string;
1053
              }[];
1054
              defined?: boolean;
1055
              groupDetails?: {
1056
                groupId?: string;
1057
                name?: string;
1058
                self?: string;
1059
              }[];
1060
              groups?: string[];
1061
              hasUnlimitedSeats?: boolean;
1062
              key?: string;
1063
              name?: string;
1064
              numberOfSeats?: number;
1065
              platform?: boolean;
1066
              remainingSeats?: number;
1067
              selectedByDefault?: boolean;
1068
              userCount?: number;
1069
              userCountDescription?: string;
1070
            }[];
1071
            "max-results"?: number;
1072
            pagingCallback?: {};
1073
            size?: number;
1074
          };
1075
          avatarUrls?: {
1076
            "16x16"?: string;
1077
            "24x24"?: string;
1078
            "32x32"?: string;
1079
            "48x48"?: string;
1080
          };
1081
          displayName?: string;
1082
          emailAddress?: string;
1083
          expand?: string;
1084
          groups?: {
1085
            callback?: {};
1086
            items?: { groupId?: string; name?: string; self?: string }[];
1087
            "max-results"?: number;
1088
            pagingCallback?: {};
1089
            size?: number;
1090
          };
1091
          key?: string;
1092
          locale?: string;
1093
          name?: string;
1094
          self?: string;
1095
          timeZone?: string;
1096
        };
1097
        name?: string;
1098
        permissions?: { canEdit?: boolean };
1099
        projectCategory?: {
1100
          description?: string;
1101
          id?: string;
1102
          name?: string;
1103
          self?: string;
1104
        };
1105
        projectTypeKey?: "software" | "service_desk" | "business";
1106
        properties?: { [k: string]: { [k: string]: unknown } };
1107
        retentionTillDate?: string;
1108
        roles?: { [k: string]: string };
1109
        self?: string;
1110
        simplified?: boolean;
1111
        style?: "classic" | "next-gen";
1112
        url?: string;
1113
        uuid?: string;
1114
        versions?: {
1115
          approvers?: {
1116
            accountId?: string;
1117
            declineReason?: string;
1118
            description?: string;
1119
            status?: string;
1120
            [k: string]: unknown;
1121
          }[];
1122
          archived?: boolean;
1123
          description?: string;
1124
          driver?: string;
1125
          expand?: string;
1126
          id?: string;
1127
          issuesStatusForFixVersion?: {
1128
            done?: number;
1129
            inProgress?: number;
1130
            toDo?: number;
1131
            unmapped?: number;
1132
            [k: string]: unknown;
1133
          };
1134
          moveUnfixedIssuesTo?: string;
1135
          name?: string;
1136
          operations?: {
1137
            href?: string;
1138
            iconClass?: string;
1139
            id?: string;
1140
            label?: string;
1141
            styleClass?: string;
1142
            title?: string;
1143
            weight?: number;
1144
          }[];
1145
          overdue?: boolean;
1146
          project?: string;
1147
          projectId?: number;
1148
          releaseDate?: string;
1149
          released?: boolean;
1150
          self?: string;
1151
          startDate?: string;
1152
          userReleaseDate?: string;
1153
          userStartDate?: string;
1154
        }[];
1155
      };
1156
      role?: {
1157
        actors?: {
1158
          actorGroup?: {
1159
            displayName?: string;
1160
            groupId?: string;
1161
            name?: string;
1162
          };
1163
          actorUser?: { accountId?: string };
1164
          avatarUrl?: string;
1165
          displayName?: string;
1166
          id?: number;
1167
          name?: string;
1168
          type?: "atlassian-group-role-actor" | "atlassian-user-role-actor";
1169
        }[];
1170
        admin?: boolean;
1171
        currentUserRole?: boolean;
1172
        default?: boolean;
1173
        description?: string;
1174
        id?: number;
1175
        name?: string;
1176
        roleConfigurable?: boolean;
1177
        scope?: {
1178
          project?: {
1179
            avatarUrls?: {
1180
              "16x16"?: string;
1181
              "24x24"?: string;
1182
              "32x32"?: string;
1183
              "48x48"?: string;
1184
            };
1185
            id?: string;
1186
            key?: string;
1187
            name?: string;
1188
            projectCategory?: {
1189
              description?: string;
1190
              id?: string;
1191
              name?: string;
1192
              self?: string;
1193
            };
1194
            projectTypeKey?: "software" | "service_desk" | "business";
1195
            self?: string;
1196
            simplified?: boolean;
1197
          };
1198
          type?: "PROJECT" | "TEMPLATE";
1199
          [k: string]: unknown;
1200
        };
1201
        self?: string;
1202
        translatedName?: string;
1203
      };
1204
      type:
1205
        | "user"
1206
        | "group"
1207
        | "project"
1208
        | "projectRole"
1209
        | "global"
1210
        | "loggedin"
1211
        | "authenticated"
1212
        | "project-unknown";
1213
      user?: {
1214
        accountId?: string;
1215
        active?: boolean;
1216
        avatarUrls?: {
1217
          "16x16"?: string;
1218
          "24x24"?: string;
1219
          "32x32"?: string;
1220
          "48x48"?: string;
1221
        };
1222
        displayName?: string;
1223
        key?: string;
1224
        name?: string;
1225
        self?: string;
1226
      };
1227
    }[];
1228
    sharedUsers?: {
1229
      "end-index"?: number;
1230
      items?: {
1231
        accountId?: string;
1232
        accountType?: "atlassian" | "app" | "customer" | "unknown";
1233
        active?: boolean;
1234
        applicationRoles?: {
1235
          callback?: {};
1236
          items?: {
1237
            defaultGroups?: string[];
1238
            defaultGroupsDetails?: {
1239
              groupId?: string;
1240
              name?: string;
1241
              self?: string;
1242
            }[];
1243
            defined?: boolean;
1244
            groupDetails?: { groupId?: string; name?: string; self?: string }[];
1245
            groups?: string[];
1246
            hasUnlimitedSeats?: boolean;
1247
            key?: string;
1248
            name?: string;
1249
            numberOfSeats?: number;
1250
            platform?: boolean;
1251
            remainingSeats?: number;
1252
            selectedByDefault?: boolean;
1253
            userCount?: number;
1254
            userCountDescription?: string;
1255
          }[];
1256
          "max-results"?: number;
1257
          pagingCallback?: {};
1258
          size?: number;
1259
        };
1260
        avatarUrls?: {
1261
          "16x16"?: string;
1262
          "24x24"?: string;
1263
          "32x32"?: string;
1264
          "48x48"?: string;
1265
        };
1266
        displayName?: string;
1267
        emailAddress?: string;
1268
        expand?: string;
1269
        groups?: {
1270
          callback?: {};
1271
          items?: { groupId?: string; name?: string; self?: string }[];
1272
          "max-results"?: number;
1273
          pagingCallback?: {};
1274
          size?: number;
1275
        };
1276
        key?: string;
1277
        locale?: string;
1278
        name?: string;
1279
        self?: string;
1280
        timeZone?: string;
1281
      }[];
1282
      "max-results"?: number;
1283
      size?: number;
1284
      "start-index"?: number;
1285
    };
1286
    subscriptions?: {
1287
      "end-index"?: number;
1288
      items?: {
1289
        group?: { groupId?: string; name?: string; self?: string };
1290
        id?: number;
1291
        user?: {
1292
          accountId?: string;
1293
          accountType?: "atlassian" | "app" | "customer" | "unknown";
1294
          active?: boolean;
1295
          applicationRoles?: {
1296
            callback?: {};
1297
            items?: {
1298
              defaultGroups?: string[];
1299
              defaultGroupsDetails?: {
1300
                groupId?: string;
1301
                name?: string;
1302
                self?: string;
1303
              }[];
1304
              defined?: boolean;
1305
              groupDetails?: {
1306
                groupId?: string;
1307
                name?: string;
1308
                self?: string;
1309
              }[];
1310
              groups?: string[];
1311
              hasUnlimitedSeats?: boolean;
1312
              key?: string;
1313
              name?: string;
1314
              numberOfSeats?: number;
1315
              platform?: boolean;
1316
              remainingSeats?: number;
1317
              selectedByDefault?: boolean;
1318
              userCount?: number;
1319
              userCountDescription?: string;
1320
            }[];
1321
            "max-results"?: number;
1322
            pagingCallback?: {};
1323
            size?: number;
1324
          };
1325
          avatarUrls?: {
1326
            "16x16"?: string;
1327
            "24x24"?: string;
1328
            "32x32"?: string;
1329
            "48x48"?: string;
1330
          };
1331
          displayName?: string;
1332
          emailAddress?: string;
1333
          expand?: string;
1334
          groups?: {
1335
            callback?: {};
1336
            items?: { groupId?: string; name?: string; self?: string }[];
1337
            "max-results"?: number;
1338
            pagingCallback?: {};
1339
            size?: number;
1340
          };
1341
          key?: string;
1342
          locale?: string;
1343
          name?: string;
1344
          self?: string;
1345
          timeZone?: string;
1346
        };
1347
      }[];
1348
      "max-results"?: number;
1349
      size?: number;
1350
      "start-index"?: number;
1351
    };
1352
    viewUrl?: string;
1353
  }
1354
) {
1355
  const url = new URL(`https://${auth.domain}.atlassian.net/rest/api/2/filter`);
1356
  for (const [k, v] of [
1357
    ["expand", expand],
1358
    ["overrideSharePermissions", overrideSharePermissions],
1359
  ]) {
1360
    if (v !== undefined && v !== "") {
1361
      url.searchParams.append(k, v);
1362
    }
1363
  }
1364
  const response = await fetch(url, {
1365
    method: "POST",
1366
    headers: {
1367
      "Content-Type": "application/json",
1368
      Authorization: "Basic " + btoa(`${auth.username}:${auth.password}`),
1369
    },
1370
    body: JSON.stringify(body),
1371
  });
1372
  if (!response.ok) {
1373
    const text = await response.text();
1374
    throw new Error(`${response.status} ${text}`);
1375
  }
1376
  return await response.json();
1377
}
1378