JSON Output Schema
Reference for Jnkn's JSON output formats.
Blast Radius
jnkn blast env:DATABASE_URL --format json
{
"source_artifacts": ["env:DATABASE_URL"],
"total_impacted_count": 5,
"impacted_artifacts": [
"file://src/db/connection.py",
"file://src/api/users.py",
"infra:aws_db_instance.main",
"k8s:default/deployment/api",
"k8s:default/secret/db-creds"
],
"breakdown": {
"code": [
"file://src/db/connection.py",
"file://src/api/users.py"
],
"infra": [
"infra:aws_db_instance.main"
],
"k8s": [
"k8s:default/deployment/api",
"k8s:default/secret/db-creds"
],
"env": [],
"data": []
},
"max_depth_reached": 2,
"paths": [
{
"target": "file://src/db/connection.py",
"path": ["env:DATABASE_URL", "file://src/db/connection.py"],
"depth": 1
}
]
}
Fields
| Field |
Type |
Description |
source_artifacts |
string[] |
Input artifact IDs |
total_impacted_count |
integer |
Total downstream artifacts |
impacted_artifacts |
string[] |
All impacted artifact IDs |
breakdown |
object |
Artifacts grouped by type |
max_depth_reached |
integer |
Deepest traversal level |
paths |
object[] |
(Optional) Paths to each artifact |
Stats
{
"version": "0.1.0",
"schema_version": 2,
"database_path": ".jnkn/jnkn.db",
"database_size_bytes": 124500,
"total_nodes": 156,
"total_edges": 97,
"tracked_files": 47,
"nodes_by_type": {
"code_file": 42,
"env_var": 12,
"infra_resource": 8,
"k8s_resource": 6
},
"edges_by_type": {
"reads": 45,
"imports": 32,
"provides": 12,
"configures": 8
},
"cross_domain_edges": 8,
"last_scan": "2024-01-15T10:30:00Z"
}
Explain
jnkn explain env:DB_HOST infra:db_host --format json
{
"source": {
"id": "env:DB_HOST",
"type": "env_var",
"tokens": ["db", "host"]
},
"target": {
"id": "infra:db_host",
"type": "infra_resource",
"tokens": ["db", "host"]
},
"confidence": {
"score": 0.85,
"level": "HIGH",
"signals": [
{
"name": "normalized_match",
"weight": 0.9,
"description": "'dbhost' == 'dbhost'"
}
],
"penalties": [
{
"name": "short_token",
"multiplier": 0.95,
"description": "Token 'db' is only 2 chars"
}
]
},
"matched_tokens": ["db", "host"],
"would_create_edge": true,
"suppressed": false
}
Diff
jnkn diff main..HEAD --format json
{
"base_ref": "main",
"target_ref": "HEAD",
"summary": {
"nodes_added": 3,
"nodes_removed": 1,
"edges_added": 5,
"edges_removed": 2
},
"added_nodes": [
{
"id": "env:NEW_VAR",
"type": "env_var",
"metadata": {
"file": "src/config.py",
"line": 15
}
}
],
"removed_nodes": [
{
"id": "env:OLD_VAR",
"type": "env_var"
}
],
"added_edges": [
{
"source": "file://src/new.py",
"target": "env:NEW_VAR",
"type": "reads"
}
],
"removed_edges": [
{
"source": "file://src/old.py",
"target": "env:OLD_VAR",
"type": "reads"
}
]
}
Export (Full Graph)
jnkn export --format json
{
"version": "0.1.0",
"exported_at": "2024-01-15T10:30:00Z",
"nodes": [
{
"id": "env:DATABASE_URL",
"name": "DATABASE_URL",
"type": "env_var",
"metadata": {
"source": "os.getenv",
"file": "src/config.py",
"line": 10
}
},
{
"id": "file://src/config.py",
"name": "config.py",
"type": "code_file",
"path": "src/config.py",
"language": "python",
"file_hash": "abc123..."
}
],
"edges": [
{
"source": "file://src/config.py",
"target": "env:DATABASE_URL",
"type": "reads",
"metadata": {
"pattern": "os.getenv",
"confidence": 1.0
}
}
]
}
Node Types
| Type |
Description |
code_file |
Source code file |
code_entity |
Function/class definition |
env_var |
Environment variable |
infra_resource |
Terraform resource |
k8s_resource |
Kubernetes resource |
data_asset |
dbt model/source |
unknown |
Unresolved reference |
Edge Types
| Type |
Description |
reads |
Source reads from target |
imports |
Source imports target |
provides |
Source provides target |
configures |
Source configures target |
contains |
Source contains target |
references |
Generic reference |