Filter Field Reference
Several parts of Athena let you describe machines with rules instead of hand-picking them: dynamic collections, automatic tagging rules, device monitors, and the report column picker. They all draw from one shared catalogue of filter fields. This page lists every predefined field, its data type, and the operators you can use against it, so you can write a rule once and know it will resolve.
Because the field list is shared, a field path that works in a dynamic collection also works in a tagging rule, a monitor condition, or as a report column. Field paths are case-insensitive.
Anatomy of a filter#
A single filter is a three-part comparison: a field path (which agent value to
read), an operator (how to compare it), and a value (what to
compare against). For example, OperatingSystem · Equals ·
Windows matches every Windows machine. Multiple filters are combined by the builder
you are using (for example, a dynamic collection matches agents that satisfy all of its filters).
Each field has a type — String, Number, Boolean, or DateTime — and the type
determines which operators are valid (see Operators). Values are compared
as the field's type: numbers numerically, dates as timestamps, booleans as
True/False, and strings textually.
Operators#
Ten operators are available. Which ones apply to a field depends on the field's type — for
instance, Contains is a string operator, and GreaterThan only makes
sense for numbers and dates.
| Operator | Matches when the field value… | Valid for field types |
|---|---|---|
Equals | equals the value | String, Number, Boolean, DateTime |
NotEquals | does not equal the value | String, Number, Boolean, DateTime |
Contains | contains the value as a substring | String |
NotContains | does not contain the value | String |
StartsWith | starts with the value | String |
EndsWith | ends with the value | String |
GreaterThan | is greater than the value | Number, DateTime |
LessThan | is less than the value | Number, DateTime |
GreaterThanOrEqual | is greater than or equal to the value | Number, DateTime |
LessThanOrEqual | is less than or equal to the value | Number, DateTime |
The default operator offered for a new filter is Contains for String fields and
Equals for Number, Boolean, and DateTime fields.
Predefined fields#
The fields below are always available, grouped by the category they appear under in the picker.
Field paths that contain a dot (for example HardwareInfo.Disks.FreeSizeGB) read into
a nested or multi-valued area of a machine's inventory.
Agent#
| Field path | Display name | Type | Notes |
|---|---|---|---|
MachineName | Machine Name | String | The computer / hostname of the agent (e.g. SERVER01, WEB-SERVER-01). |
MachineId | Machine ID | String | Unique machine identifier. |
OperatingSystem | Operating System | String | OS family only (Windows, Linux, MacOS). Use OSVersion for the edition and build. |
IpAddress | IP Address | String | Network IP address(es). |
Status | Agent Status | String | Online or Offline. |
LastHeartbeat | Last Heartbeat | DateTime | Last contact time with the server. |
RegisteredAt | Registration Date | DateTime | When the agent was first registered. |
AgentVersion | Agent Version | String | Installed agent version (e.g. 1.1.0). |
Agent Status#
| Field path | Display name | Type | Notes |
|---|---|---|---|
IsOnline | Is Online | Boolean | True if the agent is currently online. |
IsOffline | Is Offline | Boolean | True if the agent is currently offline. |
IsPending | Is Pending | Boolean | True if the agent is in a pending state. |
IsStale | Is Stale | Boolean | True if no heartbeat was received in the last 5 minutes. |
HasRecentInventory | Has Recent Inventory | Boolean | True if inventory was reported within the last 24 hours. |
IsCertificateExpired | Certificate Expired | Boolean | True if the agent certificate has expired. |
IsCertificateExpiringSoon | Certificate Expiring Soon | Boolean | True if the agent certificate expires within 30 days. |
System Type#
| Field path | Display name | Type | Notes |
|---|---|---|---|
IsServer | Is Server | Boolean | True if running a Windows Server operating system. |
IsDesktop | Is Desktop | Boolean | True if a desktop OS (not a server). |
IsLaptop | Is Laptop | Boolean | True if the chassis is Laptop — includes convertibles and detachables. |
IsTablet | Is Tablet | Boolean | True if a pure tablet (no keyboard); convertibles and detachables count as laptops. |
IsSFF | Is Small Form Factor | Boolean | True if a small form factor desktop (Mini PC, Stick PC or Embedded PC). |
IsConvertible | Is Convertible | Boolean | True if a convertible laptop (fold-back screen). Also counts as a laptop. |
IsDetachable | Is Detachable | Boolean | True if a detachable laptop (removable keyboard). Also counts as a laptop. |
ChassisType | Chassis Type | String | Chassis category: Laptop, Desktop, Tablet, Server, Other or Unknown. The specific shape is FormFactor — see Chassis & form factor. |
FormFactor | Form Factor | String | Specific form factor within the category: Convertible, Detachable, Notebook, Tower, Mini Tower, Mini PC, All-in-One, Rack Mount, etc. |
IsVirtualMachine | Is Virtual Machine | Boolean | True if running as a virtual machine. |
IsWindows | Is Windows | Boolean | True if running Windows. |
IsLinux | Is Linux | Boolean | True if running Linux. |
IsMacOS | Is macOS | Boolean | True if running macOS. |
IsDomainController | Is Domain Controller | Boolean | True if this is an Active Directory Domain Controller. |
IsDomainJoined | Is Domain Joined | Boolean | True if the machine is joined to an Active Directory domain. |
Hardware#
Disk fields match if any of a machine's own fixed drives satisfies the condition — so "Disk Free Space (GB) below 500" flags a machine when any one of its drives drops under 500 GB. Removable drives (such as USB sticks) and mapped network drives are ignored, as are boot/recovery stubs, so a plugged-in flash drive can't skew the result.
| Field path | Display name | Type | Notes |
|---|---|---|---|
HardwareInfo.Processor | Processor/CPU | String | CPU model and specifications. |
HardwareInfo.TotalMemoryMB | Total Memory (MB) | Number | Total RAM in megabytes (e.g. 8192, 16384, 32768). |
HardwareInfo.Manufacturer | Manufacturer | String | Hardware manufacturer (Dell, HP, Lenovo, …). |
HardwareInfo.Model | Model | String | Hardware model number. |
HardwareInfo.Disks.Name | Disk Name | String | Drive letter or mount point of any fixed drive (C:, D:, /, …). |
HardwareInfo.Disks.TotalSizeGB | Disk Total Size (GB) | Number | Total capacity in GB; matches if any fixed drive matches. |
HardwareInfo.Disks.FreeSizeGB | Disk Free Space (GB) | Number | Free space in GB; matches if any fixed drive matches. |
Manufacturer | Manufacturer | String | Hardware manufacturer name. |
Model | Model | String | Computer model name. |
SerialNumber | Serial Number | String | Hardware serial number. |
TotalMemoryMB | Total Memory (MB) | Number | Total physical RAM in megabytes. |
Software#
Installed-software fields match if any installed application satisfies the condition — for example, "Software Name contains Chrome" matches any machine that has Chrome installed.
| Field path | Display name | Type | Notes |
|---|---|---|---|
InstalledSoftware.Name | Software Name | String | Name of an installed application. |
InstalledSoftware.Version | Software Version | String | Application version number. |
InstalledSoftware.Publisher | Software Publisher | String | Software vendor / publisher. |
Services#
Windows service fields match if any service on the machine satisfies the condition.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Services.ServiceName | Service Name | String | Windows service name (e.g. wuauserv, W32Time, Spooler). |
Services.DisplayName | Service Display Name | String | Friendly display name for the service. |
Services.Status | Service Status | String | Service state: Running, Stopped, Paused. |
Services.StartupType | Service Startup Type | String | Auto, Manual, Disabled, Automatic (Delayed). |
Network#
| Field path | Display name | Type | Notes |
|---|---|---|---|
NetworkInterfaces.InterfaceName | Network Interface Name | String | Name of a network adapter (Ethernet 1, Wi-Fi, …). |
NetworkInterfaces.MacAddress | MAC Address | String | Physical/hardware address of a network adapter. |
NetworkInterfaces.IpAddress | Network IP Address | String | IP address(es) assigned to a network interface. |
Security#
| Field path | Display name | Type | Notes |
|---|---|---|---|
TPMPresent | TPM Present | Boolean | True if a TPM (Trusted Platform Module) chip is present. |
TPMVersion | TPM Version | String | TPM version number (e.g. 2.0, 1.2). |
TPMEnabled | TPM Enabled | Boolean | True if TPM is enabled. |
SecureBoot | Secure Boot | String | Whether Secure Boot is on, as reported by the agent. The stored value is true or false, so filter with Equals · true (case is ignored) rather than a word such as Enabled. |
RestartPending | Restart Pending | Boolean | true when the machine needs a restart for any reason: Windows servicing (component servicing, Windows Update, or pending file renames) or the Secure Boot certificate update waiting for a reboot. Same answer as the Restart Pending field on the agent's Boot & Security card. |
Security: Secure Boot 2023 certificate update#
These fields are also in the Security category. They track the Windows Secure Boot 2023 certificate rollout on each Windows machine. See Secure Boot 2023 Certificate Update for what each state and event means.
| Field path | Display name | Type | Notes |
|---|---|---|---|
SecureBootUpdateState | Secure Boot Update State | String | The overall update state shown on the agent's card, worked out from all the evidence the agent reports: Updated, Failed, PendingRestart, InProgress, Blocked, or NotStarted. Prefer this field over SecureBootCertStatus, which Windows often updates late. |
SecureBootRestartPending | Secure Boot Restart Pending | Boolean | true when the certificate update is waiting for a reboot (the state is PendingRestart). For "needs a restart for any reason", use RestartPending. |
SecureBootCertStatus | Secure Boot Cert Status (2023) | String | The raw status Windows reports, e.g. NotStarted, InProgress, Updated. |
SecureBootCertUpdateComplete | Secure Boot Cert Update Complete | Boolean | true when the update finished (event 1808 or status Updated). |
SecureBootLatestEventId | Secure Boot Latest Event ID | Number | ID of the newest Secure Boot servicing event in the System log, e.g. 1801, 1808. |
SecureBootCertError | Secure Boot Cert Error | Number | The update error code Windows reports (0 = none). |
SecureBootLastFailureCode | Secure Boot Last Failure Code | Number | Error code of the newest 1795/1796 failure event, as a signed 32-bit number. For example, 0x80071149 is stored as -2147020471. |
SecureBootKnownIssueId | Secure Boot Known Issue ID | String | Microsoft known-issue ID taken from the servicing event, e.g. KI_7. |
SecureBootBucketId | Secure Boot Bucket ID | String | Device bucket ID taken from the servicing event. Machines of the same hardware type share a bucket. |
SecureBootDbHasWindowsUefiCa2023 | Firmware db Has Windows UEFI CA 2023 | Boolean | true when the firmware's db, read directly from the firmware, holds the Windows UEFI CA 2023. |
SecureBootKekHas2023 | Firmware KEK Has 2023 CA | Boolean | true when the firmware's KEK holds the Microsoft Corporation KEK 2K CA 2023. |
An agent that reports no Secure Boot servicing data (for example a Linux agent, a legacy-BIOS machine,
or an older agent) has no value for these fields. As with every field, it then matches only
NotEquals and NotContains. So to target machines that still need the update,
use SecureBootUpdateState · Equals · NotStarted rather than
NotEquals · Updated, which would also match those machines.
System Information#
| Field path | Display name | Type | Notes |
|---|---|---|---|
DomainName | Domain Name | String | Active Directory domain name (or WORKGROUP). |
UserName | User Name | String | Current user the agent runs as. |
OSVersion | OS Version | String | Detailed OS version, edition, and build (e.g. Microsoft Windows 11 Pro). |
TimeZone | Time Zone | String | System time zone. |
Advanced#
| Field path | Display name | Type | Notes |
|---|---|---|---|
Metadata | Metadata (All Fields) | String | Searches across all of a machine's collected metadata for a value. Useful as a catch-all when you're not sure which specific field carries the value. |
Scan-discovered fields#
In addition to the predefined fields above, Athena offers filterable fields discovered from your own PowerShell scan results. Once an enabled scan has returned data, each property it reports becomes an additional field you can filter on, using the path form:
Scan.<scanDefinitionId>.<fieldName>
These appear in a category named after the scan (for example Scan: Disk Health). Scan fields are offered as String fields, so all string operators apply. A field is offered as soon as it appears in any recent result across the fleet — so a property that only some machines report is still selectable.
Module fields#
Add-on modules contribute their own filter fields to the same catalogue. They use the path form:
Module.<moduleId>.<fieldName>
In the picker, module fields appear in a category named after the module (for example Sysmon, BitLocker, Power Management, BIOS Configuration or Restart Policies). Because they come from the shared catalogue, you can use them in dynamic collections, automatic tagging rules, device monitors, and report filters, just like the predefined fields.
Types and operators#
| Module field type | Operators offered | How values compare |
|---|---|---|
| Boolean | Equals, NotEquals | Values are true or false. |
| Enum (a fixed list of values) | Equals, NotEquals | The picker lists the allowed values. Shown as a String field. |
| Version | Equals, NotEquals, GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual | Compared as dotted versions, so 15.22 is greater than 15.9. A bare major number such as 15 is read as 15.0. |
| Number | Same as Version | Compared numerically. |
| String | Equals, NotEquals, Contains, NotContains, StartsWith, EndsWith | Compared as text, ignoring case. |
Sysmon#
These fields report each agent's Sysmon state, as shown on the agent's Sysmon tab. See Sysmon Configuration.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Module.sysmon.Installed | Sysmon Installed | Boolean | Whether Sysmon is installed, from the agent's last report. |
Module.sysmon.State | Sysmon State | Enum | One of Unknown, Unsupported, Error, NotInstalled, NoConfig, NoActiveRevision, InSync, Drift. |
Module.sysmon.Version | Sysmon Version | Version | Installed Sysmon binary version. |
Module.sysmon.SchemaVersion | Sysmon Schema Version | Version | Schema version of the loaded configuration. |
Module.sysmon.ConfigHash | Sysmon Config Hash | String | Hash of the configuration currently loaded on the agent. |
Module.sysmon.ExpectedRevision | Sysmon Expected Revision | Number | The configuration revision Athena expects this agent to run. |
BitLocker#
These fields come from the BitLocker volume status each Windows agent reports. See BitLocker Management. Most of them describe the OS drive, and have no value for an agent that has not reported an OS volume. A drive counts as encrypted only once it is fully encrypted. A drive that is still encrypting does not count yet.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Module.bitlocker.ProtectionStatus | BitLocker OS Drive Protection | Enum | OS drive protection: On, Off, or Unknown. |
Module.bitlocker.EncryptionMethod | BitLocker OS Drive Encryption Method | String | The OS drive's encryption method as Windows reports it (for example XtsAes256 or None). |
Module.bitlocker.OsDriveEncrypted | BitLocker OS Drive Encrypted | Boolean | true when the OS drive is fully encrypted. |
Module.bitlocker.AnyUnencryptedFixed | BitLocker Any Unencrypted Fixed Drive | Boolean | true when any fixed data drive (not the OS drive) is not fully encrypted. |
Module.bitlocker.Readiness | BitLocker Readiness | Enum | For the OS drive: Capable or NotCapable. |
Module.bitlocker.SyncStatus | BitLocker Sync Status | Enum | The agent's enforcement sync state: InSync, Drift, Suspended, NotCapable, Applying, Failed or Unmanaged. Empty for an agent that has never been evaluated. |
SyncStatus has no value for an agent that has never been evaluated. Such an agent is
not Unmanaged. So Module.bitlocker.SyncStatus · Equals ·
Drift lists exactly the agents that the Drift tile on the BitLocker settings tab
counts. Like any field, NotEquals also matches agents that have never been evaluated.
Power Management#
These fields compare each agent's reported power settings with the power policy that applies to it. See Power Management.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Module.power.DriftState | Power Drift State | Enum | The agent's worst setting state, checked in this order: Failed, Drift, NotCapable, PolicyManaged, NotReportedSince, NotReported, Unmanaged, InSync. So one failed setting is never hidden by many in-sync ones. It is recalculated against the current policy each time. |
Module.power.Managed | Power Policy Managed | Boolean | true when an enabled power policy applies to the agent. |
Module.power.HasBattery | Power Has Battery | Boolean | From the agent's last report. false if the agent has never reported. |
Module.power.PolicyName | Power Policy Name | String | Name of the policy in effect. Empty for an agent no policy manages. |
Unlike most fields, DriftState, Managed and HasBattery always have
a value. An agent that has never reported power settings is NotReported, and an agent no
policy manages is Unmanaged. So Module.power.DriftState · Equals ·
Drift lists exactly the machines to fix. PolicyName is the one field that can
be empty. To ask whether anything manages a machine, filter on Managed instead.
BIOS Configuration#
These fields compare each Windows agent's last BIOS read with the BIOS baseline that governs it. Drift is worked out when the rule is evaluated, never stored. See BIOS Configuration.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Module.bios.ComplianceState | BIOS compliance state | Enum | One of Compliant, Drifted, Unknown, NoBaseline, NotSupported, NotReported. Linux and macOS agents are NotSupported. |
Module.bios.Compliant | BIOS compliant | Boolean | true only when the state is Compliant. |
Module.bios.DriftCount | BIOS drifted attributes | Number | How many managed attributes differ from the baseline. |
Module.bios.BaselineName | BIOS baseline | String | Name of the baseline that governs the machine. Empty when none does. |
ComplianceState, Compliant and DriftCount always have a value, so
Module.bios.ComplianceState · NotEquals · Compliant matches only
agents that really have that state, Linux and macOS included as NotSupported. To find the
machines to fix, use Module.bios.ComplianceState · Equals · Drifted.
Restart Policies#
These fields come from the restart state each agent last reported for Restart Policies, on Windows, Linux and macOS. An agent that has never reported its restart state has no value for any of them.
| Field path | Display name | Type | Notes |
|---|---|---|---|
Module.restart.State | Restart state | Enum | One of NotPending, Pending, Scheduled, Countdown, Snoozed, Overdue, Restarting, PendingAfterRestart, ExternallyScheduled, WaitingForSignedInUser, NotManaged, RestartFailed, WaitingForUnlock. See Fleet view and states. |
Module.restart.PrebootProtector | Pre-boot protector | String | What has to be entered at the machine before it can boot (see PIN and FileVault machines): TpmPin, TpmStartupKey, TpmPinStartupKey, Password, ExternalKey, FileVault or Unknown. Empty when nothing is needed. It is a text field, not a fixed list, so you can match that empty value. |
Module.restart.PendingHours | Restart pending (hours) | Number | Whole hours since the restart became pending, rounded down. No value when no restart is pending. |
Module.restart.Reasons | Restart reasons | String | A comma-separated list of why the restart is needed, for example OsUpdate,FileRename. Possible entries: ServicingStack, OsUpdate, Kernel, FileRename, ComputerRename, DomainJoin, SecureBoot, ConfigMgr, AthenaDeployment, Uptime, ScheduledRestart. Empty when there is no reason. |
Module.restart.UptimeDays | Uptime (days) | Number | Whole days since the machine's last boot, rounded down. No value when the agent has not reported a boot time. |
Module.restart.Policy | Restart policy | String | Name of the restart policy this server has in force on the agent. Empty when none is in force, including when another server's policy holds the machine. |
Use Contains on Reasons, because one machine can have several reasons:
Module.restart.Reasons · Contains · OsUpdate. To find machines no restart policy
on this server governs, use Module.restart.Policy · Equals with an empty value. To alert on
machines that have gone too long without a reboot, use Module.restart.UptimeDays ·
GreaterThan · 30 in a device monitor. The Agents list
also takes these fields in its address, for example /agents?field=Module.restart.State&value=Overdue.
Things to know#
- Licensed modules. Sysmon, BitLocker, Power Management, BIOS Configuration and Restart Policies are sold separately. If your license doesn't include a module, its fields don't appear in the picker, and any existing rule that uses them matches no agents. License changes take effect the next time a rule is evaluated. See Licensing.
- Unknown paths match nothing. A
Module.path that names a module or field that isn't loaded matches no agents, even withNotEquals. The server log records a warning for it. - Agents with no value. For a known field, an agent with no value (for example, one
that hasn't reported yet) fails every operator except
NotEqualsandNotContains. SoModule.sysmon.State·NotEquals·InSyncalso matches agents that have never reported. This is the same rule the predefined fields use.
Getting the live list#
The builders read this catalogue live, so it always reflects your current scan fields. You can fetch the same list from the API:
| Endpoint | Returns | Required permission |
|---|---|---|
GET api/collections/fields | Predefined fields, discovered scan fields, and fields from licensed modules, for the dynamic-collection builder. | Operator or Admin |
GET api/tagging-rules/fields | The same field catalogue as offered to the tagging-rule editor. | Users who can view tags |
A rule that names a field outside this catalogue (and outside your discovered scan fields) won't match anything, because Athena has no value to read for it. When in doubt, pick a field from the picker or from the live list above rather than typing a path by hand.
Where these fields are used#
- Dynamic collections — membership is every agent that matches the collection's filters.
- Automatic tagging rules — apply tags to agents that match a rule.
- Device monitors — raise alerts when a condition over these fields is met.
- Reports — choose these fields as report columns and filters.