DocumentsopnDossier
model-reference
model-reference
Type
External
Status
Published
Created
Jul 18, 2026
Updated
Jul 22, 2026
Updated by
Dosu Bot

Model Reference#

Auto-generated documentation - Do not edit manually. Regenerate with just generate-docs.

This document provides a complete reference of all data fields available in the opnDossier CommonDevice export model. This is the model used for JSON and YAML exports. It normalizes the raw OPNsense XML schema into clean, platform-agnostic types.

Table of Contents#


CommonDevice (Root)#

The root export object representing a normalized device configuration.

FieldTypeJSON KeyDescription
DeviceTypestringdevice_typePlatform identifier (e.g., "opnsense")
VersionstringversionFirmware/configuration version
ThemestringthemeWeb GUI theme name
SystemSystemsystemSystem-level settings
Interfaces[]InterfaceinterfacesNetwork interface configurations (flat array)
VLANs[]VLANvlansVLAN configurations
Bridges[]BridgebridgesNetwork bridge configurations
PPPs[]PPPpppsPPP connection configurations
GIFs[]GIFgifsGIF tunnel configurations
GREs[]GREgresGRE tunnel configurations
LAGGs[]LAGGlaggsLink aggregation configurations
VirtualIPs[]VirtualIPvirtualIpsCARP, IP alias, and proxy ARP configurations
InterfaceGroups[]InterfaceGroupinterfaceGroupsLogical interface group configurations
FirewallRules[]FirewallRulefirewallRulesNormalized firewall filter rules
NATNATConfignatNAT configuration (inbound and outbound)
DHCP[]DHCPScopedhcpDHCP server scopes, one per interface
DNSDNSConfigdnsDNS resolver and forwarder configuration
NTPNTPConfigntpNTP time synchronization settings
SNMPSNMPConfigsnmpSNMP service configuration
LoadBalancerLoadBalancerConfigloadBalancerLoad balancer and health monitor configuration
VPNVPNvpnVPN subsystem configurations
RoutingRoutingroutingGateways, gateway groups, and static routes
Certificates[]CertificatecertificatesTLS/SSL certificates
CAs[]CertificateAuthoritycasCertificate authorities
HighAvailabilityHighAvailabilityhighAvailabilityCARP/pfsync HA settings
IDS*IDSConfigidsIntrusion detection/prevention configuration
SyslogSyslogConfigsyslogRemote syslog forwarding configuration
Users[]UserusersSystem user accounts
Groups[]GroupgroupsSystem groups
Sysctl[]SysctlItemsysctlKernel tunable parameters
Packages[]PackagepackagesInstalled software packages
RevisionRevisionrevisionConfiguration revision metadata
NamedObjectsNamedObjectsnamedObjectsRegistry of named objects (firewall aliases), keyed by name; absent when the device has none

Enrichment fields (populated during export, not present in raw parse):

FieldTypeJSON KeyDescription
Statistics*StatisticsstatisticsCalculated configuration statistics
Analysis*AnalysisanalysisAnalysis findings and insights
SecurityAssessment*SecurityAssessmentsecurityAssessmentSecurity scores and recommendations
PerformanceMetrics*PerformanceMetricsperformanceMetricsPerformance-related metrics
ComplianceResults*ComplianceResultscomplianceResultsCompliance audit results from plugin-based checks

System Configuration#

Core system settings including hostname, DNS, web GUI, and SSH.

System#

FieldTypeJSON KeyDescription
Hostnamestringsystem.hostnameDevice hostname
Domainstringsystem.domainDNS domain name
Optimizationstringsystem.optimizationTCP/IP optimization profile
Languagestringsystem.languageWeb GUI language code
Timezonestringsystem.timezoneSystem timezone (Region/City)
TimeServers[]stringsystem.timeServersConfigured NTP server addresses
DNSServers[]stringsystem.dnsServersConfigured DNS resolver addresses
DNSAllowOverrideboolsystem.dnsAllowOverrideAllow DHCP/PPP DNS override
WebGUIWebGUIsystem.webGuiWeb GUI access configuration
SSHSSHsystem.sshSSH service configuration
FirmwareFirmwaresystem.firmwareFirmware version and update settings
DisableNATReflectionboolsystem.disableNatReflectionDisable hairpin NAT
DisableConsoleMenuboolsystem.disableConsoleMenuDisable console menu
IPv6Allowboolsystem.ipv6AllowEnable IPv6 traffic
Notes[]stringsystem.notesOperator notes

SSH#

FieldTypeJSON KeyDescription
Enabledboolsystem.ssh.enabledWhether SSH is active
Portstringsystem.ssh.portSSH listening port
Groupstringsystem.ssh.groupGroup allowed SSH access

WebGUI#

FieldTypeJSON KeyDescription
Protocolstringsystem.webGui.protocolWeb GUI protocol (http/https)
SSLCertRefstringsystem.webGui.sslCertRefSSL certificate reference ID
LoginAutocompleteboolsystem.webGui.loginAutocompleteBrowser autocomplete on login
MaxProcessesstringsystem.webGui.maxProcessesMax web server processes

Firmware#

FieldTypeJSON KeyDescription
Versionstringsystem.firmware.versionFirmware version string
Mirrorstringsystem.firmware.mirrorUpdate mirror URL
Flavourstringsystem.firmware.flavourFirmware flavour (OpenSSL/LibreSSL)
Pluginsstringsystem.firmware.pluginsComma-separated plugin list

Network Interfaces#

Network interface configurations are exported as a flat array, not a map.

Interface#

FieldTypeJSON KeyDescription
Namestringinterfaces[].nameLogical name (e.g., "lan", "wan", "opt1")
PhysicalIfstringinterfaces[].physicalIfPhysical device (e.g., "igb0", "em0")
Descriptionstringinterfaces[].descriptionHuman-readable label
Enabledboolinterfaces[].enabledAdministratively up
IPAddressstringinterfaces[].ipAddressIPv4 address
IPv6Addressstringinterfaces[].ipv6AddressIPv6 address
Subnetstringinterfaces[].subnetIPv4 subnet prefix length
SubnetV6stringinterfaces[].subnetV6IPv6 subnet prefix length
Gatewaystringinterfaces[].gatewayIPv4 gateway
GatewayV6stringinterfaces[].gatewayV6IPv6 gateway
BlockPrivateboolinterfaces[].blockPrivateBlock RFC 1918 traffic
BlockBogonsboolinterfaces[].blockBogonsBlock bogon traffic
Typestringinterfaces[].typeInterface type (dhcp, static, none)
MTUstringinterfaces[].mtuMaximum transmission unit
SpoofMACstringinterfaces[].spoofMacOverridden MAC address
Virtualboolinterfaces[].virtualVirtual interface flag

VLAN#

FieldTypeJSON KeyDescription
VLANIfstringvlans[].vlanIfVLAN interface name
PhysicalIfstringvlans[].physicalIfParent physical interface
Tagstringvlans[].tag802.1Q VLAN tag
Descriptionstringvlans[].descriptionDescription

Gateway#

FieldTypeJSON KeyDescription
Namestringrouting.gateways[].nameGateway name
Interfacestringrouting.gateways[].interfaceReachable interface
Addressstringrouting.gateways[].addressGateway IP address
IPProtocolstringrouting.gateways[].ipProtocolAddress family (inet/inet6)
Weightstringrouting.gateways[].weightPriority weight for multi-WAN
Descriptionstringrouting.gateways[].descriptionDescription
Monitorstringrouting.gateways[].monitorHealth monitoring IP
Disabledboolrouting.gateways[].disabledAdministratively disabled
DefaultGWstringrouting.gateways[].defaultGwDefault route marker
MonitorDisablestringrouting.gateways[].monitorDisableDisable health monitoring

Firewall and Security#

Firewall rules are normalized with clean boolean types and resolved endpoint addresses.

FirewallRule#

FieldTypeJSON KeyDescription
UUIDstringfirewallRules[].uuidUnique rule identifier
TypestringfirewallRules[].typeAction: "pass", "block", "reject"
DescriptionstringfirewallRules[].descriptionHuman-readable description
Interfaces[]stringfirewallRules[].interfacesApplied interface names
IPProtocolstringfirewallRules[].ipProtocolAddress family (inet/inet6)
ProtocolstringfirewallRules[].protocolLayer-4 protocol (tcp, udp, icmp)
SourceRuleEndpointfirewallRules[].sourceSource endpoint
DestinationRuleEndpointfirewallRules[].destinationDestination endpoint
DirectionstringfirewallRules[].directionTraffic direction (in, out, any)
FloatingboolfirewallRules[].floatingFloating rule (not interface-bound)
QuickboolfirewallRules[].quickQuick matching (first match wins)
GatewaystringfirewallRules[].gatewayPolicy-based routing gateway
LogboolfirewallRules[].logLog matched packets
DisabledboolfirewallRules[].disabledAdministratively disabled
TrackerstringfirewallRules[].trackerTracking identifier
StateTypestringfirewallRules[].stateTypeState tracking type

RuleEndpoint#

Used for both source and destination in firewall and NAT rules.

FieldTypeJSON KeyDescription
AddressstringaddressResolved address ("any", CIDR, hostname)
PortstringportPort or port range
NegatedboolnegatedInverted match (NOT logic)
AddressRef*ObjectRefaddressRefPresent when Address was expressed as a firewall alias; names the entry in namedObjects
PortRef*ObjectRefportRefPresent when Port was expressed as a firewall alias; names the entry in namedObjects

NamedObject and ObjectRef (firewall aliases)#

OPNsense and pfSense firewall aliases (host, network, port, and dynamic url/geoip/external tables) are exposed via the device-level namedObjects registry rather than a separate per-vendor table. A rule endpoint keeps its already-resolved inline Address/Port value and additionally carries an AddressRef/PortRef when that value originated from an alias, so existing consumers that only read the inline value are unaffected.

FieldTypeJSON KeyDescription
NamestringnamedObjects.<name>.nameAlias name; matches the registry key
TypestringnamedObjects.<name>.typehost, network, port, url, geoip, or external
Members[]stringnamedObjects.<name>.membersRaw member values (literal addresses/ports, or nested alias names); opaque for dynamic types
DescriptionstringnamedObjects.<name>.descriptionHuman-readable alias description, when present

ObjectRef (used by AddressRef/PortRef above) is a single-field pointer keyed into namedObjects:

FieldTypeJSON KeyDescription
NamestringnameThe referenced object's name, keying into namedObjects

Dynamic object types (url, geoip, external) are never expanded — their Members are recorded as-is and are not resolved into a flattened address/port set.


NAT Configuration#

NATConfig#

FieldTypeJSON KeyDescription
OutboundModestringnat.outboundModeMode: automatic, hybrid, advanced
ReflectionDisabledboolnat.reflectionDisabledNAT reflection turned off
OutboundRules[]NATRulenat.outboundRulesOutbound NAT rules
InboundRules[]InboundNATRulenat.inboundRulesPort-forward NAT rules

NATRule (Outbound)#

FieldTypeJSON KeyDescription
UUIDstringnat.outboundRules[].uuidUnique identifier
Interfaces[]stringnat.outboundRules[].interfacesApplied interfaces
Protocolstringnat.outboundRules[].protocolLayer-4 protocol
SourceRuleEndpointnat.outboundRules[].sourceSource endpoint
DestinationRuleEndpointnat.outboundRules[].destinationDestination endpoint
Targetstringnat.outboundRules[].targetTranslation target address
NatPortstringnat.outboundRules[].natPortTranslated destination port
Disabledboolnat.outboundRules[].disabledAdministratively disabled
Logboolnat.outboundRules[].logLog matched packets
Descriptionstringnat.outboundRules[].descriptionDescription

InboundNATRule (Port Forward)#

FieldTypeJSON KeyDescription
UUIDstringnat.inboundRules[].uuidUnique identifier
Interfaces[]stringnat.inboundRules[].interfacesApplied interfaces
Protocolstringnat.inboundRules[].protocolLayer-4 protocol
SourceRuleEndpointnat.inboundRules[].sourceSource endpoint
DestinationRuleEndpointnat.inboundRules[].destinationDestination endpoint
ExternalPortstringnat.inboundRules[].externalPortExternal port to forward
InternalIPstringnat.inboundRules[].internalIpInternal target IP
InternalPortstringnat.inboundRules[].internalPortInternal target port
Disabledboolnat.inboundRules[].disabledAdministratively disabled
Logboolnat.inboundRules[].logLog matched packets
Descriptionstringnat.inboundRules[].descriptionDescription

Services#

DHCPScope#

DHCP scopes are a flat array with one entry per interface.

FieldTypeJSON KeyDescription
Interfacestringdhcp[].interfaceBound interface name
Enabledbooldhcp[].enabledDHCP server active on interface
RangeDHCPRangedhcp[].rangeAddress pool range
Gatewaystringdhcp[].gatewayDefault gateway for clients
DNSServerstringdhcp[].dnsServerDNS server for clients
NTPServerstringdhcp[].ntpServerNTP server for clients
WINSServerstringdhcp[].winsServerWINS server for clients
StaticLeases[]DHCPStaticLeasedhcp[].staticLeasesFixed MAC-to-IP mappings

DHCPRange#

FieldTypeJSON KeyDescription
Fromstringdhcp[].range.fromFirst IP in pool
Tostringdhcp[].range.toLast IP in pool

DHCPStaticLease#

FieldTypeJSON KeyDescription
MACstringdhcp[].staticLeases[].macHardware MAC address
IPAddressstringdhcp[].staticLeases[].ipAddressFixed IP address
Hostnamestringdhcp[].staticLeases[].hostnameAssigned hostname
Descriptionstringdhcp[].staticLeases[].descriptionDescription

DNS (Unbound)#

FieldTypeJSON KeyDescription
Enabledbooldns.unbound.enabledUnbound resolver active
DNSSECbooldns.unbound.dnssecDNSSEC validation enabled
DNSSECStrippedbooldns.unbound.dnssecStrippedDNSSEC stripped mode

DNS (dnsmasq)#

FieldTypeJSON KeyDescription
Enabledbooldns.dnsMasq.enableddnsmasq forwarder active

VPN Configuration#

VPN (Root)#

FieldTypeJSON KeyDescription
OpenVPNOpenVPNConfigvpn.openVpnOpenVPN configurations
WireGuardWireGuardConfigvpn.wireGuardWireGuard configurations
IPsecIPsecConfigvpn.ipsecIPsec configurations

OpenVPN Server#

FieldTypeJSON KeyDescription
VPNIDstringvpn.openVpn.servers[].vpnIdUnique VPN instance ID
Modestringvpn.openVpn.servers[].modeServer mode
Protocolstringvpn.openVpn.servers[].protocolTransport protocol (UDP4/TCP4)
Interfacestringvpn.openVpn.servers[].interfaceListening interface
LocalPortstringvpn.openVpn.servers[].localPortListening port
Descriptionstringvpn.openVpn.servers[].descriptionDescription
TunnelNetworkstringvpn.openVpn.servers[].tunnelNetworkIPv4 tunnel network CIDR
TunnelNetworkV6stringvpn.openVpn.servers[].tunnelNetworkV6IPv6 tunnel network CIDR
LocalNetworkstringvpn.openVpn.servers[].localNetworkLocal network pushed to clients
MaxClientsstringvpn.openVpn.servers[].maxClientsMax simultaneous connections
Compressionstringvpn.openVpn.servers[].compressionCompression algorithm
StrictUserCNboolvpn.openVpn.servers[].strictUserCnEnforce CN-to-username matching
GWRedirboolvpn.openVpn.servers[].gwRedirRedirect all traffic through VPN

OpenVPN Client#

FieldTypeJSON KeyDescription
VPNIDstringvpn.openVpn.clients[].vpnIdUnique VPN instance ID
Modestringvpn.openVpn.clients[].modeClient mode
Protocolstringvpn.openVpn.clients[].protocolTransport protocol
Interfacestringvpn.openVpn.clients[].interfaceBound interface
ServerAddrstringvpn.openVpn.clients[].serverAddrRemote server address
ServerPortstringvpn.openVpn.clients[].serverPortRemote server port
Descriptionstringvpn.openVpn.clients[].descriptionDescription

WireGuard Server#

FieldTypeJSON KeyDescription
UUIDstringvpn.wireGuard.servers[].uuidUnique identifier
Enabledboolvpn.wireGuard.servers[].enabledInstance active
Namestringvpn.wireGuard.servers[].nameServer name
PublicKeystringvpn.wireGuard.servers[].publicKeyWireGuard public key
Portstringvpn.wireGuard.servers[].portUDP listening port
MTUstringvpn.wireGuard.servers[].mtuTunnel MTU
TunnelAddressstringvpn.wireGuard.servers[].tunnelAddressTunnel IP with prefix
DNSstringvpn.wireGuard.servers[].dnsDNS server for tunnel

WireGuard Client (Peer)#

FieldTypeJSON KeyDescription
UUIDstringvpn.wireGuard.clients[].uuidUnique identifier
Enabledboolvpn.wireGuard.clients[].enabledPeer active
Namestringvpn.wireGuard.clients[].namePeer name
PublicKeystringvpn.wireGuard.clients[].publicKeyPeer public key
TunnelAddressstringvpn.wireGuard.clients[].tunnelAddressAllowed IP address
ServerAddressstringvpn.wireGuard.clients[].serverAddressEndpoint address
ServerPortstringvpn.wireGuard.clients[].serverPortEndpoint port
Keepalivestringvpn.wireGuard.clients[].keepalivePersistent keepalive (secs)

IPsec#

FieldTypeJSON KeyDescription
Enabledboolvpn.ipsec.enabledIPsec subsystem active
PreferredOldSAboolvpn.ipsec.preferredOldSaPrefer old security associations
DisableVPNRulesboolvpn.ipsec.disableVpnRulesDisable auto firewall rules

Routing#

Routing (Root)#

FieldTypeJSON KeyDescription
Gateways[]Gatewayrouting.gatewaysNetwork gateways
GatewayGroups[]GatewayGrouprouting.gatewayGroupsGateway groups for failover
StaticRoutes[]StaticRouterouting.staticRoutesManually configured routes

StaticRoute#

FieldTypeJSON KeyDescription
Networkstringrouting.staticRoutes[].networkDestination CIDR
Gatewaystringrouting.staticRoutes[].gatewayNext-hop gateway name
Descriptionstringrouting.staticRoutes[].descriptionDescription
Disabledboolrouting.staticRoutes[].disabledAdministratively disabled

GatewayGroup#

FieldTypeJSON KeyDescription
Namestringrouting.gatewayGroups[].nameGroup name
Items[]stringrouting.gatewayGroups[].itemsMember gateways with tiers
Triggerstringrouting.gatewayGroups[].triggerFailover condition
Descriptionstringrouting.gatewayGroups[].descriptionDescription

Users and Groups#

Users and groups are top-level arrays, not nested under system.

User#

FieldTypeJSON KeyDescription
Namestringusers[].nameLogin username
Disabledboolusers[].disabledAccount locked
Descriptionstringusers[].descriptionDescription
Scopestringusers[].scopeScope (system, local)
GroupNamestringusers[].groupNamePrimary group
UIDstringusers[].uidNumeric user ID
APIKeys[]APIKeyusers[].apiKeysAPI key credentials

Group#

FieldTypeJSON KeyDescription
Namestringgroups[].nameGroup name
Descriptionstringgroups[].descriptionDescription
Scopestringgroups[].scopeScope (system, local)
GIDstringgroups[].gidNumeric group ID
Memberstringgroups[].memberComma-separated user UIDs
Privilegesstringgroups[].privilegesComma-separated privileges

Certificates#

Certificate#

FieldTypeJSON KeyDescription
RefIDstringcertificates[].refIdUnique reference ID
Descriptionstringcertificates[].descriptionDescription
Typestringcertificates[].typeCertificate type (server, user)
CARefstringcertificates[].caRefIssuing CA reference ID
Certificatestringcertificates[].certificatePEM-encoded certificate
PrivateKeystringcertificates[].privateKeyPEM-encoded private key

CertificateAuthority#

FieldTypeJSON KeyDescription
RefIDstringcas[].refIdUnique reference ID
Descriptionstringcas[].descriptionDescription
Certificatestringcas[].certificatePEM-encoded CA certificate
PrivateKeystringcas[].privateKeyPEM-encoded CA private key
Serialstringcas[].serialNext certificate serial number

Analysis & Findings#

The analysis enrichment field (Analysis, *Analysis) is populated during export, not present in the raw parse. It carries the output of opnDossier's shared detection engine (internal/analysis).

Analysis#

FieldTypeJSON KeyDescription
DeadRules[]DeadRuleFindinganalysis.deadRulesDeprecated. See DeadRuleFinding (deprecated) below.
UnusedInterfaces[]UnusedInterfaceFindinganalysis.unusedInterfacesInterfaces with no associated rules or services
SecurityIssues[]SecurityFindinganalysis.securityIssuesDetected security configuration issues
PerformanceIssues[]PerformanceFindinganalysis.performanceIssuesDetected performance configuration issues
ConsistencyIssues[]ConsistencyFindinganalysis.consistencyIssuesDetected configuration consistency issues
ShadowedRules[]ShadowedRuleFindinganalysis.shadowedRulesFirewall rules — or traffic subsets of rules — that never take effect because a higher-precedence rule already covers them. The richer successor to deadRules.

ShadowedRuleFinding#

Reported by internal/analysis.DetectShadowedRules, which models pf/OPNsense/pfSense rule-evaluation semantics directly (quick rules first-match, non-quick rules last-match, unscoped floating rules evaluated device-wide before interface rules).

FieldTypeJSON KeyDescription
Kindstringanalysis.shadowedRules[].kindfull (the entire rule is shadowed) or partial (only a traffic subset is eclipsed)
ImpactClassstringanalysis.shadowedRules[].impactClasssecurity (a pass rule defeats a deny), troubleshooting (a deny defeats a pass, or ambiguous overlap), or hygiene (redundant same-action coverage)
Severitystringanalysis.shadowedRules[].severitycritical, high, medium, or low — combines impact class and reachability (WAN exposure escalates)
Confidencestringanalysis.shadowedRules[].confidencehigh, or low for the unresolved-alias advisory case (see below)
RuleIndexintanalysis.shadowedRules[].ruleIndexPosition of the shadowed (loser) rule in firewallRules
ShadowedByIndexintanalysis.shadowedRules[].shadowedByIndexPosition of the covering (winner) rule in firewallRules
Interfacestringanalysis.shadowedRules[].interfaceInterface the shadow was detected on
Directionstringanalysis.shadowedRules[].directionEvaluation direction bucket (in or out) the shadow was resolved under
Portstringanalysis.shadowedRules[].portEclipsed port subset, populated for partial shadows only
Descriptionstringanalysis.shadowedRules[].descriptionHuman-readable summary of the shadow. Advisory findings (unresolved alias) are prefixed with (unconfirmed — unresolved alias).
Recommendationstringanalysis.shadowedRules[].recommendationSuggested corrective action

DeadRuleFinding (deprecated)#

Deprecated: deadRules remains populated for backward compatibility — it is a derived view covering only the unreachable-and-duplicate scenarios that shadow detection surfaces, re-projected into this narrower shape. The re-projection is not entry-for-entry: duplicate entries map one-to-one onto a shadowedRules entry, but unreachable entries are keyed by the block-all owner rule and have no corresponding shadowedRules entry (see Correlation key below). New integrations should read shadowedRules instead: it captures every full/partial shadow across all impact classes — not just the unreachable/duplicate cases — with richer classification (impactClass, confidence, the covering rule's index) that deadRules cannot express.
Correlation key: this only holds for duplicate entries — ruleIndex there is the shadowed (loser) rule and corresponds to the shadowedRules entry with the same ruleIndex, so those two can be deduped safely. For unreachable entries, ruleIndex instead identifies the block-all rule causing the unreachability (the owner, not a shadowed rule) — it has no corresponding shadowedRules entry, so consumers must not blanket-dedup both collections on ruleIndex.
Removal: deadRules will be removed no earlier than the next major version of opnDossier.

FieldTypeJSON KeyDescription
Kindstringanalysis.deadRules[].kindunreachable (the block-all owner rule that renders later rules unreachable) or duplicate
RuleIndexintanalysis.deadRules[].ruleIndexFor duplicate, position of the shadowed (loser) rule in firewallRules; for unreachable, position of the block-all owner rule causing it
Interfacestringanalysis.deadRules[].interfaceInterface the dead rule is bound to
Descriptionstringanalysis.deadRules[].descriptionSummary of why the rule is considered dead
Recommendationstringanalysis.deadRules[].recommendationSuggested corrective action