Projects

$envless->projects->get()

Fetch one project by slug or id

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

Reads a single project. A UUID shaped slug is resolved as a uniqueId first and only then as a slug, which is why ids never need a product hint.

Slugs do need one. Because slugs are unique per product, a slug that exists in two products fails with 409 project.ambiguous_product and you must retry with product:. Projects outside a restricted key allowlist, and projects inside private products with no grant, come back as 404 rather than 403, so absence and denial look identical here.

Example

php
use Envless\Envless;

$envless = new Envless();

$project = $envless->projects->get('api', product: 'billing');

echo $project['id'], ' ', $project['product']['name'] ?? '', PHP_EOL;

Parameters

ParameterTypeRequiredDescription
$slugstringYesProject slug, or the project uniqueId.
$productstringNoProduct slug used to disambiguate a project slug that exists in more than one product.
$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

ProjectResource including the product array the project belongs to.

Worth knowing

  • product: is matched against product slugs only. A product uniqueId there yields 404.
  • A missing project is 404 project.not_found and an ambiguous slug is 409 project.ambiguous_product.
  • A project sitting beyond the plan allowance fails with 402 and stays locked until the workspace upgrades.

Required scopes

projects:read

Underlying endpoint

GET /projects/{slug}

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

In TypeScript

envless.projects.get()

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