Skip to content

Remove completion_subscribers from Card shape#194

Closed
robzolkos wants to merge 1 commit intobasecamp:mainfrom
robzolkos:remove-card-completion-subscribers
Closed

Remove completion_subscribers from Card shape#194
robzolkos wants to merge 1 commit intobasecamp:mainfrom
robzolkos:remove-card-completion-subscribers

Conversation

@robzolkos
Copy link
Collaborator

@robzolkos robzolkos commented Mar 16, 2026

Summary

  • Remove completion_subscribers from the Card shape in the Smithy spec
  • Regenerate all language SDKs (Go, Ruby, TypeScript, Swift, Kotlin)
  • Todos retain the field — this was card-only, where it always returned an empty array

Related PRs:


Summary by cubic

Removed completion_subscribers from the Card shape in the Smithy spec, OpenAPI, and all SDKs. Cards never supported this field (it always returned an empty array); Todos still expose it.

  • Migration
    • Remove any references to Card.completion_subscribers in your code.
    • Use Todo.completion_subscribers if you need completion subscribers.

Written for commit e2f72ad. Summary will update on new commits.

completion_subscribers is a todo-only feature. It was copy-pasted into
the card API jbuilder template (6d68f56cc6, Nov 2022) when the CardTables
JSON API was first created, carried over from the old kanban ticket
template. The cards controller never accepted completion_subscriber_ids
in wrap_parameters and has no write path for them, so the field always
returns an empty array.

The original addition of completion_subscribers to the public API
(5ff5f73c00, Feb 2018) was explicitly for todos only.

Removed from the Smithy spec, card fixtures, Go wrapper, and
regenerated all language SDKs. Todos retain the field.
Copilot AI review requested due to automatic review settings March 16, 2026 17:52
@robzolkos robzolkos requested a review from a team as a code owner March 16, 2026 17:52
@github-actions github-actions bot added typescript Pull requests that update TypeScript code ruby Pull requests that update the Ruby SDK go kotlin swift spec Changes to the Smithy spec or OpenAPI labels Mar 16, 2026
@github-actions
Copy link

## Spec Change Impact

### Summary
The `completion_subscribers` field was removed from the `Card` shape.

### Impact
- **Removed Field**: `completion_subscribers` (from `Card` shape)
- **Breaking Change**: Yes (removal of a field constitutes a breaking API change)

### Required Actions
- All SDKs must be regenerated to reflect this change.

### Checklist of SDKs needing updates:
- [ ] Go
- [ ] TypeScript
- [ ] Ruby
- [ ] Kotlin
- [ ] Swift

@github-actions github-actions bot added the breaking Breaking change to public API label Mar 16, 2026
@github-actions
Copy link

⚠️ Potential breaking changes detected:

  • Removal of the 'completionSubscribers' field from the 'Card' type in multiple SDKs (Go, Kotlin, Swift, and TypeScript). This constitutes a breaking change as it is a removed exported field.

Review carefully before merging. Consider a major version bump.

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 13 files

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Removes completion_subscribers from the Card shape in the Smithy/OpenAPI specs and propagates that removal through regenerated SDK artifacts and fixtures (keeping the field on Todo, where it still applies).

Changes:

  • Removed completion_subscribers from the Card schema in Smithy and OpenAPI, plus TypeScript typings.
  • Updated generated SDK models to drop the corresponding Card field (Go, Ruby, Kotlin, Swift, TypeScript).
  • Updated card JSON fixtures to no longer include completion_subscribers.

Reviewed changes

Copilot reviewed 5 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
spec/basecamp.smithy Removes completion_subscribers from the Card structure.
openapi.json Removes the Card schema property for completion_subscribers.
typescript/src/generated/openapi-stripped.json Mirrors the OpenAPI change in the stripped artifact.
typescript/src/generated/schema.d.ts Removes completion_subscribers from the Card TypeScript type.
go/pkg/generated/client.gen.go Removes CompletionSubscribers from the generated Go Card model.
go/pkg/basecamp/cards.go Removes CompletionSubscribers from the hand-wrapped Go Card model and its mapping from the generated type.
ruby/lib/basecamp/generated/types.rb Removes Card’s completion_subscribers handling in Ruby generated types.
swift/Sources/Basecamp/Generated/Models/Card.swift Removes completionSubscribers from the Swift Card model and initializer.
kotlin/sdk/src/commonMain/kotlin/com/basecamp/sdk/generated/models/Card.kt Removes completionSubscribers from the Kotlin Card model.
spec/fixtures/cards/list.json Removes completion_subscribers from card list fixture responses.
spec/fixtures/cards/get.json Removes completion_subscribers from card get fixture response.
typescript/src/generated/metadata.json Regeneration updates timestamp and adds ListLineupMarkers operation config.
ruby/lib/basecamp/generated/metadata.json Regeneration updates timestamp and adds ListLineupMarkers operation config.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@robzolkos
Copy link
Collaborator Author

Closing as keeping the result shape after all https://github.com/basecamp/bc3/pull/9967

@robzolkos robzolkos closed this Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking Breaking change to public API go kotlin ruby Pull requests that update the Ruby SDK spec Changes to the Smithy spec or OpenAPI swift typescript Pull requests that update TypeScript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants