Sync API docs from bc3: add and remove clients on a project (PUT /projects/:id/people/client_users, client_enablement) - #443
Conversation
…library, get a recording Parity catch-up for bc3 doc/api changes merged since the last mirror sync (bc3 88549ca619): - Subtasks (basecamp/bc3#12659): new sections/subtasks.md; `subtasks_count`, `subtasks_completed_count` and `subtasks_url` on to-do and card payloads across todos, card_table_cards, everything and reports; card_table_steps and my_assignments point at the subtask endpoints - Enroll people (basecamp/bc3#9962): POST /account/enrollments/people.json in people.md - Get a recording (basecamp/bc3#10158): GET /recordings/:id.json in recordings.md - Backlinks (basecamp/bc3#13121): new sections/backlinks.md - To-do list templates (basecamp/bc3#12953): new sections/template_library.md - README endpoint index gains Backlinks, Subtasks and To-do list templates Synced from bc3 `doc/api/` by `script/api/sync_to_bc3_api` — not a hand-edit.
Projects can now take on clients over the API, per basecamp/bc3#13098: - PUT /projects/:id/people/client_users.json grants and revokes client access, and invites brand-new clients via `create` entries; invitations are all-or-nothing (422 with per-address `errors`, 429 over the user limit) - POST/DELETE /projects/:id/client_enablement.json enable and disable client access on the project, answering `{"clients_enabled": true}` Synced from bc3 `doc/api/` by `script/api/sync_to_bc3_api` — not a hand-edit.
There was a problem hiding this comment.
🟡 Changes recommended
Moderate documentation errors include unsupported recording scope, incorrect completion-response expectations, and invalid IDs in client-access examples.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Synchronizes deployed API documentation from bc3, adding project client management and several recently shipped API capabilities.
Changes:
- Documents client enrollment, project access, and client enablement.
- Adds backlinks, subtasks, recording lookup, and template-library APIs.
- Updates related payload examples, endpoint links, and the README index.
File summaries
| File | Description |
|---|---|
sections/todos.md |
Adds subtask metadata and guidance. |
sections/template_library.md |
Documents to-do list template operations. |
sections/subtasks.md |
Documents the subtask API. |
sections/reports.md |
Adds subtask metadata to report examples. |
sections/recordings.md |
Documents generic recording retrieval. |
sections/people.md |
Documents enrollment and project client management. |
sections/my_assignments.md |
Points completion actions to subtask endpoints. |
sections/everything.md |
Adds subtask fields to payload examples. |
sections/card_table_steps.md |
Relates legacy steps to subtasks. |
sections/card_table_cards.md |
Adds subtask metadata and URLs. |
sections/backlinks.md |
Documents recording backlinks. |
README.md |
Adds new resources to the endpoint index. |
Review details
Suppressed comments (7)
sections/backlinks.md:20
- This new response example omits the route markers required for section JSON responses by
AGENTS.md:43. Add matching<!-- START GET /recordings/2/backlinks.json -->and<!-- END GET /recordings/2/backlinks.json -->comments around the JSON block so tooling can identify it consistently.
###### Example JSON Response
```json
sections/people.md:371
- Write-request examples must be enclosed by matching route markers (
AGENTS.md:45, with the marker format atAGENTS.md:43). This new client update request is currently unmarked.
###### Example JSON Request
```json
{
"grant": [
1049715915
sections/people.md:411
- This new JSON response is missing the matching route markers required by
AGENTS.md:43. Mark it explicitly as the POST response; that also avoids implying that the showntruepayload documents the DELETE result.
###### Example JSON Response
```json
{
"clients_enabled": true
}
sections/people.md:418
- The section introduces both POST and DELETE, but the copyable example only exercises POST. Paired-method sections document both commands (for example
sections/messages.md:493-508andsections/card_table_columns.md:208-223), so add a DELETE cURL block; otherwise readers cannot directly exercise the newly documented disable operation.
```shell
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -X POST \
https://3.basecampapi.com/$ACCOUNT_ID/projects/1/client_enablement.json
**sections/subtasks.md:210**
* Write-request examples must be enclosed by matching route markers (`AGENTS.md:45`, with the marker format at `AGENTS.md:43`). This new POST example is currently unmarked.
Example JSON Request
{
"title": "Book the room",sections/subtasks.md:250
- Write-request examples must be enclosed by matching route markers (
AGENTS.md:45, with the marker format atAGENTS.md:43). This new PUT example is currently unmarked.
###### Example JSON Request
```json
{
"title": "Book the big room",
sections/subtasks.md:310
- Write-request examples must be enclosed by matching route markers (
AGENTS.md:45, with the marker format atAGENTS.md:43). This new reposition request is currently unmarked.
###### Example JSON Request
```json
{
"position": 4
- Files reviewed: 12/12 changed files
- Comments generated: 5
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 533f05f4f1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Forward sync of the project clients API shipped in bc3#13098, merged and deployed to production:
people.md: new Add and remove clients on a project section —PUT /projects/:id/people/client_users.jsongrants and revokes client access and invites brand-new clients viacreate: [{email_address, name?, title?, company_name?}]; only client users may be granted or revoked here. Invitations are all-or-nothing:422with anerrorsarray naming each bademail_addressand itsmessages,429when the new addresses would exceed the account's user limit. Response mirrors Update who can access a project —grantedandrevokedarrays of people withclient: truepeople.md: new Enable or disable clients on a project section —POST/DELETE /projects/:id/client_enablement.json, answering{"clients_enabled": true};PUT client_usersreturns403until the project is enabled, andDELETEreturns403while client users remainThe client_users change is the second commit (533f05f) and is exactly
sections/people.md, +73.The first commit (f2e03d6) is a parity catch-up: the mirror was at exact parity with bc3
88549ca619(the #441 sync), and five bc3 doc changes merged since then were never mirrored. They're all on bc3 master and deployed, so they ride along here as their own commit rather than a separate PR:sections/subtasks.md;subtasks_count,subtasks_completed_count,subtasks_urlon to-do and card payloads intodos.md,card_table_cards.md,everything.md,reports.md;card_table_steps.mdandmy_assignments.mdpoint at the subtask endpointsPOST /account/enrollments/people.jsoninpeople.mdGET /recordings/:id.jsoninrecordings.mdsections/backlinks.mdsections/template_library.mdREADME.mdendpoint index gains Backlinks, Subtasks and To-do list templatesEach commit is the sync script's output run from the corresponding bc3 commit (
e8f0d765bathen1d8d4ce95d), so the mirror lands at exact parity with bc3 master.Reviews on this PR will be addressed.
Synced from bc3
doc/api/byscript/api/sync_to_bc3_api— not a hand-edit.