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

# Interface CloudSupportApi

Community issue reads/writes. Every method resolves a typed union — a refusal is DATA the app branches on, never a thrown transport error.

```typescript
interface CloudSupportApi {
    collectEvidence(): Promise<CloudSupportEvidenceCollectResult>;
    createIssue(
        args: CloudSupportIssueCreateArgs,
    ): Promise<CloudSupportIssueCreateResult>;
    getIssue(ref: string): Promise<CloudSupportIssueResult>;
    listIssues(
        args?: CloudSupportIssueListArgs,
    ): Promise<CloudSupportIssueListResult>;
    markAffected(
        ref: string,
        affected: boolean,
    ): Promise<CloudSupportAffectedResult>;
    setIssueStatus(
        ref: string,
        status:
            | "fixed"
            | "open"
            | "in-progress"
            | "closed"
            | "needs-info"
            | "confirmed",
    ): Promise<CloudSupportIssueStatusResult>;
}
```

Types: [collectEvidence](#collectevidence-1), [CloudSupportEvidenceCollectResult](../types/core.CloudSupportEvidenceCollectResult.md), [createIssue](#createissue-1), [CloudSupportIssueCreateArgs](core.CloudSupportIssueCreateArgs.md), [CloudSupportIssueCreateResult](../types/core.CloudSupportIssueCreateResult.md), [getIssue](#getissue-1), [CloudSupportIssueResult](../types/core.CloudSupportIssueResult.md), [listIssues](#listissues-1), [CloudSupportIssueListArgs](core.CloudSupportIssueListArgs.md), [CloudSupportIssueListResult](../types/core.CloudSupportIssueListResult.md), [markAffected](#markaffected-1), [CloudSupportAffectedResult](../types/core.CloudSupportAffectedResult.md), [setIssueStatus](#setissuestatus-1), [CloudSupportIssueStatusResult](../types/core.CloudSupportIssueStatusResult.md)

##### Index

### <a id="methods"></a>Methods

[collectEvidence](#collectevidence) [createIssue](#createissue) [getIssue](#getissue) [listIssues](#listissues) [markAffected](#markaffected) [setIssueStatus](#setissuestatus)

## <a id="methods-1"></a>Methods

### <a id="collectevidence"></a>collectEvidence

*   <a id="collectevidence-1"></a>
    
    ```typescript
    collectEvidence(): Promise<CloudSupportEvidenceCollectResult>
    ```
    
    Types: [CloudSupportEvidenceCollectResult](../types/core.CloudSupportEvidenceCollectResult.md)
    
    Open the host evidence composer. Resolves opaque refs, never bytes.
    
    #### Returns Promise<[CloudSupportEvidenceCollectResult](../types/core.CloudSupportEvidenceCollectResult.md)\>
    

### <a id="createissue"></a>createIssue

*   <a id="createissue-1"></a>
    
    ```typescript
    createIssue(
        args: CloudSupportIssueCreateArgs,
    ): Promise<CloudSupportIssueCreateResult>
    ```
    
    Types: [CloudSupportIssueCreateArgs](core.CloudSupportIssueCreateArgs.md), [CloudSupportIssueCreateResult](../types/core.CloudSupportIssueCreateResult.md)
    
    File a new issue. Rate-limited per account by the cloud API; at most 8 evidence refs, and a banned account is refused with `banned`.
    
    #### Parameters
    
    *   args: [CloudSupportIssueCreateArgs](core.CloudSupportIssueCreateArgs.md)
    
    #### Returns Promise<[CloudSupportIssueCreateResult](../types/core.CloudSupportIssueCreateResult.md)\>
    

### <a id="getissue"></a>getIssue

*   <a id="getissue-1"></a>
    
    ```typescript
    getIssue(ref: string): Promise<CloudSupportIssueResult>
    ```
    
    Types: [CloudSupportIssueResult](../types/core.CloudSupportIssueResult.md)
    
    Read one issue. Available to signed-out readers; `evidence` comes back only for the reporter or an operator.
    
    #### Parameters
    
    *   ref: string
    
    #### Returns Promise<[CloudSupportIssueResult](../types/core.CloudSupportIssueResult.md)\>
    

### <a id="listissues"></a>listIssues

*   <a id="listissues-1"></a>
    
    ```typescript
    listIssues(
        args?: CloudSupportIssueListArgs,
    ): Promise<CloudSupportIssueListResult>
    ```
    
    Types: [CloudSupportIssueListArgs](core.CloudSupportIssueListArgs.md), [CloudSupportIssueListResult](../types/core.CloudSupportIssueListResult.md)
    
    List public issues, newest first. Available to signed-out readers; the result's viewer posture says whether account-scoped actions are available.
    
    #### Parameters
    
    *   `Optional`args: [CloudSupportIssueListArgs](core.CloudSupportIssueListArgs.md)
    
    #### Returns Promise<[CloudSupportIssueListResult](../types/core.CloudSupportIssueListResult.md)\>
    

### <a id="markaffected"></a>markAffected

*   <a id="markaffected-1"></a>
    
    ```typescript
    markAffected(
        ref: string,
        affected: boolean,
    ): Promise<CloudSupportAffectedResult>
    ```
    
    Types: [CloudSupportAffectedResult](../types/core.CloudSupportAffectedResult.md)
    
    Add/remove the signed-in account from an issue's affected list. The reporter is always counted, so un-affecting is a no-op for them.
    
    #### Parameters
    
    *   ref: string
    *   affected: boolean
    
    #### Returns Promise<[CloudSupportAffectedResult](../types/core.CloudSupportAffectedResult.md)\>
    

### <a id="setissuestatus"></a>setIssueStatus

*   <a id="setissuestatus-1"></a>
    
    ```typescript
    setIssueStatus(
        ref: string,
        status:
            | "fixed"
            | "open"
            | "in-progress"
            | "closed"
            | "needs-info"
            | "confirmed",
    ): Promise<CloudSupportIssueStatusResult>
    ```
    
    Types: [CloudSupportIssueStatusResult](../types/core.CloudSupportIssueStatusResult.md)
    
    Operator-only triage write; anyone else gets `not-operator`.
    
    #### Parameters
    
    *   ref: string
    *   status: "fixed" | "open" | "in-progress" | "closed" | "needs-info" | "confirmed"
    
    #### Returns Promise<[CloudSupportIssueStatusResult](../types/core.CloudSupportIssueStatusResult.md)\>
