initiative-plugin-sdk 8.0.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Generated by scripts/generate-plugin-api.mjs from schemas/plugin-api.json, the plug-in API
3
- * taken from Initiative 0.75.3 (commit c086f914f). Do not edit: regenerate.
3
+ * taken from Initiative 0.77.1 (commit 1a62d88cd). Do not edit: regenerate.
4
4
  */
5
5
  import type { Scope } from "./contract.js";
6
6
  /**
@@ -31,7 +31,7 @@ export interface PluginApiSchemas {
31
31
  /**
32
32
  * Things that can be archived.
33
33
  */
34
- ArchivableType: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "gallery" | "wiki" | "task" | "initiative";
34
+ ArchivableType: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "task" | "initiative" | "collection";
35
35
  /**
36
36
  * What archiving or unarchiving answers with.
37
37
  */
@@ -40,13 +40,15 @@ export interface PluginApiSchemas {
40
40
  entity_id: number;
41
41
  archived_at?: string | null;
42
42
  };
43
- Body_upload_gallery_image: {
44
- file: string;
45
- title?: string | null;
46
- caption?: string | null;
43
+ Body_upload_file: {
44
+ name: string;
45
+ initiative_id: number;
46
+ file?: string | null;
47
+ upload_id?: string | null;
47
48
  };
48
- Body_upload_gallery_image_version: {
49
- file: string;
49
+ Body_upload_file_version: {
50
+ file?: string | null;
51
+ upload_id?: string | null;
50
52
  };
51
53
  CalendarCreate: {
52
54
  properties?: PluginApiSchemas["PropertyValueInput"][];
@@ -209,6 +211,178 @@ export interface PluginApiSchemas {
209
211
  completed: number;
210
212
  total: number;
211
213
  };
214
+ /**
215
+ * What the caller may do to a collection (`resource_access.may_change`).
216
+ */
217
+ CollectionCan: {
218
+ edit: boolean;
219
+ unarchive: boolean;
220
+ };
221
+ /**
222
+ * The file a card shows for a collection.
223
+ */
224
+ CollectionCover: {
225
+ file_id: number;
226
+ name: string;
227
+ file_type: PluginApiSchemas["FileType"];
228
+ /**
229
+ * A stored file comes as an empty string, without its path. A URL from
230
+ * elsewhere comes as it is.
231
+ */
232
+ file_url: string | null;
233
+ file_content_type: string | null;
234
+ /**
235
+ * A stored file comes as an empty string, without its path. A URL from
236
+ * elsewhere comes as it is.
237
+ */
238
+ thumbnail_url: string | null;
239
+ width: number | null;
240
+ height: number | null;
241
+ };
242
+ /**
243
+ * A new collection, made with the files it starts with: a collection is never
244
+ * empty. It starts blank (its grid and table, and no fields of its own), as a
245
+ * ready-made `shape`, or with the fields and lists of another collection in
246
+ * the initiative (`shape_from`), none of its values.
247
+ */
248
+ CollectionCreate: {
249
+ properties?: PluginApiSchemas["PropertyValueInput"][];
250
+ file_ids: number[];
251
+ initiative_id: number;
252
+ name: string;
253
+ description?: string | null;
254
+ tag_ids?: number[] | null;
255
+ shape?: PluginApiSchemas["CollectionShapeKey"] | null;
256
+ shape_from?: number | null;
257
+ };
258
+ CollectionFileListResponse: {
259
+ total_count: number;
260
+ page: number;
261
+ page_size: number;
262
+ has_next: boolean;
263
+ has_prev: boolean;
264
+ items: PluginApiSchemas["CollectionFileSummary"][];
265
+ };
266
+ /**
267
+ * A file as its collection lists it: with when it was added there, and its
268
+ * values of the collection's own fields.
269
+ */
270
+ CollectionFileSummary: {
271
+ archived_at: string | null;
272
+ can: PluginApiSchemas["ToolCan"];
273
+ id: number;
274
+ initiative_id: number;
275
+ community_id: string;
276
+ created_by: string | null;
277
+ created_at: string;
278
+ updated_at: string;
279
+ comments_enabled: boolean;
280
+ tags: PluginApiSchemas["TagSummary"][];
281
+ properties: PluginApiSchemas["PropertySummary"][];
282
+ grants: PluginApiSchemas["ResourceGrantSchema"][];
283
+ name: string;
284
+ /**
285
+ * A stored file comes as an empty string, without its path. A URL from
286
+ * elsewhere comes as it is.
287
+ */
288
+ featured_image_url: string | null;
289
+ is_template: boolean;
290
+ initiative: PluginApiSchemas["InitiativeSummary"] | null;
291
+ owner: PluginApiSchemas["PluginPerson"] | null;
292
+ owner_plugin: PluginApiSchemas["OwnerPluginSummary"] | null;
293
+ comment_count: number;
294
+ file_type: PluginApiSchemas["FileType"];
295
+ /**
296
+ * A stored file comes as an empty string, without its path. A URL from
297
+ * elsewhere comes as it is.
298
+ */
299
+ file_url: string | null;
300
+ file_content_type: string | null;
301
+ file_size: number | null;
302
+ original_filename: string | null;
303
+ /**
304
+ * A stored file comes as an empty string, without its path. A URL from
305
+ * elsewhere comes as it is.
306
+ */
307
+ thumbnail_url: string | null;
308
+ width: number | null;
309
+ height: number | null;
310
+ smart_link_url: string | null;
311
+ added_at: string;
312
+ fields: PluginApiSchemas["PropertySummary"][];
313
+ /**
314
+ * How the file is shown, which follows from its type.
315
+ */
316
+ kind: PluginApiSchemas["FileKind"];
317
+ };
318
+ /**
319
+ * Files to put in a collection or take out of it.
320
+ */
321
+ CollectionFiles: {
322
+ file_ids: number[];
323
+ };
324
+ CollectionListResponse: {
325
+ items: PluginApiSchemas["CollectionRead"][];
326
+ };
327
+ /**
328
+ * A collection as its reader sees it: only the files they can open are
329
+ * counted, and the cover is one of those.
330
+ */
331
+ CollectionRead: {
332
+ id: number;
333
+ initiative_id: number;
334
+ community_id: string;
335
+ name: string;
336
+ description: string | null;
337
+ cover_file_id: number | null;
338
+ cover: PluginApiSchemas["CollectionCover"] | null;
339
+ file_count: number;
340
+ hidden_files: PluginApiSchemas["HiddenFiles"];
341
+ created_by: string | null;
342
+ created_at: string;
343
+ updated_at: string;
344
+ archived_at: string | null;
345
+ comments_enabled: boolean;
346
+ comments_locked_at: string | null;
347
+ comment_count: number;
348
+ tags: PluginApiSchemas["TagSummary"][];
349
+ properties: PluginApiSchemas["PropertySummary"][];
350
+ fields: PluginApiSchemas["PropertyDefinitionRead"][];
351
+ can: PluginApiSchemas["CollectionCan"];
352
+ };
353
+ CollectionShapeEntry: {
354
+ key: PluginApiSchemas["CollectionShapeKey"];
355
+ name: string;
356
+ hint: string;
357
+ lists: Array<"table" | "board" | "gantt" | "calendar" | "masonry" | "grid" | "timeline">;
358
+ fields: PluginApiSchemas["CollectionShapeField"][];
359
+ };
360
+ /**
361
+ * A field a ready-made shape brings, in the reader's language.
362
+ */
363
+ CollectionShapeField: {
364
+ name: string;
365
+ type: PluginApiSchemas["PropertyType"];
366
+ display: "number" | "stars" | "bar" | null;
367
+ currency: PluginApiSchemas["CurrencyCode"] | null;
368
+ };
369
+ CollectionShapeGroup: {
370
+ key: string;
371
+ name: string;
372
+ entries: PluginApiSchemas["CollectionShapeEntry"][];
373
+ };
374
+ /**
375
+ * A ready-made shape a collection can start as.
376
+ */
377
+ CollectionShapeKey: "gallery" | "catalog" | "log";
378
+ CollectionUpdate: {
379
+ properties?: PluginApiSchemas["PropertyValueInput"][] | null;
380
+ name?: string | null;
381
+ description?: string | null;
382
+ cover_file_id?: number | null;
383
+ tag_ids?: number[] | null;
384
+ comments_enabled?: boolean | null;
385
+ };
212
386
  /**
213
387
  * One limited column of a project's board: its limit, and how many open tasks
214
388
  * it holds.
@@ -233,6 +407,7 @@ export interface PluginApiSchemas {
233
407
  content: string;
234
408
  task_id?: number | null;
235
409
  wiki_page_id?: number | null;
410
+ collection_id?: number | null;
236
411
  project_id?: number | null;
237
412
  file_id?: number | null;
238
413
  queue_id?: number | null;
@@ -240,7 +415,6 @@ export interface PluginApiSchemas {
240
415
  calendar_id?: number | null;
241
416
  dashboard_id?: number | null;
242
417
  post_id?: number | null;
243
- gallery_id?: number | null;
244
418
  wiki_id?: number | null;
245
419
  parent_comment_id?: number | null;
246
420
  audience?: PluginApiSchemas["CommentAudience"];
@@ -269,6 +443,7 @@ export interface PluginApiSchemas {
269
443
  content: string;
270
444
  task_id: number | null;
271
445
  wiki_page_id: number | null;
446
+ collection_id: number | null;
272
447
  project_id: number | null;
273
448
  file_id: number | null;
274
449
  queue_id: number | null;
@@ -276,7 +451,6 @@ export interface PluginApiSchemas {
276
451
  calendar_id: number | null;
277
452
  dashboard_id: number | null;
278
453
  post_id: number | null;
279
- gallery_id: number | null;
280
454
  wiki_id: number | null;
281
455
  id: number;
282
456
  created_by: string | null;
@@ -435,6 +609,15 @@ export interface PluginApiSchemas {
435
609
  position?: number | string | null;
436
610
  };
437
611
  CounterViewMode: "number" | "progress_bar" | "segmented_clock";
612
+ /**
613
+ * The ISO 4217 code a money property's amounts are in.
614
+ */
615
+ CurrencyCode: "AED" | "AFN" | "ALL" | "AMD" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLE" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "UYU" | "UZS" | "VED" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XCD" | "XCG" | "XOF" | "XPF" | "YER" | "ZAR" | "ZMW" | "ZWG";
616
+ /**
617
+ * What a date is grouped by: the calendar's day, week, month, quarter or year
618
+ * it falls in. A week starts on Monday, as Postgres counts one.
619
+ */
620
+ DateBucket: "day" | "week" | "month" | "quarter" | "year";
438
621
  FileCreate: {
439
622
  properties?: PluginApiSchemas["PropertyValueInput"][];
440
623
  name: string;
@@ -442,9 +625,10 @@ export interface PluginApiSchemas {
442
625
  featured_image_url?: string | null;
443
626
  is_template?: boolean;
444
627
  content?: Record<string, unknown> | null;
445
- file_type?: "native" | "whiteboard" | "smart_link" | "spreadsheet";
628
+ file_type?: "lexical" | "excalidraw" | "url" | "sheet";
446
629
  grants?: PluginApiSchemas["ResourceGrantSchema"][];
447
630
  };
631
+ FileKind: "document" | "spreadsheet" | "presentation" | "whiteboard" | "pdf" | "image" | "video" | "audio" | "text" | "compressed" | "design" | "3d" | "font" | "raw" | "code" | "ebook" | "cad" | "link" | "other";
448
632
  FileListResponse: {
449
633
  total_count: number;
450
634
  page: number;
@@ -486,6 +670,13 @@ export interface PluginApiSchemas {
486
670
  file_content_type: string | null;
487
671
  file_size: number | null;
488
672
  original_filename: string | null;
673
+ /**
674
+ * A stored file comes as an empty string, without its path. A URL from
675
+ * elsewhere comes as it is.
676
+ */
677
+ thumbnail_url: string | null;
678
+ width: number | null;
679
+ height: number | null;
489
680
  smart_link_url: string | null;
490
681
  /**
491
682
  * A Lexical editor state. A person is mentioned by a node whose
@@ -495,7 +686,17 @@ export interface PluginApiSchemas {
495
686
  * `src` and a link's `url` are empty.
496
687
  */
497
688
  content: Record<string, unknown>;
689
+ collection_ids: number[];
498
690
  content_version: string | null;
691
+ /**
692
+ * How the file is shown, which follows from its type.
693
+ */
694
+ kind: PluginApiSchemas["FileKind"];
695
+ /**
696
+ * The editor's own type this uploaded file becomes when somebody converts
697
+ * it to edit it (`POST /files/{id}/convert`), or `None`.
698
+ */
699
+ converts_to: PluginApiSchemas["FileType"] | null;
499
700
  };
500
701
  FileSummary: {
501
702
  archived_at: string | null;
@@ -530,12 +731,20 @@ export interface PluginApiSchemas {
530
731
  file_content_type: string | null;
531
732
  file_size: number | null;
532
733
  original_filename: string | null;
734
+ /**
735
+ * A stored file comes as an empty string, without its path. A URL from
736
+ * elsewhere comes as it is.
737
+ */
738
+ thumbnail_url: string | null;
739
+ width: number | null;
740
+ height: number | null;
533
741
  smart_link_url: string | null;
742
+ /**
743
+ * How the file is shown, which follows from its type.
744
+ */
745
+ kind: PluginApiSchemas["FileKind"];
534
746
  };
535
- /**
536
- * Discriminator for file type.
537
- */
538
- FileType: "native" | "file" | "whiteboard" | "smart_link" | "spreadsheet";
747
+ FileType: "lexical" | "excalidraw" | "sheet" | "url" | "pdf" | "doc" | "docx" | "odt" | "rtf" | "md" | "xls" | "xlsx" | "ods" | "csv" | "tsv" | "ppt" | "pptx" | "odp" | "png" | "jpeg" | "gif" | "webp" | "svg" | "heic" | "tiff" | "mp4" | "webm" | "mov" | "mp3" | "m4a" | "wav" | "ogg" | "flac" | "txt" | "json" | "html" | "zip" | "tar" | "gz" | "7z" | "rar" | "ai" | "psd" | "eps" | "indd" | "xcf" | "kra" | "procreate" | "clip" | "sketch" | "fig" | "afdesign" | "afphoto" | "afpub" | "cdr" | "blend" | "fbx" | "obj" | "stl" | "glb" | "gltf" | "3mf" | "usdz" | "ttf" | "otf" | "woff" | "woff2" | "dng" | "cr2" | "cr3" | "nef" | "arw" | "raf" | "orf" | "py" | "js" | "ts" | "css" | "sql" | "yaml" | "xml" | "toml" | "c" | "cpp" | "cs" | "java" | "go" | "rs" | "rb" | "php" | "swift" | "kt" | "epub" | "mobi" | "dwg" | "dxf" | "step" | "other";
539
748
  FileUpdate: {
540
749
  name?: string | null;
541
750
  content?: Record<string, unknown> | null;
@@ -543,6 +752,20 @@ export interface PluginApiSchemas {
543
752
  featured_image_url?: string | null;
544
753
  is_template?: boolean | null;
545
754
  };
755
+ /**
756
+ * A single stored version of an uploaded file. The binary is fetched via the
757
+ * version download endpoint by id — `file_url` is intentionally not exposed.
758
+ */
759
+ FileVersionRead: {
760
+ id: number;
761
+ version_number: number;
762
+ file_content_type: string | null;
763
+ file_size: number | null;
764
+ original_filename: string | null;
765
+ created_by: number | null;
766
+ created_at: string;
767
+ is_current: boolean;
768
+ };
546
769
  /**
547
770
  * A single field comparison.
548
771
  */
@@ -565,173 +788,42 @@ export interface PluginApiSchemas {
565
788
  */
566
789
  FilterOp: "eq" | "lt" | "lte" | "gt" | "gte" | "in_" | "ilike" | "is_null";
567
790
  /**
568
- * What a list draws for a gallery: one picture, at whichever size it has.
791
+ * One group of a grouped list.
569
792
  */
570
- GalleryCover: {
571
- image_id: number;
572
- /**
573
- * A stored file comes as an empty string, without its path. A URL from
574
- * elsewhere comes as it is.
575
- */
576
- file_url: string;
577
- /**
578
- * A stored file comes as an empty string, without its path. A URL from
579
- * elsewhere comes as it is.
580
- */
581
- thumbnail_url: string | null;
582
- width: number | null;
583
- height: number | null;
584
- };
585
- GalleryCreate: {
586
- properties?: PluginApiSchemas["PropertyValueInput"][];
587
- name: string;
588
- description?: string | null;
589
- initiative_id: number;
590
- tag_ids?: number[] | null;
591
- grants?: PluginApiSchemas["ResourceGrantSchema"][];
592
- };
593
- GalleryImageListResponse: {
594
- total_count: number;
595
- page: number;
596
- page_size: number;
597
- has_next: boolean;
598
- has_prev: boolean;
599
- items: PluginApiSchemas["GalleryImageRead"][];
793
+ GroupRead: {
794
+ key: string;
795
+ label?: string | null;
600
796
  };
601
- GalleryImageRead: {
602
- id: number;
603
- gallery_id: number;
604
- community_id: string;
605
- title: string | null;
606
- caption: string | null;
607
- /**
608
- * A stored file comes as an empty string, without its path. A URL from
609
- * elsewhere comes as it is.
610
- */
611
- file_url: string;
612
- /**
613
- * A stored file comes as an empty string, without its path. A URL from
614
- * elsewhere comes as it is.
615
- */
616
- thumbnail_url: string | null;
617
- file_content_type: string | null;
618
- file_size: number | null;
619
- original_filename: string | null;
620
- width: number | null;
621
- height: number | null;
622
- created_by: string | null;
623
- uploader: PluginApiSchemas["PluginPerson"] | null;
624
- created_at: string;
625
- updated_at: string;
626
- version_count: number;
627
- tags: PluginApiSchemas["TagSummary"][];
628
- properties: PluginApiSchemas["PropertySummary"][];
629
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
797
+ /**
798
+ * A list's groups by one field, and the groups each row is in.
799
+ */
800
+ GroupsResponse: {
801
+ groups: PluginApiSchemas["GroupRead"][];
802
+ rows: Record<string, string[]>;
630
803
  };
631
- GalleryImageUpdate: {
632
- properties?: PluginApiSchemas["PropertyValueInput"][] | null;
633
- title?: string | null;
634
- caption?: string | null;
635
- tag_ids?: number[] | null;
636
- caption_base?: string | null;
804
+ HTTPValidationError: {
805
+ detail?: PluginApiSchemas["ValidationError"][];
637
806
  };
638
807
  /**
639
- * One stored rendition of a picture.
808
+ * The files of a collection or a wiki the reader knows are there and can't
809
+ * open, and how many of those they have asked for.
640
810
  */
641
- GalleryImageVersionRead: {
642
- id: number;
643
- version_number: number;
644
- /**
645
- * A stored file comes as an empty string, without its path. A URL from
646
- * elsewhere comes as it is.
647
- */
648
- file_url: string;
649
- /**
650
- * A stored file comes as an empty string, without its path. A URL from
651
- * elsewhere comes as it is.
652
- */
653
- thumbnail_url: string | null;
654
- file_content_type: string | null;
655
- file_size: number | null;
656
- original_filename: string | null;
657
- width: number | null;
658
- height: number | null;
659
- created_by: string | null;
660
- created_at: string;
661
- is_current: boolean;
811
+ HiddenFiles: {
812
+ count?: number;
813
+ requested?: number;
662
814
  };
663
- GalleryListResponse: {
664
- total_count: number;
665
- page: number;
666
- page_size: number;
667
- has_next: boolean;
668
- has_prev: boolean;
669
- items: PluginApiSchemas["GallerySummary"][];
815
+ /**
816
+ * What the caller may do in an initiative (:func:`initiative_can`).
817
+ */
818
+ InitiativeCan: {
819
+ manage: boolean;
820
+ moderate: boolean;
821
+ roster: boolean;
822
+ view: PluginApiSchemas["Tool"][];
823
+ create: PluginApiSchemas["Tool"][];
670
824
  };
671
825
  /**
672
- * A gallery on its own page. The same shape as its summary: the pictures are
673
- * paged separately, because a gallery is browsed rather than read.
674
- */
675
- GalleryRead: {
676
- archived_at: string | null;
677
- can: PluginApiSchemas["ToolCan"];
678
- id: number;
679
- initiative_id: number;
680
- community_id: string;
681
- created_by: string | null;
682
- created_at: string;
683
- updated_at: string;
684
- comments_enabled: boolean;
685
- tags: PluginApiSchemas["TagSummary"][];
686
- properties: PluginApiSchemas["PropertySummary"][];
687
- grants: PluginApiSchemas["ResourceGrantSchema"][];
688
- name: string;
689
- description: string | null;
690
- cover_image_id: number | null;
691
- cover: PluginApiSchemas["GalleryCover"] | null;
692
- preview: PluginApiSchemas["GalleryCover"][];
693
- comment_count: number;
694
- };
695
- GallerySummary: {
696
- archived_at: string | null;
697
- can: PluginApiSchemas["ToolCan"];
698
- id: number;
699
- initiative_id: number;
700
- community_id: string;
701
- created_by: string | null;
702
- created_at: string;
703
- updated_at: string;
704
- comments_enabled: boolean;
705
- tags: PluginApiSchemas["TagSummary"][];
706
- properties: PluginApiSchemas["PropertySummary"][];
707
- grants: PluginApiSchemas["ResourceGrantSchema"][];
708
- name: string;
709
- description: string | null;
710
- cover_image_id: number | null;
711
- cover: PluginApiSchemas["GalleryCover"] | null;
712
- preview: PluginApiSchemas["GalleryCover"][];
713
- comment_count: number;
714
- };
715
- GalleryUpdate: {
716
- name?: string | null;
717
- description?: string | null;
718
- cover_image_id?: number | null;
719
- };
720
- HTTPValidationError: {
721
- detail?: PluginApiSchemas["ValidationError"][];
722
- };
723
- /**
724
- * What the caller may do in an initiative (:func:`initiative_can`).
725
- */
726
- InitiativeCan: {
727
- manage: boolean;
728
- moderate: boolean;
729
- roster: boolean;
730
- view: PluginApiSchemas["Tool"][];
731
- create: PluginApiSchemas["Tool"][];
732
- };
733
- /**
734
- * How a guild member may come to hold a membership row in an initiative.
826
+ * How a guild member may come to hold a membership row in an initiative.
735
827
  */
736
828
  InitiativeJoinPolicy: "private" | "request" | "open";
737
829
  /**
@@ -751,7 +843,6 @@ export interface PluginApiSchemas {
751
843
  calendars_enabled: boolean;
752
844
  dashboards_enabled: boolean;
753
845
  posts_enabled: boolean;
754
- galleries_enabled: boolean;
755
846
  wikis_enabled: boolean;
756
847
  name: string;
757
848
  description: string | null;
@@ -816,7 +907,8 @@ export interface PluginApiSchemas {
816
907
  };
817
908
  /**
818
909
  * One value an installed plug-in shows on an item: a key its pinned version
819
- * declares as a field there.
910
+ * declares as a field there. A list field's value is an array of its
911
+ * elements, newest first, each with its `ref`.
820
912
  */
821
913
  PluginValueSummary: {
822
914
  plugin_id: number;
@@ -1001,6 +1093,7 @@ export interface PluginApiSchemas {
1001
1093
  initiative: PluginApiSchemas["InitiativeSummary"] | null;
1002
1094
  task_summary: PluginApiSchemas["ProjectTaskSummary"];
1003
1095
  task_statuses: PluginApiSchemas["TaskStatusRead"][];
1096
+ task_types: PluginApiSchemas["TaskTypeRead"][];
1004
1097
  };
1005
1098
  ProjectTaskSummary: {
1006
1099
  total: number;
@@ -1021,7 +1114,9 @@ export interface PluginApiSchemas {
1021
1114
  position?: number;
1022
1115
  color?: string | null;
1023
1116
  options?: PluginApiSchemas["PropertyOption"][] | null;
1117
+ currency?: PluginApiSchemas["CurrencyCode"] | null;
1024
1118
  initiative_id: number;
1119
+ collection_id?: number | null;
1025
1120
  };
1026
1121
  PropertyDefinitionRead: {
1027
1122
  name: string;
@@ -1029,8 +1124,10 @@ export interface PluginApiSchemas {
1029
1124
  position: number;
1030
1125
  color: string | null;
1031
1126
  options: PluginApiSchemas["PropertyOption"][] | null;
1127
+ currency: PluginApiSchemas["CurrencyCode"] | null;
1032
1128
  id: number;
1033
1129
  initiative_id: number;
1130
+ collection_id: number | null;
1034
1131
  created_at: string;
1035
1132
  updated_at: string;
1036
1133
  };
@@ -1042,6 +1139,7 @@ export interface PluginApiSchemas {
1042
1139
  position?: number | null;
1043
1140
  color?: string | null;
1044
1141
  options?: PluginApiSchemas["PropertyOption"][] | null;
1142
+ currency?: PluginApiSchemas["CurrencyCode"] | null;
1045
1143
  };
1046
1144
  /**
1047
1145
  * Envelope for PATCH /property-definitions/{id}.
@@ -1076,6 +1174,7 @@ export interface PluginApiSchemas {
1076
1174
  name: string;
1077
1175
  type: PluginApiSchemas["PropertyType"];
1078
1176
  options: PluginApiSchemas["PropertyOption"][] | null;
1177
+ currency: PluginApiSchemas["CurrencyCode"] | null;
1079
1178
  /**
1080
1179
  * Shaped by the property's type. For user_reference, a person: id,
1081
1180
  * username, discriminator, display_name and avatar_url, or an PluginPerson
@@ -1086,11 +1185,11 @@ export interface PluginApiSchemas {
1086
1185
  /**
1087
1186
  * What can carry custom property values: every tool and sub-tool.
1088
1187
  */
1089
- PropertyTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "gallery" | "wiki" | "task" | "queue_item" | "calendar_event" | "counter" | "gallery_image" | "wiki_page";
1188
+ PropertyTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "task" | "queue_item" | "calendar_event" | "counter" | "wiki_page" | "collection";
1090
1189
  /**
1091
1190
  * Supported value types for a property definition.
1092
1191
  */
1093
- PropertyType: "text" | "number" | "checkbox" | "date" | "datetime" | "url" | "select" | "multi_select" | "user_reference";
1192
+ PropertyType: "text" | "number" | "checkbox" | "date" | "datetime" | "url" | "select" | "multi_select" | "user_reference" | "currency" | "rating";
1094
1193
  /**
1095
1194
  * A single (property_id, value) pair submitted by the client.
1096
1195
  */
@@ -1233,6 +1332,10 @@ export interface PluginApiSchemas {
1233
1332
  reacted: boolean;
1234
1333
  users: PluginApiSchemas["PluginPerson"][];
1235
1334
  };
1335
+ /**
1336
+ * How a repeating task's next date is counted.
1337
+ */
1338
+ RecurrenceStrategy: "fixed" | "rolling";
1236
1339
  /**
1237
1340
  * Why a moderator took something down. Every reason a report can give, and
1238
1341
  * two that only a community's own rules give.
@@ -1256,7 +1359,7 @@ export interface PluginApiSchemas {
1256
1359
  all_initiative_members?: boolean;
1257
1360
  plugin_install_id?: number | null;
1258
1361
  };
1259
- SearchEntityType: "calendar" | "calendar_event" | "comment" | "counter" | "counter_group" | "dashboard" | "file" | "gallery" | "gallery_image" | "post" | "project" | "queue" | "queue_item" | "tag" | "task" | "wiki" | "wiki_page";
1362
+ SearchEntityType: "calendar" | "calendar_event" | "collection" | "comment" | "counter" | "counter_group" | "dashboard" | "file" | "post" | "project" | "queue" | "queue_item" | "tag" | "task" | "wiki" | "wiki_page";
1260
1363
  /**
1261
1364
  * A jump-to target for the command palette: enough to render and route.
1262
1365
  */
@@ -1313,7 +1416,7 @@ export interface PluginApiSchemas {
1313
1416
  /**
1314
1417
  * Entity types a bulk tag edit can address.
1315
1418
  */
1316
- TagTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "gallery" | "wiki" | "task" | "queue_item" | "calendar_event" | "gallery_image" | "wiki_page";
1419
+ TagTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "task" | "queue_item" | "calendar_event" | "wiki_page" | "collection";
1317
1420
  TaskCreate: {
1318
1421
  properties?: PluginApiSchemas["PropertyValueInput"][];
1319
1422
  title: string;
@@ -1321,14 +1424,17 @@ export interface PluginApiSchemas {
1321
1424
  start_date?: string | null;
1322
1425
  due_date?: string | null;
1323
1426
  recurrence?: string | null;
1324
- recurrence_strategy?: "fixed" | "rolling";
1427
+ recurrence_strategy?: PluginApiSchemas["RecurrenceStrategy"];
1428
+ recurrence_limit?: number | null;
1325
1429
  description?: string | null;
1326
1430
  project_id: number;
1327
1431
  tz?: string | null;
1328
1432
  assignee_ids?: string[];
1329
1433
  task_status_id?: number | null;
1434
+ task_type_id?: number | null;
1330
1435
  tag_ids?: number[];
1331
1436
  checklist?: PluginApiSchemas["ChecklistItemInput"][];
1437
+ parent_task_id?: number | null;
1332
1438
  };
1333
1439
  /**
1334
1440
  * Lightweight schema for task list endpoints - excludes heavy nested data
@@ -1339,13 +1445,16 @@ export interface PluginApiSchemas {
1339
1445
  start_date: string | null;
1340
1446
  due_date: string | null;
1341
1447
  recurrence: string | null;
1342
- recurrence_strategy: "fixed" | "rolling";
1448
+ recurrence_strategy: PluginApiSchemas["RecurrenceStrategy"];
1449
+ recurrence_limit: number | null;
1343
1450
  description_excerpt: string | null;
1344
1451
  has_description: boolean;
1345
1452
  id: number;
1346
1453
  project_id: number;
1347
1454
  task_status_id: number;
1348
1455
  task_status: PluginApiSchemas["TaskStatusRead"];
1456
+ task_type_id: number;
1457
+ task_type: PluginApiSchemas["TaskTypeRead"];
1349
1458
  created_at: string;
1350
1459
  updated_at: string;
1351
1460
  completed_at: string | null;
@@ -1355,6 +1464,8 @@ export interface PluginApiSchemas {
1355
1464
  assignees: PluginApiSchemas["PluginPerson"][];
1356
1465
  recurrence_occurrence_count: number;
1357
1466
  recurrence_shift: number;
1467
+ recurrence_anchor: string | null;
1468
+ recurrence_anchor_count: number;
1358
1469
  recurrence_until: string | null;
1359
1470
  comment_count: number;
1360
1471
  blocked_by_open_count: number;
@@ -1365,6 +1476,8 @@ export interface PluginApiSchemas {
1365
1476
  initiative_name: string | null;
1366
1477
  initiative_color: string | null;
1367
1478
  checklist_progress: PluginApiSchemas["ChecklistProgress"] | null;
1479
+ parent: PluginApiSchemas["TaskParentSummary"] | null;
1480
+ subtask_progress: PluginApiSchemas["ChecklistProgress"] | null;
1368
1481
  tags: PluginApiSchemas["TagSummary"][];
1369
1482
  properties: PluginApiSchemas["PropertySummary"][];
1370
1483
  plugin_values: PluginApiSchemas["PluginValueSummary"][];
@@ -1381,6 +1494,13 @@ export interface PluginApiSchemas {
1381
1494
  TaskMoveRequest: {
1382
1495
  target_project_id: number;
1383
1496
  };
1497
+ /**
1498
+ * The task a task is part of: the target of its `part_of` edge.
1499
+ */
1500
+ TaskParentSummary: {
1501
+ id: number;
1502
+ title: string;
1503
+ };
1384
1504
  TaskPriority: "low" | "medium" | "high" | "urgent";
1385
1505
  TaskProjectSummary: {
1386
1506
  id: number;
@@ -1397,12 +1517,15 @@ export interface PluginApiSchemas {
1397
1517
  start_date: string | null;
1398
1518
  due_date: string | null;
1399
1519
  recurrence: string | null;
1400
- recurrence_strategy: "fixed" | "rolling";
1520
+ recurrence_strategy: PluginApiSchemas["RecurrenceStrategy"];
1521
+ recurrence_limit: number | null;
1401
1522
  description: string | null;
1402
1523
  id: number;
1403
1524
  project_id: number;
1404
1525
  task_status_id: number;
1405
1526
  task_status: PluginApiSchemas["TaskStatusRead"];
1527
+ task_type_id: number;
1528
+ task_type: PluginApiSchemas["TaskTypeRead"];
1406
1529
  created_at: string;
1407
1530
  updated_at: string;
1408
1531
  completed_at: string | null;
@@ -1413,6 +1536,8 @@ export interface PluginApiSchemas {
1413
1536
  assignees: PluginApiSchemas["PluginPerson"][];
1414
1537
  recurrence_occurrence_count: number;
1415
1538
  recurrence_shift: number;
1539
+ recurrence_anchor: string | null;
1540
+ recurrence_anchor_count: number;
1416
1541
  recurrence_until: string | null;
1417
1542
  series_id: number | null;
1418
1543
  series_size: number;
@@ -1421,6 +1546,8 @@ export interface PluginApiSchemas {
1421
1546
  project: PluginApiSchemas["TaskProjectSummary"] | null;
1422
1547
  checklist: PluginApiSchemas["ChecklistItem"][];
1423
1548
  checklist_progress: PluginApiSchemas["ChecklistProgress"] | null;
1549
+ parent: PluginApiSchemas["TaskParentSummary"] | null;
1550
+ subtask_progress: PluginApiSchemas["ChecklistProgress"] | null;
1424
1551
  tags: PluginApiSchemas["TagSummary"][];
1425
1552
  properties: PluginApiSchemas["PropertySummary"][];
1426
1553
  plugin_values: PluginApiSchemas["PluginValueSummary"][];
@@ -1436,12 +1563,62 @@ export interface PluginApiSchemas {
1436
1563
  id: number;
1437
1564
  project_id: number;
1438
1565
  };
1566
+ /**
1567
+ * One ready-made type, in the reader's language.
1568
+ */
1569
+ TaskTypeGalleryEntry: {
1570
+ key: string;
1571
+ name: string;
1572
+ hint: string;
1573
+ icon: string;
1574
+ color: string;
1575
+ layout_preset: string;
1576
+ fields: PluginApiSchemas["TaskTypeGalleryField"][];
1577
+ starting_values?: PluginApiSchemas["TaskTypeStartingValues"] | null;
1578
+ };
1579
+ TaskTypeGalleryField: {
1580
+ name: string;
1581
+ type: string;
1582
+ };
1583
+ TaskTypeGalleryGroup: {
1584
+ key: string;
1585
+ name: string;
1586
+ entries: PluginApiSchemas["TaskTypeGalleryEntry"][];
1587
+ };
1588
+ /**
1589
+ * One kind of task in a project, and the shape its page is drawn as until the
1590
+ * page is changed.
1591
+ */
1592
+ TaskTypeRead: {
1593
+ id: number;
1594
+ project_id: number;
1595
+ name: string;
1596
+ position: number;
1597
+ is_default: boolean;
1598
+ color: string;
1599
+ icon: string;
1600
+ layout_preset: string;
1601
+ starting_values: PluginApiSchemas["TaskTypeStartingValues"] | null;
1602
+ };
1603
+ /**
1604
+ * What a new task of a type starts with, field by field, where whoever makes
1605
+ * it leaves that field empty. A repeat starts only on a task with a date to
1606
+ * count from.
1607
+ */
1608
+ TaskTypeStartingValues: {
1609
+ description?: string | null;
1610
+ checklist?: string[];
1611
+ priority?: PluginApiSchemas["TaskPriority"] | null;
1612
+ recurrence?: string | null;
1613
+ recurrence_strategy?: PluginApiSchemas["RecurrenceStrategy"] | null;
1614
+ };
1439
1615
  TaskUpdate: {
1440
1616
  properties?: PluginApiSchemas["PropertyValueInput"][] | null;
1441
1617
  title?: string | null;
1442
1618
  description?: string | null;
1443
1619
  description_base?: string | null;
1444
1620
  task_status_id?: number | null;
1621
+ task_type_id?: number | null;
1445
1622
  status_category?: PluginApiSchemas["TaskStatusCategory"] | null;
1446
1623
  priority?: PluginApiSchemas["TaskPriority"] | null;
1447
1624
  assignee_ids?: string[] | null;
@@ -1451,9 +1628,11 @@ export interface PluginApiSchemas {
1451
1628
  due_date?: string | null;
1452
1629
  recurrence?: string | null;
1453
1630
  tz?: string | null;
1454
- recurrence_strategy?: "fixed" | "rolling" | null;
1631
+ recurrence_strategy?: PluginApiSchemas["RecurrenceStrategy"] | null;
1632
+ recurrence_limit?: number | null;
1455
1633
  tag_ids?: number[] | null;
1456
1634
  checklist?: PluginApiSchemas["ChecklistItemInput"][] | null;
1635
+ parent_task_id?: number | null;
1457
1636
  scope?: "this" | "following" | "all" | null;
1458
1637
  };
1459
1638
  /**
@@ -1468,7 +1647,7 @@ export interface PluginApiSchemas {
1468
1647
  TimelineResponse: {
1469
1648
  buckets: PluginApiSchemas["TimelineBucket"][];
1470
1649
  };
1471
- Tool: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "gallery" | "wiki";
1650
+ Tool: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki";
1472
1651
  /**
1473
1652
  * What the caller may do to one of a tool's rows
1474
1653
  * (`permissions.client_access`).
@@ -1658,9 +1837,9 @@ export interface PluginApiSchemas {
1658
1837
  tag_ids?: number[] | null;
1659
1838
  };
1660
1839
  /**
1661
- * A wiki on its own page. The same shape as its summary: the pages are
1662
- * fetched as a tree of their own, because a wiki is navigated rather than
1663
- * read end to end.
1840
+ * A wiki on its own page: its summary, and the files filed in it the reader
1841
+ * knows are there and can't open. The pages are fetched as a tree of their
1842
+ * own, because a wiki is navigated rather than read end to end.
1664
1843
  */
1665
1844
  WikiRead: {
1666
1845
  archived_at: string | null;
@@ -1686,6 +1865,7 @@ export interface PluginApiSchemas {
1686
1865
  accent_color: string | null;
1687
1866
  template_page_id: number | null;
1688
1867
  comment_count: number;
1868
+ hidden_files: PluginApiSchemas["HiddenFiles"];
1689
1869
  };
1690
1870
  /**
1691
1871
  * How wide a page's body runs.
@@ -1828,6 +2008,14 @@ export interface PluginApiOperations {
1828
2008
  * Filter by file type
1829
2009
  */
1830
2010
  file_type?: PluginApiSchemas["FileType"] | null;
2011
+ /**
2012
+ * Filter by kind of file
2013
+ */
2014
+ kind?: PluginApiSchemas["FileKind"] | null;
2015
+ /**
2016
+ * Filter to the files in one collection
2017
+ */
2018
+ collection_id?: number | null;
1831
2019
  page?: number;
1832
2020
  page_size?: number;
1833
2021
  /**
@@ -2045,12 +2233,12 @@ export interface PluginApiOperations {
2045
2233
  body: PluginApiSchemas["PostCreate"];
2046
2234
  answer: PluginApiSchemas["PostRead"];
2047
2235
  };
2048
- list_galleries: {
2236
+ list_wikis: {
2049
2237
  query: {
2050
2238
  initiative_id?: number | null;
2051
2239
  /**
2052
- * Full-text match over the gallery's name and description, through the
2053
- * same index the search page reads.
2240
+ * Full-text match over the wiki's name and description, through the same
2241
+ * index the search page reads.
2054
2242
  */
2055
2243
  search?: string | null;
2056
2244
  /**
@@ -2062,7 +2250,7 @@ export interface PluginApiOperations {
2062
2250
  */
2063
2251
  sort_dir?: string | null;
2064
2252
  /**
2065
- * Only galleries carrying any of these tags.
2253
+ * Only wikis carrying any of these tags.
2066
2254
  */
2067
2255
  tag_ids?: number[] | null;
2068
2256
  /**
@@ -2075,30 +2263,54 @@ export interface PluginApiOperations {
2075
2263
  * live list, which is what every other view shows.
2076
2264
  */
2077
2265
  archived?: boolean | null;
2078
- /**
2079
- * Also send what each row's card shows of what is inside it, read for the
2080
- * whole page at once.
2081
- */
2082
- include_preview?: boolean;
2083
2266
  page?: number;
2084
2267
  page_size?: number;
2085
2268
  };
2086
- answer: PluginApiSchemas["GalleryListResponse"];
2269
+ answer: PluginApiSchemas["WikiListResponse"];
2087
2270
  };
2088
- create_gallery: {
2089
- body: PluginApiSchemas["GalleryCreate"];
2090
- answer: PluginApiSchemas["GalleryRead"];
2271
+ create_wiki: {
2272
+ body: PluginApiSchemas["WikiCreate"];
2273
+ answer: PluginApiSchemas["WikiRead"];
2091
2274
  };
2092
- list_wikis: {
2275
+ list_collection_files: {
2276
+ path: {
2277
+ collection_id: number;
2278
+ };
2093
2279
  query: {
2094
2280
  initiative_id?: number | null;
2281
+ search?: string | null;
2095
2282
  /**
2096
- * Full-text match over the wiki's name and description, through the same
2097
- * index the search page reads.
2283
+ * Filter by tag IDs
2098
2284
  */
2099
- search?: string | null;
2285
+ tag_ids?: number[] | null;
2100
2286
  /**
2101
- * Order by one of: name, initiative, updated_at. Omit for newest first.
2287
+ * JSON-encoded list of property-value filters, e.g. `[{"property_id": 12,
2288
+ * "op": "eq", "value": "live"}]`. Maximum 5 conditions per request.
2289
+ */
2290
+ property_filters?: string | null;
2291
+ /**
2292
+ * Filter to files with no tags
2293
+ */
2294
+ untagged?: boolean | null;
2295
+ /**
2296
+ * Only templates (true) or only files that are not templates (false).
2297
+ * Omit for both.
2298
+ */
2299
+ is_template?: boolean | null;
2300
+ /**
2301
+ * Filter by file type
2302
+ */
2303
+ file_type?: PluginApiSchemas["FileType"] | null;
2304
+ /**
2305
+ * Filter by kind of file
2306
+ */
2307
+ kind?: PluginApiSchemas["FileKind"] | null;
2308
+ page?: number;
2309
+ page_size?: number;
2310
+ /**
2311
+ * Order by one of: name, initiative, updated_at, created_at, added_at
2312
+ * (when each was added to the collection). Omit for added_at, newest
2313
+ * first.
2102
2314
  */
2103
2315
  sort_by?: string | null;
2104
2316
  /**
@@ -2106,7 +2318,45 @@ export interface PluginApiOperations {
2106
2318
  */
2107
2319
  sort_dir?: string | null;
2108
2320
  /**
2109
- * Only wikis carrying any of these tags.
2321
+ * true lists what has been archived instead of what is live. Omit for the
2322
+ * live list, which is what every other view shows.
2323
+ */
2324
+ archived?: boolean | null;
2325
+ /**
2326
+ * Start the list at this instant, measured by when each file was added to
2327
+ * the collection. Newest first it is a ceiling and the page walks back
2328
+ * from it; oldest first (sort_by=added_at, sort_dir=asc) a floor and the
2329
+ * page walks forward. This is how a timeline jumps to a month: pair it
2330
+ * with the matching end of the month's bucket.
2331
+ */
2332
+ until?: string | null;
2333
+ };
2334
+ answer: PluginApiSchemas["CollectionFileListResponse"];
2335
+ };
2336
+ add_collection_files: {
2337
+ path: {
2338
+ collection_id: number;
2339
+ };
2340
+ body: PluginApiSchemas["CollectionFiles"];
2341
+ answer: PluginApiSchemas["CollectionRead"];
2342
+ };
2343
+ remove_collection_files: {
2344
+ path: {
2345
+ collection_id: number;
2346
+ };
2347
+ query: {
2348
+ file_ids: number[];
2349
+ };
2350
+ answer: void;
2351
+ };
2352
+ get_collection_files_timeline: {
2353
+ path: {
2354
+ collection_id: number;
2355
+ };
2356
+ query: {
2357
+ search?: string | null;
2358
+ /**
2359
+ * Filter by tag IDs
2110
2360
  */
2111
2361
  tag_ids?: number[] | null;
2112
2362
  /**
@@ -2114,19 +2364,35 @@ export interface PluginApiOperations {
2114
2364
  * "op": "eq", "value": "live"}]`. Maximum 5 conditions per request.
2115
2365
  */
2116
2366
  property_filters?: string | null;
2367
+ /**
2368
+ * Filter to files with no tags
2369
+ */
2370
+ untagged?: boolean | null;
2371
+ /**
2372
+ * Only templates (true) or only files that are not templates (false).
2373
+ * Omit for both.
2374
+ */
2375
+ is_template?: boolean | null;
2376
+ /**
2377
+ * Filter by file type
2378
+ */
2379
+ file_type?: PluginApiSchemas["FileType"] | null;
2380
+ /**
2381
+ * Filter by kind of file
2382
+ */
2383
+ kind?: PluginApiSchemas["FileKind"] | null;
2117
2384
  /**
2118
2385
  * true lists what has been archived instead of what is live. Omit for the
2119
2386
  * live list, which is what every other view shows.
2120
2387
  */
2121
2388
  archived?: boolean | null;
2122
- page?: number;
2123
- page_size?: number;
2389
+ /**
2390
+ * IANA zone the month boundaries are cut in, e.g. Pacific/Auckland.
2391
+ * Defaults to UTC.
2392
+ */
2393
+ tz?: string | null;
2124
2394
  };
2125
- answer: PluginApiSchemas["WikiListResponse"];
2126
- };
2127
- create_wiki: {
2128
- body: PluginApiSchemas["WikiCreate"];
2129
- answer: PluginApiSchemas["WikiRead"];
2395
+ answer: PluginApiSchemas["TimelineResponse"];
2130
2396
  };
2131
2397
  read_project: {
2132
2398
  path: {
@@ -2161,6 +2427,18 @@ export interface PluginApiOperations {
2161
2427
  };
2162
2428
  answer: PluginApiSchemas["InitiativeTaskStatusRead"][];
2163
2429
  };
2430
+ list_task_types: {
2431
+ path: {
2432
+ project_id: number;
2433
+ };
2434
+ answer: PluginApiSchemas["TaskTypeRead"][];
2435
+ };
2436
+ list_task_type_gallery: {
2437
+ path: {
2438
+ project_id: number;
2439
+ };
2440
+ answer: PluginApiSchemas["TaskTypeGalleryGroup"][];
2441
+ };
2164
2442
  list_tasks: {
2165
2443
  query: {
2166
2444
  /**
@@ -2193,6 +2471,23 @@ export interface PluginApiOperations {
2193
2471
  body: PluginApiSchemas["TaskCreate"];
2194
2472
  answer: PluginApiSchemas["TaskRead"];
2195
2473
  };
2474
+ list_task_groups: {
2475
+ query: {
2476
+ /**
2477
+ * The field the list is grouped by, as the field catalog's `groupings`
2478
+ * name it, or `property:<id>`
2479
+ */
2480
+ group_by: string;
2481
+ /**
2482
+ * For a date: the bucket of the calendar it groups by
2483
+ */
2484
+ bucket?: PluginApiSchemas["DateBucket"] | null;
2485
+ conditions?: Array<PluginApiSchemas["FilterCondition"] | PluginApiSchemas["FilterGroup"]>;
2486
+ include_archived?: boolean;
2487
+ tz?: string | null;
2488
+ };
2489
+ answer: PluginApiSchemas["GroupsResponse"];
2490
+ };
2196
2491
  list_column_limits: {
2197
2492
  query: {
2198
2493
  project_id: number[];
@@ -2247,12 +2542,20 @@ export interface PluginApiOperations {
2247
2542
  body: PluginApiSchemas["ChecklistItemToggle"];
2248
2543
  answer: PluginApiSchemas["ChecklistItem"][];
2249
2544
  };
2545
+ promote_checklist_item: {
2546
+ path: {
2547
+ task_id: number;
2548
+ item_id: string;
2549
+ };
2550
+ answer: PluginApiSchemas["TaskRead"];
2551
+ };
2250
2552
  list_comments: {
2251
2553
  query: {
2252
2554
  limit?: number;
2253
2555
  cursor?: string | null;
2254
2556
  task_id?: number | null;
2255
2557
  wiki_page_id?: number | null;
2558
+ collection_id?: number | null;
2256
2559
  project_id?: number | null;
2257
2560
  file_id?: number | null;
2258
2561
  queue_id?: number | null;
@@ -2260,7 +2563,6 @@ export interface PluginApiOperations {
2260
2563
  calendar_id?: number | null;
2261
2564
  dashboard_id?: number | null;
2262
2565
  post_id?: number | null;
2263
- gallery_id?: number | null;
2264
2566
  wiki_id?: number | null;
2265
2567
  };
2266
2568
  answer: PluginApiSchemas["CommentListResponse"];
@@ -2303,6 +2605,17 @@ export interface PluginApiOperations {
2303
2605
  };
2304
2606
  answer: PluginApiSchemas["InitiativeRead"];
2305
2607
  };
2608
+ upload_file: {
2609
+ body: FormData;
2610
+ answer: PluginApiSchemas["FileRead"];
2611
+ };
2612
+ upload_file_version: {
2613
+ path: {
2614
+ file_id: number;
2615
+ };
2616
+ body: FormData;
2617
+ answer: PluginApiSchemas["FileVersionRead"];
2618
+ };
2306
2619
  read_file: {
2307
2620
  path: {
2308
2621
  file_id: number;
@@ -2331,6 +2644,58 @@ export interface PluginApiOperations {
2331
2644
  body: PluginApiSchemas["FileUpdate"];
2332
2645
  answer: PluginApiSchemas["FileRead"];
2333
2646
  };
2647
+ list_collection_shapes: {
2648
+ answer: PluginApiSchemas["CollectionShapeGroup"][];
2649
+ };
2650
+ list_collections: {
2651
+ query: {
2652
+ initiative_id: number;
2653
+ /**
2654
+ * true lists what has been archived instead of what is live. Omit for the
2655
+ * live list, which is what every other view shows.
2656
+ */
2657
+ archived?: boolean | null;
2658
+ };
2659
+ answer: PluginApiSchemas["CollectionListResponse"];
2660
+ };
2661
+ create_collection: {
2662
+ body: PluginApiSchemas["CollectionCreate"];
2663
+ answer: PluginApiSchemas["CollectionRead"];
2664
+ };
2665
+ read_collection: {
2666
+ path: {
2667
+ collection_id: number;
2668
+ };
2669
+ answer: PluginApiSchemas["CollectionRead"];
2670
+ };
2671
+ delete_collection: {
2672
+ path: {
2673
+ collection_id: number;
2674
+ };
2675
+ answer: void;
2676
+ };
2677
+ update_collection: {
2678
+ path: {
2679
+ collection_id: number;
2680
+ };
2681
+ body: PluginApiSchemas["CollectionUpdate"];
2682
+ answer: PluginApiSchemas["CollectionRead"];
2683
+ };
2684
+ get_collection_file_fields: {
2685
+ path: {
2686
+ collection_id: number;
2687
+ file_id: number;
2688
+ };
2689
+ answer: PluginApiSchemas["PropertySummary"][];
2690
+ };
2691
+ set_collection_file_fields: {
2692
+ path: {
2693
+ collection_id: number;
2694
+ file_id: number;
2695
+ };
2696
+ body: PluginApiSchemas["PropertyValuesSetRequest"];
2697
+ answer: PluginApiSchemas["PropertySummary"][];
2698
+ };
2334
2699
  read_queue: {
2335
2700
  path: {
2336
2701
  queue_id: number;
@@ -2506,185 +2871,73 @@ export interface PluginApiOperations {
2506
2871
  answer: PluginApiSchemas["CounterRead"];
2507
2872
  };
2508
2873
  set_counter_count: {
2509
- path: {
2510
- counter_id: number;
2511
- };
2512
- body: PluginApiSchemas["CounterSetCountRequest"];
2513
- answer: PluginApiSchemas["CounterRead"];
2514
- };
2515
- step_counter: {
2516
- path: {
2517
- counter_id: number;
2518
- };
2519
- body: PluginApiSchemas["CounterStepRequest"];
2520
- answer: PluginApiSchemas["CounterRead"];
2521
- };
2522
- reset_counter: {
2523
- path: {
2524
- counter_id: number;
2525
- };
2526
- answer: PluginApiSchemas["CounterRead"];
2527
- };
2528
- read_calendar: {
2529
- path: {
2530
- calendar_id: number;
2531
- };
2532
- query: {
2533
- /**
2534
- * Also return the resource if it is in the trash. For reading a resource
2535
- * back after a deleted event — the row still exists until retention
2536
- * purges it, and access is checked exactly as for a live one.
2537
- */
2538
- include_deleted?: boolean;
2539
- };
2540
- answer: PluginApiSchemas["CalendarRead"];
2541
- };
2542
- update_calendar: {
2543
- path: {
2544
- calendar_id: number;
2545
- };
2546
- body: PluginApiSchemas["CalendarUpdate"];
2547
- answer: PluginApiSchemas["CalendarRead"];
2548
- };
2549
- read_post: {
2550
- path: {
2551
- post_id: number;
2552
- };
2553
- query: {
2554
- /**
2555
- * Also return the resource if it is in the trash. For reading a resource
2556
- * back after a deleted event — the row still exists until retention
2557
- * purges it, and access is checked exactly as for a live one.
2558
- */
2559
- include_deleted?: boolean;
2560
- };
2561
- answer: PluginApiSchemas["PostRead"];
2562
- };
2563
- update_post: {
2564
- path: {
2565
- post_id: number;
2566
- };
2567
- body: PluginApiSchemas["PostUpdate"];
2568
- answer: PluginApiSchemas["PostRead"];
2569
- };
2570
- set_post_pin: {
2571
- path: {
2572
- post_id: number;
2573
- };
2574
- body: PluginApiSchemas["PostPinUpdate"];
2575
- answer: PluginApiSchemas["PostRead"];
2576
- };
2577
- read_gallery: {
2578
- path: {
2579
- gallery_id: number;
2580
- };
2581
- query: {
2582
- /**
2583
- * Also return the resource if it is in the trash. For reading a resource
2584
- * back after a deleted event — the row still exists until retention
2585
- * purges it, and access is checked exactly as for a live one.
2586
- */
2587
- include_deleted?: boolean;
2588
- };
2589
- answer: PluginApiSchemas["GalleryRead"];
2590
- };
2591
- update_gallery: {
2592
- path: {
2593
- gallery_id: number;
2594
- };
2595
- body: PluginApiSchemas["GalleryUpdate"];
2596
- answer: PluginApiSchemas["GalleryRead"];
2597
- };
2598
- list_gallery_images: {
2599
- path: {
2600
- gallery_id: number;
2601
- };
2602
- query: {
2603
- /**
2604
- * Only pictures carrying ANY of these tags.
2605
- */
2606
- tag_ids?: number[] | null;
2607
- /**
2608
- * Match on title, caption or filename.
2609
- */
2610
- search?: string | null;
2611
- /**
2612
- * Read the gallery in the order it was filled rather than newest first.
2613
- */
2614
- oldest_first?: boolean;
2615
- /**
2616
- * Start the list at this instant, inclusive, measured by upload time —
2617
- * which is what the list is ordered by. This is how a timeline jumps to a
2618
- * month without paging through everything since. It follows the list's
2619
- * own direction: newest first it is a ceiling and the page walks back
2620
- * from it, oldest first a floor and the page walks forward, so pair it
2621
- * with the matching end of the timeline bucket.
2622
- */
2623
- until?: string | null;
2624
- page?: number;
2625
- page_size?: number;
2874
+ path: {
2875
+ counter_id: number;
2626
2876
  };
2627
- answer: PluginApiSchemas["GalleryImageListResponse"];
2877
+ body: PluginApiSchemas["CounterSetCountRequest"];
2878
+ answer: PluginApiSchemas["CounterRead"];
2628
2879
  };
2629
- upload_gallery_image: {
2880
+ step_counter: {
2630
2881
  path: {
2631
- gallery_id: number;
2882
+ counter_id: number;
2632
2883
  };
2633
- body: FormData;
2634
- answer: PluginApiSchemas["GalleryImageRead"];
2884
+ body: PluginApiSchemas["CounterStepRequest"];
2885
+ answer: PluginApiSchemas["CounterRead"];
2886
+ };
2887
+ reset_counter: {
2888
+ path: {
2889
+ counter_id: number;
2890
+ };
2891
+ answer: PluginApiSchemas["CounterRead"];
2635
2892
  };
2636
- get_gallery_image_timeline: {
2893
+ read_calendar: {
2637
2894
  path: {
2638
- gallery_id: number;
2895
+ calendar_id: number;
2639
2896
  };
2640
2897
  query: {
2641
- tag_ids?: number[] | null;
2642
- search?: string | null;
2643
2898
  /**
2644
- * IANA zone the month boundaries are cut in, e.g. Pacific/Auckland.
2645
- * Defaults to UTC.
2899
+ * Also return the resource if it is in the trash. For reading a resource
2900
+ * back after a deleted event — the row still exists until retention
2901
+ * purges it, and access is checked exactly as for a live one.
2646
2902
  */
2647
- tz?: string | null;
2903
+ include_deleted?: boolean;
2648
2904
  };
2649
- answer: PluginApiSchemas["TimelineResponse"];
2905
+ answer: PluginApiSchemas["CalendarRead"];
2650
2906
  };
2651
- read_gallery_image: {
2907
+ update_calendar: {
2652
2908
  path: {
2653
- gallery_id: number;
2654
- image_id: number;
2909
+ calendar_id: number;
2655
2910
  };
2656
- answer: PluginApiSchemas["GalleryImageRead"];
2911
+ body: PluginApiSchemas["CalendarUpdate"];
2912
+ answer: PluginApiSchemas["CalendarRead"];
2657
2913
  };
2658
- update_gallery_image: {
2914
+ read_post: {
2659
2915
  path: {
2660
- gallery_id: number;
2661
- image_id: number;
2916
+ post_id: number;
2662
2917
  };
2663
- body: PluginApiSchemas["GalleryImageUpdate"];
2664
- answer: PluginApiSchemas["GalleryImageRead"];
2665
- };
2666
- list_gallery_image_versions: {
2667
- path: {
2668
- gallery_id: number;
2669
- image_id: number;
2918
+ query: {
2919
+ /**
2920
+ * Also return the resource if it is in the trash. For reading a resource
2921
+ * back after a deleted event — the row still exists until retention
2922
+ * purges it, and access is checked exactly as for a live one.
2923
+ */
2924
+ include_deleted?: boolean;
2670
2925
  };
2671
- answer: PluginApiSchemas["GalleryImageVersionRead"][];
2926
+ answer: PluginApiSchemas["PostRead"];
2672
2927
  };
2673
- upload_gallery_image_version: {
2928
+ update_post: {
2674
2929
  path: {
2675
- gallery_id: number;
2676
- image_id: number;
2930
+ post_id: number;
2677
2931
  };
2678
- body: FormData;
2679
- answer: PluginApiSchemas["GalleryImageVersionRead"];
2932
+ body: PluginApiSchemas["PostUpdate"];
2933
+ answer: PluginApiSchemas["PostRead"];
2680
2934
  };
2681
- delete_gallery_image_version: {
2935
+ set_post_pin: {
2682
2936
  path: {
2683
- gallery_id: number;
2684
- image_id: number;
2685
- version_id: number;
2937
+ post_id: number;
2686
2938
  };
2687
- answer: void;
2939
+ body: PluginApiSchemas["PostPinUpdate"];
2940
+ answer: PluginApiSchemas["PostRead"];
2688
2941
  };
2689
2942
  read_wiki: {
2690
2943
  path: {
@@ -2867,13 +3120,6 @@ export interface PluginApiOperations {
2867
3120
  body: PluginApiSchemas["ResourceGrantSchema"][];
2868
3121
  answer: PluginApiSchemas["PostRead"];
2869
3122
  };
2870
- set_gallery_grants: {
2871
- path: {
2872
- gallery_id: number;
2873
- };
2874
- body: PluginApiSchemas["ResourceGrantSchema"][];
2875
- answer: PluginApiSchemas["GalleryRead"];
2876
- };
2877
3123
  set_wiki_grants: {
2878
3124
  path: {
2879
3125
  wiki_id: number;
@@ -2923,13 +3169,6 @@ export interface PluginApiOperations {
2923
3169
  body: PluginApiSchemas["ToolDuplicateRequest"] | null;
2924
3170
  answer: PluginApiSchemas["PostRead"];
2925
3171
  };
2926
- duplicate_gallery: {
2927
- path: {
2928
- gallery_id: number;
2929
- };
2930
- body: PluginApiSchemas["ToolDuplicateRequest"] | null;
2931
- answer: PluginApiSchemas["GalleryRead"];
2932
- };
2933
3172
  duplicate_wiki: {
2934
3173
  path: {
2935
3174
  wiki_id: number;
@@ -2945,9 +3184,9 @@ export interface PluginApiOperations {
2945
3184
  search: string;
2946
3185
  /**
2947
3186
  * Restrict to these entity types. Omit for the default scope (calendar,
2948
- * calendar_event, counter, counter_group, dashboard, file, gallery,
2949
- * gallery_image, post, project, queue, queue_item, tag, task, wiki,
2950
- * wiki_page); naming a type reaches it explicitly.
3187
+ * calendar_event, collection, counter, counter_group, dashboard, file,
3188
+ * post, project, queue, queue_item, tag, task, wiki, wiki_page); naming a
3189
+ * type reaches it explicitly.
2951
3190
  */
2952
3191
  types?: PluginApiSchemas["SearchEntityType"][] | null;
2953
3192
  /**
@@ -2972,6 +3211,10 @@ export interface PluginApiOperations {
2972
3211
  list_property_definitions: {
2973
3212
  query: {
2974
3213
  initiative_id?: number | null;
3214
+ /**
3215
+ * List this collection's own fields instead of properties.
3216
+ */
3217
+ collection_id?: number | null;
2975
3218
  };
2976
3219
  answer: PluginApiSchemas["PropertyDefinitionRead"][];
2977
3220
  };
@@ -3058,7 +3301,7 @@ export declare const pluginApiOperations: {
3058
3301
  readonly path: "/webhooks/subscriptions";
3059
3302
  readonly scope: {
3060
3303
  readonly per: "event_type";
3061
- readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "galleries:read", "initiatives:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3304
+ readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "initiatives:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3062
3305
  };
3063
3306
  };
3064
3307
  readonly delete_subscription: {
@@ -3066,7 +3309,7 @@ export declare const pluginApiOperations: {
3066
3309
  readonly path: "/webhooks/subscriptions/{subscription_id}";
3067
3310
  readonly scope: {
3068
3311
  readonly per: "event_type";
3069
- readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "galleries:read", "initiatives:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3312
+ readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "initiatives:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3070
3313
  };
3071
3314
  };
3072
3315
  readonly list_projects: {
@@ -3129,16 +3372,6 @@ export declare const pluginApiOperations: {
3129
3372
  readonly path: "/posts/";
3130
3373
  readonly scope: "posts:write";
3131
3374
  };
3132
- readonly list_galleries: {
3133
- readonly method: "GET";
3134
- readonly path: "/galleries/";
3135
- readonly scope: "galleries:read";
3136
- };
3137
- readonly create_gallery: {
3138
- readonly method: "POST";
3139
- readonly path: "/galleries/";
3140
- readonly scope: "galleries:write";
3141
- };
3142
3375
  readonly list_wikis: {
3143
3376
  readonly method: "GET";
3144
3377
  readonly path: "/wikis/";
@@ -3149,6 +3382,26 @@ export declare const pluginApiOperations: {
3149
3382
  readonly path: "/wikis/";
3150
3383
  readonly scope: "wikis:write";
3151
3384
  };
3385
+ readonly list_collection_files: {
3386
+ readonly method: "GET";
3387
+ readonly path: "/collections/{collection_id}/files";
3388
+ readonly scope: "files:read";
3389
+ };
3390
+ readonly add_collection_files: {
3391
+ readonly method: "POST";
3392
+ readonly path: "/collections/{collection_id}/files";
3393
+ readonly scope: "files:write";
3394
+ };
3395
+ readonly remove_collection_files: {
3396
+ readonly method: "DELETE";
3397
+ readonly path: "/collections/{collection_id}/files";
3398
+ readonly scope: "files:write";
3399
+ };
3400
+ readonly get_collection_files_timeline: {
3401
+ readonly method: "GET";
3402
+ readonly path: "/collections/{collection_id}/files/timeline";
3403
+ readonly scope: "files:read";
3404
+ };
3152
3405
  readonly read_project: {
3153
3406
  readonly method: "GET";
3154
3407
  readonly path: "/projects/{project_id}";
@@ -3169,6 +3422,16 @@ export declare const pluginApiOperations: {
3169
3422
  readonly path: "/initiatives/{initiative_id}/task-statuses/";
3170
3423
  readonly scope: "projects:read";
3171
3424
  };
3425
+ readonly list_task_types: {
3426
+ readonly method: "GET";
3427
+ readonly path: "/projects/{project_id}/task-types/";
3428
+ readonly scope: "projects:read";
3429
+ };
3430
+ readonly list_task_type_gallery: {
3431
+ readonly method: "GET";
3432
+ readonly path: "/projects/{project_id}/task-types/gallery";
3433
+ readonly scope: "projects:read";
3434
+ };
3172
3435
  readonly list_tasks: {
3173
3436
  readonly method: "GET";
3174
3437
  readonly path: "/tasks/";
@@ -3180,6 +3443,12 @@ export declare const pluginApiOperations: {
3180
3443
  readonly path: "/tasks/";
3181
3444
  readonly scope: "projects:write";
3182
3445
  };
3446
+ readonly list_task_groups: {
3447
+ readonly method: "GET";
3448
+ readonly path: "/tasks/groups";
3449
+ readonly scope: "projects:read";
3450
+ readonly json: readonly ["conditions"];
3451
+ };
3183
3452
  readonly list_column_limits: {
3184
3453
  readonly method: "GET";
3185
3454
  readonly path: "/tasks/column-limits";
@@ -3215,6 +3484,11 @@ export declare const pluginApiOperations: {
3215
3484
  readonly path: "/tasks/{task_id}/checklist/{item_id}";
3216
3485
  readonly scope: "projects:write";
3217
3486
  };
3487
+ readonly promote_checklist_item: {
3488
+ readonly method: "POST";
3489
+ readonly path: "/tasks/{task_id}/checklist/{item_id}/promote";
3490
+ readonly scope: "projects:write";
3491
+ };
3218
3492
  readonly list_comments: {
3219
3493
  readonly method: "GET";
3220
3494
  readonly path: "/comments/";
@@ -3240,6 +3514,16 @@ export declare const pluginApiOperations: {
3240
3514
  readonly path: "/initiatives/{initiative_id}";
3241
3515
  readonly scope: "initiatives:read";
3242
3516
  };
3517
+ readonly upload_file: {
3518
+ readonly method: "POST";
3519
+ readonly path: "/files/upload";
3520
+ readonly scope: "files:write";
3521
+ };
3522
+ readonly upload_file_version: {
3523
+ readonly method: "POST";
3524
+ readonly path: "/files/{file_id}/versions";
3525
+ readonly scope: "files:write";
3526
+ };
3243
3527
  readonly read_file: {
3244
3528
  readonly method: "GET";
3245
3529
  readonly path: "/files/{file_id}";
@@ -3250,6 +3534,46 @@ export declare const pluginApiOperations: {
3250
3534
  readonly path: "/files/{file_id}";
3251
3535
  readonly scope: "files:write";
3252
3536
  };
3537
+ readonly list_collection_shapes: {
3538
+ readonly method: "GET";
3539
+ readonly path: "/collections/shapes";
3540
+ readonly scope: "files:read";
3541
+ };
3542
+ readonly list_collections: {
3543
+ readonly method: "GET";
3544
+ readonly path: "/collections/";
3545
+ readonly scope: "files:read";
3546
+ };
3547
+ readonly create_collection: {
3548
+ readonly method: "POST";
3549
+ readonly path: "/collections/";
3550
+ readonly scope: "files:write";
3551
+ };
3552
+ readonly read_collection: {
3553
+ readonly method: "GET";
3554
+ readonly path: "/collections/{collection_id}";
3555
+ readonly scope: "files:read";
3556
+ };
3557
+ readonly delete_collection: {
3558
+ readonly method: "DELETE";
3559
+ readonly path: "/collections/{collection_id}";
3560
+ readonly scope: "files:write";
3561
+ };
3562
+ readonly update_collection: {
3563
+ readonly method: "PATCH";
3564
+ readonly path: "/collections/{collection_id}";
3565
+ readonly scope: "files:write";
3566
+ };
3567
+ readonly get_collection_file_fields: {
3568
+ readonly method: "GET";
3569
+ readonly path: "/collections/{collection_id}/files/{file_id}/fields";
3570
+ readonly scope: "files:read";
3571
+ };
3572
+ readonly set_collection_file_fields: {
3573
+ readonly method: "PUT";
3574
+ readonly path: "/collections/{collection_id}/files/{file_id}/fields";
3575
+ readonly scope: "files:write";
3576
+ };
3253
3577
  readonly read_queue: {
3254
3578
  readonly method: "GET";
3255
3579
  readonly path: "/queues/{queue_id}";
@@ -3400,56 +3724,6 @@ export declare const pluginApiOperations: {
3400
3724
  readonly path: "/posts/{post_id}/pin";
3401
3725
  readonly scope: "posts:write";
3402
3726
  };
3403
- readonly read_gallery: {
3404
- readonly method: "GET";
3405
- readonly path: "/galleries/{gallery_id}";
3406
- readonly scope: "galleries:read";
3407
- };
3408
- readonly update_gallery: {
3409
- readonly method: "PATCH";
3410
- readonly path: "/galleries/{gallery_id}";
3411
- readonly scope: "galleries:write";
3412
- };
3413
- readonly list_gallery_images: {
3414
- readonly method: "GET";
3415
- readonly path: "/galleries/{gallery_id}/images";
3416
- readonly scope: "galleries:read";
3417
- };
3418
- readonly upload_gallery_image: {
3419
- readonly method: "POST";
3420
- readonly path: "/galleries/{gallery_id}/images";
3421
- readonly scope: "galleries:write";
3422
- };
3423
- readonly get_gallery_image_timeline: {
3424
- readonly method: "GET";
3425
- readonly path: "/galleries/{gallery_id}/images/timeline";
3426
- readonly scope: "galleries:read";
3427
- };
3428
- readonly read_gallery_image: {
3429
- readonly method: "GET";
3430
- readonly path: "/galleries/{gallery_id}/images/{image_id}";
3431
- readonly scope: "galleries:read";
3432
- };
3433
- readonly update_gallery_image: {
3434
- readonly method: "PATCH";
3435
- readonly path: "/galleries/{gallery_id}/images/{image_id}";
3436
- readonly scope: "galleries:write";
3437
- };
3438
- readonly list_gallery_image_versions: {
3439
- readonly method: "GET";
3440
- readonly path: "/galleries/{gallery_id}/images/{image_id}/versions";
3441
- readonly scope: "galleries:read";
3442
- };
3443
- readonly upload_gallery_image_version: {
3444
- readonly method: "POST";
3445
- readonly path: "/galleries/{gallery_id}/images/{image_id}/versions";
3446
- readonly scope: "galleries:write";
3447
- };
3448
- readonly delete_gallery_image_version: {
3449
- readonly method: "DELETE";
3450
- readonly path: "/galleries/{gallery_id}/images/{image_id}/versions/{version_id}";
3451
- readonly scope: "galleries:write";
3452
- };
3453
3727
  readonly read_wiki: {
3454
3728
  readonly method: "GET";
3455
3729
  readonly path: "/wikis/{wiki_id}";
@@ -3575,11 +3849,6 @@ export declare const pluginApiOperations: {
3575
3849
  readonly path: "/posts/{post_id}/grants";
3576
3850
  readonly scope: "sharing:write";
3577
3851
  };
3578
- readonly set_gallery_grants: {
3579
- readonly method: "PUT";
3580
- readonly path: "/galleries/{gallery_id}/grants";
3581
- readonly scope: "sharing:write";
3582
- };
3583
3852
  readonly set_wiki_grants: {
3584
3853
  readonly method: "PUT";
3585
3854
  readonly path: "/wikis/{wiki_id}/grants";
@@ -3615,11 +3884,6 @@ export declare const pluginApiOperations: {
3615
3884
  readonly path: "/posts/{post_id}/duplicate";
3616
3885
  readonly scope: "posts:write";
3617
3886
  };
3618
- readonly duplicate_gallery: {
3619
- readonly method: "POST";
3620
- readonly path: "/galleries/{gallery_id}/duplicate";
3621
- readonly scope: "galleries:write";
3622
- };
3623
3887
  readonly duplicate_wiki: {
3624
3888
  readonly method: "POST";
3625
3889
  readonly path: "/wikis/{wiki_id}/duplicate";
@@ -3630,7 +3894,7 @@ export declare const pluginApiOperations: {
3630
3894
  readonly path: "/search/suggest";
3631
3895
  readonly scope: {
3632
3896
  readonly per: "entity_type";
3633
- readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "galleries:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3897
+ readonly any_of: readonly ["calendars:read", "comments:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "queues:read", "tags:read", "wikis:read"];
3634
3898
  };
3635
3899
  };
3636
3900
  readonly list_property_definitions: {
@@ -3638,23 +3902,32 @@ export declare const pluginApiOperations: {
3638
3902
  readonly path: "/property-definitions/";
3639
3903
  readonly scope: {
3640
3904
  readonly per: "tool";
3641
- readonly any_of: readonly ["calendars:read", "counter_groups:read", "dashboards:read", "files:read", "galleries:read", "posts:read", "projects:read", "properties:read", "queues:read", "wikis:read"];
3905
+ readonly any_of: readonly ["calendars:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "properties:read", "queues:read", "wikis:read"];
3642
3906
  };
3643
3907
  };
3644
3908
  readonly create_property_definition: {
3645
3909
  readonly method: "POST";
3646
3910
  readonly path: "/property-definitions/";
3647
- readonly scope: "properties:write";
3911
+ readonly scope: {
3912
+ readonly per: "property_scope";
3913
+ readonly any_of: readonly ["files:write", "properties:write"];
3914
+ };
3648
3915
  };
3649
3916
  readonly delete_property_definition: {
3650
3917
  readonly method: "DELETE";
3651
3918
  readonly path: "/property-definitions/{definition_id}";
3652
- readonly scope: "properties:write";
3919
+ readonly scope: {
3920
+ readonly per: "property_scope";
3921
+ readonly any_of: readonly ["files:write", "properties:write"];
3922
+ };
3653
3923
  };
3654
3924
  readonly update_property_definition: {
3655
3925
  readonly method: "PATCH";
3656
3926
  readonly path: "/property-definitions/{definition_id}";
3657
- readonly scope: "properties:write";
3927
+ readonly scope: {
3928
+ readonly per: "property_scope";
3929
+ readonly any_of: readonly ["files:write", "properties:write"];
3930
+ };
3658
3931
  };
3659
3932
  readonly set_properties: {
3660
3933
  readonly method: "PUT";
@@ -3664,12 +3937,11 @@ export declare const pluginApiOperations: {
3664
3937
  readonly scopes: {
3665
3938
  readonly calendar: "calendars:write";
3666
3939
  readonly calendar_event: "calendars:write";
3940
+ readonly collection: "files:write";
3667
3941
  readonly counter: "counter_groups:write";
3668
3942
  readonly counter_group: "counter_groups:write";
3669
3943
  readonly dashboard: "dashboards:write";
3670
3944
  readonly file: "files:write";
3671
- readonly gallery: "galleries:write";
3672
- readonly gallery_image: "galleries:write";
3673
3945
  readonly post: "posts:write";
3674
3946
  readonly project: "projects:write";
3675
3947
  readonly queue: "queues:write";
@@ -3687,10 +3959,10 @@ export declare const pluginApiOperations: {
3687
3959
  readonly by: "entity_type";
3688
3960
  readonly scopes: {
3689
3961
  readonly calendar: "calendars:write";
3962
+ readonly collection: "files:write";
3690
3963
  readonly counter_group: "counter_groups:write";
3691
3964
  readonly dashboard: "dashboards:write";
3692
3965
  readonly file: "files:write";
3693
- readonly gallery: "galleries:write";
3694
3966
  readonly post: "posts:write";
3695
3967
  readonly project: "projects:write";
3696
3968
  readonly queue: "queues:write";
@@ -3718,7 +3990,7 @@ export declare class PluginApi {
3718
3990
  /**
3719
3991
  * Register a new webhook subscription.
3720
3992
  *
3721
- * `POST /webhooks/subscriptions`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `galleries:read`, `initiatives:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
3993
+ * `POST /webhooks/subscriptions`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `initiatives:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
3722
3994
  */
3723
3995
  createSubscription(args: {
3724
3996
  body: PluginApiOperations["create_subscription"]["body"];
@@ -3729,7 +4001,7 @@ export declare class PluginApi {
3729
4001
  * installed plug-in reaches only the subscriptions it registered, and any
3730
4002
  * other is a 404.
3731
4003
  *
3732
- * `DELETE /webhooks/subscriptions/{subscription_id}`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `galleries:read`, `initiatives:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
4004
+ * `DELETE /webhooks/subscriptions/{subscription_id}`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `initiatives:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
3733
4005
  */
3734
4006
  deleteSubscription(args: {
3735
4007
  path: PluginApiOperations["delete_subscription"]["path"];
@@ -3831,23 +4103,6 @@ export declare class PluginApi {
3831
4103
  createPost(args: {
3832
4104
  body: PluginApiOperations["create_post"]["body"];
3833
4105
  }): Promise<PluginApiOperations["create_post"]["answer"]>;
3834
- /**
3835
- * List galleries visible to the current user (guild admins see all).
3836
- *
3837
- * `GET /galleries/`, needs `galleries:read`.
3838
- */
3839
- listGalleries(args?: {
3840
- query?: PluginApiOperations["list_galleries"]["query"];
3841
- }): Promise<PluginApiOperations["list_galleries"]["answer"]>;
3842
- /**
3843
- * Create a gallery. Requires create_galleries permission on the initiative
3844
- * (or guild admin); the creator gets the owner grant.
3845
- *
3846
- * `POST /galleries/`, needs `galleries:write`.
3847
- */
3848
- createGallery(args: {
3849
- body: PluginApiOperations["create_gallery"]["body"];
3850
- }): Promise<PluginApiOperations["create_gallery"]["answer"]>;
3851
4106
  /**
3852
4107
  * List wikis visible to the current user (guild admins see all).
3853
4108
  *
@@ -3865,6 +4120,49 @@ export declare class PluginApi {
3865
4120
  createWiki(args: {
3866
4121
  body: PluginApiOperations["create_wiki"]["body"];
3867
4122
  }): Promise<PluginApiOperations["create_wiki"]["answer"]>;
4123
+ /**
4124
+ * The files in one collection the reader can open: the Files list, with its
4125
+ * parameters, narrowed to the collection, each with when it was added to it.
4126
+ * A collection out of reach is a 404.
4127
+ *
4128
+ * `GET /collections/{collection_id}/files`, needs `files:read`.
4129
+ */
4130
+ listCollectionFiles(args: {
4131
+ path: PluginApiOperations["list_collection_files"]["path"];
4132
+ query?: PluginApiOperations["list_collection_files"]["query"];
4133
+ }): Promise<PluginApiOperations["list_collection_files"]["answer"]>;
4134
+ /**
4135
+ * Put files in a collection: each a file of its initiative the reader can
4136
+ * open. One already in it stays as it is.
4137
+ *
4138
+ * `POST /collections/{collection_id}/files`, needs `files:write`.
4139
+ */
4140
+ addCollectionFiles(args: {
4141
+ path: PluginApiOperations["add_collection_files"]["path"];
4142
+ body: PluginApiOperations["add_collection_files"]["body"];
4143
+ }): Promise<PluginApiOperations["add_collection_files"]["answer"]>;
4144
+ /**
4145
+ * Take files out of a collection. The files stay where they are. A collection
4146
+ * left with no file goes to the trash.
4147
+ *
4148
+ * `DELETE /collections/{collection_id}/files`, needs `files:write`.
4149
+ */
4150
+ removeCollectionFiles(args: {
4151
+ path: PluginApiOperations["remove_collection_files"]["path"];
4152
+ query: PluginApiOperations["remove_collection_files"]["query"];
4153
+ }): Promise<PluginApiOperations["remove_collection_files"]["answer"]>;
4154
+ /**
4155
+ * The months files were added to this collection in, newest first, each with
4156
+ * how many of them the reader can open and the instants to jump to: what the
4157
+ * timeline rail is drawn from. Takes the same filters the list does, so the
4158
+ * rail is a picture of the list as it stands.
4159
+ *
4160
+ * `GET /collections/{collection_id}/files/timeline`, needs `files:read`.
4161
+ */
4162
+ getCollectionFilesTimeline(args: {
4163
+ path: PluginApiOperations["get_collection_files_timeline"]["path"];
4164
+ query?: PluginApiOperations["get_collection_files_timeline"]["query"];
4165
+ }): Promise<PluginApiOperations["get_collection_files_timeline"]["answer"]>;
3868
4166
  /**
3869
4167
  * Read Project
3870
4168
  *
@@ -3899,6 +4197,23 @@ export declare class PluginApi {
3899
4197
  listInitiativeTaskStatuses(args: {
3900
4198
  path: PluginApiOperations["list_initiative_task_statuses"]["path"];
3901
4199
  }): Promise<PluginApiOperations["list_initiative_task_statuses"]["answer"]>;
4200
+ /**
4201
+ * List Task Types
4202
+ *
4203
+ * `GET /projects/{project_id}/task-types/`, needs `projects:read`.
4204
+ */
4205
+ listTaskTypes(args: {
4206
+ path: PluginApiOperations["list_task_types"]["path"];
4207
+ }): Promise<PluginApiOperations["list_task_types"]["answer"]>;
4208
+ /**
4209
+ * The ready-made types the project can add, grouped by what they are for, in
4210
+ * the reader's language.
4211
+ *
4212
+ * `GET /projects/{project_id}/task-types/gallery`, needs `projects:read`.
4213
+ */
4214
+ listTaskTypeGallery(args: {
4215
+ path: PluginApiOperations["list_task_type_gallery"]["path"];
4216
+ }): Promise<PluginApiOperations["list_task_type_gallery"]["answer"]>;
3902
4217
  /**
3903
4218
  * List Tasks
3904
4219
  *
@@ -3915,6 +4230,15 @@ export declare class PluginApi {
3915
4230
  createTask(args: {
3916
4231
  body: PluginApiOperations["create_task"]["body"];
3917
4232
  }): Promise<PluginApiOperations["create_task"]["answer"]>;
4233
+ /**
4234
+ * The groups of the task list these filters answer with, in the order the
4235
+ * list shows them, and the groups each task is in.
4236
+ *
4237
+ * `GET /tasks/groups`, needs `projects:read`.
4238
+ */
4239
+ listTaskGroups(args: {
4240
+ query: PluginApiOperations["list_task_groups"]["query"];
4241
+ }): Promise<PluginApiOperations["list_task_groups"]["answer"]>;
3918
4242
  /**
3919
4243
  * Each limited board column of the named projects the reader can open: its
3920
4244
  * limit, and how many open tasks it holds. A project with no limits, or one
@@ -3979,6 +4303,14 @@ export declare class PluginApi {
3979
4303
  path: PluginApiOperations["toggle_checklist_item"]["path"];
3980
4304
  body: PluginApiOperations["toggle_checklist_item"]["body"];
3981
4305
  }): Promise<PluginApiOperations["toggle_checklist_item"]["answer"]>;
4306
+ /**
4307
+ * Make one checklist item a task of its own, part of this one.
4308
+ *
4309
+ * `POST /tasks/{task_id}/checklist/{item_id}/promote`, needs `projects:write`.
4310
+ */
4311
+ promoteChecklistItem(args: {
4312
+ path: PluginApiOperations["promote_checklist_item"]["path"];
4313
+ }): Promise<PluginApiOperations["promote_checklist_item"]["answer"]>;
3982
4314
  /**
3983
4315
  * One page of a thread: `limit` conversations, newest first, each with every
3984
4316
  * reply under it. Follow `next_cursor` for older conversations.
@@ -4023,6 +4355,25 @@ export declare class PluginApi {
4023
4355
  path: PluginApiOperations["get_initiative"]["path"];
4024
4356
  query?: PluginApiOperations["get_initiative"]["query"];
4025
4357
  }): Promise<PluginApiOperations["get_initiative"]["answer"]>;
4358
+ /**
4359
+ * Upload a file: sent with the request as `file`, or sent in pieces before it
4360
+ * as a resumable upload, named by `upload_id`.
4361
+ *
4362
+ * `POST /files/upload`, needs `files:write`.
4363
+ */
4364
+ uploadFile(args: {
4365
+ body: PluginApiOperations["upload_file"]["body"];
4366
+ }): Promise<PluginApiOperations["upload_file"]["answer"]>;
4367
+ /**
4368
+ * Upload a new version of an uploaded file, sent as `file` or as a resumable
4369
+ * upload named by `upload_id`. Requires write access.
4370
+ *
4371
+ * `POST /files/{file_id}/versions`, needs `files:write`.
4372
+ */
4373
+ uploadFileVersion(args: {
4374
+ path: PluginApiOperations["upload_file_version"]["path"];
4375
+ body?: PluginApiOperations["upload_file_version"]["body"];
4376
+ }): Promise<PluginApiOperations["upload_file_version"]["answer"]>;
4026
4377
  /**
4027
4378
  * Read File
4028
4379
  *
@@ -4041,6 +4392,83 @@ export declare class PluginApi {
4041
4392
  path: PluginApiOperations["update_file"]["path"];
4042
4393
  body: PluginApiOperations["update_file"]["body"];
4043
4394
  }): Promise<PluginApiOperations["update_file"]["answer"]>;
4395
+ /**
4396
+ * The ready-made shapes a new collection can start as, grouped, in the
4397
+ * reader's language: the lists each shows and opens on, and its fields.
4398
+ *
4399
+ * `GET /collections/shapes`, needs `files:read`.
4400
+ */
4401
+ listCollectionShapes(): Promise<PluginApiOperations["list_collection_shapes"]["answer"]>;
4402
+ /**
4403
+ * The initiative's collections the reader can see — those holding a file they
4404
+ * can open — most recently changed first, each with how many of its files
4405
+ * they can see and a cover they can open.
4406
+ *
4407
+ * `GET /collections/`, needs `files:read`.
4408
+ */
4409
+ listCollections(args: {
4410
+ query: PluginApiOperations["list_collections"]["query"];
4411
+ }): Promise<PluginApiOperations["list_collections"]["answer"]>;
4412
+ /**
4413
+ * Make a collection of files. It starts with the files named, each one a file
4414
+ * of the initiative the reader can open. Takes the initiative role's right to
4415
+ * create files. It starts blank, as a ready-made `shape` with its words in
4416
+ * the maker's language, or with the fields and lists of `shape_from`, a
4417
+ * collection of the same initiative the maker sees.
4418
+ *
4419
+ * `POST /collections/`, needs `files:write`.
4420
+ */
4421
+ createCollection(args: {
4422
+ body: PluginApiOperations["create_collection"]["body"];
4423
+ }): Promise<PluginApiOperations["create_collection"]["answer"]>;
4424
+ /**
4425
+ * Read Collection
4426
+ *
4427
+ * `GET /collections/{collection_id}`, needs `files:read`.
4428
+ */
4429
+ readCollection(args: {
4430
+ path: PluginApiOperations["read_collection"]["path"];
4431
+ }): Promise<PluginApiOperations["read_collection"]["answer"]>;
4432
+ /**
4433
+ * Send a collection to the trash. Its files stay where they are.
4434
+ *
4435
+ * `DELETE /collections/{collection_id}`, needs `files:write`.
4436
+ */
4437
+ deleteCollection(args: {
4438
+ path: PluginApiOperations["delete_collection"]["path"];
4439
+ }): Promise<PluginApiOperations["delete_collection"]["answer"]>;
4440
+ /**
4441
+ * Rename, describe, tag, set the cover of, or switch the comments of a
4442
+ * collection.
4443
+ *
4444
+ * `PATCH /collections/{collection_id}`, needs `files:write`.
4445
+ */
4446
+ updateCollection(args: {
4447
+ path: PluginApiOperations["update_collection"]["path"];
4448
+ body: PluginApiOperations["update_collection"]["body"];
4449
+ }): Promise<PluginApiOperations["update_collection"]["answer"]>;
4450
+ /**
4451
+ * One file's values of the collection's own fields, for a file in the
4452
+ * collection the reader can open.
4453
+ *
4454
+ * `GET /collections/{collection_id}/files/{file_id}/fields`, needs `files:read`.
4455
+ */
4456
+ getCollectionFileFields(args: {
4457
+ path: PluginApiOperations["get_collection_file_fields"]["path"];
4458
+ }): Promise<PluginApiOperations["get_collection_file_fields"]["answer"]>;
4459
+ /**
4460
+ * Replace one file's values of the collection's own fields, or with `merge`
4461
+ * write only the ones named, as `PUT /properties` does for a property. The
4462
+ * file is one in the collection the reader can open, and the values are the
4463
+ * collection's: they take the right to change the collection, not to edit the
4464
+ * file. An empty list clears them all.
4465
+ *
4466
+ * `PUT /collections/{collection_id}/files/{file_id}/fields`, needs `files:write`.
4467
+ */
4468
+ setCollectionFileFields(args: {
4469
+ path: PluginApiOperations["set_collection_file_fields"]["path"];
4470
+ body: PluginApiOperations["set_collection_file_fields"]["body"];
4471
+ }): Promise<PluginApiOperations["set_collection_file_fields"]["answer"]>;
4044
4472
  /**
4045
4473
  * Read Queue
4046
4474
  *
@@ -4306,99 +4734,6 @@ export declare class PluginApi {
4306
4734
  path: PluginApiOperations["set_post_pin"]["path"];
4307
4735
  body: PluginApiOperations["set_post_pin"]["body"];
4308
4736
  }): Promise<PluginApiOperations["set_post_pin"]["answer"]>;
4309
- /**
4310
- * Read Gallery
4311
- *
4312
- * `GET /galleries/{gallery_id}`, needs `galleries:read`.
4313
- */
4314
- readGallery(args: {
4315
- path: PluginApiOperations["read_gallery"]["path"];
4316
- query?: PluginApiOperations["read_gallery"]["query"];
4317
- }): Promise<PluginApiOperations["read_gallery"]["answer"]>;
4318
- /**
4319
- * Rename, describe, or choose the cover. Requires write access.
4320
- *
4321
- * `PATCH /galleries/{gallery_id}`, needs `galleries:write`.
4322
- */
4323
- updateGallery(args: {
4324
- path: PluginApiOperations["update_gallery"]["path"];
4325
- body: PluginApiOperations["update_gallery"]["body"];
4326
- }): Promise<PluginApiOperations["update_gallery"]["answer"]>;
4327
- /**
4328
- * One page of a gallery's pictures, newest first.
4329
- *
4330
- * `GET /galleries/{gallery_id}/images`, needs `galleries:read`.
4331
- */
4332
- listGalleryImages(args: {
4333
- path: PluginApiOperations["list_gallery_images"]["path"];
4334
- query?: PluginApiOperations["list_gallery_images"]["query"];
4335
- }): Promise<PluginApiOperations["list_gallery_images"]["answer"]>;
4336
- /**
4337
- * Add one picture to a gallery. Requires write access.
4338
- *
4339
- * `POST /galleries/{gallery_id}/images`, needs `galleries:write`.
4340
- */
4341
- uploadGalleryImage(args: {
4342
- path: PluginApiOperations["upload_gallery_image"]["path"];
4343
- body: PluginApiOperations["upload_gallery_image"]["body"];
4344
- }): Promise<PluginApiOperations["upload_gallery_image"]["answer"]>;
4345
- /**
4346
- * The months this gallery has pictures in, newest first — what the timeline
4347
- * rail is drawn from. Takes the same filters the list does, so the rail is a
4348
- * picture of the list as it currently stands.
4349
- *
4350
- * `GET /galleries/{gallery_id}/images/timeline`, needs `galleries:read`.
4351
- */
4352
- getGalleryImageTimeline(args: {
4353
- path: PluginApiOperations["get_gallery_image_timeline"]["path"];
4354
- query?: PluginApiOperations["get_gallery_image_timeline"]["query"];
4355
- }): Promise<PluginApiOperations["get_gallery_image_timeline"]["answer"]>;
4356
- /**
4357
- * Read Gallery Image
4358
- *
4359
- * `GET /galleries/{gallery_id}/images/{image_id}`, needs `galleries:read`.
4360
- */
4361
- readGalleryImage(args: {
4362
- path: PluginApiOperations["read_gallery_image"]["path"];
4363
- }): Promise<PluginApiOperations["read_gallery_image"]["answer"]>;
4364
- /**
4365
- * Retitle, caption, retag or set the properties of a picture. Requires write
4366
- * access on the gallery.
4367
- *
4368
- * `PATCH /galleries/{gallery_id}/images/{image_id}`, needs `galleries:write`.
4369
- */
4370
- updateGalleryImage(args: {
4371
- path: PluginApiOperations["update_gallery_image"]["path"];
4372
- body: PluginApiOperations["update_gallery_image"]["body"];
4373
- }): Promise<PluginApiOperations["update_gallery_image"]["answer"]>;
4374
- /**
4375
- * Every stored rendition of a picture, newest first.
4376
- *
4377
- * `GET /galleries/{gallery_id}/images/{image_id}/versions`, needs `galleries:read`.
4378
- */
4379
- listGalleryImageVersions(args: {
4380
- path: PluginApiOperations["list_gallery_image_versions"]["path"];
4381
- }): Promise<PluginApiOperations["list_gallery_image_versions"]["answer"]>;
4382
- /**
4383
- * Replace a picture with a new rendition, keeping the old one as history.
4384
- * Requires write access on the gallery.
4385
- *
4386
- * `POST /galleries/{gallery_id}/images/{image_id}/versions`, needs `galleries:write`.
4387
- */
4388
- uploadGalleryImageVersion(args: {
4389
- path: PluginApiOperations["upload_gallery_image_version"]["path"];
4390
- body: PluginApiOperations["upload_gallery_image_version"]["body"];
4391
- }): Promise<PluginApiOperations["upload_gallery_image_version"]["answer"]>;
4392
- /**
4393
- * Delete one rendition of a picture. Owner only. Deleting the current one
4394
- * promotes the previous; deleting the last is refused — remove the picture
4395
- * instead.
4396
- *
4397
- * `DELETE /galleries/{gallery_id}/images/{image_id}/versions/{version_id}`, needs `galleries:write`.
4398
- */
4399
- deleteGalleryImageVersion(args: {
4400
- path: PluginApiOperations["delete_gallery_image_version"]["path"];
4401
- }): Promise<PluginApiOperations["delete_gallery_image_version"]["answer"]>;
4402
4737
  /**
4403
4738
  * Read Wiki
4404
4739
  *
@@ -4639,17 +4974,6 @@ export declare class PluginApi {
4639
4974
  path: PluginApiOperations["set_post_grants"]["path"];
4640
4975
  body: PluginApiOperations["set_post_grants"]["body"];
4641
4976
  }): Promise<PluginApiOperations["set_post_grants"]["answer"]>;
4642
- /**
4643
- * Replace the gallery's entire sharing state in one call — the body is the
4644
- * full list of grants (all-initiative-members / per-user / per-role). Every
4645
- * non-owner grant is rebuilt from it; the owner is always preserved.
4646
- *
4647
- * `PUT /galleries/{gallery_id}/grants`, needs `sharing:write`.
4648
- */
4649
- setGalleryGrants(args: {
4650
- path: PluginApiOperations["set_gallery_grants"]["path"];
4651
- body: PluginApiOperations["set_gallery_grants"]["body"];
4652
- }): Promise<PluginApiOperations["set_gallery_grants"]["answer"]>;
4653
4977
  /**
4654
4978
  * Replace the wiki's entire sharing state in one call — the body is the full
4655
4979
  * list of grants (all-initiative-members / per-user / per-role). Every
@@ -4739,19 +5063,6 @@ export declare class PluginApi {
4739
5063
  path: PluginApiOperations["duplicate_post"]["path"];
4740
5064
  body?: PluginApiOperations["duplicate_post"]["body"];
4741
5065
  }): Promise<PluginApiOperations["duplicate_post"]["answer"]>;
4742
- /**
4743
- * Copy it, with everything inside it, into an initiative: its own unless the
4744
- * body names another. Read is enough to copy a template; anything else needs
4745
- * write. The copy is shared as its source is while it stays in the same
4746
- * initiative, and carries the tags its maker may set: an installed plug-in's
4747
- * copy carries them only when it holds the scope to tag.
4748
- *
4749
- * `POST /galleries/{gallery_id}/duplicate`, needs `galleries:write`.
4750
- */
4751
- duplicateGallery(args: {
4752
- path: PluginApiOperations["duplicate_gallery"]["path"];
4753
- body?: PluginApiOperations["duplicate_gallery"]["body"];
4754
- }): Promise<PluginApiOperations["duplicate_gallery"]["answer"]>;
4755
5066
  /**
4756
5067
  * Copy it, with everything inside it, into an initiative: its own unless the
4757
5068
  * body names another. Read is enough to copy a template; anything else needs
@@ -4768,7 +5079,7 @@ export declare class PluginApi {
4768
5079
  /**
4769
5080
  * Titles for the command palette — a way to reach one thing quickly.
4770
5081
  *
4771
- * `GET /search/suggest`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `galleries:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
5082
+ * `GET /search/suggest`, needs one of `calendars:read`, `comments:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `posts:read`, `projects:read`, `queues:read`, `tags:read`, `wikis:read`.
4772
5083
  */
4773
5084
  suggestCommunity(args: {
4774
5085
  query: PluginApiOperations["suggest_community"]["query"];
@@ -4776,23 +5087,25 @@ export declare class PluginApi {
4776
5087
  /**
4777
5088
  * List property definitions.
4778
5089
  *
4779
- * `GET /property-definitions/`, needs one of `calendars:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `galleries:read`, `posts:read`, `projects:read`, `properties:read`, `queues:read`, `wikis:read`.
5090
+ * `GET /property-definitions/`, needs one of `calendars:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `posts:read`, `projects:read`, `properties:read`, `queues:read`, `wikis:read`.
4780
5091
  */
4781
5092
  listPropertyDefinitions(args?: {
4782
5093
  query?: PluginApiOperations["list_property_definitions"]["query"];
4783
5094
  }): Promise<PluginApiOperations["list_property_definitions"]["answer"]>;
4784
5095
  /**
4785
- * Create a new property definition on an initiative.
5096
+ * Create a new property definition on an initiative, or with `collection_id`
5097
+ * a field of that collection's own.
4786
5098
  *
4787
- * `POST /property-definitions/`, needs `properties:write`.
5099
+ * `POST /property-definitions/`, needs one of `files:write`, `properties:write`.
4788
5100
  */
4789
5101
  createPropertyDefinition(args: {
4790
5102
  body: PluginApiOperations["create_property_definition"]["body"];
4791
5103
  }): Promise<PluginApiOperations["create_property_definition"]["answer"]>;
4792
5104
  /**
4793
- * Delete a property definition. Cascades to remove all attached values.
5105
+ * Delete a property definition. Cascades to remove all attached values. A
5106
+ * collection's field is removed by whoever may change the collection.
4794
5107
  *
4795
- * `DELETE /property-definitions/{definition_id}`, needs `properties:write`.
5108
+ * `DELETE /property-definitions/{definition_id}`, needs one of `files:write`, `properties:write`.
4796
5109
  */
4797
5110
  deletePropertyDefinition(args: {
4798
5111
  path: PluginApiOperations["delete_property_definition"]["path"];
@@ -4800,7 +5113,7 @@ export declare class PluginApi {
4800
5113
  /**
4801
5114
  * Update a property definition.
4802
5115
  *
4803
- * `PATCH /property-definitions/{definition_id}`, needs `properties:write`.
5116
+ * `PATCH /property-definitions/{definition_id}`, needs one of `files:write`, `properties:write`.
4804
5117
  */
4805
5118
  updatePropertyDefinition(args: {
4806
5119
  path: PluginApiOperations["update_property_definition"]["path"];