# Published app

The publisher/console view of a published app: pointer, listing, and the live-derived URL + blockers.

**Attributes** (`PublishedAppDto`)

- `id` · `string` · read-only — Identifier of the published app.
- `accountId` · `string` · read-only — Identifier of the owning account.
- `projectId` · `string` · required — Identifier of the project the pointed-at service lives in.
- `environmentName` · `string` · required — Name of the environment the pointed-at service lives in (by name, not id).
- `serviceName` · `string` · required — Name of the exposed web service this listing points at (by name, not id).
- `urlChoice` · `string` · required — Either 'generated' (the koo URL from the service's status) or one of the service's active custom domain hostnames.
- `slug` · `string` · required — URL slug of the app under the owner's handle (/@handle/:slug).
- `profile` · `object` · required
  - `displayName` · `string` · optional — Public pretty name shown on discover/hero and the showcase page. Falls back to the app slug when unset.
  - `tagline` · `string` · optional — Short one-line summary shown on the app card.
  - `description` · `string` · optional — Long-form description for the app showcase page.
  - `images` · `string <uri>[]` · read-only — Ordered gallery of media URLs; images[0] is the cover used by Discover cards and OG.
  - `youtubeId` · `string` · optional — YouTube video id embedded as a demo/trailer.
  - `videoCover` · `boolean` · required — When a video is set, the cover shown on cards and the app page is the video's YouTube thumbnail unless this is false (then the first gallery image is used). The cover URL is resolved client-side.
  - `category` · `string` · optional — Category the app is listed under in the showcase.
  - `tags` · `string[]` · required — Freeform tags used for search and discovery.
  - `links` · `object` · required — External links shown on the app showcase page.
    - `website` · `string <uri>` · optional — URL of the app's marketing or landing website.
    - `repo` · `string <uri>` · optional — URL of the source code repository.
    - `appStore` · `string <uri>` · optional — Apple App Store listing URL.
    - `playStore` · `string <uri>` · optional — Google Play Store listing URL.
    - `steam` · `string <uri>` · optional — Steam store page URL.
- `url` · `string <uri>` · read-only — The live-derived public URL to visit, when resolvable (absent while degraded with no fallback).
- `blockers` · `"service_missing" | "not_exposed" | "domain_missing"[]` · read-only — Live-derived degradations on the pointer — the honest reasons shown to the owner. Empty when healthy.
- `createdAt` · `string <date-time>` · read-only — When the app was published.
- `updatedAt` · `string <date-time>` · read-only — When the app or its listing was last updated.

**Example `PublishedAppDto`**

```json
{
  "id": "pub_01example0000000000000000x",
  "accountId": "acct_01example0000000000000000x",
  "projectId": "proj_01example0000000000000000x",
  "environmentName": "example",
  "serviceName": "example",
  "urlChoice": "example",
  "slug": "my-app",
  "profile": {
    "displayName": "My app",
    "tagline": "example",
    "description": "example",
    "images": [
      "https://example.com"
    ],
    "youtubeId": "youtube_01example0000000000000000x",
    "videoCover": true,
    "category": "example",
    "tags": [
      "example"
    ],
    "links": {
      "website": "https://example.com",
      "repo": "https://example.com",
      "appStore": "https://example.com",
      "playStore": "https://example.com",
      "steam": "https://example.com"
    }
  },
  "url": "https://example.com",
  "blockers": [
    "service_missing"
  ],
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z"
}
```
