Update dock tool creation to current bucket-scoped API#327
Conversation
Spec Change Impact
SDKs needing updates:
|
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates the CloneTool operation to use a bucket-scoped endpoint across all SDKs and conformance tooling.
Changes:
- Switched CloneTool endpoint from
/dock/tools.jsonto/buckets/{bucketId}/dock/tools.jsonand threadedbucketIdthrough generated clients. - Updated language SDK method signatures (TS/Swift/Ruby/Python/Kotlin/Go) and related tests/conformance runners.
- Regenerated OpenAPI/Smithy-derived artifacts (schema, path mapping, metadata).
Reviewed changes
Copilot reviewed 12 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| typescript/tests/services/tools.test.ts | Updates ToolsService clone test to include bucketId and verify bucket-scoped path. |
| typescript/src/generated/services/tools.ts | Changes clone signature to accept bucketId and posts to bucket-scoped endpoint. |
| typescript/src/generated/services/index.ts | Reorders/relocates ToolsService export. |
| typescript/src/generated/schema.d.ts | Adds bucket-scoped CloneTool path/operation typing and removes flat path. |
| typescript/src/generated/path-mapping.ts | Maps CloneTool to the bucket-scoped path and removes flat mapping. |
| typescript/src/generated/openapi-stripped.json | Adds bucket-scoped CloneTool path and removes the flat endpoint. |
| typescript/src/generated/metadata.json | Refreshes generated timestamp and relocates CloneTool retry metadata. |
| swift/Sources/Basecamp/Generated/Services/ToolsService.swift | Updates clone signature to include bucketId and uses bucket-scoped path. |
| spec/basecamp.smithy | Updates CloneTool HTTP URI to include bucketId label and adds required bucketId to input. |
| ruby/test/basecamp/services/tools_service_test.rb | Updates clone test to stub bucket-scoped endpoint and pass bucket_id. |
| ruby/lib/basecamp/generated/types.rb | Updates generated timestamp comment. |
| ruby/lib/basecamp/generated/services/tools_service.rb | Updates clone method to require bucket_id and post to bucket-scoped endpoint. |
| ruby/lib/basecamp/generated/metadata.json | Refreshes generated timestamp and relocates CloneTool retry metadata. |
| python/src/basecamp/generated/services/tools.py | Updates sync/async clone methods to require bucket_id and use bucket-scoped path. |
| openapi.json | Moves CloneTool endpoint under /{accountId}/buckets/{bucketId}/dock/tools.json. |
| kotlin/sdk/src/commonMain/kotlin/com/basecamp/sdk/generated/services/tools.kt | Updates clone signature to include bucketId and uses bucket-scoped path. |
| kotlin/conformance/src/main/kotlin/com/basecamp/sdk/conformance/Main.kt | Reads bucketId from path params for CloneTool conformance dispatch. |
| go/pkg/generated/client.gen.go | Regenerates Go client to require bucketId for CloneTool request builders and interfaces. |
| go/pkg/basecamp/tools_test.go | Adds test asserting Tools.Create posts to bucket-scoped dock path. |
| go/pkg/basecamp/tools.go | Changes ToolsService.Create to accept bucketID and calls generated CloneTool with bucketId. |
| conformance/tests/paths.json | Updates CloneTool conformance case to include bucket-scoped path and pathParams.bucketId. |
| conformance/runner/typescript/runner.test.ts | Updates CloneTool runner to pass bucketId to client.tools.clone. |
| conformance/runner/ruby/runner.rb | Updates CloneTool runner to pass bucket_id from path params. |
| conformance/runner/python/runner.py | Updates CloneTool runner to pass bucket_id from path params. |
| conformance/runner/go/main.go | Updates CloneTool runner to pass bucketID into account.Tools().Create. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Fixed — addressed the Go review feedback by deriving the expected bucket path from bucketID and recording the destination bucket in Tools.Create operation metadata. |
There was a problem hiding this comment.
2 issues found across 25 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
Fixed — addressed the issues identified by cubic: CloneTool operation metadata uses the destination bucket, and the Python conformance runner accepts omitted CloneTool titles. |
Review carefully before merging. Consider a major version bump. |
7bc2869 to
7c6551d
Compare
Summary
CreateToolposts to/{accountId}/buckets/{bucketId}/dock/tools.jsonwithtool_typeand optionaltitle.Ref: basecamp/basecamp-cli#471
Source of truth
Validated against BC3
origin/masterat the SDK provenance revision (ae96a694deda4a0a5791be0a3b92acbc3509b61b, 2026-06-01). Current BC3 API tests create dock tools withtool_type; the SDK provenance is updated to that revision.SDK API shape
Tools().Create(ctx, bucketID, toolType, opts)client.tools.create(bucketId, { toolType, title? })account.tools.create(bucket_id:, tool_type:, title:)account.tools.create(bucket_id=..., tool_type=..., title=...)account.tools.create(bucketId, CreateToolBody(toolType = ..., title = ...))tools.create(bucketId:request:)withCreateToolRequest(toolType:title:)Verification
make smithy-checkmake go-checkmake ts-checkmake rb-checkmake py-checkmake kt-checkmake url-routes-checkmake provenance-checkUnblocks the SDK portion of
basecamp-cli#471.