Skip to content

Add basecamp files versions — HELD, blocked on the SDK - #622

Draft
jeremy wants to merge 1 commit into
mainfrom
feat/files-versions
Draft

Add basecamp files versions — HELD, blocked on the SDK#622
jeremy wants to merge 1 commit into
mainfrom
feat/files-versions

Conversation

@jeremy

@jeremy jeremy commented Aug 4, 2026

Copy link
Copy Markdown
Member

Do not merge. Draft to preserve completed work and make the blocker visible.

Implements basecamp files versions <upload-id> over UploadsService.ListVersions, with the full completeness-bar treatment: command in files.go, catalog entry, API-COVERAGE.md row, skill mention, .surface, unit tests (endpoint reached, URL accepted, pagination contract), and smoke coverage including the vaults/docs alias leaves. bin/ci green.

Why it's held

The SDK method mistypes its response. A live read-only probe of GET /uploads/{id}/versions.json returns version events:

{ "id": 16850997498, "recording_id": 10165243019, "action": "active",
  "details": { "status_was": "drafted" }, "created_at": "", "creator": { } }

but ListUploadVersionsResponseContent is modeled as []Upload, so ListVersions decodes events into Upload structs. What this command actually prints today:

  • title, filename, status, content_type, download_url — all blank, and blank as zero values, so nothing signals they're an artifact
  • action, details, recording_id — dropped; the only fields saying what happened
  • id is the event id, so it invites basecamp files show <id>, which 404s

Note that action here is active, not blob_changed — the endpoint returns the full event stream since publication, so file replacements are one subset of it, not the whole listing.

Blocked on

UploadsService.ListVersions returning an event type (ID, RecordingID, Action, Details, CreatedAt, Creator) rather than []Upload. The root cause is the OpenAPI description, so the fix likely belongs upstream of the generator with the hand-written service following. No issue is filed against basecamp-sdk yet — that's the next step for this to move.

The command itself is correct and ships as-is once the type is right.

Rebase note

This branch's API-COVERAGE.md row still claims full coverage for uploads. #621 corrects the summary to 183/184 and adds the ⚠️ blocked status. Rebase onto #621 before this lands, and flip the row back to ✅ at the same time.

(An earlier version of this description pointed at a COMMUNIQUE-sdk-upload-versions-response.md file in #621. That file was removed — basecamp-cli is public, and cross-team asks don't belong in its source tree. The content is preserved off-tree pending an SDK issue.)

Implements basecamp files versions <upload-id> over
UploadsService.ListVersions, with the full completeness-bar treatment:
catalog entry, API-COVERAGE row, skill mention, .surface, unit tests, and
smoke coverage (including the vaults/docs alias leaves).

Do not merge. The SDK method mistypes its response, so the command emits
misleading data — see COMMUNIQUE-sdk-upload-versions-response.md. A live
read-only probe of GET /uploads/{id}/versions.json returns version *events*
(action, details, recording_id, created_at, creator), but the OpenAPI spec
models ListUploadVersionsResponseContent as []Upload, so the SDK decodes
events into Upload structs: title, filename, status and download_url come
back blank, action/details/recording_id are dropped, and the id is the event
id, which does not resolve as an upload.

The command itself is correct and ready; it lands once the SDK returns the
right type.
Copilot AI balanced review requested due to automatic review settings August 4, 2026 18:28
@github-actions github-actions Bot added commands CLI command implementations tests Tests (unit and e2e) skills Agent skills docs labels Aug 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands CLI command implementations docs skills Agent skills tests Tests (unit and e2e)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants