Skip to main content

Cases API

The Cases endpoint of the Investigation Service exposes CRUD operations on cases. Cases are containers for evidences and examinations and are the entry point for organising forensic investigations.

For the conceptual background see Cases and Evidence.

Pre-requisites
  1. You have generated client code from the OpenAPI specification.
  2. You have read the API integration overview and obtained an OAuth2 access token.

Operations

OperationVerb / path
Case creationPUT cases/{caseId}/create
Case retrievalGET cases/{caseId}
Case updatePUT cases/{caseId}/update
Case soft-deletePOST cases/{caseId}/delete
Personal case retrievalGET cases/personal/{userId}

Client instance

Communication with the Investigation Service is wrapped in a generated CasesApi client. A small helper builds the client with the right base path and headers.

using Innovatrics.Abis.Rest.Api;

static CasesApi GetCasesApiInstance(string accessToken)
{
return new CasesApi(BuildAbisConfiguration(accessToken));
}

Creation

Cases can be created using the createCase operation. Cases can be of two types: shared (accessible to multiple users) or personal (private to a single user).

var ca = GetCasesApiInstance(accessToken);

var createCaseRequest = new CreateCaseRequest
{
Name = "Investigation Case 2026-001",
Type = CaseType.Shared,
Category = "UNASSIGNED",
Description = "Vehicle theft investigation",
Location = "Downtown District",
CrimeType = "Theft",
AssignedToId = 1
};

var caseId = Guid.NewGuid().ToString();
var caseResponse = ca.CreateCase(caseId, createCaseRequest);

Console.WriteLine($"Case created with ID: {caseResponse.Id}");

Retrieval

Cases can be retrieved by ID. The response includes everything needed to render the case – metadata plus the list of related evidences. Evidence binary data is referenced by URL.

var ca = GetCasesApiInstance(accessToken);
var caseResponse = ca.GetCase("existing-case-id");

Console.WriteLine($"Case Name: {caseResponse.Name}");
Console.WriteLine($"Case Type: {caseResponse.Type}");
Console.WriteLine($"Description: {caseResponse.Description}");

Update

The updateCase operation modifies the parameters of an existing case. The response contains the updated case representation, including the list of evidences.

var ca = GetCasesApiInstance(accessToken);

var updateCaseRequest = new UpdateCaseRequest
{
Name = "Updated Investigation Case 2026-001",
Description = "Vehicle theft investigation - Updated with new evidence",
Location = "Extended to include surrounding areas",
AssignedToId = 2
};

var updatedCase = ca.UpdateCase("existing-case-id", updateCaseRequest);
Console.WriteLine($"Case updated: {updatedCase.Name}");

Deletion

Cases are soft-deleted; the record stays in ABIS but is marked as deleted. Soft-deletion also marks every evidence inside the case as deleted.

var ca = GetCasesApiInstance(accessToken);
var deletedCase = ca.DeleteCase("case-to-delete");

Console.WriteLine($"Case deleted: {deletedCase.Id}");
Console.WriteLine($"Deleted at: {deletedCase.DeletedAt}");

Personal case retrieval

Each user has exactly one personal case. The getPersonalCase operation retrieves it by user ID.

var ca = GetCasesApiInstance(accessToken);
var personalCase = ca.GetPersonalCase(123);

Console.WriteLine($"Personal Case ID: {personalCase.Id}");
Console.WriteLine($"Assigned to User: {personalCase.AssignedToId}");

Migration

Whole-case import / export uses the Migration API of the Investigation Service. Cases are exchanged in standard ANSI/NIST-ITL containers, including every evidence, snapshot and visual annotation. The migration endpoints are documented in the ABIS Integration documentation under Investigation Endpoints – Migration API.