@37signals/basecamp 0.15.0 → 0.17.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/dist/client.d.ts +5 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -2
- package/dist/client.js.map +1 -1
- package/dist/download.d.ts.map +1 -1
- package/dist/download.js +70 -19
- package/dist/download.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +88 -3
- package/dist/errors.js.map +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +156 -1
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +156 -1
- package/dist/generated/openapi-stripped.json +2055 -623
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +12 -0
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +12 -0
- package/dist/generated/schema.d.ts +1190 -36
- package/dist/generated/services/bubble-ups.d.ts +48 -0
- package/dist/generated/services/bubble-ups.d.ts.map +1 -0
- package/dist/generated/services/bubble-ups.js +67 -0
- package/dist/generated/services/bubble-ups.js.map +1 -0
- package/dist/generated/services/bubble-ups.ts +98 -0
- 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/people.d.ts +48 -0
- package/dist/generated/services/people.d.ts.map +1 -1
- package/dist/generated/services/people.js +81 -0
- package/dist/generated/services/people.js.map +1 -1
- package/dist/generated/services/people.ts +108 -0
- package/dist/generated/services/projects.d.ts +22 -0
- package/dist/generated/services/projects.d.ts.map +1 -1
- package/dist/generated/services/projects.js +42 -0
- package/dist/generated/services/projects.js.map +1 -1
- package/dist/generated/services/projects.ts +53 -0
- package/dist/generated/services/recordings.d.ts +24 -0
- package/dist/generated/services/recordings.d.ts.map +1 -1
- package/dist/generated/services/recordings.js +49 -0
- package/dist/generated/services/recordings.js.map +1 -1
- package/dist/generated/services/recordings.ts +59 -0
- package/dist/generated/services/templates.d.ts +46 -0
- package/dist/generated/services/templates.d.ts.map +1 -1
- package/dist/generated/services/templates.js +70 -0
- package/dist/generated/services/templates.js.map +1 -1
- package/dist/generated/services/templates.ts +98 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/oauth/device.d.ts.map +1 -1
- package/dist/oauth/device.js +9 -71
- package/dist/oauth/device.js.map +1 -1
- package/dist/oauth/exchange.d.ts.map +1 -1
- package/dist/oauth/exchange.js +55 -16
- package/dist/oauth/exchange.js.map +1 -1
- package/dist/oauth/limits.d.ts +33 -2
- package/dist/oauth/limits.d.ts.map +1 -1
- package/dist/oauth/limits.js +76 -2
- package/dist/oauth/limits.js.map +1 -1
- package/package.json +3 -3
- package/src/generated/metadata.ts +156 -1
- package/src/generated/openapi-stripped.json +2055 -623
- package/src/generated/path-mapping.ts +12 -0
- package/src/generated/schema.d.ts +1190 -36
- package/src/generated/services/bubble-ups.ts +98 -0
- package/src/generated/services/index.ts +1 -0
- package/src/generated/services/people.ts +108 -0
- package/src/generated/services/projects.ts +53 -0
- package/src/generated/services/recordings.ts +59 -0
- package/src/generated/services/templates.ts +98 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Basecamp",
|
|
5
|
-
"version": "2026-
|
|
5
|
+
"version": "2026-09-02",
|
|
6
6
|
"description": "Basecamp API",
|
|
7
7
|
"contact": {
|
|
8
8
|
"name": "Basecamp",
|
|
@@ -11204,6 +11204,77 @@
|
|
|
11204
11204
|
}
|
|
11205
11205
|
}
|
|
11206
11206
|
},
|
|
11207
|
+
"/my/recent_projects.json": {
|
|
11208
|
+
"get": {
|
|
11209
|
+
"description": "List the projects the current user has most recently visited, most recent visit first.\nReads the per-user visit log — capped at the 50 most recent visits, keeping\nonly active projects the user can still access — not the home grid's\npinned-exclusion and padding. This endpoint is not paginated. Each entry is\nthe standard project projection plus the current user's bookmarked flag. A\nvisit is recorded when the user opens a project in Basecamp, when they\ncreate one, and by RecordProjectVisit.",
|
|
11210
|
+
"operationId": "ListRecentProjects",
|
|
11211
|
+
"parameters": [],
|
|
11212
|
+
"responses": {
|
|
11213
|
+
"200": {
|
|
11214
|
+
"description": "ListRecentProjects 200 response",
|
|
11215
|
+
"content": {
|
|
11216
|
+
"application/json": {
|
|
11217
|
+
"schema": {
|
|
11218
|
+
"$ref": "#/components/schemas/ListRecentProjectsResponseContent"
|
|
11219
|
+
}
|
|
11220
|
+
}
|
|
11221
|
+
}
|
|
11222
|
+
},
|
|
11223
|
+
"401": {
|
|
11224
|
+
"description": "UnauthorizedError 401 response",
|
|
11225
|
+
"content": {
|
|
11226
|
+
"application/json": {
|
|
11227
|
+
"schema": {
|
|
11228
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
11229
|
+
}
|
|
11230
|
+
}
|
|
11231
|
+
}
|
|
11232
|
+
},
|
|
11233
|
+
"403": {
|
|
11234
|
+
"description": "ForbiddenError 403 response",
|
|
11235
|
+
"content": {
|
|
11236
|
+
"application/json": {
|
|
11237
|
+
"schema": {
|
|
11238
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
11239
|
+
}
|
|
11240
|
+
}
|
|
11241
|
+
}
|
|
11242
|
+
},
|
|
11243
|
+
"429": {
|
|
11244
|
+
"description": "RateLimitError 429 response",
|
|
11245
|
+
"content": {
|
|
11246
|
+
"application/json": {
|
|
11247
|
+
"schema": {
|
|
11248
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
11249
|
+
}
|
|
11250
|
+
}
|
|
11251
|
+
}
|
|
11252
|
+
},
|
|
11253
|
+
"500": {
|
|
11254
|
+
"description": "InternalServerError 500 response",
|
|
11255
|
+
"content": {
|
|
11256
|
+
"application/json": {
|
|
11257
|
+
"schema": {
|
|
11258
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
11259
|
+
}
|
|
11260
|
+
}
|
|
11261
|
+
}
|
|
11262
|
+
}
|
|
11263
|
+
},
|
|
11264
|
+
"tags": [
|
|
11265
|
+
"Projects"
|
|
11266
|
+
],
|
|
11267
|
+
"x-basecamp-retry": {
|
|
11268
|
+
"maxAttempts": 3,
|
|
11269
|
+
"baseDelayMs": 1000,
|
|
11270
|
+
"backoff": "exponential",
|
|
11271
|
+
"retryOn": [
|
|
11272
|
+
429,
|
|
11273
|
+
503
|
|
11274
|
+
]
|
|
11275
|
+
}
|
|
11276
|
+
}
|
|
11277
|
+
},
|
|
11207
11278
|
"/my/unreads.json": {
|
|
11208
11279
|
"put": {
|
|
11209
11280
|
"description": "Mark specified items as read",
|
|
@@ -12415,97 +12486,10 @@
|
|
|
12415
12486
|
}
|
|
12416
12487
|
}
|
|
12417
12488
|
},
|
|
12418
|
-
"/projects/{projectId}/
|
|
12419
|
-
"
|
|
12420
|
-
"description": "
|
|
12421
|
-
"operationId": "
|
|
12422
|
-
"requestBody": {
|
|
12423
|
-
"content": {
|
|
12424
|
-
"application/json": {
|
|
12425
|
-
"schema": {
|
|
12426
|
-
"$ref": "#/components/schemas/ToggleGaugeRequestContent"
|
|
12427
|
-
}
|
|
12428
|
-
}
|
|
12429
|
-
},
|
|
12430
|
-
"required": true
|
|
12431
|
-
},
|
|
12432
|
-
"parameters": [
|
|
12433
|
-
{
|
|
12434
|
-
"name": "projectId",
|
|
12435
|
-
"in": "path",
|
|
12436
|
-
"schema": {
|
|
12437
|
-
"type": "integer",
|
|
12438
|
-
"format": "int64"
|
|
12439
|
-
},
|
|
12440
|
-
"required": true
|
|
12441
|
-
}
|
|
12442
|
-
],
|
|
12443
|
-
"responses": {
|
|
12444
|
-
"200": {
|
|
12445
|
-
"description": "ToggleGauge 200 response"
|
|
12446
|
-
},
|
|
12447
|
-
"401": {
|
|
12448
|
-
"description": "UnauthorizedError 401 response",
|
|
12449
|
-
"content": {
|
|
12450
|
-
"application/json": {
|
|
12451
|
-
"schema": {
|
|
12452
|
-
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
12453
|
-
}
|
|
12454
|
-
}
|
|
12455
|
-
}
|
|
12456
|
-
},
|
|
12457
|
-
"403": {
|
|
12458
|
-
"description": "ForbiddenError 403 response",
|
|
12459
|
-
"content": {
|
|
12460
|
-
"application/json": {
|
|
12461
|
-
"schema": {
|
|
12462
|
-
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
12463
|
-
}
|
|
12464
|
-
}
|
|
12465
|
-
}
|
|
12466
|
-
},
|
|
12467
|
-
"429": {
|
|
12468
|
-
"description": "RateLimitError 429 response",
|
|
12469
|
-
"content": {
|
|
12470
|
-
"application/json": {
|
|
12471
|
-
"schema": {
|
|
12472
|
-
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
12473
|
-
}
|
|
12474
|
-
}
|
|
12475
|
-
}
|
|
12476
|
-
},
|
|
12477
|
-
"500": {
|
|
12478
|
-
"description": "InternalServerError 500 response",
|
|
12479
|
-
"content": {
|
|
12480
|
-
"application/json": {
|
|
12481
|
-
"schema": {
|
|
12482
|
-
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
12483
|
-
}
|
|
12484
|
-
}
|
|
12485
|
-
}
|
|
12486
|
-
}
|
|
12487
|
-
},
|
|
12488
|
-
"tags": [
|
|
12489
|
-
"Gauges"
|
|
12490
|
-
],
|
|
12491
|
-
"x-basecamp-idempotent": {
|
|
12492
|
-
"natural": true
|
|
12493
|
-
},
|
|
12494
|
-
"x-basecamp-retry": {
|
|
12495
|
-
"maxAttempts": 2,
|
|
12496
|
-
"baseDelayMs": 1000,
|
|
12497
|
-
"backoff": "exponential",
|
|
12498
|
-
"retryOn": [
|
|
12499
|
-
429,
|
|
12500
|
-
503
|
|
12501
|
-
]
|
|
12502
|
-
}
|
|
12503
|
-
}
|
|
12504
|
-
},
|
|
12505
|
-
"/projects/{projectId}/gauge/needles.json": {
|
|
12506
|
-
"get": {
|
|
12507
|
-
"description": "List gauge needles for a project, ordered newest first.",
|
|
12508
|
-
"operationId": "ListGaugeNeedles",
|
|
12489
|
+
"/projects/{projectId}/client_enablement.json": {
|
|
12490
|
+
"delete": {
|
|
12491
|
+
"description": "Disable clients on a project\n\n403 while the project still has any client users — revoke them first with\nUpdateProjectClientAccess. Naturally idempotent: disabling a project with\nclients already off re-answers `{\"clients_enabled\": false}`.",
|
|
12492
|
+
"operationId": "DisableProjectClients",
|
|
12509
12493
|
"parameters": [
|
|
12510
12494
|
{
|
|
12511
12495
|
"name": "projectId",
|
|
@@ -12515,25 +12499,15 @@
|
|
|
12515
12499
|
"format": "int64"
|
|
12516
12500
|
},
|
|
12517
12501
|
"required": true
|
|
12518
|
-
},
|
|
12519
|
-
{
|
|
12520
|
-
"name": "page",
|
|
12521
|
-
"in": "query",
|
|
12522
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12523
|
-
"schema": {
|
|
12524
|
-
"type": "integer",
|
|
12525
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12526
|
-
"format": "int32"
|
|
12527
|
-
}
|
|
12528
12502
|
}
|
|
12529
12503
|
],
|
|
12530
12504
|
"responses": {
|
|
12531
12505
|
"200": {
|
|
12532
|
-
"description": "
|
|
12506
|
+
"description": "DisableProjectClients 200 response",
|
|
12533
12507
|
"content": {
|
|
12534
12508
|
"application/json": {
|
|
12535
12509
|
"schema": {
|
|
12536
|
-
"$ref": "#/components/schemas/
|
|
12510
|
+
"$ref": "#/components/schemas/DisableProjectClientsResponseContent"
|
|
12537
12511
|
}
|
|
12538
12512
|
}
|
|
12539
12513
|
}
|
|
@@ -12590,12 +12564,10 @@
|
|
|
12590
12564
|
}
|
|
12591
12565
|
},
|
|
12592
12566
|
"tags": [
|
|
12593
|
-
"
|
|
12567
|
+
"People"
|
|
12594
12568
|
],
|
|
12595
|
-
"x-basecamp-
|
|
12596
|
-
"
|
|
12597
|
-
"totalCountHeader": "X-Total-Count",
|
|
12598
|
-
"maxPageSize": 50
|
|
12569
|
+
"x-basecamp-idempotent": {
|
|
12570
|
+
"natural": true
|
|
12599
12571
|
},
|
|
12600
12572
|
"x-basecamp-retry": {
|
|
12601
12573
|
"maxAttempts": 3,
|
|
@@ -12608,109 +12580,8 @@
|
|
|
12608
12580
|
}
|
|
12609
12581
|
},
|
|
12610
12582
|
"post": {
|
|
12611
|
-
"description": "
|
|
12612
|
-
"operationId": "
|
|
12613
|
-
"requestBody": {
|
|
12614
|
-
"content": {
|
|
12615
|
-
"application/json": {
|
|
12616
|
-
"schema": {
|
|
12617
|
-
"$ref": "#/components/schemas/CreateGaugeNeedleRequestContent"
|
|
12618
|
-
}
|
|
12619
|
-
}
|
|
12620
|
-
},
|
|
12621
|
-
"required": true
|
|
12622
|
-
},
|
|
12623
|
-
"parameters": [
|
|
12624
|
-
{
|
|
12625
|
-
"name": "projectId",
|
|
12626
|
-
"in": "path",
|
|
12627
|
-
"schema": {
|
|
12628
|
-
"type": "integer",
|
|
12629
|
-
"format": "int64"
|
|
12630
|
-
},
|
|
12631
|
-
"required": true
|
|
12632
|
-
}
|
|
12633
|
-
],
|
|
12634
|
-
"responses": {
|
|
12635
|
-
"201": {
|
|
12636
|
-
"description": "CreateGaugeNeedle 201 response",
|
|
12637
|
-
"content": {
|
|
12638
|
-
"application/json": {
|
|
12639
|
-
"schema": {
|
|
12640
|
-
"$ref": "#/components/schemas/CreateGaugeNeedleResponseContent"
|
|
12641
|
-
}
|
|
12642
|
-
}
|
|
12643
|
-
}
|
|
12644
|
-
},
|
|
12645
|
-
"401": {
|
|
12646
|
-
"description": "UnauthorizedError 401 response",
|
|
12647
|
-
"content": {
|
|
12648
|
-
"application/json": {
|
|
12649
|
-
"schema": {
|
|
12650
|
-
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
12651
|
-
}
|
|
12652
|
-
}
|
|
12653
|
-
}
|
|
12654
|
-
},
|
|
12655
|
-
"403": {
|
|
12656
|
-
"description": "ForbiddenError 403 response",
|
|
12657
|
-
"content": {
|
|
12658
|
-
"application/json": {
|
|
12659
|
-
"schema": {
|
|
12660
|
-
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
12661
|
-
}
|
|
12662
|
-
}
|
|
12663
|
-
}
|
|
12664
|
-
},
|
|
12665
|
-
"422": {
|
|
12666
|
-
"description": "ValidationError 422 response",
|
|
12667
|
-
"content": {
|
|
12668
|
-
"application/json": {
|
|
12669
|
-
"schema": {
|
|
12670
|
-
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
12671
|
-
}
|
|
12672
|
-
}
|
|
12673
|
-
}
|
|
12674
|
-
},
|
|
12675
|
-
"429": {
|
|
12676
|
-
"description": "RateLimitError 429 response",
|
|
12677
|
-
"content": {
|
|
12678
|
-
"application/json": {
|
|
12679
|
-
"schema": {
|
|
12680
|
-
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
12681
|
-
}
|
|
12682
|
-
}
|
|
12683
|
-
}
|
|
12684
|
-
},
|
|
12685
|
-
"500": {
|
|
12686
|
-
"description": "InternalServerError 500 response",
|
|
12687
|
-
"content": {
|
|
12688
|
-
"application/json": {
|
|
12689
|
-
"schema": {
|
|
12690
|
-
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
12691
|
-
}
|
|
12692
|
-
}
|
|
12693
|
-
}
|
|
12694
|
-
}
|
|
12695
|
-
},
|
|
12696
|
-
"tags": [
|
|
12697
|
-
"Gauges"
|
|
12698
|
-
],
|
|
12699
|
-
"x-basecamp-retry": {
|
|
12700
|
-
"maxAttempts": 2,
|
|
12701
|
-
"baseDelayMs": 1000,
|
|
12702
|
-
"backoff": "exponential",
|
|
12703
|
-
"retryOn": [
|
|
12704
|
-
429,
|
|
12705
|
-
503
|
|
12706
|
-
]
|
|
12707
|
-
}
|
|
12708
|
-
}
|
|
12709
|
-
},
|
|
12710
|
-
"/projects/{projectId}/people.json": {
|
|
12711
|
-
"get": {
|
|
12712
|
-
"description": "List all active people on a project\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages. X-Total-Count header provides total count.",
|
|
12713
|
-
"operationId": "ListProjectPeople",
|
|
12583
|
+
"description": "Enable clients on a project so client users can be added to it\n\nA deliberate step separate from adding clients: it turns on the project's\nclient-facing surface and applies the default client visibility (the\ntimeline and most docked tools become client-visible; the card table,\nCampfire, and Doors stay private). UpdateProjectClientAccess never enables\nclients implicitly — enable first, then add. 403 unless the project can have\nclients (the account supports clients and the project is a standard\nproject). Naturally idempotent: enabling an enabled project re-answers\n`{\"clients_enabled\": true}`.",
|
|
12584
|
+
"operationId": "EnableProjectClients",
|
|
12714
12585
|
"parameters": [
|
|
12715
12586
|
{
|
|
12716
12587
|
"name": "projectId",
|
|
@@ -12720,25 +12591,15 @@
|
|
|
12720
12591
|
"format": "int64"
|
|
12721
12592
|
},
|
|
12722
12593
|
"required": true
|
|
12723
|
-
},
|
|
12724
|
-
{
|
|
12725
|
-
"name": "page",
|
|
12726
|
-
"in": "query",
|
|
12727
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12728
|
-
"schema": {
|
|
12729
|
-
"type": "integer",
|
|
12730
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12731
|
-
"format": "int32"
|
|
12732
|
-
}
|
|
12733
12594
|
}
|
|
12734
12595
|
],
|
|
12735
12596
|
"responses": {
|
|
12736
12597
|
"200": {
|
|
12737
|
-
"description": "
|
|
12598
|
+
"description": "EnableProjectClients 200 response",
|
|
12738
12599
|
"content": {
|
|
12739
12600
|
"application/json": {
|
|
12740
12601
|
"schema": {
|
|
12741
|
-
"$ref": "#/components/schemas/
|
|
12602
|
+
"$ref": "#/components/schemas/EnableProjectClientsResponseContent"
|
|
12742
12603
|
}
|
|
12743
12604
|
}
|
|
12744
12605
|
}
|
|
@@ -12763,6 +12624,16 @@
|
|
|
12763
12624
|
}
|
|
12764
12625
|
}
|
|
12765
12626
|
},
|
|
12627
|
+
"404": {
|
|
12628
|
+
"description": "NotFoundError 404 response",
|
|
12629
|
+
"content": {
|
|
12630
|
+
"application/json": {
|
|
12631
|
+
"schema": {
|
|
12632
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
12633
|
+
}
|
|
12634
|
+
}
|
|
12635
|
+
}
|
|
12636
|
+
},
|
|
12766
12637
|
"429": {
|
|
12767
12638
|
"description": "RateLimitError 429 response",
|
|
12768
12639
|
"content": {
|
|
@@ -12787,6 +12658,197 @@
|
|
|
12787
12658
|
"tags": [
|
|
12788
12659
|
"People"
|
|
12789
12660
|
],
|
|
12661
|
+
"x-basecamp-idempotent": {
|
|
12662
|
+
"natural": true
|
|
12663
|
+
},
|
|
12664
|
+
"x-basecamp-retry": {
|
|
12665
|
+
"maxAttempts": 3,
|
|
12666
|
+
"baseDelayMs": 1000,
|
|
12667
|
+
"backoff": "exponential",
|
|
12668
|
+
"retryOn": [
|
|
12669
|
+
429,
|
|
12670
|
+
503
|
|
12671
|
+
]
|
|
12672
|
+
}
|
|
12673
|
+
}
|
|
12674
|
+
},
|
|
12675
|
+
"/projects/{projectId}/gauge.json": {
|
|
12676
|
+
"put": {
|
|
12677
|
+
"description": "Enable or disable the gauge for a project. Only project admins can toggle gauges.",
|
|
12678
|
+
"operationId": "ToggleGauge",
|
|
12679
|
+
"requestBody": {
|
|
12680
|
+
"content": {
|
|
12681
|
+
"application/json": {
|
|
12682
|
+
"schema": {
|
|
12683
|
+
"$ref": "#/components/schemas/ToggleGaugeRequestContent"
|
|
12684
|
+
}
|
|
12685
|
+
}
|
|
12686
|
+
},
|
|
12687
|
+
"required": true
|
|
12688
|
+
},
|
|
12689
|
+
"parameters": [
|
|
12690
|
+
{
|
|
12691
|
+
"name": "projectId",
|
|
12692
|
+
"in": "path",
|
|
12693
|
+
"schema": {
|
|
12694
|
+
"type": "integer",
|
|
12695
|
+
"format": "int64"
|
|
12696
|
+
},
|
|
12697
|
+
"required": true
|
|
12698
|
+
}
|
|
12699
|
+
],
|
|
12700
|
+
"responses": {
|
|
12701
|
+
"200": {
|
|
12702
|
+
"description": "ToggleGauge 200 response"
|
|
12703
|
+
},
|
|
12704
|
+
"401": {
|
|
12705
|
+
"description": "UnauthorizedError 401 response",
|
|
12706
|
+
"content": {
|
|
12707
|
+
"application/json": {
|
|
12708
|
+
"schema": {
|
|
12709
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
12710
|
+
}
|
|
12711
|
+
}
|
|
12712
|
+
}
|
|
12713
|
+
},
|
|
12714
|
+
"403": {
|
|
12715
|
+
"description": "ForbiddenError 403 response",
|
|
12716
|
+
"content": {
|
|
12717
|
+
"application/json": {
|
|
12718
|
+
"schema": {
|
|
12719
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
12720
|
+
}
|
|
12721
|
+
}
|
|
12722
|
+
}
|
|
12723
|
+
},
|
|
12724
|
+
"429": {
|
|
12725
|
+
"description": "RateLimitError 429 response",
|
|
12726
|
+
"content": {
|
|
12727
|
+
"application/json": {
|
|
12728
|
+
"schema": {
|
|
12729
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
12730
|
+
}
|
|
12731
|
+
}
|
|
12732
|
+
}
|
|
12733
|
+
},
|
|
12734
|
+
"500": {
|
|
12735
|
+
"description": "InternalServerError 500 response",
|
|
12736
|
+
"content": {
|
|
12737
|
+
"application/json": {
|
|
12738
|
+
"schema": {
|
|
12739
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
12740
|
+
}
|
|
12741
|
+
}
|
|
12742
|
+
}
|
|
12743
|
+
}
|
|
12744
|
+
},
|
|
12745
|
+
"tags": [
|
|
12746
|
+
"Gauges"
|
|
12747
|
+
],
|
|
12748
|
+
"x-basecamp-idempotent": {
|
|
12749
|
+
"natural": true
|
|
12750
|
+
},
|
|
12751
|
+
"x-basecamp-retry": {
|
|
12752
|
+
"maxAttempts": 2,
|
|
12753
|
+
"baseDelayMs": 1000,
|
|
12754
|
+
"backoff": "exponential",
|
|
12755
|
+
"retryOn": [
|
|
12756
|
+
429,
|
|
12757
|
+
503
|
|
12758
|
+
]
|
|
12759
|
+
}
|
|
12760
|
+
}
|
|
12761
|
+
},
|
|
12762
|
+
"/projects/{projectId}/gauge/needles.json": {
|
|
12763
|
+
"get": {
|
|
12764
|
+
"description": "List gauge needles for a project, ordered newest first.",
|
|
12765
|
+
"operationId": "ListGaugeNeedles",
|
|
12766
|
+
"parameters": [
|
|
12767
|
+
{
|
|
12768
|
+
"name": "projectId",
|
|
12769
|
+
"in": "path",
|
|
12770
|
+
"schema": {
|
|
12771
|
+
"type": "integer",
|
|
12772
|
+
"format": "int64"
|
|
12773
|
+
},
|
|
12774
|
+
"required": true
|
|
12775
|
+
},
|
|
12776
|
+
{
|
|
12777
|
+
"name": "page",
|
|
12778
|
+
"in": "query",
|
|
12779
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12780
|
+
"schema": {
|
|
12781
|
+
"type": "integer",
|
|
12782
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12783
|
+
"format": "int32"
|
|
12784
|
+
}
|
|
12785
|
+
}
|
|
12786
|
+
],
|
|
12787
|
+
"responses": {
|
|
12788
|
+
"200": {
|
|
12789
|
+
"description": "ListGaugeNeedles 200 response",
|
|
12790
|
+
"content": {
|
|
12791
|
+
"application/json": {
|
|
12792
|
+
"schema": {
|
|
12793
|
+
"$ref": "#/components/schemas/ListGaugeNeedlesResponseContent"
|
|
12794
|
+
}
|
|
12795
|
+
}
|
|
12796
|
+
}
|
|
12797
|
+
},
|
|
12798
|
+
"401": {
|
|
12799
|
+
"description": "UnauthorizedError 401 response",
|
|
12800
|
+
"content": {
|
|
12801
|
+
"application/json": {
|
|
12802
|
+
"schema": {
|
|
12803
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
12804
|
+
}
|
|
12805
|
+
}
|
|
12806
|
+
}
|
|
12807
|
+
},
|
|
12808
|
+
"403": {
|
|
12809
|
+
"description": "ForbiddenError 403 response",
|
|
12810
|
+
"content": {
|
|
12811
|
+
"application/json": {
|
|
12812
|
+
"schema": {
|
|
12813
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
12814
|
+
}
|
|
12815
|
+
}
|
|
12816
|
+
}
|
|
12817
|
+
},
|
|
12818
|
+
"404": {
|
|
12819
|
+
"description": "NotFoundError 404 response",
|
|
12820
|
+
"content": {
|
|
12821
|
+
"application/json": {
|
|
12822
|
+
"schema": {
|
|
12823
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
12824
|
+
}
|
|
12825
|
+
}
|
|
12826
|
+
}
|
|
12827
|
+
},
|
|
12828
|
+
"429": {
|
|
12829
|
+
"description": "RateLimitError 429 response",
|
|
12830
|
+
"content": {
|
|
12831
|
+
"application/json": {
|
|
12832
|
+
"schema": {
|
|
12833
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
12834
|
+
}
|
|
12835
|
+
}
|
|
12836
|
+
}
|
|
12837
|
+
},
|
|
12838
|
+
"500": {
|
|
12839
|
+
"description": "InternalServerError 500 response",
|
|
12840
|
+
"content": {
|
|
12841
|
+
"application/json": {
|
|
12842
|
+
"schema": {
|
|
12843
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
12844
|
+
}
|
|
12845
|
+
}
|
|
12846
|
+
}
|
|
12847
|
+
}
|
|
12848
|
+
},
|
|
12849
|
+
"tags": [
|
|
12850
|
+
"Gauges"
|
|
12851
|
+
],
|
|
12790
12852
|
"x-basecamp-pagination": {
|
|
12791
12853
|
"style": "link",
|
|
12792
12854
|
"totalCountHeader": "X-Total-Count",
|
|
@@ -12801,6 +12863,379 @@
|
|
|
12801
12863
|
503
|
|
12802
12864
|
]
|
|
12803
12865
|
}
|
|
12866
|
+
},
|
|
12867
|
+
"post": {
|
|
12868
|
+
"description": "Create a gauge needle (progress update) for a project",
|
|
12869
|
+
"operationId": "CreateGaugeNeedle",
|
|
12870
|
+
"requestBody": {
|
|
12871
|
+
"content": {
|
|
12872
|
+
"application/json": {
|
|
12873
|
+
"schema": {
|
|
12874
|
+
"$ref": "#/components/schemas/CreateGaugeNeedleRequestContent"
|
|
12875
|
+
}
|
|
12876
|
+
}
|
|
12877
|
+
},
|
|
12878
|
+
"required": true
|
|
12879
|
+
},
|
|
12880
|
+
"parameters": [
|
|
12881
|
+
{
|
|
12882
|
+
"name": "projectId",
|
|
12883
|
+
"in": "path",
|
|
12884
|
+
"schema": {
|
|
12885
|
+
"type": "integer",
|
|
12886
|
+
"format": "int64"
|
|
12887
|
+
},
|
|
12888
|
+
"required": true
|
|
12889
|
+
}
|
|
12890
|
+
],
|
|
12891
|
+
"responses": {
|
|
12892
|
+
"201": {
|
|
12893
|
+
"description": "CreateGaugeNeedle 201 response",
|
|
12894
|
+
"content": {
|
|
12895
|
+
"application/json": {
|
|
12896
|
+
"schema": {
|
|
12897
|
+
"$ref": "#/components/schemas/CreateGaugeNeedleResponseContent"
|
|
12898
|
+
}
|
|
12899
|
+
}
|
|
12900
|
+
}
|
|
12901
|
+
},
|
|
12902
|
+
"401": {
|
|
12903
|
+
"description": "UnauthorizedError 401 response",
|
|
12904
|
+
"content": {
|
|
12905
|
+
"application/json": {
|
|
12906
|
+
"schema": {
|
|
12907
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
12908
|
+
}
|
|
12909
|
+
}
|
|
12910
|
+
}
|
|
12911
|
+
},
|
|
12912
|
+
"403": {
|
|
12913
|
+
"description": "ForbiddenError 403 response",
|
|
12914
|
+
"content": {
|
|
12915
|
+
"application/json": {
|
|
12916
|
+
"schema": {
|
|
12917
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
12918
|
+
}
|
|
12919
|
+
}
|
|
12920
|
+
}
|
|
12921
|
+
},
|
|
12922
|
+
"422": {
|
|
12923
|
+
"description": "ValidationError 422 response",
|
|
12924
|
+
"content": {
|
|
12925
|
+
"application/json": {
|
|
12926
|
+
"schema": {
|
|
12927
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
12928
|
+
}
|
|
12929
|
+
}
|
|
12930
|
+
}
|
|
12931
|
+
},
|
|
12932
|
+
"429": {
|
|
12933
|
+
"description": "RateLimitError 429 response",
|
|
12934
|
+
"content": {
|
|
12935
|
+
"application/json": {
|
|
12936
|
+
"schema": {
|
|
12937
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
12938
|
+
}
|
|
12939
|
+
}
|
|
12940
|
+
}
|
|
12941
|
+
},
|
|
12942
|
+
"500": {
|
|
12943
|
+
"description": "InternalServerError 500 response",
|
|
12944
|
+
"content": {
|
|
12945
|
+
"application/json": {
|
|
12946
|
+
"schema": {
|
|
12947
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
12948
|
+
}
|
|
12949
|
+
}
|
|
12950
|
+
}
|
|
12951
|
+
}
|
|
12952
|
+
},
|
|
12953
|
+
"tags": [
|
|
12954
|
+
"Gauges"
|
|
12955
|
+
],
|
|
12956
|
+
"x-basecamp-retry": {
|
|
12957
|
+
"maxAttempts": 2,
|
|
12958
|
+
"baseDelayMs": 1000,
|
|
12959
|
+
"backoff": "exponential",
|
|
12960
|
+
"retryOn": [
|
|
12961
|
+
429,
|
|
12962
|
+
503
|
|
12963
|
+
]
|
|
12964
|
+
}
|
|
12965
|
+
}
|
|
12966
|
+
},
|
|
12967
|
+
"/projects/{projectId}/people.json": {
|
|
12968
|
+
"get": {
|
|
12969
|
+
"description": "List all active people on a project\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages. X-Total-Count header provides total count.",
|
|
12970
|
+
"operationId": "ListProjectPeople",
|
|
12971
|
+
"parameters": [
|
|
12972
|
+
{
|
|
12973
|
+
"name": "projectId",
|
|
12974
|
+
"in": "path",
|
|
12975
|
+
"schema": {
|
|
12976
|
+
"type": "integer",
|
|
12977
|
+
"format": "int64"
|
|
12978
|
+
},
|
|
12979
|
+
"required": true
|
|
12980
|
+
},
|
|
12981
|
+
{
|
|
12982
|
+
"name": "page",
|
|
12983
|
+
"in": "query",
|
|
12984
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12985
|
+
"schema": {
|
|
12986
|
+
"type": "integer",
|
|
12987
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
12988
|
+
"format": "int32"
|
|
12989
|
+
}
|
|
12990
|
+
}
|
|
12991
|
+
],
|
|
12992
|
+
"responses": {
|
|
12993
|
+
"200": {
|
|
12994
|
+
"description": "ListProjectPeople 200 response",
|
|
12995
|
+
"content": {
|
|
12996
|
+
"application/json": {
|
|
12997
|
+
"schema": {
|
|
12998
|
+
"$ref": "#/components/schemas/ListProjectPeopleResponseContent"
|
|
12999
|
+
}
|
|
13000
|
+
}
|
|
13001
|
+
}
|
|
13002
|
+
},
|
|
13003
|
+
"401": {
|
|
13004
|
+
"description": "UnauthorizedError 401 response",
|
|
13005
|
+
"content": {
|
|
13006
|
+
"application/json": {
|
|
13007
|
+
"schema": {
|
|
13008
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
13009
|
+
}
|
|
13010
|
+
}
|
|
13011
|
+
}
|
|
13012
|
+
},
|
|
13013
|
+
"403": {
|
|
13014
|
+
"description": "ForbiddenError 403 response",
|
|
13015
|
+
"content": {
|
|
13016
|
+
"application/json": {
|
|
13017
|
+
"schema": {
|
|
13018
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
13019
|
+
}
|
|
13020
|
+
}
|
|
13021
|
+
}
|
|
13022
|
+
},
|
|
13023
|
+
"429": {
|
|
13024
|
+
"description": "RateLimitError 429 response",
|
|
13025
|
+
"content": {
|
|
13026
|
+
"application/json": {
|
|
13027
|
+
"schema": {
|
|
13028
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
13029
|
+
}
|
|
13030
|
+
}
|
|
13031
|
+
}
|
|
13032
|
+
},
|
|
13033
|
+
"500": {
|
|
13034
|
+
"description": "InternalServerError 500 response",
|
|
13035
|
+
"content": {
|
|
13036
|
+
"application/json": {
|
|
13037
|
+
"schema": {
|
|
13038
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
13039
|
+
}
|
|
13040
|
+
}
|
|
13041
|
+
}
|
|
13042
|
+
}
|
|
13043
|
+
},
|
|
13044
|
+
"tags": [
|
|
13045
|
+
"People"
|
|
13046
|
+
],
|
|
13047
|
+
"x-basecamp-pagination": {
|
|
13048
|
+
"style": "link",
|
|
13049
|
+
"totalCountHeader": "X-Total-Count",
|
|
13050
|
+
"maxPageSize": 50
|
|
13051
|
+
},
|
|
13052
|
+
"x-basecamp-retry": {
|
|
13053
|
+
"maxAttempts": 3,
|
|
13054
|
+
"baseDelayMs": 1000,
|
|
13055
|
+
"backoff": "exponential",
|
|
13056
|
+
"retryOn": [
|
|
13057
|
+
429,
|
|
13058
|
+
503
|
|
13059
|
+
]
|
|
13060
|
+
}
|
|
13061
|
+
}
|
|
13062
|
+
},
|
|
13063
|
+
"/projects/{projectId}/people/client_users.json": {
|
|
13064
|
+
"put": {
|
|
13065
|
+
"description": "Update project client access (grant/revoke/create client users)\n\nThe client-side counterpart to UpdateProjectAccess: `grant` adds existing\nclient users by id, `revoke` removes client users, and `create` invites\nbrand-new clients by email (`name` optional, defaulting to the address).\nOnly client users are eligible — a `grant` id belonging to a team member is\nrejected (omitted from `granted`) rather than cross-graded, and `revoke` never removes a team\nmember. The response mirrors UpdateProjectAccess: `granted` and `revoked`\npeople, each with `client: true`.\n\nRequires clients to be enabled on the project (EnableProjectClients);\notherwise 403. Invitations are all-or-nothing: an invalid `create` row\n(including one with no email address) answers 422 with the rejected\naddresses and nobody is invited; new addresses that would exceed the\naccount's user limit answer 429 and nobody is invited. Addresses already on\nthe account take no seat and a repeated address counts once.\n\nThe seat-limit 429 is a verdict, not throttling: it carries no Retry-After\nand re-asking cannot change the answer, so this operation declares\n`retryOn: [503]` and a 429 surfaces on the first attempt (status-mapped to\n`rate_limit`, since the wire status is the only signal). Every other\noperation retries on 429.",
|
|
13066
|
+
"operationId": "UpdateProjectClientAccess",
|
|
13067
|
+
"requestBody": {
|
|
13068
|
+
"content": {
|
|
13069
|
+
"application/json": {
|
|
13070
|
+
"schema": {
|
|
13071
|
+
"$ref": "#/components/schemas/UpdateProjectClientAccessRequestContent"
|
|
13072
|
+
},
|
|
13073
|
+
"examples": {
|
|
13074
|
+
"UpdateProjectClientAccess_example1": {
|
|
13075
|
+
"summary": "Grant access to existing clients",
|
|
13076
|
+
"description": "Use grant array with client person IDs; team-member IDs are omitted from granted",
|
|
13077
|
+
"value": {
|
|
13078
|
+
"grant": [
|
|
13079
|
+
111
|
|
13080
|
+
]
|
|
13081
|
+
}
|
|
13082
|
+
},
|
|
13083
|
+
"UpdateProjectClientAccess_example2": {
|
|
13084
|
+
"summary": "Invite new clients by email",
|
|
13085
|
+
"description": "Use create array; name is optional and defaults to the address",
|
|
13086
|
+
"value": {
|
|
13087
|
+
"create": [
|
|
13088
|
+
{
|
|
13089
|
+
"email_address": "annie@example.com",
|
|
13090
|
+
"company_name": "Springfield Elementary"
|
|
13091
|
+
}
|
|
13092
|
+
]
|
|
13093
|
+
}
|
|
13094
|
+
}
|
|
13095
|
+
}
|
|
13096
|
+
}
|
|
13097
|
+
}
|
|
13098
|
+
},
|
|
13099
|
+
"parameters": [
|
|
13100
|
+
{
|
|
13101
|
+
"name": "projectId",
|
|
13102
|
+
"in": "path",
|
|
13103
|
+
"schema": {
|
|
13104
|
+
"type": "integer",
|
|
13105
|
+
"format": "int64"
|
|
13106
|
+
},
|
|
13107
|
+
"required": true,
|
|
13108
|
+
"examples": {
|
|
13109
|
+
"UpdateProjectClientAccess_example1": {
|
|
13110
|
+
"summary": "Grant access to existing clients",
|
|
13111
|
+
"description": "Use grant array with client person IDs; team-member IDs are omitted from granted",
|
|
13112
|
+
"value": 12345678
|
|
13113
|
+
},
|
|
13114
|
+
"UpdateProjectClientAccess_example2": {
|
|
13115
|
+
"summary": "Invite new clients by email",
|
|
13116
|
+
"description": "Use create array; name is optional and defaults to the address",
|
|
13117
|
+
"value": 12345678
|
|
13118
|
+
}
|
|
13119
|
+
}
|
|
13120
|
+
}
|
|
13121
|
+
],
|
|
13122
|
+
"responses": {
|
|
13123
|
+
"200": {
|
|
13124
|
+
"description": "UpdateProjectClientAccess 200 response",
|
|
13125
|
+
"content": {
|
|
13126
|
+
"application/json": {
|
|
13127
|
+
"schema": {
|
|
13128
|
+
"$ref": "#/components/schemas/UpdateProjectClientAccessResponseContent"
|
|
13129
|
+
},
|
|
13130
|
+
"examples": {
|
|
13131
|
+
"UpdateProjectClientAccess_example1": {
|
|
13132
|
+
"summary": "Grant access to existing clients",
|
|
13133
|
+
"description": "Use grant array with client person IDs; team-member IDs are omitted from granted",
|
|
13134
|
+
"value": {
|
|
13135
|
+
"granted": [
|
|
13136
|
+
{
|
|
13137
|
+
"id": 111,
|
|
13138
|
+
"name": "Annie Bryan",
|
|
13139
|
+
"client": true
|
|
13140
|
+
}
|
|
13141
|
+
],
|
|
13142
|
+
"revoked": []
|
|
13143
|
+
}
|
|
13144
|
+
},
|
|
13145
|
+
"UpdateProjectClientAccess_example2": {
|
|
13146
|
+
"summary": "Invite new clients by email",
|
|
13147
|
+
"description": "Use create array; name is optional and defaults to the address",
|
|
13148
|
+
"value": {
|
|
13149
|
+
"granted": [
|
|
13150
|
+
{
|
|
13151
|
+
"id": 444,
|
|
13152
|
+
"name": "annie@example.com",
|
|
13153
|
+
"email_address": "annie@example.com",
|
|
13154
|
+
"client": true
|
|
13155
|
+
}
|
|
13156
|
+
],
|
|
13157
|
+
"revoked": []
|
|
13158
|
+
}
|
|
13159
|
+
}
|
|
13160
|
+
}
|
|
13161
|
+
}
|
|
13162
|
+
}
|
|
13163
|
+
},
|
|
13164
|
+
"401": {
|
|
13165
|
+
"description": "UnauthorizedError 401 response",
|
|
13166
|
+
"content": {
|
|
13167
|
+
"application/json": {
|
|
13168
|
+
"schema": {
|
|
13169
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
13170
|
+
}
|
|
13171
|
+
}
|
|
13172
|
+
}
|
|
13173
|
+
},
|
|
13174
|
+
"403": {
|
|
13175
|
+
"description": "ForbiddenError 403 response",
|
|
13176
|
+
"content": {
|
|
13177
|
+
"application/json": {
|
|
13178
|
+
"schema": {
|
|
13179
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
13180
|
+
}
|
|
13181
|
+
}
|
|
13182
|
+
}
|
|
13183
|
+
},
|
|
13184
|
+
"404": {
|
|
13185
|
+
"description": "NotFoundError 404 response",
|
|
13186
|
+
"content": {
|
|
13187
|
+
"application/json": {
|
|
13188
|
+
"schema": {
|
|
13189
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
13190
|
+
}
|
|
13191
|
+
}
|
|
13192
|
+
}
|
|
13193
|
+
},
|
|
13194
|
+
"422": {
|
|
13195
|
+
"description": "ClientInvitationValidationError 422 response",
|
|
13196
|
+
"content": {
|
|
13197
|
+
"application/json": {
|
|
13198
|
+
"schema": {
|
|
13199
|
+
"$ref": "#/components/schemas/ClientInvitationValidationErrorResponseContent"
|
|
13200
|
+
}
|
|
13201
|
+
}
|
|
13202
|
+
}
|
|
13203
|
+
},
|
|
13204
|
+
"429": {
|
|
13205
|
+
"description": "RateLimitError 429 response",
|
|
13206
|
+
"content": {
|
|
13207
|
+
"application/json": {
|
|
13208
|
+
"schema": {
|
|
13209
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
13210
|
+
}
|
|
13211
|
+
}
|
|
13212
|
+
}
|
|
13213
|
+
},
|
|
13214
|
+
"500": {
|
|
13215
|
+
"description": "InternalServerError 500 response",
|
|
13216
|
+
"content": {
|
|
13217
|
+
"application/json": {
|
|
13218
|
+
"schema": {
|
|
13219
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
13220
|
+
}
|
|
13221
|
+
}
|
|
13222
|
+
}
|
|
13223
|
+
}
|
|
13224
|
+
},
|
|
13225
|
+
"tags": [
|
|
13226
|
+
"People"
|
|
13227
|
+
],
|
|
13228
|
+
"x-basecamp-idempotent": {
|
|
13229
|
+
"natural": true
|
|
13230
|
+
},
|
|
13231
|
+
"x-basecamp-retry": {
|
|
13232
|
+
"maxAttempts": 3,
|
|
13233
|
+
"baseDelayMs": 1000,
|
|
13234
|
+
"backoff": "exponential",
|
|
13235
|
+
"retryOn": [
|
|
13236
|
+
503
|
|
13237
|
+
]
|
|
13238
|
+
}
|
|
12804
13239
|
}
|
|
12805
13240
|
},
|
|
12806
13241
|
"/projects/{projectId}/people/users.json": {
|
|
@@ -13012,6 +13447,93 @@
|
|
|
13012
13447
|
}
|
|
13013
13448
|
}
|
|
13014
13449
|
},
|
|
13450
|
+
"/projects/{projectId}/recent_visit.json": {
|
|
13451
|
+
"post": {
|
|
13452
|
+
"description": "Record that the current user visited a project, moving it to the front of ListRecentProjects (returns 204 No Content).\nIdempotent: re-recording a visit refreshes the same entry. Visits to\narchived or trashed projects are accepted but not recorded, and an\ninaccessible project answers 404.",
|
|
13453
|
+
"operationId": "RecordProjectVisit",
|
|
13454
|
+
"parameters": [
|
|
13455
|
+
{
|
|
13456
|
+
"name": "projectId",
|
|
13457
|
+
"in": "path",
|
|
13458
|
+
"schema": {
|
|
13459
|
+
"type": "integer",
|
|
13460
|
+
"format": "int64"
|
|
13461
|
+
},
|
|
13462
|
+
"required": true
|
|
13463
|
+
}
|
|
13464
|
+
],
|
|
13465
|
+
"responses": {
|
|
13466
|
+
"204": {
|
|
13467
|
+
"description": "RecordProjectVisit 204 response"
|
|
13468
|
+
},
|
|
13469
|
+
"401": {
|
|
13470
|
+
"description": "UnauthorizedError 401 response",
|
|
13471
|
+
"content": {
|
|
13472
|
+
"application/json": {
|
|
13473
|
+
"schema": {
|
|
13474
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
13475
|
+
}
|
|
13476
|
+
}
|
|
13477
|
+
}
|
|
13478
|
+
},
|
|
13479
|
+
"403": {
|
|
13480
|
+
"description": "ForbiddenError 403 response",
|
|
13481
|
+
"content": {
|
|
13482
|
+
"application/json": {
|
|
13483
|
+
"schema": {
|
|
13484
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
13485
|
+
}
|
|
13486
|
+
}
|
|
13487
|
+
}
|
|
13488
|
+
},
|
|
13489
|
+
"404": {
|
|
13490
|
+
"description": "NotFoundError 404 response",
|
|
13491
|
+
"content": {
|
|
13492
|
+
"application/json": {
|
|
13493
|
+
"schema": {
|
|
13494
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
13495
|
+
}
|
|
13496
|
+
}
|
|
13497
|
+
}
|
|
13498
|
+
},
|
|
13499
|
+
"429": {
|
|
13500
|
+
"description": "RateLimitError 429 response",
|
|
13501
|
+
"content": {
|
|
13502
|
+
"application/json": {
|
|
13503
|
+
"schema": {
|
|
13504
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
13505
|
+
}
|
|
13506
|
+
}
|
|
13507
|
+
}
|
|
13508
|
+
},
|
|
13509
|
+
"500": {
|
|
13510
|
+
"description": "InternalServerError 500 response",
|
|
13511
|
+
"content": {
|
|
13512
|
+
"application/json": {
|
|
13513
|
+
"schema": {
|
|
13514
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
13515
|
+
}
|
|
13516
|
+
}
|
|
13517
|
+
}
|
|
13518
|
+
}
|
|
13519
|
+
},
|
|
13520
|
+
"tags": [
|
|
13521
|
+
"Projects"
|
|
13522
|
+
],
|
|
13523
|
+
"x-basecamp-idempotent": {
|
|
13524
|
+
"natural": true
|
|
13525
|
+
},
|
|
13526
|
+
"x-basecamp-retry": {
|
|
13527
|
+
"maxAttempts": 3,
|
|
13528
|
+
"baseDelayMs": 1000,
|
|
13529
|
+
"backoff": "exponential",
|
|
13530
|
+
"retryOn": [
|
|
13531
|
+
429,
|
|
13532
|
+
503
|
|
13533
|
+
]
|
|
13534
|
+
}
|
|
13535
|
+
}
|
|
13536
|
+
},
|
|
13015
13537
|
"/projects/{projectId}/status/active.json": {
|
|
13016
13538
|
"put": {
|
|
13017
13539
|
"description": "Restore a project to active status from trash as well as from the archive (returns 204 No Content).\nThis is the inverse of both ArchiveProject and TrashProject. Restoring counts against\nthe account's project limit, so it answers 507 when that limit is already reached.",
|
|
@@ -13839,7 +14361,285 @@
|
|
|
13839
14361
|
"Automation"
|
|
13840
14362
|
],
|
|
13841
14363
|
"x-basecamp-retry": {
|
|
13842
|
-
"maxAttempts": 2,
|
|
14364
|
+
"maxAttempts": 2,
|
|
14365
|
+
"baseDelayMs": 1000,
|
|
14366
|
+
"backoff": "exponential",
|
|
14367
|
+
"retryOn": [
|
|
14368
|
+
429,
|
|
14369
|
+
503
|
|
14370
|
+
]
|
|
14371
|
+
}
|
|
14372
|
+
}
|
|
14373
|
+
},
|
|
14374
|
+
"/questions/{questionId}": {
|
|
14375
|
+
"get": {
|
|
14376
|
+
"description": "Get a single question by id",
|
|
14377
|
+
"operationId": "GetQuestion",
|
|
14378
|
+
"parameters": [
|
|
14379
|
+
{
|
|
14380
|
+
"name": "questionId",
|
|
14381
|
+
"in": "path",
|
|
14382
|
+
"schema": {
|
|
14383
|
+
"type": "integer",
|
|
14384
|
+
"format": "int64"
|
|
14385
|
+
},
|
|
14386
|
+
"required": true
|
|
14387
|
+
}
|
|
14388
|
+
],
|
|
14389
|
+
"responses": {
|
|
14390
|
+
"200": {
|
|
14391
|
+
"description": "GetQuestion 200 response",
|
|
14392
|
+
"content": {
|
|
14393
|
+
"application/json": {
|
|
14394
|
+
"schema": {
|
|
14395
|
+
"$ref": "#/components/schemas/GetQuestionResponseContent"
|
|
14396
|
+
}
|
|
14397
|
+
}
|
|
14398
|
+
}
|
|
14399
|
+
},
|
|
14400
|
+
"401": {
|
|
14401
|
+
"description": "UnauthorizedError 401 response",
|
|
14402
|
+
"content": {
|
|
14403
|
+
"application/json": {
|
|
14404
|
+
"schema": {
|
|
14405
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
14406
|
+
}
|
|
14407
|
+
}
|
|
14408
|
+
}
|
|
14409
|
+
},
|
|
14410
|
+
"403": {
|
|
14411
|
+
"description": "ForbiddenError 403 response",
|
|
14412
|
+
"content": {
|
|
14413
|
+
"application/json": {
|
|
14414
|
+
"schema": {
|
|
14415
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
14416
|
+
}
|
|
14417
|
+
}
|
|
14418
|
+
}
|
|
14419
|
+
},
|
|
14420
|
+
"404": {
|
|
14421
|
+
"description": "NotFoundError 404 response",
|
|
14422
|
+
"content": {
|
|
14423
|
+
"application/json": {
|
|
14424
|
+
"schema": {
|
|
14425
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14426
|
+
}
|
|
14427
|
+
}
|
|
14428
|
+
}
|
|
14429
|
+
},
|
|
14430
|
+
"500": {
|
|
14431
|
+
"description": "InternalServerError 500 response",
|
|
14432
|
+
"content": {
|
|
14433
|
+
"application/json": {
|
|
14434
|
+
"schema": {
|
|
14435
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
14436
|
+
}
|
|
14437
|
+
}
|
|
14438
|
+
}
|
|
14439
|
+
}
|
|
14440
|
+
},
|
|
14441
|
+
"tags": [
|
|
14442
|
+
"Automation"
|
|
14443
|
+
],
|
|
14444
|
+
"x-basecamp-retry": {
|
|
14445
|
+
"maxAttempts": 3,
|
|
14446
|
+
"baseDelayMs": 1000,
|
|
14447
|
+
"backoff": "exponential",
|
|
14448
|
+
"retryOn": [
|
|
14449
|
+
429,
|
|
14450
|
+
503
|
|
14451
|
+
]
|
|
14452
|
+
}
|
|
14453
|
+
},
|
|
14454
|
+
"put": {
|
|
14455
|
+
"description": "Update an existing question",
|
|
14456
|
+
"operationId": "UpdateQuestion",
|
|
14457
|
+
"requestBody": {
|
|
14458
|
+
"content": {
|
|
14459
|
+
"application/json": {
|
|
14460
|
+
"schema": {
|
|
14461
|
+
"$ref": "#/components/schemas/UpdateQuestionRequestContent"
|
|
14462
|
+
}
|
|
14463
|
+
}
|
|
14464
|
+
}
|
|
14465
|
+
},
|
|
14466
|
+
"parameters": [
|
|
14467
|
+
{
|
|
14468
|
+
"name": "questionId",
|
|
14469
|
+
"in": "path",
|
|
14470
|
+
"schema": {
|
|
14471
|
+
"type": "integer",
|
|
14472
|
+
"format": "int64"
|
|
14473
|
+
},
|
|
14474
|
+
"required": true
|
|
14475
|
+
}
|
|
14476
|
+
],
|
|
14477
|
+
"responses": {
|
|
14478
|
+
"200": {
|
|
14479
|
+
"description": "UpdateQuestion 200 response",
|
|
14480
|
+
"content": {
|
|
14481
|
+
"application/json": {
|
|
14482
|
+
"schema": {
|
|
14483
|
+
"$ref": "#/components/schemas/UpdateQuestionResponseContent"
|
|
14484
|
+
}
|
|
14485
|
+
}
|
|
14486
|
+
}
|
|
14487
|
+
},
|
|
14488
|
+
"401": {
|
|
14489
|
+
"description": "UnauthorizedError 401 response",
|
|
14490
|
+
"content": {
|
|
14491
|
+
"application/json": {
|
|
14492
|
+
"schema": {
|
|
14493
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
14494
|
+
}
|
|
14495
|
+
}
|
|
14496
|
+
}
|
|
14497
|
+
},
|
|
14498
|
+
"403": {
|
|
14499
|
+
"description": "ForbiddenError 403 response",
|
|
14500
|
+
"content": {
|
|
14501
|
+
"application/json": {
|
|
14502
|
+
"schema": {
|
|
14503
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
14504
|
+
}
|
|
14505
|
+
}
|
|
14506
|
+
}
|
|
14507
|
+
},
|
|
14508
|
+
"404": {
|
|
14509
|
+
"description": "NotFoundError 404 response",
|
|
14510
|
+
"content": {
|
|
14511
|
+
"application/json": {
|
|
14512
|
+
"schema": {
|
|
14513
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14514
|
+
}
|
|
14515
|
+
}
|
|
14516
|
+
}
|
|
14517
|
+
},
|
|
14518
|
+
"422": {
|
|
14519
|
+
"description": "ValidationError 422 response",
|
|
14520
|
+
"content": {
|
|
14521
|
+
"application/json": {
|
|
14522
|
+
"schema": {
|
|
14523
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
14524
|
+
}
|
|
14525
|
+
}
|
|
14526
|
+
}
|
|
14527
|
+
},
|
|
14528
|
+
"500": {
|
|
14529
|
+
"description": "InternalServerError 500 response",
|
|
14530
|
+
"content": {
|
|
14531
|
+
"application/json": {
|
|
14532
|
+
"schema": {
|
|
14533
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
14534
|
+
}
|
|
14535
|
+
}
|
|
14536
|
+
}
|
|
14537
|
+
}
|
|
14538
|
+
},
|
|
14539
|
+
"tags": [
|
|
14540
|
+
"Automation"
|
|
14541
|
+
],
|
|
14542
|
+
"x-basecamp-idempotent": {
|
|
14543
|
+
"natural": true
|
|
14544
|
+
},
|
|
14545
|
+
"x-basecamp-retry": {
|
|
14546
|
+
"maxAttempts": 3,
|
|
14547
|
+
"baseDelayMs": 1000,
|
|
14548
|
+
"backoff": "exponential",
|
|
14549
|
+
"retryOn": [
|
|
14550
|
+
429,
|
|
14551
|
+
503
|
|
14552
|
+
]
|
|
14553
|
+
}
|
|
14554
|
+
}
|
|
14555
|
+
},
|
|
14556
|
+
"/questions/{questionId}/answers.json": {
|
|
14557
|
+
"get": {
|
|
14558
|
+
"description": "List all answers for a question\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages. X-Total-Count header provides total count.",
|
|
14559
|
+
"operationId": "ListAnswers",
|
|
14560
|
+
"parameters": [
|
|
14561
|
+
{
|
|
14562
|
+
"name": "questionId",
|
|
14563
|
+
"in": "path",
|
|
14564
|
+
"schema": {
|
|
14565
|
+
"type": "integer",
|
|
14566
|
+
"format": "int64"
|
|
14567
|
+
},
|
|
14568
|
+
"required": true
|
|
14569
|
+
},
|
|
14570
|
+
{
|
|
14571
|
+
"name": "page",
|
|
14572
|
+
"in": "query",
|
|
14573
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
14574
|
+
"schema": {
|
|
14575
|
+
"type": "integer",
|
|
14576
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
14577
|
+
"format": "int32"
|
|
14578
|
+
}
|
|
14579
|
+
}
|
|
14580
|
+
],
|
|
14581
|
+
"responses": {
|
|
14582
|
+
"200": {
|
|
14583
|
+
"description": "ListAnswers 200 response",
|
|
14584
|
+
"content": {
|
|
14585
|
+
"application/json": {
|
|
14586
|
+
"schema": {
|
|
14587
|
+
"$ref": "#/components/schemas/ListAnswersResponseContent"
|
|
14588
|
+
}
|
|
14589
|
+
}
|
|
14590
|
+
}
|
|
14591
|
+
},
|
|
14592
|
+
"401": {
|
|
14593
|
+
"description": "UnauthorizedError 401 response",
|
|
14594
|
+
"content": {
|
|
14595
|
+
"application/json": {
|
|
14596
|
+
"schema": {
|
|
14597
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
14598
|
+
}
|
|
14599
|
+
}
|
|
14600
|
+
}
|
|
14601
|
+
},
|
|
14602
|
+
"403": {
|
|
14603
|
+
"description": "ForbiddenError 403 response",
|
|
14604
|
+
"content": {
|
|
14605
|
+
"application/json": {
|
|
14606
|
+
"schema": {
|
|
14607
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
14608
|
+
}
|
|
14609
|
+
}
|
|
14610
|
+
}
|
|
14611
|
+
},
|
|
14612
|
+
"429": {
|
|
14613
|
+
"description": "RateLimitError 429 response",
|
|
14614
|
+
"content": {
|
|
14615
|
+
"application/json": {
|
|
14616
|
+
"schema": {
|
|
14617
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
14618
|
+
}
|
|
14619
|
+
}
|
|
14620
|
+
}
|
|
14621
|
+
},
|
|
14622
|
+
"500": {
|
|
14623
|
+
"description": "InternalServerError 500 response",
|
|
14624
|
+
"content": {
|
|
14625
|
+
"application/json": {
|
|
14626
|
+
"schema": {
|
|
14627
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
14628
|
+
}
|
|
14629
|
+
}
|
|
14630
|
+
}
|
|
14631
|
+
}
|
|
14632
|
+
},
|
|
14633
|
+
"tags": [
|
|
14634
|
+
"Automation"
|
|
14635
|
+
],
|
|
14636
|
+
"x-basecamp-pagination": {
|
|
14637
|
+
"style": "link",
|
|
14638
|
+
"totalCountHeader": "X-Total-Count",
|
|
14639
|
+
"maxPageSize": 50
|
|
14640
|
+
},
|
|
14641
|
+
"x-basecamp-retry": {
|
|
14642
|
+
"maxAttempts": 3,
|
|
13843
14643
|
"baseDelayMs": 1000,
|
|
13844
14644
|
"backoff": "exponential",
|
|
13845
14645
|
"retryOn": [
|
|
@@ -13847,12 +14647,20 @@
|
|
|
13847
14647
|
503
|
|
13848
14648
|
]
|
|
13849
14649
|
}
|
|
13850
|
-
}
|
|
13851
|
-
|
|
13852
|
-
|
|
13853
|
-
|
|
13854
|
-
"
|
|
13855
|
-
|
|
14650
|
+
},
|
|
14651
|
+
"post": {
|
|
14652
|
+
"description": "Create a new answer for a question",
|
|
14653
|
+
"operationId": "CreateAnswer",
|
|
14654
|
+
"requestBody": {
|
|
14655
|
+
"content": {
|
|
14656
|
+
"application/json": {
|
|
14657
|
+
"schema": {
|
|
14658
|
+
"$ref": "#/components/schemas/QuestionAnswerPayload"
|
|
14659
|
+
}
|
|
14660
|
+
}
|
|
14661
|
+
},
|
|
14662
|
+
"required": true
|
|
14663
|
+
},
|
|
13856
14664
|
"parameters": [
|
|
13857
14665
|
{
|
|
13858
14666
|
"name": "questionId",
|
|
@@ -13865,12 +14673,12 @@
|
|
|
13865
14673
|
}
|
|
13866
14674
|
],
|
|
13867
14675
|
"responses": {
|
|
13868
|
-
"
|
|
13869
|
-
"description": "
|
|
14676
|
+
"201": {
|
|
14677
|
+
"description": "CreateAnswer 201 response",
|
|
13870
14678
|
"content": {
|
|
13871
14679
|
"application/json": {
|
|
13872
14680
|
"schema": {
|
|
13873
|
-
"$ref": "#/components/schemas/
|
|
14681
|
+
"$ref": "#/components/schemas/CreateAnswerResponseContent"
|
|
13874
14682
|
}
|
|
13875
14683
|
}
|
|
13876
14684
|
}
|
|
@@ -13895,12 +14703,22 @@
|
|
|
13895
14703
|
}
|
|
13896
14704
|
}
|
|
13897
14705
|
},
|
|
13898
|
-
"
|
|
13899
|
-
"description": "
|
|
14706
|
+
"422": {
|
|
14707
|
+
"description": "ValidationError 422 response",
|
|
13900
14708
|
"content": {
|
|
13901
14709
|
"application/json": {
|
|
13902
14710
|
"schema": {
|
|
13903
|
-
"$ref": "#/components/schemas/
|
|
14711
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
14712
|
+
}
|
|
14713
|
+
}
|
|
14714
|
+
}
|
|
14715
|
+
},
|
|
14716
|
+
"429": {
|
|
14717
|
+
"description": "RateLimitError 429 response",
|
|
14718
|
+
"content": {
|
|
14719
|
+
"application/json": {
|
|
14720
|
+
"schema": {
|
|
14721
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
13904
14722
|
}
|
|
13905
14723
|
}
|
|
13906
14724
|
}
|
|
@@ -13920,7 +14738,7 @@
|
|
|
13920
14738
|
"Automation"
|
|
13921
14739
|
],
|
|
13922
14740
|
"x-basecamp-retry": {
|
|
13923
|
-
"maxAttempts":
|
|
14741
|
+
"maxAttempts": 2,
|
|
13924
14742
|
"baseDelayMs": 1000,
|
|
13925
14743
|
"backoff": "exponential",
|
|
13926
14744
|
"retryOn": [
|
|
@@ -13928,19 +14746,12 @@
|
|
|
13928
14746
|
503
|
|
13929
14747
|
]
|
|
13930
14748
|
}
|
|
13931
|
-
}
|
|
13932
|
-
|
|
13933
|
-
|
|
13934
|
-
|
|
13935
|
-
"
|
|
13936
|
-
|
|
13937
|
-
"application/json": {
|
|
13938
|
-
"schema": {
|
|
13939
|
-
"$ref": "#/components/schemas/UpdateQuestionRequestContent"
|
|
13940
|
-
}
|
|
13941
|
-
}
|
|
13942
|
-
}
|
|
13943
|
-
},
|
|
14749
|
+
}
|
|
14750
|
+
},
|
|
14751
|
+
"/questions/{questionId}/answers/by.json": {
|
|
14752
|
+
"get": {
|
|
14753
|
+
"description": "List all people who have answered a question (answerers)\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages.",
|
|
14754
|
+
"operationId": "ListQuestionAnswerers",
|
|
13944
14755
|
"parameters": [
|
|
13945
14756
|
{
|
|
13946
14757
|
"name": "questionId",
|
|
@@ -13954,11 +14765,11 @@
|
|
|
13954
14765
|
],
|
|
13955
14766
|
"responses": {
|
|
13956
14767
|
"200": {
|
|
13957
|
-
"description": "
|
|
14768
|
+
"description": "ListQuestionAnswerers 200 response",
|
|
13958
14769
|
"content": {
|
|
13959
14770
|
"application/json": {
|
|
13960
14771
|
"schema": {
|
|
13961
|
-
"$ref": "#/components/schemas/
|
|
14772
|
+
"$ref": "#/components/schemas/ListQuestionAnswerersResponseContent"
|
|
13962
14773
|
}
|
|
13963
14774
|
}
|
|
13964
14775
|
}
|
|
@@ -13993,12 +14804,12 @@
|
|
|
13993
14804
|
}
|
|
13994
14805
|
}
|
|
13995
14806
|
},
|
|
13996
|
-
"
|
|
13997
|
-
"description": "
|
|
14807
|
+
"429": {
|
|
14808
|
+
"description": "RateLimitError 429 response",
|
|
13998
14809
|
"content": {
|
|
13999
14810
|
"application/json": {
|
|
14000
14811
|
"schema": {
|
|
14001
|
-
"$ref": "#/components/schemas/
|
|
14812
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
14002
14813
|
}
|
|
14003
14814
|
}
|
|
14004
14815
|
}
|
|
@@ -14014,11 +14825,9 @@
|
|
|
14014
14825
|
}
|
|
14015
14826
|
}
|
|
14016
14827
|
},
|
|
14017
|
-
"
|
|
14018
|
-
"
|
|
14019
|
-
|
|
14020
|
-
"x-basecamp-idempotent": {
|
|
14021
|
-
"natural": true
|
|
14828
|
+
"x-basecamp-pagination": {
|
|
14829
|
+
"style": "link",
|
|
14830
|
+
"maxPageSize": 50
|
|
14022
14831
|
},
|
|
14023
14832
|
"x-basecamp-retry": {
|
|
14024
14833
|
"maxAttempts": 3,
|
|
@@ -14031,10 +14840,10 @@
|
|
|
14031
14840
|
}
|
|
14032
14841
|
}
|
|
14033
14842
|
},
|
|
14034
|
-
"/questions/{questionId}/answers
|
|
14843
|
+
"/questions/{questionId}/answers/by/{personId}": {
|
|
14035
14844
|
"get": {
|
|
14036
|
-
"description": "
|
|
14037
|
-
"operationId": "
|
|
14845
|
+
"description": "Get all answers from a specific person for a question\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages.",
|
|
14846
|
+
"operationId": "GetAnswersByPerson",
|
|
14038
14847
|
"parameters": [
|
|
14039
14848
|
{
|
|
14040
14849
|
"name": "questionId",
|
|
@@ -14045,6 +14854,15 @@
|
|
|
14045
14854
|
},
|
|
14046
14855
|
"required": true
|
|
14047
14856
|
},
|
|
14857
|
+
{
|
|
14858
|
+
"name": "personId",
|
|
14859
|
+
"in": "path",
|
|
14860
|
+
"schema": {
|
|
14861
|
+
"type": "integer",
|
|
14862
|
+
"format": "int64"
|
|
14863
|
+
},
|
|
14864
|
+
"required": true
|
|
14865
|
+
},
|
|
14048
14866
|
{
|
|
14049
14867
|
"name": "page",
|
|
14050
14868
|
"in": "query",
|
|
@@ -14058,11 +14876,11 @@
|
|
|
14058
14876
|
],
|
|
14059
14877
|
"responses": {
|
|
14060
14878
|
"200": {
|
|
14061
|
-
"description": "
|
|
14879
|
+
"description": "GetAnswersByPerson 200 response",
|
|
14062
14880
|
"content": {
|
|
14063
14881
|
"application/json": {
|
|
14064
14882
|
"schema": {
|
|
14065
|
-
"$ref": "#/components/schemas/
|
|
14883
|
+
"$ref": "#/components/schemas/GetAnswersByPersonResponseContent"
|
|
14066
14884
|
}
|
|
14067
14885
|
}
|
|
14068
14886
|
}
|
|
@@ -14087,6 +14905,16 @@
|
|
|
14087
14905
|
}
|
|
14088
14906
|
}
|
|
14089
14907
|
},
|
|
14908
|
+
"404": {
|
|
14909
|
+
"description": "NotFoundError 404 response",
|
|
14910
|
+
"content": {
|
|
14911
|
+
"application/json": {
|
|
14912
|
+
"schema": {
|
|
14913
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14914
|
+
}
|
|
14915
|
+
}
|
|
14916
|
+
}
|
|
14917
|
+
},
|
|
14090
14918
|
"429": {
|
|
14091
14919
|
"description": "RateLimitError 429 response",
|
|
14092
14920
|
"content": {
|
|
@@ -14108,12 +14936,8 @@
|
|
|
14108
14936
|
}
|
|
14109
14937
|
}
|
|
14110
14938
|
},
|
|
14111
|
-
"tags": [
|
|
14112
|
-
"Automation"
|
|
14113
|
-
],
|
|
14114
14939
|
"x-basecamp-pagination": {
|
|
14115
14940
|
"style": "link",
|
|
14116
|
-
"totalCountHeader": "X-Total-Count",
|
|
14117
14941
|
"maxPageSize": 50
|
|
14118
14942
|
},
|
|
14119
14943
|
"x-basecamp-retry": {
|
|
@@ -14125,19 +14949,20 @@
|
|
|
14125
14949
|
503
|
|
14126
14950
|
]
|
|
14127
14951
|
}
|
|
14128
|
-
}
|
|
14129
|
-
|
|
14130
|
-
|
|
14131
|
-
|
|
14952
|
+
}
|
|
14953
|
+
},
|
|
14954
|
+
"/questions/{questionId}/notification_settings.json": {
|
|
14955
|
+
"put": {
|
|
14956
|
+
"description": "Update notification settings for a check-in question",
|
|
14957
|
+
"operationId": "UpdateQuestionNotificationSettings",
|
|
14132
14958
|
"requestBody": {
|
|
14133
14959
|
"content": {
|
|
14134
14960
|
"application/json": {
|
|
14135
14961
|
"schema": {
|
|
14136
|
-
"$ref": "#/components/schemas/
|
|
14962
|
+
"$ref": "#/components/schemas/UpdateQuestionNotificationSettingsRequestContent"
|
|
14137
14963
|
}
|
|
14138
14964
|
}
|
|
14139
|
-
}
|
|
14140
|
-
"required": true
|
|
14965
|
+
}
|
|
14141
14966
|
},
|
|
14142
14967
|
"parameters": [
|
|
14143
14968
|
{
|
|
@@ -14151,12 +14976,12 @@
|
|
|
14151
14976
|
}
|
|
14152
14977
|
],
|
|
14153
14978
|
"responses": {
|
|
14154
|
-
"
|
|
14155
|
-
"description": "
|
|
14979
|
+
"200": {
|
|
14980
|
+
"description": "UpdateQuestionNotificationSettings 200 response",
|
|
14156
14981
|
"content": {
|
|
14157
14982
|
"application/json": {
|
|
14158
14983
|
"schema": {
|
|
14159
|
-
"$ref": "#/components/schemas/
|
|
14984
|
+
"$ref": "#/components/schemas/UpdateQuestionNotificationSettingsResponseContent"
|
|
14160
14985
|
}
|
|
14161
14986
|
}
|
|
14162
14987
|
}
|
|
@@ -14181,22 +15006,22 @@
|
|
|
14181
15006
|
}
|
|
14182
15007
|
}
|
|
14183
15008
|
},
|
|
14184
|
-
"
|
|
14185
|
-
"description": "
|
|
15009
|
+
"404": {
|
|
15010
|
+
"description": "NotFoundError 404 response",
|
|
14186
15011
|
"content": {
|
|
14187
15012
|
"application/json": {
|
|
14188
15013
|
"schema": {
|
|
14189
|
-
"$ref": "#/components/schemas/
|
|
15014
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14190
15015
|
}
|
|
14191
15016
|
}
|
|
14192
15017
|
}
|
|
14193
15018
|
},
|
|
14194
|
-
"
|
|
14195
|
-
"description": "
|
|
15019
|
+
"422": {
|
|
15020
|
+
"description": "ValidationError 422 response",
|
|
14196
15021
|
"content": {
|
|
14197
15022
|
"application/json": {
|
|
14198
15023
|
"schema": {
|
|
14199
|
-
"$ref": "#/components/schemas/
|
|
15024
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
14200
15025
|
}
|
|
14201
15026
|
}
|
|
14202
15027
|
}
|
|
@@ -14212,11 +15037,11 @@
|
|
|
14212
15037
|
}
|
|
14213
15038
|
}
|
|
14214
15039
|
},
|
|
14215
|
-
"
|
|
14216
|
-
"
|
|
14217
|
-
|
|
15040
|
+
"x-basecamp-idempotent": {
|
|
15041
|
+
"natural": true
|
|
15042
|
+
},
|
|
14218
15043
|
"x-basecamp-retry": {
|
|
14219
|
-
"maxAttempts":
|
|
15044
|
+
"maxAttempts": 3,
|
|
14220
15045
|
"baseDelayMs": 1000,
|
|
14221
15046
|
"backoff": "exponential",
|
|
14222
15047
|
"retryOn": [
|
|
@@ -14226,10 +15051,10 @@
|
|
|
14226
15051
|
}
|
|
14227
15052
|
}
|
|
14228
15053
|
},
|
|
14229
|
-
"/questions/{questionId}/
|
|
14230
|
-
"
|
|
14231
|
-
"description": "
|
|
14232
|
-
"operationId": "
|
|
15054
|
+
"/questions/{questionId}/pause.json": {
|
|
15055
|
+
"delete": {
|
|
15056
|
+
"description": "Resume a paused check-in question (resumes sending reminders)",
|
|
15057
|
+
"operationId": "ResumeQuestion",
|
|
14233
15058
|
"parameters": [
|
|
14234
15059
|
{
|
|
14235
15060
|
"name": "questionId",
|
|
@@ -14243,11 +15068,11 @@
|
|
|
14243
15068
|
],
|
|
14244
15069
|
"responses": {
|
|
14245
15070
|
"200": {
|
|
14246
|
-
"description": "
|
|
15071
|
+
"description": "ResumeQuestion 200 response",
|
|
14247
15072
|
"content": {
|
|
14248
15073
|
"application/json": {
|
|
14249
15074
|
"schema": {
|
|
14250
|
-
"$ref": "#/components/schemas/
|
|
15075
|
+
"$ref": "#/components/schemas/ResumeQuestionResponseContent"
|
|
14251
15076
|
}
|
|
14252
15077
|
}
|
|
14253
15078
|
}
|
|
@@ -14282,16 +15107,6 @@
|
|
|
14282
15107
|
}
|
|
14283
15108
|
}
|
|
14284
15109
|
},
|
|
14285
|
-
"429": {
|
|
14286
|
-
"description": "RateLimitError 429 response",
|
|
14287
|
-
"content": {
|
|
14288
|
-
"application/json": {
|
|
14289
|
-
"schema": {
|
|
14290
|
-
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
14291
|
-
}
|
|
14292
|
-
}
|
|
14293
|
-
}
|
|
14294
|
-
},
|
|
14295
15110
|
"500": {
|
|
14296
15111
|
"description": "InternalServerError 500 response",
|
|
14297
15112
|
"content": {
|
|
@@ -14303,9 +15118,8 @@
|
|
|
14303
15118
|
}
|
|
14304
15119
|
}
|
|
14305
15120
|
},
|
|
14306
|
-
"x-basecamp-
|
|
14307
|
-
"
|
|
14308
|
-
"maxPageSize": 50
|
|
15121
|
+
"x-basecamp-idempotent": {
|
|
15122
|
+
"natural": true
|
|
14309
15123
|
},
|
|
14310
15124
|
"x-basecamp-retry": {
|
|
14311
15125
|
"maxAttempts": 3,
|
|
@@ -14316,12 +15130,10 @@
|
|
|
14316
15130
|
503
|
|
14317
15131
|
]
|
|
14318
15132
|
}
|
|
14319
|
-
}
|
|
14320
|
-
|
|
14321
|
-
|
|
14322
|
-
|
|
14323
|
-
"description": "Get all answers from a specific person for a question\n\n**Pagination**: Uses Link header (RFC5988). Follow the `next` rel URL\nto fetch additional pages.",
|
|
14324
|
-
"operationId": "GetAnswersByPerson",
|
|
15133
|
+
},
|
|
15134
|
+
"post": {
|
|
15135
|
+
"description": "Pause a check-in question (stops sending reminders)",
|
|
15136
|
+
"operationId": "PauseQuestion",
|
|
14325
15137
|
"parameters": [
|
|
14326
15138
|
{
|
|
14327
15139
|
"name": "questionId",
|
|
@@ -14331,34 +15143,15 @@
|
|
|
14331
15143
|
"format": "int64"
|
|
14332
15144
|
},
|
|
14333
15145
|
"required": true
|
|
14334
|
-
},
|
|
14335
|
-
{
|
|
14336
|
-
"name": "personId",
|
|
14337
|
-
"in": "path",
|
|
14338
|
-
"schema": {
|
|
14339
|
-
"type": "integer",
|
|
14340
|
-
"format": "int64"
|
|
14341
|
-
},
|
|
14342
|
-
"required": true
|
|
14343
|
-
},
|
|
14344
|
-
{
|
|
14345
|
-
"name": "page",
|
|
14346
|
-
"in": "query",
|
|
14347
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
14348
|
-
"schema": {
|
|
14349
|
-
"type": "integer",
|
|
14350
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
14351
|
-
"format": "int32"
|
|
14352
|
-
}
|
|
14353
15146
|
}
|
|
14354
15147
|
],
|
|
14355
15148
|
"responses": {
|
|
14356
15149
|
"200": {
|
|
14357
|
-
"description": "
|
|
15150
|
+
"description": "PauseQuestion 200 response",
|
|
14358
15151
|
"content": {
|
|
14359
15152
|
"application/json": {
|
|
14360
15153
|
"schema": {
|
|
14361
|
-
"$ref": "#/components/schemas/
|
|
15154
|
+
"$ref": "#/components/schemas/PauseQuestionResponseContent"
|
|
14362
15155
|
}
|
|
14363
15156
|
}
|
|
14364
15157
|
}
|
|
@@ -14414,9 +15207,8 @@
|
|
|
14414
15207
|
}
|
|
14415
15208
|
}
|
|
14416
15209
|
},
|
|
14417
|
-
"x-basecamp-
|
|
14418
|
-
"
|
|
14419
|
-
"maxPageSize": 50
|
|
15210
|
+
"x-basecamp-idempotent": {
|
|
15211
|
+
"natural": true
|
|
14420
15212
|
},
|
|
14421
15213
|
"x-basecamp-retry": {
|
|
14422
15214
|
"maxAttempts": 3,
|
|
@@ -14429,22 +15221,13 @@
|
|
|
14429
15221
|
}
|
|
14430
15222
|
}
|
|
14431
15223
|
},
|
|
14432
|
-
"/
|
|
14433
|
-
"
|
|
14434
|
-
"description": "
|
|
14435
|
-
"operationId": "
|
|
14436
|
-
"requestBody": {
|
|
14437
|
-
"content": {
|
|
14438
|
-
"application/json": {
|
|
14439
|
-
"schema": {
|
|
14440
|
-
"$ref": "#/components/schemas/UpdateQuestionNotificationSettingsRequestContent"
|
|
14441
|
-
}
|
|
14442
|
-
}
|
|
14443
|
-
}
|
|
14444
|
-
},
|
|
15224
|
+
"/recordings/{messageId}/pin.json": {
|
|
15225
|
+
"delete": {
|
|
15226
|
+
"description": "Unpin a message from the message board",
|
|
15227
|
+
"operationId": "UnpinMessage",
|
|
14445
15228
|
"parameters": [
|
|
14446
15229
|
{
|
|
14447
|
-
"name": "
|
|
15230
|
+
"name": "messageId",
|
|
14448
15231
|
"in": "path",
|
|
14449
15232
|
"schema": {
|
|
14450
15233
|
"type": "integer",
|
|
@@ -14454,15 +15237,8 @@
|
|
|
14454
15237
|
}
|
|
14455
15238
|
],
|
|
14456
15239
|
"responses": {
|
|
14457
|
-
"
|
|
14458
|
-
"description": "
|
|
14459
|
-
"content": {
|
|
14460
|
-
"application/json": {
|
|
14461
|
-
"schema": {
|
|
14462
|
-
"$ref": "#/components/schemas/UpdateQuestionNotificationSettingsResponseContent"
|
|
14463
|
-
}
|
|
14464
|
-
}
|
|
14465
|
-
}
|
|
15240
|
+
"204": {
|
|
15241
|
+
"description": "UnpinMessage 204 response"
|
|
14466
15242
|
},
|
|
14467
15243
|
"401": {
|
|
14468
15244
|
"description": "UnauthorizedError 401 response",
|
|
@@ -14494,16 +15270,6 @@
|
|
|
14494
15270
|
}
|
|
14495
15271
|
}
|
|
14496
15272
|
},
|
|
14497
|
-
"422": {
|
|
14498
|
-
"description": "ValidationError 422 response",
|
|
14499
|
-
"content": {
|
|
14500
|
-
"application/json": {
|
|
14501
|
-
"schema": {
|
|
14502
|
-
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
14503
|
-
}
|
|
14504
|
-
}
|
|
14505
|
-
}
|
|
14506
|
-
},
|
|
14507
15273
|
"500": {
|
|
14508
15274
|
"description": "InternalServerError 500 response",
|
|
14509
15275
|
"content": {
|
|
@@ -14515,87 +15281,9 @@
|
|
|
14515
15281
|
}
|
|
14516
15282
|
}
|
|
14517
15283
|
},
|
|
14518
|
-
"
|
|
14519
|
-
"
|
|
14520
|
-
},
|
|
14521
|
-
"x-basecamp-retry": {
|
|
14522
|
-
"maxAttempts": 3,
|
|
14523
|
-
"baseDelayMs": 1000,
|
|
14524
|
-
"backoff": "exponential",
|
|
14525
|
-
"retryOn": [
|
|
14526
|
-
429,
|
|
14527
|
-
503
|
|
14528
|
-
]
|
|
14529
|
-
}
|
|
14530
|
-
}
|
|
14531
|
-
},
|
|
14532
|
-
"/questions/{questionId}/pause.json": {
|
|
14533
|
-
"delete": {
|
|
14534
|
-
"description": "Resume a paused check-in question (resumes sending reminders)",
|
|
14535
|
-
"operationId": "ResumeQuestion",
|
|
14536
|
-
"parameters": [
|
|
14537
|
-
{
|
|
14538
|
-
"name": "questionId",
|
|
14539
|
-
"in": "path",
|
|
14540
|
-
"schema": {
|
|
14541
|
-
"type": "integer",
|
|
14542
|
-
"format": "int64"
|
|
14543
|
-
},
|
|
14544
|
-
"required": true
|
|
14545
|
-
}
|
|
15284
|
+
"tags": [
|
|
15285
|
+
"Messages"
|
|
14546
15286
|
],
|
|
14547
|
-
"responses": {
|
|
14548
|
-
"200": {
|
|
14549
|
-
"description": "ResumeQuestion 200 response",
|
|
14550
|
-
"content": {
|
|
14551
|
-
"application/json": {
|
|
14552
|
-
"schema": {
|
|
14553
|
-
"$ref": "#/components/schemas/ResumeQuestionResponseContent"
|
|
14554
|
-
}
|
|
14555
|
-
}
|
|
14556
|
-
}
|
|
14557
|
-
},
|
|
14558
|
-
"401": {
|
|
14559
|
-
"description": "UnauthorizedError 401 response",
|
|
14560
|
-
"content": {
|
|
14561
|
-
"application/json": {
|
|
14562
|
-
"schema": {
|
|
14563
|
-
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
14564
|
-
}
|
|
14565
|
-
}
|
|
14566
|
-
}
|
|
14567
|
-
},
|
|
14568
|
-
"403": {
|
|
14569
|
-
"description": "ForbiddenError 403 response",
|
|
14570
|
-
"content": {
|
|
14571
|
-
"application/json": {
|
|
14572
|
-
"schema": {
|
|
14573
|
-
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
14574
|
-
}
|
|
14575
|
-
}
|
|
14576
|
-
}
|
|
14577
|
-
},
|
|
14578
|
-
"404": {
|
|
14579
|
-
"description": "NotFoundError 404 response",
|
|
14580
|
-
"content": {
|
|
14581
|
-
"application/json": {
|
|
14582
|
-
"schema": {
|
|
14583
|
-
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14584
|
-
}
|
|
14585
|
-
}
|
|
14586
|
-
}
|
|
14587
|
-
},
|
|
14588
|
-
"500": {
|
|
14589
|
-
"description": "InternalServerError 500 response",
|
|
14590
|
-
"content": {
|
|
14591
|
-
"application/json": {
|
|
14592
|
-
"schema": {
|
|
14593
|
-
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
14594
|
-
}
|
|
14595
|
-
}
|
|
14596
|
-
}
|
|
14597
|
-
}
|
|
14598
|
-
},
|
|
14599
15287
|
"x-basecamp-idempotent": {
|
|
14600
15288
|
"natural": true
|
|
14601
15289
|
},
|
|
@@ -14610,11 +15298,11 @@
|
|
|
14610
15298
|
}
|
|
14611
15299
|
},
|
|
14612
15300
|
"post": {
|
|
14613
|
-
"description": "
|
|
14614
|
-
"operationId": "
|
|
15301
|
+
"description": "Pin a message to the top of the message board",
|
|
15302
|
+
"operationId": "PinMessage",
|
|
14615
15303
|
"parameters": [
|
|
14616
15304
|
{
|
|
14617
|
-
"name": "
|
|
15305
|
+
"name": "messageId",
|
|
14618
15306
|
"in": "path",
|
|
14619
15307
|
"schema": {
|
|
14620
15308
|
"type": "integer",
|
|
@@ -14624,15 +15312,8 @@
|
|
|
14624
15312
|
}
|
|
14625
15313
|
],
|
|
14626
15314
|
"responses": {
|
|
14627
|
-
"
|
|
14628
|
-
"description": "
|
|
14629
|
-
"content": {
|
|
14630
|
-
"application/json": {
|
|
14631
|
-
"schema": {
|
|
14632
|
-
"$ref": "#/components/schemas/PauseQuestionResponseContent"
|
|
14633
|
-
}
|
|
14634
|
-
}
|
|
14635
|
-
}
|
|
15315
|
+
"204": {
|
|
15316
|
+
"description": "PinMessage 204 response"
|
|
14636
15317
|
},
|
|
14637
15318
|
"401": {
|
|
14638
15319
|
"description": "UnauthorizedError 401 response",
|
|
@@ -14654,12 +15335,12 @@
|
|
|
14654
15335
|
}
|
|
14655
15336
|
}
|
|
14656
15337
|
},
|
|
14657
|
-
"
|
|
14658
|
-
"description": "
|
|
15338
|
+
"422": {
|
|
15339
|
+
"description": "ValidationError 422 response",
|
|
14659
15340
|
"content": {
|
|
14660
15341
|
"application/json": {
|
|
14661
15342
|
"schema": {
|
|
14662
|
-
"$ref": "#/components/schemas/
|
|
15343
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
14663
15344
|
}
|
|
14664
15345
|
}
|
|
14665
15346
|
}
|
|
@@ -14685,11 +15366,11 @@
|
|
|
14685
15366
|
}
|
|
14686
15367
|
}
|
|
14687
15368
|
},
|
|
14688
|
-
"
|
|
14689
|
-
"
|
|
14690
|
-
|
|
15369
|
+
"tags": [
|
|
15370
|
+
"Messages"
|
|
15371
|
+
],
|
|
14691
15372
|
"x-basecamp-retry": {
|
|
14692
|
-
"maxAttempts":
|
|
15373
|
+
"maxAttempts": 2,
|
|
14693
15374
|
"baseDelayMs": 1000,
|
|
14694
15375
|
"backoff": "exponential",
|
|
14695
15376
|
"retryOn": [
|
|
@@ -14699,13 +15380,13 @@
|
|
|
14699
15380
|
}
|
|
14700
15381
|
}
|
|
14701
15382
|
},
|
|
14702
|
-
"/recordings/{
|
|
15383
|
+
"/recordings/{recordingId}/bookmark.json": {
|
|
14703
15384
|
"delete": {
|
|
14704
|
-
"description": "
|
|
14705
|
-
"operationId": "
|
|
15385
|
+
"description": "Remove the current user's bookmark from a recording (returns 204 No Content).\nIdempotent: deleting an absent bookmark also returns 204.",
|
|
15386
|
+
"operationId": "DeleteBookmark",
|
|
14706
15387
|
"parameters": [
|
|
14707
15388
|
{
|
|
14708
|
-
"name": "
|
|
15389
|
+
"name": "recordingId",
|
|
14709
15390
|
"in": "path",
|
|
14710
15391
|
"schema": {
|
|
14711
15392
|
"type": "integer",
|
|
@@ -14716,7 +15397,7 @@
|
|
|
14716
15397
|
],
|
|
14717
15398
|
"responses": {
|
|
14718
15399
|
"204": {
|
|
14719
|
-
"description": "
|
|
15400
|
+
"description": "DeleteBookmark 204 response"
|
|
14720
15401
|
},
|
|
14721
15402
|
"401": {
|
|
14722
15403
|
"description": "UnauthorizedError 401 response",
|
|
@@ -14748,6 +15429,16 @@
|
|
|
14748
15429
|
}
|
|
14749
15430
|
}
|
|
14750
15431
|
},
|
|
15432
|
+
"429": {
|
|
15433
|
+
"description": "RateLimitError 429 response",
|
|
15434
|
+
"content": {
|
|
15435
|
+
"application/json": {
|
|
15436
|
+
"schema": {
|
|
15437
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
15438
|
+
}
|
|
15439
|
+
}
|
|
15440
|
+
}
|
|
15441
|
+
},
|
|
14751
15442
|
"500": {
|
|
14752
15443
|
"description": "InternalServerError 500 response",
|
|
14753
15444
|
"content": {
|
|
@@ -14760,7 +15451,7 @@
|
|
|
14760
15451
|
}
|
|
14761
15452
|
},
|
|
14762
15453
|
"tags": [
|
|
14763
|
-
"
|
|
15454
|
+
"Bookmarks"
|
|
14764
15455
|
],
|
|
14765
15456
|
"x-basecamp-idempotent": {
|
|
14766
15457
|
"natural": true
|
|
@@ -14775,12 +15466,12 @@
|
|
|
14775
15466
|
]
|
|
14776
15467
|
}
|
|
14777
15468
|
},
|
|
14778
|
-
"
|
|
14779
|
-
"description": "
|
|
14780
|
-
"operationId": "
|
|
15469
|
+
"get": {
|
|
15470
|
+
"description": "Report whether the current user has bookmarked the recording.",
|
|
15471
|
+
"operationId": "GetBookmark",
|
|
14781
15472
|
"parameters": [
|
|
14782
15473
|
{
|
|
14783
|
-
"name": "
|
|
15474
|
+
"name": "recordingId",
|
|
14784
15475
|
"in": "path",
|
|
14785
15476
|
"schema": {
|
|
14786
15477
|
"type": "integer",
|
|
@@ -14790,8 +15481,15 @@
|
|
|
14790
15481
|
}
|
|
14791
15482
|
],
|
|
14792
15483
|
"responses": {
|
|
14793
|
-
"
|
|
14794
|
-
"description": "
|
|
15484
|
+
"200": {
|
|
15485
|
+
"description": "GetBookmark 200 response",
|
|
15486
|
+
"content": {
|
|
15487
|
+
"application/json": {
|
|
15488
|
+
"schema": {
|
|
15489
|
+
"$ref": "#/components/schemas/GetBookmarkResponseContent"
|
|
15490
|
+
}
|
|
15491
|
+
}
|
|
15492
|
+
}
|
|
14795
15493
|
},
|
|
14796
15494
|
"401": {
|
|
14797
15495
|
"description": "UnauthorizedError 401 response",
|
|
@@ -14813,12 +15511,12 @@
|
|
|
14813
15511
|
}
|
|
14814
15512
|
}
|
|
14815
15513
|
},
|
|
14816
|
-
"
|
|
14817
|
-
"description": "
|
|
15514
|
+
"404": {
|
|
15515
|
+
"description": "NotFoundError 404 response",
|
|
14818
15516
|
"content": {
|
|
14819
15517
|
"application/json": {
|
|
14820
15518
|
"schema": {
|
|
14821
|
-
"$ref": "#/components/schemas/
|
|
15519
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
14822
15520
|
}
|
|
14823
15521
|
}
|
|
14824
15522
|
}
|
|
@@ -14845,10 +15543,10 @@
|
|
|
14845
15543
|
}
|
|
14846
15544
|
},
|
|
14847
15545
|
"tags": [
|
|
14848
|
-
"
|
|
15546
|
+
"Bookmarks"
|
|
14849
15547
|
],
|
|
14850
15548
|
"x-basecamp-retry": {
|
|
14851
|
-
"maxAttempts":
|
|
15549
|
+
"maxAttempts": 3,
|
|
14852
15550
|
"baseDelayMs": 1000,
|
|
14853
15551
|
"backoff": "exponential",
|
|
14854
15552
|
"retryOn": [
|
|
@@ -14856,12 +15554,10 @@
|
|
|
14856
15554
|
503
|
|
14857
15555
|
]
|
|
14858
15556
|
}
|
|
14859
|
-
}
|
|
14860
|
-
|
|
14861
|
-
|
|
14862
|
-
|
|
14863
|
-
"description": "Remove the current user's bookmark from a recording (returns 204 No Content).\nIdempotent: deleting an absent bookmark also returns 204.",
|
|
14864
|
-
"operationId": "DeleteBookmark",
|
|
15557
|
+
},
|
|
15558
|
+
"post": {
|
|
15559
|
+
"description": "Bookmark a recording for the current user.\nIdempotent: re-bookmarking returns the existing bookmark, never a duplicate.",
|
|
15560
|
+
"operationId": "CreateBookmark",
|
|
14865
15561
|
"parameters": [
|
|
14866
15562
|
{
|
|
14867
15563
|
"name": "recordingId",
|
|
@@ -14874,8 +15570,15 @@
|
|
|
14874
15570
|
}
|
|
14875
15571
|
],
|
|
14876
15572
|
"responses": {
|
|
14877
|
-
"
|
|
14878
|
-
"description": "
|
|
15573
|
+
"201": {
|
|
15574
|
+
"description": "CreateBookmark 201 response",
|
|
15575
|
+
"content": {
|
|
15576
|
+
"application/json": {
|
|
15577
|
+
"schema": {
|
|
15578
|
+
"$ref": "#/components/schemas/CreateBookmarkResponseContent"
|
|
15579
|
+
}
|
|
15580
|
+
}
|
|
15581
|
+
}
|
|
14879
15582
|
},
|
|
14880
15583
|
"401": {
|
|
14881
15584
|
"description": "UnauthorizedError 401 response",
|
|
@@ -14943,10 +15646,12 @@
|
|
|
14943
15646
|
503
|
|
14944
15647
|
]
|
|
14945
15648
|
}
|
|
14946
|
-
}
|
|
15649
|
+
}
|
|
15650
|
+
},
|
|
15651
|
+
"/recordings/{recordingId}/boosts.json": {
|
|
14947
15652
|
"get": {
|
|
14948
|
-
"description": "
|
|
14949
|
-
"operationId": "
|
|
15653
|
+
"description": "List boosts on a recording",
|
|
15654
|
+
"operationId": "ListRecordingBoosts",
|
|
14950
15655
|
"parameters": [
|
|
14951
15656
|
{
|
|
14952
15657
|
"name": "recordingId",
|
|
@@ -14956,15 +15661,25 @@
|
|
|
14956
15661
|
"format": "int64"
|
|
14957
15662
|
},
|
|
14958
15663
|
"required": true
|
|
15664
|
+
},
|
|
15665
|
+
{
|
|
15666
|
+
"name": "page",
|
|
15667
|
+
"in": "query",
|
|
15668
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
15669
|
+
"schema": {
|
|
15670
|
+
"type": "integer",
|
|
15671
|
+
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
15672
|
+
"format": "int32"
|
|
15673
|
+
}
|
|
14959
15674
|
}
|
|
14960
15675
|
],
|
|
14961
15676
|
"responses": {
|
|
14962
15677
|
"200": {
|
|
14963
|
-
"description": "
|
|
15678
|
+
"description": "ListRecordingBoosts 200 response",
|
|
14964
15679
|
"content": {
|
|
14965
15680
|
"application/json": {
|
|
14966
15681
|
"schema": {
|
|
14967
|
-
"$ref": "#/components/schemas/
|
|
15682
|
+
"$ref": "#/components/schemas/ListRecordingBoostsResponseContent"
|
|
14968
15683
|
}
|
|
14969
15684
|
}
|
|
14970
15685
|
}
|
|
@@ -14999,16 +15714,6 @@
|
|
|
14999
15714
|
}
|
|
15000
15715
|
}
|
|
15001
15716
|
},
|
|
15002
|
-
"429": {
|
|
15003
|
-
"description": "RateLimitError 429 response",
|
|
15004
|
-
"content": {
|
|
15005
|
-
"application/json": {
|
|
15006
|
-
"schema": {
|
|
15007
|
-
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
15008
|
-
}
|
|
15009
|
-
}
|
|
15010
|
-
}
|
|
15011
|
-
},
|
|
15012
15717
|
"500": {
|
|
15013
15718
|
"description": "InternalServerError 500 response",
|
|
15014
15719
|
"content": {
|
|
@@ -15021,8 +15726,13 @@
|
|
|
15021
15726
|
}
|
|
15022
15727
|
},
|
|
15023
15728
|
"tags": [
|
|
15024
|
-
"
|
|
15729
|
+
"Boosts"
|
|
15025
15730
|
],
|
|
15731
|
+
"x-basecamp-pagination": {
|
|
15732
|
+
"style": "link",
|
|
15733
|
+
"totalCountHeader": "X-Total-Count",
|
|
15734
|
+
"maxPageSize": 50
|
|
15735
|
+
},
|
|
15026
15736
|
"x-basecamp-retry": {
|
|
15027
15737
|
"maxAttempts": 3,
|
|
15028
15738
|
"baseDelayMs": 1000,
|
|
@@ -15034,8 +15744,18 @@
|
|
|
15034
15744
|
}
|
|
15035
15745
|
},
|
|
15036
15746
|
"post": {
|
|
15037
|
-
"description": "
|
|
15038
|
-
"operationId": "
|
|
15747
|
+
"description": "Create a boost on a recording",
|
|
15748
|
+
"operationId": "CreateRecordingBoost",
|
|
15749
|
+
"requestBody": {
|
|
15750
|
+
"content": {
|
|
15751
|
+
"application/json": {
|
|
15752
|
+
"schema": {
|
|
15753
|
+
"$ref": "#/components/schemas/CreateRecordingBoostRequestContent"
|
|
15754
|
+
}
|
|
15755
|
+
}
|
|
15756
|
+
},
|
|
15757
|
+
"required": true
|
|
15758
|
+
},
|
|
15039
15759
|
"parameters": [
|
|
15040
15760
|
{
|
|
15041
15761
|
"name": "recordingId",
|
|
@@ -15049,11 +15769,11 @@
|
|
|
15049
15769
|
],
|
|
15050
15770
|
"responses": {
|
|
15051
15771
|
"201": {
|
|
15052
|
-
"description": "
|
|
15772
|
+
"description": "CreateRecordingBoost 201 response",
|
|
15053
15773
|
"content": {
|
|
15054
15774
|
"application/json": {
|
|
15055
15775
|
"schema": {
|
|
15056
|
-
"$ref": "#/components/schemas/
|
|
15776
|
+
"$ref": "#/components/schemas/CreateRecordingBoostResponseContent"
|
|
15057
15777
|
}
|
|
15058
15778
|
}
|
|
15059
15779
|
}
|
|
@@ -15078,12 +15798,12 @@
|
|
|
15078
15798
|
}
|
|
15079
15799
|
}
|
|
15080
15800
|
},
|
|
15081
|
-
"
|
|
15082
|
-
"description": "
|
|
15801
|
+
"422": {
|
|
15802
|
+
"description": "ValidationError 422 response",
|
|
15083
15803
|
"content": {
|
|
15084
15804
|
"application/json": {
|
|
15085
15805
|
"schema": {
|
|
15086
|
-
"$ref": "#/components/schemas/
|
|
15806
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
15087
15807
|
}
|
|
15088
15808
|
}
|
|
15089
15809
|
}
|
|
@@ -15110,13 +15830,10 @@
|
|
|
15110
15830
|
}
|
|
15111
15831
|
},
|
|
15112
15832
|
"tags": [
|
|
15113
|
-
"
|
|
15833
|
+
"Boosts"
|
|
15114
15834
|
],
|
|
15115
|
-
"x-basecamp-idempotent": {
|
|
15116
|
-
"natural": true
|
|
15117
|
-
},
|
|
15118
15835
|
"x-basecamp-retry": {
|
|
15119
|
-
"maxAttempts":
|
|
15836
|
+
"maxAttempts": 2,
|
|
15120
15837
|
"baseDelayMs": 1000,
|
|
15121
15838
|
"backoff": "exponential",
|
|
15122
15839
|
"retryOn": [
|
|
@@ -15126,10 +15843,10 @@
|
|
|
15126
15843
|
}
|
|
15127
15844
|
}
|
|
15128
15845
|
},
|
|
15129
|
-
"/recordings/{recordingId}/
|
|
15130
|
-
"
|
|
15131
|
-
"description": "
|
|
15132
|
-
"operationId": "
|
|
15846
|
+
"/recordings/{recordingId}/bubble_up.json": {
|
|
15847
|
+
"delete": {
|
|
15848
|
+
"description": "Remove the current user's bubble-up from a recording (returns 204 No Content).\nIdempotent: popping an absent bubble-up also returns 204.",
|
|
15849
|
+
"operationId": "DeleteBubbleUp",
|
|
15133
15850
|
"parameters": [
|
|
15134
15851
|
{
|
|
15135
15852
|
"name": "recordingId",
|
|
@@ -15139,28 +15856,11 @@
|
|
|
15139
15856
|
"format": "int64"
|
|
15140
15857
|
},
|
|
15141
15858
|
"required": true
|
|
15142
|
-
},
|
|
15143
|
-
{
|
|
15144
|
-
"name": "page",
|
|
15145
|
-
"in": "query",
|
|
15146
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
15147
|
-
"schema": {
|
|
15148
|
-
"type": "integer",
|
|
15149
|
-
"description": "Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.",
|
|
15150
|
-
"format": "int32"
|
|
15151
|
-
}
|
|
15152
15859
|
}
|
|
15153
15860
|
],
|
|
15154
15861
|
"responses": {
|
|
15155
|
-
"
|
|
15156
|
-
"description": "
|
|
15157
|
-
"content": {
|
|
15158
|
-
"application/json": {
|
|
15159
|
-
"schema": {
|
|
15160
|
-
"$ref": "#/components/schemas/ListRecordingBoostsResponseContent"
|
|
15161
|
-
}
|
|
15162
|
-
}
|
|
15163
|
-
}
|
|
15862
|
+
"204": {
|
|
15863
|
+
"description": "DeleteBubbleUp 204 response"
|
|
15164
15864
|
},
|
|
15165
15865
|
"401": {
|
|
15166
15866
|
"description": "UnauthorizedError 401 response",
|
|
@@ -15192,6 +15892,16 @@
|
|
|
15192
15892
|
}
|
|
15193
15893
|
}
|
|
15194
15894
|
},
|
|
15895
|
+
"429": {
|
|
15896
|
+
"description": "RateLimitError 429 response",
|
|
15897
|
+
"content": {
|
|
15898
|
+
"application/json": {
|
|
15899
|
+
"schema": {
|
|
15900
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
15901
|
+
}
|
|
15902
|
+
}
|
|
15903
|
+
}
|
|
15904
|
+
},
|
|
15195
15905
|
"500": {
|
|
15196
15906
|
"description": "InternalServerError 500 response",
|
|
15197
15907
|
"content": {
|
|
@@ -15204,12 +15914,10 @@
|
|
|
15204
15914
|
}
|
|
15205
15915
|
},
|
|
15206
15916
|
"tags": [
|
|
15207
|
-
"
|
|
15917
|
+
"BubbleUps"
|
|
15208
15918
|
],
|
|
15209
|
-
"x-basecamp-
|
|
15210
|
-
"
|
|
15211
|
-
"totalCountHeader": "X-Total-Count",
|
|
15212
|
-
"maxPageSize": 50
|
|
15919
|
+
"x-basecamp-idempotent": {
|
|
15920
|
+
"natural": true
|
|
15213
15921
|
},
|
|
15214
15922
|
"x-basecamp-retry": {
|
|
15215
15923
|
"maxAttempts": 3,
|
|
@@ -15222,17 +15930,16 @@
|
|
|
15222
15930
|
}
|
|
15223
15931
|
},
|
|
15224
15932
|
"post": {
|
|
15225
|
-
"description": "
|
|
15226
|
-
"operationId": "
|
|
15933
|
+
"description": "Bubble up a recording for the current user, resurfacing it in the current\nuser's readings (the BC5 successor to \"save\"). Returns 204 No Content with\nno body.\n\nThe `at` field controls timing. Send `\"now\"` to bubble up immediately, or a\nscheduling keyword (`\"today\"`, `\"tomorrow\"`, `\"weekend\"`, `\"next_week\"`) or\nan ISO8601 date (e.g. `\"2026-09-10\"`) to schedule it to resurface later.\nNOTE: bc3 currently requires `at` — omitting it raises on the server\n(`Date.iso8601(nil)`), so send `\"now\"` for the immediate case. The field is\nmodeled optional (not `@required`) so a future bc3 default (`params[:at] ||=\n\"now\"`) makes omission mean \"now\" without an SDK change.\n\nIdempotent: bubbling up an already-bubbled recording is set-membership and\nstill returns 204.",
|
|
15934
|
+
"operationId": "CreateBubbleUp",
|
|
15227
15935
|
"requestBody": {
|
|
15228
15936
|
"content": {
|
|
15229
15937
|
"application/json": {
|
|
15230
15938
|
"schema": {
|
|
15231
|
-
"$ref": "#/components/schemas/
|
|
15939
|
+
"$ref": "#/components/schemas/CreateBubbleUpRequestContent"
|
|
15232
15940
|
}
|
|
15233
15941
|
}
|
|
15234
|
-
}
|
|
15235
|
-
"required": true
|
|
15942
|
+
}
|
|
15236
15943
|
},
|
|
15237
15944
|
"parameters": [
|
|
15238
15945
|
{
|
|
@@ -15246,15 +15953,8 @@
|
|
|
15246
15953
|
}
|
|
15247
15954
|
],
|
|
15248
15955
|
"responses": {
|
|
15249
|
-
"
|
|
15250
|
-
"description": "
|
|
15251
|
-
"content": {
|
|
15252
|
-
"application/json": {
|
|
15253
|
-
"schema": {
|
|
15254
|
-
"$ref": "#/components/schemas/CreateRecordingBoostResponseContent"
|
|
15255
|
-
}
|
|
15256
|
-
}
|
|
15257
|
-
}
|
|
15956
|
+
"204": {
|
|
15957
|
+
"description": "CreateBubbleUp 204 response"
|
|
15258
15958
|
},
|
|
15259
15959
|
"401": {
|
|
15260
15960
|
"description": "UnauthorizedError 401 response",
|
|
@@ -15276,12 +15976,12 @@
|
|
|
15276
15976
|
}
|
|
15277
15977
|
}
|
|
15278
15978
|
},
|
|
15279
|
-
"
|
|
15280
|
-
"description": "
|
|
15979
|
+
"404": {
|
|
15980
|
+
"description": "NotFoundError 404 response",
|
|
15281
15981
|
"content": {
|
|
15282
15982
|
"application/json": {
|
|
15283
15983
|
"schema": {
|
|
15284
|
-
"$ref": "#/components/schemas/
|
|
15984
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
15285
15985
|
}
|
|
15286
15986
|
}
|
|
15287
15987
|
}
|
|
@@ -15308,10 +16008,13 @@
|
|
|
15308
16008
|
}
|
|
15309
16009
|
},
|
|
15310
16010
|
"tags": [
|
|
15311
|
-
"
|
|
16011
|
+
"BubbleUps"
|
|
15312
16012
|
],
|
|
16013
|
+
"x-basecamp-idempotent": {
|
|
16014
|
+
"natural": true
|
|
16015
|
+
},
|
|
15313
16016
|
"x-basecamp-retry": {
|
|
15314
|
-
"maxAttempts":
|
|
16017
|
+
"maxAttempts": 3,
|
|
15315
16018
|
"baseDelayMs": 1000,
|
|
15316
16019
|
"backoff": "exponential",
|
|
15317
16020
|
"retryOn": [
|
|
@@ -15929,6 +16632,195 @@
|
|
|
15929
16632
|
}
|
|
15930
16633
|
}
|
|
15931
16634
|
},
|
|
16635
|
+
"/recordings/{recordingId}/spotlight.json": {
|
|
16636
|
+
"delete": {
|
|
16637
|
+
"description": "Remove a recording from the spotlight area.\nIdempotent: removing an absent spotlight also returns 204.",
|
|
16638
|
+
"operationId": "UnspotlightRecording",
|
|
16639
|
+
"parameters": [
|
|
16640
|
+
{
|
|
16641
|
+
"name": "recordingId",
|
|
16642
|
+
"in": "path",
|
|
16643
|
+
"schema": {
|
|
16644
|
+
"type": "integer",
|
|
16645
|
+
"format": "int64"
|
|
16646
|
+
},
|
|
16647
|
+
"required": true
|
|
16648
|
+
}
|
|
16649
|
+
],
|
|
16650
|
+
"responses": {
|
|
16651
|
+
"204": {
|
|
16652
|
+
"description": "UnspotlightRecording 204 response"
|
|
16653
|
+
},
|
|
16654
|
+
"401": {
|
|
16655
|
+
"description": "UnauthorizedError 401 response",
|
|
16656
|
+
"content": {
|
|
16657
|
+
"application/json": {
|
|
16658
|
+
"schema": {
|
|
16659
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
16660
|
+
}
|
|
16661
|
+
}
|
|
16662
|
+
}
|
|
16663
|
+
},
|
|
16664
|
+
"403": {
|
|
16665
|
+
"description": "ForbiddenError 403 response",
|
|
16666
|
+
"content": {
|
|
16667
|
+
"application/json": {
|
|
16668
|
+
"schema": {
|
|
16669
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
16670
|
+
}
|
|
16671
|
+
}
|
|
16672
|
+
}
|
|
16673
|
+
},
|
|
16674
|
+
"404": {
|
|
16675
|
+
"description": "NotFoundError 404 response",
|
|
16676
|
+
"content": {
|
|
16677
|
+
"application/json": {
|
|
16678
|
+
"schema": {
|
|
16679
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
16680
|
+
}
|
|
16681
|
+
}
|
|
16682
|
+
}
|
|
16683
|
+
},
|
|
16684
|
+
"429": {
|
|
16685
|
+
"description": "RateLimitError 429 response",
|
|
16686
|
+
"content": {
|
|
16687
|
+
"application/json": {
|
|
16688
|
+
"schema": {
|
|
16689
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
16690
|
+
}
|
|
16691
|
+
}
|
|
16692
|
+
}
|
|
16693
|
+
},
|
|
16694
|
+
"500": {
|
|
16695
|
+
"description": "InternalServerError 500 response",
|
|
16696
|
+
"content": {
|
|
16697
|
+
"application/json": {
|
|
16698
|
+
"schema": {
|
|
16699
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
16700
|
+
}
|
|
16701
|
+
}
|
|
16702
|
+
}
|
|
16703
|
+
}
|
|
16704
|
+
},
|
|
16705
|
+
"tags": [
|
|
16706
|
+
"Automation"
|
|
16707
|
+
],
|
|
16708
|
+
"x-basecamp-idempotent": {
|
|
16709
|
+
"natural": true
|
|
16710
|
+
},
|
|
16711
|
+
"x-basecamp-retry": {
|
|
16712
|
+
"maxAttempts": 3,
|
|
16713
|
+
"baseDelayMs": 1000,
|
|
16714
|
+
"backoff": "exponential",
|
|
16715
|
+
"retryOn": [
|
|
16716
|
+
429,
|
|
16717
|
+
503
|
|
16718
|
+
]
|
|
16719
|
+
}
|
|
16720
|
+
},
|
|
16721
|
+
"post": {
|
|
16722
|
+
"description": "Put a recording's card in the spotlight area on its project or template home page.\nIdempotent: spotlighting an already-spotlighted recording still returns 201.",
|
|
16723
|
+
"operationId": "SpotlightRecording",
|
|
16724
|
+
"parameters": [
|
|
16725
|
+
{
|
|
16726
|
+
"name": "recordingId",
|
|
16727
|
+
"in": "path",
|
|
16728
|
+
"schema": {
|
|
16729
|
+
"type": "integer",
|
|
16730
|
+
"format": "int64"
|
|
16731
|
+
},
|
|
16732
|
+
"required": true
|
|
16733
|
+
}
|
|
16734
|
+
],
|
|
16735
|
+
"responses": {
|
|
16736
|
+
"201": {
|
|
16737
|
+
"description": "SpotlightRecording 201 response",
|
|
16738
|
+
"content": {
|
|
16739
|
+
"application/json": {
|
|
16740
|
+
"schema": {
|
|
16741
|
+
"$ref": "#/components/schemas/SpotlightRecordingResponseContent"
|
|
16742
|
+
}
|
|
16743
|
+
}
|
|
16744
|
+
}
|
|
16745
|
+
},
|
|
16746
|
+
"401": {
|
|
16747
|
+
"description": "UnauthorizedError 401 response",
|
|
16748
|
+
"content": {
|
|
16749
|
+
"application/json": {
|
|
16750
|
+
"schema": {
|
|
16751
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
16752
|
+
}
|
|
16753
|
+
}
|
|
16754
|
+
}
|
|
16755
|
+
},
|
|
16756
|
+
"403": {
|
|
16757
|
+
"description": "ForbiddenError 403 response",
|
|
16758
|
+
"content": {
|
|
16759
|
+
"application/json": {
|
|
16760
|
+
"schema": {
|
|
16761
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
16762
|
+
}
|
|
16763
|
+
}
|
|
16764
|
+
}
|
|
16765
|
+
},
|
|
16766
|
+
"404": {
|
|
16767
|
+
"description": "NotFoundError 404 response",
|
|
16768
|
+
"content": {
|
|
16769
|
+
"application/json": {
|
|
16770
|
+
"schema": {
|
|
16771
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
16772
|
+
}
|
|
16773
|
+
}
|
|
16774
|
+
}
|
|
16775
|
+
},
|
|
16776
|
+
"422": {
|
|
16777
|
+
"description": "ValidationError 422 response",
|
|
16778
|
+
"content": {
|
|
16779
|
+
"application/json": {
|
|
16780
|
+
"schema": {
|
|
16781
|
+
"$ref": "#/components/schemas/ValidationErrorResponseContent"
|
|
16782
|
+
}
|
|
16783
|
+
}
|
|
16784
|
+
}
|
|
16785
|
+
},
|
|
16786
|
+
"429": {
|
|
16787
|
+
"description": "RateLimitError 429 response",
|
|
16788
|
+
"content": {
|
|
16789
|
+
"application/json": {
|
|
16790
|
+
"schema": {
|
|
16791
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
16792
|
+
}
|
|
16793
|
+
}
|
|
16794
|
+
}
|
|
16795
|
+
},
|
|
16796
|
+
"500": {
|
|
16797
|
+
"description": "InternalServerError 500 response",
|
|
16798
|
+
"content": {
|
|
16799
|
+
"application/json": {
|
|
16800
|
+
"schema": {
|
|
16801
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
16802
|
+
}
|
|
16803
|
+
}
|
|
16804
|
+
}
|
|
16805
|
+
}
|
|
16806
|
+
},
|
|
16807
|
+
"tags": [
|
|
16808
|
+
"Automation"
|
|
16809
|
+
],
|
|
16810
|
+
"x-basecamp-idempotent": {
|
|
16811
|
+
"natural": true
|
|
16812
|
+
},
|
|
16813
|
+
"x-basecamp-retry": {
|
|
16814
|
+
"maxAttempts": 3,
|
|
16815
|
+
"baseDelayMs": 1000,
|
|
16816
|
+
"backoff": "exponential",
|
|
16817
|
+
"retryOn": [
|
|
16818
|
+
429,
|
|
16819
|
+
503
|
|
16820
|
+
]
|
|
16821
|
+
}
|
|
16822
|
+
}
|
|
16823
|
+
},
|
|
15932
16824
|
"/recordings/{recordingId}/status/active.json": {
|
|
15933
16825
|
"put": {
|
|
15934
16826
|
"description": "Unarchive a recording (restore to active status)",
|
|
@@ -18953,12 +19845,277 @@
|
|
|
18953
19845
|
}
|
|
18954
19846
|
}
|
|
18955
19847
|
},
|
|
18956
|
-
"404": {
|
|
18957
|
-
"description": "NotFoundError 404 response",
|
|
19848
|
+
"404": {
|
|
19849
|
+
"description": "NotFoundError 404 response",
|
|
19850
|
+
"content": {
|
|
19851
|
+
"application/json": {
|
|
19852
|
+
"schema": {
|
|
19853
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
19854
|
+
}
|
|
19855
|
+
}
|
|
19856
|
+
}
|
|
19857
|
+
},
|
|
19858
|
+
"500": {
|
|
19859
|
+
"description": "InternalServerError 500 response",
|
|
19860
|
+
"content": {
|
|
19861
|
+
"application/json": {
|
|
19862
|
+
"schema": {
|
|
19863
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
19864
|
+
}
|
|
19865
|
+
}
|
|
19866
|
+
}
|
|
19867
|
+
}
|
|
19868
|
+
},
|
|
19869
|
+
"tags": [
|
|
19870
|
+
"Folders"
|
|
19871
|
+
],
|
|
19872
|
+
"x-basecamp-idempotent": {
|
|
19873
|
+
"natural": true
|
|
19874
|
+
},
|
|
19875
|
+
"x-basecamp-retry": {
|
|
19876
|
+
"maxAttempts": 3,
|
|
19877
|
+
"baseDelayMs": 1000,
|
|
19878
|
+
"backoff": "exponential",
|
|
19879
|
+
"retryOn": [
|
|
19880
|
+
429,
|
|
19881
|
+
503
|
|
19882
|
+
]
|
|
19883
|
+
}
|
|
19884
|
+
},
|
|
19885
|
+
"get": {
|
|
19886
|
+
"description": "Get one folder, with the projects grouped inside it expanded under `projects`.",
|
|
19887
|
+
"operationId": "GetFolder",
|
|
19888
|
+
"parameters": [
|
|
19889
|
+
{
|
|
19890
|
+
"name": "folderId",
|
|
19891
|
+
"in": "path",
|
|
19892
|
+
"schema": {
|
|
19893
|
+
"type": "integer",
|
|
19894
|
+
"format": "int64"
|
|
19895
|
+
},
|
|
19896
|
+
"required": true
|
|
19897
|
+
}
|
|
19898
|
+
],
|
|
19899
|
+
"responses": {
|
|
19900
|
+
"200": {
|
|
19901
|
+
"description": "GetFolder 200 response",
|
|
19902
|
+
"content": {
|
|
19903
|
+
"application/json": {
|
|
19904
|
+
"schema": {
|
|
19905
|
+
"$ref": "#/components/schemas/GetFolderResponseContent"
|
|
19906
|
+
}
|
|
19907
|
+
}
|
|
19908
|
+
}
|
|
19909
|
+
},
|
|
19910
|
+
"401": {
|
|
19911
|
+
"description": "UnauthorizedError 401 response",
|
|
19912
|
+
"content": {
|
|
19913
|
+
"application/json": {
|
|
19914
|
+
"schema": {
|
|
19915
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
19916
|
+
}
|
|
19917
|
+
}
|
|
19918
|
+
}
|
|
19919
|
+
},
|
|
19920
|
+
"403": {
|
|
19921
|
+
"description": "ForbiddenError 403 response",
|
|
19922
|
+
"content": {
|
|
19923
|
+
"application/json": {
|
|
19924
|
+
"schema": {
|
|
19925
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
19926
|
+
}
|
|
19927
|
+
}
|
|
19928
|
+
}
|
|
19929
|
+
},
|
|
19930
|
+
"404": {
|
|
19931
|
+
"description": "NotFoundError 404 response",
|
|
19932
|
+
"content": {
|
|
19933
|
+
"application/json": {
|
|
19934
|
+
"schema": {
|
|
19935
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
19936
|
+
}
|
|
19937
|
+
}
|
|
19938
|
+
}
|
|
19939
|
+
},
|
|
19940
|
+
"429": {
|
|
19941
|
+
"description": "RateLimitError 429 response",
|
|
19942
|
+
"content": {
|
|
19943
|
+
"application/json": {
|
|
19944
|
+
"schema": {
|
|
19945
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
19946
|
+
}
|
|
19947
|
+
}
|
|
19948
|
+
}
|
|
19949
|
+
},
|
|
19950
|
+
"500": {
|
|
19951
|
+
"description": "InternalServerError 500 response",
|
|
19952
|
+
"content": {
|
|
19953
|
+
"application/json": {
|
|
19954
|
+
"schema": {
|
|
19955
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
19956
|
+
}
|
|
19957
|
+
}
|
|
19958
|
+
}
|
|
19959
|
+
}
|
|
19960
|
+
},
|
|
19961
|
+
"tags": [
|
|
19962
|
+
"Folders"
|
|
19963
|
+
],
|
|
19964
|
+
"x-basecamp-retry": {
|
|
19965
|
+
"maxAttempts": 3,
|
|
19966
|
+
"baseDelayMs": 1000,
|
|
19967
|
+
"backoff": "exponential",
|
|
19968
|
+
"retryOn": [
|
|
19969
|
+
429,
|
|
19970
|
+
503
|
|
19971
|
+
]
|
|
19972
|
+
}
|
|
19973
|
+
},
|
|
19974
|
+
"put": {
|
|
19975
|
+
"description": "Rename a folder.\n\n`name` is the only writable attribute; a folder's projects, ordering, and\nimage are managed elsewhere and an image parameter sent here is ignored.",
|
|
19976
|
+
"operationId": "UpdateFolder",
|
|
19977
|
+
"requestBody": {
|
|
19978
|
+
"content": {
|
|
19979
|
+
"application/json": {
|
|
19980
|
+
"schema": {
|
|
19981
|
+
"$ref": "#/components/schemas/UpdateFolderRequestContent"
|
|
19982
|
+
}
|
|
19983
|
+
}
|
|
19984
|
+
},
|
|
19985
|
+
"required": true
|
|
19986
|
+
},
|
|
19987
|
+
"parameters": [
|
|
19988
|
+
{
|
|
19989
|
+
"name": "folderId",
|
|
19990
|
+
"in": "path",
|
|
19991
|
+
"schema": {
|
|
19992
|
+
"type": "integer",
|
|
19993
|
+
"format": "int64"
|
|
19994
|
+
},
|
|
19995
|
+
"required": true
|
|
19996
|
+
}
|
|
19997
|
+
],
|
|
19998
|
+
"responses": {
|
|
19999
|
+
"200": {
|
|
20000
|
+
"description": "UpdateFolder 200 response",
|
|
20001
|
+
"content": {
|
|
20002
|
+
"application/json": {
|
|
20003
|
+
"schema": {
|
|
20004
|
+
"$ref": "#/components/schemas/UpdateFolderResponseContent"
|
|
20005
|
+
}
|
|
20006
|
+
}
|
|
20007
|
+
}
|
|
20008
|
+
},
|
|
20009
|
+
"401": {
|
|
20010
|
+
"description": "UnauthorizedError 401 response",
|
|
20011
|
+
"content": {
|
|
20012
|
+
"application/json": {
|
|
20013
|
+
"schema": {
|
|
20014
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
20015
|
+
}
|
|
20016
|
+
}
|
|
20017
|
+
}
|
|
20018
|
+
},
|
|
20019
|
+
"403": {
|
|
20020
|
+
"description": "ForbiddenError 403 response",
|
|
20021
|
+
"content": {
|
|
20022
|
+
"application/json": {
|
|
20023
|
+
"schema": {
|
|
20024
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
20025
|
+
}
|
|
20026
|
+
}
|
|
20027
|
+
}
|
|
20028
|
+
},
|
|
20029
|
+
"404": {
|
|
20030
|
+
"description": "NotFoundError 404 response",
|
|
20031
|
+
"content": {
|
|
20032
|
+
"application/json": {
|
|
20033
|
+
"schema": {
|
|
20034
|
+
"$ref": "#/components/schemas/NotFoundErrorResponseContent"
|
|
20035
|
+
}
|
|
20036
|
+
}
|
|
20037
|
+
}
|
|
20038
|
+
},
|
|
20039
|
+
"422": {
|
|
20040
|
+
"description": "FieldValidationError 422 response",
|
|
20041
|
+
"content": {
|
|
20042
|
+
"application/json": {
|
|
20043
|
+
"schema": {
|
|
20044
|
+
"$ref": "#/components/schemas/FieldValidationErrorResponseContent"
|
|
20045
|
+
}
|
|
20046
|
+
}
|
|
20047
|
+
}
|
|
20048
|
+
},
|
|
20049
|
+
"500": {
|
|
20050
|
+
"description": "InternalServerError 500 response",
|
|
20051
|
+
"content": {
|
|
20052
|
+
"application/json": {
|
|
20053
|
+
"schema": {
|
|
20054
|
+
"$ref": "#/components/schemas/InternalServerErrorResponseContent"
|
|
20055
|
+
}
|
|
20056
|
+
}
|
|
20057
|
+
}
|
|
20058
|
+
}
|
|
20059
|
+
},
|
|
20060
|
+
"tags": [
|
|
20061
|
+
"Folders"
|
|
20062
|
+
],
|
|
20063
|
+
"x-basecamp-idempotent": {
|
|
20064
|
+
"natural": true
|
|
20065
|
+
},
|
|
20066
|
+
"x-basecamp-retry": {
|
|
20067
|
+
"maxAttempts": 3,
|
|
20068
|
+
"baseDelayMs": 1000,
|
|
20069
|
+
"backoff": "exponential",
|
|
20070
|
+
"retryOn": [
|
|
20071
|
+
429,
|
|
20072
|
+
503
|
|
20073
|
+
]
|
|
20074
|
+
}
|
|
20075
|
+
}
|
|
20076
|
+
},
|
|
20077
|
+
"/template_library.json": {
|
|
20078
|
+
"get": {
|
|
20079
|
+
"description": "Get the account's to-do list template library",
|
|
20080
|
+
"operationId": "GetTemplateLibrary",
|
|
20081
|
+
"parameters": [],
|
|
20082
|
+
"responses": {
|
|
20083
|
+
"200": {
|
|
20084
|
+
"description": "GetTemplateLibrary 200 response",
|
|
20085
|
+
"content": {
|
|
20086
|
+
"application/json": {
|
|
20087
|
+
"schema": {
|
|
20088
|
+
"$ref": "#/components/schemas/GetTemplateLibraryResponseContent"
|
|
20089
|
+
}
|
|
20090
|
+
}
|
|
20091
|
+
}
|
|
20092
|
+
},
|
|
20093
|
+
"401": {
|
|
20094
|
+
"description": "UnauthorizedError 401 response",
|
|
20095
|
+
"content": {
|
|
20096
|
+
"application/json": {
|
|
20097
|
+
"schema": {
|
|
20098
|
+
"$ref": "#/components/schemas/UnauthorizedErrorResponseContent"
|
|
20099
|
+
}
|
|
20100
|
+
}
|
|
20101
|
+
}
|
|
20102
|
+
},
|
|
20103
|
+
"403": {
|
|
20104
|
+
"description": "ForbiddenError 403 response",
|
|
20105
|
+
"content": {
|
|
20106
|
+
"application/json": {
|
|
20107
|
+
"schema": {
|
|
20108
|
+
"$ref": "#/components/schemas/ForbiddenErrorResponseContent"
|
|
20109
|
+
}
|
|
20110
|
+
}
|
|
20111
|
+
}
|
|
20112
|
+
},
|
|
20113
|
+
"429": {
|
|
20114
|
+
"description": "RateLimitError 429 response",
|
|
18958
20115
|
"content": {
|
|
18959
20116
|
"application/json": {
|
|
18960
20117
|
"schema": {
|
|
18961
|
-
"$ref": "#/components/schemas/
|
|
20118
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
18962
20119
|
}
|
|
18963
20120
|
}
|
|
18964
20121
|
}
|
|
@@ -18975,11 +20132,8 @@
|
|
|
18975
20132
|
}
|
|
18976
20133
|
},
|
|
18977
20134
|
"tags": [
|
|
18978
|
-
"
|
|
20135
|
+
"Automation"
|
|
18979
20136
|
],
|
|
18980
|
-
"x-basecamp-idempotent": {
|
|
18981
|
-
"natural": true
|
|
18982
|
-
},
|
|
18983
20137
|
"x-basecamp-retry": {
|
|
18984
20138
|
"maxAttempts": 3,
|
|
18985
20139
|
"baseDelayMs": 1000,
|
|
@@ -18989,28 +20143,30 @@
|
|
|
18989
20143
|
503
|
|
18990
20144
|
]
|
|
18991
20145
|
}
|
|
18992
|
-
}
|
|
18993
|
-
|
|
18994
|
-
|
|
18995
|
-
|
|
18996
|
-
"
|
|
18997
|
-
|
|
18998
|
-
|
|
18999
|
-
|
|
19000
|
-
"
|
|
19001
|
-
"
|
|
19002
|
-
|
|
19003
|
-
|
|
19004
|
-
|
|
19005
|
-
}
|
|
19006
|
-
|
|
20146
|
+
}
|
|
20147
|
+
},
|
|
20148
|
+
"/template_library/copies.json": {
|
|
20149
|
+
"post": {
|
|
20150
|
+
"description": "Start copying a to-do list template into a project",
|
|
20151
|
+
"operationId": "CreateTemplateLibraryCopy",
|
|
20152
|
+
"requestBody": {
|
|
20153
|
+
"content": {
|
|
20154
|
+
"application/json": {
|
|
20155
|
+
"schema": {
|
|
20156
|
+
"$ref": "#/components/schemas/CreateTemplateLibraryCopyRequestContent"
|
|
20157
|
+
}
|
|
20158
|
+
}
|
|
20159
|
+
},
|
|
20160
|
+
"required": true
|
|
20161
|
+
},
|
|
20162
|
+
"parameters": [],
|
|
19007
20163
|
"responses": {
|
|
19008
|
-
"
|
|
19009
|
-
"description": "
|
|
20164
|
+
"201": {
|
|
20165
|
+
"description": "CreateTemplateLibraryCopy 201 response",
|
|
19010
20166
|
"content": {
|
|
19011
20167
|
"application/json": {
|
|
19012
20168
|
"schema": {
|
|
19013
|
-
"$ref": "#/components/schemas/
|
|
20169
|
+
"$ref": "#/components/schemas/CreateTemplateLibraryCopyResponseContent"
|
|
19014
20170
|
}
|
|
19015
20171
|
}
|
|
19016
20172
|
}
|
|
@@ -19045,6 +20201,16 @@
|
|
|
19045
20201
|
}
|
|
19046
20202
|
}
|
|
19047
20203
|
},
|
|
20204
|
+
"422": {
|
|
20205
|
+
"description": "PeopleConfirmationRequiredError 422 response",
|
|
20206
|
+
"content": {
|
|
20207
|
+
"application/json": {
|
|
20208
|
+
"schema": {
|
|
20209
|
+
"$ref": "#/components/schemas/PeopleConfirmationRequiredErrorResponseContent"
|
|
20210
|
+
}
|
|
20211
|
+
}
|
|
20212
|
+
}
|
|
20213
|
+
},
|
|
19048
20214
|
"429": {
|
|
19049
20215
|
"description": "RateLimitError 429 response",
|
|
19050
20216
|
"content": {
|
|
@@ -19067,10 +20233,10 @@
|
|
|
19067
20233
|
}
|
|
19068
20234
|
},
|
|
19069
20235
|
"tags": [
|
|
19070
|
-
"
|
|
20236
|
+
"Automation"
|
|
19071
20237
|
],
|
|
19072
20238
|
"x-basecamp-retry": {
|
|
19073
|
-
"maxAttempts":
|
|
20239
|
+
"maxAttempts": 2,
|
|
19074
20240
|
"baseDelayMs": 1000,
|
|
19075
20241
|
"backoff": "exponential",
|
|
19076
20242
|
"retryOn": [
|
|
@@ -19078,23 +20244,15 @@
|
|
|
19078
20244
|
503
|
|
19079
20245
|
]
|
|
19080
20246
|
}
|
|
19081
|
-
}
|
|
19082
|
-
|
|
19083
|
-
|
|
19084
|
-
|
|
19085
|
-
"
|
|
19086
|
-
|
|
19087
|
-
"application/json": {
|
|
19088
|
-
"schema": {
|
|
19089
|
-
"$ref": "#/components/schemas/UpdateFolderRequestContent"
|
|
19090
|
-
}
|
|
19091
|
-
}
|
|
19092
|
-
},
|
|
19093
|
-
"required": true
|
|
19094
|
-
},
|
|
20247
|
+
}
|
|
20248
|
+
},
|
|
20249
|
+
"/template_library/copies/{copyId}": {
|
|
20250
|
+
"get": {
|
|
20251
|
+
"description": "Get the current status of a to-do list template copy",
|
|
20252
|
+
"operationId": "GetTemplateLibraryCopy",
|
|
19095
20253
|
"parameters": [
|
|
19096
20254
|
{
|
|
19097
|
-
"name": "
|
|
20255
|
+
"name": "copyId",
|
|
19098
20256
|
"in": "path",
|
|
19099
20257
|
"schema": {
|
|
19100
20258
|
"type": "integer",
|
|
@@ -19105,11 +20263,11 @@
|
|
|
19105
20263
|
],
|
|
19106
20264
|
"responses": {
|
|
19107
20265
|
"200": {
|
|
19108
|
-
"description": "
|
|
20266
|
+
"description": "GetTemplateLibraryCopy 200 response",
|
|
19109
20267
|
"content": {
|
|
19110
20268
|
"application/json": {
|
|
19111
20269
|
"schema": {
|
|
19112
|
-
"$ref": "#/components/schemas/
|
|
20270
|
+
"$ref": "#/components/schemas/GetTemplateLibraryCopyResponseContent"
|
|
19113
20271
|
}
|
|
19114
20272
|
}
|
|
19115
20273
|
}
|
|
@@ -19144,12 +20302,12 @@
|
|
|
19144
20302
|
}
|
|
19145
20303
|
}
|
|
19146
20304
|
},
|
|
19147
|
-
"
|
|
19148
|
-
"description": "
|
|
20305
|
+
"429": {
|
|
20306
|
+
"description": "RateLimitError 429 response",
|
|
19149
20307
|
"content": {
|
|
19150
20308
|
"application/json": {
|
|
19151
20309
|
"schema": {
|
|
19152
|
-
"$ref": "#/components/schemas/
|
|
20310
|
+
"$ref": "#/components/schemas/RateLimitErrorResponseContent"
|
|
19153
20311
|
}
|
|
19154
20312
|
}
|
|
19155
20313
|
}
|
|
@@ -19166,11 +20324,8 @@
|
|
|
19166
20324
|
}
|
|
19167
20325
|
},
|
|
19168
20326
|
"tags": [
|
|
19169
|
-
"
|
|
20327
|
+
"Automation"
|
|
19170
20328
|
],
|
|
19171
|
-
"x-basecamp-idempotent": {
|
|
19172
|
-
"natural": true
|
|
19173
|
-
},
|
|
19174
20329
|
"x-basecamp-retry": {
|
|
19175
20330
|
"maxAttempts": 3,
|
|
19176
20331
|
"baseDelayMs": 1000,
|
|
@@ -25209,6 +26364,47 @@
|
|
|
25209
26364
|
"visible_to_clients"
|
|
25210
26365
|
]
|
|
25211
26366
|
},
|
|
26367
|
+
"ClientInvitationError": {
|
|
26368
|
+
"type": "object",
|
|
26369
|
+
"description": "One rejected `create` row: the address as submitted and the validation\nmessages for it. Always emitted; `null` when the row carried no address (the\nrow is still rejected, with a \"can't be blank\" message). `@required` models\nthe presence and the nullability is layered on in the OpenAPI\n(smithy-build.json jsonAdd -> type: [\"string\",\"null\"]), the Wormhole.color\ntreatment.",
|
|
26370
|
+
"properties": {
|
|
26371
|
+
"email_address": {
|
|
26372
|
+
"type": [
|
|
26373
|
+
"string",
|
|
26374
|
+
"null"
|
|
26375
|
+
],
|
|
26376
|
+
"x-go-type": "string"
|
|
26377
|
+
},
|
|
26378
|
+
"messages": {
|
|
26379
|
+
"type": "array",
|
|
26380
|
+
"items": {
|
|
26381
|
+
"type": "string"
|
|
26382
|
+
}
|
|
26383
|
+
}
|
|
26384
|
+
},
|
|
26385
|
+
"required": [
|
|
26386
|
+
"email_address",
|
|
26387
|
+
"messages"
|
|
26388
|
+
]
|
|
26389
|
+
},
|
|
26390
|
+
"ClientInvitationErrors": {
|
|
26391
|
+
"type": "object",
|
|
26392
|
+
"description": "The per-row 422 body: {\"errors\": [{\"email_address\": ..., \"messages\": [...]}]}.",
|
|
26393
|
+
"properties": {
|
|
26394
|
+
"errors": {
|
|
26395
|
+
"type": "array",
|
|
26396
|
+
"items": {
|
|
26397
|
+
"$ref": "#/components/schemas/ClientInvitationError"
|
|
26398
|
+
}
|
|
26399
|
+
}
|
|
26400
|
+
},
|
|
26401
|
+
"required": [
|
|
26402
|
+
"errors"
|
|
26403
|
+
]
|
|
26404
|
+
},
|
|
26405
|
+
"ClientInvitationValidationErrorResponseContent": {
|
|
26406
|
+
"$ref": "#/components/schemas/ClientInvitationErrors"
|
|
26407
|
+
},
|
|
25212
26408
|
"ClientReply": {
|
|
25213
26409
|
"type": "object",
|
|
25214
26410
|
"properties": {
|
|
@@ -25553,6 +26749,15 @@
|
|
|
25553
26749
|
"CreateBookmarkResponseContent": {
|
|
25554
26750
|
"$ref": "#/components/schemas/Bookmark"
|
|
25555
26751
|
},
|
|
26752
|
+
"CreateBubbleUpRequestContent": {
|
|
26753
|
+
"type": "object",
|
|
26754
|
+
"properties": {
|
|
26755
|
+
"at": {
|
|
26756
|
+
"type": "string",
|
|
26757
|
+
"description": "Timing for the bubble-up. `\"now\"` bubbles up immediately; a scheduling\nkeyword (`\"today\"`, `\"tomorrow\"`, `\"weekend\"`, `\"next_week\"`) or an ISO8601\ndate (e.g. `\"2026-09-10\"`) schedules it to resurface later. bc3 requires a\nvalue — omitting `at` errors server-side (`Date.iso8601(nil)`) — so send\n`\"now\"` for the immediate case."
|
|
26758
|
+
}
|
|
26759
|
+
}
|
|
26760
|
+
},
|
|
25556
26761
|
"CreateCampfireLineRequestContent": {
|
|
25557
26762
|
"type": "object",
|
|
25558
26763
|
"properties": {
|
|
@@ -25667,6 +26872,31 @@
|
|
|
25667
26872
|
"CreateChatbotResponseContent": {
|
|
25668
26873
|
"$ref": "#/components/schemas/Chatbot"
|
|
25669
26874
|
},
|
|
26875
|
+
"CreateClientRequest": {
|
|
26876
|
+
"type": "object",
|
|
26877
|
+
"description": "A new client to invite. Unlike CreatePersonRequest, only the address is\nrequired: bc3 defaults `name` to the email address when omitted.",
|
|
26878
|
+
"properties": {
|
|
26879
|
+
"email_address": {
|
|
26880
|
+
"type": "string",
|
|
26881
|
+
"format": "password"
|
|
26882
|
+
},
|
|
26883
|
+
"name": {
|
|
26884
|
+
"type": "string",
|
|
26885
|
+
"format": "password"
|
|
26886
|
+
},
|
|
26887
|
+
"title": {
|
|
26888
|
+
"type": "string",
|
|
26889
|
+
"format": "password"
|
|
26890
|
+
},
|
|
26891
|
+
"company_name": {
|
|
26892
|
+
"type": "string",
|
|
26893
|
+
"format": "password"
|
|
26894
|
+
}
|
|
26895
|
+
},
|
|
26896
|
+
"required": [
|
|
26897
|
+
"email_address"
|
|
26898
|
+
]
|
|
26899
|
+
},
|
|
25670
26900
|
"CreateCloudFileRequestContent": {
|
|
25671
26901
|
"type": "object",
|
|
25672
26902
|
"properties": {
|
|
@@ -26071,6 +27301,30 @@
|
|
|
26071
27301
|
"CreateScheduleEntryResponseContent": {
|
|
26072
27302
|
"$ref": "#/components/schemas/ScheduleEntry"
|
|
26073
27303
|
},
|
|
27304
|
+
"CreateTemplateLibraryCopyRequestContent": {
|
|
27305
|
+
"type": "object",
|
|
27306
|
+
"properties": {
|
|
27307
|
+
"template_recording_id": {
|
|
27308
|
+
"type": "integer",
|
|
27309
|
+
"format": "int64"
|
|
27310
|
+
},
|
|
27311
|
+
"destination_parent_id": {
|
|
27312
|
+
"type": "integer",
|
|
27313
|
+
"format": "int64"
|
|
27314
|
+
},
|
|
27315
|
+
"adding_people_confirmed": {
|
|
27316
|
+
"type": "boolean",
|
|
27317
|
+
"description": "Confirm granting destination-project access to people referenced by the template."
|
|
27318
|
+
}
|
|
27319
|
+
},
|
|
27320
|
+
"required": [
|
|
27321
|
+
"destination_parent_id",
|
|
27322
|
+
"template_recording_id"
|
|
27323
|
+
]
|
|
27324
|
+
},
|
|
27325
|
+
"CreateTemplateLibraryCopyResponseContent": {
|
|
27326
|
+
"$ref": "#/components/schemas/TemplateLibraryCopy"
|
|
27327
|
+
},
|
|
26074
27328
|
"CreateTemplateRequestContent": {
|
|
26075
27329
|
"type": "object",
|
|
26076
27330
|
"properties": {
|
|
@@ -26387,6 +27641,9 @@
|
|
|
26387
27641
|
"DisableCardColumnOnHoldResponseContent": {
|
|
26388
27642
|
"$ref": "#/components/schemas/CardColumn"
|
|
26389
27643
|
},
|
|
27644
|
+
"DisableProjectClientsResponseContent": {
|
|
27645
|
+
"$ref": "#/components/schemas/ProjectClientEnablement"
|
|
27646
|
+
},
|
|
26390
27647
|
"DockItem": {
|
|
26391
27648
|
"type": "object",
|
|
26392
27649
|
"properties": {
|
|
@@ -26681,6 +27938,9 @@
|
|
|
26681
27938
|
"EnableOutOfOfficeResponseContent": {
|
|
26682
27939
|
"$ref": "#/components/schemas/OutOfOffice"
|
|
26683
27940
|
},
|
|
27941
|
+
"EnableProjectClientsResponseContent": {
|
|
27942
|
+
"$ref": "#/components/schemas/ProjectClientEnablement"
|
|
27943
|
+
},
|
|
26684
27944
|
"Event": {
|
|
26685
27945
|
"type": "object",
|
|
26686
27946
|
"properties": {
|
|
@@ -27956,6 +29216,12 @@
|
|
|
27956
29216
|
"GetSubscriptionResponseContent": {
|
|
27957
29217
|
"$ref": "#/components/schemas/Subscription"
|
|
27958
29218
|
},
|
|
29219
|
+
"GetTemplateLibraryCopyResponseContent": {
|
|
29220
|
+
"$ref": "#/components/schemas/TemplateLibraryCopy"
|
|
29221
|
+
},
|
|
29222
|
+
"GetTemplateLibraryResponseContent": {
|
|
29223
|
+
"$ref": "#/components/schemas/TemplateLibrary"
|
|
29224
|
+
},
|
|
27959
29225
|
"GetTemplateResponseContent": {
|
|
27960
29226
|
"$ref": "#/components/schemas/Template"
|
|
27961
29227
|
},
|
|
@@ -28502,6 +29768,12 @@
|
|
|
28502
29768
|
"$ref": "#/components/schemas/Question"
|
|
28503
29769
|
}
|
|
28504
29770
|
},
|
|
29771
|
+
"ListRecentProjectsResponseContent": {
|
|
29772
|
+
"type": "array",
|
|
29773
|
+
"items": {
|
|
29774
|
+
"$ref": "#/components/schemas/Project"
|
|
29775
|
+
}
|
|
29776
|
+
},
|
|
28505
29777
|
"ListRecordingBoostsResponseContent": {
|
|
28506
29778
|
"type": "array",
|
|
28507
29779
|
"items": {
|
|
@@ -29256,6 +30528,25 @@
|
|
|
29256
30528
|
}
|
|
29257
30529
|
}
|
|
29258
30530
|
},
|
|
30531
|
+
"PeopleConfirmationRequiredErrorResponseContent": {
|
|
30532
|
+
"type": "object",
|
|
30533
|
+
"description": "The copy requires confirmation before granting destination-project access\nto people referenced by the template.",
|
|
30534
|
+
"properties": {
|
|
30535
|
+
"error": {
|
|
30536
|
+
"type": "string"
|
|
30537
|
+
},
|
|
30538
|
+
"people": {
|
|
30539
|
+
"type": "array",
|
|
30540
|
+
"items": {
|
|
30541
|
+
"$ref": "#/components/schemas/TemplateLibraryConfirmationPerson"
|
|
30542
|
+
}
|
|
30543
|
+
}
|
|
30544
|
+
},
|
|
30545
|
+
"required": [
|
|
30546
|
+
"error",
|
|
30547
|
+
"people"
|
|
30548
|
+
]
|
|
30549
|
+
},
|
|
29259
30550
|
"Person": {
|
|
29260
30551
|
"type": "object",
|
|
29261
30552
|
"properties": {
|
|
@@ -29530,6 +30821,10 @@
|
|
|
29530
30821
|
"bookmark_url": {
|
|
29531
30822
|
"type": "string"
|
|
29532
30823
|
},
|
|
30824
|
+
"star_url": {
|
|
30825
|
+
"type": "string",
|
|
30826
|
+
"description": "Bucket stars collection for this project (`/buckets/{id}/stars.json`)."
|
|
30827
|
+
},
|
|
29533
30828
|
"url": {
|
|
29534
30829
|
"type": "string"
|
|
29535
30830
|
},
|
|
@@ -29544,7 +30839,12 @@
|
|
|
29544
30839
|
"x-go-type-skip-optional-pointer": true
|
|
29545
30840
|
},
|
|
29546
30841
|
"bookmarked": {
|
|
29547
|
-
"type": "boolean"
|
|
30842
|
+
"type": "boolean",
|
|
30843
|
+
"description": "True when the project is pinned on the current user's home page at all,\nwhether starred or filed into a stack."
|
|
30844
|
+
},
|
|
30845
|
+
"starred": {
|
|
30846
|
+
"type": "boolean",
|
|
30847
|
+
"description": "True only when the project carries a star on the current user's home page."
|
|
29548
30848
|
},
|
|
29549
30849
|
"client_company": {
|
|
29550
30850
|
"$ref": "#/components/schemas/ClientCompany"
|
|
@@ -29584,6 +30884,18 @@
|
|
|
29584
30884
|
}
|
|
29585
30885
|
}
|
|
29586
30886
|
},
|
|
30887
|
+
"ProjectClientEnablement": {
|
|
30888
|
+
"type": "object",
|
|
30889
|
+
"description": "The project's client-enablement state after a toggle.",
|
|
30890
|
+
"properties": {
|
|
30891
|
+
"clients_enabled": {
|
|
30892
|
+
"type": "boolean"
|
|
30893
|
+
}
|
|
30894
|
+
},
|
|
30895
|
+
"required": [
|
|
30896
|
+
"clients_enabled"
|
|
30897
|
+
]
|
|
30898
|
+
},
|
|
29587
30899
|
"ProjectConstruction": {
|
|
29588
30900
|
"type": "object",
|
|
29589
30901
|
"properties": {
|
|
@@ -31192,6 +32504,9 @@
|
|
|
31192
32504
|
"SetClientVisibilityResponseContent": {
|
|
31193
32505
|
"$ref": "#/components/schemas/Recording"
|
|
31194
32506
|
},
|
|
32507
|
+
"SpotlightRecordingResponseContent": {
|
|
32508
|
+
"$ref": "#/components/schemas/Recording"
|
|
32509
|
+
},
|
|
31195
32510
|
"StorageLimitErrorResponseContent": {
|
|
31196
32511
|
"type": "object",
|
|
31197
32512
|
"description": "The account has reached its file storage limit.\n\nRaised by ResourceLimits#ensure_account_can_upload_files ahead of any operation\nthat stores new bytes. No retry can satisfy it: the account needs more storage,\nso this maps to `limit_exceeded` rather than a retryable server error.",
|
|
@@ -31288,6 +32603,92 @@
|
|
|
31288
32603
|
"updated_at"
|
|
31289
32604
|
]
|
|
31290
32605
|
},
|
|
32606
|
+
"TemplateLibrary": {
|
|
32607
|
+
"type": "object",
|
|
32608
|
+
"properties": {
|
|
32609
|
+
"bucket": {
|
|
32610
|
+
"$ref": "#/components/schemas/RecordingBucket"
|
|
32611
|
+
},
|
|
32612
|
+
"todoset": {
|
|
32613
|
+
"$ref": "#/components/schemas/RecordingParent"
|
|
32614
|
+
},
|
|
32615
|
+
"todolists": {
|
|
32616
|
+
"type": "array",
|
|
32617
|
+
"items": {
|
|
32618
|
+
"$ref": "#/components/schemas/Todolist"
|
|
32619
|
+
}
|
|
32620
|
+
}
|
|
32621
|
+
},
|
|
32622
|
+
"required": [
|
|
32623
|
+
"bucket",
|
|
32624
|
+
"todolists",
|
|
32625
|
+
"todoset"
|
|
32626
|
+
]
|
|
32627
|
+
},
|
|
32628
|
+
"TemplateLibraryConfirmationPerson": {
|
|
32629
|
+
"type": "object",
|
|
32630
|
+
"properties": {
|
|
32631
|
+
"id": {
|
|
32632
|
+
"type": "integer",
|
|
32633
|
+
"format": "int64"
|
|
32634
|
+
},
|
|
32635
|
+
"name": {
|
|
32636
|
+
"type": "string",
|
|
32637
|
+
"format": "password",
|
|
32638
|
+
"x-basecamp-sensitive": {
|
|
32639
|
+
"category": "pii",
|
|
32640
|
+
"redact": true
|
|
32641
|
+
}
|
|
32642
|
+
},
|
|
32643
|
+
"avatar_url": {
|
|
32644
|
+
"type": "string",
|
|
32645
|
+
"format": "password",
|
|
32646
|
+
"x-basecamp-sensitive": {
|
|
32647
|
+
"category": "pii",
|
|
32648
|
+
"redact": true
|
|
32649
|
+
}
|
|
32650
|
+
}
|
|
32651
|
+
},
|
|
32652
|
+
"required": [
|
|
32653
|
+
"avatar_url",
|
|
32654
|
+
"id",
|
|
32655
|
+
"name"
|
|
32656
|
+
]
|
|
32657
|
+
},
|
|
32658
|
+
"TemplateLibraryCopy": {
|
|
32659
|
+
"type": "object",
|
|
32660
|
+
"properties": {
|
|
32661
|
+
"id": {
|
|
32662
|
+
"type": "integer",
|
|
32663
|
+
"format": "int64"
|
|
32664
|
+
},
|
|
32665
|
+
"status": {
|
|
32666
|
+
"type": "string",
|
|
32667
|
+
"description": "pending|processing|completed|failed"
|
|
32668
|
+
},
|
|
32669
|
+
"source_recording_id": {
|
|
32670
|
+
"type": "integer",
|
|
32671
|
+
"format": "int64"
|
|
32672
|
+
},
|
|
32673
|
+
"destination_parent_id": {
|
|
32674
|
+
"type": "integer",
|
|
32675
|
+
"format": "int64"
|
|
32676
|
+
},
|
|
32677
|
+
"url": {
|
|
32678
|
+
"type": "string"
|
|
32679
|
+
},
|
|
32680
|
+
"destination_todolist": {
|
|
32681
|
+
"$ref": "#/components/schemas/Todolist"
|
|
32682
|
+
}
|
|
32683
|
+
},
|
|
32684
|
+
"required": [
|
|
32685
|
+
"destination_parent_id",
|
|
32686
|
+
"id",
|
|
32687
|
+
"source_recording_id",
|
|
32688
|
+
"status",
|
|
32689
|
+
"url"
|
|
32690
|
+
]
|
|
32691
|
+
},
|
|
31291
32692
|
"TimelineAttachment": {
|
|
31292
32693
|
"type": "object",
|
|
31293
32694
|
"description": "A single timeline-event attachment. This is an optional-field superset over\ntwo wire variants — a full Upload recording (upload-kind recordings, rendered\nby BC3's uploads/_upload partial: the complete recording projection + rich-\ntext description + the upload body) and a rich-text attachment/blob partial\n(all other recordings) — so one element type decodes either. Every field is\noptional; a given instance populates only the fields of the variant it\nrepresents. The upload-recording variant enumerates the full documented\nprojection so no documented field is silently dropped on decode.",
|
|
@@ -32879,6 +34280,37 @@
|
|
|
32879
34280
|
"UpdateProjectAccessResponseContent": {
|
|
32880
34281
|
"$ref": "#/components/schemas/ProjectAccessResult"
|
|
32881
34282
|
},
|
|
34283
|
+
"UpdateProjectClientAccessRequestContent": {
|
|
34284
|
+
"type": "object",
|
|
34285
|
+
"properties": {
|
|
34286
|
+
"grant": {
|
|
34287
|
+
"type": "array",
|
|
34288
|
+
"items": {
|
|
34289
|
+
"type": "integer",
|
|
34290
|
+
"format": "int64"
|
|
34291
|
+
},
|
|
34292
|
+
"description": "Existing client people IDs to add to the project."
|
|
34293
|
+
},
|
|
34294
|
+
"revoke": {
|
|
34295
|
+
"type": "array",
|
|
34296
|
+
"items": {
|
|
34297
|
+
"type": "integer",
|
|
34298
|
+
"format": "int64"
|
|
34299
|
+
},
|
|
34300
|
+
"description": "Client people IDs to remove from the project."
|
|
34301
|
+
},
|
|
34302
|
+
"create": {
|
|
34303
|
+
"type": "array",
|
|
34304
|
+
"items": {
|
|
34305
|
+
"$ref": "#/components/schemas/CreateClientRequest"
|
|
34306
|
+
},
|
|
34307
|
+
"description": "New clients to invite by email."
|
|
34308
|
+
}
|
|
34309
|
+
}
|
|
34310
|
+
},
|
|
34311
|
+
"UpdateProjectClientAccessResponseContent": {
|
|
34312
|
+
"$ref": "#/components/schemas/ProjectAccessResult"
|
|
34313
|
+
},
|
|
32882
34314
|
"UpdateProjectRequestContent": {
|
|
32883
34315
|
"type": "object",
|
|
32884
34316
|
"properties": {
|