HFortix-FortiOS
Quick Start Guide
Prerequisites
Installation
Your First Script
Common Operations
List Resources
Create a Resource
Update a Resource
Delete a Resource
Working with Responses
Attribute Access (Recommended)
Response Metadata
Converting to Dict/JSON
Managing FortiGates via FortiManager
Flexible Interface
Error Handling
Performance Optimization
Monitoring
What’s Next?
Getting Help
Authentication
API Token Authentication (Recommended)
Creating an API Token
Token Requirements
Using API Tokens
Environment Variables (Best Practice)
Using python-dotenv
Using OS Environment Variables
Username/Password Authentication (Legacy)
SSL Certificate Verification
Production Environments
Custom Certificate Authority
Development/Testing with Self-Signed Certificates
Administrator Profiles
Example: Creating a Read-Only API User
Trusted Hosts (Security Best Practice)
Testing Your Authentication
Next Steps
User Guide
FortiOS Client
Client Class
FortiOS
Usage
Basic Connection
Optimized Settings
API Namespaces
API Namespace
Examples
Using CMDB API
Using Monitor API
Using Direct API Methods
See Also
FortiOS Overview
Quick Overview
Coming Soon
Temporary Reference
Endpoint Methods
Available HTTP Methods
Standard CRUD Methods
Method Usage
Method Availability
Common Parameters
GET Method
POST Method
PUT Method
DELETE Method
SET Method
Response Objects
Using the request() Method
Monitor API Methods
Error Handling
See Also
Response Objects
Quick Reference
Response Properties
HTTP/API Status Properties
FortiGate Metadata Properties
Pagination Properties (for list queries)
FortiManager Proxy Properties
Data Conversion Properties
Understanding
fgt_revision_changed
Why This Matters
Use Cases
Data Access Patterns
Attribute Access (Recommended)
Dict-Style Access
Auto-Flattening of Member Tables
FortiObjectList (List Responses)
Converting to Dict/JSON
See Also
Error Handling
Overview
Quick Example
Coming Soon
Temporary Reference
Async Usage
Overview
Quick Example
Coming Soon
Temporary Reference
Overview
For Topic-Specific Guides
Quick Links
Methods and Usage
Available Methods
Usage Patterns
Documentation Sections
API Reference
SDK Components
Advanced Features
API Endpoint Categories
Related Documentation
API Endpoints
Quick Navigation
CMDB
Categories
Quick Start
All Categories
MONITOR
Categories
Quick Start
All Categories
LOG
Categories
Quick Start
All Categories
SERVICE
Categories
Quick Start
All Categories
API Overview
CMDB API - Configuration Management
Monitor API - Status & Statistics
Log API - Historical Data
Service API - Operations
Usage Examples
API Reference
SDK Components
Main Client Classes
hfortix_fortios.FortiOS
API Handlers
Configuration & Authentication
Transactions & Batch Operations
hfortix_fortios.Transaction
Error Handling
hfortix_fortios.AuthenticationError
hfortix_fortios.APIError
Type Definitions
Advanced Features
Observability & Debugging
FortiManager Proxy
Custom Wrappers
Topic Guides
Child Table Helpers
Overview
What are Child Tables?
Available Endpoints
Router BFD
Router BFD6
Router BGP
Router IS-IS
Router Multicast
Router Multicast6
Router OSPF
Router OSPF6
Router RIP
Router RIPng
Basic Operations
set() - Create or Update Entry
get() - Retrieve Single Entry
delete() - Remove Entry
list() - Get All Entries
count() - Count Entries
exists() - Check Existence
Practical Examples
Example 1: BGP Neighbor Management
Example 2: OSPF Area Configuration
Example 3: RIP Network Advertisement
Example 4: IS-IS Interface Configuration
Best Practices
Use Specific Field Updates
Check Existence Before Operations
Handle Required Fields
Use Count for Validation
Error Handling
Common Errors
Robust Error Handling Pattern
Limitations
Router-Only Scope
Single-Entry Limitations
Pre-Created Entries
API Reference
set()
get()
delete()
list()
count()
exists()
See Also
Reordering Objects with .move()
Overview
Position Parameter
Basic Usage
Move to Top (Simplest!)
Move to Bottom
Move to Specific Position (New!)
Move Before Another Object
Move After Another Object
Common Patterns
Viewing Execution Order
Advanced Examples
Organize Policies by Priority
Insert Policy at Specific Position
Reorder Multiple Policies
Move Policy Relative to Current Position
Swap Two Policies
Supported Endpoints
Firewall
Router
NAT
Check Availability
Important Notes
Virtual Domains (VDOMs)
Error Handling
Performance Considerations
See Also
Batch Transactions
Overview
Quick Start
Basic Usage - Context Manager
Decorator Pattern
Transaction Lifecycle
Automatic Behavior
Manual Control
Transaction Properties
Advanced Features
Custom Timeout
Show Transaction Details (FortiOS 7.4.1+)
List Active Transactions (FortiOS 7.4.1+)
Best Practices
1. Use Transactions for Related Changes
2. Keep Transactions Short
3. Set Appropriate Timeouts
Common Patterns
Bulk Object Creation
Configuration Migration
Conditional Rollback
API Reference
FortiOS.transaction()
FortiOS.transactional()
Transaction Methods
Transaction Properties
See Also
API Request Inspection
Overview
Quick Start
Basic Usage
FortiManager Inspection
Request Object Structure
FortiOS Request Object
FortiManager Request Object
Common Use Cases
1. Debugging Failed Requests
2. Audit Trail
3. Performance Analysis
4. Learning the API
Integration Examples
Logging Integration
Transaction Inspection
Best Practices
1. Always Check After Critical Operations
2. Use for Debugging, Not Production Logic
3. Sanitize Before Logging
Limitations
Only Last Request
FortiOS vs FortiManager
See Also
FortiManager Proxy
Overview
Quick Start
Basic Setup
Manual Session Management
Using Different ADOMs
API Operations
CMDB Operations
Monitor Operations
Low-Level Request Method
Response Handling
Multiple Devices
Error Handling
Best Practices
Limitations
API Reference
Related
Creating Custom Wrappers and Aliases
Overview
Why Create Custom Wrappers?
Simple Aliases
Wrapper Functions
Custom Wrapper Class
Async Wrappers
Domain-Specific Wrappers
Validation Wrappers
Best Practices
Example: Complete Custom Module
Related
Enterprise Audit Logging
Overview
Why Audit Logging Matters
Competitive Advantage
Quick Start
Basic File Logging
SIEM Integration (Syslog)
Container/Kubernetes Logs
Multiple Destinations
Built-in Handlers
FileHandler
SyslogHandler
StreamHandler
CompositeHandler
User Context Tracking
Audit Log Format
Security Features
Automatic Data Sanitization
Non-Blocking
Compliance Use Cases
SOC 2
HIPAA
PCI-DSS
Real-World Examples
Multi-Team Environment
Change Management Integration
Performance Impact
Demo Script
See Also
Handler Protocol System
Overview
Why Protocol-Based?
Quick Start
Basic Custom Handler
Operation Dictionary Format
Built-in Handler Examples
Kafka Handler
Database Handler
Webhook Handler
Enhanced CompositeHandler
Priority-Based Routing
Conditional Routing with Filters
Error Aggregation
Dynamic Handler Management
Advanced Patterns
Multi-Destination Routing
Environment-Based Configuration
Time-Based Filtering
Compliance-Focused Handler
Testing Custom Handlers
Unit Testing
Integration Testing
Mock Handlers for Testing
Best Practices
Error Handling
Performance Considerations
Security Considerations
See Also
Logging & Observability
Overview
Quick Start
Basic Configuration
Production Configuration (JSON)
configure_logging() Function
Signature
Parameters
Examples
Distributed Tracing with trace_id
Basic Usage
Microservices Example
User Context for Change Management
Basic Usage
Use Cases
Integration Examples
ELK Stack
AWS CloudWatch Logs
Best Practices
1. Configure Once at Startup
2. Use JSON in Production
3. Always Include trace_id in Distributed Systems
See Also
Summary
Debugging Guide
Table of Contents
Overview
Quick Start
Enable Debug Logging
Check Last Request
Monitor Connection Pool
Debug Mode
Boolean Debug Mode
String Debug Level
Debug Options
Connection Statistics
Real-Time Metrics
Formatted Output
Detecting Pool Issues
Request Inspection
Last Request Details
Formatted Request Info
Tracking Request Performance
Debug Session
Comprehensive Session Monitoring
Capture Response Data
Manual Session Control
Performance Analysis
Logging Configuration
Global Logging Setup
Per-Instance Logging
Custom Log Handler
Structured Logging Example
Performance Profiling
Debug Timer
Batch Operation Profiling
Comparing Performance
Common Debugging Scenarios
Scenario 1: Slow API Responses
Scenario 2: Connection Pool Exhaustion
Scenario 3: Debugging Failed Requests
Scenario 4: Performance Regression
Scenario 5: Rate Limiting Investigation
Integration with Observability Tools
ELK Stack
Splunk
CloudWatch
Best Practices
See Also
Rate Limiting and Resilience
Table of Contents
Overview
HTTP 429 Rate Limiting
Understanding FortiOS Rate Limits
Automatic Handling
Retry Strategies
Retry with Jitter
Circuit Breaker Pattern
Overview
Configuration
Manual Circuit Breaker Control
Exception Handling
Connection Pool Management
HTTP/2 Connection Pooling
Monitoring Connection Pool
Connection Pool Exhaustion
Async Patterns for High Throughput
Basic Async Usage
Concurrent Requests
Rate Limiting with Async
Async with Retry
Best Practices
1. Choose Appropriate Retry Strategy
2. Enable Circuit Breaker for Critical Services
3. Use Async for Bulk Operations
4. Monitor Connection Pool
5. Handle Exceptions Gracefully
6. Use Read-Only Mode for Auditing
7. Track Operations for Compliance
Configuration Examples
Conservative (Low Load)
Aggressive (High Load)
Production Recommended
See Also
Filtering, Sorting, and Formatting
Overview
Quick Examples
Filter Operators
Comparison Operators
Logical Operators
Filter Examples
Formatting Output
Pagination
Complete Examples
Example 1: Filter, Sort, and Format Addresses
Example 2: Find Specific Policies
Example 3: Paginated Results with All Features
Example 4: Search and Filter Addresses
Best Practices
Performance Optimization
Filter Efficiency
Code Clarity
Version Compatibility
Troubleshooting
No Results Returned
Format Parameter Not Working
See Also
Validation
Overview
Quick Examples
Coming Soon
Temporary Reference
Performance Testing and Optimization
Overview
Quick Start
Configuration Options
Connection Pool Settings
Timeout Settings
Coming Soon
Temporary Reference
Overview
Key Topics
Advanced Topics
See Also
Code Examples
Basic Usage Examples
Connection and Authentication
Basic Connection
Environment Variables
Firewall Addresses
Create Address
List Addresses
Update Address
Delete Address
Firewall Policies
Create Policy
List Policies
System Operations
Get System Status
List Interfaces
Get Interface Statistics
Schedules
Create Recurring Schedule
Create One-Time Schedule
Services
Create Custom Service
Create Service Group
Complete Example
See Also
Router Configuration Examples
BGP Configuration
Basic BGP Neighbor Setup
BGP Network Advertisement
BGP Route Aggregation
OSPF Configuration
OSPF Area Configuration
OSPF Network Configuration
OSPF Interface Configuration
RIP Configuration
RIP Network Setup
RIP Interface Configuration
RIP Neighbor Configuration
IS-IS Configuration
IS-IS Network Entity
IS-IS Interface Configuration
IS-IS Summary Addresses
BFD Configuration
BFD Neighbor Setup
BFD6 (IPv6) Configuration
Complete Example: Multi-Protocol Setup
Full Router Configuration
Error Handling Examples
Robust Configuration Function
Batch Configuration with Validation
See Also
Advanced Patterns
Async Operations
Bulk Operations
See Also
Error Handling Examples
Basic Exception Handling
Return Mode Error Handling
See Also
Validation Examples
Handling Validation Errors
Enum Validation
See Also
Overview
Quick Examples
Creating a Firewall Address
Creating a Firewall Policy
Querying System Status
Downloadable Examples
See Also
HFortix-FortiOS
Index
Edit on GitHub
Index
_
|
A
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
L
|
M
|
P
|
R
|
S
|
T
|
U
|
V
_
__aenter__() (hfortix_fortios.FortiOS method)
__aexit__() (hfortix_fortios.FortiOS method)
__dir__() (hfortix_fortios.api.API method)
(hfortix_fortios.FortiOS method)
__enter__() (hfortix_fortios.FortiOS method)
__exit__() (hfortix_fortios.FortiOS method)
__init__() (hfortix_fortios.api.API method)
(hfortix_fortios.FortiOS method)
,
[1]
(hfortix_fortios.Transaction method)
A
aclose() (hfortix_fortios.FortiOS method)
API (class in hfortix_fortios.api)
api (hfortix_fortios.FortiOS attribute)
,
[1]
(hfortix_fortios.FortiOS property)
APIError
AuthenticationError
C
close() (hfortix_fortios.FortiOS method)
cmdb (hfortix_fortios.api.API attribute)
,
[1]
connection_stats (hfortix_fortios.FortiOS property)
count()
D
delete()
E
endpoint (hfortix_fortios.APIError attribute)
error_code (hfortix_fortios.APIError attribute)
error_format (hfortix_fortios.FortiOS property)
error_mode (hfortix_fortios.FortiOS property)
exists()
export_audit_logs() (hfortix_fortios.FortiOS method)
F
FortiOS (class in hfortix_fortios)
,
[1]
G
get()
get_circuit_breaker_state() (hfortix_fortios.FortiOS method)
get_connection_stats() (hfortix_fortios.FortiOS method)
get_health_metrics() (hfortix_fortios.FortiOS method)
get_operations() (hfortix_fortios.FortiOS method)
get_retry_stats() (hfortix_fortios.FortiOS method)
get_write_operations() (hfortix_fortios.FortiOS method)
H
hint (hfortix_fortios.APIError attribute)
host (hfortix_fortios.FortiOS property)
http_status (hfortix_fortios.APIError attribute)
I
is_aborted (hfortix_fortios.Transaction attribute)
is_active (hfortix_fortios.Transaction attribute)
is_committed (hfortix_fortios.Transaction attribute)
L
last_request (hfortix_fortios.FortiOS property)
list()
list_transactions() (hfortix_fortios.FortiOS method)
log (hfortix_fortios.api.API attribute)
,
[1]
M
message (hfortix_fortios.APIError attribute)
method (hfortix_fortios.APIError attribute)
monitor (hfortix_fortios.api.API attribute)
,
[1]
P
params (hfortix_fortios.APIError attribute)
port (hfortix_fortios.FortiOS property)
R
request() (hfortix_fortios.FortiOS method)
request_id (hfortix_fortios.APIError attribute)
response (hfortix_fortios.APIError attribute)
S
service (hfortix_fortios.api.API attribute)
,
[1]
set()
T
timestamp (hfortix_fortios.APIError attribute)
Transaction (class in hfortix_fortios)
transaction() (hfortix_fortios.FortiOS method)
transaction_id (hfortix_fortios.Transaction attribute)
transactional() (hfortix_fortios.FortiOS method)
U
utils (hfortix_fortios.api.API attribute)
,
[1]
V
vdom (hfortix_fortios.FortiOS property)