Skip to content

todos show --json omits several fields present in the raw API (completion_subscribers, due_on, starts_on, description_attachments, …) #449

Description

@vmpn

Summary

basecamp todos show <id> --json returns a data object with fewer fields than the underlying Basecamp 3 API endpoint (GET /buckets/{bucket}/todos/{id}.json), making the CLI output an incomplete view of a to-do.

CLI version

basecamp 0.7.2

Reproduction

ID=<some-todo-id>
PROJECT=<project-id>
BUCKET=<bucket-id>

# Fields surfaced by the CLI:
basecamp todos show "$ID" --in "$PROJECT" --json --jq '.data | keys'

# Fields the API actually returns:
basecamp api get "/buckets/$BUCKET/todos/$ID.json" --agent | jq 'keys'

Observed difference

Data-carrying fields present in the raw API but absent from todos show:

  • completion_subscribers — the "When done, notify…" recipients shown in the web UI
  • due_on — due date
  • starts_on — start date
  • description_attachments — file attachments embedded in the description
  • comments_count — comment count on the to-do
  • boosts_count — boost (reaction) count

A few hypermedia fields (completion_url, comments_url, boosts_url, subscription_url) are also absent — likely intentional, mentioning for completeness.

Impact

The missing fields aren't obviously absent — the call returns ok: true and a data object that looks complete. Automated callers (scripts, AI agents, downstream tooling) querying those fields via --jq get back null or [] with no way to distinguish "field omitted by the CLI" from "field genuinely empty on the server". For interactive use this is usually fine because the user can cross-check in the web UI, but for non-interactive callers it can lead to acting on incomplete information.

Workaround

Use basecamp api get "/buckets/<bucket>/todos/<id>.json" --agent and parse with jq directly.


Created with assistance of AI agent with human review.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions