inventory-graph.json¶
D3 force-layout data from GraphBuilder.to_d3_json(), built from the same assets and edges.
Consumed by docs/viewer.html and any D3 / vis.js / Cytoscape front end.
The graph holds one edge per source and target, so links[] is not one-to-one with the map's
edges[]. SECURITY_GROUP_RULE, NACL_RULE and INTERNET_EXPOSED edges between the same two
nodes with the same cidr and direction are merged into one link: port_range becomes the
comma-separated union of their ports without repeats ("22,443"; a TCP, UDP or all-protocol
rule with no ports adds "0-65535", an ICMP rule adds none when the protocols differ),
protocol lists each protocol once ("TCP,ICMP"), and description joins the descriptions
with "; ". Any other edge that shares a source and target with an earlier one replaces it.
Count edges in inventory-map.json, not here.
nodes[]:
| Key | Type | Meaning |
|---|---|---|
id |
str |
Asset id, or the raw endpoint string for non-asset endpoints. |
name |
str |
Asset name. |
type |
str |
asset_type, or EXTERNAL. |
provider |
str |
AWS / AZURE / GCP, or EXTERNAL. |
region |
str |
Region, "" for externals. |
arn |
str |
Identifier, "" when none. |
account_id |
str |
Account, "" when none. |
is_internet_exposed |
bool |
From the asset. |
is_external |
bool |
true for nodes created from non-asset endpoints (0.0.0.0/0 and other CIDRs, Azure service tags). External accounts are real assets and have is_external: false; check type == "CLOUD_ACCOUNT" and the map's metadata.external for those. |
links[]:
| Key | Type | Meaning |
|---|---|---|
source, target |
str |
Node IDs. |
type |
str |
edge_type. |
relationship |
str |
relationship, "" when none. |
description |
str |
"" when none. |
direction, protocol, port_range, cidr |
str |
Network attributes, "" when none. |
properties and ports are not in the D3 export; use inventory-map.json for them.
{
"nodes": [
{"id": "1f289833-14df-4772-a9b3-470736dfe58d", "name": "organization o-1wietecbs4",
"type": "ORGANIZATION", "provider": "AWS", "region": "global",
"arn": "arn:aws:organizations::123456789012:organization/o-1wietecbs4",
"account_id": "123456789012", "is_internet_exposed": false, "is_external": false},
{"id": "0.0.0.0/0", "name": "0.0.0.0/0", "type": "EXTERNAL", "provider": "EXTERNAL",
"region": "", "arn": "", "account_id": "", "is_internet_exposed": false, "is_external": true}
],
"links": [
{"source": "1f289833-14df-4772-a9b3-470736dfe58d", "target": "a2fdd0e9-6feb-45c0-8cfe-ab092649fb3f",
"type": "CONTAINS", "relationship": "", "description": "", "direction": "ingress",
"protocol": "", "port_range": "", "cidr": ""}
]
}