MS Graph API v1.0 cannot filter by onPremisesSamAccountName using Python requests

Viewed 251

I'm attempting to use Python + requests to talk with MS Graph API (v1.0) in order to filter user objects by the onPremisesSamAccountName property but am receiving this error when sending the simple query:

endpoint = "https://graph.microsoft.com/v1.0/users"

query_parameters = {
    '$filter': 'onPremisesSamAccountName eq \'somevalue\'',
    '$select': 'id,displayName,mail,onPremisesSamAccountName'
}

user_graph_data = requests.get(
    endpoint,
    headers={'Authorization': 'Bearer ' + result['access_token']},
    params=query_parameters
).json()

==============================

{
  "error": {
    "code": "Request_UnsupportedQuery",
    "message": "Unsupported or invalid query filter clause specified for property 'onPremisesSamAccountName' of resource 'User'.",
    "innerError": {
      "date": "...",
      "request-id": "...",
      "client-request-id": "..."
    }
  }
}

I am able to filter using this field while using Microsoft's Graph Explorer: https://developer.microsoft.com/en-us/graph/graph-explorer and the corresponding Javascript call in the developer console shows a successful call and response based on the filter with onPremisesSamAccountName.

The MS Graph docs for v1.0 state that this is a supported field for filtering as well:

Returned only on $select. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).

I'm also able to successfully filter using other fields such as 'mail' (i.e. changing the $filter string from 'onPremisesSamAccountName eq \'somevalue\'' to 'mail eq \'somevalue\'' works just fine, so I don't believe this is a syntactical error)

0 Answers
Related