Skip to content

Compliance Calendar

Access the compliance calendar and aggregate data with the de.iterate SDK.

Overview

The compliance resource provides a unified view of all compliance-related activities, including assurance tasks, reviews, and scheduled activities across your organization.

Get All Compliance Data

Fetch all compliance data in a single call:

typescript
const data = await client.compliance.getAllData();

console.log(`Assignees: ${data.assignees.length}`);
console.log(`Assurance Tasks: ${data.assuranceTasks.length}`);
console.log(`Assets: ${data.assets.length}`);
console.log(`Risks: ${data.risks.length}`);
console.log(`Documents: ${data.documents.length}`);
console.log(`Policies: ${data.policies.length}`);
console.log(`Checklists: ${data.checklists.length}`);
console.log(`Corrective Actions: ${data.correctiveActions.length}`);
console.log(`Processes: ${data.processes.length}`);

ComplianceData Structure

typescript
interface ComplianceData {
  assignees: Assignee[];
  assuranceTasks: AssuranceTask[];
  assets: Asset[];
  risks: Risk[];
  documents: SupportingDoc[];
  policies: Policy[];
  checklists: Checklist[];
  correctiveActions: CorrectiveAction[];
  processes: ComplianceProcess[];
}

Compliance Calendar

Get Calendar

typescript
// Get full calendar
const calendar = await client.compliance.getCalendar();

console.log(`Total Events: ${calendar.summary.totalEvents}`);
console.log(calendar.summary.byType);

Get Calendar by Year

typescript
const calendar2025 = await client.compliance.getCalendarByYear(2025);

console.log(`Events in 2025: ${calendar2025.summary.totalEvents}`);

Get Calendar by Month

typescript
const janCalendar = await client.compliance.getCalendarByMonth(2025, 1);

console.log(`Events in Jan 2025: ${janCalendar.summary.totalEvents}`);

Get Calendar by Date Range

typescript
const q1Calendar = await client.compliance.getCalendarByDateRange(
  '2025-01-01',
  '2025-03-31'
);

console.log(`Q1 Events: ${q1Calendar.summary.totalEvents}`);

CalendarResponse Structure

typescript
interface CalendarResponse {
  summary: CalendarSummary;
  calendar: CalendarStructure;
  events: CalendarEvent[];
}

interface CalendarSummary {
  totalEvents: number;
  byType: {
    'assurance-task': number;
    'checklist': number;
    'corrective-action': number;
    'process': number;
    'risk-review': number;
    'asset-review': number;
    'document-review': number;
    'policy-review': number;
  };
  yearsCount: number;
}

interface CalendarEvent {
  id: string;
  type: 'assurance-task' | 'checklist' | 'corrective-action' | 'process' | 
        'risk-review' | 'asset-review' | 'document-review' | 'policy-review';
  title: string;
  date: Date | string;
  dateFormatted?: string;
  assignee?: string;
  status?: string;
  riskLevel?: string;
  category?: string;
  documentType?: string;
}

Individual Data Methods

Get Assignees

typescript
const assignees = await client.compliance.getAssignees();

for (const assignee of assignees) {
  console.log(`${assignee.firstName} ${assignee.lastName}`);
}

Get Assurance Tasks

typescript
const tasks = await client.compliance.getAssuranceTasks();

Get Assets

typescript
const assets = await client.compliance.getAssets();

Get Risks

typescript
const risks = await client.compliance.getRisks();

Get Documents

typescript
const documents = await client.compliance.getDocuments();

Get Policies

typescript
const policies = await client.compliance.getPolicies();

Get Checklists

typescript
const checklists = await client.compliance.getChecklists();

Get Corrective Actions

typescript
const actions = await client.compliance.getCorrectiveActions();

Get Processes

typescript
const processes = await client.compliance.getProcesses();

Examples

Compliance Dashboard

typescript
async function complianceDashboard() {
  const [data, calendar] = await Promise.all([
    client.compliance.getAllData(),
    client.compliance.getCalendarByMonth(new Date().getFullYear(), new Date().getMonth() + 1),
  ]);
  
  console.log('=== Compliance Dashboard ===');
  console.log(`\nThis Month's Events: ${calendar.summary.totalEvents}`);
  console.log('\nEvent Breakdown:');
  for (const [type, count] of Object.entries(calendar.summary.byType)) {
    if (count > 0) {
      console.log(`  ${type}: ${count}`);
    }
  }
  
  console.log('\n=== Resource Summary ===');
  console.log(`Risks: ${data.risks.length}`);
  console.log(`Assets: ${data.assets.length}`);
  console.log(`Documents: ${data.documents.length}`);
  console.log(`Assurance Tasks: ${data.assuranceTasks.length}`);
}

Upcoming Reviews

typescript
async function upcomingReviews(days: number = 30) {
  const calendar = await client.compliance.getCalendarByDateRange(
    new Date().toISOString(),
    new Date(Date.now() + days * 24 * 60 * 60 * 1000).toISOString()
  );
  
  console.log(`Reviews in next ${days} days: ${calendar.events.length}`);
  
  for (const event of calendar.events) {
    console.log(`  [${event.type}] ${event.title}`);
    console.log(`    Date: ${event.dateFormatted || event.date}`);
    if (event.assignee) {
      console.log(`    Assignee: ${event.assignee}`);
    }
  }
}

Next Steps

Released under the MIT License.