# client.env

> client.env — the env operations.

`client.env` — the `env` operations.

On `AsyncKindgi` every method is the same, awaited.

## `client.env.list()`

```python signature
list(
    *,
    env_name: str,
    scope_kind: Literal['tenant', 'org', 'project'],
    scope_id: str | UUID | None = None,
    inherit: bool | None = None,
    limit: int | None = None,
    cursor: str | None = None,
    name_prefix: str | None = None,
    timeout: float | None = None,
) -> EnvCollectionPage
```

List env entries. `GET /v1/env`

Cursor-paginated list of env entries at the given `(scope, envName)`. `value` is present (env is non-sensitive by definition).

## `client.env.get()`

```python signature
get(
    name: str,
    /,
    *,
    env_name: str,
    scope_kind: Literal['tenant', 'org', 'project'],
    scope_id: str | UUID | None = None,
    inherit: bool | None = None,
    timeout: float | None = None,
) -> EnvRecord
```

Get one env entry. `GET /v1/env/{name}`

## `client.env.put()`

```python signature
put(
    name: str,
    body: EnvSetRequest | Mapping[str, Any] | None = None,
    /,
    *,
    env_name: str,
    scope_kind: Literal['tenant', 'org', 'project'],
    scope_id: str | UUID | None = None,
    idempotency_key: str | None = None,
    timeout: float | None = None,
    **fields: Any,
) -> EnvRecord
```

Upsert an env entry. `PUT /v1/env/{name}`

Requires the `env:write` capability. Every write bumps `revision`; optional `ifRevision` guards against concurrent updates (409 `env-write-conflict`). Env values aren't secret: they're recorded with each run that uses them. A credential goes in `/v1/secrets`.

## `client.env.delete()`

```python signature
delete(
    name: str,
    /,
    *,
    env_name: str,
    scope_kind: Literal['tenant', 'org', 'project'],
    scope_id: str | UUID | None = None,
    timeout: float | None = None,
) -> EnvDeleteResult
```

Delete an env entry. `DELETE /v1/env/{name}`

Requires the `env:write` capability. Idempotent — unknown key returns `{ deleted: false }`.
