Hits API
The Hits endpoint of the Investigation Service exposes operations on hits – the records that document the relationship between a probe and a candidate after the examiner has reached a conclusion. Hits are the official, court-relevant artefact of the comparison process.
For the conceptual background see Examinations and Hits.
Operations
| Operation | Verb / path |
|---|---|
| Hit creation | POST hits |
| Hit retrieval | GET hits/{hitId} |
| Hit soft-delete | POST hits/{hitId}/delete |
Hits are immutable in the sense that they cannot be updated. To "change a decision" the examiner deletes the existing hit (which is soft-deleted, retained for audit, and excluded from counters) and creates a new one with the corrected relationType.
Client instance
- C#
- Java
using Innovatrics.Abis.Rest.Api;
static HitsApi GetHitsApiInstance(string accessToken)
{
return new HitsApi(BuildAbisConfiguration(accessToken));
}
import com.innovatrics.abis.rest.api.HitsApi;
private static HitsApi getHitsApiInstance(String accessToken) {
return new HitsApi(buildAbisClient(accessToken));
}
Creation
The createHit operation records an examiner's decision. The required fields depend on the modality (latent print, face, iris, DNA, etc.). The supported relation types are Individualized, Excluded and Inconclusive.
- C#
- Java
var ha = GetHitsApiInstance(accessToken);
var createHitRequest = new CreateHitRequest
{
IdentifyApplicantId = Guid.Parse("probe-applicant-id"),
IdentifyCandidateId = Guid.Parse("candidate-applicant-id"),
RelationType = "INDIVIDUALIZED",
VerificationScore = 85.5,
FromLatentId = 1,
ToFingerprintId = 2,
Note = "Strong match found during comparison",
MatchingMinutiaePoints = new List<MatchingMinutiaePoints>
{
new MatchingMinutiaePoints
{
Score = 95.0,
ProbeMinutiaePoint = new MinutiaePoint { Id = 1, X = 100, Y = 200, Angle = 45, Type = "ending" },
ReferenceMinutiaePoint = new MinutiaePoint { Id = 2, X = 102, Y = 201, Angle = 47, Type = "ending" }
}
}
};
var hitResponse = ha.CreateHit(createHitRequest);
Console.WriteLine($"Hit created with ID: {hitResponse.Id}");
HitsApi ha = getHitsApiInstance(accessToken);
CreateHitRequest createHitRequest = new CreateHitRequest()
.identifyApplicantId(UUID.fromString("probe-applicant-id"))
.identifyCandidateId(UUID.fromString("candidate-applicant-id"))
.relationType("EXCLUDED")
.verificationScore(25.0)
.fromFaceId(1L)
.toFaceId(2L)
.note("No match found during facial comparison");
HitResponse hitResponse = ha.createHit(createHitRequest);
System.out.println("Hit created with ID: " + hitResponse.getId());
Retrieval
getHit returns everything required to render the hit in the UI – relation type, scores, the linked probe / reference identifiers, the matching minutiae (for prints) and the free-text note.
- C#
- Java
var ha = GetHitsApiInstance(accessToken);
var hitResponse = ha.GetHit("existing-hit-id");
Console.WriteLine($"Hit ID: {hitResponse.Id}");
Console.WriteLine($"Relation Type: {hitResponse.RelationType}");
Console.WriteLine($"Verification Score: {hitResponse.VerificationScore}");
Console.WriteLine($"Note: {hitResponse.Note}");
HitsApi ha = getHitsApiInstance(accessToken);
HitResponse hitResponse = ha.getHit("existing-hit-id");
System.out.println("Hit ID: " + hitResponse.getId());
System.out.println("Relation Type: " + hitResponse.getRelationType());
System.out.println("Verification Score: " + hitResponse.getVerificationScore());
System.out.println("Note: " + hitResponse.getNote());
Deletion
Hits are soft-deleted. They remain in the database for audit purposes and are excluded from hit counters and aggregations.
- C#
- Java
var ha = GetHitsApiInstance(accessToken);
var deletedHit = ha.DeleteHit("hit-to-delete");
Console.WriteLine($"Hit deleted: {deletedHit.Id}");
Console.WriteLine($"Deleted at: {deletedHit.DeletedAt}");
HitsApi ha = getHitsApiInstance(accessToken);
HitResponse deletedHit = ha.deleteHit("hit-to-delete");
System.out.println("Hit deleted: " + deletedHit.getId());
System.out.println("Deleted at: " + deletedHit.getDeletedAt());
Aggregated views
- The list of hits per examination is part of the examination response.
- The list of hits per evidence is exposed by the evidence response and can be retrieved using the standard list endpoints.
- The list of hits per case is exposed by the case response.
These three views correspond to the three UI surfaces that show hits (examination sidebar, evidence Hits table, case Hits table).