> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# getApprovalCase

> Reads one of your app's approval cases.

## Import

Call this method on a server-side ParaRestClient created with your server secret key.

```ts theme={null}
import { ParaRestClient } from "@getpara/rest-sdk";
```

async

Reads one of your app's approval cases.

Copy method signature

### Returns

[`Promise<Omit<PermissionsV2ConditionalApprovalCaseView, "decision">>`](https://docs.getpara.com/v3/references/types/permissions#permissionsv2conditionalapprovalcaseview)

The case without a caller decision.

## Route

Reading a case brings its status up to date, so a case past its expiry or affected by a policy change shows its final status.

```text theme={null}
GET /v1/permissions-v2/approval-cases/{caseId}
```

## Example

Compare the case status with `completed` to check whether its approval stages have finished.

```ts theme={null}
const approvalCase = await para.getApprovalCase(caseId);
const isApproved = approvalCase.status === "completed";
```

## Errors

A non-success response throws `ParaRestError` with the HTTP `status`, the error `code` and a `message`. [Permissions errors](https://docs.getpara.com/v3/references/permissions/errors.md) lists every error code.

An empty path argument throws `ParaRestValidationError` before the request is sent.

| Status | Code | When |
| - | - | - |
| 404 | `NOT_FOUND` | No case with this ID belongs to your app. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.