Skip to main content

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

PyPI version Python 3.10+ Documentation Status License Typing: Typed

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 utilities
  • hfortix-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

🔗 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

hfortix-0.5.164.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hfortix-0.5.164-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

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

Hashes for hfortix-0.5.164.tar.gz
Algorithm Hash digest
SHA256 d0f83ffaaf66f482f7abd79b503b72ac513a25d8f7203d4fc68fc06139b7d85c
MD5 1134ae9b6d278aef72203b7750f815db
BLAKE2b-256 125c021dc95d13e1ee9a32206b5fb3b7ecc5858bdbf231e3ead636fbde8f6621

See more details on using hashes here.

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

Hashes for hfortix-0.5.164-py3-none-any.whl
Algorithm Hash digest
SHA256 a703521b0bba40ab61bfdbaf2dcd81de331c5c4184377439fa275eda7a34bd4d
MD5 e1743866f0d29502f64ffed9daf6d788
BLAKE2b-256 9ed52862c71109fe0850ce9d09ad200b4bb41d4a781f2ac40913919873438601

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page