Variables

$envless->variables->updateById()

Patch one variable by id

php
/**
 * @param VariablePatch $patch
 * @return VariableResource
 */
public function updateById(
    string $id,
    array $patch,
    int|float|null $timeout = null,
): array

Patches one variable by id, with the same body and the same semantics as update. This is the better call for a sync client that already tracks ids, since it survives renames and needs no project or environment lookup.

value and defaultValue must be ciphertext when present, null clears defaultValue, and omitting a field leaves it untouched.

Note the ordering quirk, which is the reverse of the name addressed route: the variable is looked up before the ciphertext is validated, so a malformed value against an unknown id returns 404 rather than 400.

Example

php
use Envless\Envless;

$envless = new Envless();

$id = 'a7f2c1e0-8b4d-4c11-9f3a-2d5e6b7c8d90';
$variable = $envless->variables->updateById($id, ['required' => false]);

echo $variable['name'], $variable['required'] ? ' required' : '', PHP_EOL;

Parameters

ParameterTypeRequiredDescription
$idstringYesVariable id from a list response or a webhook payload.
$patchVariablePatchYesThe fields below, as one array.
$patch['name']stringNoNew name, matching ^[A-Za-z_][A-Za-z0-9_]*$ and 1 to 100 characters, rejected with 409 when another live variable holds it, compared without regard to case.
$patch['value']stringNoReplacement ciphertext from Envless::encryptValue(), prefixed v1: or v2:.
$patch['type']stringNoOne of the Envless\Constants\VariableType values.
$patch['isSecret']boolNoMarks or unmarks the variable as a secret, which the example feed reports as secret. Stored, but not echoed in the response.
$patch['visibility']stringNoOne of the Envless\Constants\VariableVisibilityLevels values.
$patch['required']boolNoToggles whether the variable is required for the environment.
$patch['defaultValue']string|nullNoReplacement ciphertext fallback, or null to clear it.
$timeoutint|floatNoSeconds each attempt of this call may take, the response body included, before it throws Envless\Exception\NetworkException with isTimeout() true. Overrides the client's timeout for this call, and 0 turns the limit off.

Returns

VariableResource for the patched variable, values still ciphertext.

Worth knowing

  • This route is the only rename path that does not depend on knowing the project and environment slugs.
  • A rename is checked locally before anything is sent. The new name must be 1 to 100 characters of letters, numbers and underscores, and it must not start with a number. Case is kept exactly as you type it, and a local refusal throws Envless\Exception\ApiException carrying request.body_invalid.

Required scopes

variables:write

Underlying endpoint

PATCH /variables/{id}

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

In TypeScript

envless.variables.updateById()

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