@37signals/basecamp 0.24.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.
- package/README.md +1 -0
- package/dist/client.d.ts +5 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -2
- package/dist/client.js.map +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +48 -1
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +48 -1
- package/dist/generated/openapi-stripped.json +541 -20
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +4 -0
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +4 -0
- package/dist/generated/person-id-sites.d.ts.map +1 -1
- package/dist/generated/person-id-sites.js +12 -0
- package/dist/generated/person-id-sites.js.map +1 -1
- package/dist/generated/person-id-sites.ts +12 -0
- package/dist/generated/schema.d.ts +482 -23
- package/dist/generated/services/boosts.d.ts +22 -2
- package/dist/generated/services/boosts.d.ts.map +1 -1
- package/dist/generated/services/boosts.js +34 -2
- package/dist/generated/services/boosts.js.map +1 -1
- package/dist/generated/services/boosts.ts +47 -2
- package/dist/generated/services/card-columns.d.ts +7 -4
- package/dist/generated/services/card-columns.d.ts.map +1 -1
- package/dist/generated/services/card-columns.js +1 -1
- package/dist/generated/services/card-columns.js.map +1 -1
- package/dist/generated/services/card-columns.ts +7 -4
- package/dist/generated/services/cards.d.ts +3 -2
- package/dist/generated/services/cards.d.ts.map +1 -1
- package/dist/generated/services/cards.js +1 -1
- package/dist/generated/services/cards.js.map +1 -1
- package/dist/generated/services/cards.ts +3 -2
- package/dist/generated/services/checkins.d.ts +2 -4
- package/dist/generated/services/checkins.d.ts.map +1 -1
- package/dist/generated/services/checkins.js +1 -2
- package/dist/generated/services/checkins.js.map +1 -1
- package/dist/generated/services/checkins.ts +2 -5
- package/dist/generated/services/index.d.ts +1 -0
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +1 -0
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +1 -0
- package/dist/generated/services/lineup.d.ts +8 -8
- package/dist/generated/services/lineup.d.ts.map +1 -1
- package/dist/generated/services/lineup.js +10 -8
- package/dist/generated/services/lineup.js.map +1 -1
- package/dist/generated/services/lineup.ts +12 -10
- package/dist/generated/services/my-notifications.d.ts +1 -1
- package/dist/generated/services/my-notifications.js +1 -1
- package/dist/generated/services/my-notifications.ts +1 -1
- package/dist/generated/services/pings.d.ts +59 -0
- package/dist/generated/services/pings.d.ts.map +1 -0
- package/dist/generated/services/pings.js +89 -0
- package/dist/generated/services/pings.js.map +1 -0
- package/dist/generated/services/pings.ts +125 -0
- package/dist/generated/services/wormholes.d.ts +3 -3
- package/dist/generated/services/wormholes.js +3 -3
- package/dist/generated/services/wormholes.ts +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/services/recordings-extensions.d.ts +8 -7
- package/dist/services/recordings-extensions.d.ts.map +1 -1
- package/dist/services/recordings-extensions.js +63 -18
- package/dist/services/recordings-extensions.js.map +1 -1
- package/package.json +1 -1
- package/src/generated/metadata.ts +48 -1
- package/src/generated/openapi-stripped.json +541 -20
- package/src/generated/path-mapping.ts +4 -0
- package/src/generated/person-id-sites.ts +12 -0
- package/src/generated/schema.d.ts +482 -23
- package/src/generated/services/boosts.ts +47 -2
- package/src/generated/services/card-columns.ts +7 -4
- package/src/generated/services/cards.ts +3 -2
- package/src/generated/services/checkins.ts +2 -5
- package/src/generated/services/index.ts +1 -0
- package/src/generated/services/lineup.ts +12 -10
- package/src/generated/services/my-notifications.ts +1 -1
- package/src/generated/services/pings.ts +125 -0
- 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-
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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
|
|
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": {
|
|
@@ -5198,7 +5293,7 @@
|
|
|
5198
5293
|
},
|
|
5199
5294
|
"/card_tables/{cardTableId}/moves.json": {
|
|
5200
5295
|
"post": {
|
|
5201
|
-
"description": "Move a column
|
|
5296
|
+
"description": "Move a column to a slot within its card table. target_id is the card table's own id (the same as cardTableId), not a column; position is the 1-based slot among the columns, not counting Triage, Not Now or Done.",
|
|
5202
5297
|
"operationId": "MoveCardColumn",
|
|
5203
5298
|
"requestBody": {
|
|
5204
5299
|
"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",
|
|
@@ -9663,7 +10004,7 @@
|
|
|
9663
10004
|
}
|
|
9664
10005
|
},
|
|
9665
10006
|
"post": {
|
|
9666
|
-
"description": "Create a new lineup marker",
|
|
10007
|
+
"description": "Create a new lineup marker. Returns the created marker.",
|
|
9667
10008
|
"operationId": "CreateLineupMarker",
|
|
9668
10009
|
"requestBody": {
|
|
9669
10010
|
"content": {
|
|
@@ -9678,7 +10019,14 @@
|
|
|
9678
10019
|
"parameters": [],
|
|
9679
10020
|
"responses": {
|
|
9680
10021
|
"201": {
|
|
9681
|
-
"description": "CreateLineupMarker 201 response"
|
|
10022
|
+
"description": "CreateLineupMarker 201 response",
|
|
10023
|
+
"content": {
|
|
10024
|
+
"application/json": {
|
|
10025
|
+
"schema": {
|
|
10026
|
+
"$ref": "#/components/schemas/CreateLineupMarkerResponseContent"
|
|
10027
|
+
}
|
|
10028
|
+
}
|
|
10029
|
+
}
|
|
9682
10030
|
},
|
|
9683
10031
|
"401": {
|
|
9684
10032
|
"description": "UnauthorizedError 401 response",
|
|
@@ -9822,7 +10170,7 @@
|
|
|
9822
10170
|
}
|
|
9823
10171
|
},
|
|
9824
10172
|
"put": {
|
|
9825
|
-
"description": "Update an existing lineup marker",
|
|
10173
|
+
"description": "Update an existing lineup marker. Returns the updated marker.",
|
|
9826
10174
|
"operationId": "UpdateLineupMarker",
|
|
9827
10175
|
"requestBody": {
|
|
9828
10176
|
"content": {
|
|
@@ -9846,7 +10194,14 @@
|
|
|
9846
10194
|
],
|
|
9847
10195
|
"responses": {
|
|
9848
10196
|
"200": {
|
|
9849
|
-
"description": "UpdateLineupMarker 200 response"
|
|
10197
|
+
"description": "UpdateLineupMarker 200 response",
|
|
10198
|
+
"content": {
|
|
10199
|
+
"application/json": {
|
|
10200
|
+
"schema": {
|
|
10201
|
+
"$ref": "#/components/schemas/UpdateLineupMarkerResponseContent"
|
|
10202
|
+
}
|
|
10203
|
+
}
|
|
10204
|
+
}
|
|
9850
10205
|
},
|
|
9851
10206
|
"401": {
|
|
9852
10207
|
"description": "UnauthorizedError 401 response",
|
|
@@ -11676,7 +12031,7 @@
|
|
|
11676
12031
|
},
|
|
11677
12032
|
"/my/readings.json": {
|
|
11678
12033
|
"get": {
|
|
11679
|
-
"description": "Get the current user's
|
|
12034
|
+
"description": "Get the current user's notifications (the \"Hey!\" menu in Basecamp 4).\nNotifications are grouped into unreads, reads, bubble-ups, and\nscheduled bubble-ups (`memories` remains as an always-empty\nplaceholder on BC5). Reads are paginated (50 per page). Unreads are\ncapped at 100. Bubble-ups are capped per `limit_bubble_ups`.",
|
|
11680
12035
|
"operationId": "GetMyNotifications",
|
|
11681
12036
|
"parameters": [
|
|
11682
12037
|
{
|
|
@@ -15113,7 +15468,7 @@
|
|
|
15113
15468
|
}
|
|
15114
15469
|
},
|
|
15115
15470
|
"put": {
|
|
15116
|
-
"description": "Update an existing question",
|
|
15471
|
+
"description": "Update an existing question's title, schedule or both. A schedule replaces the whole schedule, so send every part of it: one without frequency or time_of_day is refused, and one without start_date re-anchors the recurrence on today. Pausing and resuming are PauseQuestion and ResumeQuestion.",
|
|
15117
15472
|
"operationId": "UpdateQuestion",
|
|
15118
15473
|
"requestBody": {
|
|
15119
15474
|
"content": {
|
|
@@ -17097,7 +17452,7 @@
|
|
|
17097
17452
|
},
|
|
17098
17453
|
"/recordings/{recordingId}/events/{eventId}/boosts.json": {
|
|
17099
17454
|
"get": {
|
|
17100
|
-
"description": "List boosts on a specific event within a recording",
|
|
17455
|
+
"description": "List boosts on a specific event within a recording. Only boostable events carry boosts: those whose action is completed, adopted, column_changed or moved_in (their JSON includes boosts_count and boosts_url). Any other event answers 403 Forbidden; an event on a recording the person cannot see answers 404.",
|
|
17101
17456
|
"operationId": "ListEventBoosts",
|
|
17102
17457
|
"parameters": [
|
|
17103
17458
|
{
|
|
@@ -17200,7 +17555,7 @@
|
|
|
17200
17555
|
}
|
|
17201
17556
|
},
|
|
17202
17557
|
"post": {
|
|
17203
|
-
"description": "Create a boost on a specific event within a recording",
|
|
17558
|
+
"description": "Create a boost on a specific event within a recording. Only boostable events accept one: those whose action is completed, adopted, column_changed or moved_in (their JSON includes boosts_count and boosts_url). Any other event answers 403 Forbidden, as does an event on a recording whose comments are closed; an event on a recording the person cannot see answers 404.",
|
|
17204
17559
|
"operationId": "CreateEventBoost",
|
|
17205
17560
|
"requestBody": {
|
|
17206
17561
|
"content": {
|
|
@@ -27713,6 +28068,7 @@
|
|
|
27713
28068
|
"items": {
|
|
27714
28069
|
"$ref": "#/components/schemas/Wormhole"
|
|
27715
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.",
|
|
27716
28072
|
"x-go-type-skip-optional-pointer": true
|
|
27717
28073
|
}
|
|
27718
28074
|
},
|
|
@@ -28791,6 +29147,9 @@
|
|
|
28791
29147
|
"name"
|
|
28792
29148
|
]
|
|
28793
29149
|
},
|
|
29150
|
+
"CreateLineupMarkerResponseContent": {
|
|
29151
|
+
"$ref": "#/components/schemas/LineupMarker"
|
|
29152
|
+
},
|
|
28794
29153
|
"CreateMessageRequestContent": {
|
|
28795
29154
|
"type": "object",
|
|
28796
29155
|
"properties": {
|
|
@@ -28869,6 +29228,29 @@
|
|
|
28869
29228
|
"name"
|
|
28870
29229
|
]
|
|
28871
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
|
+
},
|
|
28872
29254
|
"CreateProjectFromTemplateRequestContent": {
|
|
28873
29255
|
"type": "object",
|
|
28874
29256
|
"properties": {
|
|
@@ -29796,10 +30178,12 @@
|
|
|
29796
30178
|
},
|
|
29797
30179
|
"boosts_count": {
|
|
29798
30180
|
"type": "integer",
|
|
30181
|
+
"description": "Present only on boostable events (action completed, adopted,\ncolumn_changed or moved_in); the event boost operations refuse any\nother event with 403.",
|
|
29799
30182
|
"format": "int32"
|
|
29800
30183
|
},
|
|
29801
30184
|
"boosts_url": {
|
|
29802
|
-
"type": "string"
|
|
30185
|
+
"type": "string",
|
|
30186
|
+
"description": "Present only on boostable events; see boosts_count."
|
|
29803
30187
|
}
|
|
29804
30188
|
},
|
|
29805
30189
|
"required": [
|
|
@@ -31125,6 +31509,9 @@
|
|
|
31125
31509
|
"GetPersonResponseContent": {
|
|
31126
31510
|
"$ref": "#/components/schemas/Person"
|
|
31127
31511
|
},
|
|
31512
|
+
"GetPingResponseContent": {
|
|
31513
|
+
"$ref": "#/components/schemas/Ping"
|
|
31514
|
+
},
|
|
31128
31515
|
"GetProgressReportResponseContent": {
|
|
31129
31516
|
"type": "array",
|
|
31130
31517
|
"items": {
|
|
@@ -31766,6 +32153,12 @@
|
|
|
31766
32153
|
"$ref": "#/components/schemas/Person"
|
|
31767
32154
|
}
|
|
31768
32155
|
},
|
|
32156
|
+
"ListPingsResponseContent": {
|
|
32157
|
+
"type": "array",
|
|
32158
|
+
"items": {
|
|
32159
|
+
"$ref": "#/components/schemas/Ping"
|
|
32160
|
+
}
|
|
32161
|
+
},
|
|
31769
32162
|
"ListProjectPeopleResponseContent": {
|
|
31770
32163
|
"type": "array",
|
|
31771
32164
|
"items": {
|
|
@@ -32112,14 +32505,17 @@
|
|
|
32112
32505
|
"properties": {
|
|
32113
32506
|
"source_id": {
|
|
32114
32507
|
"type": "integer",
|
|
32508
|
+
"description": "The column to move.",
|
|
32115
32509
|
"format": "int64"
|
|
32116
32510
|
},
|
|
32117
32511
|
"target_id": {
|
|
32118
32512
|
"type": "integer",
|
|
32513
|
+
"description": "The card table the column moves within: the same id as `cardTableId`.\nBasecamp refuses any other destination, a column included, with 422.",
|
|
32119
32514
|
"format": "int64"
|
|
32120
32515
|
},
|
|
32121
32516
|
"position": {
|
|
32122
32517
|
"type": "integer",
|
|
32518
|
+
"description": "1-based slot among the card table's columns, not counting Triage,\nNot Now or Done. 1 puts the column first; a slot past the last puts it\nlast. Default: 1.",
|
|
32123
32519
|
"format": "int32"
|
|
32124
32520
|
}
|
|
32125
32521
|
},
|
|
@@ -32133,6 +32529,7 @@
|
|
|
32133
32529
|
"properties": {
|
|
32134
32530
|
"column_id": {
|
|
32135
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.",
|
|
32136
32533
|
"format": "int64"
|
|
32137
32534
|
},
|
|
32138
32535
|
"position": {
|
|
@@ -32758,6 +33155,110 @@
|
|
|
32758
33155
|
"name"
|
|
32759
33156
|
]
|
|
32760
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
|
+
},
|
|
32761
33262
|
"PollEventsResponseContent": {
|
|
32762
33263
|
"type": "object",
|
|
32763
33264
|
"description": "The poll envelope. Every 200 carries `events` and `position`; `next` only\nwhile the walk continues.",
|
|
@@ -32934,6 +33435,10 @@
|
|
|
32934
33435
|
"clients_enabled": {
|
|
32935
33436
|
"type": "boolean"
|
|
32936
33437
|
},
|
|
33438
|
+
"timesheet_enabled": {
|
|
33439
|
+
"type": "boolean",
|
|
33440
|
+
"description": "True when the project's timesheet is turned on. The project timesheet\nreport (GET /projects/{projectId}/timesheet.json) answers 404 until it is."
|
|
33441
|
+
},
|
|
32937
33442
|
"bookmark_url": {
|
|
32938
33443
|
"type": "string"
|
|
32939
33444
|
},
|
|
@@ -36259,6 +36764,21 @@
|
|
|
36259
36764
|
"UpdateAccountNameResponseContent": {
|
|
36260
36765
|
"$ref": "#/components/schemas/Account"
|
|
36261
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
|
+
},
|
|
36262
36782
|
"UpdateCalendarRequestContent": {
|
|
36263
36783
|
"type": "object",
|
|
36264
36784
|
"properties": {
|
|
@@ -36513,6 +37033,9 @@
|
|
|
36513
37033
|
}
|
|
36514
37034
|
}
|
|
36515
37035
|
},
|
|
37036
|
+
"UpdateLineupMarkerResponseContent": {
|
|
37037
|
+
"$ref": "#/components/schemas/LineupMarker"
|
|
37038
|
+
},
|
|
36516
37039
|
"UpdateMessageRequestContent": {
|
|
36517
37040
|
"type": "object",
|
|
36518
37041
|
"properties": {
|
|
@@ -36722,13 +37245,11 @@
|
|
|
36722
37245
|
"type": "object",
|
|
36723
37246
|
"properties": {
|
|
36724
37247
|
"title": {
|
|
36725
|
-
"type": "string"
|
|
37248
|
+
"type": "string",
|
|
37249
|
+
"description": "The question text. An update carries a title, a schedule or both."
|
|
36726
37250
|
},
|
|
36727
37251
|
"schedule": {
|
|
36728
37252
|
"$ref": "#/components/schemas/QuestionScheduleInput"
|
|
36729
|
-
},
|
|
36730
|
-
"paused": {
|
|
36731
|
-
"type": "boolean"
|
|
36732
37253
|
}
|
|
36733
37254
|
}
|
|
36734
37255
|
},
|
|
@@ -37439,7 +37960,7 @@
|
|
|
37439
37960
|
},
|
|
37440
37961
|
"Wormhole": {
|
|
37441
37962
|
"type": "object",
|
|
37442
|
-
"description": "A wormhole
|
|
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.",
|
|
37443
37964
|
"properties": {
|
|
37444
37965
|
"id": {
|
|
37445
37966
|
"type": "integer",
|