Products

$envless->products->get()

Read one product by slug or id

php
/** @return ProductResource */
public function get(string $slug, int|float|null $timeout = null): array

Reads a single product. Resolution is not a fallback chain: a value shaped like a UUID is looked up as an id only, anything else as a slug only, so a slug that happens to look like a UUID cannot be fetched this way.

A private product the key owner holds no grant on answers a not-found error instead of a permission error, which means a 404 here does not tell you whether the product exists. The response includes locked, computed against the workspace plan, and that is the flag the write methods refuse on.

Example

php
use Envless\Envless;

$envless = new Envless();

$product = $envless->products->get('billing');

if ($product['locked'] ?? false) {
    echo 'beyond the plan allowance, read only', PHP_EOL;
}

Parameters

ParameterTypeRequiredDescription
$slugstringYesProduct slug, or the product uniqueId when the value is UUID shaped.
$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

ProductResource with slug, isPrivate, locked and timestamps.

Worth knowing

  • updatedAt is null on a product that has never been patched.
  • Icons are upload-only from the dashboard, so icon is null for anything created through the API.

Required scopes

products:read

Underlying endpoint

GET /products/{slug}

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

In TypeScript

envless.products.get()

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