## Actuarial Certificate — Workflow

This page describes how a certificate request progresses once Class has sent it to you and you begin calling back. Each callback creates or updates a *status record*, and the `Status` value you send (`Interim` or `Final`) is stored as a label on that record.

### The status label

Every status you create or update carries a `Status` of either **`Interim`** or **`Final`**:

| Value | Meaning |
|  --- | --- |
| **Interim** | A draft or in-progress result. Use this while the percentage is still provisional. This is the default if `Status` is omitted. |
| **Final** | The completed result. Class users treat a Final status (with the certificate document) as the finished certificate. |


`Interim` and `Final` are labels recorded against each status. You can post as many updates as you need.

### The three callback endpoints

Your interaction with Class after the initial request uses three endpoints (see [Provider-to-Class Updates](/products/class/apis/actuarial-provider/provider-to-class) and the [API Reference](/products/class/apis/actuarial-provider/actuarial-certificate)):

| Ref | Purpose | Endpoint (relative) |
|  --- | --- | --- |
| **A** | Create a new status | POST `.../certificate-request/{requestId}/status` |
| **B** | Update an existing status | POST `.../status/{statusId}` |
| **C** | Upload the certificate document | POST `.../status/{statusId}/doc` |


### Ordering rules

- **A must come first.** Creating a status (A) returns a `StatusId`. You need that `StatusId` to update the status (B) or attach a document (C).
- **You cannot skip straight to C.** A document is always attached to an existing status, so a status must exist before you upload.
- **B is optional.** You only need it if you want to revise a status you already created (for example, to replace a draft percentage with a final one).


### What each endpoint changes

- **Create (A)** — records a new status with the percentage (from `ExemptPercentage`) and the `UseDeemedSegregation` flag. Returns the `StatusId`.
- **Update (B)** — overwrites the existing status's percentage, `UseDeemedSegregation` flag, stored body and timestamp. Requires a valid `ExemptPercentage` (an empty or unparseable value returns `400 Bad Request`).
- **Upload document (C)** — attaches the certificate PDF to the status. Returns `200 OK` on success, `500` on error.


### Typical sequences

Both of the following are valid:

- **Standard path:** create a status (A) → upload the certificate document (C).
- **Staged path:** create a status (A) → update the status (B), e.g. to move from a draft to a final percentage → upload the certificate document (C).


There is no limit on the number of updates — each records a status against the certificate request. Class users consider the process complete once a Final status with the certificate document is present.