Skip to content

Basic Usage

Simple examples to get you started with the de.iterate SDK.

Setup

typescript
import { DeIterateClient } from '@deiterate/sdk';

const client = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: process.env.DEITERATE_ORG_ID!,
});

List Resources

typescript
// List all risks
const risks = await client.risks.list();
console.log(`Found ${risks.data.length} risks`);

for (const risk of risks.data) {
  console.log(`• ${risk.name} - ${risk.severity}`);
}

Get Single Resource

typescript
const risk = await client.risks.get('risk-123');

console.log('Risk Details:');
console.log(`  Name: ${risk.name}`);
console.log(`  Severity: ${risk.severity}`);
console.log(`  Status: ${risk.status}`);
console.log(`  Description: ${risk.description}`);

Create Resource

typescript
const newRisk = await client.risks.create({
  name: 'Phishing Attack Risk',
  description: 'Risk of employees falling victim to phishing attacks',
  severity: 'high',
  category: 'Security',
  owner: 'security@company.com',
});

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

Update Resource

typescript
const updated = await client.risks.update('risk-123', {
  status: 'mitigated',
  mitigationNotes: 'Implemented email security training',
});

console.log(`Updated risk status: ${updated.status}`);

Delete Resource

typescript
await client.risks.delete('risk-123');
console.log('Risk deleted');

Filtering

typescript
// Filter by severity
const highRisks = await client.risks.list({
  filter: { severity: 'high' }
});

// Filter by multiple criteria
const criticalOpen = await client.risks.list({
  filter: {
    severity: { in: ['critical', 'high'] },
    status: 'open',
  }
});

// Sort by creation date
const recent = await client.risks.list({
  sort: '-createdAt'
});

Pagination

typescript
// Manual pagination
const page1 = await client.risks.list({ page: { number: 1, size: 25 } });
const page2 = await client.risks.list({ page: { number: 2, size: 25 } });

// Auto-pagination
for await (const risk of client.risks.listAll()) {
  console.log(risk.name);
}

Error Handling

typescript
import { NotFoundError, ValidationError } from '@deiterate/sdk';

try {
  const risk = await client.risks.get('invalid-id');
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Risk not found');
  } else if (error instanceof ValidationError) {
    console.log('Validation error:', error.message);
  } else {
    throw error;
  }
}

Complete Example

typescript
import { DeIterateClient } from '@deiterate/sdk';
import 'dotenv/config';

const client = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: process.env.DEITERATE_ORG_ID!,
});

async function main() {
  console.log('🔒 de.iterate SDK Demo\n');

  // List risks
  const risks = await client.risks.list();
  console.log(`📊 Found ${risks.data.length} risks\n`);

  // Show high severity risks
  const highRisks = risks.data.filter(r => r.severity === 'high');
  console.log(`🔴 High Severity Risks (${highRisks.length}):`);
  for (const risk of highRisks.slice(0, 5)) {
    console.log(`   • ${risk.name}`);
  }

  // List controls
  const controls = await client.controls.list();
  console.log(`\n🛡️ Found ${controls.data.length} controls`);

  // List tasks
  const tasks = await client.tasks.list({
    filter: { status: { ne: 'completed' } }
  });
  console.log(`\n📋 Open Tasks: ${tasks.data.length}`);

  console.log('\n✅ Demo complete!');
}

main().catch(console.error);

Next Steps

Released under the MIT License.