From 8476859bcf1aa0b9f9cf6ffa38e2449d6d5cadbc Mon Sep 17 00:00:00 2001 From: Rob Zolkos Date: Fri, 17 Apr 2026 09:05:07 -0400 Subject: [PATCH 1/2] Return the updated column on PUT /:account_slug/boards/:board_id/columns/:column_id The JSON response was `204 No Content`, forcing clients to follow up with a GET. The Smithy contract that the SDKs are generated from already declares `UpdateColumn` returns a Column, so the server was out of sync with the documented shape. Render `show` for the JSON format so PUT returns the same payload as GET. The Turbo Stream format is unchanged. Updated test asserts the returned body matches the updated state. Updated API docs to describe the 200 response shape. --- app/controllers/boards/columns_controller.rb | 2 +- docs/api/sections/columns.md | 2 +- test/controllers/boards/columns_controller_test.rb | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/controllers/boards/columns_controller.rb b/app/controllers/boards/columns_controller.rb index d0bd13c551..cd07562755 100644 --- a/app/controllers/boards/columns_controller.rb +++ b/app/controllers/boards/columns_controller.rb @@ -29,7 +29,7 @@ def update respond_to do |format| format.turbo_stream - format.json { head :no_content } + format.json { render :show } end end diff --git a/docs/api/sections/columns.md b/docs/api/sections/columns.md index c4fc35d3be..481ad50351 100644 --- a/docs/api/sections/columns.md +++ b/docs/api/sections/columns.md @@ -170,7 +170,7 @@ __Request:__ __Response:__ -Returns `204 No Content` on success. +Returns `200 OK` with the updated column in the same shape as `GET /:account_slug/boards/:board_id/columns/:column_id`. ## `DELETE /:account_slug/boards/:board_id/columns/:column_id` diff --git a/test/controllers/boards/columns_controller_test.rb b/test/controllers/boards/columns_controller_test.rb index 664e91ea15..45c31724c7 100644 --- a/test/controllers/boards/columns_controller_test.rb +++ b/test/controllers/boards/columns_controller_test.rb @@ -86,8 +86,12 @@ class Boards::ColumnsControllerTest < ActionDispatch::IntegrationTest put board_column_path(column.board, column), params: { column: { name: "Updated Name" } }, as: :json - assert_response :no_content + assert_response :success assert_equal "Updated Name", column.reload.name + + json = @response.parsed_body + assert_equal column.id, json["id"] + assert_equal "Updated Name", json["name"] end test "destroy as JSON" do From f3957557bffc5932df7fdea26a3665468bdbe5dd Mon Sep 17 00:00:00 2001 From: Rob Zolkos Date: Fri, 17 Apr 2026 09:35:19 -0400 Subject: [PATCH 2/2] Update flat JSON column response test for 200 body MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirrors the nested-params test in boards/columns_controller_test.rb — flat JSON PUTs now return the updated column as the body instead of 204 No Content. --- test/controllers/api/flat_json_params_test.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/controllers/api/flat_json_params_test.rb b/test/controllers/api/flat_json_params_test.rb index 77a74f454e..be8c59c8af 100644 --- a/test/controllers/api/flat_json_params_test.rb +++ b/test/controllers/api/flat_json_params_test.rb @@ -127,8 +127,10 @@ class FlatJsonParamsTest < ActionDispatch::IntegrationTest put board_column_path(column.board, column), params: { name: "Flat Updated" }, as: :json - assert_response :no_content + assert_response :success assert_equal "Flat Updated", column.reload.name + assert_equal column.id, @response.parsed_body["id"] + assert_equal "Flat Updated", @response.parsed_body["name"] end test "create step with flat JSON" do