Skip to content

Fix GetProjectTimeline path from /buckets/ to /projects/#78

Merged
jeremy merged 4 commits intomainfrom
timeline-api-endpoints
Feb 5, 2026
Merged

Fix GetProjectTimeline path from /buckets/ to /projects/#78
jeremy merged 4 commits intomainfrom
timeline-api-endpoints

Conversation

@jeremy
Copy link
Copy Markdown
Member

@jeremy jeremy commented Feb 5, 2026

Summary

  • Fix: GetProjectTimeline Smithy spec used /buckets/{projectId}/timeline.json instead of /projects/{projectId}/timeline.json — a pattern-matching error from the original transcription. Audited all other @http URIs; this was the only discrepancy.
  • Systemic fix: Add requestPath assertion to conformance test infrastructure so URL path correctness is validated at CI time (26 tests, up from 23).
  • Regenerated all SDKs (Go, TypeScript, Ruby) and fixed the Ruby test stub.

Closes #75

Test plan

  • make check passes (Smithy, Go, TypeScript, Ruby, conformance)
  • All 26 conformance tests pass, including 3 new path tests
  • Verified /projects/ path propagated to all generated clients

The Smithy spec incorrectly used /buckets/{projectId}/timeline.json
instead of /projects/{projectId}/timeline.json. This was a
pattern-matching error — most bucket-scoped resources use /buckets/,
but timeline is a project-level resource under /projects/.

Audited all other @http URIs against bc3-api docs; this was the only
discrepancy.
Conformance tests validated behavior (status codes, retries, pagination)
but not path correctness — the gap that allowed the /buckets/ vs
/projects/ bug. The new requestPath assertion verifies the SDK
constructs correct URL paths at CI time.

Adds three path tests for timeline/reports operations (26 total, up
from 23). Also adds GetProjectTimeline, GetProgressReport, and
GetPersonProgress operation handlers to the conformance runner.
Copilot AI review requested due to automatic review settings February 5, 2026 09:22
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

This PR fixes a critical bug where the GetProjectTimeline operation used an incorrect URL path /buckets/{projectId}/timeline.json instead of the correct /projects/{projectId}/timeline.json. The fix updates the Smithy specification, regenerates all three SDKs (Go, TypeScript, Ruby), and adds conformance test infrastructure to validate URL path correctness going forward.

Changes:

  • Fixed GetProjectTimeline path in Smithy spec from /buckets/ to /projects/
  • Added requestPath assertion type to conformance test infrastructure with 3 new path validation tests
  • Regenerated all three SDKs (Go, TypeScript, Ruby) with the corrected path

Reviewed changes

Copilot reviewed 7 out of 17 changed files in this pull request and generated no comments.

Show a summary per file
File Description
spec/basecamp.smithy Updated GetProjectTimeline HTTP URI from /buckets/ to /projects/
typescript/src/generated/services/timeline.ts Changed GET path from /buckets/ to /projects/
typescript/src/generated/services/index.ts Reorganized export order (TimelineService moved)
typescript/src/generated/schema.d.ts Moved GetProjectTimeline path definition from /buckets/ to /projects/ section
typescript/src/generated/path-mapping.ts Updated path-to-operation mapping
typescript/src/generated/openapi-stripped.json Moved endpoint definition to correct path section
typescript/src/generated/metadata.json Updated generation timestamp
ruby/test/basecamp/services/timeline_service_test.rb Updated test stub to use /projects/ path
ruby/lib/basecamp/generated/types.rb Updated generation timestamp
ruby/lib/basecamp/generated/services/timeline_service.rb Changed from bucket_path helper to direct /projects/ path
ruby/lib/basecamp/generated/metadata.json Updated generation timestamp
openapi.json Moved GetProjectTimeline endpoint definition from /buckets/ to /projects/
go/pkg/generated/client.gen.go Updated NewGetProjectTimelineRequest to construct /projects/ path
go/pkg/basecamp/url-routes.json Updated route pattern from /buckets/ to /projects/
conformance/tests/paths.json Added 3 new path validation tests
conformance/schema.json Added requestPath assertion type
conformance/runner/go/main.go Implemented requestPath assertion and added operation handlers

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

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3066962e04

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread conformance/tests/paths.json
Adds GetProjectTimeline, GetProgressReport, and GetPersonProgress
operation mappings plus the requestPath assertion handler so the Ruby
runner can execute the new paths.json tests.
@jeremy jeremy merged commit 3dda906 into main Feb 5, 2026
21 checks passed
@jeremy jeremy deleted the timeline-api-endpoints branch February 5, 2026 09:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Timeline API endpoints use incorrect URL paths

2 participants