Conversation
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.
## 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 |
Review carefully before merging. Consider a major version bump. |
There was a problem hiding this comment.
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
LineupMarkerto the 5 fields the API returns (id, name, date, created_at, updated_at) and remove stale create/update fixtures. - Wire new
AutomationServiceaccessors in TS/Ruby/Swift/Kotlin; add Go wrapperLineupService.ListMarkersand 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
LineupMarkerstruct 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)ListLineupMarkersGET operation (non-paginated, returns all markers for account)AutomationServiceinto TS and Ruby clients forlistLineupMarkers/list_lineup_markersCreate and update operations now correctly return empty bodies (204 No Content), matching the Rails controller's behavior.
Test plan
makepasses (Go vet/lint/tests, TS tests, Ruby tests, conformance 55 passed, drift checks)TestLineupMarker_UnmarshalListpasses with list fixtureautomation.test.ts— list markers + empty listautomation_service_test.rb— list markers + empty listSummary by cubic
Simplified
LineupMarkerto 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
ListLineupMarkers(GET/{accountId}/lineup/markers.json) under Automation with retry.LineupService.ListMarkers, TypeScriptclient.automation.listLineupMarkers(), Rubyaccount.automation.list_lineup_markers, plus Kotlin/Swift Automation services.Migration
LineupMarkernow only includes:id,name,date,created_at,updated_at. Remove uses of prior fields (e.g.,status,color,title,creator,parent,bucket, URLs).Written for commit 5e0692b. Summary will update on new commits.