API keys

Envless.keys.list

List API keys in the workspace

def list(limit: nil, offset: nil, search: nil, order: nil, timeout: nil)

Returns one page of the workspace API keys. No read ever exposes a secret or its hash, so the only identifying value on a row is prefix, the non secret leading characters of the credential. Match on that when you need to line a row up against a key you already hold.

Revoked keys are soft-deleted and are excluded from this list permanently, so the page counts live keys only and never doubles as an audit trail.

Ordering defaults to name, A to Z. order: set to asc or desc switches to createdAt, oldest or newest first, and any other value, including a typo, falls back to name order without complaint. search: matches name and prefix and nothing else.

Example

ruby
require "envless/sdk"

page = Envless.keys.list(search: "ci", limit: 50, order: "desc")

page.items.each do |key|
  puts "#{key[:prefix]} #{key[:active]} #{key[:lastUsedAt]}"
end

Parameters

ParameterTypeRequiredDescription
limit:IntegerNoRows per page, a whole number from 1 to 100.
offset:IntegerNoWhole number of keys to skip before the page starts.
search:String | SymbolNoCase insensitive substring match against name and prefix.
order:"name" | "asc" | "desc"NoDefaults to name, which sorts A to Z. Pass asc for oldest first or desc for newest first on createdAt.
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

Page[key_resource] with items and a pagination envelope counting the full filtered set.

Reads the keys collection. list returns one page as an Envless::Page with items and pagination, list_all collects every page into an array, and iterate yields one item at a time to a block, fetching the next page only when it gets there. Without a block, iterate returns an Enumerator.

Worth knowing

  • A key fenced to specific projects cannot call this at all. The endpoint refuses it with 403 auth.key_project_restricted, and so do keys.get, keys.update and keys.delete. keys.create is the only key method a fenced key keeps, and there projectIds must be a non empty subset of the caller's own fence. Reading the list needs a key with no fence.
  • Holding keys:read does not open the route for a fenced key. The scope is checked first, so a fenced key without it sees 403 auth.scope_missing and a fenced key with it sees 403 auth.key_project_restricted.
  • prefix is safe to log. scopes on each row is the effective map after clamping, not what was requested.

Required scopes

keys:read

Underlying endpoint

GET /keys

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

In TypeScript

envless.keys.list()

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