> ISPO SDK documentation. [HTML](https://ispo.ai/docs/interfaces/core.CloudSupportIssue.html) · [Documentation index](https://ispo.ai/docs/llms.txt)

# Interface CloudSupportIssue

The PUBLIC issue projection — every field here is readable by every caller, including a signed-out reader, and this list is exhaustive. There is deliberately no reporter account id, tenant id, project id, email, or evidence content: those live in private columns the cloud API never serializes onto this shape.

```typescript
interface CloudSupportIssue {
    actual: string;
    affectedCount: number;
    category: "bug" | "ui" | "crash" | "performance" | "other" | null;
    createdAt: string;
    expected: string;
    number: number;
    ref: string;
    reporterHandle: string | null;
    repro: string;
    severity: "high" | "medium" | "low" | null;
    status:
        | "fixed"
        | "open"
        | "in-progress"
        | "closed"
        | "needs-info"
        | "confirmed";
    surface: "project"
    | "host"
    | "community";
    title: string;
    updatedAt: string;
}
```

Types: [actual](#actual), [affectedCount](#affectedcount), [category](#category), [createdAt](#createdat), [expected](#expected), [number](#number), [ref](#ref), [reporterHandle](#reporterhandle), [repro](#repro), [severity](#severity), [status](#status), [surface](#surface), [title](#title), [updatedAt](#updatedat)

##### Index

### <a id="properties"></a>Properties

[actual](#actual) [affectedCount](#affectedcount) [category](#category) [createdAt](#createdat) [expected](#expected) [number](#number) [ref](#ref) [reporterHandle](#reporterhandle) [repro](#repro) [severity](#severity) [status](#status) [surface](#surface) [title](#title) [updatedAt](#updatedat)

## <a id="properties-1"></a>Properties

### <a id="actual"></a>actual

```typescript
actual: string
```

### <a id="affectedcount"></a>affectedCount

```typescript
affectedCount: number
```

How many accounts (reporter included) marked themselves affected.

### <a id="category"></a>category

```typescript
category: "bug" | "ui" | "crash" | "performance" | "other" | null
```

Null when the reporter did not classify the report — both are optional at create time, and "unspecified" is a real answer. A client renders its own neutral copy; it must never be shown as a category the reporter chose.

### <a id="createdat"></a>createdAt

```typescript
createdAt: string
```

### <a id="expected"></a>expected

```typescript
expected: string
```

### <a id="number"></a>number

```typescript
number: number
```

Monotonic per-deployment issue number — the ONLY rendered identifier.

### <a id="ref"></a>ref

```typescript
ref: string
```

Opaque addressing handle (`iss_…`). data-\* attributes and follow-up calls ONLY — never rendered; `number` is the identity users see.

### <a id="reporterhandle"></a>reporterHandle

```typescript
reporterHandle: string | null
```

The reporter's Community chat handle, or null when they have none — clients render "anonymous" for null. Never an account id or email.

### <a id="repro"></a>repro

```typescript
repro: string
```

### <a id="severity"></a>severity

```typescript
severity: "high" | "medium" | "low" | null
```

Null when the reporter declared no impact. Never defaulted to a level: showing an operator `medium` for an unspecified severity fabricates a reporter claim they never made.

### <a id="status"></a>status

```typescript
status: "fixed" | "open" | "in-progress" | "closed" | "needs-info" | "confirmed"
```

### <a id="surface"></a>surface

```typescript
surface: "project" | "host" | "community"
```

### <a id="title"></a>title

```typescript
title: string
```

### <a id="updatedat"></a>updatedAt

```typescript
updatedAt: string
```
