# Get an application's graph

`GET https://evohub.io/api/v1/catalog/applications/{id}/graph`

Part of the [Catalog API](https://docs.evohub.io/catalog.md) reference · operationId `getApplicationGraph`.

The application's members and the edges between them (at most 500),
with what they reach outside it named. ConfigMaps and Secrets appear
by name only. While the agent's live report is current, a workload's
pods are drawn under it, each with its own health.

Requires the `catalog:resource:read` scope.

## Authorization

Any one of:

- `bearerKey`
- `headerKey`

Where:

- `bearerKey`: HTTP Bearer — An EvoHub API key (`evohub_…`) as a bearer token.
- `headerKey`: API key in the header `X-API-Key` — An EvoHub API key (`evohub_…`).

## Path parameters

- `id` (string, required, example `app_9c1e3a5b7d9f2b4d6f8a0c2e4b6d8f1a`): The application's ID.

## Responses

### 200 — The graph.

Content type: `application/json`

Type: `object`

- `data` (AppGraph)
  - `application` (Application)
    - `id` (string)
    - `environment_id` (string)
    - `namespace` (string)
    - `provider` (string)
    - `key_source` (string): What grouped it, such as an Argo CD application or a Helm release.
    - `key` (string)
    - `name` (string)
    - `component_id` (string | null)
    - `component_bound_by` (string | null)
    - `owner_hint` (string | null): The team its `evohub.io/team`, `team` or `owner` label names.
    - `status` (string, one of `live`, `missing`, `gone`)
    - `members` (integer)
    - `by_status` (object)
      - Other keys: integer
    - `kinds` (object)
      - Other keys: integer
    - `images` (array of string)
    - `health` (Health, one of `healthy`, `degraded`, `down`, `idle`, `unknown`)
    - `ready` (integer)
    - `desired` (integer)
    - `first_seen_at` (string (date-time))
    - `last_seen_at` (string (date-time))
  - `nodes` (array of object)
    - `id` (string)
    - `resource_id` (string | null)
    - `provider` (string)
    - `kind` (string)
    - `name` (string)
    - `namespace` (string)
    - `status` (string | null)
    - `member` (boolean): False for something outside the application that a member reaches.
    - `application_id` (string | null)
    - `application_name` (string | null)
    - `health` (string | null)
    - `pod` (object): For a pod node, its line from the live report.
    - `current` (boolean): On a ReplicaSet, whether the newest pod belongs to it.
  - `edges` (array of object)
    - `from` (string)
    - `to` (string)
    - `type` (string)
  - `truncated` (boolean)

### 401 — No API key was sent, or it is unknown, revoked or expired (`UNAUTHORIZED`).

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `NOT_FOUND`)
  - `message` (string, required, example `not found`)
  - `request_id` (string)

### 403 — The key lacks a scope this endpoint needs (`FORBIDDEN`).

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `NOT_FOUND`)
  - `message` (string, required, example `not found`)
  - `request_id` (string)

### 404 — Nothing with this ID (or slug) exists in the organization (`NOT_FOUND`).

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `NOT_FOUND`)
  - `message` (string, required, example `not found`)
  - `request_id` (string)

### 429 — Too many requests (`RATE_LIMITED`). Wait for `Retry-After` seconds.

Headers:

- `Retry-After` (integer): Seconds to wait before retrying.

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `NOT_FOUND`)
  - `message` (string, required, example `not found`)
  - `request_id` (string)

### 500 — Something went wrong on EvoHub's side (`INTERNAL_ERROR`). Retry later.

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `NOT_FOUND`)
  - `message` (string, required, example `not found`)
  - `request_id` (string)

## Example request

```bash
curl -X GET 'https://evohub.io/api/v1/catalog/applications/app_9c1e3a5b7d9f2b4d6f8a0c2e4b6d8f1a/graph' \
  -H 'Authorization: Bearer <TOKEN>'
```
