Assets
Manage your asset register with the de.iterate SDK.
Overview
The assets resource provides operations for managing your organization's asset inventory, including hardware, software, data, and other information assets.
List Assets
typescript
// List all assets
const response = await client.assets.list();
console.log(response.data);
// Filter by status
const activeAssets = await client.assets.list({
filter: { status: 'Active' }
});
// Filter by category
const dataAssets = await client.assets.list({
filter: { assetCat: 'Data' }
});Response Example
json
{
"data": [
{
"id": "AST-001",
"type": "asset",
"assetDesc": "Customer Database",
"assetCat": "Data",
"assetOwner": "john.doe",
"assetCriticality": "Critical",
"assetRisk": "High",
"status": "Active",
"nextReviewDate": "2025-06-01T00:00:00Z",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-12-20T14:22:00Z"
}
],
"meta": {
"totalCount": 156,
"pageCount": 1,
"currentPage": 1,
"perPage": 156
}
}Get Asset
typescript
const asset = await client.assets.get('AST-001');
console.log(asset.assetDesc); // "Customer Database"
console.log(asset.assetCat); // "Data"
console.log(asset.assetCriticality); // "Critical"
console.log(asset.status); // "Active"Create Asset
typescript
const asset = await client.assets.create({
assetDesc: 'Production Web Server',
assetCat: 'Infrastructure',
assetOwner: 'ops-team',
assetCriticality: 'Critical',
assetRisk: 'Medium',
nextReviewDate: new Date('2025-06-01'),
});
console.log(`Created asset: ${asset.id}`);CreateAssetInput
| Field | Type | Required | Description |
|---|---|---|---|
assetDesc | string | ✅ | Asset description/name |
assetCat | string | ✅ | Asset category |
assetOwner | string | ❌ | Owner user ID or name |
assetCriticality | string | ❌ | Criticality level (Critical, High, Medium, Low) |
assetRisk | string | ❌ | Associated risk level |
nextReviewDate | Date | ❌ | Next scheduled review date |
Update Asset
typescript
const updated = await client.assets.update('AST-001', {
assetCriticality: 'High',
assetOwner: 'new-owner@company.com',
status: 'Active',
});UpdateAssetInput
| Field | Type | Description |
|---|---|---|
assetDesc | string | Asset description |
assetCat | string | Category |
assetOwner | string | Owner |
assetCriticality | string | Criticality level |
assetRisk | string | Risk level |
status | 'Active' | 'Decommissioned' | Asset status |
nextReviewDate | Date | Next review date |
Delete Asset
typescript
await client.assets.delete('AST-001');Review Asset
Mark an asset as reviewed:
typescript
const reviewed = await client.assets.review('AST-001', 'Annual review completed');Asset Type
typescript
interface Asset {
id: string;
type: 'asset';
assetDesc: string;
assetCat: string;
assetOwner?: string;
assetCriticality?: string;
assetRisk?: string;
status: 'Active' | 'Decommissioned' | 'Deleted';
nextReviewDate?: Date;
lastReviewDate?: Date;
createdAt: Date;
updatedAt: Date;
metadata?: Record<string, unknown>;
}Examples
Asset Inventory Report
typescript
async function assetInventoryReport() {
const response = await client.assets.list();
const assets = response.data;
// Group by category
const byCategory: Record<string, number> = {};
const byCriticality: Record<string, number> = {};
for (const asset of assets) {
// Count by category
const cat = asset.assetCat || 'Uncategorized';
byCategory[cat] = (byCategory[cat] || 0) + 1;
// Count by criticality
const crit = asset.assetCriticality || 'Unknown';
byCriticality[crit] = (byCriticality[crit] || 0) + 1;
}
console.log('Asset Inventory Report');
console.log('======================');
console.log(`Total Assets: ${assets.length}`);
console.log('\nBy Category:');
for (const [cat, count] of Object.entries(byCategory)) {
console.log(` ${cat}: ${count}`);
}
console.log('\nBy Criticality:');
for (const [crit, count] of Object.entries(byCriticality)) {
console.log(` ${crit}: ${count}`);
}
}Find Assets Due for Review
typescript
async function findAssetsNeedingReview() {
const response = await client.assets.list();
const now = new Date();
const thirtyDays = 30 * 24 * 60 * 60 * 1000;
const dueSoon = response.data.filter(asset => {
if (!asset.nextReviewDate) return false;
const reviewDate = new Date(asset.nextReviewDate);
return reviewDate.getTime() - now.getTime() < thirtyDays;
});
console.log(`Assets due for review in next 30 days: ${dueSoon.length}`);
for (const asset of dueSoon) {
console.log(` • ${asset.assetDesc} (${asset.nextReviewDate})`);
}
}Sync Assets from External System
typescript
async function syncAssetsFromIT(externalAssets: any[]) {
const existing = await client.assets.list();
const existingIds = new Set(existing.data.map(a => a.id));
for (const ext of externalAssets) {
if (existingIds.has(ext.id)) {
// Update existing
await client.assets.update(ext.id, {
assetDesc: ext.name,
assetCat: ext.category,
assetOwner: ext.owner,
});
} else {
// Create new
await client.assets.create({
assetDesc: ext.name,
assetCat: ext.category,
assetOwner: ext.owner,
assetCriticality: ext.criticality || 'Medium',
});
}
}
}Next Steps
- Risks - Link assets to risks
- Documents - Manage asset documentation
- Compliance - Asset review scheduling