Skip to content

Simplify LineupMarker and add ListLineupMarkers#185

Merged
jeremy merged 2 commits intomainfrom
lineup-list
Mar 16, 2026
Merged

Simplify LineupMarker and add ListLineupMarkers#185
jeremy merged 2 commits intomainfrom
lineup-list

Conversation

@jeremy
Copy link
Copy Markdown
Member

@jeremy jeremy commented Mar 16, 2026

Summary

  • Rewrite LineupMarker struct to match actual API shape (5 fields: id, name, date, created_at, updated_at — the prior model had rich recording-style fields the API never returns)
  • Add ListLineupMarkers GET operation (non-paginated, returns all markers for account)
  • Wire AutomationService into TS and Ruby clients for listLineupMarkers/list_lineup_markers
  • Regenerate all 5 SDKs (179 operations, 39 services)
  • Delete stale create/update fixtures, add list fixture

Create and update operations now correctly return empty bodies (204 No Content), matching the Rails controller's behavior.

Test plan

  • make passes (Go vet/lint/tests, TS tests, Ruby tests, conformance 55 passed, drift checks)
  • Go TestLineupMarker_UnmarshalList passes with list fixture
  • TS automation.test.ts — list markers + empty list
  • Ruby automation_service_test.rb — list markers + empty list
  • No drift warnings for lineup operations

Summary by cubic

Simplified LineupMarker to match the real API (id, name, date, created_at, updated_at) and added a non-paginated account-wide listing. Create/update now return 204 No Content, and the new list is available across all SDKs.

  • New Features

    • Added ListLineupMarkers (GET /{accountId}/lineup/markers.json) under Automation with retry.
    • SDK accessors: Go LineupService.ListMarkers, TypeScript client.automation.listLineupMarkers(), Ruby account.automation.list_lineup_markers, plus Kotlin/Swift Automation services.
  • Migration

    • LineupMarker now only includes: id, name, date, created_at, updated_at. Remove uses of prior fields (e.g., status, color, title, creator, parent, bucket, URLs).
    • Create/update endpoints return 204 No Content; stop reading response bodies.

Written for commit 5e0692b. Summary will update on new commits.

jeremy added 2 commits March 15, 2026 18:38
The Rails app renders markers as `as_json(only: %i[id name date
created_at updated_at])` and create/update return empty bodies. The
prior Smithy model had rich recording-style fields (status, color,
creator, parent, bucket, etc.) that the API never returns.

- Simplify `LineupMarker` struct to 5 fields matching the actual API
- Add `ListLineupMarkers` GET operation (non-paginated)
- Tag it under Automation, regenerate all SDKs (179 ops)
- Rewrite Go `ListMarkers` to use generated client instead of raw GET
- Delete stale create/update fixtures, add list fixture
Add client accessors so `client.automation.listLineupMarkers()` (TS)
and `account.automation.list_lineup_markers` (Ruby) are callable.
Add tests for both covering happy path and empty response.
@jeremy jeremy requested a review from a team as a code owner March 16, 2026 01:38
Copilot AI review requested due to automatic review settings March 16, 2026 01:38
@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
Copy Markdown

## Spec Change Impact

### Changes
- **Added:** `ListLineupMarkers` operation to the API.
- **Modified:** `LineupMarker` type was simplified (specific changes not detailed in the diff).
- No operations or types were removed.

### Impact
- **SDK Regeneration Required:** All SDKs need to be updated to include the new operation and type modification.
- **Breaking Change:** No breaking changes, as no operations/types/fields were removed.

### SDK Checklist
- [ ] Go
- [ ] TypeScript
- [ ] Ruby
- [ ] Kotlin
- [ ] Swift

@github-actions github-actions bot added enhancement New feature or request breaking Breaking change to public API labels Mar 16, 2026
@github-actions
Copy link
Copy Markdown

⚠️ Potential breaking changes detected:

  • LineupMarker type fields have been renamed and removed: 'Status', 'Color', 'Title', 'StartsOn', 'EndsOn', 'Description', 'Type', 'URL', 'AppURL', 'Creator', 'Parent', 'Bucket' were removed or renamed to 'Name', 'Date'. This breaks compatibility with existing consumers relying on the removed fields.
  • LineupService method DeleteMarker no longer provides lineupMarkerFromGenerated due to changes in response handling for CreateLineupMarker and UpdateLineupMarker, altering behavior for consumers relying on previous response structures.
  • Retry behavior explicitly added for ListLineupMarkers operation with exponential retry on certain errors (e.g., 429, 503). Modifies default invocation expectations for API clients using automated retries.

Review carefully before merging. Consider a major version bump.

Copy link
Copy Markdown

@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 33 files

Copy link
Copy Markdown

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

Updates the Lineup Marker API modeling to match the actual response shape and introduces a new account-scoped “list markers” operation, then regenerates/rewires the affected SDK surfaces (notably adding an Automation service in TS/Ruby/Swift/Kotlin) and refreshes fixtures/tests accordingly.

Changes:

  • Add ListLineupMarkers (GET /lineup/markers.json) across the spec + generated SDKs.
  • Simplify LineupMarker to the 5 fields the API returns (id, name, date, created_at, updated_at) and remove stale create/update fixtures.
  • Wire new AutomationService accessors in TS/Ruby/Swift/Kotlin; add Go wrapper LineupService.ListMarkers and update tests/route mappings.

Reviewed changes

Copilot reviewed 15 out of 33 changed files in this pull request and generated no comments.

Show a summary per file
File Description
typescript/tests/services/automation.test.ts Adds MSW-backed tests for automation.listLineupMarkers() (non-empty + empty).
typescript/src/index.ts Re-exports the generated AutomationService and LineupMarker type.
typescript/src/client.ts Adds client.automation accessor wired to generated Automation service.
typescript/src/generated/services/automation.ts Implements listLineupMarkers() against /lineup/markers.json returning LineupMarker[].
typescript/src/generated/schema.d.ts Adds ListLineupMarkers operation + simplified LineupMarker schema + response content type.
typescript/src/generated/path-mapping.ts Maps GET /{accountId}/lineup/markers.json to ListLineupMarkers.
typescript/src/generated/openapi-stripped.json Adds the ListLineupMarkers path + simplified LineupMarker schema.
typescript/src/generated/metadata.json Adds retry metadata for ListLineupMarkers.
swift/Sources/Basecamp/Generated/Services/AutomationService.swift Adds Swift AutomationService with listLineupMarkers().
swift/Sources/Basecamp/Generated/Models/LineupMarker.swift Adds simplified Swift LineupMarker model.
swift/Sources/Basecamp/Generated/AccountClient+Services.swift Exposes account.automation accessor.
swift/Sources/Basecamp/Generated/Metadata.swift Adds retry config entry for ListLineupMarkers.
kotlin/sdk/src/commonMain/.../services/automation.kt Adds Kotlin AutomationService listLineupMarkers().
kotlin/sdk/src/commonMain/.../models/LineupMarker.kt Adds simplified Kotlin LineupMarker model.
kotlin/sdk/src/commonMain/.../ServiceAccessors.kt Exposes AccountClient.automation accessor.
kotlin/sdk/src/commonMain/.../Metadata.kt Adds retry config entry for ListLineupMarkers.
ruby/lib/basecamp/generated/services/automation_service.rb Adds Ruby AutomationService list_lineup_markers.
ruby/lib/basecamp/client.rb Adds automation accessor to the Ruby AccountClient.
ruby/lib/basecamp/generated/types.rb Adds simplified Ruby Types::LineupMarker type.
ruby/lib/basecamp/generated/metadata.json Adds retry metadata for ListLineupMarkers.
ruby/test/basecamp/services/automation_service_test.rb Adds Ruby tests for listing markers (non-empty + empty).
spec/basecamp.smithy Adds ListLineupMarkers operation + simplifies LineupMarker shape.
spec/overlays/tags.smithy Tags ListLineupMarkers under Automation.
spec/fixtures/lineup/list.json Adds list fixture matching the simplified marker shape.
spec/fixtures/lineup/create.json Removes stale create fixture (no longer returned by API).
spec/fixtures/lineup/update.json Removes stale update fixture (no longer returned by API).
openapi.json Adds GET /{accountId}/lineup/markers.json + simplified LineupMarker schema.
go/pkg/generated/client.gen.go Adds generated Go client support for ListLineupMarkers and LineupMarker.
go/pkg/basecamp/lineup.go Simplifies Go LineupMarker + adds LineupService.ListMarkers().
go/pkg/basecamp/lineup_test.go Updates Go fixture test to unmarshal the list response.
go/pkg/basecamp/url-routes.json Adds GET operation for lineup markers and corrects CloneTool route to account-scope.
behavior-model.json Adds behavior metadata for ListLineupMarkers (readonly + retry config).

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

@jeremy jeremy added this to the v0.6.0 milestone Mar 16, 2026
@jeremy jeremy merged commit 827a46d into main Mar 16, 2026
56 checks passed
@jeremy jeremy deleted the lineup-list branch March 16, 2026 02:03
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 enhancement New feature or request 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