Join fellow LogicMonitor users at the Elevate Community Conference and get hands-on with our latest product innovations.

Register Now

Resources

Explore our blogs, guides, case studies, eBooks, and more actionable insights to enhance your IT monitoring and observability.

View Resources

About us

Get to know LogicMonitor and our team.

About us

Documentation

Read through our documentation, check out our latest release notes, or submit a ticket to our world-class customer service team.

View Resources

REST API Advanced Filters

Last updated on 07 October, 2024

LogicMonitor REST API advanced filters are applied to key-value pairs where values are in JSON format. For example, in /device/devices APIs you can apply advanced filters for the keys – autoPropertiesinheritedPropertiessystemProperties, and customProperties.

This article uses REST API /alert/alerts and /device/devices as examples to explain how you can use advanced filters. 

Note:

  • The advanced filter structure used for /device/devices/ API will not work for /alert/alerts/ API.
  • The json_key_parameter and escaped json_value_parameter will not work for /alert/alerts/ API.
  • The examples used in this support article are samples only and must be modified to suit your business requirements.
  • Structure of Advanced Filters

    The following examples show the structure of advanced filters.

    • Normal query
    {{url}}/<api>?filter=<json_key_parameter>:"{<escaped json_value_parameter>}"&fields=<if any separated by ,>
    • Operator not equal (!:) filter query
    {{url}}/<api>?filter=<json_key_parameter>!:"{<escaped json_value_parameter>}"
    • Operator contains (~) filter query
    {{url}}<api>?filter=<json_key_parameter>~"{<escaped json_value_parameter>}"
    • Operator not contains (!~) filter query
    {{url}}<api>?filter=<json_key_parameter>!~"{<escaped json_value_parameter>}"
    • Operator special_eq (:::) filter query where it checks both null and empty values
    {{url}}<api>?filter=<json_key_parameter>:::empty
    • Operator special_ne (!::) filter query where it checks if the value is not empty or null
    {{url}}<api>?filter=<json_key_parameter>!::empty
    • Operator special_ne (!::) filter query where it checks if the value is not null
    {{url}}<api>?filter=<json_key_parameter>!::null
    • Operator logical OR (||) filter query
    {{url}}<api>?filter=<json_key_parameter_1>:"{<escaped json_value_parameter_1>}" || <json_key_parameter_2>:"{<escaped json_value_parameter_2>}"
    • Single and advanced filter query
    {{url}}<api>?filter=<json_key_parameter>:"{<escaped json_value_parameter>}",<non-json_key_parameter>:<non-json_value_paramter>

    Components of Advanced Filters

    The components of the advanced filter queries are as follows:

    ComponentsDescription with Examples
    {{url}}https://<company>.logicmonitor.com/santaba/rest
    <api>APIs, for example, /device/devices and /device/groups
    <json_key_parameter>In case of /device/devices, values can be autoPropertiesinheritedPropertiessystemProperties, and customProperties
    {<unescaped json_value_paramter>}For example, {"name":"testPROPERTY","value":"service"}
    {<escaped json_value_parameter>}For example, {\"name\":\"testPROPERTY\",\"value\":\"service\"}
    <non-json_key_parameter>Key whose value is not JSON. For example, idnamedisplayName, and so on.
    <non-json_value_paramter>Single values for example, id: 100, “name”: “Instance”
    Here, the non JSON value for id is 100 and for name it is Instance

    Use Case

    You can use advanced filters to get key-value pairs for any property with JSON as the value parameter.

    Device 1 (“id”: 3793) has the following systemProperties.

    {
    "id": 3793,
    "name": "sfsf",
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.description",
    "value": "dummy"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "3793"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.deviceGroupId",
    "value": "1"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1556854294"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "sfsf"
    },
    {
    "name": "system.hostname",
    "value": "sfsf"
    }
    ]
    }

    Device 2 (“id”: 3792) has the following systemProperties.

    {
    "id": 3792,
    "name": "cc",
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.description",
    "value": "sfsf"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "3792"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.deviceGroupId",
    "value": "1"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1556852762"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "cc"
    },
    {
    "name": "system.hostname",
    "value": "cc"
    }
    ]
    }

    When you run the following basic filter query

    {{url}}/device/devices?filter=systemProperties.name:"system.description",systemProperties.value:"sfsf"

    In the response body this query lists all devices (device 1 and 2) with systemProperties name “system.description” and devices with systemProperties value “sfsf“.

    When you run the following advanced filter query

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"

    In the response body this query lists devices (only device 2) with key-value pair i.e. systemProperties system.description:”sfsf“.

    /device/devices Filter Examples

    The following sections provide examples of the /device/devices filter.

    /device/devices API

    Filter structure:

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    Example:

    https://localdev.logicmonitor.com/santaba/rest/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    /device/groups API

    Filter structure:

    {{url}}/device/groups?filter=customProperties:"{\"name\":\"test11\",\"value\":\"test11\"}"

    Example:

    https://localdev.logicmonitor.com/santaba/rest/device/groups?filter=customProperties:"{\"name\":\"test11\",\"value\":\"test11\"}"

    Query Examples

    The following sections provide examples of filter queries.

    systemProperties

    Operator equals (:) filter queries:

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    The response body returns all devices with systemProperties that contain name:system.description AND value:sfsf

    {
    "total":1,
    "items":[
    {
    "id":770544,
    "name":"10.241.242.102",
    "systemProperties":[
    {
    "name":"system.enablenetflow",
    "value":"false"
    },
    {
    "name":"system.collectorplatform",
    "value":"linux"
    },
    {
    "name":"system.description",
    "value":"sfsf"
    },
    {
    "name":"system.collectorid",
    "value":"11934"
    },
    {
    "name":"system.deviceId",
    "value":"770544"
    },
    {
    "name":"system.prefcollectordesc",
    "value":"centos-systemd-1"
    },
    {
    "name":"system.collectordesc",
    "value":"centos-systemd-1"
    },
    {
    "name":"system.groups",
    "value":"Synthetics_Resource_Group,demo:/dasdas,152_SJ_dy,DeadDeviceGrp,175_SJ_2"
    },
    {
    "name":"system.deviceGroupId",
    "value":"56255,103904,23105,21122,142395"
    },
    {
    "name":"system.resourceCreatedOn",
    "value":"1652188809"
    },
    {
    "name":"system.devicetype",
    "value":"0"
    },
    {
    "name":"system.collectorversion",
    "value":"29107"
    },
    {
    "name":"system.staticgroups",
    "value":"Synthetics_Resource_Group"
    },
    {
    "name":"system.prefcollectorid",
    "value":"11934"
    },
    {
    "name":"system.displayname",
    "value":"my test vm"
    },
    {
    "name":"system.hoststatus",
    "value":"dead-collector"
    },
    {
    "name":"system.hostname",
    "value":"10.241.242.102"
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    customProperties

    Run the query filter: 

    {{url}}/device/devices?filter=customProperties:"{\"name\":\"testPROPERTY\",\"value\":\"service\"}"&fields=customProperties,name,id

    The response body returns all devices with customProperties that contain name:testPROPERTY AND value:service

    {
    "total":1,
    "items":[
    {
    "id":44,
    "name":"Instance",
    "customProperties":[
    {
    "name":"testPROPERTY",
    "value":"service"
    },
    {
    "name":"same case",
    "value":"service"
    },
    {
    "name":"snmp.test",
    "value":"test"
    },
    {
    "name":"predef.bizservice.evalMembersInterval",
    "value":"30"
    },
    {
    "name":"predef.bizservice.members",
    "value":"{\"device\":[],\"instance\":[{\"deviceGroupFullPath\":\"jenny/jenny1*\",\"deviceDisplayName\":\"10.131.1.17\",\"deviceProperties\":[],\"dataSourceFullName\":\"jenny_script_time\",\"dataSourceId\":2001791,\"instanceName\":\"*\"}]}"
    },
    {
    "name":"system.categories",
    "value":""
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    autoProperties

    Run the query filter: 

    {{url}}/device/devices?filter=autoProperties:"{\"name\":\"predef.externalResourceID\",\"value\":\"service_63\"}"&fields=autoProperties,name,id

    The response body returns all devices with autoProperties that contain name:predef.externalResourceID AND value:service_63

    {
    "total":1,
    "items":[
    {
    "id":63,
    "name":"gcp",
    "autoProperties":[
    {
    "name":"predef.externalResourceID",
    "value":"service_63"
    },
    {
    "name":"predef.externalResourceType",
    "value":"Service"
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    systemProperties and inheritedProperties

    Run the query filter:

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.displayname\",\"value\":\"qqq1\"}",inheritedProperties:"{\"name\":\"fdfdf\",\"value\":\"121212\"}"

    The response body returns all devices with systemProperties that contain name:system.displayname AND value:qqq1 AND inheritedProperties name:fdfdf AND value:121212

    {
    "total": 1,
    "items": [
    {
    "id": 770544,
    "name": "10.241.242.102",
    "displayName": "my test vm",
    "deviceType": 0,
    "relatedDeviceId": -1,
    "currentCollectorId": 11934,
    "preferredCollectorId": 11934,
    "autoBalancedCollectorGroupId": 0,
    "preferredCollectorGroupId": 581,
    "preferredCollectorGroupName": "Netflow",
    "description": "sfsf",
    "createdOn": 1652188809,
    "updatedOn": 1652188809,
    "disableAlerting": false,
    "autoPropsAssignedOn": 0,
    "autoPropsUpdatedOn": 0,
    "scanConfigId": 0,
    "link": "",
    "enableNetflow": false,
    "netflowCollectorId": 0,
    "netflowCollectorGroupId": 0,
    "netflowCollectorGroupName": null,
    "isPreferredLogCollectorConfigured": false,
    "currentLogCollectorId": 0,
    "logCollectorId": 0,
    "logCollectorDescription": null,
    "logCollectorGroupId": 0,
    "logCollectorGroupName": null,
    "lastDataTime": 0,
    "lastRawdataTime": 0,
    "hostGroupIds": "56255,103904,23105,21122,142395",
    "sdtStatus": "none-none-none",
    "userPermission": "write",
    "rolePrivileges": [],
    "hostStatus": "dead-collector",
    "alertStatus": "unconfirmed-critical-none",
    "alertStatusPriority": 1,
    "awsState": 1,
    "azureState": 1,
    "gcpState": 1,
    "alertDisableStatus": "none-none-none",
    "alertingDisabledOn": null,
    "collectorDescription": "centos-systemd-1",
    "netflowCollectorDescription": null,
    "customProperties": [
    {
    "name": "sn.cmdb_url",
    "value": "https://ven02915.service-now.com/nav_to.do?uri=cmdb_ci.do?sys_id=a1750a00db11d110afef285b13961906"
    },
    {
    "name": "sn.sys_id",
    "value": "a1750a00db11d110afef285b13961906"
    },
    {
    "name": "system.categories",
    "value": ""
    }
    ],
    "resourceIds": null,
    "upTimeInSeconds": 0,
    "deletedTimeInMs": 0,
    "toDeleteTimeInMs": 0,
    "hasDisabledSubResource": false,
    "ancestorHasDisabledLogicModule": false,
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "linux"
    },
    {
    "name": "system.description",
    "value": "sfsf"
    },
    {
    "name": "system.collectorid",
    "value": "11934"
    },
    {
    "name": "system.deviceId",
    "value": "770544"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "centos-systemd-1"
    },
    {
    "name": "system.collectordesc",
    "value": "centos-systemd-1"
    },
    {
    "name": "system.groups",
    "value": "Synthetics_Resource_Group,demo:/dasdas,152_SJ_dy,DeadDeviceGrp,175_SJ_2"
    },
    {
    "name": "system.deviceGroupId",
    "value": "56255,103904,23105,21122,142395"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1652188809"
    },
    {
    "name": "system.devicetype",
    "value": "0"
    },
    {
    "name": "system.collectorversion",
    "value": "29107"
    },
    {
    "name": "system.staticgroups",
    "value": "Synthetics_Resource_Group"
    },
    {
    "name": "system.prefcollectorid",
    "value": "11934"
    },
    {
    "name": "system.displayname",
    "value": "my test vm"
    },
    {
    "name": "system.hoststatus",
    "value": "dead-collector"
    },
    {
    "name": "system.hostname",
    "value": "10.241.242.102"
    }
    ],
    "autoProperties": [],
    "inheritedProperties": [
    {
    "name": "test11",
    "value": "test11"
    },
    {
    "name": "testPropertyTel",
    "value": "tel:18618198654"
    },
    {
    "name": "testPropertyHttps",
    "value": "https://test.com"
    },
    {
    "name": "mayank.pass",
    "value": "********"
    },
    {
    "name": "test.pass",
    "value": "********"
    },
    {
    "name": "test",
    "value": "test"
    },
    {
    "name": "fdfdf",
    "value": "121212"
    },
    {
    "name": "jnj",
    "value": "jnj"
    },
    {
    "name": "snmp.community",
    "value": "********"
    },
    {
    "name": "xen.user",
    "value": "root"
    },
    {
    "name": "esx.pass",
    "value": "********"
    },
    {
    "name": "tomcat.jmxports",
    "value": "9003"
    },
    {
    "name": "netapp.user",
    "value": "abhi9999"
    },
    {
    "name": "testPropertyHttp",
    "value": "http://test.com"
    },
    {
    "name": "xen.url",
    "value": ""
    },
    {
    "name": "becca",
    "value": "something"
    },
    {
    "name": "testPropertySkype",
    "value": "skype:21268822"
    },
    {
    "name": "testPropertyMailto",
    "value": "mailto:[email protected]"
    },
    {
    "name": "mayank",
    "value": "test"
    },
    {
    "name": "fang_wan",
    "value": "192.192.178.1"
    },
    {
    "name": "SS",
    "value": "wwww"
    },
    {
    "name": "test22",
    "value": "test22"
    },
    {
    "name": "esx.user",
    "value": "adsf"
    },
    {
    "name": "test.ipsi",
    "value": " "
    },
    {
    "name": "rootProp",
    "value": "test"
    },
    {
    "name": "xen.pass",
    "value": "********"
    },
    {
    "name": "today.date",
    "value": "8June"
    },
    {
    "name": "Test_prop1",
    "value": "test1"
    },
    {
    "name": "test2",
    "value": "test2"
    },
    {
    "name": "api-property1553839486",
    "value": "value"
    },
    {
    "name": "ssh.pass",
    "value": "********"
    }
    ],
    "syntheticsCollectorIds": []
    }
    ],
    "searchId": null,
    "isMin": false
    }

    Operator Usage in Advanced Filters for /device/devices API 

    • Operator not equal (!:) filter query
    {{url}}/device/devices?filter=customProperties!:"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"
    • Operator contains (~) filter query
    {{url}}/device/devices?filter=customProperties~"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"
    • Operator not contains (!~) filter query
    {{url}}/device/devices?filter=customProperties!~"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"

    Note: You will not get all possible values by merely using the contains (~) and not contains (!~) filter. Instead, these filter will give an exact match. To get all possible values, add an asterisk (*)to the filter. For example, you can write “ATT*” or “*ATT” in

    • Contains:
      url/device/devices/?filter=customProperties~”{\”name\”:\”FilterTest\”,\”value\”:\”ATT*\”}”&fields=id,name,customProperties
    • Not contains:
      url/device/devices/?filter=customProperties!~”{\”name\”:\”FilterTest\”,\”value\”:\”ATT*\”}”&fields=id,name,customProperties
    • Operator special_eq (:::) filter query
    {{url}}/device/devices?filter=inheritedProperties:::empty

    The response body returns all devices that do no have inheritedProperties. Empty checks for both null and empty.

    • Operator special_ne (!::) filter query
    {{url}}/device/devices?filter=netflowCollectorDescription!::empty

    The response body returns all devices where netflowCollectorDescription is not empty or null.

    • Operator special_ne (!::) filter query
    {{url}}/device/devices?filter=netflowCollectorDescription!::null

    In the response body this query gives all the devices where netflowCollectorDescription is not null.

    • Operator logical OR (||) filter query
    {{url}}/device/devices?filter=customProperties:"{\"name\":\"testPROPERTY\",\"value\":\"service\"}" || customProperties:"{\"name\":\"system.categories\",\"value\":\"KubernetesLogicalService\"}"
    • Single and advanced filter query
    {{url}}/device/devices?fields=systemProperties,name,id&filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}",id>100

    Example: 
    Run the query

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.hostname\",\"value\":\"ay_service1_*\"}",id>1528&fields=systemProperties,id

    In the response body this query gives the following result:

    {
    "total": 1,
    "items": [
    {
    "id": 1530,
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "1530"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.groups",
    "value": "Ay_service_group"
    },
    {
    "name": "system.deviceGroupId",
    "value": "478"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1552015277"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.staticgroups",
    "value": "Ay_service_group"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "ay_service1_CLONE1"
    },
    {
    "name": "system.hostname",
    "value": "ay_service1_CLONE1"
    }
    ]
    }
    ],
    "searchId": null,
    "isMin": false
    }

    Operator Usage in Advanced Filters for /alert/alerts API

    Note: Alert filters for monitorObjectGroups are supported only for fullpath property. Currently, only 2 operators – Equal (:) and Contain (~) are supported.

    Equal (:) and Contain (~) Operators

    • Filter alerts that have Resource Group or monitorObjectGroups’s fullpath=”Devices by Type/Collectors”
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors"

    Example

    https://localdev.logicmonitor.com/santaba/rest/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors"
    • Filter alerts that have Resource Group (“Devices by Type”) or its subgroups. “*” at the end indicates that it also includes the subgroups. For example, a Resource Group (“Devices by Type”) has 2 subgroups: Collectors (“Devices by Type/Collectors”) and Linux Servers (“Devices by Type/Linux Servers”). Here, the result will include alerts having Resource Groups either (fullpath=”Devices by Type”) or (fullpath=”Devices by Type/Collectors”) or (fullpath=”Devices by Type/Linux Servers”)
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type*"
    • Filter alerts based on multiple Resource Group values (multiple fullpath values should be separated by “|”)
      Filter alerts that have (fullpath=”Devices by Type/Collectors”) or (fullpath=”Kubernetes Cluster: k8-test/Nodes/All”)
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors|Kubernetes Cluster: k8-test/Nodes/All"
    • Filter alerts of root Group. If the fullpath of the root group is empty, then the company name (for example, qauat01) should be provided.
    {{url}}/alert/alerts?filter=monitorObjectGroups:"qauat01"
    • Filter alerts that match with “Collectors” in the Resource Group fullpath. If there are 2 groups with fullpath as “Devices by Type/Collectors” and “Collectors_Backup” then the result will contain alerts from both the groups.
    {{url}}/alert/alerts?filter=monitorObjectGroups~"Collectors"
    • Single and advanced filter query
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors",startEpoch>:1653295431
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors",type:"batchJobAlert"
    In This Article

    Get Started with LogicMonitor