@startuml !include ./schemes_setup.wsd Title Cisco FTD pydantic rule scheme class CiscoFTDPolicyPyModel { action : str applications : Optional[List] destination_networks : Optional[List] destination_ports : Optional[List] destination_zones : Optional[List] logging : Optional[] name : str position : int rule_hits : int safe_search : bool source_networks : Optional[List] source_ports : Optional[List] source_zones : Optional[List] time_range : Optional[] url_entries : Optional[List] usernames : Optional[List] variable_set : str } class CiscoFTDLoggingModel { device_connector_beginning : bool device_connector_end : bool device_connector_files : bool enabled : bool } CiscoFTDPolicyPyModel::logging o-- CiscoFTDLoggingModel class CiscoFTDZonePyModel { name : str } CiscoFTDPolicyPyModel::source_zones o-- CiscoFTDZonePyModel CiscoFTDPolicyPyModel::destination_zones o-- CiscoFTDZonePyModel class CiscoFTDURLEntryPyModel { name : str url : str } CiscoFTDPolicyPyModel::url_entries o-- CiscoFTDURLEntryPyModel class CiscoFTDUsernamePyModel { username : str } CiscoFTDPolicyPyModel::usernames o-- CiscoFTDUsernamePyModel package ports { class CiscoFTDPortPyModel { name : str port : Union[] protocol : int } CiscoFTDPolicyPyModel::source_ports o-- CiscoFTDPortPyModel CiscoFTDPolicyPyModel::destination_ports o-- CiscoFTDPortPyModel class CiscoFTDPortSingleValuePyModel { value : int } CiscoFTDPortPyModel::port o-- CiscoFTDPortSingleValuePyModel class CiscoFTDPortRangeValuePyModel { end : int start : int } CiscoFTDPortPyModel::port o-- CiscoFTDPortRangeValuePyModel } package time_range{ class CiscoFTDTimeRangePyModel { eff_end_datetime : Optional[str] eff_start_datetime : Optional[str] name : str time_range : Union[] time_range_type } CiscoFTDPolicyPyModel::time_range o-- CiscoFTDTimeRangePyModel class CiscoFTDTimeRangeRangeIntervalPyModel { end_day : Optional[str] end_time : Optional[str] start_day : Optional[str] start_time : Optional[str] } CiscoFTDTimeRangeRangeIntervalPyModel o-- CiscoFTDTimeRangePyModel::time_range class CiscoFTDTimeRangeDailyIntervalPyModel { days : Optional[str] end_time : Optional[str] start_time : Optional[str] } CiscoFTDTimeRangeDailyIntervalPyModel o-- CiscoFTDTimeRangePyModel::time_range } package source_destinations { class CiscoFTDNetworkRootPyModel { name : str object_type: Enum } CiscoFTDPolicyPyModel::source_networks o-- CiscoFTDNetworkRootPyModel CiscoFTDPolicyPyModel::destination_networks o-- CiscoFTDNetworkRootPyModel class CiscoFTDNetworkCountriesGroupPyModel { countries_count : int } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkCountriesGroupPyModel class CiscoFTDNetworkCountryPyModel { } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkCountryPyModel class CiscoFTDNetworkFQDNObjectPyModel { fqdn_address : str } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkFQDNObjectPyModel class CiscoFTDNetworkGroupPyModel { } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkGroupPyModel class CiscoFTDNetworkIPv4NetworkPyModel { address : str netmask : Optional[int] } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkIPv4NetworkPyModel class CiscoFTDNetworkIPv6NetworkPyModel { address : str prefix_length : Optional[int] } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkIPv6NetworkPyModel class CiscoFTDNetworkRangePyModel { end_address : str start_address : str } CiscoFTDNetworkRootPyModel <|-- CiscoFTDNetworkRangePyModel } @enduml