Migrate CLI to flat SDK routes by jeremy · Pull Request #132 · basecamp/basecamp-cli
AI review requested due to automatic review settings
February 5, 2026 09:34Copilot AI review requested due to automatic review settings
February 5, 2026 09:50Copilot AI review requested due to automatic review settings
February 5, 2026 10:57Copilot AI review requested due to automatic review settings
February 8, 2026 09:32Copilot AI review requested due to automatic review settings
February 22, 2026 06:16Copilot AI review requested due to automatic review settings
February 22, 2026 17:01Copilot AI review requested due to automatic review settings
February 26, 2026 17:03Update all SDK service calls to use flat URL routing where bucketID/ projectID has been removed from method signatures. This is the CLI-side companion to basecamp/basecamp-sdk#74 which flattens all SDK routes from /{accountId}/buckets/{projectId}/resource/{id} to /{accountId}/resource/{id}. Key changes: - Remove bucketID first-arg from ~120 SDK method calls across 25+ files - Remove project resolution from single-resource commands (show, complete, update, etc.) that no longer need project context - Flatten raw API paths in show.go and resolver.go - Remove timesheet entry CRUD commands (Get/Create/Update/Trash removed from flat SDK) and clock shortcut - Remove unused project parameters from card column/step and todolist group subcommands - Update command catalog, breadcrumbs, and tests
…arded Addresses PR review: commands that no longer need project context should use extractID() instead of extractWithProject() with the second return value discarded.
Remove "without project shows error" tests for events, messagetypes, recordings visibility, timesheet recording, and webhooks — these commands no longer require project context with flat SDK routes.
ProjectTimeline and ProjectReport now accept projectID param. Webhooks List/Create now accept bucketID param. Timesheet entry route segment fixed (timesheet_entries).
Timesheet: add --project/--in flags, pass projectID to ProjectReport. Webhooks: add --project/--in flags, pass bucketID to List/Create. Boost delete: add project resolution (matches list/show/create). Timeline: pass projectID to ProjectTimeline in both one-shot and watch.
…ost delete These SDK methods operate by globally-unique ID and don't accept a bucketID param. The resolution chains were prompting users for a project that was never used.
Aligns URL parse output with flat route terminology. Updates unit tests, e2e tests, and skill documentation.
When a campfire ID is passed directly, the flat SDK doesn't need a project. Only resolve project when deriving campfire from project dock.
The Comment resolver requires a projectID to show the recording picker. Ensure project is resolved before calling the interactive path.
jeremy added a commit that referenced this pull request
Mar 1, 2026These tests were added aspirationally in #132 for a breadcrumbs feature that hasn't been built yet. Mark them as skip to unblock the release.
jeremy added a commit that referenced this pull request
Mar 1, 2026- Use GOWORK=off in provenance-check so go list reads go.mod directly instead of resolving through the workspace - Skip unimplemented breadcrumb e2e tests (aspirational from #132)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters