@37signals/basecamp 0.8.0 → 0.9.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.
Files changed (105) hide show
  1. package/README.md +2 -1
  2. package/dist/client.d.ts +5 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +4 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/generated/metadata.d.ts.map +1 -1
  7. package/dist/generated/metadata.js +54 -1
  8. package/dist/generated/metadata.js.map +1 -1
  9. package/dist/generated/metadata.ts +54 -1
  10. package/dist/generated/openapi-stripped.json +987 -25
  11. package/dist/generated/path-mapping.d.ts.map +1 -1
  12. package/dist/generated/path-mapping.js +4 -0
  13. package/dist/generated/path-mapping.js.map +1 -1
  14. package/dist/generated/path-mapping.ts +4 -0
  15. package/dist/generated/schema.d.ts +558 -9
  16. package/dist/generated/services/card-columns.d.ts.map +1 -1
  17. package/dist/generated/services/card-columns.js +3 -0
  18. package/dist/generated/services/card-columns.js.map +1 -1
  19. package/dist/generated/services/card-columns.ts +3 -0
  20. package/dist/generated/services/checkins.d.ts +3 -1
  21. package/dist/generated/services/checkins.d.ts.map +1 -1
  22. package/dist/generated/services/checkins.js +2 -1
  23. package/dist/generated/services/checkins.js.map +1 -1
  24. package/dist/generated/services/checkins.ts +4 -1
  25. package/dist/generated/services/documents.d.ts +2 -0
  26. package/dist/generated/services/documents.d.ts.map +1 -1
  27. package/dist/generated/services/documents.js +1 -0
  28. package/dist/generated/services/documents.js.map +1 -1
  29. package/dist/generated/services/documents.ts +3 -0
  30. package/dist/generated/services/gauges.d.ts +2 -2
  31. package/dist/generated/services/gauges.js +2 -2
  32. package/dist/generated/services/gauges.ts +2 -2
  33. package/dist/generated/services/index.d.ts +1 -0
  34. package/dist/generated/services/index.d.ts.map +1 -1
  35. package/dist/generated/services/index.js +1 -0
  36. package/dist/generated/services/index.js.map +1 -1
  37. package/dist/generated/services/index.ts +1 -0
  38. package/dist/generated/services/messages.d.ts +2 -0
  39. package/dist/generated/services/messages.d.ts.map +1 -1
  40. package/dist/generated/services/messages.js +1 -0
  41. package/dist/generated/services/messages.js.map +1 -1
  42. package/dist/generated/services/messages.ts +3 -0
  43. package/dist/generated/services/people.d.ts +2 -2
  44. package/dist/generated/services/people.js +2 -2
  45. package/dist/generated/services/people.ts +2 -2
  46. package/dist/generated/services/schedules.d.ts +2 -0
  47. package/dist/generated/services/schedules.d.ts.map +1 -1
  48. package/dist/generated/services/schedules.js +1 -0
  49. package/dist/generated/services/schedules.js.map +1 -1
  50. package/dist/generated/services/schedules.ts +3 -0
  51. package/dist/generated/services/search.d.ts +30 -1
  52. package/dist/generated/services/search.d.ts.map +1 -1
  53. package/dist/generated/services/search.js +1 -1
  54. package/dist/generated/services/search.js.map +1 -1
  55. package/dist/generated/services/search.ts +31 -2
  56. package/dist/generated/services/templates.d.ts +3 -5
  57. package/dist/generated/services/templates.d.ts.map +1 -1
  58. package/dist/generated/services/templates.js +4 -5
  59. package/dist/generated/services/templates.js.map +1 -1
  60. package/dist/generated/services/templates.ts +6 -9
  61. package/dist/generated/services/todolists.d.ts +22 -0
  62. package/dist/generated/services/todolists.d.ts.map +1 -1
  63. package/dist/generated/services/todolists.js +31 -0
  64. package/dist/generated/services/todolists.js.map +1 -1
  65. package/dist/generated/services/todolists.ts +46 -0
  66. package/dist/generated/services/tools.js +1 -1
  67. package/dist/generated/services/tools.js.map +1 -1
  68. package/dist/generated/services/tools.ts +1 -1
  69. package/dist/generated/services/uploads.d.ts +2 -0
  70. package/dist/generated/services/uploads.d.ts.map +1 -1
  71. package/dist/generated/services/uploads.js +1 -0
  72. package/dist/generated/services/uploads.js.map +1 -1
  73. package/dist/generated/services/uploads.ts +3 -0
  74. package/dist/generated/services/webhooks.js +2 -2
  75. package/dist/generated/services/webhooks.js.map +1 -1
  76. package/dist/generated/services/webhooks.ts +2 -2
  77. package/dist/generated/services/wormholes.d.ts +70 -0
  78. package/dist/generated/services/wormholes.d.ts.map +1 -0
  79. package/dist/generated/services/wormholes.js +103 -0
  80. package/dist/generated/services/wormholes.js.map +1 -0
  81. package/dist/generated/services/wormholes.ts +145 -0
  82. package/dist/index.d.ts +2 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +1 -0
  85. package/dist/index.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/generated/metadata.ts +54 -1
  88. package/src/generated/openapi-stripped.json +987 -25
  89. package/src/generated/path-mapping.ts +4 -0
  90. package/src/generated/schema.d.ts +558 -9
  91. package/src/generated/services/card-columns.ts +3 -0
  92. package/src/generated/services/checkins.ts +4 -1
  93. package/src/generated/services/documents.ts +3 -0
  94. package/src/generated/services/gauges.ts +2 -2
  95. package/src/generated/services/index.ts +1 -0
  96. package/src/generated/services/messages.ts +3 -0
  97. package/src/generated/services/people.ts +2 -2
  98. package/src/generated/services/schedules.ts +3 -0
  99. package/src/generated/services/search.ts +31 -2
  100. package/src/generated/services/templates.ts +6 -9
  101. package/src/generated/services/todolists.ts +46 -0
  102. package/src/generated/services/tools.ts +1 -1
  103. package/src/generated/services/uploads.ts +3 -0
  104. package/src/generated/services/webhooks.ts +2 -2
  105. package/src/generated/services/wormholes.ts +145 -0
@@ -130,6 +130,47 @@ export interface paths {
130
130
  patch?: never;
131
131
  trace?: never;
132
132
  };
133
+ "/buckets/{bucketId}/card_tables/wormholes/{wormholeId}": {
134
+ parameters: {
135
+ query?: never;
136
+ header?: never;
137
+ path?: never;
138
+ cookie?: never;
139
+ };
140
+ get?: never;
141
+ /** @description Update a wormhole's destination column */
142
+ put: operations["UpdateWormhole"];
143
+ post?: never;
144
+ /** @description Delete a wormhole */
145
+ delete: operations["DeleteWormhole"];
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
151
+ "/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json": {
152
+ parameters: {
153
+ query?: never;
154
+ header?: never;
155
+ path?: never;
156
+ cookie?: never;
157
+ };
158
+ get?: never;
159
+ put?: never;
160
+ /**
161
+ * @description Create a wormhole linking this card table to a column on another card table.
162
+ *
163
+ * A wormhole is the only mechanism for moving a card to a different project: its
164
+ * id is a valid `column_id` for MoveCard, teleporting the card across projects.
165
+ * `destinationRecordingId` is the id of a column on another accessible card table.
166
+ */
167
+ post: operations["CreateWormhole"];
168
+ delete?: never;
169
+ options?: never;
170
+ head?: never;
171
+ patch?: never;
172
+ trace?: never;
173
+ };
133
174
  "/buckets/{bucketId}/dock/tools.json": {
134
175
  parameters: {
135
176
  query?: never;
@@ -2318,6 +2359,27 @@ export interface paths {
2318
2359
  patch?: never;
2319
2360
  trace?: never;
2320
2361
  };
2362
+ "/todosets/todolists/{todolistId}/position.json": {
2363
+ parameters: {
2364
+ query?: never;
2365
+ header?: never;
2366
+ path?: never;
2367
+ cookie?: never;
2368
+ };
2369
+ get?: never;
2370
+ /**
2371
+ * @description Reposition a to-do list within its to-do set.
2372
+ * position is the 1-based index among the to-do lists the caller can see; the server
2373
+ * translates it relative to loose to-dos and hidden completed lists. Shifts siblings.
2374
+ */
2375
+ put: operations["RepositionTodolist"];
2376
+ post?: never;
2377
+ delete?: never;
2378
+ options?: never;
2379
+ head?: never;
2380
+ patch?: never;
2381
+ trace?: never;
2382
+ };
2321
2383
  "/todosets/{todosetId}": {
2322
2384
  parameters: {
2323
2385
  query?: never;
@@ -2680,6 +2742,7 @@ export interface components {
2680
2742
  position?: number;
2681
2743
  content?: string;
2682
2744
  description?: string;
2745
+ description_attachments: components["schemas"]["RichTextAttachment"][];
2683
2746
  due_on?: string;
2684
2747
  completed?: boolean;
2685
2748
  completed_at?: string;
@@ -2781,6 +2844,7 @@ export interface components {
2781
2844
  creator: components["schemas"]["Person"];
2782
2845
  subscribers?: components["schemas"]["Person"][];
2783
2846
  lists?: components["schemas"]["CardColumn"][];
2847
+ wormholes?: components["schemas"]["Wormhole"][];
2784
2848
  };
2785
2849
  Chatbot: {
2786
2850
  /** Format: int64 */
@@ -2811,6 +2875,7 @@ export interface components {
2811
2875
  bucket: components["schemas"]["RecordingBucket"];
2812
2876
  creator: components["schemas"]["Person"];
2813
2877
  content?: string;
2878
+ content_attachments: components["schemas"]["RichTextAttachment"][];
2814
2879
  subject?: string;
2815
2880
  due_on?: string;
2816
2881
  /** Format: int32 */
@@ -2861,6 +2926,7 @@ export interface components {
2861
2926
  bucket: components["schemas"]["RecordingBucket"];
2862
2927
  creator: components["schemas"]["Person"];
2863
2928
  content?: string;
2929
+ content_attachments: components["schemas"]["RichTextAttachment"][];
2864
2930
  subject: string;
2865
2931
  /** Format: int32 */
2866
2932
  replies_count?: number;
@@ -2883,6 +2949,7 @@ export interface components {
2883
2949
  bucket: components["schemas"]["RecordingBucket"];
2884
2950
  creator: components["schemas"]["Person"];
2885
2951
  content: string;
2952
+ content_attachments: components["schemas"]["RichTextAttachment"][];
2886
2953
  };
2887
2954
  /**
2888
2955
  * @deprecated
@@ -2909,6 +2976,7 @@ export interface components {
2909
2976
  bucket: components["schemas"]["TodoBucket"];
2910
2977
  creator: components["schemas"]["Person"];
2911
2978
  content: string;
2979
+ content_attachments: components["schemas"]["RichTextAttachment"][];
2912
2980
  /** Format: int32 */
2913
2981
  boosts_count?: number;
2914
2982
  boosts_url?: string;
@@ -2962,6 +3030,7 @@ export interface components {
2962
3030
  /** @description active|drafted */
2963
3031
  status?: string;
2964
3032
  subscriptions?: number[];
3033
+ visible_to_clients?: boolean;
2965
3034
  };
2966
3035
  CreateDocumentResponseContent: components["schemas"]["Document"];
2967
3036
  CreateEventBoostRequestContent: {
@@ -2992,6 +3061,7 @@ export interface components {
2992
3061
  /** Format: int64 */
2993
3062
  category_id?: number;
2994
3063
  subscriptions?: number[];
3064
+ visible_to_clients?: boolean;
2995
3065
  };
2996
3066
  CreateMessageResponseContent: components["schemas"]["Message"];
2997
3067
  CreateMessageTypeRequestContent: {
@@ -3010,8 +3080,7 @@ export interface components {
3010
3080
  company_name?: string;
3011
3081
  };
3012
3082
  CreateProjectFromTemplateRequestContent: {
3013
- name: string;
3014
- description?: string;
3083
+ project: components["schemas"]["ProjectConstructionAttributes"];
3015
3084
  };
3016
3085
  CreateProjectFromTemplateResponseContent: components["schemas"]["ProjectConstruction"];
3017
3086
  CreateProjectRequestContent: {
@@ -3022,6 +3091,7 @@ export interface components {
3022
3091
  CreateQuestionRequestContent: {
3023
3092
  title: string;
3024
3093
  schedule: components["schemas"]["QuestionSchedule"];
3094
+ visible_to_clients?: boolean;
3025
3095
  };
3026
3096
  CreateQuestionResponseContent: components["schemas"]["Question"];
3027
3097
  CreateRecordingBoostRequestContent: {
@@ -3037,6 +3107,7 @@ export interface components {
3037
3107
  all_day?: boolean;
3038
3108
  notify?: boolean;
3039
3109
  subscriptions?: number[];
3110
+ visible_to_clients?: boolean;
3040
3111
  };
3041
3112
  CreateScheduleEntryResponseContent: components["schemas"]["ScheduleEntry"];
3042
3113
  CreateTemplateRequestContent: {
@@ -3069,6 +3140,7 @@ export interface components {
3069
3140
  CreateTodolistRequestContent: {
3070
3141
  name: string;
3071
3142
  description?: string;
3143
+ visible_to_clients?: boolean;
3072
3144
  };
3073
3145
  CreateTodolistResponseContent: components["schemas"]["Todolist"];
3074
3146
  CreateToolRequestContent: {
@@ -3083,6 +3155,7 @@ export interface components {
3083
3155
  description?: string;
3084
3156
  base_name?: string;
3085
3157
  subscriptions?: number[];
3158
+ visible_to_clients?: boolean;
3086
3159
  };
3087
3160
  CreateUploadResponseContent: components["schemas"]["Upload"];
3088
3161
  CreateVaultRequestContent: {
@@ -3095,6 +3168,14 @@ export interface components {
3095
3168
  active?: boolean;
3096
3169
  };
3097
3170
  CreateWebhookResponseContent: components["schemas"]["Webhook"];
3171
+ CreateWormholeRequestContent: {
3172
+ /**
3173
+ * Format: int64
3174
+ * @description Id of the destination column (on another accessible card table) to link to.
3175
+ */
3176
+ destination_recording_id: number;
3177
+ };
3178
+ CreateWormholeResponseContent: components["schemas"]["Wormhole"];
3098
3179
  DisableCardColumnOnHoldResponseContent: components["schemas"]["CardColumn"];
3099
3180
  DockItem: {
3100
3181
  /** Format: int64 */
@@ -3130,6 +3211,7 @@ export interface components {
3130
3211
  bucket: components["schemas"]["TodoBucket"];
3131
3212
  creator: components["schemas"]["Person"];
3132
3213
  content?: string;
3214
+ content_attachments: components["schemas"]["RichTextAttachment"][];
3133
3215
  /** Format: int32 */
3134
3216
  boosts_count?: number;
3135
3217
  boosts_url?: string;
@@ -3181,6 +3263,7 @@ export interface components {
3181
3263
  bucket: components["schemas"]["TodoBucket"];
3182
3264
  creator: components["schemas"]["Person"];
3183
3265
  content?: string;
3266
+ content_attachments: components["schemas"]["RichTextAttachment"][];
3184
3267
  subject: string;
3185
3268
  from?: string;
3186
3269
  /** Format: int32 */
@@ -3204,6 +3287,7 @@ export interface components {
3204
3287
  bucket: components["schemas"]["TodoBucket"];
3205
3288
  creator: components["schemas"]["Person"];
3206
3289
  content: string;
3290
+ content_attachments: components["schemas"]["RichTextAttachment"][];
3207
3291
  /** Format: int32 */
3208
3292
  boosts_count?: number;
3209
3293
  boosts_url?: string;
@@ -3224,6 +3308,13 @@ export interface components {
3224
3308
  bucket?: components["schemas"]["RecordingBucket"];
3225
3309
  creator?: components["schemas"]["Person"];
3226
3310
  description?: string;
3311
+ /**
3312
+ * @description Optional (no `@required`): the type-specific partial renders the
3313
+ * companion array only when the gauge has needles (bc3 `if
3314
+ * gauge.any_needles?`), so a needle-less gauge omits the key entirely.
3315
+ * Non-nullable — never served as JSON `null`.
3316
+ */
3317
+ description_attachments?: components["schemas"]["RichTextAttachment"][];
3227
3318
  enabled?: boolean;
3228
3319
  last_needle_color?: string;
3229
3320
  /** Format: int32 */
@@ -3255,6 +3346,7 @@ export interface components {
3255
3346
  bucket?: components["schemas"]["RecordingBucket"];
3256
3347
  creator?: components["schemas"]["Person"];
3257
3348
  description?: string;
3349
+ description_attachments: components["schemas"]["RichTextAttachment"][];
3258
3350
  color?: string;
3259
3351
  /** Format: int32 */
3260
3352
  position?: number;
@@ -3493,6 +3585,7 @@ export interface components {
3493
3585
  creator: components["schemas"]["Person"];
3494
3586
  subject: string;
3495
3587
  content: string;
3588
+ content_attachments: components["schemas"]["RichTextAttachment"][];
3496
3589
  category?: components["schemas"]["MessageType"];
3497
3590
  /** Format: int32 */
3498
3591
  boosts_count?: number;
@@ -3782,6 +3875,10 @@ export interface components {
3782
3875
  url?: string;
3783
3876
  project?: components["schemas"]["Project"];
3784
3877
  };
3878
+ ProjectConstructionAttributes: {
3879
+ name: string;
3880
+ description?: string;
3881
+ };
3785
3882
  Question: {
3786
3883
  /** Format: int64 */
3787
3884
  id: number;
@@ -3823,6 +3920,7 @@ export interface components {
3823
3920
  comments_count?: number;
3824
3921
  comments_url?: string;
3825
3922
  content: string;
3923
+ content_attachments: components["schemas"]["RichTextAttachment"][];
3826
3924
  group_on?: string;
3827
3925
  parent: components["schemas"]["RecordingParent"];
3828
3926
  bucket: components["schemas"]["RecordingBucket"];
@@ -3902,6 +4000,18 @@ export interface components {
3902
4000
  app_url: string;
3903
4001
  bookmark_url?: string;
3904
4002
  content?: string;
4003
+ /**
4004
+ * @description Rich-text companion arrays carried through the generic recording
4005
+ * projection (`to_recordable_partial_path` renders the full type-specific
4006
+ * partial). A given recording is one type, so it carries only the array
4007
+ * matching its rich-text attribute (`content_attachments` for a
4008
+ * Comment/Message, `description_attachments` for a Todo/Card); a
4009
+ * webhook-sourced recording (base partial) carries neither. Optional (no
4010
+ * `@required`), non-nullable.
4011
+ */
4012
+ content_attachments?: components["schemas"]["RichTextAttachment"][];
4013
+ /** @description See `content_attachments` — the description-attribute companion array. */
4014
+ description_attachments?: components["schemas"]["RichTextAttachment"][];
3905
4015
  /** Format: int32 */
3906
4016
  comments_count?: number;
3907
4017
  comments_url?: string;
@@ -3956,6 +4066,10 @@ export interface components {
3956
4066
  /** Format: int32 */
3957
4067
  position: number;
3958
4068
  };
4069
+ RepositionTodolistRequestContent: {
4070
+ /** Format: int32 */
4071
+ position: number;
4072
+ };
3959
4073
  RepositionToolRequestContent: {
3960
4074
  /** Format: int32 */
3961
4075
  position: number;
@@ -3963,6 +4077,44 @@ export interface components {
3963
4077
  ResumeQuestionResponseContent: {
3964
4078
  paused?: boolean;
3965
4079
  };
4080
+ /**
4081
+ * @description Structured metadata for a downloadable file attachment embedded in a
4082
+ * rich text attribute. Every rich text attribute in an API response is
4083
+ * accompanied by a corresponding `*_attachments` array named after the
4084
+ * attribute (a Todo's `description_attachments` for its `description`).
4085
+ * Mentions, remote images, and opengraph embeds are excluded — only
4086
+ * downloadable file attachments appear.
4087
+ */
4088
+ RichTextAttachment: {
4089
+ /** Format: int64 */
4090
+ id: number;
4091
+ sgid: string;
4092
+ filename: string;
4093
+ content_type: string;
4094
+ /** Format: int64 */
4095
+ byte_size: number;
4096
+ download_url: string;
4097
+ /**
4098
+ * Format: int32
4099
+ * @description Pixel dimensions, present as keys on every attachment but null for
4100
+ * non-image blobs, and the BC3 API may serialize them float-spelled
4101
+ * (`1024.0`) — hence optional/nullable rather than `@required` (the enhance
4102
+ * pass marks them `nullable: true` in the OpenAPI). All SDKs decode both
4103
+ * forms faithfully and type the nullable value statically: Go `types.FlexInt`
4104
+ * → `*int32`, Kotlin `Int?` via `FlexibleIntSerializer`, Swift `Int32?`,
4105
+ * TypeScript `number | null`, Python `Optional[int | float]` (raw JSON keeps
4106
+ * the float), Ruby nilable. See SPEC.md §10 Type Fidelity.
4107
+ */
4108
+ width?: number | null;
4109
+ /**
4110
+ * Format: int32
4111
+ * @description See `width` — same nullable/float-spelled behavior and cross-SDK note.
4112
+ */
4113
+ height?: number | null;
4114
+ previewable: boolean;
4115
+ preview_url: string;
4116
+ thumbnail_url: string;
4117
+ };
3966
4118
  Schedule: {
3967
4119
  /** Format: int64 */
3968
4120
  id: number;
@@ -4011,6 +4163,7 @@ export interface components {
4011
4163
  creator: components["schemas"]["Person"];
4012
4164
  summary: string;
4013
4165
  description?: string;
4166
+ description_attachments: components["schemas"]["RichTextAttachment"][];
4014
4167
  all_day?: boolean;
4015
4168
  starts_at?: string;
4016
4169
  ends_at?: string;
@@ -4020,12 +4173,13 @@ export interface components {
4020
4173
  boosts_url?: string;
4021
4174
  };
4022
4175
  SearchMetadata: {
4023
- projects?: components["schemas"]["SearchProject"][];
4024
- };
4025
- SearchProject: {
4026
- /** Format: int64 */
4027
- id?: number;
4028
- name?: string;
4176
+ recording_search_types: components["schemas"]["SearchType"][];
4177
+ file_search_types: components["schemas"]["SearchType"][];
4178
+ default_creator_label: string;
4179
+ default_bucket_label: string;
4180
+ default_circle_label: string;
4181
+ default_file_type_label: string;
4182
+ default_type_label: string;
4029
4183
  };
4030
4184
  SearchResponseContent: components["schemas"]["SearchResult"][];
4031
4185
  SearchResult: {
@@ -4046,8 +4200,35 @@ export interface components {
4046
4200
  creator?: components["schemas"]["Person"];
4047
4201
  content?: string;
4048
4202
  description?: string;
4203
+ /**
4204
+ * @description Rich-text companion arrays carried through the polymorphic search
4205
+ * projection. A given result is one recording type, so it carries only
4206
+ * the array matching its rich-text attribute (`content_attachments` for a
4207
+ * Comment/Message, `description_attachments` for a Todo); a webhook-sourced
4208
+ * result carries neither. Optional (no `@required`), non-nullable. Distinct
4209
+ * from the generic `attachments` key (the recording's aggregate downloadable
4210
+ * files), which is a separate projection concern and not modeled here.
4211
+ */
4212
+ content_attachments?: components["schemas"]["RichTextAttachment"][];
4213
+ /** @description See `content_attachments` — the description-attribute companion array. */
4214
+ description_attachments?: components["schemas"]["RichTextAttachment"][];
4049
4215
  subject?: string;
4050
4216
  };
4217
+ /**
4218
+ * @description A selectable search filter option. `key` is the value passed back as a
4219
+ * filter parameter (null represents the default "everything" option); `value`
4220
+ * is the human-readable label.
4221
+ */
4222
+ SearchType: {
4223
+ /**
4224
+ * @description Always present on the wire; `null` for the default "everything" option.
4225
+ * `@required` models the presence; nullability of the value is layered on in
4226
+ * the OpenAPI (smithy-build.json jsonAdd -> type: ["string", "null"]) since
4227
+ * Smithy has no native required-and-nullable.
4228
+ */
4229
+ key: string | null;
4230
+ value: string;
4231
+ };
4051
4232
  SetCardColumnColorRequestContent: {
4052
4233
  /** @description Valid colors: white, red, orange, yellow, green, blue, aqua, purple, gray, pink, brown */
4053
4234
  color: string;
@@ -4145,6 +4326,7 @@ export interface components {
4145
4326
  description?: string;
4146
4327
  completed?: boolean;
4147
4328
  content: string;
4329
+ description_attachments: components["schemas"]["RichTextAttachment"][];
4148
4330
  starts_on?: string;
4149
4331
  due_on?: string;
4150
4332
  assignees?: components["schemas"]["Person"][];
@@ -4198,6 +4380,7 @@ export interface components {
4198
4380
  bucket: components["schemas"]["TodoBucket"];
4199
4381
  creator: components["schemas"]["Person"];
4200
4382
  description?: string;
4383
+ description_attachments: components["schemas"]["RichTextAttachment"][];
4201
4384
  completed?: boolean;
4202
4385
  completed_ratio?: string;
4203
4386
  name: string;
@@ -4478,6 +4661,14 @@ export interface components {
4478
4661
  active?: boolean;
4479
4662
  };
4480
4663
  UpdateWebhookResponseContent: components["schemas"]["Webhook"];
4664
+ UpdateWormholeRequestContent: {
4665
+ /**
4666
+ * Format: int64
4667
+ * @description Id of the new destination column (on another accessible card table).
4668
+ */
4669
+ destination_recording_id: number;
4670
+ };
4671
+ UpdateWormholeResponseContent: components["schemas"]["Wormhole"];
4481
4672
  Upload: {
4482
4673
  /** Format: int64 */
4483
4674
  id: number;
@@ -4501,6 +4692,7 @@ export interface components {
4501
4692
  bucket: components["schemas"]["TodoBucket"];
4502
4693
  creator: components["schemas"]["Person"];
4503
4694
  description?: string;
4695
+ description_attachments: components["schemas"]["RichTextAttachment"][];
4504
4696
  content_type?: string;
4505
4697
  /** Format: int64 */
4506
4698
  byte_size?: number;
@@ -4613,6 +4805,51 @@ export interface components {
4613
4805
  error: string;
4614
4806
  message?: string;
4615
4807
  };
4808
+ /**
4809
+ * @description A wormhole links this card table to a column on another card table, enabling
4810
+ * cards to move across projects. It carries the full recording representation
4811
+ * plus the destination-linkage fields. The wormhole's own `url`/`app_url`/`parent`
4812
+ * point at the *source* board; `destination_url` is the only field identifying
4813
+ * the destination column.
4814
+ */
4815
+ Wormhole: {
4816
+ /** Format: int64 */
4817
+ id: number;
4818
+ status: string;
4819
+ visible_to_clients: boolean;
4820
+ created_at: string;
4821
+ updated_at: string;
4822
+ title: string;
4823
+ inherits_status: boolean;
4824
+ type: string;
4825
+ url: string;
4826
+ app_url: string;
4827
+ bookmark_url?: string;
4828
+ parent: components["schemas"]["RecordingParent"];
4829
+ bucket: components["schemas"]["TodoBucket"];
4830
+ creator: components["schemas"]["Person"];
4831
+ /**
4832
+ * @description Wormhole color; always emitted on the wire (`json.color recording.color`),
4833
+ * `null` when unset. Like destination_url, `@required` models the presence and
4834
+ * the nullability is layered on in the OpenAPI (smithy-build.json jsonAdd ->
4835
+ * type: ["string","null"] + x-go-type "*string").
4836
+ */
4837
+ color: string | null;
4838
+ /**
4839
+ * @description True only while the destination column, its board, and its bucket are all
4840
+ * active; false once the destination is unlinked. Always emitted.
4841
+ */
4842
+ linked: boolean;
4843
+ /**
4844
+ * @description URL of the destination column; always present on the wire, `null` for an
4845
+ * unlinked wormhole. `@required` models the presence; the nullability of the
4846
+ * value is layered on in the OpenAPI (smithy-build.json jsonAdd -> type:
4847
+ * ["string","null"] + x-go-type "*string") since Smithy has no native
4848
+ * required-and-nullable — exactly the SearchType.key treatment. SDKs model it
4849
+ * as required-but-nullable (`string | null`, not `string | null | undefined`).
4850
+ */
4851
+ destination_url: string | null;
4852
+ };
4616
4853
  };
4617
4854
  responses: never;
4618
4855
  parameters: never;
@@ -5264,6 +5501,216 @@ export interface operations {
5264
5501
  };
5265
5502
  };
5266
5503
  };
5504
+ UpdateWormhole: {
5505
+ parameters: {
5506
+ query?: never;
5507
+ header?: never;
5508
+ path: {
5509
+ bucketId: number;
5510
+ wormholeId: number;
5511
+ };
5512
+ cookie?: never;
5513
+ };
5514
+ requestBody: {
5515
+ content: {
5516
+ "application/json": components["schemas"]["UpdateWormholeRequestContent"];
5517
+ };
5518
+ };
5519
+ responses: {
5520
+ /** @description UpdateWormhole 200 response */
5521
+ 200: {
5522
+ headers: {
5523
+ [name: string]: unknown;
5524
+ };
5525
+ content: {
5526
+ "application/json": components["schemas"]["UpdateWormholeResponseContent"];
5527
+ };
5528
+ };
5529
+ /** @description UnauthorizedError 401 response */
5530
+ 401: {
5531
+ headers: {
5532
+ [name: string]: unknown;
5533
+ };
5534
+ content: {
5535
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
5536
+ };
5537
+ };
5538
+ /** @description ForbiddenError 403 response */
5539
+ 403: {
5540
+ headers: {
5541
+ [name: string]: unknown;
5542
+ };
5543
+ content: {
5544
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
5545
+ };
5546
+ };
5547
+ /** @description NotFoundError 404 response */
5548
+ 404: {
5549
+ headers: {
5550
+ [name: string]: unknown;
5551
+ };
5552
+ content: {
5553
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
5554
+ };
5555
+ };
5556
+ /** @description InternalServerError 500 response */
5557
+ 500: {
5558
+ headers: {
5559
+ [name: string]: unknown;
5560
+ };
5561
+ content: {
5562
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
5563
+ };
5564
+ };
5565
+ };
5566
+ };
5567
+ DeleteWormhole: {
5568
+ parameters: {
5569
+ query?: never;
5570
+ header?: never;
5571
+ path: {
5572
+ bucketId: number;
5573
+ wormholeId: number;
5574
+ };
5575
+ cookie?: never;
5576
+ };
5577
+ requestBody?: never;
5578
+ responses: {
5579
+ /** @description DeleteWormhole 204 response */
5580
+ 204: {
5581
+ headers: {
5582
+ [name: string]: unknown;
5583
+ };
5584
+ content?: never;
5585
+ };
5586
+ /** @description UnauthorizedError 401 response */
5587
+ 401: {
5588
+ headers: {
5589
+ [name: string]: unknown;
5590
+ };
5591
+ content: {
5592
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
5593
+ };
5594
+ };
5595
+ /** @description ForbiddenError 403 response */
5596
+ 403: {
5597
+ headers: {
5598
+ [name: string]: unknown;
5599
+ };
5600
+ content: {
5601
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
5602
+ };
5603
+ };
5604
+ /** @description NotFoundError 404 response */
5605
+ 404: {
5606
+ headers: {
5607
+ [name: string]: unknown;
5608
+ };
5609
+ content: {
5610
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
5611
+ };
5612
+ };
5613
+ /** @description RateLimitError 429 response */
5614
+ 429: {
5615
+ headers: {
5616
+ [name: string]: unknown;
5617
+ };
5618
+ content: {
5619
+ "application/json": components["schemas"]["RateLimitErrorResponseContent"];
5620
+ };
5621
+ };
5622
+ /** @description InternalServerError 500 response */
5623
+ 500: {
5624
+ headers: {
5625
+ [name: string]: unknown;
5626
+ };
5627
+ content: {
5628
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
5629
+ };
5630
+ };
5631
+ };
5632
+ };
5633
+ CreateWormhole: {
5634
+ parameters: {
5635
+ query?: never;
5636
+ header?: never;
5637
+ path: {
5638
+ bucketId: number;
5639
+ cardTableId: number;
5640
+ };
5641
+ cookie?: never;
5642
+ };
5643
+ requestBody: {
5644
+ content: {
5645
+ "application/json": components["schemas"]["CreateWormholeRequestContent"];
5646
+ };
5647
+ };
5648
+ responses: {
5649
+ /** @description CreateWormhole 201 response */
5650
+ 201: {
5651
+ headers: {
5652
+ [name: string]: unknown;
5653
+ };
5654
+ content: {
5655
+ "application/json": components["schemas"]["CreateWormholeResponseContent"];
5656
+ };
5657
+ };
5658
+ /** @description UnauthorizedError 401 response */
5659
+ 401: {
5660
+ headers: {
5661
+ [name: string]: unknown;
5662
+ };
5663
+ content: {
5664
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
5665
+ };
5666
+ };
5667
+ /** @description ForbiddenError 403 response */
5668
+ 403: {
5669
+ headers: {
5670
+ [name: string]: unknown;
5671
+ };
5672
+ content: {
5673
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
5674
+ };
5675
+ };
5676
+ /** @description NotFoundError 404 response */
5677
+ 404: {
5678
+ headers: {
5679
+ [name: string]: unknown;
5680
+ };
5681
+ content: {
5682
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
5683
+ };
5684
+ };
5685
+ /** @description ValidationError 422 response */
5686
+ 422: {
5687
+ headers: {
5688
+ [name: string]: unknown;
5689
+ };
5690
+ content: {
5691
+ "application/json": components["schemas"]["ValidationErrorResponseContent"];
5692
+ };
5693
+ };
5694
+ /** @description RateLimitError 429 response */
5695
+ 429: {
5696
+ headers: {
5697
+ [name: string]: unknown;
5698
+ };
5699
+ content: {
5700
+ "application/json": components["schemas"]["RateLimitErrorResponseContent"];
5701
+ };
5702
+ };
5703
+ /** @description InternalServerError 500 response */
5704
+ 500: {
5705
+ headers: {
5706
+ [name: string]: unknown;
5707
+ };
5708
+ content: {
5709
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
5710
+ };
5711
+ };
5712
+ };
5713
+ };
5267
5714
  CreateTool: {
5268
5715
  parameters: {
5269
5716
  query?: never;
@@ -14790,8 +15237,41 @@ export interface operations {
14790
15237
  parameters: {
14791
15238
  query: {
14792
15239
  q: string;
14793
- /** @description best_match|created_at */
15240
+ /**
15241
+ * @description Recording types to include. Use `key` values from the metadata
15242
+ * endpoint's `recording_search_types`. Available since Basecamp 5.
15243
+ */
15244
+ "type_names[]"?: string[];
15245
+ /** @description Project IDs to filter by. Available since Basecamp 5. */
15246
+ "bucket_ids[]"?: number[];
15247
+ /** @description Creator person IDs to filter by. Available since Basecamp 5. */
15248
+ "creator_ids[]"?: number[];
15249
+ /**
15250
+ * @description Filter attachments by type. Use `key` values from the metadata
15251
+ * endpoint's `file_search_types`.
15252
+ */
15253
+ file_type?: string;
15254
+ /** @description Set to true to exclude chat results. */
15255
+ exclude_chat?: boolean;
15256
+ /** @description last_7_days|last_30_days|last_90_days|last_12_months|forever */
15257
+ since?: string;
15258
+ /** @description best_match|recency */
14794
15259
  sort?: string;
15260
+ /**
15261
+ * @deprecated
15262
+ * @description Deprecated: prefer type_names[].
15263
+ */
15264
+ type?: string;
15265
+ /**
15266
+ * @deprecated
15267
+ * @description Deprecated: prefer bucket_ids[].
15268
+ */
15269
+ bucket_id?: number;
15270
+ /**
15271
+ * @deprecated
15272
+ * @description Deprecated: prefer creator_ids[].
15273
+ */
15274
+ creator_id?: number;
14795
15275
  };
14796
15276
  header?: never;
14797
15277
  path?: never;
@@ -16309,6 +16789,75 @@ export interface operations {
16309
16789
  };
16310
16790
  };
16311
16791
  };
16792
+ RepositionTodolist: {
16793
+ parameters: {
16794
+ query?: never;
16795
+ header?: never;
16796
+ path: {
16797
+ todolistId: number;
16798
+ };
16799
+ cookie?: never;
16800
+ };
16801
+ requestBody: {
16802
+ content: {
16803
+ "application/json": components["schemas"]["RepositionTodolistRequestContent"];
16804
+ };
16805
+ };
16806
+ responses: {
16807
+ /** @description RepositionTodolist 204 response */
16808
+ 204: {
16809
+ headers: {
16810
+ [name: string]: unknown;
16811
+ };
16812
+ content?: never;
16813
+ };
16814
+ /** @description UnauthorizedError 401 response */
16815
+ 401: {
16816
+ headers: {
16817
+ [name: string]: unknown;
16818
+ };
16819
+ content: {
16820
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
16821
+ };
16822
+ };
16823
+ /** @description ForbiddenError 403 response */
16824
+ 403: {
16825
+ headers: {
16826
+ [name: string]: unknown;
16827
+ };
16828
+ content: {
16829
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
16830
+ };
16831
+ };
16832
+ /** @description NotFoundError 404 response */
16833
+ 404: {
16834
+ headers: {
16835
+ [name: string]: unknown;
16836
+ };
16837
+ content: {
16838
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
16839
+ };
16840
+ };
16841
+ /** @description ValidationError 422 response */
16842
+ 422: {
16843
+ headers: {
16844
+ [name: string]: unknown;
16845
+ };
16846
+ content: {
16847
+ "application/json": components["schemas"]["ValidationErrorResponseContent"];
16848
+ };
16849
+ };
16850
+ /** @description InternalServerError 500 response */
16851
+ 500: {
16852
+ headers: {
16853
+ [name: string]: unknown;
16854
+ };
16855
+ content: {
16856
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
16857
+ };
16858
+ };
16859
+ };
16860
+ };
16312
16861
  GetTodoset: {
16313
16862
  parameters: {
16314
16863
  query?: never;