initiative-plugin-sdk 9.0.0 → 10.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.77.1 (commit 1a62d88cd). Do not edit: regenerate.
3
+ * taken from Initiative 0.77.1 (commit d862d0ebd). 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" | "wiki" | "task" | "initiative" | "collection";
34
+ ArchivableType: "project" | "file" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "contact" | "task" | "initiative" | "collection";
35
35
  /**
36
36
  * What archiving or unarchiving answers with.
37
37
  */
@@ -106,7 +106,6 @@ export interface PluginApiSchemas {
106
106
  overridden_fields: string[];
107
107
  skipped_starts: string[];
108
108
  extra_starts: string[];
109
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
110
109
  };
111
110
  CalendarEventUpdate: {
112
111
  properties?: PluginApiSchemas["PropertyValueInput"][] | null;
@@ -241,9 +240,9 @@ export interface PluginApiSchemas {
241
240
  };
242
241
  /**
243
242
  * 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.
243
+ * empty. It starts blank (its grid and table, and no metadata of its own), as
244
+ * a ready-made `shape`, or with the metadata and lists of another collection
245
+ * in the initiative (`shape_from`), none of its values.
247
246
  */
248
247
  CollectionCreate: {
249
248
  properties?: PluginApiSchemas["PropertyValueInput"][];
@@ -265,7 +264,7 @@ export interface PluginApiSchemas {
265
264
  };
266
265
  /**
267
266
  * A file as its collection lists it: with when it was added there, and its
268
- * values of the collection's own fields.
267
+ * values of the collection's metadata.
269
268
  */
270
269
  CollectionFileSummary: {
271
270
  archived_at: string | null;
@@ -309,17 +308,19 @@ export interface PluginApiSchemas {
309
308
  height: number | null;
310
309
  smart_link_url: string | null;
311
310
  added_at: string;
312
- fields: PluginApiSchemas["PropertySummary"][];
311
+ metadata: PluginApiSchemas["PropertySummary"][];
313
312
  /**
314
313
  * How the file is shown, which follows from its type.
315
314
  */
316
315
  kind: PluginApiSchemas["FileKind"];
317
316
  };
318
317
  /**
319
- * Files to put in a collection or take out of it.
318
+ * Files to put in a collection, and the values of the collection's metadata
319
+ * each one it takes starts with: what its file page requires.
320
320
  */
321
- CollectionFiles: {
321
+ CollectionFilesAdd: {
322
322
  file_ids: number[];
323
+ metadata?: PluginApiSchemas["PropertyValueInput"][];
323
324
  };
324
325
  CollectionListResponse: {
325
326
  items: PluginApiSchemas["CollectionRead"][];
@@ -347,7 +348,7 @@ export interface PluginApiSchemas {
347
348
  comment_count: number;
348
349
  tags: PluginApiSchemas["TagSummary"][];
349
350
  properties: PluginApiSchemas["PropertySummary"][];
350
- fields: PluginApiSchemas["PropertyDefinitionRead"][];
351
+ metadata: PluginApiSchemas["PropertyDefinitionRead"][];
351
352
  can: PluginApiSchemas["CollectionCan"];
352
353
  };
353
354
  CollectionShapeEntry: {
@@ -355,16 +356,7 @@ export interface PluginApiSchemas {
355
356
  name: string;
356
357
  hint: string;
357
358
  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;
359
+ metadata: PluginApiSchemas["CollectionShapeMetadata"][];
368
360
  };
369
361
  CollectionShapeGroup: {
370
362
  key: string;
@@ -375,6 +367,15 @@ export interface PluginApiSchemas {
375
367
  * A ready-made shape a collection can start as.
376
368
  */
377
369
  CollectionShapeKey: "gallery" | "catalog" | "log";
370
+ /**
371
+ * Metadata a ready-made shape brings, in the reader's language.
372
+ */
373
+ CollectionShapeMetadata: {
374
+ name: string;
375
+ type: PluginApiSchemas["MetadataType"];
376
+ display: "number" | "stars" | "bar" | null;
377
+ currency: PluginApiSchemas["CurrencyCode"] | null;
378
+ };
378
379
  CollectionUpdate: {
379
380
  properties?: PluginApiSchemas["PropertyValueInput"][] | null;
380
381
  name?: string | null;
@@ -410,12 +411,12 @@ export interface PluginApiSchemas {
410
411
  collection_id?: number | null;
411
412
  project_id?: number | null;
412
413
  file_id?: number | null;
413
- queue_id?: number | null;
414
414
  counter_group_id?: number | null;
415
415
  calendar_id?: number | null;
416
416
  dashboard_id?: number | null;
417
417
  post_id?: number | null;
418
418
  wiki_id?: number | null;
419
+ contact_id?: number | null;
419
420
  parent_comment_id?: number | null;
420
421
  audience?: PluginApiSchemas["CommentAudience"];
421
422
  };
@@ -446,12 +447,12 @@ export interface PluginApiSchemas {
446
447
  collection_id: number | null;
447
448
  project_id: number | null;
448
449
  file_id: number | null;
449
- queue_id: number | null;
450
450
  counter_group_id: number | null;
451
451
  calendar_id: number | null;
452
452
  dashboard_id: number | null;
453
453
  post_id: number | null;
454
454
  wiki_id: number | null;
455
+ contact_id: number | null;
455
456
  id: number;
456
457
  created_by: string | null;
457
458
  parent_comment_id: number | null;
@@ -473,6 +474,106 @@ export interface PluginApiSchemas {
473
474
  by: PluginApiSchemas["RemovedBy"];
474
475
  reason: PluginApiSchemas["RemovalReason"] | null;
475
476
  };
477
+ /**
478
+ * An address, as one block of text written as it is on an envelope, so any
479
+ * country's form fits.
480
+ */
481
+ ContactAddress: {
482
+ label?: string;
483
+ value: string;
484
+ };
485
+ ContactCreate: {
486
+ properties?: PluginApiSchemas["PropertyValueInput"][];
487
+ name: string;
488
+ is_organization?: boolean;
489
+ emails?: PluginApiSchemas["ContactEmail"][];
490
+ phones?: PluginApiSchemas["ContactPhone"][];
491
+ addresses?: PluginApiSchemas["ContactAddress"][];
492
+ websites?: PluginApiSchemas["ContactWebsite"][];
493
+ initiative_id?: number | null;
494
+ tag_ids?: number[] | null;
495
+ grants?: PluginApiSchemas["ResourceGrantSchema"][];
496
+ };
497
+ /**
498
+ * One of a contact's details: its value, and a short label saying which one
499
+ * it is.
500
+ */
501
+ ContactDetail: {
502
+ label?: string;
503
+ value: string;
504
+ };
505
+ ContactEmail: {
506
+ label?: string;
507
+ value: string;
508
+ };
509
+ ContactListResponse: {
510
+ total_count: number;
511
+ page: number;
512
+ page_size: number;
513
+ has_next: boolean;
514
+ has_prev: boolean;
515
+ items: PluginApiSchemas["ContactSummary"][];
516
+ };
517
+ ContactPhone: {
518
+ label?: string;
519
+ value: string;
520
+ };
521
+ ContactRead: {
522
+ archived_at: string | null;
523
+ can: PluginApiSchemas["ToolCan"];
524
+ id: number;
525
+ initiative_id: number | null;
526
+ community_id: string;
527
+ created_by: string | null;
528
+ created_at: string;
529
+ updated_at: string;
530
+ comments_enabled: boolean;
531
+ tags: PluginApiSchemas["TagSummary"][];
532
+ properties: PluginApiSchemas["PropertySummary"][];
533
+ grants: PluginApiSchemas["ResourceGrantSchema"][];
534
+ name: string;
535
+ is_organization: boolean;
536
+ emails: PluginApiSchemas["ContactDetail"][];
537
+ phones: PluginApiSchemas["ContactDetail"][];
538
+ addresses: PluginApiSchemas["ContactDetail"][];
539
+ websites: PluginApiSchemas["ContactDetail"][];
540
+ };
541
+ ContactSummary: {
542
+ archived_at: string | null;
543
+ can: PluginApiSchemas["ToolCan"];
544
+ id: number;
545
+ initiative_id: number | null;
546
+ community_id: string;
547
+ created_by: string | null;
548
+ created_at: string;
549
+ updated_at: string;
550
+ comments_enabled: boolean;
551
+ tags: PluginApiSchemas["TagSummary"][];
552
+ properties: PluginApiSchemas["PropertySummary"][];
553
+ grants: PluginApiSchemas["ResourceGrantSchema"][];
554
+ name: string;
555
+ is_organization: boolean;
556
+ emails: PluginApiSchemas["ContactDetail"][];
557
+ phones: PluginApiSchemas["ContactDetail"][];
558
+ addresses: PluginApiSchemas["ContactDetail"][];
559
+ websites: PluginApiSchemas["ContactDetail"][];
560
+ };
561
+ /**
562
+ * A change to a contact. Only what is sent is written; a list sent replaces
563
+ * the one there.
564
+ */
565
+ ContactUpdate: {
566
+ name?: string | null;
567
+ is_organization?: boolean | null;
568
+ emails?: PluginApiSchemas["ContactEmail"][] | null;
569
+ phones?: PluginApiSchemas["ContactPhone"][] | null;
570
+ addresses?: PluginApiSchemas["ContactAddress"][] | null;
571
+ websites?: PluginApiSchemas["ContactWebsite"][] | null;
572
+ };
573
+ ContactWebsite: {
574
+ label?: string;
575
+ value: string;
576
+ };
476
577
  /**
477
578
  * What the caller may do to a piece of content, as the server answers it.
478
579
  */
@@ -576,7 +677,6 @@ export interface PluginApiSchemas {
576
677
  view_mode: PluginApiSchemas["CounterViewMode"];
577
678
  position: string;
578
679
  properties: PluginApiSchemas["PropertySummary"][];
579
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
580
680
  created_at: string;
581
681
  updated_at: string;
582
682
  };
@@ -838,12 +938,12 @@ export interface PluginApiSchemas {
838
938
  InitiativeRead: {
839
939
  projects_enabled: boolean;
840
940
  files_enabled: boolean;
841
- queues_enabled: boolean;
842
941
  counter_groups_enabled: boolean;
843
942
  calendars_enabled: boolean;
844
943
  dashboards_enabled: boolean;
845
944
  posts_enabled: boolean;
846
945
  wikis_enabled: boolean;
946
+ contacts_enabled: boolean;
847
947
  name: string;
848
948
  description: string | null;
849
949
  color: string | null;
@@ -878,6 +978,15 @@ export interface PluginApiSchemas {
878
978
  project_count: number;
879
979
  projects_total: number;
880
980
  };
981
+ /**
982
+ * Who owns a definition people define: the initiative (its metadata), or a
983
+ * project or a collection (its properties).
984
+ */
985
+ MetadataOwnerKind: "initiative" | "project" | "collection";
986
+ /**
987
+ * What a metadata definition's values are.
988
+ */
989
+ MetadataType: "text" | "number" | "checkbox" | "date" | "datetime" | "url" | "select" | "multi_select" | "user_reference" | "currency" | "scale" | "link" | "badge" | "json";
881
990
  OccurrenceRequest: {
882
991
  start: string;
883
992
  };
@@ -905,16 +1014,6 @@ export interface PluginApiSchemas {
905
1014
  */
906
1015
  avatar_url?: string | null;
907
1016
  };
908
- /**
909
- * One value an installed plug-in shows on an item: a key its pinned version
910
- * declares as a field there. A list field's value is an array of its
911
- * elements, newest first, each with its `ref`.
912
- */
913
- PluginValueSummary: {
914
- plugin_id: number;
915
- key: string;
916
- value: unknown;
917
- };
918
1017
  PollOptionRead: {
919
1018
  id: number;
920
1019
  text: string;
@@ -1031,7 +1130,6 @@ export interface PluginApiSchemas {
1031
1130
  */
1032
1131
  body: Record<string, unknown>;
1033
1132
  poll: PluginApiSchemas["PollRead"] | null;
1034
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
1035
1133
  };
1036
1134
  PostUpdate: {
1037
1135
  name?: string | null;
@@ -1108,25 +1206,60 @@ export interface PluginApiSchemas {
1108
1206
  start_date?: string | null;
1109
1207
  end_date?: string | null;
1110
1208
  };
1209
+ /**
1210
+ * Definitions of one initiative to delete together, or none of them.
1211
+ */
1212
+ PropertyDefinitionBulkDelete: {
1213
+ initiative_id: number;
1214
+ ids: number[];
1215
+ };
1111
1216
  PropertyDefinitionCreate: {
1112
1217
  name: string;
1113
- type: PluginApiSchemas["PropertyType"];
1218
+ type: PluginApiSchemas["MetadataType"];
1114
1219
  position?: number;
1115
1220
  color?: string | null;
1116
1221
  options?: PluginApiSchemas["PropertyOption"][] | null;
1117
1222
  currency?: PluginApiSchemas["CurrencyCode"] | null;
1118
1223
  initiative_id: number;
1224
+ project_id?: number | null;
1119
1225
  collection_id?: number | null;
1120
1226
  };
1227
+ /**
1228
+ * One owner's definitions, as the initiative's settings list them.
1229
+ */
1230
+ PropertyDefinitionGroup: {
1231
+ owner: PluginApiSchemas["MetadataOwnerKind"];
1232
+ owner_id: number | null;
1233
+ name: string | null;
1234
+ can_edit: boolean;
1235
+ definitions: PluginApiSchemas["PropertyDefinitionRead"][];
1236
+ };
1237
+ /**
1238
+ * An initiative's metadata, then the properties of each project and each
1239
+ * collection in it the reader may edit, each under its owner.
1240
+ */
1241
+ PropertyDefinitionGroups: {
1242
+ groups: PluginApiSchemas["PropertyDefinitionGroup"][];
1243
+ };
1244
+ /**
1245
+ * Properties of one type, from the initiative's projects and collections,
1246
+ * merged into one of its metadata, named `name`.
1247
+ */
1248
+ PropertyDefinitionPromote: {
1249
+ initiative_id: number;
1250
+ ids: number[];
1251
+ name: string;
1252
+ };
1121
1253
  PropertyDefinitionRead: {
1122
1254
  name: string;
1123
- type: PluginApiSchemas["PropertyType"];
1255
+ type: PluginApiSchemas["MetadataType"];
1124
1256
  position: number;
1125
1257
  color: string | null;
1126
1258
  options: PluginApiSchemas["PropertyOption"][] | null;
1127
1259
  currency: PluginApiSchemas["CurrencyCode"] | null;
1128
1260
  id: number;
1129
1261
  initiative_id: number;
1262
+ project_id: number | null;
1130
1263
  collection_id: number | null;
1131
1264
  created_at: string;
1132
1265
  updated_at: string;
@@ -1172,24 +1305,26 @@ export interface PluginApiSchemas {
1172
1305
  PropertySummary: {
1173
1306
  property_id: number;
1174
1307
  name: string;
1175
- type: PluginApiSchemas["PropertyType"];
1308
+ type: PluginApiSchemas["MetadataType"];
1309
+ project_id: number | null;
1310
+ collection_id: number | null;
1311
+ install_id: number | null;
1312
+ key: string | null;
1176
1313
  options: PluginApiSchemas["PropertyOption"][] | null;
1177
1314
  currency: PluginApiSchemas["CurrencyCode"] | null;
1178
1315
  /**
1179
- * Shaped by the property's type. For user_reference, a person: id,
1316
+ * Shaped by the definition's type. For user_reference, a person: id,
1180
1317
  * username, discriminator, display_name and avatar_url, or an PluginPerson
1181
- * when the reader is an installed plug-in.
1318
+ * when the reader is an installed plug-in. A plug-in's value is as the
1319
+ * plug-in wrote it: a list field's an array of its elements, newest first,
1320
+ * each with its ref, and a value with a state the state beside it.
1182
1321
  */
1183
1322
  value: unknown;
1184
1323
  };
1185
1324
  /**
1186
1325
  * What can carry custom property values: every tool and sub-tool.
1187
1326
  */
1188
- PropertyTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "task" | "queue_item" | "calendar_event" | "counter" | "wiki_page" | "collection";
1189
- /**
1190
- * Supported value types for a property definition.
1191
- */
1192
- PropertyType: "text" | "number" | "checkbox" | "date" | "datetime" | "url" | "select" | "multi_select" | "user_reference" | "currency" | "rating";
1327
+ PropertyTarget: "project" | "file" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "contact" | "task" | "calendar_event" | "counter" | "wiki_page" | "collection";
1193
1328
  /**
1194
1329
  * A single (property_id, value) pair submitted by the client.
1195
1330
  */
@@ -1207,121 +1342,6 @@ export interface PluginApiSchemas {
1207
1342
  removed?: number[];
1208
1343
  options?: PluginApiSchemas["PropertyOptionsChange"][];
1209
1344
  };
1210
- QueueCreate: {
1211
- properties?: PluginApiSchemas["PropertyValueInput"][];
1212
- name: string;
1213
- description?: string | null;
1214
- initiative_id: number;
1215
- grants?: PluginApiSchemas["ResourceGrantSchema"][];
1216
- };
1217
- QueueItemCreate: {
1218
- properties?: PluginApiSchemas["PropertyValueInput"][];
1219
- label: string;
1220
- position?: number;
1221
- color?: string | null;
1222
- notes?: string | null;
1223
- is_visible?: boolean;
1224
- user_id?: string | null;
1225
- tag_ids?: number[] | null;
1226
- task_ids?: number[] | null;
1227
- };
1228
- QueueItemRead: {
1229
- label: string;
1230
- position: number;
1231
- color: string | null;
1232
- notes: string | null;
1233
- is_visible: boolean;
1234
- id: number;
1235
- queue_id: number;
1236
- user_id: string | null;
1237
- user: PluginApiSchemas["PluginPerson"] | null;
1238
- tags: PluginApiSchemas["TagSummary"][];
1239
- properties: PluginApiSchemas["PropertySummary"][];
1240
- attachment_count: number;
1241
- held_at_round: number | null;
1242
- created_by: string | null;
1243
- created_at: string;
1244
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
1245
- };
1246
- QueueItemUpdate: {
1247
- properties?: PluginApiSchemas["PropertyValueInput"][] | null;
1248
- label?: string | null;
1249
- position?: number | null;
1250
- user_id?: string | null;
1251
- color?: string | null;
1252
- notes?: string | null;
1253
- is_visible?: boolean | null;
1254
- tag_ids?: number[] | null;
1255
- notes_base?: string | null;
1256
- };
1257
- QueueListResponse: {
1258
- total_count: number;
1259
- page: number;
1260
- page_size: number;
1261
- has_next: boolean;
1262
- has_prev: boolean;
1263
- items: PluginApiSchemas["QueueSummary"][];
1264
- };
1265
- QueueRead: {
1266
- archived_at: string | null;
1267
- can: PluginApiSchemas["ToolCan"];
1268
- id: number;
1269
- initiative_id: number;
1270
- community_id: string;
1271
- created_by: string | null;
1272
- created_at: string;
1273
- updated_at: string;
1274
- comments_enabled: boolean;
1275
- tags: PluginApiSchemas["TagSummary"][];
1276
- properties: PluginApiSchemas["PropertySummary"][];
1277
- grants: PluginApiSchemas["ResourceGrantSchema"][];
1278
- name: string;
1279
- description: string | null;
1280
- current_round: number;
1281
- is_active: boolean;
1282
- preview: PluginApiSchemas["QueueTurnPreview"][] | null;
1283
- items: PluginApiSchemas["QueueItemRead"][];
1284
- current_item_id: number | null;
1285
- };
1286
- /**
1287
- * Options for releasing a held queue item back into the rotation.
1288
- */
1289
- QueueReleaseRequest: {
1290
- reposition?: boolean;
1291
- };
1292
- QueueSummary: {
1293
- archived_at: string | null;
1294
- can: PluginApiSchemas["ToolCan"];
1295
- id: number;
1296
- initiative_id: number;
1297
- community_id: string;
1298
- created_by: string | null;
1299
- created_at: string;
1300
- updated_at: string;
1301
- comments_enabled: boolean;
1302
- tags: PluginApiSchemas["TagSummary"][];
1303
- properties: PluginApiSchemas["PropertySummary"][];
1304
- grants: PluginApiSchemas["ResourceGrantSchema"][];
1305
- name: string;
1306
- description: string | null;
1307
- current_round: number;
1308
- is_active: boolean;
1309
- preview: PluginApiSchemas["QueueTurnPreview"][] | null;
1310
- };
1311
- /**
1312
- * One turn as a list's card draws it: who, in what colour, and whether it is
1313
- * theirs now.
1314
- */
1315
- QueueTurnPreview: {
1316
- id: number;
1317
- label: string;
1318
- color: string | null;
1319
- current: boolean;
1320
- };
1321
- QueueUpdate: {
1322
- name?: string | null;
1323
- description?: string | null;
1324
- };
1325
1345
  RSVPStatus: "pending" | "accepted" | "declined" | "tentative";
1326
1346
  /**
1327
1347
  * One emoji on one target, and who chose it.
@@ -1359,7 +1379,7 @@ export interface PluginApiSchemas {
1359
1379
  all_initiative_members?: boolean;
1360
1380
  plugin_install_id?: number | null;
1361
1381
  };
1362
- SearchEntityType: "calendar" | "calendar_event" | "collection" | "comment" | "counter" | "counter_group" | "dashboard" | "file" | "post" | "project" | "queue" | "queue_item" | "tag" | "task" | "wiki" | "wiki_page";
1382
+ SearchEntityType: "calendar" | "calendar_event" | "collection" | "comment" | "contact" | "counter" | "counter_group" | "dashboard" | "file" | "post" | "project" | "tag" | "task" | "wiki" | "wiki_page";
1363
1383
  /**
1364
1384
  * A jump-to target for the command palette: enough to render and route.
1365
1385
  */
@@ -1416,7 +1436,7 @@ export interface PluginApiSchemas {
1416
1436
  /**
1417
1437
  * Entity types a bulk tag edit can address.
1418
1438
  */
1419
- TagTarget: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "task" | "queue_item" | "calendar_event" | "wiki_page" | "collection";
1439
+ TagTarget: "project" | "file" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "contact" | "task" | "calendar_event" | "wiki_page" | "collection";
1420
1440
  TaskCreate: {
1421
1441
  properties?: PluginApiSchemas["PropertyValueInput"][];
1422
1442
  title: string;
@@ -1480,7 +1500,6 @@ export interface PluginApiSchemas {
1480
1500
  subtask_progress: PluginApiSchemas["ChecklistProgress"] | null;
1481
1501
  tags: PluginApiSchemas["TagSummary"][];
1482
1502
  properties: PluginApiSchemas["PropertySummary"][];
1483
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
1484
1503
  };
1485
1504
  TaskListResponse: {
1486
1505
  total_count: number;
@@ -1493,6 +1512,7 @@ export interface PluginApiSchemas {
1493
1512
  };
1494
1513
  TaskMoveRequest: {
1495
1514
  target_project_id: number;
1515
+ changes?: PluginApiSchemas["TaskUpdate"] | null;
1496
1516
  };
1497
1517
  /**
1498
1518
  * The task a task is part of: the target of its `part_of` edge.
@@ -1550,7 +1570,6 @@ export interface PluginApiSchemas {
1550
1570
  subtask_progress: PluginApiSchemas["ChecklistProgress"] | null;
1551
1571
  tags: PluginApiSchemas["TagSummary"][];
1552
1572
  properties: PluginApiSchemas["PropertySummary"][];
1553
- plugin_values: PluginApiSchemas["PluginValueSummary"][];
1554
1573
  };
1555
1574
  TaskStatusCategory: "backlog" | "todo" | "in_progress" | "done";
1556
1575
  TaskStatusRead: {
@@ -1630,6 +1649,7 @@ export interface PluginApiSchemas {
1630
1649
  tz?: string | null;
1631
1650
  recurrence_strategy?: PluginApiSchemas["RecurrenceStrategy"] | null;
1632
1651
  recurrence_limit?: number | null;
1652
+ merge_properties?: boolean;
1633
1653
  tag_ids?: number[] | null;
1634
1654
  checklist?: PluginApiSchemas["ChecklistItemInput"][] | null;
1635
1655
  parent_task_id?: number | null;
@@ -1647,7 +1667,7 @@ export interface PluginApiSchemas {
1647
1667
  TimelineResponse: {
1648
1668
  buckets: PluginApiSchemas["TimelineBucket"][];
1649
1669
  };
1650
- Tool: "project" | "file" | "queue" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki";
1670
+ Tool: "project" | "file" | "counter_group" | "calendar" | "dashboard" | "post" | "wiki" | "contact";
1651
1671
  /**
1652
1672
  * What the caller may do to one of a tool's rows
1653
1673
  * (`permissions.client_access`).
@@ -2038,56 +2058,6 @@ export interface PluginApiOperations {
2038
2058
  body: PluginApiSchemas["FileCreate"];
2039
2059
  answer: PluginApiSchemas["FileRead"];
2040
2060
  };
2041
- list_queues: {
2042
- query: {
2043
- initiative_id?: number | null;
2044
- /**
2045
- * Full-text match over the row — its name and its description. Reads the
2046
- * same index the search page does, so a list's filter box and a search
2047
- * agree about what matches.
2048
- */
2049
- search?: string | null;
2050
- /**
2051
- * Order by one of: name, initiative, updated_at. Omit for this tool's own
2052
- * default order.
2053
- */
2054
- sort_by?: string | null;
2055
- /**
2056
- * asc (default) or desc.
2057
- */
2058
- sort_dir?: string | null;
2059
- /**
2060
- * Only queues carrying any of these tags.
2061
- */
2062
- tag_ids?: number[] | null;
2063
- /**
2064
- * JSON-encoded list of property-value filters, e.g. `[{"property_id": 12,
2065
- * "op": "eq", "value": "live"}]`. Maximum 5 conditions per request.
2066
- */
2067
- property_filters?: string | null;
2068
- /**
2069
- * true lists what has been archived instead of what is live. Omit for the
2070
- * live list, which is what every other view shows.
2071
- */
2072
- archived?: boolean | null;
2073
- /**
2074
- * Only running queues, or only stopped ones.
2075
- */
2076
- is_active?: boolean | null;
2077
- /**
2078
- * Also send what each row's card shows of what is inside it, read for the
2079
- * whole page at once.
2080
- */
2081
- include_preview?: boolean;
2082
- page?: number;
2083
- page_size?: number;
2084
- };
2085
- answer: PluginApiSchemas["QueueListResponse"];
2086
- };
2087
- create_queue: {
2088
- body: PluginApiSchemas["QueueCreate"];
2089
- answer: PluginApiSchemas["QueueRead"];
2090
- };
2091
2061
  list_counter_groups: {
2092
2062
  query: {
2093
2063
  initiative_id?: number | null;
@@ -2272,6 +2242,50 @@ export interface PluginApiOperations {
2272
2242
  body: PluginApiSchemas["WikiCreate"];
2273
2243
  answer: PluginApiSchemas["WikiRead"];
2274
2244
  };
2245
+ list_contacts: {
2246
+ query: {
2247
+ initiative_id?: number | null;
2248
+ scope?: "community" | null;
2249
+ /**
2250
+ * Full-text match over the contact's name, through the same index the
2251
+ * search page reads.
2252
+ */
2253
+ search?: string | null;
2254
+ /**
2255
+ * Order by one of: name, initiative, updated_at. Omit for by name.
2256
+ */
2257
+ sort_by?: string | null;
2258
+ /**
2259
+ * asc (default) or desc.
2260
+ */
2261
+ sort_dir?: string | null;
2262
+ /**
2263
+ * Only contacts carrying any of these tags.
2264
+ */
2265
+ tag_ids?: number[] | null;
2266
+ /**
2267
+ * JSON-encoded list of property-value filters, e.g. `[{"property_id": 12,
2268
+ * "op": "eq", "value": "live"}]`. Maximum 5 conditions per request.
2269
+ */
2270
+ property_filters?: string | null;
2271
+ /**
2272
+ * true lists what has been archived instead of what is live. Omit for the
2273
+ * live list, which is what every other view shows.
2274
+ */
2275
+ archived?: boolean | null;
2276
+ /**
2277
+ * Only organizations (true) or only people (false).
2278
+ */
2279
+ is_organization?: boolean | null;
2280
+ page?: number;
2281
+ page_size?: number;
2282
+ };
2283
+ answer: PluginApiSchemas["ContactListResponse"];
2284
+ };
2285
+ create_contact: {
2286
+ body: PluginApiSchemas["ContactCreate"];
2287
+ answer: PluginApiSchemas["ContactRead"];
2288
+ };
2275
2289
  list_collection_files: {
2276
2290
  path: {
2277
2291
  collection_id: number;
@@ -2337,7 +2351,7 @@ export interface PluginApiOperations {
2337
2351
  path: {
2338
2352
  collection_id: number;
2339
2353
  };
2340
- body: PluginApiSchemas["CollectionFiles"];
2354
+ body: PluginApiSchemas["CollectionFilesAdd"];
2341
2355
  answer: PluginApiSchemas["CollectionRead"];
2342
2356
  };
2343
2357
  remove_collection_files: {
@@ -2558,12 +2572,12 @@ export interface PluginApiOperations {
2558
2572
  collection_id?: number | null;
2559
2573
  project_id?: number | null;
2560
2574
  file_id?: number | null;
2561
- queue_id?: number | null;
2562
2575
  counter_group_id?: number | null;
2563
2576
  calendar_id?: number | null;
2564
2577
  dashboard_id?: number | null;
2565
2578
  post_id?: number | null;
2566
2579
  wiki_id?: number | null;
2580
+ contact_id?: number | null;
2567
2581
  };
2568
2582
  answer: PluginApiSchemas["CommentListResponse"];
2569
2583
  };
@@ -2681,14 +2695,14 @@ export interface PluginApiOperations {
2681
2695
  body: PluginApiSchemas["CollectionUpdate"];
2682
2696
  answer: PluginApiSchemas["CollectionRead"];
2683
2697
  };
2684
- get_collection_file_fields: {
2698
+ get_collection_file_metadata: {
2685
2699
  path: {
2686
2700
  collection_id: number;
2687
2701
  file_id: number;
2688
2702
  };
2689
2703
  answer: PluginApiSchemas["PropertySummary"][];
2690
2704
  };
2691
- set_collection_file_fields: {
2705
+ set_collection_file_metadata: {
2692
2706
  path: {
2693
2707
  collection_id: number;
2694
2708
  file_id: number;
@@ -2696,112 +2710,6 @@ export interface PluginApiOperations {
2696
2710
  body: PluginApiSchemas["PropertyValuesSetRequest"];
2697
2711
  answer: PluginApiSchemas["PropertySummary"][];
2698
2712
  };
2699
- read_queue: {
2700
- path: {
2701
- queue_id: number;
2702
- };
2703
- query: {
2704
- /**
2705
- * Also return the resource if it is in the trash. For reading a resource
2706
- * back after a deleted event — the row still exists until retention
2707
- * purges it, and access is checked exactly as for a live one.
2708
- */
2709
- include_deleted?: boolean;
2710
- };
2711
- answer: PluginApiSchemas["QueueRead"];
2712
- };
2713
- update_queue: {
2714
- path: {
2715
- queue_id: number;
2716
- };
2717
- body: PluginApiSchemas["QueueUpdate"];
2718
- answer: PluginApiSchemas["QueueRead"];
2719
- };
2720
- add_queue_item: {
2721
- path: {
2722
- queue_id: number;
2723
- };
2724
- body: PluginApiSchemas["QueueItemCreate"];
2725
- answer: PluginApiSchemas["QueueItemRead"];
2726
- };
2727
- start_queue: {
2728
- path: {
2729
- queue_id: number;
2730
- };
2731
- answer: PluginApiSchemas["QueueRead"];
2732
- };
2733
- stop_queue: {
2734
- path: {
2735
- queue_id: number;
2736
- };
2737
- answer: PluginApiSchemas["QueueRead"];
2738
- };
2739
- advance_turn: {
2740
- path: {
2741
- queue_id: number;
2742
- };
2743
- answer: PluginApiSchemas["QueueRead"];
2744
- };
2745
- previous_turn: {
2746
- path: {
2747
- queue_id: number;
2748
- };
2749
- answer: PluginApiSchemas["QueueRead"];
2750
- };
2751
- set_active_item: {
2752
- path: {
2753
- queue_id: number;
2754
- item_id: number;
2755
- };
2756
- answer: PluginApiSchemas["QueueRead"];
2757
- };
2758
- reset_queue: {
2759
- path: {
2760
- queue_id: number;
2761
- };
2762
- answer: PluginApiSchemas["QueueRead"];
2763
- };
2764
- hold_current_turn: {
2765
- path: {
2766
- queue_id: number;
2767
- };
2768
- answer: PluginApiSchemas["QueueRead"];
2769
- };
2770
- release_held_item: {
2771
- path: {
2772
- queue_id: number;
2773
- item_id: number;
2774
- };
2775
- body: PluginApiSchemas["QueueReleaseRequest"];
2776
- answer: PluginApiSchemas["QueueRead"];
2777
- };
2778
- read_queue_item: {
2779
- path: {
2780
- item_id: number;
2781
- };
2782
- query: {
2783
- /**
2784
- * Also return the resource if it is in the trash. For reading a resource
2785
- * back after a deleted event — the row still exists until retention
2786
- * purges it, and access is checked exactly as for a live one.
2787
- */
2788
- include_deleted?: boolean;
2789
- };
2790
- answer: PluginApiSchemas["QueueItemRead"];
2791
- };
2792
- update_queue_item: {
2793
- path: {
2794
- item_id: number;
2795
- };
2796
- body: PluginApiSchemas["QueueItemUpdate"];
2797
- answer: PluginApiSchemas["QueueItemRead"];
2798
- };
2799
- duplicate_queue_item: {
2800
- path: {
2801
- item_id: number;
2802
- };
2803
- answer: PluginApiSchemas["QueueItemRead"];
2804
- };
2805
2713
  read_counter_group: {
2806
2714
  path: {
2807
2715
  group_id: number;
@@ -2991,6 +2899,19 @@ export interface PluginApiOperations {
2991
2899
  body: PluginApiSchemas["WikiPageMove"];
2992
2900
  answer: PluginApiSchemas["WikiPageRead"];
2993
2901
  };
2902
+ read_contact: {
2903
+ path: {
2904
+ contact_id: number;
2905
+ };
2906
+ answer: PluginApiSchemas["ContactRead"];
2907
+ };
2908
+ update_contact: {
2909
+ path: {
2910
+ contact_id: number;
2911
+ };
2912
+ body: PluginApiSchemas["ContactUpdate"];
2913
+ answer: PluginApiSchemas["ContactRead"];
2914
+ };
2994
2915
  read_calendar_event: {
2995
2916
  path: {
2996
2917
  event_id: number;
@@ -3092,13 +3013,6 @@ export interface PluginApiOperations {
3092
3013
  body: PluginApiSchemas["ResourceGrantSchema"][];
3093
3014
  answer: PluginApiSchemas["FileRead"];
3094
3015
  };
3095
- set_queue_grants: {
3096
- path: {
3097
- queue_id: number;
3098
- };
3099
- body: PluginApiSchemas["ResourceGrantSchema"][];
3100
- answer: PluginApiSchemas["QueueRead"];
3101
- };
3102
3016
  set_counter_group_grants: {
3103
3017
  path: {
3104
3018
  group_id: number;
@@ -3127,6 +3041,13 @@ export interface PluginApiOperations {
3127
3041
  body: PluginApiSchemas["ResourceGrantSchema"][];
3128
3042
  answer: PluginApiSchemas["WikiRead"];
3129
3043
  };
3044
+ set_contact_grants: {
3045
+ path: {
3046
+ contact_id: number;
3047
+ };
3048
+ body: PluginApiSchemas["ResourceGrantSchema"][];
3049
+ answer: PluginApiSchemas["ContactRead"];
3050
+ };
3130
3051
  duplicate_project: {
3131
3052
  path: {
3132
3053
  project_id: number;
@@ -3141,13 +3062,6 @@ export interface PluginApiOperations {
3141
3062
  body: PluginApiSchemas["ToolDuplicateRequest"] | null;
3142
3063
  answer: PluginApiSchemas["FileRead"];
3143
3064
  };
3144
- duplicate_queue: {
3145
- path: {
3146
- queue_id: number;
3147
- };
3148
- body: PluginApiSchemas["ToolDuplicateRequest"] | null;
3149
- answer: PluginApiSchemas["QueueRead"];
3150
- };
3151
3065
  duplicate_counter_group: {
3152
3066
  path: {
3153
3067
  group_id: number;
@@ -3176,6 +3090,13 @@ export interface PluginApiOperations {
3176
3090
  body: PluginApiSchemas["ToolDuplicateRequest"] | null;
3177
3091
  answer: PluginApiSchemas["WikiRead"];
3178
3092
  };
3093
+ duplicate_contact: {
3094
+ path: {
3095
+ contact_id: number;
3096
+ };
3097
+ body: PluginApiSchemas["ToolDuplicateRequest"] | null;
3098
+ answer: PluginApiSchemas["ContactRead"];
3099
+ };
3179
3100
  suggest_community: {
3180
3101
  query: {
3181
3102
  /**
@@ -3184,9 +3105,9 @@ export interface PluginApiOperations {
3184
3105
  search: string;
3185
3106
  /**
3186
3107
  * Restrict to these entity types. Omit for the default scope (calendar,
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.
3108
+ * calendar_event, collection, contact, counter, counter_group, dashboard,
3109
+ * file, post, project, tag, task, wiki, wiki_page); naming a type reaches
3110
+ * it explicitly.
3190
3111
  */
3191
3112
  types?: PluginApiSchemas["SearchEntityType"][] | null;
3192
3113
  /**
@@ -3212,7 +3133,11 @@ export interface PluginApiOperations {
3212
3133
  query: {
3213
3134
  initiative_id?: number | null;
3214
3135
  /**
3215
- * List this collection's own fields instead of properties.
3136
+ * List this project's metadata instead of properties.
3137
+ */
3138
+ project_id?: number | null;
3139
+ /**
3140
+ * List this collection's metadata instead of properties.
3216
3141
  */
3217
3142
  collection_id?: number | null;
3218
3143
  };
@@ -3222,6 +3147,20 @@ export interface PluginApiOperations {
3222
3147
  body: PluginApiSchemas["PropertyDefinitionCreate"];
3223
3148
  answer: PluginApiSchemas["PropertyDefinitionRead"];
3224
3149
  };
3150
+ list_property_definitions_by_owner: {
3151
+ query: {
3152
+ initiative_id: number;
3153
+ };
3154
+ answer: PluginApiSchemas["PropertyDefinitionGroups"];
3155
+ };
3156
+ delete_property_definitions: {
3157
+ body: PluginApiSchemas["PropertyDefinitionBulkDelete"];
3158
+ answer: void;
3159
+ };
3160
+ promote_property_definitions: {
3161
+ body: PluginApiSchemas["PropertyDefinitionPromote"];
3162
+ answer: PluginApiSchemas["PropertyDefinitionRead"];
3163
+ };
3225
3164
  delete_property_definition: {
3226
3165
  path: {
3227
3166
  definition_id: number;
@@ -3301,7 +3240,7 @@ export declare const pluginApiOperations: {
3301
3240
  readonly path: "/webhooks/subscriptions";
3302
3241
  readonly scope: {
3303
3242
  readonly per: "event_type";
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"];
3243
+ readonly any_of: readonly ["calendars:read", "comments:read", "contacts:read", "counter_groups:read", "dashboards:read", "files:read", "initiatives:read", "posts:read", "projects:read", "tags:read", "wikis:read"];
3305
3244
  };
3306
3245
  };
3307
3246
  readonly delete_subscription: {
@@ -3309,7 +3248,7 @@ export declare const pluginApiOperations: {
3309
3248
  readonly path: "/webhooks/subscriptions/{subscription_id}";
3310
3249
  readonly scope: {
3311
3250
  readonly per: "event_type";
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"];
3251
+ readonly any_of: readonly ["calendars:read", "comments:read", "contacts:read", "counter_groups:read", "dashboards:read", "files:read", "initiatives:read", "posts:read", "projects:read", "tags:read", "wikis:read"];
3313
3252
  };
3314
3253
  };
3315
3254
  readonly list_projects: {
@@ -3332,16 +3271,6 @@ export declare const pluginApiOperations: {
3332
3271
  readonly path: "/files/";
3333
3272
  readonly scope: "files:write";
3334
3273
  };
3335
- readonly list_queues: {
3336
- readonly method: "GET";
3337
- readonly path: "/queues/";
3338
- readonly scope: "queues:read";
3339
- };
3340
- readonly create_queue: {
3341
- readonly method: "POST";
3342
- readonly path: "/queues/";
3343
- readonly scope: "queues:write";
3344
- };
3345
3274
  readonly list_counter_groups: {
3346
3275
  readonly method: "GET";
3347
3276
  readonly path: "/counter-groups/";
@@ -3382,6 +3311,16 @@ export declare const pluginApiOperations: {
3382
3311
  readonly path: "/wikis/";
3383
3312
  readonly scope: "wikis:write";
3384
3313
  };
3314
+ readonly list_contacts: {
3315
+ readonly method: "GET";
3316
+ readonly path: "/contacts/";
3317
+ readonly scope: "contacts:read";
3318
+ };
3319
+ readonly create_contact: {
3320
+ readonly method: "POST";
3321
+ readonly path: "/contacts/";
3322
+ readonly scope: "contacts:write";
3323
+ };
3385
3324
  readonly list_collection_files: {
3386
3325
  readonly method: "GET";
3387
3326
  readonly path: "/collections/{collection_id}/files";
@@ -3564,86 +3503,16 @@ export declare const pluginApiOperations: {
3564
3503
  readonly path: "/collections/{collection_id}";
3565
3504
  readonly scope: "files:write";
3566
3505
  };
3567
- readonly get_collection_file_fields: {
3506
+ readonly get_collection_file_metadata: {
3568
3507
  readonly method: "GET";
3569
- readonly path: "/collections/{collection_id}/files/{file_id}/fields";
3508
+ readonly path: "/collections/{collection_id}/files/{file_id}/metadata";
3570
3509
  readonly scope: "files:read";
3571
3510
  };
3572
- readonly set_collection_file_fields: {
3511
+ readonly set_collection_file_metadata: {
3573
3512
  readonly method: "PUT";
3574
- readonly path: "/collections/{collection_id}/files/{file_id}/fields";
3513
+ readonly path: "/collections/{collection_id}/files/{file_id}/metadata";
3575
3514
  readonly scope: "files:write";
3576
3515
  };
3577
- readonly read_queue: {
3578
- readonly method: "GET";
3579
- readonly path: "/queues/{queue_id}";
3580
- readonly scope: "queues:read";
3581
- };
3582
- readonly update_queue: {
3583
- readonly method: "PATCH";
3584
- readonly path: "/queues/{queue_id}";
3585
- readonly scope: "queues:write";
3586
- };
3587
- readonly add_queue_item: {
3588
- readonly method: "POST";
3589
- readonly path: "/queues/{queue_id}/items";
3590
- readonly scope: "queues:write";
3591
- };
3592
- readonly start_queue: {
3593
- readonly method: "POST";
3594
- readonly path: "/queues/{queue_id}/start";
3595
- readonly scope: "queues:write";
3596
- };
3597
- readonly stop_queue: {
3598
- readonly method: "POST";
3599
- readonly path: "/queues/{queue_id}/stop";
3600
- readonly scope: "queues:write";
3601
- };
3602
- readonly advance_turn: {
3603
- readonly method: "POST";
3604
- readonly path: "/queues/{queue_id}/next";
3605
- readonly scope: "queues:write";
3606
- };
3607
- readonly previous_turn: {
3608
- readonly method: "POST";
3609
- readonly path: "/queues/{queue_id}/previous";
3610
- readonly scope: "queues:write";
3611
- };
3612
- readonly set_active_item: {
3613
- readonly method: "POST";
3614
- readonly path: "/queues/{queue_id}/set-active/{item_id}";
3615
- readonly scope: "queues:write";
3616
- };
3617
- readonly reset_queue: {
3618
- readonly method: "POST";
3619
- readonly path: "/queues/{queue_id}/reset";
3620
- readonly scope: "queues:write";
3621
- };
3622
- readonly hold_current_turn: {
3623
- readonly method: "POST";
3624
- readonly path: "/queues/{queue_id}/hold";
3625
- readonly scope: "queues:write";
3626
- };
3627
- readonly release_held_item: {
3628
- readonly method: "POST";
3629
- readonly path: "/queues/{queue_id}/release/{item_id}";
3630
- readonly scope: "queues:write";
3631
- };
3632
- readonly read_queue_item: {
3633
- readonly method: "GET";
3634
- readonly path: "/queue-items/{item_id}";
3635
- readonly scope: "queues:read";
3636
- };
3637
- readonly update_queue_item: {
3638
- readonly method: "PATCH";
3639
- readonly path: "/queue-items/{item_id}";
3640
- readonly scope: "queues:write";
3641
- };
3642
- readonly duplicate_queue_item: {
3643
- readonly method: "POST";
3644
- readonly path: "/queue-items/{item_id}/duplicate";
3645
- readonly scope: "queues:write";
3646
- };
3647
3516
  readonly read_counter_group: {
3648
3517
  readonly method: "GET";
3649
3518
  readonly path: "/counter-groups/{group_id}";
@@ -3764,6 +3633,16 @@ export declare const pluginApiOperations: {
3764
3633
  readonly path: "/wiki-pages/{page_id}/move";
3765
3634
  readonly scope: "wikis:write";
3766
3635
  };
3636
+ readonly read_contact: {
3637
+ readonly method: "GET";
3638
+ readonly path: "/contacts/{contact_id}";
3639
+ readonly scope: "contacts:read";
3640
+ };
3641
+ readonly update_contact: {
3642
+ readonly method: "PATCH";
3643
+ readonly path: "/contacts/{contact_id}";
3644
+ readonly scope: "contacts:write";
3645
+ };
3767
3646
  readonly read_calendar_event: {
3768
3647
  readonly method: "GET";
3769
3648
  readonly path: "/calendar-events/{event_id}";
@@ -3829,11 +3708,6 @@ export declare const pluginApiOperations: {
3829
3708
  readonly path: "/files/{file_id}/grants";
3830
3709
  readonly scope: "sharing:write";
3831
3710
  };
3832
- readonly set_queue_grants: {
3833
- readonly method: "PUT";
3834
- readonly path: "/queues/{queue_id}/grants";
3835
- readonly scope: "sharing:write";
3836
- };
3837
3711
  readonly set_counter_group_grants: {
3838
3712
  readonly method: "PUT";
3839
3713
  readonly path: "/counter-groups/{group_id}/grants";
@@ -3854,6 +3728,11 @@ export declare const pluginApiOperations: {
3854
3728
  readonly path: "/wikis/{wiki_id}/grants";
3855
3729
  readonly scope: "sharing:write";
3856
3730
  };
3731
+ readonly set_contact_grants: {
3732
+ readonly method: "PUT";
3733
+ readonly path: "/contacts/{contact_id}/grants";
3734
+ readonly scope: "sharing:write";
3735
+ };
3857
3736
  readonly duplicate_project: {
3858
3737
  readonly method: "POST";
3859
3738
  readonly path: "/projects/{project_id}/duplicate";
@@ -3864,11 +3743,6 @@ export declare const pluginApiOperations: {
3864
3743
  readonly path: "/files/{file_id}/duplicate";
3865
3744
  readonly scope: "files:write";
3866
3745
  };
3867
- readonly duplicate_queue: {
3868
- readonly method: "POST";
3869
- readonly path: "/queues/{queue_id}/duplicate";
3870
- readonly scope: "queues:write";
3871
- };
3872
3746
  readonly duplicate_counter_group: {
3873
3747
  readonly method: "POST";
3874
3748
  readonly path: "/counter-groups/{group_id}/duplicate";
@@ -3889,12 +3763,17 @@ export declare const pluginApiOperations: {
3889
3763
  readonly path: "/wikis/{wiki_id}/duplicate";
3890
3764
  readonly scope: "wikis:write";
3891
3765
  };
3766
+ readonly duplicate_contact: {
3767
+ readonly method: "POST";
3768
+ readonly path: "/contacts/{contact_id}/duplicate";
3769
+ readonly scope: "contacts:write";
3770
+ };
3892
3771
  readonly suggest_community: {
3893
3772
  readonly method: "GET";
3894
3773
  readonly path: "/search/suggest";
3895
3774
  readonly scope: {
3896
3775
  readonly per: "entity_type";
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"];
3776
+ readonly any_of: readonly ["calendars:read", "comments:read", "contacts:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "tags:read", "wikis:read"];
3898
3777
  };
3899
3778
  };
3900
3779
  readonly list_property_definitions: {
@@ -3902,31 +3781,55 @@ export declare const pluginApiOperations: {
3902
3781
  readonly path: "/property-definitions/";
3903
3782
  readonly scope: {
3904
3783
  readonly per: "tool";
3905
- readonly any_of: readonly ["calendars:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "properties:read", "queues:read", "wikis:read"];
3784
+ readonly any_of: readonly ["calendars:read", "contacts:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "properties:read", "wikis:read"];
3906
3785
  };
3907
3786
  };
3908
3787
  readonly create_property_definition: {
3909
3788
  readonly method: "POST";
3910
3789
  readonly path: "/property-definitions/";
3911
3790
  readonly scope: {
3912
- readonly per: "property_scope";
3913
- readonly any_of: readonly ["files:write", "properties:write"];
3791
+ readonly per: "owner's_scope";
3792
+ readonly any_of: readonly ["files:write", "projects:write", "properties:write"];
3793
+ };
3794
+ };
3795
+ readonly list_property_definitions_by_owner: {
3796
+ readonly method: "GET";
3797
+ readonly path: "/property-definitions/by-owner";
3798
+ readonly scope: {
3799
+ readonly per: "tool";
3800
+ readonly any_of: readonly ["calendars:read", "contacts:read", "counter_groups:read", "dashboards:read", "files:read", "posts:read", "projects:read", "properties:read", "wikis:read"];
3801
+ };
3802
+ };
3803
+ readonly delete_property_definitions: {
3804
+ readonly method: "POST";
3805
+ readonly path: "/property-definitions/bulk-delete";
3806
+ readonly scope: {
3807
+ readonly per: "owner's_scope";
3808
+ readonly any_of: readonly ["files:write", "projects:write", "properties:write"];
3809
+ };
3810
+ };
3811
+ readonly promote_property_definitions: {
3812
+ readonly method: "POST";
3813
+ readonly path: "/property-definitions/promote";
3814
+ readonly scope: {
3815
+ readonly per: "owner's_scope";
3816
+ readonly any_of: readonly ["files:write", "projects:write", "properties:write"];
3914
3817
  };
3915
3818
  };
3916
3819
  readonly delete_property_definition: {
3917
3820
  readonly method: "DELETE";
3918
3821
  readonly path: "/property-definitions/{definition_id}";
3919
3822
  readonly scope: {
3920
- readonly per: "property_scope";
3921
- readonly any_of: readonly ["files:write", "properties:write"];
3823
+ readonly per: "owner's_scope";
3824
+ readonly any_of: readonly ["files:write", "projects:write", "properties:write"];
3922
3825
  };
3923
3826
  };
3924
3827
  readonly update_property_definition: {
3925
3828
  readonly method: "PATCH";
3926
3829
  readonly path: "/property-definitions/{definition_id}";
3927
3830
  readonly scope: {
3928
- readonly per: "property_scope";
3929
- readonly any_of: readonly ["files:write", "properties:write"];
3831
+ readonly per: "owner's_scope";
3832
+ readonly any_of: readonly ["files:write", "projects:write", "properties:write"];
3930
3833
  };
3931
3834
  };
3932
3835
  readonly set_properties: {
@@ -3938,14 +3841,13 @@ export declare const pluginApiOperations: {
3938
3841
  readonly calendar: "calendars:write";
3939
3842
  readonly calendar_event: "calendars:write";
3940
3843
  readonly collection: "files:write";
3844
+ readonly contact: "contacts:write";
3941
3845
  readonly counter: "counter_groups:write";
3942
3846
  readonly counter_group: "counter_groups:write";
3943
3847
  readonly dashboard: "dashboards:write";
3944
3848
  readonly file: "files:write";
3945
3849
  readonly post: "posts:write";
3946
3850
  readonly project: "projects:write";
3947
- readonly queue: "queues:write";
3948
- readonly queue_item: "queues:write";
3949
3851
  readonly task: "projects:write";
3950
3852
  readonly wiki: "wikis:write";
3951
3853
  readonly wiki_page: "wikis:write";
@@ -3960,12 +3862,12 @@ export declare const pluginApiOperations: {
3960
3862
  readonly scopes: {
3961
3863
  readonly calendar: "calendars:write";
3962
3864
  readonly collection: "files:write";
3865
+ readonly contact: "contacts:write";
3963
3866
  readonly counter_group: "counter_groups:write";
3964
3867
  readonly dashboard: "dashboards:write";
3965
3868
  readonly file: "files:write";
3966
3869
  readonly post: "posts:write";
3967
3870
  readonly project: "projects:write";
3968
- readonly queue: "queues:write";
3969
3871
  readonly task: "projects:write";
3970
3872
  readonly wiki: "wikis:write";
3971
3873
  };
@@ -3990,7 +3892,7 @@ export declare class PluginApi {
3990
3892
  /**
3991
3893
  * Register a new webhook subscription.
3992
3894
  *
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`.
3895
+ * `POST /webhooks/subscriptions`, needs one of `calendars:read`, `comments:read`, `contacts:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `initiatives:read`, `posts:read`, `projects:read`, `tags:read`, `wikis:read`.
3994
3896
  */
3995
3897
  createSubscription(args: {
3996
3898
  body: PluginApiOperations["create_subscription"]["body"];
@@ -4001,7 +3903,7 @@ export declare class PluginApi {
4001
3903
  * installed plug-in reaches only the subscriptions it registered, and any
4002
3904
  * other is a 404.
4003
3905
  *
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`.
3906
+ * `DELETE /webhooks/subscriptions/{subscription_id}`, needs one of `calendars:read`, `comments:read`, `contacts:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `initiatives:read`, `posts:read`, `projects:read`, `tags:read`, `wikis:read`.
4005
3907
  */
4006
3908
  deleteSubscription(args: {
4007
3909
  path: PluginApiOperations["delete_subscription"]["path"];
@@ -4038,22 +3940,6 @@ export declare class PluginApi {
4038
3940
  createFile(args: {
4039
3941
  body: PluginApiOperations["create_file"]["body"];
4040
3942
  }): Promise<PluginApiOperations["create_file"]["answer"]>;
4041
- /**
4042
- * List queues visible to the current user (guild admins see all).
4043
- *
4044
- * `GET /queues/`, needs `queues:read`.
4045
- */
4046
- listQueues(args?: {
4047
- query?: PluginApiOperations["list_queues"]["query"];
4048
- }): Promise<PluginApiOperations["list_queues"]["answer"]>;
4049
- /**
4050
- * Create a new queue in an initiative.
4051
- *
4052
- * `POST /queues/`, needs `queues:write`.
4053
- */
4054
- createQueue(args: {
4055
- body: PluginApiOperations["create_queue"]["body"];
4056
- }): Promise<PluginApiOperations["create_queue"]["answer"]>;
4057
3943
  /**
4058
3944
  * List Counter Groups
4059
3945
  *
@@ -4120,6 +4006,22 @@ export declare class PluginApi {
4120
4006
  createWiki(args: {
4121
4007
  body: PluginApiOperations["create_wiki"]["body"];
4122
4008
  }): Promise<PluginApiOperations["create_wiki"]["answer"]>;
4009
+ /**
4010
+ * List contacts visible to the current user (guild admins see all).
4011
+ *
4012
+ * `GET /contacts/`, needs `contacts:read`.
4013
+ */
4014
+ listContacts(args?: {
4015
+ query?: PluginApiOperations["list_contacts"]["query"];
4016
+ }): Promise<PluginApiOperations["list_contacts"]["answer"]>;
4017
+ /**
4018
+ * Create a contact.
4019
+ *
4020
+ * `POST /contacts/`, needs `contacts:write`.
4021
+ */
4022
+ createContact(args: {
4023
+ body: PluginApiOperations["create_contact"]["body"];
4024
+ }): Promise<PluginApiOperations["create_contact"]["answer"]>;
4123
4025
  /**
4124
4026
  * The files in one collection the reader can open: the Files list, with its
4125
4027
  * parameters, narrowed to the collection, each with when it was added to it.
@@ -4133,7 +4035,9 @@ export declare class PluginApi {
4133
4035
  }): Promise<PluginApiOperations["list_collection_files"]["answer"]>;
4134
4036
  /**
4135
4037
  * Put files in a collection: each a file of its initiative the reader can
4136
- * open. One already in it stays as it is.
4038
+ * open, starting with `metadata`'s values of the collection's metadata. One
4039
+ * already in it stays as it is. A person gives each value the collection's
4040
+ * file page requires.
4137
4041
  *
4138
4042
  * `POST /collections/{collection_id}/files`, needs `files:write`.
4139
4043
  */
@@ -4339,7 +4243,8 @@ export declare class PluginApi {
4339
4243
  }): Promise<PluginApiOperations["read_comment"]["answer"]>;
4340
4244
  /**
4341
4245
  * The initiatives the caller belongs to, or — for a guild admin asking for
4342
- * `scope=community` — every initiative in the guild.
4246
+ * `scope=community` — every initiative in the guild, which the admin rung's
4247
+ * reach into all content already reads.
4343
4248
  *
4344
4249
  * `GET /initiatives/`, needs `initiatives:read`.
4345
4250
  */
@@ -4394,7 +4299,7 @@ export declare class PluginApi {
4394
4299
  }): Promise<PluginApiOperations["update_file"]["answer"]>;
4395
4300
  /**
4396
4301
  * 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.
4302
+ * reader's language: the lists each shows and opens on, and its metadata.
4398
4303
  *
4399
4304
  * `GET /collections/shapes`, needs `files:read`.
4400
4305
  */
@@ -4413,7 +4318,7 @@ export declare class PluginApi {
4413
4318
  * Make a collection of files. It starts with the files named, each one a file
4414
4319
  * of the initiative the reader can open. Takes the initiative role's right to
4415
4320
  * 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
4321
+ * the maker's language, or with the metadata and lists of `shape_from`, a
4417
4322
  * collection of the same initiative the maker sees.
4418
4323
  *
4419
4324
  * `POST /collections/`, needs `files:write`.
@@ -4448,146 +4353,27 @@ export declare class PluginApi {
4448
4353
  body: PluginApiOperations["update_collection"]["body"];
4449
4354
  }): Promise<PluginApiOperations["update_collection"]["answer"]>;
4450
4355
  /**
4451
- * One file's values of the collection's own fields, for a file in the
4356
+ * One file's values of the collection's metadata, for a file in the
4452
4357
  * collection the reader can open.
4453
4358
  *
4454
- * `GET /collections/{collection_id}/files/{file_id}/fields`, needs `files:read`.
4359
+ * `GET /collections/{collection_id}/files/{file_id}/metadata`, needs `files:read`.
4455
4360
  */
4456
- getCollectionFileFields(args: {
4457
- path: PluginApiOperations["get_collection_file_fields"]["path"];
4458
- }): Promise<PluginApiOperations["get_collection_file_fields"]["answer"]>;
4361
+ getCollectionFileMetadata(args: {
4362
+ path: PluginApiOperations["get_collection_file_metadata"]["path"];
4363
+ }): Promise<PluginApiOperations["get_collection_file_metadata"]["answer"]>;
4459
4364
  /**
4460
- * Replace one file's values of the collection's own fields, or with `merge`
4365
+ * Replace one file's values of the collection's metadata, or with `merge`
4461
4366
  * write only the ones named, as `PUT /properties` does for a property. The
4462
4367
  * file is one in the collection the reader can open, and the values are the
4463
4368
  * collection's: they take the right to change the collection, not to edit the
4464
4369
  * file. An empty list clears them all.
4465
4370
  *
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"]>;
4472
- /**
4473
- * Read Queue
4474
- *
4475
- * `GET /queues/{queue_id}`, needs `queues:read`.
4476
- */
4477
- readQueue(args: {
4478
- path: PluginApiOperations["read_queue"]["path"];
4479
- query?: PluginApiOperations["read_queue"]["query"];
4480
- }): Promise<PluginApiOperations["read_queue"]["answer"]>;
4481
- /**
4482
- * Update queue name/description. Requires write access.
4483
- *
4484
- * `PATCH /queues/{queue_id}`, needs `queues:write`.
4485
- */
4486
- updateQueue(args: {
4487
- path: PluginApiOperations["update_queue"]["path"];
4488
- body: PluginApiOperations["update_queue"]["body"];
4489
- }): Promise<PluginApiOperations["update_queue"]["answer"]>;
4490
- /**
4491
- * Add an item to a queue. Requires write access.
4492
- *
4493
- * `POST /queues/{queue_id}/items`, needs `queues:write`.
4494
- */
4495
- addQueueItem(args: {
4496
- path: PluginApiOperations["add_queue_item"]["path"];
4497
- body: PluginApiOperations["add_queue_item"]["body"];
4498
- }): Promise<PluginApiOperations["add_queue_item"]["answer"]>;
4499
- /**
4500
- * Start the queue: set active, reset to first item, round 1.
4501
- *
4502
- * `POST /queues/{queue_id}/start`, needs `queues:write`.
4503
- */
4504
- startQueue(args: {
4505
- path: PluginApiOperations["start_queue"]["path"];
4506
- }): Promise<PluginApiOperations["start_queue"]["answer"]>;
4507
- /**
4508
- * Stop the queue: set inactive but keep current position.
4509
- *
4510
- * `POST /queues/{queue_id}/stop`, needs `queues:write`.
4511
- */
4512
- stopQueue(args: {
4513
- path: PluginApiOperations["stop_queue"]["path"];
4514
- }): Promise<PluginApiOperations["stop_queue"]["answer"]>;
4515
- /**
4516
- * Advance to the next visible item. Wraps around and increments round.
4517
- *
4518
- * `POST /queues/{queue_id}/next`, needs `queues:write`.
4519
- */
4520
- advanceTurn(args: {
4521
- path: PluginApiOperations["advance_turn"]["path"];
4522
- }): Promise<PluginApiOperations["advance_turn"]["answer"]>;
4523
- /**
4524
- * Move to the previous visible item. Wraps around and decrements round.
4525
- *
4526
- * `POST /queues/{queue_id}/previous`, needs `queues:write`.
4371
+ * `PUT /collections/{collection_id}/files/{file_id}/metadata`, needs `files:write`.
4527
4372
  */
4528
- previousTurn(args: {
4529
- path: PluginApiOperations["previous_turn"]["path"];
4530
- }): Promise<PluginApiOperations["previous_turn"]["answer"]>;
4531
- /**
4532
- * Jump to a specific item in the queue.
4533
- *
4534
- * `POST /queues/{queue_id}/set-active/{item_id}`, needs `queues:write`.
4535
- */
4536
- setActiveItem(args: {
4537
- path: PluginApiOperations["set_active_item"]["path"];
4538
- }): Promise<PluginApiOperations["set_active_item"]["answer"]>;
4539
- /**
4540
- * Reset the queue to round 1, first visible item.
4541
- *
4542
- * `POST /queues/{queue_id}/reset`, needs `queues:write`.
4543
- */
4544
- resetQueue(args: {
4545
- path: PluginApiOperations["reset_queue"]["path"];
4546
- }): Promise<PluginApiOperations["reset_queue"]["answer"]>;
4547
- /**
4548
- * Hold the current turn — the item leaves the rotation until it acts.
4549
- *
4550
- * `POST /queues/{queue_id}/hold`, needs `queues:write`.
4551
- */
4552
- holdCurrentTurn(args: {
4553
- path: PluginApiOperations["hold_current_turn"]["path"];
4554
- }): Promise<PluginApiOperations["hold_current_turn"]["answer"]>;
4555
- /**
4556
- * Release a held item back into the rotation.
4557
- *
4558
- * `POST /queues/{queue_id}/release/{item_id}`, needs `queues:write`.
4559
- */
4560
- releaseHeldItem(args: {
4561
- path: PluginApiOperations["release_held_item"]["path"];
4562
- body?: PluginApiOperations["release_held_item"]["body"];
4563
- }): Promise<PluginApiOperations["release_held_item"]["answer"]>;
4564
- /**
4565
- * One queue item by id — the read-back for a `queue_items.*` event.
4566
- *
4567
- * `GET /queue-items/{item_id}`, needs `queues:read`.
4568
- */
4569
- readQueueItem(args: {
4570
- path: PluginApiOperations["read_queue_item"]["path"];
4571
- query?: PluginApiOperations["read_queue_item"]["query"];
4572
- }): Promise<PluginApiOperations["read_queue_item"]["answer"]>;
4573
- /**
4574
- * Update a queue item. Requires write access on the queue.
4575
- *
4576
- * `PATCH /queue-items/{item_id}`, needs `queues:write`.
4577
- */
4578
- updateQueueItem(args: {
4579
- path: PluginApiOperations["update_queue_item"]["path"];
4580
- body: PluginApiOperations["update_queue_item"]["body"];
4581
- }): Promise<PluginApiOperations["update_queue_item"]["answer"]>;
4582
- /**
4583
- * Copy the item beside itself, at the same place in the turn order, as
4584
- * "<label> (Copy)", with its person, tags, links and properties.
4585
- *
4586
- * `POST /queue-items/{item_id}/duplicate`, needs `queues:write`.
4587
- */
4588
- duplicateQueueItem(args: {
4589
- path: PluginApiOperations["duplicate_queue_item"]["path"];
4590
- }): Promise<PluginApiOperations["duplicate_queue_item"]["answer"]>;
4373
+ setCollectionFileMetadata(args: {
4374
+ path: PluginApiOperations["set_collection_file_metadata"]["path"];
4375
+ body: PluginApiOperations["set_collection_file_metadata"]["body"];
4376
+ }): Promise<PluginApiOperations["set_collection_file_metadata"]["answer"]>;
4591
4377
  /**
4592
4378
  * Read Counter Group
4593
4379
  *
@@ -4805,6 +4591,23 @@ export declare class PluginApi {
4805
4591
  path: PluginApiOperations["move_wiki_page"]["path"];
4806
4592
  body: PluginApiOperations["move_wiki_page"]["body"];
4807
4593
  }): Promise<PluginApiOperations["move_wiki_page"]["answer"]>;
4594
+ /**
4595
+ * Read Contact
4596
+ *
4597
+ * `GET /contacts/{contact_id}`, needs `contacts:read`.
4598
+ */
4599
+ readContact(args: {
4600
+ path: PluginApiOperations["read_contact"]["path"];
4601
+ }): Promise<PluginApiOperations["read_contact"]["answer"]>;
4602
+ /**
4603
+ * Change a contact. A list sent replaces the one there.
4604
+ *
4605
+ * `PATCH /contacts/{contact_id}`, needs `contacts:write`.
4606
+ */
4607
+ updateContact(args: {
4608
+ path: PluginApiOperations["update_contact"]["path"];
4609
+ body: PluginApiOperations["update_contact"]["body"];
4610
+ }): Promise<PluginApiOperations["update_contact"]["answer"]>;
4808
4611
  /**
4809
4612
  * Read Calendar Event
4810
4613
  *
@@ -4930,17 +4733,6 @@ export declare class PluginApi {
4930
4733
  path: PluginApiOperations["set_file_grants"]["path"];
4931
4734
  body: PluginApiOperations["set_file_grants"]["body"];
4932
4735
  }): Promise<PluginApiOperations["set_file_grants"]["answer"]>;
4933
- /**
4934
- * Replace the queue's entire sharing state in one call — the body is the full
4935
- * list of grants (all-initiative-members / per-user / per-role). Every
4936
- * non-owner grant is rebuilt from it; the owner is always preserved.
4937
- *
4938
- * `PUT /queues/{queue_id}/grants`, needs `sharing:write`.
4939
- */
4940
- setQueueGrants(args: {
4941
- path: PluginApiOperations["set_queue_grants"]["path"];
4942
- body: PluginApiOperations["set_queue_grants"]["body"];
4943
- }): Promise<PluginApiOperations["set_queue_grants"]["answer"]>;
4944
4736
  /**
4945
4737
  * Replace the counter group's entire sharing state in one call — the body is
4946
4738
  * the full list of grants (all-initiative-members / per-user / per-role).
@@ -4985,6 +4777,17 @@ export declare class PluginApi {
4985
4777
  path: PluginApiOperations["set_wiki_grants"]["path"];
4986
4778
  body: PluginApiOperations["set_wiki_grants"]["body"];
4987
4779
  }): Promise<PluginApiOperations["set_wiki_grants"]["answer"]>;
4780
+ /**
4781
+ * Replace the contact's entire sharing state in one call — the body is the
4782
+ * full list of grants (all-initiative-members / per-user / per-role). Every
4783
+ * non-owner grant is rebuilt from it; the owner is always preserved.
4784
+ *
4785
+ * `PUT /contacts/{contact_id}/grants`, needs `sharing:write`.
4786
+ */
4787
+ setContactGrants(args: {
4788
+ path: PluginApiOperations["set_contact_grants"]["path"];
4789
+ body: PluginApiOperations["set_contact_grants"]["body"];
4790
+ }): Promise<PluginApiOperations["set_contact_grants"]["answer"]>;
4988
4791
  /**
4989
4792
  * Copy it, with everything inside it, into an initiative: its own unless the
4990
4793
  * body names another. Read is enough to copy a template; anything else needs
@@ -5011,19 +4814,6 @@ export declare class PluginApi {
5011
4814
  path: PluginApiOperations["duplicate_file"]["path"];
5012
4815
  body?: PluginApiOperations["duplicate_file"]["body"];
5013
4816
  }): Promise<PluginApiOperations["duplicate_file"]["answer"]>;
5014
- /**
5015
- * Copy it, with everything inside it, into an initiative: its own unless the
5016
- * body names another. Read is enough to copy a template; anything else needs
5017
- * write. The copy is shared as its source is while it stays in the same
5018
- * initiative, and carries the tags its maker may set: an installed plug-in's
5019
- * copy carries them only when it holds the scope to tag.
5020
- *
5021
- * `POST /queues/{queue_id}/duplicate`, needs `queues:write`.
5022
- */
5023
- duplicateQueue(args: {
5024
- path: PluginApiOperations["duplicate_queue"]["path"];
5025
- body?: PluginApiOperations["duplicate_queue"]["body"];
5026
- }): Promise<PluginApiOperations["duplicate_queue"]["answer"]>;
5027
4817
  /**
5028
4818
  * Copy it, with everything inside it, into an initiative: its own unless the
5029
4819
  * body names another. Read is enough to copy a template; anything else needs
@@ -5076,36 +4866,77 @@ export declare class PluginApi {
5076
4866
  path: PluginApiOperations["duplicate_wiki"]["path"];
5077
4867
  body?: PluginApiOperations["duplicate_wiki"]["body"];
5078
4868
  }): Promise<PluginApiOperations["duplicate_wiki"]["answer"]>;
4869
+ /**
4870
+ * Copy it, with everything inside it, into an initiative: its own unless the
4871
+ * body names another. Read is enough to copy a template; anything else needs
4872
+ * write. The copy is shared as its source is while it stays in the same
4873
+ * initiative, and carries the tags its maker may set: an installed plug-in's
4874
+ * copy carries them only when it holds the scope to tag.
4875
+ *
4876
+ * `POST /contacts/{contact_id}/duplicate`, needs `contacts:write`.
4877
+ */
4878
+ duplicateContact(args: {
4879
+ path: PluginApiOperations["duplicate_contact"]["path"];
4880
+ body?: PluginApiOperations["duplicate_contact"]["body"];
4881
+ }): Promise<PluginApiOperations["duplicate_contact"]["answer"]>;
5079
4882
  /**
5080
4883
  * Titles for the command palette — a way to reach one thing quickly.
5081
4884
  *
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`.
4885
+ * `GET /search/suggest`, needs one of `calendars:read`, `comments:read`, `contacts:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `posts:read`, `projects:read`, `tags:read`, `wikis:read`.
5083
4886
  */
5084
4887
  suggestCommunity(args: {
5085
4888
  query: PluginApiOperations["suggest_community"]["query"];
5086
4889
  }): Promise<PluginApiOperations["suggest_community"]["answer"]>;
5087
4890
  /**
5088
- * List property definitions.
4891
+ * List property definitions, or a project's or a collection's metadata.
5089
4892
  *
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`.
4893
+ * `GET /property-definitions/`, needs one of `calendars:read`, `contacts:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `posts:read`, `projects:read`, `properties:read`, `wikis:read`.
5091
4894
  */
5092
4895
  listPropertyDefinitions(args?: {
5093
4896
  query?: PluginApiOperations["list_property_definitions"]["query"];
5094
4897
  }): Promise<PluginApiOperations["list_property_definitions"]["answer"]>;
5095
4898
  /**
5096
- * Create a new property definition on an initiative, or with `collection_id`
5097
- * a field of that collection's own.
4899
+ * Create a new property definition on an initiative, or with `project_id` or
4900
+ * `collection_id` that project's or collection's metadata.
5098
4901
  *
5099
- * `POST /property-definitions/`, needs one of `files:write`, `properties:write`.
4902
+ * `POST /property-definitions/`, needs one of `files:write`, `projects:write`, `properties:write`.
5100
4903
  */
5101
4904
  createPropertyDefinition(args: {
5102
4905
  body: PluginApiOperations["create_property_definition"]["body"];
5103
4906
  }): Promise<PluginApiOperations["create_property_definition"]["answer"]>;
4907
+ /**
4908
+ * The initiative's metadata, then the properties of each of its projects and
4909
+ * each of its collections, under the owner's name.
4910
+ *
4911
+ * `GET /property-definitions/by-owner`, needs one of `calendars:read`, `contacts:read`, `counter_groups:read`, `dashboards:read`, `files:read`, `posts:read`, `projects:read`, `properties:read`, `wikis:read`.
4912
+ */
4913
+ listPropertyDefinitionsByOwner(args: {
4914
+ query: PluginApiOperations["list_property_definitions_by_owner"]["query"];
4915
+ }): Promise<PluginApiOperations["list_property_definitions_by_owner"]["answer"]>;
4916
+ /**
4917
+ * Delete several of the initiative's definitions at once, with every value of
4918
+ * each: all of them, or, when any may not be removed as deleting it alone
4919
+ * asks, none.
4920
+ *
4921
+ * `POST /property-definitions/bulk-delete`, needs one of `files:write`, `projects:write`, `properties:write`.
4922
+ */
4923
+ deletePropertyDefinitions(args: {
4924
+ body: PluginApiOperations["delete_property_definitions"]["body"];
4925
+ }): Promise<PluginApiOperations["delete_property_definitions"]["answer"]>;
4926
+ /**
4927
+ * Merge properties of one type, from the initiative's projects and
4928
+ * collections, into one of its metadata named `name`, answering it.
4929
+ *
4930
+ * `POST /property-definitions/promote`, needs one of `files:write`, `projects:write`, `properties:write`.
4931
+ */
4932
+ promotePropertyDefinitions(args: {
4933
+ body: PluginApiOperations["promote_property_definitions"]["body"];
4934
+ }): Promise<PluginApiOperations["promote_property_definitions"]["answer"]>;
5104
4935
  /**
5105
4936
  * Delete a property definition. Cascades to remove all attached values. A
5106
- * collection's field is removed by whoever may change the collection.
4937
+ * project's or a collection's metadata is removed by whoever may define it.
5107
4938
  *
5108
- * `DELETE /property-definitions/{definition_id}`, needs one of `files:write`, `properties:write`.
4939
+ * `DELETE /property-definitions/{definition_id}`, needs one of `files:write`, `projects:write`, `properties:write`.
5109
4940
  */
5110
4941
  deletePropertyDefinition(args: {
5111
4942
  path: PluginApiOperations["delete_property_definition"]["path"];
@@ -5113,7 +4944,7 @@ export declare class PluginApi {
5113
4944
  /**
5114
4945
  * Update a property definition.
5115
4946
  *
5116
- * `PATCH /property-definitions/{definition_id}`, needs one of `files:write`, `properties:write`.
4947
+ * `PATCH /property-definitions/{definition_id}`, needs one of `files:write`, `projects:write`, `properties:write`.
5117
4948
  */
5118
4949
  updatePropertyDefinition(args: {
5119
4950
  path: PluginApiOperations["update_property_definition"]["path"];