# JSON Output Support ## Overview NIP provides comprehensive machine-readable output in multiple structured formats (JSON, YAML, KDL) for automation, tooling integration, and AI-friendly interfaces. ## Output Formats ### JSON Output ```bash nip search firefox --json nip list --json nip show firefox --json ``` ### YAML Output ```bash nip search firefox --yaml nip list --yaml nip show firefox --yaml ``` ### KDL Output ```bash nip search firefox --kdl nip list --kdl nip show firefox --kdl ``` ## JSON Schema ### Search Results ```json { "query": "firefox", "results": [ { "name": "firefox", "version": "118.0", "description": "Mozilla Firefox web browser", "stream": "stable", "repository": "nexusos-stable", "install_status": "NotInstalled", "integrity_status": "Unknown", "size": 250000000, "install_date": null, "variants": [ { "cid": "blake3-F21194C0A7BC", "cas_path": "/Programs/firefox/118.0-F21194C0A7BC/", "features": {}, "build_flags": {}, "toolchain": "gcc-13", "target": "x86_64-linux-gnu", "integrity_status": "Unknown" } ], "tags": ["browser", "gui"] } ], "total_found": 1, "cas_enabled": true, "variant_fingerprints": true } ``` ### Package Information ```json { "name": "firefox", "version": "3.2.2", "description": "Interactive process viewer for Unix systems", "homepage": "https://htop.dev", "license": "GPL-2.0", "stream": "stable", "architecture": "x86_64", "installed": true, "install_date": "2025-08-05T10:30:00Z", "size": { "installed": 2048576, "download": 512000 }, "dependencies": [ { "name": "libc", "version": ">=2.17", "type": "runtime" } ], "files": [ "/System/Index/bin/htop" ], "build_hash": "blake3-abc123def456...", "acul_compliant": true } ``` ## Integration Examples ### Shell Scripting ```bash # Get package count PACKAGE_COUNT=$(nip list --json | jq '.total') # Check if package is installed IS_INSTALLED=$(nip show firefox --json | jq '.installed') # Get CAS path CAS_PATH=$(nip show firefox --json | jq -r '.variants[0].cas_path') ``` ### Python Integration ```python import subprocess import json def get_package_info(package_name): result = subprocess.run(['nip', 'show', package_name, '--json'], capture_output=True, text=True) return json.loads(result.stdout) package = get_package_info('firefox') print(f"Package: {package['name']} v{package['version']}") print(f"CAS Path: {package['variants'][0]['cas_path']}") ``` ## Use Cases - **CI/CD Integration**: Automated package management in pipelines - **Infrastructure as Code**: Declarative system configuration - **Monitoring**: Package status and integrity monitoring - **AI Integration**: Machine-readable package information - **Custom Tooling**: Building package management tools - **Reporting**: System inventory and compliance reporting