---
title: "App"
description: "The `App` entity."
section: "Reference"
group: "Types"
order: 19
---

## Definition

```ts
interface App {
  id: string;
  workspaceId: string;
  name: string;
  description: string | null;
  handle: string | null;
  defaultVersionId: string | null;
  status: "draft" | "live";
  publicAccess: boolean;
  pagesProjectId: string | null;
  apiKeyId: string | null;
  config: {
    [x: string]: unknown;
    nodeVersion?: string | undefined;
    env?: Record<string, string> | undefined;
  };
  createdBy: string;
  deletedAt: string | null;
  retentionTier: "short" | "medium" | "long" | "none" | null;
  createdAt: string;
  updatedAt: string;
}
```

## Fields

| Field              | Type                                                                                                      | Notes                                                                                                                                               |
| ------------------ | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | `string`                                                                                                  | `readonly` `required`                                                                                                                               |
| `workspaceId`      | `string`                                                                                                  | `required` — Workspace that owns this app.                                                                                                          |
| `name`             | `string`                                                                                                  | `required` — Human-readable name shown in the UI.                                                                                                   |
| `description`      | `string \| null`                                                                                          | `required` — Optional longer-form description.                                                                                                      |
| `handle`           | `string \| null`                                                                                          | `required` — URL slug used in the deployed hostname ({handle}.aeontel.app).                                                                         |
| `defaultVersionId` | `string \| null`                                                                                          | `required` — App version served as the default; null until first deploy.                                                                            |
| `status`           | `"draft" \| "live"`                                                                                       | `required` — Current lifecycle status of the app.                                                                                                   |
| `publicAccess`     | `boolean`                                                                                                 | `required` — When `true`, the deployed app is reachable without auth from any visitor; when `false`, the route worker enforces auth before serving. |
| `pagesProjectId`   | `string \| null`                                                                                          | `required` — Cloudflare Pages project ID backing deploys, if provisioned.                                                                           |
| `apiKeyId`         | `string \| null`                                                                                          | `required` — API key the app uses to call Aeontel from its runtime.                                                                                 |
| `config`           | `{ [x: string]: unknown; nodeVersion?: string \| undefined; env?: Record<string, string> \| undefined; }` | `required` — Per-app runtime configuration (node version, env, etc.).                                                                               |
| `createdBy`        | `string`                                                                                                  | `required` — User who created the app.                                                                                                              |
| `deletedAt`        | `string \| null`                                                                                          | `required` — ISO-8601 timestamp of soft-delete; null while active. Cleanup worker hard-deletes once `deletedAt + retentionTier.days` passes.        |
| `retentionTier`    | `"short" \| "medium" \| "long" \| "none" \| null`                                                         | `required` — Retention tier snapshotted at delete time. `short`=7d, `medium`=30d, `long`=90d, `none`=never. Null while active.                      |
| `createdAt`        | `string`                                                                                                  | `readonly` `required` — ISO-8601 timestamp of creation.                                                                                             |
| `updatedAt`        | `string`                                                                                                  | `readonly` `required` — ISO-8601 timestamp of the last update.                                                                                      |
