CMDB & Asset Management
The Configuration Management Database (CMDB) is the backbone of the ITSM platform — it stores Configuration Items (CIs) representing every infrastructure asset, their attributes, and the relationships between them. The platform integrates with external CMDB sources (ServiceNow CMDB, OpsRamp, UEM platforms like Intune and SCCM) and maintains a unified asset graph with dependency mapping, health scoring, and impact analysis.
Core concepts
Every managed resource in your infrastructure is represented as a Configuration Item (CI). CIs are classified by category (hardware, software, network, service, application, database, storage, cloud, virtual, container, infrastructure) and tracked through lifecycle states (draft, active, maintenance, retired, disposed). CIs can be linked to each other through typed relationships (e.g. depends_on, hosts, runs_on, connects_to, member_of) to form a dependency graph used for impact analysis and service map visualization.
Assets extend CIs with financial tracking — procurement costs, depreciation schedules, warranty status, lease terms, and full lifecycle management from order through disposal with audit trails.
The configuration item model
The configuration item model contains all the information about a managed infrastructure resource, including its type classification, network identity, ownership, health score, discovery source, compliance posture, and external system references.
Properties
- Name
id- Type
- string
- Description
Unique identifier for the configuration item.
- Name
ci_number- Type
- string
- Description
Auto-generated human-readable CI number with category prefix (e.g.
HW4K2MN001,NW4K2MN002).
- Name
name- Type
- string
- Description
Display name for this configuration item.
- Name
description- Type
- string
- Description
Optional detailed description of the CI.
- Name
ci_type_id- Type
- string
- Description
Reference to the CI type definition that governs allowed attributes and states.
- Name
category- Type
- string
- Description
Top-level classification. One of
hardware,software,network,service,application,database,storage,cloud,virtual,container,infrastructure, orother.
- Name
state- Type
- string
- Description
Lifecycle state of the CI. One of
draft,active,maintenance,retired,disposed, orunknown.
- Name
environment- Type
- string
- Description
Deployment environment. One of
production,staging,development,test,dr, orsandbox.
- Name
criticality- Type
- string
- Description
Business criticality level. One of
critical,high,medium, orlow.
- Name
hostname- Type
- string
- Description
Network hostname of the CI.
- Name
ip_address- Type
- string
- Description
Primary IP address.
- Name
fqdn- Type
- string
- Description
Fully qualified domain name.
- Name
location- Type
- string
- Description
Physical or logical location identifier.
- Name
datacenter- Type
- string
- Description
Datacenter where the CI resides.
- Name
region- Type
- string
- Description
Cloud or geographic region.
- Name
owner_id- Type
- string
- Description
User ID of the CI owner.
- Name
owner_group- Type
- string
- Description
Owning team or group name.
- Name
attributes- Type
- object
- Description
Type-specific dynamic attributes (OS, CPU, RAM, firmware version, etc.) governed by the CI type schema.
- Name
tags- Type
- array
- Description
Classification tags for filtering and grouping.
- Name
health_score- Type
- number
- Description
Composite health score from 0-100, calculated from availability, performance, compliance, incident, and change factors.
- Name
health_status- Type
- string
- Description
Derived health status. One of
healthy,warning,critical, orunknown.
- Name
compliance_status- Type
- string
- Description
Compliance posture. One of
compliant,non_compliant,unknown,exempt, orpending_review.
- Name
risk_level- Type
- string
- Description
Calculated risk level based on criticality, compliance, and health. One of
critical,high,medium,low, orunknown.
- Name
discovery_source- Type
- string
- Description
How this CI was discovered. Examples:
manual,servicenow_cmdb,opsramp,uem_intune,uem_sccm,network_scan,agent,cloud_api.
- Name
external_id- Type
- string
- Description
Identifier of this CI in the external source system.
- Name
external_source- Type
- string
- Description
Name of the external source system.
- Name
last_discovered_at- Type
- timestamp
- Description
Timestamp of the last discovery scan that found this CI.
- Name
created_at- Type
- timestamp
- Description
Timestamp of when the CI was created.
- Name
updated_at- Type
- timestamp
- Description
Timestamp of when the CI was last updated.
- Name
org_id- Type
- string
- Description
Organization this CI belongs to.
List configuration items
This endpoint allows you to retrieve a paginated list of all configuration items in your organization. By default, a maximum of twenty items are shown per page. Results can be filtered by category, state, environment, criticality, health status, discovery source, tags, and more. Supports full-text search across CI name, hostname, and IP address.
Optional attributes
- Name
page- Type
- integer
- Description
Page number for pagination. Defaults to
1.
- Name
page_size- Type
- integer
- Description
Number of items per page. Default is
20, maximum is100.
- Name
category- Type
- string
- Description
Filter by CI category:
hardware,software,network,service,application,database,storage,cloud,virtual,container, orinfrastructure.
- Name
state- Type
- string
- Description
Filter by lifecycle state:
draft,active,maintenance,retired, ordisposed.
- Name
environment- Type
- string
- Description
Filter by environment:
production,staging,development,test,dr, orsandbox.
- Name
criticality- Type
- string
- Description
Filter by criticality:
critical,high,medium, orlow.
- Name
health_status- Type
- string
- Description
Filter by health status:
healthy,warning,critical, orunknown.
- Name
discovery_source- Type
- string
- Description
Filter by discovery source, e.g.
servicenow_cmdb,agent,cloud_api.
- Name
tags- Type
- array
- Description
Filter by one or more tags.
- Name
search- Type
- string
- Description
Full-text search across name, hostname, IP address, and CI number.
- Name
sort_by- Type
- string
- Description
Sort field:
name,ci_number,created_at,updated_at,health_score, orcriticality.
- Name
sort_order- Type
- string
- Description
Sort direction:
ascordesc. Defaults todesc.
Request
curl -G http://localhost:3000/v1/cmdb/items \
-H "Authorization: Bearer {token}" \
-d page_size=10 \
-d category=hardware \
-d state=active \
-d environment=production
Response
{
"has_more": true,
"total": 1482,
"page": 1,
"page_size": 10,
"data": [
{
"id": "ci_7xKpQ2mR4wVb9nLs",
"ci_number": "HW4K2MN001",
"name": "prod-web-server-01",
"description": "Primary web application server - US East",
"ci_type_id": "type_3nLsW8kF9xYt",
"category": "hardware",
"state": "active",
"environment": "production",
"criticality": "critical",
"hostname": "prod-web-01.dc1.example.com",
"ip_address": "10.1.50.12",
"fqdn": "prod-web-01.dc1.example.com",
"location": "US-East-1",
"datacenter": "DC1-Virginia",
"region": "us-east-1",
"owner_group": "Platform Engineering",
"attributes": {
"os": "Ubuntu 22.04 LTS",
"cpu_cores": 16,
"ram_gb": 64,
"disk_gb": 500,
"kernel_version": "5.15.0-91-generic"
},
"tags": ["web-tier", "load-balanced", "pci-scope"],
"health_score": 94.5,
"health_status": "healthy",
"compliance_status": "compliant",
"risk_level": "medium",
"discovery_source": "agent",
"external_id": null,
"last_discovered_at": 1708732800,
"created_at": 1706140800,
"updated_at": 1708732800
},
{
"id": "ci_9pRtH5jN2cEm4kWq",
"ci_number": "NW4K2MN002",
"name": "core-switch-dc1-01",
"description": "Core L3 switch - DC1 aggregation layer",
"ci_type_id": "type_8mWqR3nT5vXp",
"category": "network",
"state": "active",
"environment": "production",
"criticality": "critical",
"hostname": "core-sw-01.dc1.example.com",
"ip_address": "10.1.0.1",
"fqdn": "core-sw-01.dc1.example.com",
"location": "US-East-1",
"datacenter": "DC1-Virginia",
"region": "us-east-1",
"owner_group": "Network Operations",
"attributes": {
"vendor": "Cisco",
"model": "Nexus 9396PX",
"firmware": "10.3(2)",
"port_count": 48,
"throughput_gbps": 2560
},
"tags": ["core-network", "spine", "pci-scope"],
"health_score": 98.2,
"health_status": "healthy",
"compliance_status": "compliant",
"risk_level": "medium",
"discovery_source": "snmp",
"external_id": "SNOW-CI0012345",
"last_discovered_at": 1708732500,
"created_at": 1706227200,
"updated_at": 1708732500
}
]
}
Create a configuration item
This endpoint allows you to create a new configuration item. The CI type must exist and governs which attributes are required and which lifecycle states are valid. A unique CI number is auto-generated based on the category prefix.
Required attributes
- Name
name- Type
- string
- Description
Display name for the configuration item.
- Name
ci_type_id- Type
- string
- Description
The CI type definition to use.
- Name
category- Type
- string
- Description
Top-level classification:
hardware,software,network,service,application,database,storage,cloud,virtual,container,infrastructure, orother.
Optional attributes
- Name
description- Type
- string
- Description
Detailed description of the CI.
- Name
state- Type
- string
- Description
Initial lifecycle state. Defaults to
draft.
- Name
environment- Type
- string
- Description
Deployment environment:
production,staging,development,test,dr, orsandbox.
- Name
criticality- Type
- string
- Description
Business criticality:
critical,high,medium, orlow. Defaults tomedium.
- Name
hostname- Type
- string
- Description
Network hostname.
- Name
ip_address- Type
- string
- Description
Primary IP address.
- Name
location- Type
- string
- Description
Physical or logical location.
- Name
datacenter- Type
- string
- Description
Datacenter identifier.
- Name
region- Type
- string
- Description
Cloud or geographic region.
- Name
owner_group- Type
- string
- Description
Owning team or group.
- Name
attributes- Type
- object
- Description
Type-specific dynamic attributes.
- Name
tags- Type
- array
- Description
Classification tags.
- Name
external_id- Type
- string
- Description
ID in an external source system.
- Name
external_source- Type
- string
- Description
Name of the external source system.
Request
curl -X POST http://localhost:3000/v1/cmdb/items \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "prod-db-primary-01",
"ci_type_id": "type_5kPmN8rT2wXq",
"category": "database",
"description": "Primary PostgreSQL cluster node - US East",
"state": "active",
"environment": "production",
"criticality": "critical",
"hostname": "prod-db-01.dc1.example.com",
"ip_address": "10.1.60.10",
"location": "US-East-1",
"datacenter": "DC1-Virginia",
"owner_group": "Database Engineering",
"attributes": {
"engine": "PostgreSQL",
"version": "16.2",
"cpu_cores": 32,
"ram_gb": 128,
"storage_type": "NVMe SSD",
"storage_gb": 2000,
"replication": "streaming",
"extensions": ["pgvector", "pg_stat_statements"]
},
"tags": ["database-tier", "primary", "pci-scope"]
}'
Response
{
"id": "ci_4kPmN8rT2wXq7xKp",
"ci_number": "DB4K2MN003",
"name": "prod-db-primary-01",
"description": "Primary PostgreSQL cluster node - US East",
"ci_type_id": "type_5kPmN8rT2wXq",
"category": "database",
"state": "active",
"environment": "production",
"criticality": "critical",
"hostname": "prod-db-01.dc1.example.com",
"ip_address": "10.1.60.10",
"fqdn": null,
"location": "US-East-1",
"datacenter": "DC1-Virginia",
"region": null,
"owner_group": "Database Engineering",
"attributes": {
"engine": "PostgreSQL",
"version": "16.2",
"cpu_cores": 32,
"ram_gb": 128,
"storage_type": "NVMe SSD",
"storage_gb": 2000,
"replication": "streaming",
"extensions": ["pgvector", "pg_stat_statements"]
},
"tags": ["database-tier", "primary", "pci-scope"],
"health_score": null,
"health_status": "unknown",
"compliance_status": "unknown",
"risk_level": "unknown",
"discovery_source": null,
"external_id": null,
"last_discovered_at": null,
"created_at": 1708733100,
"updated_at": 1708733100
}
Get a configuration item
This endpoint allows you to retrieve a single configuration item by its ID. The response includes the full CI record with all attributes, health scoring data, compliance posture, and discovery metadata. Results are cached in Redis for 300 seconds.
Request
curl http://localhost:3000/v1/cmdb/items/ci_7xKpQ2mR4wVb9nLs \
-H "Authorization: Bearer {token}"
Response
{
"id": "ci_7xKpQ2mR4wVb9nLs",
"ci_number": "HW4K2MN001",
"name": "prod-web-server-01",
"display_name": "Web Server 01 (Production)",
"description": "Primary web application server - US East",
"ci_type_id": "type_3nLsW8kF9xYt",
"category": "hardware",
"subcategory": "rack_server",
"state": "active",
"state_reason": "Provisioned and deployed to production",
"state_changed_at": 1706400000,
"environment": "production",
"criticality": "critical",
"hostname": "prod-web-01.dc1.example.com",
"ip_address": "10.1.50.12",
"ip_addresses": ["10.1.50.12", "10.1.50.13"],
"mac_address": "00:1A:2B:3C:4D:5E",
"fqdn": "prod-web-01.dc1.example.com",
"dns_names": ["prod-web-01.dc1.example.com", "web01.internal"],
"location": "US-East-1",
"building": "DC1-Main",
"floor": "2",
"room": "Server Hall A",
"rack": "R14",
"rack_position": "U22-U25",
"datacenter": "DC1-Virginia",
"region": "us-east-1",
"availability_zone": "us-east-1a",
"owner_id": "usr_8mWqR3nT5vXp",
"owner_group": "Platform Engineering",
"managed_by_group": "Infrastructure Ops",
"supported_by_group": "L2 Server Support",
"attributes": {
"os": "Ubuntu 22.04 LTS",
"cpu_cores": 16,
"ram_gb": 64,
"disk_gb": 500,
"kernel_version": "5.15.0-91-generic",
"manufacturer": "Dell",
"model": "PowerEdge R750",
"serial_number": "DELL-SVC-7X9K2M"
},
"tags": ["web-tier", "load-balanced", "pci-scope"],
"labels": {
"tier": "frontend",
"cost-center": "CC-4200"
},
"health_score": 94.5,
"health_status": "healthy",
"health_factors": {
"availability": { "score": 0.99, "uptime_percentage": 99.97 },
"performance": { "score": 0.92, "cpu_usage": 42, "memory_usage": 58 },
"compliance": { "score": 0.95, "policy_violations": 0 },
"incidents": { "score": 0.88, "open_count": 0, "last_30_days": 2 },
"changes": { "score": 0.96, "pending_count": 1, "failed_last_30_days": 0 }
},
"health_last_calculated_at": 1708732800,
"compliance_status": "compliant",
"compliance_score": 95.0,
"risk_level": "medium",
"discovery_source": "agent",
"discovery_id": "disc_2kNpL7mS9wYr",
"last_discovered_at": 1708732800,
"reconciliation_status": "matched",
"external_id": null,
"external_source": null,
"version": 14,
"created_at": 1706140800,
"updated_at": 1708732800
}
Update a configuration item
This endpoint allows you to perform a partial update on a configuration item. Only the fields you include in the request body will be updated. State transitions are validated — you cannot move a CI directly from draft to retired, for example. The CI version is incremented and an audit record is created.
Optional attributes
- Name
name- Type
- string
- Description
Updated display name.
- Name
state- Type
- string
- Description
New lifecycle state. Must be a valid transition from the current state.
- Name
state_reason- Type
- string
- Description
Reason for the state change.
- Name
environment- Type
- string
- Description
Updated environment.
- Name
criticality- Type
- string
- Description
Updated criticality level.
- Name
attributes- Type
- object
- Description
Updated dynamic attributes. Merged with existing attributes.
- Name
tags- Type
- array
- Description
Updated tags (replaces existing tags).
- Name
owner_group- Type
- string
- Description
Updated owning team.
Request
curl -X PATCH http://localhost:3000/v1/cmdb/items/ci_7xKpQ2mR4wVb9nLs \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"state": "maintenance",
"state_reason": "Scheduled kernel upgrade to 6.1 LTS",
"attributes": {
"kernel_version": "6.1.0-18-generic",
"maintenance_window": "2024-02-24T02:00:00Z"
},
"tags": ["web-tier", "load-balanced", "pci-scope", "maintenance-window"]
}'
Response
{
"id": "ci_7xKpQ2mR4wVb9nLs",
"ci_number": "HW4K2MN001",
"name": "prod-web-server-01",
"state": "maintenance",
"state_reason": "Scheduled kernel upgrade to 6.1 LTS",
"state_changed_at": 1708733400,
"environment": "production",
"criticality": "critical",
"attributes": {
"os": "Ubuntu 22.04 LTS",
"cpu_cores": 16,
"ram_gb": 64,
"disk_gb": 500,
"kernel_version": "6.1.0-18-generic",
"maintenance_window": "2024-02-24T02:00:00Z"
},
"tags": ["web-tier", "load-balanced", "pci-scope", "maintenance-window"],
"health_score": 94.5,
"health_status": "healthy",
"version": 15,
"created_at": 1706140800,
"updated_at": 1708733400
}
Delete a configuration item
This endpoint soft-deletes a configuration item. The CI must have no active relationships before it can be deleted — remove or reassign all relationships first. The CI record is marked as deleted and retained for audit purposes. An audit event is emitted.
Request
curl -X DELETE http://localhost:3000/v1/cmdb/items/ci_4kPmN8rT2wXq7xKp \
-H "Authorization: Bearer {token}"
Response
{
"id": "ci_4kPmN8rT2wXq7xKp",
"ci_number": "DB4K2MN003",
"deleted": true,
"deleted_at": 1708733600,
"deleted_by": "usr_8mWqR3nT5vXp"
}
Get CI relationships
This endpoint returns all relationships for a configuration item — both upstream (where this CI is the target) and downstream (where this CI is the source). The response includes the relationship type, the linked CI summary, impact weight, and whether the relationship is on the critical path. Use this to build dependency graphs and understand blast radius.
Optional attributes
- Name
direction- Type
- string
- Description
Filter by direction:
source(outbound),target(inbound), orboth. Defaults toboth.
Request
curl -G http://localhost:3000/v1/cmdb/items/ci_7xKpQ2mR4wVb9nLs/relationships \
-H "Authorization: Bearer {token}" \
-d direction=both
Response
{
"ci_id": "ci_7xKpQ2mR4wVb9nLs",
"ci_name": "prod-web-server-01",
"data": [
{
"id": "rel_3nLsW8kF9xYt2mRq",
"relationship_type": "runs_on",
"forward_label": "runs on",
"reverse_label": "hosts",
"direction": "source",
"target_ci": {
"id": "ci_6jHtK4pR8uWn3kPm",
"ci_number": "VM4K2MN005",
"name": "esxi-host-dc1-04",
"category": "virtual",
"state": "active",
"health_status": "healthy"
},
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.85,
"confidence_score": 1.0,
"is_verified": true,
"created_at": 1706400000
},
{
"id": "rel_9pRtH5jN2cEm4kWq",
"relationship_type": "depends_on",
"forward_label": "depends on",
"reverse_label": "depended on by",
"direction": "source",
"target_ci": {
"id": "ci_4kPmN8rT2wXq7xKp",
"ci_number": "DB4K2MN003",
"name": "prod-db-primary-01",
"category": "database",
"state": "active",
"health_status": "healthy"
},
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.95,
"confidence_score": 1.0,
"is_verified": true,
"created_at": 1706400000
},
{
"id": "rel_2kNpL7mS9wYr5jHt",
"relationship_type": "connects_to",
"forward_label": "connects to",
"reverse_label": "connected from",
"direction": "source",
"target_ci": {
"id": "ci_9pRtH5jN2cEm4kWq",
"ci_number": "NW4K2MN002",
"name": "core-switch-dc1-01",
"category": "network",
"state": "active",
"health_status": "healthy"
},
"strength": "normal",
"is_critical_path": false,
"impact_weight": 0.5,
"confidence_score": 0.92,
"is_verified": false,
"created_at": 1707000000
}
]
}
Add a CI relationship
This endpoint creates a relationship between two configuration items. Self-referencing relationships are not allowed. Duplicate relationships (same source, target, and type) are rejected. Relationship creation invalidates the service map and impact analysis caches.
Required attributes
- Name
target_ci_id- Type
- string
- Description
The ID of the target configuration item.
- Name
relationship_type_id- Type
- string
- Description
The ID of the relationship type definition.
Optional attributes
- Name
strength- Type
- string
- Description
Relationship strength:
strong,normal, orweak. Defaults tonormal.
- Name
is_critical_path- Type
- boolean
- Description
Whether this relationship is on the critical service path. Defaults to
false.
- Name
description- Type
- string
- Description
Description of this specific relationship instance.
- Name
source_port- Type
- string
- Description
Network port on the source CI (e.g.
443,eth0).
- Name
target_port- Type
- string
- Description
Network port on the target CI.
- Name
protocol- Type
- string
- Description
Communication protocol (e.g.
tcp,https,grpc).
Request
curl -X POST http://localhost:3000/v1/cmdb/items/ci_7xKpQ2mR4wVb9nLs/relationships \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"target_ci_id": "ci_5kPmN8rT2wXq9nLs",
"relationship_type_id": "reltype_depends_on",
"strength": "strong",
"is_critical_path": true,
"description": "Web server depends on Redis cache cluster",
"target_port": "6379",
"protocol": "tcp"
}'
Response
{
"id": "rel_8mWqR3nT5vXp6jHt",
"source_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"target_ci_id": "ci_5kPmN8rT2wXq9nLs",
"relationship_type_id": "reltype_depends_on",
"forward_label": "depends on",
"reverse_label": "depended on by",
"strength": "strong",
"is_critical_path": true,
"description": "Web server depends on Redis cache cluster",
"target_port": "6379",
"protocol": "tcp",
"confidence_score": 1.0,
"is_discovered": false,
"is_verified": false,
"created_at": 1708733700,
"created_by": "usr_8mWqR3nT5vXp"
}
Trigger CMDB sync
This endpoint triggers a CMDB synchronization from an external source system. Sync jobs are enqueued via BullMQ and processed asynchronously. Supports incremental and full sync modes. The platform reconciles discovered CIs against existing records using hostname, IP, serial number, and external ID matching with configurable confidence thresholds.
Required attributes
- Name
source- Type
- string
- Description
The external source to sync from. One of
servicenow_cmdb,opsramp,uem_intune,uem_sccm,device42,netbox, orcloud_api.
Optional attributes
- Name
scope- Type
- string
- Description
Sync scope:
full,incremental, ordelta. Defaults toincremental.
- Name
categories- Type
- array
- Description
Restrict sync to specific CI categories, e.g.
["hardware", "network"].
- Name
since- Type
- timestamp
- Description
Only sync records modified after this timestamp. Applies to
incrementalanddeltascopes.
- Name
auto_reconcile- Type
- boolean
- Description
Automatically reconcile discovered CIs above the confidence threshold. Defaults to
false.
- Name
reconciliation_threshold- Type
- number
- Description
Confidence threshold (0.0 to 1.0) for auto-reconciliation. Defaults to
0.85.
Request
curl -X POST http://localhost:3000/v1/cmdb/sync \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"source": "servicenow_cmdb",
"scope": "incremental",
"categories": ["hardware", "network", "virtual"],
"since": 1708646400,
"auto_reconcile": true,
"reconciliation_threshold": 0.9
}'
Response
{
"sync_job_id": "sync_4kPmN8rT2wXq",
"source": "servicenow_cmdb",
"scope": "incremental",
"categories": ["hardware", "network", "virtual"],
"status": "queued",
"auto_reconcile": true,
"reconciliation_threshold": 0.9,
"queued_at": 1708733800,
"estimated_records": 1247
}
Get sync status
This endpoint returns the current sync status and history for all configured CMDB sources. The response includes the last sync timestamp, record counts, reconciliation statistics, and any errors encountered during the most recent sync for each source.
Request
curl http://localhost:3000/v1/cmdb/sync/status \
-H "Authorization: Bearer {token}"
Response
{
"sources": [
{
"source": "servicenow_cmdb",
"status": "idle",
"last_sync_at": 1708732800,
"last_sync_scope": "incremental",
"last_sync_duration_ms": 48200,
"records_synced": 1247,
"records_created": 23,
"records_updated": 184,
"records_unchanged": 1040,
"reconciliation": {
"auto_matched": 198,
"manual_review": 9,
"conflicts": 2,
"unmatched": 23
},
"errors": [],
"total_syncs": 312,
"failed_syncs": 4,
"next_scheduled_sync": 1708819200
},
{
"source": "uem_intune",
"status": "syncing",
"last_sync_at": 1708732200,
"last_sync_scope": "full",
"last_sync_duration_ms": null,
"records_synced": null,
"progress_percent": 62,
"current_sync_job_id": "sync_9pRtH5jN2cEm",
"total_syncs": 89,
"failed_syncs": 1,
"next_scheduled_sync": null
},
{
"source": "agent",
"status": "idle",
"last_sync_at": 1708733100,
"records_synced": 4821,
"records_created": 0,
"records_updated": 312,
"records_unchanged": 4509,
"errors": [],
"total_syncs": 8640,
"failed_syncs": 12,
"next_scheduled_sync": 1708733400
}
]
}
Run discovery scan
This endpoint triggers an on-demand network discovery scan to find configuration items across your infrastructure. Discovery supports multiple methods including agent-based, agentless (SSH/WMI/SNMP), cloud API, Kubernetes API, and Terraform state. Discovered CIs are placed in a reconciliation queue where they can be matched to existing records or created as new CIs.
Required attributes
- Name
source_type- Type
- string
- Description
Discovery method. One of
agent,agentless,snmp,ssh,wmi,cloud_api,kubernetes,terraform,ansible,servicenow, orcustom.
- Name
connection_config- Type
- object
- Description
Connection configuration for the discovery source (credentials, endpoints, etc.).
Optional attributes
- Name
name- Type
- string
- Description
A name for this discovery scan.
- Name
ip_ranges- Type
- array
- Description
IP address ranges to scan, e.g.
["10.1.0.0/16", "192.168.1.0/24"]. Applies to agentless and SNMP scans.
- Name
categories- Type
- array
- Description
Restrict discovery to specific CI categories.
- Name
auto_reconcile- Type
- boolean
- Description
Automatically reconcile discovered CIs above confidence threshold. Defaults to
false.
Request
curl -X POST http://localhost:3000/v1/cmdb/discover \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"source_type": "snmp",
"name": "DC1 Network Discovery",
"connection_config": {
"community_string": "encrypted:v1:abc123...",
"snmp_version": "v3",
"timeout_ms": 5000
},
"ip_ranges": ["10.1.0.0/16"],
"categories": ["network", "hardware"],
"auto_reconcile": true
}'
Response
{
"discovery_job_id": "disc_6jHtK4pR8uWn",
"name": "DC1 Network Discovery",
"source_type": "snmp",
"status": "queued",
"ip_ranges": ["10.1.0.0/16"],
"categories": ["network", "hardware"],
"auto_reconcile": true,
"queued_at": 1708734000,
"estimated_hosts": 2048
}
Get infrastructure topology
This endpoint returns the infrastructure topology as a graph of CIs and their relationships, suitable for visualization in service map dashboards. The response includes nodes (CIs with summary data and health status) and edges (relationships with type, direction, and impact weight). You can scope the graph to a specific root CI and control traversal depth. Results are cached in Redis for 300 seconds.
Optional attributes
- Name
root_ci_id- Type
- string
- Description
Start the graph traversal from a specific CI. If omitted, returns the full organization topology.
- Name
max_depth- Type
- integer
- Description
Maximum traversal depth from the root CI. Default is
3, maximum is10.
- Name
categories- Type
- array
- Description
Filter nodes to specific CI categories.
- Name
include_inactive- Type
- boolean
- Description
Include CIs in non-active states. Defaults to
false.
Request
curl -G http://localhost:3000/v1/cmdb/topology \
-H "Authorization: Bearer {token}" \
-d root_ci_id=ci_7xKpQ2mR4wVb9nLs \
-d max_depth=3
Response
{
"root_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"max_depth": 3,
"generated_at": 1708734200,
"nodes": [
{
"id": "ci_7xKpQ2mR4wVb9nLs",
"ci_number": "HW4K2MN001",
"name": "prod-web-server-01",
"category": "hardware",
"state": "active",
"criticality": "critical",
"health_score": 94.5,
"health_status": "healthy",
"environment": "production",
"depth": 0
},
{
"id": "ci_4kPmN8rT2wXq7xKp",
"ci_number": "DB4K2MN003",
"name": "prod-db-primary-01",
"category": "database",
"state": "active",
"criticality": "critical",
"health_score": 97.1,
"health_status": "healthy",
"environment": "production",
"depth": 1
},
{
"id": "ci_5kPmN8rT2wXq9nLs",
"ci_number": "CL4K2MN006",
"name": "redis-cache-cluster-01",
"category": "cloud",
"state": "active",
"criticality": "high",
"health_score": 99.0,
"health_status": "healthy",
"environment": "production",
"depth": 1
},
{
"id": "ci_6jHtK4pR8uWn3kPm",
"ci_number": "VM4K2MN005",
"name": "esxi-host-dc1-04",
"category": "virtual",
"state": "active",
"criticality": "critical",
"health_score": 91.3,
"health_status": "healthy",
"environment": "production",
"depth": 1
},
{
"id": "ci_9pRtH5jN2cEm4kWq",
"ci_number": "NW4K2MN002",
"name": "core-switch-dc1-01",
"category": "network",
"state": "active",
"criticality": "critical",
"health_score": 98.2,
"health_status": "healthy",
"environment": "production",
"depth": 1
},
{
"id": "ci_2kNpL7mS9wYr4jHt",
"ci_number": "ST4K2MN007",
"name": "netapp-san-dc1-01",
"category": "storage",
"state": "active",
"criticality": "critical",
"health_score": 96.8,
"health_status": "healthy",
"environment": "production",
"depth": 2
}
],
"edges": [
{
"id": "rel_9pRtH5jN2cEm4kWq",
"source_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"target_ci_id": "ci_4kPmN8rT2wXq7xKp",
"relationship_type": "depends_on",
"forward_label": "depends on",
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.95
},
{
"id": "rel_8mWqR3nT5vXp6jHt",
"source_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"target_ci_id": "ci_5kPmN8rT2wXq9nLs",
"relationship_type": "depends_on",
"forward_label": "depends on",
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.85
},
{
"id": "rel_3nLsW8kF9xYt2mRq",
"source_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"target_ci_id": "ci_6jHtK4pR8uWn3kPm",
"relationship_type": "runs_on",
"forward_label": "runs on",
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.85
},
{
"id": "rel_2kNpL7mS9wYr5jHt",
"source_ci_id": "ci_7xKpQ2mR4wVb9nLs",
"target_ci_id": "ci_9pRtH5jN2cEm4kWq",
"relationship_type": "connects_to",
"forward_label": "connects to",
"strength": "normal",
"is_critical_path": false,
"impact_weight": 0.5
},
{
"id": "rel_6jHtK4pR8uWn9pRt",
"source_ci_id": "ci_4kPmN8rT2wXq7xKp",
"target_ci_id": "ci_2kNpL7mS9wYr4jHt",
"relationship_type": "depends_on",
"forward_label": "depends on",
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.9
},
{
"id": "rel_4kPmN8rT2wXq3nLs",
"source_ci_id": "ci_6jHtK4pR8uWn3kPm",
"target_ci_id": "ci_2kNpL7mS9wYr4jHt",
"relationship_type": "depends_on",
"forward_label": "depends on",
"strength": "strong",
"is_critical_path": true,
"impact_weight": 0.8
}
],
"stats": {
"total_nodes": 6,
"total_edges": 6,
"max_depth_reached": 2,
"critical_path_edges": 5
}
}