Manage Case Files๐
Upload, retrieve, download, and delete files attached to a case.
Initialize File Upload๐
mutation startCaseFileUpload($input: StartCaseFileUploadInput!) {
startCaseFileUpload(input: $input) {
file {
id
name
size
status
}
presignedUrl
}
}
Variables๐
{
"input": {
"caseId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"name": "investigation_report.pdf",
"size": 1024000,
"contentType": "application/pdf",
"isEmbedded": false
}
}
Delete File๐
mutation deleteCaseFile($input: DeleteCaseFileInput!) {
deleteCaseFile(input: $input) {
id
name
deletedAt
}
}
Variables๐
Get Case Files๐
List files attached to a case. Request downloadURL to get a signed URL for retrieving the file's contents.
query caseFiles($arguments: CaseFilesArguments!) {
caseFiles(arguments: $arguments) {
files {
id
name
size
status
isEmbedded
createdAt
downloadURL
}
totalCount
}
}
Variables๐
{
"arguments": {
"query": "investigationId = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'",
"page": 1,
"perPage": 20
}
}
Response Example๐
{
"data": {
"caseFiles": {
"files": [
{
"id": "550e8400-e29b-41d4-a716-446655440500",
"name": "investigation_report.pdf",
"size": 1024000,
"status": "UPLOADED",
"isEmbedded": false,
"createdAt": "2024-08-14T15:52:30Z",
"downloadURL": "https://files.example.com/signed-url..."
}
],
"totalCount": 1
}
}
}
Get a Single File๐
Use caseFile to fetch one file by ID, for example, to refresh an expired downloadURL.
query caseFile($arguments: CaseFileArguments!) {
caseFile(arguments: $arguments) {
id
name
size
status
downloadURL
}
}
Variables๐
Notes๐
isEmbeddedindicates if the file is embedded in case content (e.g., images in key findings). Embedded files do not generate audit logs on download.statusis one ofSCHEDULED(upload URL issued, file not yet uploaded),UPLOADED,ERROR_UPLOAD, orDELETED.- Download URLs are signed and valid for 15 minutes. Re-query
caseFileorcaseFileswithdownloadURLselected to get a fresh one. - Requesting download URLs generates audit logs (except for embedded files).
caseFilesis not scoped to a case by default. You must filter it with thequeryargument, usinginvestigationId(notcaseId) to match the case'sid, e.g.investigationId = '<case id>'. AddAND isEmbedded = falseto exclude embedded files.