Skip to content

Findings

Manage standalone findings (non-conformities) with the de.iterate SDK.

Overview

The findings resource provides operations for managing standalone findings that are not associated with a specific audit. For audit-related findings, see the Audits resource.

List Findings

typescript
const findings = await client.findings.list();

console.log(`Found ${findings.length} standalone findings`);
for (const finding of findings) {
  console.log(`  • ${finding.title} (${finding.severity})`);
}

Create Finding

typescript
const finding = await client.findings.create({
  title: 'Security Configuration Issue',
  description: 'Default credentials found on network device',
  severity: 'high',
  assignee: 'network-team@company.com',
  dueDate: '2025-02-15',
  control: 'A.9.4.3',
  linkedDocuments: ['DOC-001', 'DOC-002'],
});

console.log(`Created finding: ${finding.id}`);

CreateFindingInput

FieldTypeRequiredDescription
titlestringFinding title
descriptionstringDetailed description
severity'low' | 'medium' | 'high' | 'critical'Severity level
statusstringFinding status
assigneestringAssigned to
dueDatestringDue date for remediation
controlstringRelated control ID
linkedDocumentsstring[]Related document IDs
auditIdstring | nullAssociated audit (null for standalone)

Update Finding

typescript
const updated = await client.findings.update('FND-001', {
  status: 'remediated',
  assignee: 'security-team@company.com',
});

Delete Finding

typescript
await client.findings.delete('FND-001');

Finding Type

typescript
interface Finding {
  id: string;
  title?: string;
  description: string;
  severity?: 'low' | 'medium' | 'high' | 'critical';
  status?: string;
  assignee?: string;
  dueDate?: string;
  control?: string;
  linkedDocuments?: string[];
  auditId?: string | null;
  origin?: 'audit' | 'standalone';
  tenantId?: string;
  createdBy?: string;
  createdAt?: string;
  updatedAt?: string;
}

Examples

Finding Summary

typescript
async function findingSummary() {
  const findings = await client.findings.list();
  
  const bySeverity = { low: 0, medium: 0, high: 0, critical: 0 };
  
  for (const finding of findings) {
    const sev = finding.severity || 'low';
    if (sev in bySeverity) {
      bySeverity[sev as keyof typeof bySeverity]++;
    }
  }
  
  console.log('Finding Summary');
  console.log('===============');
  console.log(`🔴 Critical: ${bySeverity.critical}`);
  console.log(`🟠 High: ${bySeverity.high}`);
  console.log(`🟡 Medium: ${bySeverity.medium}`);
  console.log(`🟢 Low: ${bySeverity.low}`);
}

Next Steps

Released under the MIT License.