Skip to content

Add project schedule dates to SDK models#302

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

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

Conversation

@robzolkos

@robzolkos robzolkos commented May 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add start_date and end_date to the shared Project response 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
  • update API provenance and API version constants to the current bc3 HEAD
  • set the Go language version to 1.26 and pin the patch toolchain to go1.26.4

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

Why

BC3 project API responses include top-level start_date / end_date for scheduled projects, but the SDK spec only modeled schedule dates inside schedule_attributes for create/update requests. This left every generated SDK able to send project schedule dates on update, but unable to read them back from project responses.

The upstream API implementation renders these fields from the project schedule on the project JSON response, so the shared Project response shape is the SDK contract location that keeps all generated SDKs aligned.

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

  • make sync-status
  • make smithy-build
  • make -C go generate && make url-routes && make ts-generate && make ts-generate-services && make rb-generate && make rb-generate-services && make swift-generate && make kt-generate-services && make py-generate
  • make sync-spec-version-check provenance-check sync-api-version-check smithy-check go-check-drift kt-check-drift py-check-drift
  • cd go && go test ./pkg/basecamp -run 'TestProject_|TestDockItem|TestCreateProjectRequest|TestUpdateProjectRequest|TestProjectsService_Update'
  • cd typescript && npm test -- --run tests/services/projects.test.ts
  • cd python && uv run pytest tests/services/test_projects.py
  • cd kotlin && ./gradlew :basecamp-sdk:jvmTest --tests com.basecamp.sdk.ProjectsServiceTest
  • make lint-actions

Ruby targeted validation was not completed locally because the bundle dependencies are not installed. Ruby-head CI now uses Ruby head's default Bundler to avoid a Ruby-head Bundler metadata mismatch. Swift targeted validation was not completed on Linux because the existing Swift package needs FoundationNetworking/CoreFoundation availability fixes for this 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

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown

Spec Change Impact

  • Added: projectScheduleDates type/fields to the API models.
  • Modified: Associated operations/resources to include projectScheduleDates.
  • SDK Regeneration Required: All SDKs need updates due to spec changes.
  • Breaking API Change: No breaking changes identified (no operations or fields were removed).

SDKs Needing Updates:

  • Go
  • TypeScript
  • Ruby
  • Kotlin
  • Swift

@github-actions github-actions Bot added the enhancement New feature or request label May 7, 2026

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

Copy link
Copy Markdown

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

Copilot AI left a comment

Copy link
Copy Markdown

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

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown

Sensitive Change Detection (shadow mode)

This PR modifies control-plane files:

  • .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

Copilot AI left a comment

Copy link
Copy Markdown

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

Copilot AI left a comment

Copy link
Copy Markdown

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.

@robzolkos robzolkos force-pushed the fix-project-response-schedule-dates branch from 9137062 to a008956 Compare July 3, 2026 21:47
Copilot AI review requested due to automatic review settings July 3, 2026 21:47

Copilot AI left a comment

Copy link
Copy Markdown

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 23 out of 32 changed files in this pull request and generated 3 comments.

Comment thread go/go.mod Outdated
Comment thread go.work Outdated
Comment thread conformance/runner/go/go.mod Outdated
Copilot AI review requested due to automatic review settings July 3, 2026 21:49

Copilot AI left a comment

Copy link
Copy Markdown

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 23 out of 32 changed files in this pull request and generated no new comments.

@github-actions github-actions Bot added the github-actions Pull requests that update GitHub Actions label Jul 3, 2026
Copilot AI review requested due to automatic review settings July 3, 2026 23:06

Copilot AI left a comment

Copy link
Copy Markdown

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 24 out of 33 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 github-actions Pull requests that update GitHub Actions 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