Variables

Envless.variables.get

Read one variable by name

def get(project, environment, name, product: nil, timeout: nil)

Reads one live variable by name inside an environment. Matching ignores case, so API_KEY, api_key and Api_Key all resolve to the same variable, and the response carries the name with its stored casing. This route has no id fallback, use get_by_id when you hold an id.

The SDK URL encodes the name for you. In practice nothing needs it, since every write path enforces ^[A-Za-z_][A-Za-z0-9_]*$ and only legacy rows written before that rule can hold a character that would need escaping. value and defaultValue are returned untouched, which means ciphertext.

A missing project answers 404 project.not_found, while a missing environment and a missing variable both answer 404 with the generic request.not_found, so treat any 404 as one case through not_found? instead of branching on a code.

Example

ruby
require "envless/sdk"

variable = Envless.variables.get(
  "api",
  "production",
  "STRIPE_SECRET_KEY"
)

puts "#{variable[:id]} #{variable[:updatedAt]}"

Parameters

ParameterTypeRequiredDescription
projectStringYesProject slug the environment belongs to.
environmentStringYesEnvironment slug the variable lives in.
nameStringYesVariable name, matched without regard to case.
product:String | SymbolNoProduct slug, needed when the project slug is not unique in the workspace.
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

variable_resource with the ciphertext value and defaultValue, plus type, visibility, required and environmentId.

Worth knowing

  • isSecret is stored server side but never appears in the response, so you cannot read it back on any route.
  • Keep the id and updatedAt you get here if you plan to call apply later, both feed the baseline.

Required scopes

variables:read

Underlying endpoint

GET /projects/{slug}/environments/{environmentSlug}/variables/{name}

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

In TypeScript

envless.variables.get()

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