From 8ccaf82a45b62118c4908127f0ff6e8b1085e806 Mon Sep 17 00:00:00 2001 From: Barry Hess Date: Tue, 29 Jul 2025 16:07:40 -0500 Subject: [PATCH] Add restart endpoint for services. Service restart is now available via the API! https://api-docs.render.com/reference/restart-service --- README.md | 1 + lib/render_api/clients/services.rb | 4 ++++ spec/features/services_spec.rb | 29 +++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/README.md b/README.md index 010bdfb..97f7ea2 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ end client.services.create(name: "my-new-service", ...) # https://api-docs.render.com/reference/update-service client.services.update(service_id, name: "my-new-service", ...) +client.services.restart(service_id) client.services.delete(service_id) client.services.suspend(service_id) diff --git a/lib/render_api/clients/services.rb b/lib/render_api/clients/services.rb index d10383a..5907f85 100644 --- a/lib/render_api/clients/services.rb +++ b/lib/render_api/clients/services.rb @@ -43,6 +43,10 @@ def resume(service_id) endpoint.post("/services/#{service_id}/resume") end + def restart(service_id) + endpoint.post("/services/#{service_id}/restart") + end + def scale(service_id, num_instances:) endpoint.post( "/services/#{service_id}/scale", diff --git a/spec/features/services_spec.rb b/spec/features/services_spec.rb index 94b8873..486611f 100644 --- a/spec/features/services_spec.rb +++ b/spec/features/services_spec.rb @@ -338,6 +338,35 @@ end end + describe "restart" do + let(:id) { "my-service" } + + before :each do + stub_request(:post, "https://api.render.com/v1/services/#{id}/restart") + .to_return(status: 202) + end + + it "returns true if successful" do + response = subject.restart(id) + + expect(response).to eq(true) + end + + it "raises an exception if the request failed" do + stub_request(:post, "https://api.render.com/v1/services/#{id}/restart") + .to_return_json( + status: 404, + body: { + "id" => "not-found", + "message" => "Not Found" + } + ) + + expect { subject.restart(id) } + .to raise_error(RenderAPI::RequestError) + end + end + describe "scale" do let(:id) { "my-service" }