Workspace

Envless.workspace.update

Rename the workspace or toggle Virtual Envs

def update(patch = nil, timeout: nil, **fields)

Renames the workspace, changes its slug, or toggles virtual environments. Each field is optional and applied on its own, and an empty patch is accepted and returns the workspace unchanged.

Only name, slug and virtualEnvsEnabled are read. Any other key in the patch is dropped silently rather than rejected, so a misspelled field looks like a successful no-op. The icon cannot be set through the API at all.

Changing slug rewrites every dashboard URL and every exposed environment URL for the workspace, and the old slug is neither reserved nor redirected, so another workspace can claim it. The returned updated_workspace_resource omits createdAt, which Envless.workspace.get does return.

Example

ruby
require "envless/sdk"

workspace = Envless.workspace.update(
  name: "Acme Platform",
  virtualEnvsEnabled: true
)

puts "#{workspace[:slug]} #{workspace[:virtualEnvsEnabled]}"

Parameters

ParameterTypeRequiredDescription
patchworkspace_patchNoThe fields below as one Hash, with Symbol or String keys, in place of the keywords.
name:StringNoNew display name for the workspace.
slug:StringNoNew slug, limited to lowercase letters, digits and single hyphens.
virtualEnvsEnabled:boolNoWorkspace half of the two flag gate on exposed environments.
timeout:Integer | Float | RationalNoSeconds each attempt of this call may take, redirects and the response body included, before it raises Envless::NetworkError with timeout? set. Overrides the client's timeout for this call, and 0 turns the limit off.

Returns

updated_workspace_resource with id, name, slug, icon and virtualEnvsEnabled.

Worth knowing

  • Setting virtualEnvsEnabled to true exposes nothing by itself. Every environment still needs its own expose opt-in.
  • Setting virtualEnvsEnabled to false is a kill switch: every exposed feed in the workspace stops serving at once.
  • A slug another workspace already owns fails with status 409 and the generic request.conflict code, so read the message for the reason.

Required scopes

workspace:write

Underlying endpoint

PATCH /workspace

Request and response schema, every error code, and a live playground.

In TypeScript

envless.workspace.update()

The same method in @goenvless/sdk, with the same request, retries and errors.