Projects

envless.projects.update()

Rename a project or change its slug

def update(
    slug: str,
    patch: ProjectPatch,
    *,
    product: str | None = None,
    timeout: float | None = None,
) -> ProjectResource

Partial update of name and slug. Send only the fields you want changed. Uniqueness for a new slug is checked inside the project own product, and product= may still be needed just to resolve which project you meant.

The new slug is validated as sent rather than slugified, so it must already match ^[a-z0-9]+(?:-[a-z0-9]+)*$ or you get 400. There is no product field in the patch: projects cannot be moved between products over the API, and icons are not settable here either.

Example

from envless import envless

project = envless.projects.update(
    'api',
    {'name': 'API Gateway', 'slug': 'api-gateway'},
    product='billing',
)

print(project['slug'])

Parameters

ParameterTypeRequiredDescription
slugstrYesCurrent project slug, or the project uniqueId.
patch['name']strNoNew project name.
patch['slug']strNoNew slug, which must already be in valid slug form.
productstrNoProduct slug used to disambiguate an ambiguous project slug.
timeoutfloatNoSeconds each attempt of this call may take, the response body included, before it raises EnvlessNetworkError with is_timeout set. Overrides the client's timeout for this call, and 0 turns the limit off.

Returns

ProjectResource reflecting the stored record after the patch.

Worth knowing

  • A 409 project.slug_conflict means another project in the same product already owns the new slug.
  • A missing or ambiguous project carries project.not_found or project.ambiguous_product, but the update itself answers 400, 404 and 409 with the generic request.invalid, request.not_found and request.conflict, so read message for the reason.

Required scopes

projects:write

Underlying endpoint

PATCH /projects/{slug}

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

In TypeScript

envless.projects.update()

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