> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qumo-deploy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# client.projects

> Projects — the unit of resource ownership and billing within a tenant.

Projects — the unit of resource ownership and billing within a tenant.

Reach it as `client.projects` on a [`QumoClient`](/sdk/reference/client#qumoclient).

### create

```ts theme={null}
create(params: CreateProjectParams): Promise<Project>
```

Creates a project.

Types: [`CreateProjectParams`](/sdk/reference/types#createprojectparams), [`Project`](/sdk/reference/types#project)

### list

```ts theme={null}
list(params?: { tenant_id?: string }): Promise<Project[]>
```

Lists projects. Session callers pass `tenant_id` to choose the workspace;
API-key callers list their own workspace's projects.

Types: [`Project`](/sdk/reference/types#project)

### getUsage

```ts theme={null}
getUsage(projectId: string, params: { metric: string; granularity: "hour" | "day" }): Promise<ProjectUsage>
```

A project's usage of one metric over time.

Types: [`ProjectUsage`](/sdk/reference/types#projectusage)

### getBudget

```ts theme={null}
getBudget(projectId: string): Promise<ProjectBudget>
```

Returns a project's budget.

Types: [`ProjectBudget`](/sdk/reference/types#projectbudget)

### updateBudget

```ts theme={null}
updateBudget(projectId: string, budget: ProjectBudgetUpdate): Promise<ProjectBudget>
```

Changes a project's budget; omitted fields are left unchanged.

Types: [`ProjectBudgetUpdate`](/sdk/reference/types#projectbudgetupdate), [`ProjectBudget`](/sdk/reference/types#projectbudget)

### listAlerts

```ts theme={null}
listAlerts(projectId: string): Promise<BudgetAlert[]>
```

Lists budget and usage-cap alerts that fired for a project.

Types: [`BudgetAlert`](/sdk/reference/types#budgetalert)

### getConnectionLimit

```ts theme={null}
getConnectionLimit(projectId: string): Promise<ConnectionLimit>
```

The project's concurrent-connection cap: the explicit override when set,
otherwise the plan default. Connections are free — billing is per byte —
so this is a safety-net the project owner controls.

Types: [`ConnectionLimit`](/sdk/reference/types#connectionlimit)

### setConnectionLimit

```ts theme={null}
setConnectionLimit(projectId: string, limit: number): Promise<ConnectionLimit>
```

Set the project's concurrent-connection cap. `limit: 0` clears the
override so the plan default applies again; any positive value caps this
project at exactly that many concurrent credentials (including above the
plan default — the cap is a budgeting tool, not a plan gate).

Types: [`ConnectionLimit`](/sdk/reference/types#connectionlimit)

### listSKUBudgets

```ts theme={null}
listSKUBudgets(projectId: string): Promise<SKUBudget[]>
```

Per-SKU budget caps set for the project (SKUs with no row are absent).

Types: [`SKUBudget`](/sdk/reference/types#skubudget)

### getSKUBudget

```ts theme={null}
getSKUBudget(projectId: string, skuKey: string): Promise<SKUBudget>
```

One SKU's budget. An unset SKU returns the zero-value budget rather than
404, so callers can render "unlimited" without a special case.

Types: [`SKUBudget`](/sdk/reference/types#skubudget)

### updateSKUBudget

```ts theme={null}
updateSKUBudget(projectId: string, skuKey: string, update: SKUBudgetUpdate): Promise<SKUBudget>
```

Upsert one SKU's caps. `skuKey` must name a registered SKU (see pricing.listSKUs).

Types: [`SKUBudgetUpdate`](/sdk/reference/types#skubudgetupdate), [`SKUBudget`](/sdk/reference/types#skubudget)

### rename

```ts theme={null}
rename(projectId: string, name: string): Promise<Project>
```

Renames a project.

Types: [`Project`](/sdk/reference/types#project)

### delete

```ts theme={null}
delete(projectId: string): Promise<void>
```

Permanently deletes a project and its keys, identities and budgets.
