SOVD (Service-Oriented Vehicle Data) Server Implementation
Project description
SOVD Server
A Service-Oriented Vehicle Data (SOVD) server implementation based on ISO/DIS 17978-3:2025, with YAML-based configuration.
Features
- YAML-driven configuration — Gateway, entities (areas, components, apps), and resources (data, operations, faults, modes) defined in YAML
- RESTful SOVD API — Data resources, operations, faults, and modes with JSON responses
- No authentication — Simplified setup for development and testing
- CORS enabled — Ready for web and tool clients
Requirements
- Python 3.9+
- Poetry — Install Poetry if you don’t have it
Quick start
# Clone and enter the project
cd sovd_server
# Install dependencies (creates a virtual environment automatically)
poetry install
# or
make install
# Run the server
poetry run sovd-server
# or
make run-server
Server runs at http://127.0.0.1:8080 by default. Try:
- Health:
curl http://localhost:8080/health - Areas:
curl http://localhost:8080/areas - Engine data:
curl http://localhost:8080/engine/data
Project layout
sovd_server/
├── src/sovd_server/ # Main package
│ ├── config/ # YAML configuration
│ │ ├── sovd_gateway.yaml # Gateway (host, port, logging)
│ │ ├── entities/ # Areas, components, apps
│ │ └── resources/ # Data, operations, faults, modes
│ ├── config_loader.py # YAML loader
│ ├── enhanced_server.py # Flask/Connexion server
│ └── run_enhanced_server.py # CLI entry point
├── tests/
├── docs/ # Additional documentation
├── pyproject.toml # Project and dependencies (Poetry)
├── Makefile # Convenience commands
└── README.md
Development
| Command | Description |
|---|---|
make install |
Install dependencies (Poetry) |
make run-server |
Start the SOVD server |
make test |
Run tests |
make run-tests |
Run tests with coverage |
make lint |
Run flake8 and mypy |
make format |
Format code with Black |
make format-check |
Check formatting only |
make security |
Run bandit and safety |
make ci-local |
Lint, format-check, security, test |
make version |
Show package version |
make build |
Build wheel and sdist for distribution |
make clean |
Remove build artifacts and caches |
All commands run via Poetry (e.g. poetry run pytest). You can also run tools directly:
poetry run pytest tests/ -v
poetry run black src/ tests/
poetry run flake8 src/ tests/
Configuration
- Gateway:
src/sovd_server/config/sovd_gateway.yaml— host, port, logging, entity/resource file paths - Entities:
config/entities/— areas, components, applications - Resources:
config/resources/— data, operations, faults, modes
See docs/ for detailed configuration and API notes.
API overview
| Endpoint | Description |
|---|---|
GET /health |
Health check |
GET /version-info |
Server version |
GET /areas, /components, /apps |
List entities |
GET /{entity}/data |
Data resources for an entity |
GET /{entity}/data/{id} |
Single data resource |
GET /{entity}/operations |
Operations |
POST /{entity}/operations/{id} |
Execute operation |
GET /{entity}/faults, GET /{entity}/modes |
Faults and modes |
Example:
# Engine software part number
curl http://localhost:8080/engine/data/SoftwarePartNumber
# Start camera calibration
curl -X POST http://localhost:8080/camera/front/operations/calibratecamera \
-H "Content-Type: application/json" \
-d '{"calibration_type": "automatic", "target_distance": 10.0}'
Installing the package
From PyPI (when published):
pip install sovd-server
sovd-server
From the project (editable):
poetry install
poetry run sovd-server
Documentation
- docs/INDEX.md — Documentation index
- docs/CONFIGURATION.md — Configuration details
- docs/CONTRIBUTING.md — How to contribute
- docs/DEPLOYMENT.md — Deployment and PyPI publishing
- docs/TESTING.md — Testing
- docs/VERSIONING.md — Version and release process
License
MIT. See LICENSE if present.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sovd_server-1.0.1.tar.gz.
File metadata
- Download URL: sovd_server-1.0.1.tar.gz
- Upload date:
- Size: 47.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92177b931c6aa25b5c06217eb3e27e05293dd4a1fe80adf6b285fe92698b22ae
|
|
| MD5 |
d4552df91e7411d5b6b7ccb61cbe3e81
|
|
| BLAKE2b-256 |
9ff5c4a0626517d438e065ac1deb712f59669773e0aa52ae0654f420ae7f4535
|
File details
Details for the file sovd_server-1.0.1-py3-none-any.whl.
File metadata
- Download URL: sovd_server-1.0.1-py3-none-any.whl
- Upload date:
- Size: 95.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9df9afb434aa053f3f6c09fb3a5bbac221e7b153abebd19311241a97ad698840
|
|
| MD5 |
51b166a3ee62b429edd732b941274a37
|
|
| BLAKE2b-256 |
903f729a41c672c3a93e012b2e2813c8abd8691c54bb55311a737763068e54f6
|