@37signals/basecamp 0.25.0 → 0.26.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 (61) hide show
  1. package/README.md +1 -0
  2. package/dist/client.d.ts +5 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +5 -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 +48 -1
  8. package/dist/generated/metadata.js.map +1 -1
  9. package/dist/generated/metadata.ts +48 -1
  10. package/dist/generated/openapi-stripped.json +500 -6
  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/person-id-sites.d.ts.map +1 -1
  16. package/dist/generated/person-id-sites.js +12 -0
  17. package/dist/generated/person-id-sites.js.map +1 -1
  18. package/dist/generated/person-id-sites.ts +12 -0
  19. package/dist/generated/schema.d.ts +439 -9
  20. package/dist/generated/services/boosts.d.ts +20 -0
  21. package/dist/generated/services/boosts.d.ts.map +1 -1
  22. package/dist/generated/services/boosts.js +32 -0
  23. package/dist/generated/services/boosts.js.map +1 -1
  24. package/dist/generated/services/boosts.ts +45 -0
  25. package/dist/generated/services/cards.d.ts +3 -2
  26. package/dist/generated/services/cards.d.ts.map +1 -1
  27. package/dist/generated/services/cards.js +1 -1
  28. package/dist/generated/services/cards.js.map +1 -1
  29. package/dist/generated/services/cards.ts +3 -2
  30. package/dist/generated/services/index.d.ts +1 -0
  31. package/dist/generated/services/index.d.ts.map +1 -1
  32. package/dist/generated/services/index.js +1 -0
  33. package/dist/generated/services/index.js.map +1 -1
  34. package/dist/generated/services/index.ts +1 -0
  35. package/dist/generated/services/pings.d.ts +59 -0
  36. package/dist/generated/services/pings.d.ts.map +1 -0
  37. package/dist/generated/services/pings.js +89 -0
  38. package/dist/generated/services/pings.js.map +1 -0
  39. package/dist/generated/services/pings.ts +125 -0
  40. package/dist/generated/services/wormholes.d.ts +3 -3
  41. package/dist/generated/services/wormholes.js +3 -3
  42. package/dist/generated/services/wormholes.ts +3 -3
  43. package/dist/index.d.ts +2 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/services/recordings-extensions.d.ts +8 -7
  48. package/dist/services/recordings-extensions.d.ts.map +1 -1
  49. package/dist/services/recordings-extensions.js +63 -18
  50. package/dist/services/recordings-extensions.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/generated/metadata.ts +48 -1
  53. package/src/generated/openapi-stripped.json +500 -6
  54. package/src/generated/path-mapping.ts +4 -0
  55. package/src/generated/person-id-sites.ts +12 -0
  56. package/src/generated/schema.d.ts +439 -9
  57. package/src/generated/services/boosts.ts +45 -0
  58. package/src/generated/services/cards.ts +3 -2
  59. package/src/generated/services/index.ts +1 -0
  60. package/src/generated/services/pings.ts +125 -0
  61. package/src/generated/services/wormholes.ts +3 -3
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Basecamp",
5
- "version": "2026-09-15",
5
+ "version": "2026-10-19",
6
6
  "description": "Basecamp API",
7
7
  "contact": {
8
8
  "name": "Basecamp",
@@ -597,6 +597,101 @@
597
597
  503
598
598
  ]
599
599
  }
600
+ },
601
+ "put": {
602
+ "description": "Replace the content of a boost. Only the boost's creator may update it: an\nadmin updating someone else's boost gets 403 Forbidden, as does any caller\nwhen comments are closed on the boosted recording. A boost on a deleted\nrecording, or in another account, answers 404. A missing or invalid\n`content` answers a bodiless 422. There is no bucket-scoped route.",
603
+ "operationId": "UpdateBoost",
604
+ "requestBody": {
605
+ "content": {
606
+ "application/json": {
607
+ "schema": {
608
+ "$ref": "#/components/schemas/UpdateBoostRequestContent"
609
+ }
610
+ }
611
+ },
612
+ "required": true
613
+ },
614
+ "parameters": [
615
+ {
616
+ "name": "boostId",
617
+ "in": "path",
618
+ "schema": {
619
+ "type": "integer",
620
+ "format": "int64"
621
+ },
622
+ "required": true
623
+ }
624
+ ],
625
+ "responses": {
626
+ "200": {
627
+ "description": "UpdateBoost 200 response",
628
+ "content": {
629
+ "application/json": {
630
+ "schema": {
631
+ "$ref": "#/components/schemas/UpdateBoostResponseContent"
632
+ }
633
+ }
634
+ }
635
+ },
636
+ "401": {
637
+ "description": "UnauthorizedError 401 response",
638
+ "content": {
639
+ "application/json": {
640
+ "schema": {
641
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
642
+ }
643
+ }
644
+ }
645
+ },
646
+ "403": {
647
+ "description": "ForbiddenError 403 response",
648
+ "content": {
649
+ "application/json": {
650
+ "schema": {
651
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
652
+ }
653
+ }
654
+ }
655
+ },
656
+ "404": {
657
+ "description": "NotFoundError 404 response",
658
+ "content": {
659
+ "application/json": {
660
+ "schema": {
661
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
662
+ }
663
+ }
664
+ }
665
+ },
666
+ "422": {
667
+ "description": "BareValidationError 422 response"
668
+ },
669
+ "500": {
670
+ "description": "InternalServerError 500 response",
671
+ "content": {
672
+ "application/json": {
673
+ "schema": {
674
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
675
+ }
676
+ }
677
+ }
678
+ }
679
+ },
680
+ "tags": [
681
+ "Boosts"
682
+ ],
683
+ "x-basecamp-idempotent": {
684
+ "natural": true
685
+ },
686
+ "x-basecamp-retry": {
687
+ "maxAttempts": 3,
688
+ "baseDelayMs": 1000,
689
+ "backoff": "exponential",
690
+ "retryOn": [
691
+ 429,
692
+ 503
693
+ ]
694
+ }
600
695
  }
601
696
  },
602
697
  "/buckets/{bucketId}/card_tables/columns/{columnId}/color.json": {
@@ -928,7 +1023,7 @@
928
1023
  },
929
1024
  "/buckets/{bucketId}/card_tables/wormholes/{wormholeId}": {
930
1025
  "delete": {
931
- "description": "Delete a wormhole",
1026
+ "description": "Permanently delete a card table's wormhole, the shortcut that sends cards to another card table.\n\nIt does not go to the trash and cannot be restored.",
932
1027
  "operationId": "DeleteWormhole",
933
1028
  "parameters": [
934
1029
  {
@@ -1022,7 +1117,7 @@
1022
1117
  }
1023
1118
  },
1024
1119
  "put": {
1025
- "description": "Update a wormhole's destination column",
1120
+ "description": "Point a card table's wormhole, its shortcut for sending cards to another card table, at a different destination column",
1026
1121
  "operationId": "UpdateWormhole",
1027
1122
  "requestBody": {
1028
1123
  "content": {
@@ -1125,7 +1220,7 @@
1125
1220
  },
1126
1221
  "/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json": {
1127
1222
  "post": {
1128
- "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.",
1223
+ "description": "Add a wormhole to a card table: a standing shortcut that sends cards to a column on another card table, usually in another project.\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 there. It is not\nneeded for a one-off move within a project; MoveCard goes to any column there\ndirectly. A card table holds at most four wormholes.\n`destinationRecordingId` is the id of a column on another accessible card table.",
1129
1224
  "operationId": "CreateWormhole",
1130
1225
  "requestBody": {
1131
1226
  "content": {
@@ -3902,7 +3997,7 @@
3902
3997
  },
3903
3998
  "/card_tables/cards/{cardId}/moves.json": {
3904
3999
  "post": {
3905
- "description": "Move a card to a different column",
4000
+ "description": "Move a card to any column in its project, including on another card table there, or through a linked wormhole to another project (queued: the card gets a new id, and position, if sent, must still be positive but doesn't set placement).\n\n`column_id` may be any column in the card's project, including a column on\nanother card table in the same project; the card moves there directly, with\nno wormhole needed. To send the card to another project, pass the id of a\nlinked wormhole (`linked: true`) the card table already has, listed in\nGetCardTable's `wormholes`; an unlinked or unreachable one returns not found.\nA move through a wormhole is queued: the card arrives under a new id and its\nold id then returns not found. `position` does not control where it lands,\nbut if supplied it must still be a positive integer.",
3906
4001
  "operationId": "MoveCard",
3907
4002
  "requestBody": {
3908
4003
  "content": {
@@ -6930,6 +7025,159 @@
6930
7025
  }
6931
7026
  }
6932
7027
  },
7028
+ "/circles.json": {
7029
+ "get": {
7030
+ "description": "Get Pings: the caller's active Pings that have a line in them, most\nrecently updated first, in one unpaginated response. Archived Pings, and\nPings no one has posted in yet, are not listed; GetPing reads either by id.\n\nAnswers `403 Forbidden` (`{\"error\": \"Pings have been disabled\"}`) when the\ncaller cannot ping.",
7031
+ "operationId": "ListPings",
7032
+ "parameters": [],
7033
+ "responses": {
7034
+ "200": {
7035
+ "description": "ListPings 200 response",
7036
+ "content": {
7037
+ "application/json": {
7038
+ "schema": {
7039
+ "$ref": "#/components/schemas/ListPingsResponseContent"
7040
+ }
7041
+ }
7042
+ }
7043
+ },
7044
+ "401": {
7045
+ "description": "UnauthorizedError 401 response",
7046
+ "content": {
7047
+ "application/json": {
7048
+ "schema": {
7049
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
7050
+ }
7051
+ }
7052
+ }
7053
+ },
7054
+ "403": {
7055
+ "description": "ForbiddenError 403 response",
7056
+ "content": {
7057
+ "application/json": {
7058
+ "schema": {
7059
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
7060
+ }
7061
+ }
7062
+ }
7063
+ },
7064
+ "429": {
7065
+ "description": "RateLimitError 429 response",
7066
+ "content": {
7067
+ "application/json": {
7068
+ "schema": {
7069
+ "$ref": "#/components/schemas/RateLimitErrorResponseContent"
7070
+ }
7071
+ }
7072
+ }
7073
+ },
7074
+ "500": {
7075
+ "description": "InternalServerError 500 response",
7076
+ "content": {
7077
+ "application/json": {
7078
+ "schema": {
7079
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
7080
+ }
7081
+ }
7082
+ }
7083
+ }
7084
+ },
7085
+ "tags": [
7086
+ "Pings"
7087
+ ],
7088
+ "x-basecamp-retry": {
7089
+ "maxAttempts": 3,
7090
+ "baseDelayMs": 1000,
7091
+ "backoff": "exponential",
7092
+ "retryOn": [
7093
+ 429,
7094
+ 503
7095
+ ]
7096
+ }
7097
+ },
7098
+ "post": {
7099
+ "description": "Create a Ping with people, or return the one that already holds exactly\nthem.\n\nThe caller is always included. Without `new_group`, an existing active\nPing with exactly these people (the oldest, if several) is returned rather\nthan a second one created; with `new_group: true` and more than one other\nperson, a new group is created every time. Either way the answer is\n`201 Created` with the Ping.\n\nAnswers `403 Forbidden` (`{\"error\": \"Pings have been disabled\"}`) when the\ncaller cannot ping, and a bodiless `422` when nobody in the Ping would be a\nperson who can ping.",
7100
+ "operationId": "CreatePing",
7101
+ "requestBody": {
7102
+ "content": {
7103
+ "application/json": {
7104
+ "schema": {
7105
+ "$ref": "#/components/schemas/CreatePingRequestContent"
7106
+ }
7107
+ }
7108
+ },
7109
+ "required": true
7110
+ },
7111
+ "parameters": [],
7112
+ "responses": {
7113
+ "201": {
7114
+ "description": "CreatePing 201 response",
7115
+ "content": {
7116
+ "application/json": {
7117
+ "schema": {
7118
+ "$ref": "#/components/schemas/CreatePingResponseContent"
7119
+ }
7120
+ }
7121
+ }
7122
+ },
7123
+ "401": {
7124
+ "description": "UnauthorizedError 401 response",
7125
+ "content": {
7126
+ "application/json": {
7127
+ "schema": {
7128
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
7129
+ }
7130
+ }
7131
+ }
7132
+ },
7133
+ "403": {
7134
+ "description": "ForbiddenError 403 response",
7135
+ "content": {
7136
+ "application/json": {
7137
+ "schema": {
7138
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
7139
+ }
7140
+ }
7141
+ }
7142
+ },
7143
+ "422": {
7144
+ "description": "BareValidationError 422 response"
7145
+ },
7146
+ "429": {
7147
+ "description": "RateLimitError 429 response",
7148
+ "content": {
7149
+ "application/json": {
7150
+ "schema": {
7151
+ "$ref": "#/components/schemas/RateLimitErrorResponseContent"
7152
+ }
7153
+ }
7154
+ }
7155
+ },
7156
+ "500": {
7157
+ "description": "InternalServerError 500 response",
7158
+ "content": {
7159
+ "application/json": {
7160
+ "schema": {
7161
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
7162
+ }
7163
+ }
7164
+ }
7165
+ }
7166
+ },
7167
+ "tags": [
7168
+ "Pings"
7169
+ ],
7170
+ "x-basecamp-retry": {
7171
+ "maxAttempts": 2,
7172
+ "baseDelayMs": 1000,
7173
+ "backoff": "exponential",
7174
+ "retryOn": [
7175
+ 429,
7176
+ 503
7177
+ ]
7178
+ }
7179
+ }
7180
+ },
6933
7181
  "/circles/people.json": {
6934
7182
  "get": {
6935
7183
  "description": "List all account users who can be pinged\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages. X-Total-Count header provides total count.",
@@ -7006,6 +7254,99 @@
7006
7254
  }
7007
7255
  }
7008
7256
  },
7257
+ "/circles/{pingId}": {
7258
+ "get": {
7259
+ "description": "Get a Ping by its id, which is its bucket's id.\n\nAnswers `403 Forbidden` (`{\"error\": \"Pings have been disabled\"}`) when the\ncaller cannot ping, and `404 Not Found` for a bucket that is not a Ping the\ncaller is in.",
7260
+ "operationId": "GetPing",
7261
+ "parameters": [
7262
+ {
7263
+ "name": "pingId",
7264
+ "in": "path",
7265
+ "description": "A Ping's id is the id of the bucket that holds it (the bucket type is\n\"Circle\", which is also the wire path), so the `bucket.id` a Ping's\nrecordings carry is the id GetPing takes.",
7266
+ "schema": {
7267
+ "type": "integer",
7268
+ "description": "A Ping's id is the id of the bucket that holds it (the bucket type is\n\"Circle\", which is also the wire path), so the `bucket.id` a Ping's\nrecordings carry is the id GetPing takes.",
7269
+ "format": "int64"
7270
+ },
7271
+ "required": true
7272
+ }
7273
+ ],
7274
+ "responses": {
7275
+ "200": {
7276
+ "description": "GetPing 200 response",
7277
+ "content": {
7278
+ "application/json": {
7279
+ "schema": {
7280
+ "$ref": "#/components/schemas/GetPingResponseContent"
7281
+ }
7282
+ }
7283
+ }
7284
+ },
7285
+ "401": {
7286
+ "description": "UnauthorizedError 401 response",
7287
+ "content": {
7288
+ "application/json": {
7289
+ "schema": {
7290
+ "$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
7291
+ }
7292
+ }
7293
+ }
7294
+ },
7295
+ "403": {
7296
+ "description": "ForbiddenError 403 response",
7297
+ "content": {
7298
+ "application/json": {
7299
+ "schema": {
7300
+ "$ref": "#/components/schemas/ForbiddenErrorResponseContent"
7301
+ }
7302
+ }
7303
+ }
7304
+ },
7305
+ "404": {
7306
+ "description": "NotFoundError 404 response",
7307
+ "content": {
7308
+ "application/json": {
7309
+ "schema": {
7310
+ "$ref": "#/components/schemas/NotFoundErrorResponseContent"
7311
+ }
7312
+ }
7313
+ }
7314
+ },
7315
+ "429": {
7316
+ "description": "RateLimitError 429 response",
7317
+ "content": {
7318
+ "application/json": {
7319
+ "schema": {
7320
+ "$ref": "#/components/schemas/RateLimitErrorResponseContent"
7321
+ }
7322
+ }
7323
+ }
7324
+ },
7325
+ "500": {
7326
+ "description": "InternalServerError 500 response",
7327
+ "content": {
7328
+ "application/json": {
7329
+ "schema": {
7330
+ "$ref": "#/components/schemas/InternalServerErrorResponseContent"
7331
+ }
7332
+ }
7333
+ }
7334
+ }
7335
+ },
7336
+ "tags": [
7337
+ "Pings"
7338
+ ],
7339
+ "x-basecamp-retry": {
7340
+ "maxAttempts": 3,
7341
+ "baseDelayMs": 1000,
7342
+ "backoff": "exponential",
7343
+ "retryOn": [
7344
+ 429,
7345
+ 503
7346
+ ]
7347
+ }
7348
+ }
7349
+ },
7009
7350
  "/client/approvals/{approvalId}": {
7010
7351
  "get": {
7011
7352
  "description": "Get a single client approval by id",
@@ -27727,6 +28068,7 @@
27727
28068
  "items": {
27728
28069
  "$ref": "#/components/schemas/Wormhole"
27729
28070
  },
28071
+ "description": "The card table's wormholes: shortcuts for sending cards to other card\ntables, usually in other projects. Only wormholes whose destination the\nrequester can reach are listed; the rest are omitted, not shown unlinked.\nNot needed to move a card within its project; MoveCard reaches any column\nthere directly.",
27730
28072
  "x-go-type-skip-optional-pointer": true
27731
28073
  }
27732
28074
  },
@@ -28886,6 +29228,29 @@
28886
29228
  "name"
28887
29229
  ]
28888
29230
  },
29231
+ "CreatePingRequestContent": {
29232
+ "type": "object",
29233
+ "properties": {
29234
+ "user_ids": {
29235
+ "type": "array",
29236
+ "items": {
29237
+ "type": "integer",
29238
+ "format": "int64"
29239
+ },
29240
+ "description": "Person ids of the people to ping. People the caller cannot reach are\ndropped."
29241
+ },
29242
+ "new_group": {
29243
+ "type": "boolean",
29244
+ "description": "Create a new group even when a Ping with exactly these people exists."
29245
+ }
29246
+ },
29247
+ "required": [
29248
+ "user_ids"
29249
+ ]
29250
+ },
29251
+ "CreatePingResponseContent": {
29252
+ "$ref": "#/components/schemas/Ping"
29253
+ },
28889
29254
  "CreateProjectFromTemplateRequestContent": {
28890
29255
  "type": "object",
28891
29256
  "properties": {
@@ -31144,6 +31509,9 @@
31144
31509
  "GetPersonResponseContent": {
31145
31510
  "$ref": "#/components/schemas/Person"
31146
31511
  },
31512
+ "GetPingResponseContent": {
31513
+ "$ref": "#/components/schemas/Ping"
31514
+ },
31147
31515
  "GetProgressReportResponseContent": {
31148
31516
  "type": "array",
31149
31517
  "items": {
@@ -31785,6 +32153,12 @@
31785
32153
  "$ref": "#/components/schemas/Person"
31786
32154
  }
31787
32155
  },
32156
+ "ListPingsResponseContent": {
32157
+ "type": "array",
32158
+ "items": {
32159
+ "$ref": "#/components/schemas/Ping"
32160
+ }
32161
+ },
31788
32162
  "ListProjectPeopleResponseContent": {
31789
32163
  "type": "array",
31790
32164
  "items": {
@@ -32155,6 +32529,7 @@
32155
32529
  "properties": {
32156
32530
  "column_id": {
32157
32531
  "type": "integer",
32532
+ "description": "Any column in the card's project, on this or another card table, or a\nwormhole id to send the card to another project.",
32158
32533
  "format": "int64"
32159
32534
  },
32160
32535
  "position": {
@@ -32780,6 +33155,110 @@
32780
33155
  "name"
32781
33156
  ]
32782
33157
  },
33158
+ "Ping": {
33159
+ "type": "object",
33160
+ "description": "A Ping: a private conversation between people, held in its own bucket with\none Campfire. The Campfire's lines are read and written through the\nCampfires service; `room_url` and `links.lines` name it.",
33161
+ "properties": {
33162
+ "id": {
33163
+ "type": "integer",
33164
+ "description": "The Ping's id, which is also its bucket's id.",
33165
+ "format": "int64"
33166
+ },
33167
+ "created_at": {
33168
+ "type": "string",
33169
+ "x-go-type": "time.Time",
33170
+ "x-go-type-import": {
33171
+ "path": "time"
33172
+ }
33173
+ },
33174
+ "updated_at": {
33175
+ "type": "string",
33176
+ "x-go-type": "time.Time",
33177
+ "x-go-type-import": {
33178
+ "path": "time"
33179
+ }
33180
+ },
33181
+ "title": {
33182
+ "type": "string",
33183
+ "description": "The Ping's name for the caller: its given name when `named`, else the\nnames of the other people in it."
33184
+ },
33185
+ "named": {
33186
+ "type": "boolean",
33187
+ "description": "Whether someone gave the Ping a name."
33188
+ },
33189
+ "image_url": {
33190
+ "type": "string",
33191
+ "description": "The Ping's own image, present only when one was uploaded."
33192
+ },
33193
+ "avatar_url": {
33194
+ "type": "string",
33195
+ "format": "password",
33196
+ "x-basecamp-sensitive": {
33197
+ "category": "pii",
33198
+ "redact": true
33199
+ }
33200
+ },
33201
+ "url": {
33202
+ "type": "string"
33203
+ },
33204
+ "app_url": {
33205
+ "type": "string"
33206
+ },
33207
+ "bookmark_url": {
33208
+ "type": "string"
33209
+ },
33210
+ "room_url": {
33211
+ "type": "string",
33212
+ "description": "The Ping's Campfire (`/buckets/{bucketId}/chats/{campfireId}.json`)."
33213
+ },
33214
+ "edit_title_url": {
33215
+ "type": "string",
33216
+ "description": "Present only when the Ping can be renamed: one with more than one other\nperson in it."
33217
+ },
33218
+ "links": {
33219
+ "$ref": "#/components/schemas/PingLinks"
33220
+ },
33221
+ "people": {
33222
+ "type": "array",
33223
+ "items": {
33224
+ "$ref": "#/components/schemas/Person"
33225
+ },
33226
+ "description": "The people in the Ping other than the caller; the caller alone when\nnobody else is in it."
33227
+ }
33228
+ },
33229
+ "required": [
33230
+ "app_url",
33231
+ "avatar_url",
33232
+ "bookmark_url",
33233
+ "created_at",
33234
+ "id",
33235
+ "links",
33236
+ "named",
33237
+ "people",
33238
+ "room_url",
33239
+ "title",
33240
+ "updated_at",
33241
+ "url"
33242
+ ]
33243
+ },
33244
+ "PingLinks": {
33245
+ "type": "object",
33246
+ "description": "The Ping's Campfire endpoints, so a client need not derive them from\n`room_url`. The wire object also repeats `url`, `app_url`, `bookmark_url`\nand `edit_title_url` as `self`, `app`, `bookmark` and `edit_title`; those\nare read from the Ping's own fields.",
33247
+ "properties": {
33248
+ "lines": {
33249
+ "type": "string",
33250
+ "description": "The Campfire's lines (`/buckets/{bucketId}/chats/{campfireId}/lines.json`)."
33251
+ },
33252
+ "files": {
33253
+ "type": "string",
33254
+ "description": "The Campfire's uploads."
33255
+ }
33256
+ },
33257
+ "required": [
33258
+ "files",
33259
+ "lines"
33260
+ ]
33261
+ },
32783
33262
  "PollEventsResponseContent": {
32784
33263
  "type": "object",
32785
33264
  "description": "The poll envelope. Every 200 carries `events` and `position`; `next` only\nwhile the walk continues.",
@@ -36285,6 +36764,21 @@
36285
36764
  "UpdateAccountNameResponseContent": {
36286
36765
  "$ref": "#/components/schemas/Account"
36287
36766
  },
36767
+ "UpdateBoostRequestContent": {
36768
+ "type": "object",
36769
+ "properties": {
36770
+ "content": {
36771
+ "type": "string",
36772
+ "maxLength": 16
36773
+ }
36774
+ },
36775
+ "required": [
36776
+ "content"
36777
+ ]
36778
+ },
36779
+ "UpdateBoostResponseContent": {
36780
+ "$ref": "#/components/schemas/Boost"
36781
+ },
36288
36782
  "UpdateCalendarRequestContent": {
36289
36783
  "type": "object",
36290
36784
  "properties": {
@@ -37466,7 +37960,7 @@
37466
37960
  },
37467
37961
  "Wormhole": {
37468
37962
  "type": "object",
37469
- "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.",
37963
+ "description": "A wormhole is a standing shortcut from this card table to a column on another\ncard table, usually in another project, and the only way to move a card across\nprojects. 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.",
37470
37964
  "properties": {
37471
37965
  "id": {
37472
37966
  "type": "integer",
@@ -13,6 +13,7 @@ export const PATH_TO_OPERATION: Record<string, string> = {
13
13
  "PUT:/{accountId}/account/name.json": "UpdateAccountName",
14
14
  "DELETE:/{accountId}/boosts/{boostId}": "DeleteBoost",
15
15
  "GET:/{accountId}/boosts/{boostId}": "GetBoost",
16
+ "PUT:/{accountId}/boosts/{boostId}": "UpdateBoost",
16
17
  "POST:/{accountId}/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json": "CreateWormhole",
17
18
  "PUT:/{accountId}/buckets/{bucketId}/card_tables/columns/{columnId}/color.json": "SetCardColumnColor",
18
19
  "DELETE:/{accountId}/buckets/{bucketId}/card_tables/columns/{columnId}/on_hold.json": "DisableCardColumnOnHold",
@@ -76,6 +77,9 @@ export const PATH_TO_OPERATION: Record<string, string> = {
76
77
  "GET:/{accountId}/chats/{campfireId}/uploads.json": "ListCampfireUploads",
77
78
  "POST:/{accountId}/chats/{campfireId}/uploads.json": "CreateCampfireUpload",
78
79
  "GET:/{accountId}/checkins.json": "GetEverythingCheckins",
80
+ "GET:/{accountId}/circles.json": "ListPings",
81
+ "POST:/{accountId}/circles.json": "CreatePing",
82
+ "GET:/{accountId}/circles/{pingId}": "GetPing",
79
83
  "GET:/{accountId}/client/approvals/{approvalId}": "GetClientApproval",
80
84
  "GET:/{accountId}/client/correspondences/{correspondenceId}": "GetClientCorrespondence",
81
85
  "GET:/{accountId}/cloud_files/{cloudFileId}": "GetCloudFile",
@@ -56,6 +56,9 @@ export const PERSON_ID_SITES: Readonly<Record<string, readonly string[]>> = {
56
56
  "CreateMessage": [
57
57
  "creator"
58
58
  ],
59
+ "CreatePing": [
60
+ "people.[]"
61
+ ],
59
62
  "CreateQuestion": [
60
63
  "creator"
61
64
  ],
@@ -403,6 +406,9 @@ export const PERSON_ID_SITES: Readonly<Record<string, readonly string[]>> = {
403
406
  "events.[].creator",
404
407
  "person"
405
408
  ],
409
+ "GetPing": [
410
+ "people.[]"
411
+ ],
406
412
  "GetProgressReport": [
407
413
  "[].attachments.[].creator",
408
414
  "[].creator"
@@ -577,6 +583,9 @@ export const PERSON_ID_SITES: Readonly<Record<string, readonly string[]>> = {
577
583
  "ListPingablePeople": [
578
584
  "[]"
579
585
  ],
586
+ "ListPings": [
587
+ "[].people.[]"
588
+ ],
580
589
  "ListProjectPeople": [
581
590
  "[]"
582
591
  ],
@@ -666,6 +675,9 @@ export const PERSON_ID_SITES: Readonly<Record<string, readonly string[]>> = {
666
675
  "Subscribe": [
667
676
  "subscribers.[]"
668
677
  ],
678
+ "UpdateBoost": [
679
+ "booster"
680
+ ],
669
681
  "UpdateCard": [
670
682
  "assignees.[]",
671
683
  "completer",