# Parameters for Creating a Case File and Starting an Upload

## case_token

**uuid**  
*required*  
Globally unique identifier for the case.

## name

**string**  
*required*  
Name of the file to upload.

# Case File

## 201 Case File

**object**  
A file attached to a case. Status-dependent fields are always present but may be `null`:

- `upload_url`, `upload_url_expires`, and `upload_constraints` are populated when `status` is `PENDING` or `REJECTED`
- `download_url` and `download_url_expires` are populated when `status` is `READY`
- `failure_reason` is populated when `status` is `REJECTED`

## Fields

### token

**uuid**  
*required*  
Globally unique identifier for the file.

### name

**string**  
*required*  
Name of the file.

### mime_type

**string | null**  
*required*  
MIME type of the file, available once the file is ready.

### size_bytes

**int64 | null**  
*required*  
Size of the file in bytes, available once the file is ready.

### status

**string**  
*enum*  
*required*  
Lifecycle status of a case file:

- `PENDING`  
An upload URL has been issued and the file is awaiting upload.
- `READY`  
The file has been uploaded and validated; a download URL is available.
- `REJECTED`  
File validation failed; see `failure_reason` for details.

### upload_url

**string | null**  
*required*  
Presigned URL the client uses to upload the file.

### upload_url_expires

**date-time | null**  
*required*  
Date and time at which the upload URL expires.

### upload_constraints

*nullUpload Constraints*  
*required*  
Constraints that the uploaded file must satisfy.

### download_url

**string | null**  
*required*  
Presigned URL the client uses to download the file.

### download_url_expires

**date-time | null**  
*required*  
Date and time at which the download URL expires.

### failure_reason

**string | null**  
*required*  
Reason the file was rejected, when applicable.

### created

**date-time**  
*required*  
Date and time at which the file record was created.

### updated

**date-time**  
*required*  
Date and time at which the file record was last updated.

# Error Codes

- **400**  
Bad Request

- **404**  
Not Found

# Example Request

```
curl --request POST \
     --url https://sandbox.lithic.com/v1/transaction_monitoring/cases/case_token/files \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{"name":"string"}'
```

# Example Response

```json
{
  "token": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "string",
  "mime_type": "string",
  "size_bytes": 0,
  "status": "PENDING",
  "upload_url": "string",
  "upload_url_expires": "2026-07-17T22:19:58.861Z",
  "upload_constraints": {
    "accepted_mime_types": ["string"],
    "max_size_bytes": 0
  },
  "download_url": "string",
  "download_url_expires": "2026-07-17T22:19:58.861Z",
  "failure_reason": "string",
  "created": "2026-07-17T22:19:58.861Z",
  "updated": "2026-07-17T22:19:58.861Z"
}
```
