Skip to content

chat messages / chat line drop creator.client (and other Person fields), breaking connector project trust in Campfires #955

Open

Description

@gavrichards

basecamp chat messages and basecamp chat line return the line's creator with several Person fields missing that the raw API includes, among them client, admin, owner, bio, company details and location. basecamp show still returns the full creator for comments, and basecamp api get returns it for the same chat line.

Why it matters

basecamp-local-agent-connector polls Campfires with these two commands. In --allow-project / project trust mode, a participant is admitted only when the corroborated author has client == false, failing closed when the flag is missing (Authorizer::Project#participant?). With client gone from chat line creators, every Campfire mention from a project member who isn't the operator is now dropped silently, while comments and cards still get through. Operator mentions are unaffected, as they're matched by identity.

It worked on the CLI we had before upgrading to 0.17.0 this morning (via Homebrew), so it changed in a recent release. I'm not sure which one.

Repro (v0.17.0)

# Creator keys from the CLI command: no "client"
basecamp chat line <line id> --project <project id> -j | jq '.data.creator | keys'

# Same line through the raw API: "client" present
basecamp api get buckets/<project id>/chats/<chat id>/lines/<line id>.json -j | jq '.data.creator | keys'

The CLI command returns attachable_sgid, avatar_url, can_access_hill_charts, can_manage_people, can_manage_projects, company, created_at, email_address, employee, id, name, personable_type, time_zone, title, updated_at. The raw API additionally has admin, bio, can_access_timesheet, can_ping, client, location, owner, tagline.

Expected

The chat commands return the same creator fields as the API (or at least client), as show does for other recordings.

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

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions