Skip to content

Add project schedule dates to SDK models#302

Open
robzolkos wants to merge 2 commits into
basecamp:mainfrom
robzolkos:fix-project-response-schedule-dates
Open

Add project schedule dates to SDK models#302
robzolkos wants to merge 2 commits into
basecamp:mainfrom
robzolkos:fix-project-response-schedule-dates

Conversation

@robzolkos
Copy link
Copy Markdown
Collaborator

@robzolkos robzolkos commented May 7, 2026

Summary

  • add start_date and end_date to the shared Project shape in Smithy
  • regenerate the affected SDK models across Go, TypeScript, Ruby, Python, Kotlin, and Swift
  • update project fixtures and cross-language tests to cover scheduled projects
  • raise the minimum Go toolchain to 1.26.3 in go/go.mod and conformance/runner/go/go.mod
  • switch GitHub Actions back to go-version-file so CI follows the module-declared minimum version

Ref: https://app.basecamp.com/2914079/buckets/46292715/card_tables/cards/9869754561

Why

BC3 project API responses include start_date / end_date for scheduled projects, but the SDK spec only modeled those fields on schedule_attributes for 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.2 and fixed in 1.26.3. Instead of hardcoding a patch release in multiple workflows, this PR makes the minimum Go version explicit in the relevant go.mod files and keeps workflows pointed at go-version-file.

Impact

This updates the generated Project model in:

  • Go
  • TypeScript
  • Ruby
  • Python
  • Kotlin
  • Swift

The hand-written Go wrapper is also updated so basecamp.Project exposes 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.ts
  • cd ruby && make rb-test
  • cd kotlin && ./gradlew :basecamp-sdk:jvmTest --tests com.basecamp.sdk.ProjectsServiceTest
  • cd python && uv run pytest tests/services/test_projects.py

Swift models/tests were regenerated and updated, but full Swift validation was not run in this Linux environment.

Copilot AI review requested due to automatic review settings May 7, 2026 21:09
@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 May 7, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Spec Change Impact

Summary of Changes

  • Added: projectSchedule object with startDate and endDate fields to the API models.

Effects

  • SDK Regeneration Required: All SDKs need updates to include the new projectSchedule fields.
  • Breaking Change: No breaking changes detected (no operations or fields were removed).

Checklist for SDK Updates

  • Go
  • TypeScript
  • Ruby
  • Kotlin
  • Swift

@github-actions github-actions Bot added the enhancement New feature or request label May 7, 2026
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 21 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

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 Project in Smithy with start_date and end_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.Project exposes 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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Sensitive Change Detection (shadow mode)

This PR modifies control-plane files:

  • .github/workflows/codeql.yml
  • .github/workflows/release-go.yml
  • .github/workflows/security.yml
  • .github/workflows/test.yml

Shadow mode — this check is informational only. When activated, changes to these paths will require approval from a maintainer.

@github-actions github-actions Bot added the github-actions Pull requests that update GitHub Actions label May 7, 2026
Copilot AI review requested due to automatic review settings May 7, 2026 21:18
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

Copilot reviewed 16 out of 25 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/test.yml
Comment thread .github/workflows/security.yml
Comment thread spec/fixtures/projects/README.md Outdated
@robzolkos robzolkos force-pushed the fix-project-response-schedule-dates branch from 5bf4cdf to 5fd2080 Compare May 7, 2026 21:23
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file conformance Conformance test suite and removed github-actions Pull requests that update GitHub Actions labels May 7, 2026
@robzolkos robzolkos changed the title Add project schedule dates to SDK project models Add project schedule dates to SDK models May 7, 2026
@robzolkos robzolkos force-pushed the fix-project-response-schedule-dates branch from 5fd2080 to c4bf362 Compare May 7, 2026 21:33
Copilot AI review requested due to automatic review settings May 7, 2026 21:33
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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conformance Conformance test suite dependencies Pull requests that update a dependency file 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