@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
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Basecamp",
5
- "version": "2026-07-22",
5
+ "version": "2026-07-24",
6
6
  "description": "Basecamp API",
7
7
  "contact": {
8
8
  "name": "Basecamp",
@@ -913,6 +913,323 @@
913
913
  }
914
914
  }
915
915
  },
916
+ "/buckets/{bucketId}/card_tables/wormholes/{wormholeId}": {
917
+ "delete": {
918
+ "description": "Delete a wormhole",
919
+ "operationId": "DeleteWormhole",
920
+ "parameters": [
921
+ {
922
+ "name": "bucketId",
923
+ "in": "path",
924
+ "schema": {
925
+ "type": "integer",
926
+ "format": "int64"
927
+ },
928
+ "required": true
929
+ },
930
+ {
931
+ "name": "wormholeId",
932
+ "in": "path",
933
+ "schema": {
934
+ "type": "integer",
935
+ "format": "int64"
936
+ },
937
+ "required": true
938
+ }
939
+ ],
940
+ "responses": {
941
+ "204": {
942
+ "description": "DeleteWormhole 204 response"
943
+ },
944
+ "401": {
945
+ "description": "UnauthorizedError 401 response",
946
+ "content": {
947
+ "application/json": {
948
+ "schema": {
949
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
950
+ }
951
+ }
952
+ }
953
+ },
954
+ "403": {
955
+ "description": "ForbiddenError 403 response",
956
+ "content": {
957
+ "application/json": {
958
+ "schema": {
959
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
960
+ }
961
+ }
962
+ }
963
+ },
964
+ "404": {
965
+ "description": "NotFoundError 404 response",
966
+ "content": {
967
+ "application/json": {
968
+ "schema": {
969
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
970
+ }
971
+ }
972
+ }
973
+ },
974
+ "429": {
975
+ "description": "RateLimitError 429 response",
976
+ "content": {
977
+ "application/json": {
978
+ "schema": {
979
+ "$ref": "#/components/schemas/RateLimitErrorResponseContent"
980
+ }
981
+ }
982
+ }
983
+ },
984
+ "500": {
985
+ "description": "InternalServerError 500 response",
986
+ "content": {
987
+ "application/json": {
988
+ "schema": {
989
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
990
+ }
991
+ }
992
+ }
993
+ }
994
+ },
995
+ "tags": [
996
+ "Card Tables"
997
+ ],
998
+ "x-basecamp-idempotent": {
999
+ "natural": true
1000
+ },
1001
+ "x-basecamp-retry": {
1002
+ "maxAttempts": 3,
1003
+ "baseDelayMs": 1000,
1004
+ "backoff": "exponential",
1005
+ "retryOn": [
1006
+ 429,
1007
+ 503
1008
+ ]
1009
+ }
1010
+ },
1011
+ "put": {
1012
+ "description": "Update a wormhole's destination column",
1013
+ "operationId": "UpdateWormhole",
1014
+ "requestBody": {
1015
+ "content": {
1016
+ "application/json": {
1017
+ "schema": {
1018
+ "$ref": "#/components/schemas/UpdateWormholeRequestContent"
1019
+ }
1020
+ }
1021
+ },
1022
+ "required": true
1023
+ },
1024
+ "parameters": [
1025
+ {
1026
+ "name": "bucketId",
1027
+ "in": "path",
1028
+ "schema": {
1029
+ "type": "integer",
1030
+ "format": "int64"
1031
+ },
1032
+ "required": true
1033
+ },
1034
+ {
1035
+ "name": "wormholeId",
1036
+ "in": "path",
1037
+ "schema": {
1038
+ "type": "integer",
1039
+ "format": "int64"
1040
+ },
1041
+ "required": true
1042
+ }
1043
+ ],
1044
+ "responses": {
1045
+ "200": {
1046
+ "description": "UpdateWormhole 200 response",
1047
+ "content": {
1048
+ "application/json": {
1049
+ "schema": {
1050
+ "$ref": "#/components/schemas/UpdateWormholeResponseContent"
1051
+ }
1052
+ }
1053
+ }
1054
+ },
1055
+ "401": {
1056
+ "description": "UnauthorizedError 401 response",
1057
+ "content": {
1058
+ "application/json": {
1059
+ "schema": {
1060
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
1061
+ }
1062
+ }
1063
+ }
1064
+ },
1065
+ "403": {
1066
+ "description": "ForbiddenError 403 response",
1067
+ "content": {
1068
+ "application/json": {
1069
+ "schema": {
1070
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
1071
+ }
1072
+ }
1073
+ }
1074
+ },
1075
+ "404": {
1076
+ "description": "NotFoundError 404 response",
1077
+ "content": {
1078
+ "application/json": {
1079
+ "schema": {
1080
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
1081
+ }
1082
+ }
1083
+ }
1084
+ },
1085
+ "500": {
1086
+ "description": "InternalServerError 500 response",
1087
+ "content": {
1088
+ "application/json": {
1089
+ "schema": {
1090
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
1091
+ }
1092
+ }
1093
+ }
1094
+ }
1095
+ },
1096
+ "tags": [
1097
+ "Card Tables"
1098
+ ],
1099
+ "x-basecamp-idempotent": {
1100
+ "natural": true
1101
+ },
1102
+ "x-basecamp-retry": {
1103
+ "maxAttempts": 3,
1104
+ "baseDelayMs": 1000,
1105
+ "backoff": "exponential",
1106
+ "retryOn": [
1107
+ 429,
1108
+ 503
1109
+ ]
1110
+ }
1111
+ }
1112
+ },
1113
+ "/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json": {
1114
+ "post": {
1115
+ "description": "Create a wormhole linking this card table to a column on another card table.\n\nA wormhole is the only mechanism for moving a card to a different project: its\nid is a valid `column_id` for MoveCard, teleporting the card across projects.\n`destinationRecordingId` is the id of a column on another accessible card table.",
1116
+ "operationId": "CreateWormhole",
1117
+ "requestBody": {
1118
+ "content": {
1119
+ "application/json": {
1120
+ "schema": {
1121
+ "$ref": "#/components/schemas/CreateWormholeRequestContent"
1122
+ }
1123
+ }
1124
+ },
1125
+ "required": true
1126
+ },
1127
+ "parameters": [
1128
+ {
1129
+ "name": "bucketId",
1130
+ "in": "path",
1131
+ "schema": {
1132
+ "type": "integer",
1133
+ "format": "int64"
1134
+ },
1135
+ "required": true
1136
+ },
1137
+ {
1138
+ "name": "cardTableId",
1139
+ "in": "path",
1140
+ "schema": {
1141
+ "type": "integer",
1142
+ "format": "int64"
1143
+ },
1144
+ "required": true
1145
+ }
1146
+ ],
1147
+ "responses": {
1148
+ "201": {
1149
+ "description": "CreateWormhole 201 response",
1150
+ "content": {
1151
+ "application/json": {
1152
+ "schema": {
1153
+ "$ref": "#/components/schemas/CreateWormholeResponseContent"
1154
+ }
1155
+ }
1156
+ }
1157
+ },
1158
+ "401": {
1159
+ "description": "UnauthorizedError 401 response",
1160
+ "content": {
1161
+ "application/json": {
1162
+ "schema": {
1163
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
1164
+ }
1165
+ }
1166
+ }
1167
+ },
1168
+ "403": {
1169
+ "description": "ForbiddenError 403 response",
1170
+ "content": {
1171
+ "application/json": {
1172
+ "schema": {
1173
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
1174
+ }
1175
+ }
1176
+ }
1177
+ },
1178
+ "404": {
1179
+ "description": "NotFoundError 404 response",
1180
+ "content": {
1181
+ "application/json": {
1182
+ "schema": {
1183
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
1184
+ }
1185
+ }
1186
+ }
1187
+ },
1188
+ "422": {
1189
+ "description": "ValidationError 422 response",
1190
+ "content": {
1191
+ "application/json": {
1192
+ "schema": {
1193
+ "$ref": "#/components/schemas/ValidationErrorResponseContent"
1194
+ }
1195
+ }
1196
+ }
1197
+ },
1198
+ "429": {
1199
+ "description": "RateLimitError 429 response",
1200
+ "content": {
1201
+ "application/json": {
1202
+ "schema": {
1203
+ "$ref": "#/components/schemas/RateLimitErrorResponseContent"
1204
+ }
1205
+ }
1206
+ }
1207
+ },
1208
+ "500": {
1209
+ "description": "InternalServerError 500 response",
1210
+ "content": {
1211
+ "application/json": {
1212
+ "schema": {
1213
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
1214
+ }
1215
+ }
1216
+ }
1217
+ }
1218
+ },
1219
+ "tags": [
1220
+ "Card Tables"
1221
+ ],
1222
+ "x-basecamp-retry": {
1223
+ "maxAttempts": 2,
1224
+ "baseDelayMs": 1000,
1225
+ "backoff": "exponential",
1226
+ "retryOn": [
1227
+ 429,
1228
+ 503
1229
+ ]
1230
+ }
1231
+ }
1232
+ },
916
1233
  "/buckets/{bucketId}/dock/tools.json": {
917
1234
  "post": {
918
1235
  "description": "Create a tool in a project dock",
@@ -14545,14 +14862,126 @@
14545
14862
  },
14546
14863
  "required": true
14547
14864
  },
14865
+ {
14866
+ "name": "type_names[]",
14867
+ "in": "query",
14868
+ "description": "Recording types to include. Use `key` values from the metadata\nendpoint's `recording_search_types`. Available since Basecamp 5.",
14869
+ "style": "form",
14870
+ "schema": {
14871
+ "type": "array",
14872
+ "items": {
14873
+ "type": "string"
14874
+ },
14875
+ "description": "Recording types to include. Use `key` values from the metadata\nendpoint's `recording_search_types`. Available since Basecamp 5.",
14876
+ "x-go-type-skip-optional-pointer": false
14877
+ },
14878
+ "explode": true
14879
+ },
14880
+ {
14881
+ "name": "bucket_ids[]",
14882
+ "in": "query",
14883
+ "description": "Project IDs to filter by. Available since Basecamp 5.",
14884
+ "style": "form",
14885
+ "schema": {
14886
+ "type": "array",
14887
+ "items": {
14888
+ "type": "integer",
14889
+ "format": "int64"
14890
+ },
14891
+ "description": "Project IDs to filter by. Available since Basecamp 5.",
14892
+ "x-go-type-skip-optional-pointer": false
14893
+ },
14894
+ "explode": true
14895
+ },
14896
+ {
14897
+ "name": "creator_ids[]",
14898
+ "in": "query",
14899
+ "description": "Creator person IDs to filter by. Available since Basecamp 5.",
14900
+ "style": "form",
14901
+ "schema": {
14902
+ "type": "array",
14903
+ "items": {
14904
+ "type": "integer",
14905
+ "format": "int64"
14906
+ },
14907
+ "description": "Creator person IDs to filter by. Available since Basecamp 5.",
14908
+ "x-go-type-skip-optional-pointer": false
14909
+ },
14910
+ "explode": true
14911
+ },
14912
+ {
14913
+ "name": "file_type",
14914
+ "in": "query",
14915
+ "description": "Filter attachments by type. Use `key` values from the metadata\nendpoint's `file_search_types`.",
14916
+ "schema": {
14917
+ "type": "string",
14918
+ "description": "Filter attachments by type. Use `key` values from the metadata\nendpoint's `file_search_types`."
14919
+ }
14920
+ },
14921
+ {
14922
+ "name": "exclude_chat",
14923
+ "in": "query",
14924
+ "description": "Set to true to exclude chat results.",
14925
+ "schema": {
14926
+ "type": "boolean",
14927
+ "description": "Set to true to exclude chat results."
14928
+ }
14929
+ },
14930
+ {
14931
+ "name": "since",
14932
+ "in": "query",
14933
+ "description": "last_7_days|last_30_days|last_90_days|last_12_months|forever",
14934
+ "schema": {
14935
+ "type": "string",
14936
+ "description": "last_7_days|last_30_days|last_90_days|last_12_months|forever"
14937
+ }
14938
+ },
14548
14939
  {
14549
14940
  "name": "sort",
14550
14941
  "in": "query",
14551
- "description": "best_match|created_at",
14942
+ "description": "best_match|recency",
14552
14943
  "schema": {
14553
14944
  "type": "string",
14554
- "description": "best_match|created_at"
14945
+ "description": "best_match|recency"
14555
14946
  }
14947
+ },
14948
+ {
14949
+ "name": "type",
14950
+ "in": "query",
14951
+ "description": "Deprecated: prefer type_names[].",
14952
+ "schema": {
14953
+ "type": "string",
14954
+ "deprecated": true,
14955
+ "description": "Deprecated: prefer type_names[].\nThis shape is deprecated since 2026-07: Use typeNames (type_names[]) instead"
14956
+ },
14957
+ "deprecated": true,
14958
+ "x-deprecated-reason": "prefer type_names[]."
14959
+ },
14960
+ {
14961
+ "name": "bucket_id",
14962
+ "in": "query",
14963
+ "description": "Deprecated: prefer bucket_ids[].",
14964
+ "schema": {
14965
+ "type": "integer",
14966
+ "deprecated": true,
14967
+ "description": "Deprecated: prefer bucket_ids[].\nThis shape is deprecated since 2026-07: Use bucketIds (bucket_ids[]) instead",
14968
+ "format": "int64"
14969
+ },
14970
+ "deprecated": true,
14971
+ "x-deprecated-reason": "prefer bucket_ids[]."
14972
+ },
14973
+ {
14974
+ "name": "creator_id",
14975
+ "in": "query",
14976
+ "description": "Deprecated: prefer creator_ids[].",
14977
+ "schema": {
14978
+ "type": "integer",
14979
+ "deprecated": true,
14980
+ "description": "Deprecated: prefer creator_ids[].\nThis shape is deprecated since 2026-07: Use creatorIds (creator_ids[]) instead",
14981
+ "format": "int64"
14982
+ },
14983
+ "deprecated": true,
14984
+ "x-deprecated-reason": "prefer creator_ids[]."
14556
14985
  }
14557
14986
  ],
14558
14987
  "responses": {
@@ -15650,6 +16079,7 @@
15650
16079
  "title": "Launch Tasks",
15651
16080
  "inherits_status": true,
15652
16081
  "type": "Todolist",
16082
+ "description_attachments": [],
15653
16083
  "url": "https://3.basecampapi.com/999/buckets/12345678/todolists/987654.json",
15654
16084
  "app_url": "https://3.basecamp.com/999/buckets/12345678/todolists/987654",
15655
16085
  "creator": {
@@ -16777,6 +17207,103 @@
16777
17207
  }
16778
17208
  }
16779
17209
  },
17210
+ "/todosets/todolists/{todolistId}/position.json": {
17211
+ "put": {
17212
+ "description": "Reposition a to-do list within its to-do set.\nposition is the 1-based index among the to-do lists the caller can see; the server\ntranslates it relative to loose to-dos and hidden completed lists. Shifts siblings.",
17213
+ "operationId": "RepositionTodolist",
17214
+ "requestBody": {
17215
+ "content": {
17216
+ "application/json": {
17217
+ "schema": {
17218
+ "$ref": "#/components/schemas/RepositionTodolistRequestContent"
17219
+ }
17220
+ }
17221
+ },
17222
+ "required": true
17223
+ },
17224
+ "parameters": [
17225
+ {
17226
+ "name": "todolistId",
17227
+ "in": "path",
17228
+ "schema": {
17229
+ "type": "integer",
17230
+ "format": "int64"
17231
+ },
17232
+ "required": true
17233
+ }
17234
+ ],
17235
+ "responses": {
17236
+ "204": {
17237
+ "description": "RepositionTodolist 204 response"
17238
+ },
17239
+ "401": {
17240
+ "description": "UnauthorizedError 401 response",
17241
+ "content": {
17242
+ "application/json": {
17243
+ "schema": {
17244
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
17245
+ }
17246
+ }
17247
+ }
17248
+ },
17249
+ "403": {
17250
+ "description": "ForbiddenError 403 response",
17251
+ "content": {
17252
+ "application/json": {
17253
+ "schema": {
17254
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
17255
+ }
17256
+ }
17257
+ }
17258
+ },
17259
+ "404": {
17260
+ "description": "NotFoundError 404 response",
17261
+ "content": {
17262
+ "application/json": {
17263
+ "schema": {
17264
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
17265
+ }
17266
+ }
17267
+ }
17268
+ },
17269
+ "422": {
17270
+ "description": "ValidationError 422 response",
17271
+ "content": {
17272
+ "application/json": {
17273
+ "schema": {
17274
+ "$ref": "#/components/schemas/ValidationErrorResponseContent"
17275
+ }
17276
+ }
17277
+ }
17278
+ },
17279
+ "500": {
17280
+ "description": "InternalServerError 500 response",
17281
+ "content": {
17282
+ "application/json": {
17283
+ "schema": {
17284
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
17285
+ }
17286
+ }
17287
+ }
17288
+ }
17289
+ },
17290
+ "tags": [
17291
+ "Todos"
17292
+ ],
17293
+ "x-basecamp-idempotent": {
17294
+ "natural": true
17295
+ },
17296
+ "x-basecamp-retry": {
17297
+ "maxAttempts": 3,
17298
+ "baseDelayMs": 1000,
17299
+ "backoff": "exponential",
17300
+ "retryOn": [
17301
+ 429,
17302
+ 503
17303
+ ]
17304
+ }
17305
+ }
17306
+ },
16780
17307
  "/todosets/{todosetId}": {
16781
17308
  "get": {
16782
17309
  "description": "Get a todoset (container for todolists in a project)",
@@ -19007,6 +19534,12 @@
19007
19534
  "description": {
19008
19535
  "type": "string"
19009
19536
  },
19537
+ "description_attachments": {
19538
+ "type": "array",
19539
+ "items": {
19540
+ "$ref": "#/components/schemas/RichTextAttachment"
19541
+ }
19542
+ },
19010
19543
  "due_on": {
19011
19544
  "type": "string",
19012
19545
  "x-go-type": "types.Date",
@@ -19079,6 +19612,7 @@
19079
19612
  "bucket",
19080
19613
  "created_at",
19081
19614
  "creator",
19615
+ "description_attachments",
19082
19616
  "id",
19083
19617
  "inherits_status",
19084
19618
  "parent",
@@ -19423,6 +19957,12 @@
19423
19957
  "items": {
19424
19958
  "$ref": "#/components/schemas/CardColumn"
19425
19959
  }
19960
+ },
19961
+ "wormholes": {
19962
+ "type": "array",
19963
+ "items": {
19964
+ "$ref": "#/components/schemas/Wormhole"
19965
+ }
19426
19966
  }
19427
19967
  },
19428
19968
  "required": [
@@ -19550,6 +20090,12 @@
19550
20090
  "content": {
19551
20091
  "type": "string"
19552
20092
  },
20093
+ "content_attachments": {
20094
+ "type": "array",
20095
+ "items": {
20096
+ "$ref": "#/components/schemas/RichTextAttachment"
20097
+ }
20098
+ },
19553
20099
  "subject": {
19554
20100
  "type": "string"
19555
20101
  },
@@ -19584,6 +20130,7 @@
19584
20130
  "required": [
19585
20131
  "app_url",
19586
20132
  "bucket",
20133
+ "content_attachments",
19587
20134
  "created_at",
19588
20135
  "creator",
19589
20136
  "id",
@@ -19739,6 +20286,12 @@
19739
20286
  "content": {
19740
20287
  "type": "string"
19741
20288
  },
20289
+ "content_attachments": {
20290
+ "type": "array",
20291
+ "items": {
20292
+ "$ref": "#/components/schemas/RichTextAttachment"
20293
+ }
20294
+ },
19742
20295
  "subject": {
19743
20296
  "type": "string"
19744
20297
  },
@@ -19753,6 +20306,7 @@
19753
20306
  "required": [
19754
20307
  "app_url",
19755
20308
  "bucket",
20309
+ "content_attachments",
19756
20310
  "created_at",
19757
20311
  "creator",
19758
20312
  "id",
@@ -19826,12 +20380,19 @@
19826
20380
  },
19827
20381
  "content": {
19828
20382
  "type": "string"
20383
+ },
20384
+ "content_attachments": {
20385
+ "type": "array",
20386
+ "items": {
20387
+ "$ref": "#/components/schemas/RichTextAttachment"
20388
+ }
19829
20389
  }
19830
20390
  },
19831
20391
  "required": [
19832
20392
  "app_url",
19833
20393
  "bucket",
19834
20394
  "content",
20395
+ "content_attachments",
19835
20396
  "created_at",
19836
20397
  "creator",
19837
20398
  "id",
@@ -19856,7 +20417,8 @@
19856
20417
  "app_url": {
19857
20418
  "type": "string"
19858
20419
  }
19859
- }
20420
+ },
20421
+ "x-deprecated-reason": "This shape is deprecated since 2024-01: Use Client Visibility feature instead"
19860
20422
  },
19861
20423
  "Comment": {
19862
20424
  "type": "object",
@@ -19918,6 +20480,12 @@
19918
20480
  "content": {
19919
20481
  "type": "string"
19920
20482
  },
20483
+ "content_attachments": {
20484
+ "type": "array",
20485
+ "items": {
20486
+ "$ref": "#/components/schemas/RichTextAttachment"
20487
+ }
20488
+ },
19921
20489
  "boosts_count": {
19922
20490
  "type": "integer",
19923
20491
  "format": "int32"
@@ -19930,6 +20498,7 @@
19930
20498
  "app_url",
19931
20499
  "bucket",
19932
20500
  "content",
20501
+ "content_attachments",
19933
20502
  "created_at",
19934
20503
  "creator",
19935
20504
  "id",
@@ -20109,6 +20678,10 @@
20109
20678
  "format": "int64"
20110
20679
  },
20111
20680
  "x-go-type-skip-optional-pointer": false
20681
+ },
20682
+ "visible_to_clients": {
20683
+ "type": "boolean",
20684
+ "x-go-type-skip-optional-pointer": false
20112
20685
  }
20113
20686
  },
20114
20687
  "required": [
@@ -20214,6 +20787,10 @@
20214
20787
  "format": "int64"
20215
20788
  },
20216
20789
  "x-go-type-skip-optional-pointer": false
20790
+ },
20791
+ "visible_to_clients": {
20792
+ "type": "boolean",
20793
+ "x-go-type-skip-optional-pointer": false
20217
20794
  }
20218
20795
  },
20219
20796
  "required": [
@@ -20269,15 +20846,12 @@
20269
20846
  "CreateProjectFromTemplateRequestContent": {
20270
20847
  "type": "object",
20271
20848
  "properties": {
20272
- "name": {
20273
- "type": "string"
20274
- },
20275
- "description": {
20276
- "type": "string"
20849
+ "project": {
20850
+ "$ref": "#/components/schemas/ProjectConstructionAttributes"
20277
20851
  }
20278
20852
  },
20279
20853
  "required": [
20280
- "name"
20854
+ "project"
20281
20855
  ]
20282
20856
  },
20283
20857
  "CreateProjectFromTemplateResponseContent": {
@@ -20308,6 +20882,10 @@
20308
20882
  },
20309
20883
  "schedule": {
20310
20884
  "$ref": "#/components/schemas/QuestionSchedule"
20885
+ },
20886
+ "visible_to_clients": {
20887
+ "type": "boolean",
20888
+ "x-go-type-skip-optional-pointer": false
20311
20889
  }
20312
20890
  },
20313
20891
  "required": [
@@ -20380,6 +20958,10 @@
20380
20958
  "format": "int64"
20381
20959
  },
20382
20960
  "x-go-type-skip-optional-pointer": false
20961
+ },
20962
+ "visible_to_clients": {
20963
+ "type": "boolean",
20964
+ "x-go-type-skip-optional-pointer": false
20383
20965
  }
20384
20966
  },
20385
20967
  "required": [
@@ -20507,6 +21089,10 @@
20507
21089
  },
20508
21090
  "description": {
20509
21091
  "type": "string"
21092
+ },
21093
+ "visible_to_clients": {
21094
+ "type": "boolean",
21095
+ "x-go-type-skip-optional-pointer": false
20510
21096
  }
20511
21097
  },
20512
21098
  "required": [
@@ -20554,6 +21140,10 @@
20554
21140
  "format": "int64"
20555
21141
  },
20556
21142
  "x-go-type-skip-optional-pointer": false
21143
+ },
21144
+ "visible_to_clients": {
21145
+ "type": "boolean",
21146
+ "x-go-type-skip-optional-pointer": false
20557
21147
  }
20558
21148
  },
20559
21149
  "required": [
@@ -20602,6 +21192,23 @@
20602
21192
  "CreateWebhookResponseContent": {
20603
21193
  "$ref": "#/components/schemas/Webhook"
20604
21194
  },
21195
+ "CreateWormholeRequestContent": {
21196
+ "type": "object",
21197
+ "properties": {
21198
+ "destination_recording_id": {
21199
+ "type": "integer",
21200
+ "description": "Id of the destination column (on another accessible card table) to link to.",
21201
+ "format": "int64",
21202
+ "x-go-type-skip-optional-pointer": false
21203
+ }
21204
+ },
21205
+ "required": [
21206
+ "destination_recording_id"
21207
+ ]
21208
+ },
21209
+ "CreateWormholeResponseContent": {
21210
+ "$ref": "#/components/schemas/Wormhole"
21211
+ },
20605
21212
  "DisableCardColumnOnHoldResponseContent": {
20606
21213
  "$ref": "#/components/schemas/CardColumn"
20607
21214
  },
@@ -20716,6 +21323,12 @@
20716
21323
  "content": {
20717
21324
  "type": "string"
20718
21325
  },
21326
+ "content_attachments": {
21327
+ "type": "array",
21328
+ "items": {
21329
+ "$ref": "#/components/schemas/RichTextAttachment"
21330
+ }
21331
+ },
20719
21332
  "boosts_count": {
20720
21333
  "type": "integer",
20721
21334
  "format": "int32"
@@ -20727,6 +21340,7 @@
20727
21340
  "required": [
20728
21341
  "app_url",
20729
21342
  "bucket",
21343
+ "content_attachments",
20730
21344
  "created_at",
20731
21345
  "creator",
20732
21346
  "id",
@@ -20918,6 +21532,12 @@
20918
21532
  "content": {
20919
21533
  "type": "string"
20920
21534
  },
21535
+ "content_attachments": {
21536
+ "type": "array",
21537
+ "items": {
21538
+ "$ref": "#/components/schemas/RichTextAttachment"
21539
+ }
21540
+ },
20921
21541
  "subject": {
20922
21542
  "type": "string"
20923
21543
  },
@@ -20935,6 +21555,7 @@
20935
21555
  "required": [
20936
21556
  "app_url",
20937
21557
  "bucket",
21558
+ "content_attachments",
20938
21559
  "created_at",
20939
21560
  "creator",
20940
21561
  "id",
@@ -21009,6 +21630,12 @@
21009
21630
  "content": {
21010
21631
  "type": "string"
21011
21632
  },
21633
+ "content_attachments": {
21634
+ "type": "array",
21635
+ "items": {
21636
+ "$ref": "#/components/schemas/RichTextAttachment"
21637
+ }
21638
+ },
21012
21639
  "boosts_count": {
21013
21640
  "type": "integer",
21014
21641
  "format": "int32"
@@ -21021,6 +21648,7 @@
21021
21648
  "app_url",
21022
21649
  "bucket",
21023
21650
  "content",
21651
+ "content_attachments",
21024
21652
  "created_at",
21025
21653
  "creator",
21026
21654
  "id",
@@ -21091,6 +21719,13 @@
21091
21719
  "description": {
21092
21720
  "type": "string"
21093
21721
  },
21722
+ "description_attachments": {
21723
+ "type": "array",
21724
+ "items": {
21725
+ "$ref": "#/components/schemas/RichTextAttachment"
21726
+ },
21727
+ "description": "Optional (no `@required`): the type-specific partial renders the\ncompanion array only when the gauge has needles (bc3 `if\ngauge.any_needles?`), so a needle-less gauge omits the key entirely.\nNon-nullable — never served as JSON `null`."
21728
+ },
21094
21729
  "enabled": {
21095
21730
  "type": "boolean"
21096
21731
  },
@@ -21189,6 +21824,12 @@
21189
21824
  "description": {
21190
21825
  "type": "string"
21191
21826
  },
21827
+ "description_attachments": {
21828
+ "type": "array",
21829
+ "items": {
21830
+ "$ref": "#/components/schemas/RichTextAttachment"
21831
+ }
21832
+ },
21192
21833
  "color": {
21193
21834
  "type": "string"
21194
21835
  },
@@ -21199,6 +21840,7 @@
21199
21840
  },
21200
21841
  "required": [
21201
21842
  "created_at",
21843
+ "description_attachments",
21202
21844
  "id",
21203
21845
  "updated_at"
21204
21846
  ]
@@ -22091,6 +22733,12 @@
22091
22733
  "content": {
22092
22734
  "type": "string"
22093
22735
  },
22736
+ "content_attachments": {
22737
+ "type": "array",
22738
+ "items": {
22739
+ "$ref": "#/components/schemas/RichTextAttachment"
22740
+ }
22741
+ },
22094
22742
  "category": {
22095
22743
  "$ref": "#/components/schemas/MessageType"
22096
22744
  },
@@ -22106,6 +22754,7 @@
22106
22754
  "app_url",
22107
22755
  "bucket",
22108
22756
  "content",
22757
+ "content_attachments",
22109
22758
  "created_at",
22110
22759
  "creator",
22111
22760
  "id",
@@ -22917,7 +23566,8 @@
22917
23566
  },
22918
23567
  "clientside": {
22919
23568
  "$ref": "#/components/schemas/ClientSide",
22920
- "deprecated": true
23569
+ "deprecated": true,
23570
+ "x-deprecated-reason": "This shape is deprecated since 2024-01: Use Client Visibility feature instead"
22921
23571
  }
22922
23572
  },
22923
23573
  "required": [
@@ -22970,6 +23620,20 @@
22970
23620
  "status"
22971
23621
  ]
22972
23622
  },
23623
+ "ProjectConstructionAttributes": {
23624
+ "type": "object",
23625
+ "properties": {
23626
+ "name": {
23627
+ "type": "string"
23628
+ },
23629
+ "description": {
23630
+ "type": "string"
23631
+ }
23632
+ },
23633
+ "required": [
23634
+ "name"
23635
+ ]
23636
+ },
22973
23637
  "Question": {
22974
23638
  "type": "object",
22975
23639
  "properties": {
@@ -23121,6 +23785,12 @@
23121
23785
  "content": {
23122
23786
  "type": "string"
23123
23787
  },
23788
+ "content_attachments": {
23789
+ "type": "array",
23790
+ "items": {
23791
+ "$ref": "#/components/schemas/RichTextAttachment"
23792
+ }
23793
+ },
23124
23794
  "group_on": {
23125
23795
  "type": "string",
23126
23796
  "x-go-type": "types.Date",
@@ -23150,6 +23820,7 @@
23150
23820
  "app_url",
23151
23821
  "bucket",
23152
23822
  "content",
23823
+ "content_attachments",
23153
23824
  "created_at",
23154
23825
  "creator",
23155
23826
  "id",
@@ -23421,6 +24092,20 @@
23421
24092
  "content": {
23422
24093
  "type": "string"
23423
24094
  },
24095
+ "content_attachments": {
24096
+ "type": "array",
24097
+ "items": {
24098
+ "$ref": "#/components/schemas/RichTextAttachment"
24099
+ },
24100
+ "description": "Rich-text companion arrays carried through the generic recording\nprojection (`to_recordable_partial_path` renders the full type-specific\npartial). A given recording is one type, so it carries only the array\nmatching its rich-text attribute (`content_attachments` for a\nComment/Message, `description_attachments` for a Todo/Card); a\nwebhook-sourced recording (base partial) carries neither. Optional (no\n`@required`), non-nullable."
24101
+ },
24102
+ "description_attachments": {
24103
+ "type": "array",
24104
+ "items": {
24105
+ "$ref": "#/components/schemas/RichTextAttachment"
24106
+ },
24107
+ "description": "See `content_attachments` — the description-attribute companion array."
24108
+ },
23424
24109
  "comments_count": {
23425
24110
  "type": "integer",
23426
24111
  "format": "int32"
@@ -23607,6 +24292,18 @@
23607
24292
  "position"
23608
24293
  ]
23609
24294
  },
24295
+ "RepositionTodolistRequestContent": {
24296
+ "type": "object",
24297
+ "properties": {
24298
+ "position": {
24299
+ "type": "integer",
24300
+ "format": "int32"
24301
+ }
24302
+ },
24303
+ "required": [
24304
+ "position"
24305
+ ]
24306
+ },
23610
24307
  "RepositionToolRequestContent": {
23611
24308
  "type": "object",
23612
24309
  "properties": {
@@ -23627,6 +24324,76 @@
23627
24324
  }
23628
24325
  }
23629
24326
  },
24327
+ "RichTextAttachment": {
24328
+ "type": "object",
24329
+ "description": "Structured metadata for a downloadable file attachment embedded in a\nrich text attribute. Every rich text attribute in an API response is\naccompanied by a corresponding `*_attachments` array named after the\nattribute (a Todo's `description_attachments` for its `description`).\nMentions, remote images, and opengraph embeds are excluded — only\ndownloadable file attachments appear.",
24330
+ "properties": {
24331
+ "id": {
24332
+ "type": "integer",
24333
+ "format": "int64",
24334
+ "x-go-type-skip-optional-pointer": false
24335
+ },
24336
+ "sgid": {
24337
+ "type": "string"
24338
+ },
24339
+ "filename": {
24340
+ "type": "string"
24341
+ },
24342
+ "content_type": {
24343
+ "type": "string"
24344
+ },
24345
+ "byte_size": {
24346
+ "type": "integer",
24347
+ "format": "int64"
24348
+ },
24349
+ "download_url": {
24350
+ "type": "string",
24351
+ "x-basecamp-auth-routable-url": {}
24352
+ },
24353
+ "width": {
24354
+ "type": "integer",
24355
+ "description": "Pixel dimensions, present as keys on every attachment but null for\nnon-image blobs, and the BC3 API may serialize them float-spelled\n(`1024.0`) — hence optional/nullable rather than `@required` (the enhance\npass marks them `nullable: true` in the OpenAPI). All SDKs decode both\nforms faithfully and type the nullable value statically: Go `types.FlexInt`\n→ `*int32`, Kotlin `Int?` via `FlexibleIntSerializer`, Swift `Int32?`,\nTypeScript `number | null`, Python `Optional[int | float]` (raw JSON keeps\nthe float), Ruby nilable. See SPEC.md §10 Type Fidelity.",
24356
+ "format": "int32",
24357
+ "nullable": true,
24358
+ "x-go-type": "types.FlexInt",
24359
+ "x-go-type-import": {
24360
+ "path": "github.com/basecamp/basecamp-sdk/go/pkg/types"
24361
+ },
24362
+ "x-go-type-skip-optional-pointer": false
24363
+ },
24364
+ "height": {
24365
+ "type": "integer",
24366
+ "description": "See `width` — same nullable/float-spelled behavior and cross-SDK note.",
24367
+ "format": "int32",
24368
+ "nullable": true,
24369
+ "x-go-type": "types.FlexInt",
24370
+ "x-go-type-import": {
24371
+ "path": "github.com/basecamp/basecamp-sdk/go/pkg/types"
24372
+ },
24373
+ "x-go-type-skip-optional-pointer": false
24374
+ },
24375
+ "previewable": {
24376
+ "type": "boolean"
24377
+ },
24378
+ "preview_url": {
24379
+ "type": "string"
24380
+ },
24381
+ "thumbnail_url": {
24382
+ "type": "string"
24383
+ }
24384
+ },
24385
+ "required": [
24386
+ "byte_size",
24387
+ "content_type",
24388
+ "download_url",
24389
+ "filename",
24390
+ "id",
24391
+ "preview_url",
24392
+ "previewable",
24393
+ "sgid",
24394
+ "thumbnail_url"
24395
+ ]
24396
+ },
23630
24397
  "Schedule": {
23631
24398
  "type": "object",
23632
24399
  "properties": {
@@ -23795,6 +24562,12 @@
23795
24562
  "description": {
23796
24563
  "type": "string"
23797
24564
  },
24565
+ "description_attachments": {
24566
+ "type": "array",
24567
+ "items": {
24568
+ "$ref": "#/components/schemas/RichTextAttachment"
24569
+ }
24570
+ },
23798
24571
  "all_day": {
23799
24572
  "type": "boolean"
23800
24573
  },
@@ -23833,6 +24606,7 @@
23833
24606
  "bucket",
23834
24607
  "created_at",
23835
24608
  "creator",
24609
+ "description_attachments",
23836
24610
  "id",
23837
24611
  "inherits_status",
23838
24612
  "parent",
@@ -23848,26 +24622,43 @@
23848
24622
  "SearchMetadata": {
23849
24623
  "type": "object",
23850
24624
  "properties": {
23851
- "projects": {
24625
+ "recording_search_types": {
23852
24626
  "type": "array",
23853
24627
  "items": {
23854
- "$ref": "#/components/schemas/SearchProject"
24628
+ "$ref": "#/components/schemas/SearchType"
23855
24629
  }
23856
- }
23857
- }
23858
- },
23859
- "SearchProject": {
23860
- "type": "object",
23861
- "properties": {
23862
- "id": {
23863
- "type": "integer",
23864
- "format": "int64",
23865
- "x-go-type-skip-optional-pointer": false
23866
24630
  },
23867
- "name": {
24631
+ "file_search_types": {
24632
+ "type": "array",
24633
+ "items": {
24634
+ "$ref": "#/components/schemas/SearchType"
24635
+ }
24636
+ },
24637
+ "default_creator_label": {
24638
+ "type": "string"
24639
+ },
24640
+ "default_bucket_label": {
24641
+ "type": "string"
24642
+ },
24643
+ "default_circle_label": {
24644
+ "type": "string"
24645
+ },
24646
+ "default_file_type_label": {
24647
+ "type": "string"
24648
+ },
24649
+ "default_type_label": {
23868
24650
  "type": "string"
23869
24651
  }
23870
- }
24652
+ },
24653
+ "required": [
24654
+ "default_bucket_label",
24655
+ "default_circle_label",
24656
+ "default_creator_label",
24657
+ "default_file_type_label",
24658
+ "default_type_label",
24659
+ "file_search_types",
24660
+ "recording_search_types"
24661
+ ]
23871
24662
  },
23872
24663
  "SearchResponseContent": {
23873
24664
  "type": "array",
@@ -23938,6 +24729,20 @@
23938
24729
  "description": {
23939
24730
  "type": "string"
23940
24731
  },
24732
+ "content_attachments": {
24733
+ "type": "array",
24734
+ "items": {
24735
+ "$ref": "#/components/schemas/RichTextAttachment"
24736
+ },
24737
+ "description": "Rich-text companion arrays carried through the polymorphic search\nprojection. A given result is one recording type, so it carries only\nthe array matching its rich-text attribute (`content_attachments` for a\nComment/Message, `description_attachments` for a Todo); a webhook-sourced\nresult carries neither. Optional (no `@required`), non-nullable. Distinct\nfrom the generic `attachments` key (the recording's aggregate downloadable\nfiles), which is a separate projection concern and not modeled here."
24738
+ },
24739
+ "description_attachments": {
24740
+ "type": "array",
24741
+ "items": {
24742
+ "$ref": "#/components/schemas/RichTextAttachment"
24743
+ },
24744
+ "description": "See `content_attachments` — the description-attribute companion array."
24745
+ },
23941
24746
  "subject": {
23942
24747
  "type": "string"
23943
24748
  }
@@ -23950,6 +24755,27 @@
23950
24755
  "url"
23951
24756
  ]
23952
24757
  },
24758
+ "SearchType": {
24759
+ "type": "object",
24760
+ "description": "A selectable search filter option. `key` is the value passed back as a\nfilter parameter (null represents the default \"everything\" option); `value`\nis the human-readable label.",
24761
+ "properties": {
24762
+ "key": {
24763
+ "type": [
24764
+ "string",
24765
+ "null"
24766
+ ],
24767
+ "description": "Always present on the wire; `null` for the default \"everything\" option.\n`@required` models the presence; nullability of the value is layered on in\nthe OpenAPI (smithy-build.json jsonAdd -> type: [\"string\", \"null\"]) since\nSmithy has no native required-and-nullable.",
24768
+ "x-go-type": "*string"
24769
+ },
24770
+ "value": {
24771
+ "type": "string"
24772
+ }
24773
+ },
24774
+ "required": [
24775
+ "key",
24776
+ "value"
24777
+ ]
24778
+ },
23953
24779
  "SetCardColumnColorRequestContent": {
23954
24780
  "type": "object",
23955
24781
  "properties": {
@@ -24293,6 +25119,12 @@
24293
25119
  "content": {
24294
25120
  "type": "string"
24295
25121
  },
25122
+ "description_attachments": {
25123
+ "type": "array",
25124
+ "items": {
25125
+ "$ref": "#/components/schemas/RichTextAttachment"
25126
+ }
25127
+ },
24296
25128
  "starts_on": {
24297
25129
  "type": "string",
24298
25130
  "x-go-type": "types.Date",
@@ -24345,6 +25177,7 @@
24345
25177
  "content",
24346
25178
  "created_at",
24347
25179
  "creator",
25180
+ "description_attachments",
24348
25181
  "id",
24349
25182
  "inherits_status",
24350
25183
  "parent",
@@ -24481,6 +25314,12 @@
24481
25314
  "description": {
24482
25315
  "type": "string"
24483
25316
  },
25317
+ "description_attachments": {
25318
+ "type": "array",
25319
+ "items": {
25320
+ "$ref": "#/components/schemas/RichTextAttachment"
25321
+ }
25322
+ },
24484
25323
  "completed": {
24485
25324
  "type": "boolean"
24486
25325
  },
@@ -24512,6 +25351,7 @@
24512
25351
  "bucket",
24513
25352
  "created_at",
24514
25353
  "creator",
25354
+ "description_attachments",
24515
25355
  "id",
24516
25356
  "inherits_status",
24517
25357
  "name",
@@ -25415,6 +26255,23 @@
25415
26255
  "UpdateWebhookResponseContent": {
25416
26256
  "$ref": "#/components/schemas/Webhook"
25417
26257
  },
26258
+ "UpdateWormholeRequestContent": {
26259
+ "type": "object",
26260
+ "properties": {
26261
+ "destination_recording_id": {
26262
+ "type": "integer",
26263
+ "description": "Id of the new destination column (on another accessible card table).",
26264
+ "format": "int64",
26265
+ "x-go-type-skip-optional-pointer": false
26266
+ }
26267
+ },
26268
+ "required": [
26269
+ "destination_recording_id"
26270
+ ]
26271
+ },
26272
+ "UpdateWormholeResponseContent": {
26273
+ "$ref": "#/components/schemas/Wormhole"
26274
+ },
25418
26275
  "Upload": {
25419
26276
  "type": "object",
25420
26277
  "properties": {
@@ -25489,6 +26346,12 @@
25489
26346
  "description": {
25490
26347
  "type": "string"
25491
26348
  },
26349
+ "description_attachments": {
26350
+ "type": "array",
26351
+ "items": {
26352
+ "$ref": "#/components/schemas/RichTextAttachment"
26353
+ }
26354
+ },
25492
26355
  "content_type": {
25493
26356
  "type": "string"
25494
26357
  },
@@ -25534,6 +26397,7 @@
25534
26397
  "bucket",
25535
26398
  "created_at",
25536
26399
  "creator",
26400
+ "description_attachments",
25537
26401
  "id",
25538
26402
  "inherits_status",
25539
26403
  "parent",
@@ -25850,6 +26714,104 @@
25850
26714
  "required": [
25851
26715
  "error"
25852
26716
  ]
26717
+ },
26718
+ "Wormhole": {
26719
+ "type": "object",
26720
+ "description": "A wormhole links this card table to a column on another card table, enabling\ncards to move across projects. It carries the full recording representation\nplus the destination-linkage fields. The wormhole's own `url`/`app_url`/`parent`\npoint at the *source* board; `destination_url` is the only field identifying\nthe destination column.",
26721
+ "properties": {
26722
+ "id": {
26723
+ "type": "integer",
26724
+ "format": "int64",
26725
+ "x-go-type-skip-optional-pointer": false
26726
+ },
26727
+ "status": {
26728
+ "type": "string"
26729
+ },
26730
+ "visible_to_clients": {
26731
+ "type": "boolean"
26732
+ },
26733
+ "created_at": {
26734
+ "type": "string",
26735
+ "x-go-type": "time.Time",
26736
+ "x-go-type-import": {
26737
+ "path": "time"
26738
+ },
26739
+ "x-go-type-skip-optional-pointer": true
26740
+ },
26741
+ "updated_at": {
26742
+ "type": "string",
26743
+ "x-go-type": "time.Time",
26744
+ "x-go-type-import": {
26745
+ "path": "time"
26746
+ },
26747
+ "x-go-type-skip-optional-pointer": true
26748
+ },
26749
+ "title": {
26750
+ "type": "string"
26751
+ },
26752
+ "inherits_status": {
26753
+ "type": "boolean"
26754
+ },
26755
+ "type": {
26756
+ "type": "string"
26757
+ },
26758
+ "url": {
26759
+ "type": "string"
26760
+ },
26761
+ "app_url": {
26762
+ "type": "string"
26763
+ },
26764
+ "bookmark_url": {
26765
+ "type": "string"
26766
+ },
26767
+ "parent": {
26768
+ "$ref": "#/components/schemas/RecordingParent"
26769
+ },
26770
+ "bucket": {
26771
+ "$ref": "#/components/schemas/TodoBucket"
26772
+ },
26773
+ "creator": {
26774
+ "$ref": "#/components/schemas/Person"
26775
+ },
26776
+ "color": {
26777
+ "type": [
26778
+ "string",
26779
+ "null"
26780
+ ],
26781
+ "description": "Wormhole color; always emitted on the wire (`json.color recording.color`),\n`null` when unset. Like destination_url, `@required` models the presence and\nthe nullability is layered on in the OpenAPI (smithy-build.json jsonAdd ->\ntype: [\"string\",\"null\"] + x-go-type \"*string\").",
26782
+ "x-go-type": "*string"
26783
+ },
26784
+ "linked": {
26785
+ "type": "boolean",
26786
+ "description": "True only while the destination column, its board, and its bucket are all\nactive; false once the destination is unlinked. Always emitted."
26787
+ },
26788
+ "destination_url": {
26789
+ "type": [
26790
+ "string",
26791
+ "null"
26792
+ ],
26793
+ "description": "URL of the destination column; always present on the wire, `null` for an\nunlinked wormhole. `@required` models the presence; the nullability of the\nvalue is layered on in the OpenAPI (smithy-build.json jsonAdd -> type:\n[\"string\",\"null\"] + x-go-type \"*string\") since Smithy has no native\nrequired-and-nullable — exactly the SearchType.key treatment. SDKs model it\nas required-but-nullable (`string | null`, not `string | null | undefined`).",
26794
+ "x-go-type": "*string"
26795
+ }
26796
+ },
26797
+ "required": [
26798
+ "app_url",
26799
+ "bucket",
26800
+ "color",
26801
+ "created_at",
26802
+ "creator",
26803
+ "destination_url",
26804
+ "id",
26805
+ "inherits_status",
26806
+ "linked",
26807
+ "parent",
26808
+ "status",
26809
+ "title",
26810
+ "type",
26811
+ "updated_at",
26812
+ "url",
26813
+ "visible_to_clients"
26814
+ ]
25853
26815
  }
25854
26816
  }
25855
26817
  }