Skip to content

Update dock tool creation to current bucket-scoped API#327

Open
robzolkos wants to merge 5 commits into
basecamp:mainfrom
robzolkos:fix/tools-create-bucket-scope-20260601145434
Open

Update dock tool creation to current bucket-scoped API#327
robzolkos wants to merge 5 commits into
basecamp:mainfrom
robzolkos:fix/tools-create-bucket-scope-20260601145434

Conversation

@robzolkos
Copy link
Copy Markdown
Collaborator

@robzolkos robzolkos commented Jun 1, 2026

Summary

  • Updates dock tool creation to the current BC3 API: CreateTool posts to /{accountId}/buckets/{bucketId}/dock/tools.json with tool_type and optional title.
  • Renames the SDK operation from clone-shaped APIs to create-shaped APIs across Go, TypeScript, Ruby, Swift, Kotlin, and Python.
  • Regenerates OpenAPI, route metadata, generated services, SDK metadata, and conformance coverage from the updated Smithy spec.

Ref: basecamp/basecamp-cli#471

Source of truth

Validated against BC3 origin/master at the SDK provenance revision (ae96a694deda4a0a5791be0a3b92acbc3509b61b, 2026-06-01). Current BC3 API tests create dock tools with tool_type; the SDK provenance is updated to that revision.

SDK API shape

  • Go: Tools().Create(ctx, bucketID, toolType, opts)
  • TypeScript: client.tools.create(bucketId, { toolType, title? })
  • Ruby: account.tools.create(bucket_id:, tool_type:, title:)
  • Python: account.tools.create(bucket_id=..., tool_type=..., title=...)
  • Kotlin: account.tools.create(bucketId, CreateToolBody(toolType = ..., title = ...))
  • Swift: tools.create(bucketId:request:) with CreateToolRequest(toolType:title:)

Verification

  • make smithy-check
  • make go-check
  • make ts-check
  • make rb-check
  • make py-check
  • make kt-check
  • make url-routes-check
  • make provenance-check
  • conformance runners: Go, TypeScript, Python, Ruby, Kotlin

Unblocks the SDK portion of basecamp-cli#471.

Copilot AI review requested due to automatic review settings June 1, 2026 19:13
@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 conformance Conformance test suite labels Jun 1, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

Spec Change Impact

  • Modified Operations: Updated the dock tool creation to align with the current bucket-scoped API.
  • No Added or Removed Operations: No new operations introduced, and no operations were removed.
  • No Added or Removed Types/Resources: Types and resources remain unchanged.
  • Breaking Change: No. This does not remove any operations or fields, so it's not a breaking change.
  • SDK Regeneration Required: All SDKs must be regenerated to reflect the updated specification.

SDKs needing updates:

  • Go
  • TypeScript
  • Ruby
  • Kotlin
  • Swift

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

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.json to /buckets/{bucketId}/dock/tools.json and threaded bucketId through 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.

Comment thread go/pkg/basecamp/tools_test.go Outdated
Comment thread go/pkg/basecamp/tools.go Outdated
@robzolkos
Copy link
Copy Markdown
Collaborator Author

Fixed — addressed the Go review feedback by deriving the expected bucket path from bucketID and recording the destination bucket in Tools.Create operation metadata.

@github-actions github-actions Bot added bug Something isn't working and removed enhancement New feature or request labels Jun 1, 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.

2 issues found across 25 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread conformance/runner/python/runner.py Outdated
Comment thread go/pkg/basecamp/tools.go Outdated
Copilot AI review requested due to automatic review settings June 1, 2026 19:23
@robzolkos
Copy link
Copy Markdown
Collaborator Author

Fixed — addressed the issues identified by cubic: CloneTool operation metadata uses the destination bucket, and the Python conformance runner accepts omitted CloneTool titles.

@github-actions github-actions Bot added the breaking Breaking change to public API label Jun 1, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

⚠️ Potential breaking changes detected:

  • Renamed and altered the signature of 'Create' in Go SDK: added a new required 'bucketID' parameter.
  • Renamed and altered the signature of 'clone' in Kotlin SDK: added a new required 'bucketId' parameter.
  • Renamed and altered the signature of 'clone' in Swift SDK: added a new required 'bucketId' parameter.
  • Removed '/dock/tools.json' endpoint definition and replaced it with '/buckets/{bucketId}/dock/tools.json' in TypeScript SDK, requiring 'bucketId' as a path parameter.

Review carefully before merging. Consider a major version bump.

@github-actions github-actions Bot added the dependencies Pull requests that update a dependency file label Jun 1, 2026
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.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@robzolkos robzolkos changed the title Fix tools clone bucket-scoped endpoint Update dock tool creation to current bucket-scoped API Jun 1, 2026
@robzolkos robzolkos force-pushed the fix/tools-create-bucket-scope-20260601145434 branch from 7bc2869 to 7c6551d Compare June 3, 2026 18:10
@github-actions github-actions Bot removed the bug Something isn't working label Jun 3, 2026
@github-actions github-actions Bot added the enhancement New feature or request label Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking Breaking change to public API 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