Add project schedule dates to SDK models#302
Conversation
Spec Change ImpactSummary of Changes
Effects
Checklist for SDK Updates
|
There was a problem hiding this comment.
Pull request overview
Adds start_date / end_date to the shared Project shape so scheduled project dates are deserialized from project responses across all generated SDKs (matching what the API already returns), plus updates fixtures/tests accordingly.
Changes:
- Extend
Projectin Smithy withstart_dateandend_date, then regenerate OpenAPI + language SDK models. - Update language-specific tests/fixtures to assert scheduled project dates are present in list/get responses.
- Update the handwritten Go wrapper so
basecamp.Projectexposes the new fields.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 12 out of 21 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
spec/basecamp.smithy |
Adds start_date / end_date to the shared Project shape. |
openapi.json |
Regenerated OpenAPI reflecting the new Project fields. |
spec/fixtures/projects/get.json |
Fixture updated to include scheduled project dates. |
spec/fixtures/projects/list.json |
Fixture updated so list includes a scheduled project with dates. |
spec/fixtures/projects/README.md |
Fixture notes updated to document scheduled project coverage. |
go/pkg/generated/client.gen.go |
Regenerated Go model includes StartDate / EndDate on Project. |
go/pkg/basecamp/projects.go |
Handwritten Go wrapper exposes StartDate / EndDate and maps from generated model. |
go/pkg/basecamp/projects_test.go |
Go tests assert the new fields deserialize from fixtures. |
typescript/src/generated/schema.d.ts |
Regenerated TS schema includes optional start_date / end_date. |
typescript/src/generated/openapi-stripped.json |
Regenerated stripped OpenAPI includes the new fields. |
typescript/src/generated/metadata.json |
Regenerated metadata timestamp. |
typescript/tests/services/projects.test.ts |
TS service tests assert start_date / end_date are present. |
ruby/lib/basecamp/generated/types.rb |
Regenerated Ruby Project type includes start_date / end_date. |
ruby/lib/basecamp/generated/metadata.json |
Regenerated metadata timestamp. |
ruby/test/basecamp/services/projects_service_test.rb |
Ruby tests assert schedule dates are present on get. |
python/src/basecamp/generated/types.py |
Regenerated Python Project TypedDict includes optional date fields. |
python/tests/services/test_projects.py |
New Python tests cover schedule dates on list/get. |
kotlin/sdk/src/commonMain/kotlin/com/basecamp/sdk/generated/models/Project.kt |
Regenerated Kotlin model includes startDate / endDate with @SerialName. |
kotlin/sdk/src/commonTest/kotlin/com/basecamp/sdk/ProjectsServiceTest.kt |
Kotlin tests assert schedule dates deserialize. |
swift/Sources/Basecamp/Generated/Models/Project.swift |
Regenerated Swift model includes startDate / endDate. |
swift/Tests/BasecampTests/GeneratedServiceTests.swift |
Swift tests assert schedule dates deserialize. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Sensitive Change Detection (shadow mode)This PR modifies control-plane files:
|
5bf4cdf to
5fd2080
Compare
5fd2080 to
c4bf362
Compare
Summary
start_dateandend_dateto the sharedProjectshape in Smithy1.26.3ingo/go.modandconformance/runner/go/go.modgo-version-fileso CI follows the module-declared minimum versionRef: https://app.basecamp.com/2914079/buckets/46292715/card_tables/cards/9869754561
Why
BC3 project API responses include
start_date/end_datefor scheduled projects, but the SDK spec only modeled those fields onschedule_attributesfor updates. That left every generated SDK able to send project schedule dates on update, but unable to read them back from project responses.While validating the PR, the security workflow also surfaced Go standard library vulnerabilities present in
1.26.2and fixed in1.26.3. Instead of hardcoding a patch release in multiple workflows, this PR makes the minimum Go version explicit in the relevantgo.modfiles and keeps workflows pointed atgo-version-file.Impact
This updates the generated
Projectmodel in:The hand-written Go wrapper is also updated so
basecamp.Projectexposes the new fields.Validation
cd go && go test ./pkg/basecamp -run 'TestProject_|TestDockItem|TestCreateProjectRequest|TestUpdateProjectRequest|TestProjectsService_Update'cd typescript && npm test -- --run tests/services/projects.test.tscd ruby && make rb-testcd kotlin && ./gradlew :basecamp-sdk:jvmTest --tests com.basecamp.sdk.ProjectsServiceTestcd python && uv run pytest tests/services/test_projects.pySwift models/tests were regenerated and updated, but full Swift validation was not run in this Linux environment.