Type-safe Python SDK for FortiGate firewall automation and FortiOS REST API - 1,348+ endpoints with async support and complete type safety
Project description
HFortix
HFortix is the meta-package that installs all HFortix components for Fortinet automation. Install this package to get the complete suite of tools for FortiOS/FortiGate automation.
🚀 Quick Start
pip install hfortix
This single command installs:
hfortix-core- Core infrastructure and utilitieshfortix-fortios- FortiOS/FortiGate API client
from hfortix_fortios import FortiOS
# Connect to your FortiGate
with FortiOS(host="192.168.1.99", token="your-api-token") as fgt:
# Get system status
status = fgt.api.monitor.system.status.get()
print(f"Hostname: {status['hostname']}, Model: {status['model']}")
# Create firewall address
fgt.api.cmdb.firewall.address.post(
name="web-server",
subnet="10.0.1.100/32",
comment="Production web server"
)
📦 What's Included
When you install hfortix, you automatically get:
hfortix-fortios
Complete FortiOS/FortiGate API client with:
- 1,348 FortiOS 7.6.5 endpoints
- Full type hints and IDE autocomplete
- Async/await support
- Batch transactions and atomic operations
- Comprehensive error handling
- Rate limiting and retry logic
hfortix-core
Foundational infrastructure including:
- Shared HTTP client framework (retry logic, circuit breaker, rate limiting)
- Exception hierarchy and error-code mapping
- Audit logging and debugging utilities
- Base abstractions and shared utilities
Optional extras
pip install "hfortix[forticare]" # + hfortix-forticare (FortiCare asset management)
pip install "hfortix[fortiztp]" # + hfortix-fortiztp (FortiZTP provisioning)
pip install "hfortix[all]" # everything above
✨ Key Features
- 🎯 Complete API Coverage - All CMDB, Monitor, Log, and Service endpoints
- 💪 Fully Typed - Complete type hints with .pyi stubs
- ⚡ Modern & Fast - Async/await support, HTTP/2, connection pooling
- 🛡️ Production Ready - Comprehensive error handling and validation
- 🔄 Simplified Syntax - Simple list format auto-converts to FortiOS dict format
- 📦 Batch Transactions - Atomic configuration changes with automatic commit/rollback
- 🔍 API Inspection - Debug and audit API interactions
📚 Documentation
- HFortix Documentation - Getting started and guides
- FortiOS Client Docs - Complete API reference
- Core Library Docs - Infrastructure details
🔗 Individual Packages
If you only need specific components, you can install them separately:
# Just the FortiOS client (includes hfortix-core as dependency)
pip install hfortix-fortios
# Just the core infrastructure (for custom implementations)
pip install hfortix-core
🆚 Package Comparison
| Package | Purpose | Dependencies | Use When |
|---|---|---|---|
hfortix |
Meta-package | core + fortios (+ optional extras) | You want the suite |
hfortix-fortios |
FortiOS API client | hfortix-core | FortiGate automation |
hfortix-core |
Core infrastructure | httpx, typing-extensions | Building custom clients |
📖 Quick Examples
Firewall Management
from hfortix_fortios import FortiOS
with FortiOS(host="192.168.1.99", token="token") as fgt:
# Create firewall policy
fgt.api.cmdb.firewall.policy.post(
name="Allow-Web",
srcintf=["internal"],
dstintf=["wan1"],
srcaddr=["all"],
dstaddr=["web-server"],
service=["HTTP", "HTTPS"],
action="accept"
)
Batch Transactions
from hfortix_fortios import FortiOS
with FortiOS(host="192.168.1.99", token="token") as fgt:
# Atomic batch operation - API calls made inside the block
# automatically join the transaction
with fgt.transaction() as txn:
fgt.api.cmdb.firewall.address.post(name="server1", subnet="10.0.1.1/32")
fgt.api.cmdb.firewall.address.post(name="server2", subnet="10.0.1.2/32")
# Auto-commits on success; auto-aborts (rolls back) on error
Async Support
from hfortix_fortios import FortiOS
fgt = FortiOS(host="192.168.1.99", token="token", mode="async")
status = await fgt.api.monitor.system.status.get()
addresses = await fgt.api.cmdb.firewall.address.get()
🤝 Contributing
This is a proprietary library. For support or feature requests, please contact the maintainer.
📄 License
Proprietary License - See individual package LICENSE files for details.
HFortix - Modern Python SDKs for Fortinet automation
Project details
Release history Release notifications | RSS feed
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 hfortix-0.5.164.tar.gz.
File metadata
- Download URL: hfortix-0.5.164.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0f83ffaaf66f482f7abd79b503b72ac513a25d8f7203d4fc68fc06139b7d85c
|
|
| MD5 |
1134ae9b6d278aef72203b7750f815db
|
|
| BLAKE2b-256 |
125c021dc95d13e1ee9a32206b5fb3b7ecc5858bdbf231e3ead636fbde8f6621
|
File details
Details for the file hfortix-0.5.164-py3-none-any.whl.
File metadata
- Download URL: hfortix-0.5.164-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a703521b0bba40ab61bfdbaf2dcd81de331c5c4184377439fa275eda7a34bd4d
|
|
| MD5 |
e1743866f0d29502f64ffed9daf6d788
|
|
| BLAKE2b-256 |
9ed52862c71109fe0850ce9d09ad200b4bb41d4a781f2ac40913919873438601
|