CLI tool and GUI for validating VDV463 electric bus charging infrastructure messages (ProvideChargingInformationRequest, ProvideChargingRequestsRequest) against JSON Schema with cross-field validation. Supports multi-version schemas, CI/CD pipelines with JUnit XML output.
β οΈ Disclaimer: This is an unofficial, community-developed tool. In particular, it is not provided, endorsed, approved, recommended or maintained by VDV working groups or VDV (Verband Deutscher Verkehrsunternehmen) in any way. The official VDV 463 specification should be obtained directly from VDV. Use this software at your own risk.
- Features
- Documentation
- Downloads
- Web UI (Docker)
- Installation
- Project Structure
- Security
- Testing
- Contributing
- License
- Multi-version schema support β VDV463 v1.0, v1.1, v2.0 with auto-detection
- Three severity levels β ERROR, WARNING, INFO with configurable fail threshold
- Cross-field validation β Plausibility checks beyond JSON Schema (power limits, SoC consistency, temporal constraints)
- CI/CD integration β JUnit XML reports, standardized exit codes, environment variables
- Batch processing β Validate multiple files in a single run
- Extensible rules β YAML-based configuration for custom validation rules
- Graphical User Interface β PySide6-based GUI for interactive validation with:
- Multi-file support with JSON editor
- Interactive Schema View diagram
- Multilingual support (German/English)
- Web UI β Browser-based validator served as a Docker container with:
- HTTPS (TLS 1.2/1.3 via nginx), JWT authentication, optional auth-bypass for internal networks
- Real-time search/filter, CSV & JSON export of validation results
- JSON Treeview, Schema configuration, Custom Rules upload
- Windows Executable β Standalone
.exeavailable, no Python installation required
- User Interface Guide: See
docs/vdv463-validator-ui.mdfor a step-by-step walkthrough of the PySide6-based GUI ( loading files, editing, validation flow, schema view, exporting results, troubleshooting). - Web UI Guide: See
docs/vdv463-validator-web-ui.mdfor Docker setup, HTTPS configuration, authentication modes, environment variables, API reference, and troubleshooting. - CI/CD & CLI Guide: See
docs/vdv463-validator-ci-cd.mdfor command-line usage, exit codes, environment variables, and ready-to-use snippets for GitLab CI, GitHub Actions, and Jenkins. - Additional references: Existing documents in
docs/(e.g., rules, schema versions) remain available for deeper technical details.
The latest successful build from the main branch is always available:
| File | Description |
|---|---|
| VDV463Validator-latest.exe | Standalone Windows executable |
| VDV463-Validator-latest-portable.zip | Portable ZIP (extract and run) |
For stable versions with installers, see the Releases page.
Each release includes:
- Windows Installer (
.exe) β With Start Menu and Desktop shortcuts - Standalone Executable (
.exe) β Single file, no installation required - Portable ZIP β Extract and run anywhere
A PySide6-based GUI is available for interactive validation and editing. For a full walkthrough (loading files, editing,
validation flow, schema view, exporting results, troubleshooting), see the User Interface Guide
at docs/vdv463-validator-ui.md.
Quick start:
- Windows: run
UI\run_ui.bat - Linux/macOS: run
./UI/run_ui.sh - Direct:
python UI/main_ui.py
The UI supports multi-file validation, JSON editing with syntax highlighting, an interactive schema view, and bilingual operation (DE/EN).
Ein Browser-basierter Validator steht als Docker-Container zur VerfΓΌgung. Er bietet HTTPS-Support, JWT-Authentifizierung und einen vollstΓ€ndigen Validierungs-Workflow.
Voraussetzungen: Docker & OpenSSL
Schnellstart:
# 1. Zertifikate generieren (selbstsigniert)
.\generate-ssl-certs.ps1 # Windows
./generate-ssl-certs.sh # Linux/macOS
# 2. Umgebung konfigurieren
cp .env.example .env
# JWT_SECRET_KEY in .env setzen (min. 32 Zeichen)
# 3. Start (baut das Frontend automatisch im Container)
docker compose up -d
# 4. https://localhost ΓΆffnenFor trusted internal networks without a login requirement, set DISABLE_AUTH=true in .env.
β οΈ Never useDISABLE_AUTH=trueon internet-facing deployments.
- Python 3.10+
- pip
git clone https://github.com/VDVde/JSON-Validator.git
cd vdv463-validator
pip install .pip install -e .[dev]
pre-commit installpip install .[docker,web]
# or use docker compose directly
docker compose up -dvdv463-validator/
β
βββ src/ # Source code
β βββ __init__.py
β βββ vdv463_validator.py # Main validator script
β βββ validation_rules.py # Validation rules engine
β
βββ schemas/ # JSON Schemas (git-ignored, dynamic)
β βββ README.md # Documentation of official sources
β βββ v1.0/ # Cached official v1.0
β βββ v1.1/ # Cached official v1.1
β βββ v2.0/ # Cached official v2.0 (Draft)
β
βββ scripts/ # Maintenance scripts
β βββ update_schemas.py # Pull latest schemas from VDV GitHub
β
βββ rules/ # Validation rules configuration
β βββ default.yaml # Default validation rules
β βββ strict.yaml # Strict mode rules
β βββ custom/ # User-defined rules
β βββ .gitkeep
β
βββ docs/ # Documentation
β βββ vdv463-validator-ui.md # Desktop UI user guide
β βββ vdv463-validator-web-ui.md # Web UI / Docker guide (new)
β βββ vdv463-validator-ci-cd.md # CLI & CI/CD guide
β βββ USAGE.md # Detailed usage guide (legacy)
β βββ RULES.md # Validation rules reference
β βββ SCHEMA_VERSIONS.md # Schema version differences
β βββ CI_CD.md # CI/CD integration guide (legacy)
β βββ UI/ # UI Documentation (legacy)
β β βββ README.md # UI feature documentation
β β βββ QUICKSTART.md # UI quick start guide
β β βββ IMPLEMENTATION.md # UI technical architecture
β β βββ example_usage.md # UI usage examples
β βββ examples/ # Example configurations
β βββ gitlab-ci.yml
β βββ github-actions.yml
β βββ jenkinsfile
β
βββ UI/ # Graphical User Interface (PySide6)
β βββ __init__.py
β βββ main_ui.py # Main UI application window
β βββ theme.py # UI theming and styling
β βββ i18n.py # Internationalization (DE/EN)
β βββ json_editor.py # JSON editor with syntax highlighting
β βββ json_tree_view.py # Hierarchical JSON tree display
β βββ schema_view.py # Interactive schema diagram
β βββ splash_screen.py # Startup splash screen
β β
β βββ models/ # Data models
β β βββ __init__.py
β β βββ json_file.py # JSON file data model
β β
β βββ utils/ # Utility functions
β β βββ __init__.py
β β βββ path_utils.py # Resource path resolution
β β
β βββ managers/ # Business logic managers
β β βββ __init__.py
β β βββ file_manager.py # File operations and recent files
β β βββ validation_manager.py # Validation execution and results
β β
β βββ widgets/ # UI panel components
β β βββ __init__.py
β β βββ file_panel.py # File list panel
β β βββ editor_panel.py # JSON editor with tabs
β β βββ results_panel.py # Validation results panel
β β βββ config_panel.py # Configuration panel
β β
β βββ run_ui.bat # Windows launcher
β βββ run_ui.sh # Linux/macOS launcher
β
βββ tests/ # Test suite
β βββ __init__.py
β βββ conftest.py # pytest fixtures
β βββ test_validator.py # Validator unit tests
β βββ test_rules.py # Rules engine tests
β β
β βββ fixtures/ # Test data
β β βββ v1.0/ # Test files for schema v1.0
β β β βββ valid/
β β β β βββ charging_info_minimal.json
β β β β βββ charging_info_complete.json
β β β β βββ charging_request_minimal.json
β β β β βββ charging_request_complete.json
β β β βββ invalid/
β β β βββ missing_required_field.json
β β β βββ invalid_type.json
β β β βββ schema_violation.json
β β β
β β βββ v1.1/ # Test files for schema v1.1
β β β βββ valid/
β β β β βββ charging_info_with_grid_connection.json
β β β β βββ charging_request_with_optional_fields.json
β β β βββ invalid/
β β β βββ invalid_optional_field.json
β β β
β β βββ v2.0/ # Test files for schema v2.0
β β β βββ valid/
β β β β βββ charging_status.json
β β β β βββ charging_info_v2.json
β β β βββ invalid/
β β β βββ invalid_status_type.json
β β β
β β βββ cross_field/ # Cross-field validation test cases
β β βββ power_violations.json
β β βββ soc_inconsistencies.json
β β βββ temporal_conflicts.json
β β βββ valid_cross_field.json
β β
β βββ rules/ # Test-specific rule configurations
β βββ test_rules_strict.yaml
β βββ test_rules_minimal.yaml
β
βββ ci/ # CI/CD configuration templates
β βββ gitlab/
β β βββ .gitlab-ci.yml
β βββ github/
β β βββ workflows/
β β βββ ci.yml
β β βββ release.yml
β β βββ validate-pr.yml
β βββ jenkins/
β βββ Jenkinsfile
β
βββ .github/ # GitHub-specific files
β βββ workflows/
β β βββ ci.yml # CI workflow (tests, linting)
β β βββ build.yml # Windows build & release workflow
β βββ ISSUE_TEMPLATE/
β β βββ bug_report.md
β β βββ feature_request.md
β βββ PULL_REQUEST_TEMPLATE.md
β
βββ .gitignore
βββ LICENSE # Apache 2.0 License
βββ README.md # This file
βββ requirements.txt # Python dependencies
βββ requirements-dev.txt # Development dependencies
βββ requirements-docker.txt # Docker-specific dependencies
βββ pyproject.toml # Python project configuration
βββ Dockerfile # Multi-stage Docker build
βββ docker-compose.yml # Docker Compose (app + nginx)
βββ .env.example # Environment variable template
βββ generate-ssl-certs.ps1 # Self-signed cert generator (Windows)
βββ generate-ssl-certs.sh # Self-signed cert generator (Linux/macOS)
βββ nginx/
β βββ nginx.conf # nginx reverse proxy config (TLS 1.2/1.3)
βββ Makefile # Common commands
| Variante | Wann | Einstieg |
|---|---|---|
| Desktop UI | Interaktive Validierung, Bearbeitung, Schema-Visualisierung | python UI/main_ui.py oder UI\run_ui.bat |
| Web UI | Team-Deployment, Browser-Zugriff, Docker | docker compose up -d β https://localhost |
| CLI / CI/CD | Automatisierung, Pipelines, Batch-Verarbeitung | python src/vdv463_validator.py message.json |
Detaillierte Anleitungen:
- Desktop UI:
docs/vdv463-validator-ui.md - Web UI:
docs/vdv463-validator-web-ui.md - CLI / CI/CD:
docs/vdv463-validator-ci-cd.md
Key schema versions supported: 1.0, 1.1, 2.0 with auto-detection.
Important
Official Schemas: This repository does not contain the official VDV463 JSON schemas to avoid
licensing issues and ensure you always use the latest official versions. The validator will
automatically download them from the VDVde/VDV463 repository
on first use. See schemas/README.md for details.
Custom validation rules can be provided via YAML (see rules/ and the guides above for examples).
This project uses GuardDog to automatically scan all Python dependencies for:
- π Malicious packages β Known malware signatures
- π Typosquatting β Packages with names similar to popular packages
β οΈ Suspicious patterns β Obfuscated code, network calls in setup scripts
The security scan runs automatically on every build and blocks the build if suspicious packages are detected.
# Install GuardDog
pip install guarddog
# Scan requirements.txt
guarddog pypi verify requirements.txt
# Scan with detailed output
guarddog pypi verify requirements.txt --output-format=sarif# Install dev dependencies
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/test_validator.py
# Run tests for specific schema version
pytest tests/ -k "v1_1"Tests are organized by schema version and validation type:
tests/fixtures/
βββ v1.0/valid/ # Valid v1.0 messages
βββ v1.0/invalid/ # Invalid v1.0 messages (schema violations)
βββ v1.1/valid/ # Valid v1.1 messages
βββ v1.1/invalid/ # Invalid v1.1 messages
βββ v2.0/valid/ # Valid v2.0 messages
βββ v2.0/invalid/ # Invalid v2.0 messages
βββ cross_field/ # Cross-field validation test cases
settings:
strict_mode: false
default_severity: "WARNING"
range_rules:
maxPower:
min: 0
max: 1000
unit: "kW"
cross_field_rules:
- id: "PWR-001"
name: "minPower must not exceed maxPower"
severity: "ERROR"
applies_to: ["ProvideChargingInformationRequest"]
condition:
fields: ["minPower", "maxPower"]
rule: "minPower <= maxPower"
message: "minPower ({minPower} kW) exceeds maxPower ({maxPower} kW)"
warning_thresholds:
low_soc_warning: 20
high_power_warning: 350See docs/RULES.md for complete reference.
Contributions are welcome! Please read the following before submitting:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Add tests for new functionality
- Ensure all tests pass (
pytest) - Submit a pull request
git clone https://github.com/VDVde/JSON-Validator.git
cd vdv463-validator
pip install -r requirements-dev.txt
pre-commit install# Install PyInstaller
pip install pyinstaller
# Build executable
pyinstaller main.spec --noconfirm --clean
# Output in dist/main/VDV463Validator.exeThis project is licensed under the Apache 2.0 License β see the LICENSE file for details.
- VDV (Verband Deutscher Verkehrsunternehmen) for the VDV463 specification
- The open-source community for jsonschema and related tools
