I need to create a $filter query for the Microsoft Graph API that searches for a specific word in a string (the display name of users).
For example I'd want to be able to find all users that have "Esteban" in their names:
Luis Esteban
Alphonse Esteban
Esteban Luis
Alphonse Esteban Luis
The following query works, but only returns users that start with "Esteban" in their names, not users that contain "Esteban":
https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'Esteban')
I also tried using contains instead of startswith, but it gives an error response:
{ "error": { "code": "Request_BadRequest", "message": "An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed.", "innerError": { "request-id": "e5ed5c30-4e62-4497-8976-1d38167e759d", "date": "2018-09-13T23:17:17" } } }
And even though the Microsoft Graph docs say they support OData 4.0, they also say this:
"The contains string operator is currently not supported on any Microsoft Graph resources."
I also tried other commands given by the OData documentation and the construction rules that are supposed to be supported by filter and other query parameters.
In particular I tried combinations of these commands:
startswith
endswith
indexof
substring
but to no success. It seems the MS Graph API has no support for anything except startswith whatsoever.
I tried both v1.0 and the beta endpoints of the API.
Is there any other way, some smart combination of OData 4.0 commands and/or query parameters supported by the MS Graph API, that allows a search equivalent to contains?
PS: You can try out queries with the Graph Explorer here.