Utiliser le paramètre de requête $search
Outre les autres paramètres de requête OData, Microsoft Graph prend en charge le paramètre de requête $search
pour limiter les résultats d’une requête qui répondent à un critère de recherche.
La prise en charge du paramètre de requête $search
varie selon l’entité, dont certaines telles que les ressources Azure AD dérivant de directoryObject, prennent uniquement en charge $search
dans les requêtes avancées.
Remarque
Le paramètre de requête $search
n’est actuellement pas disponible dans les clients Azure AD B2C.
Utilisation du critère $search dans les collections de messages
Vous pouvez rechercher des messages en fonction d’une valeur dans les propriétés de message spécifiques. Les résultats de la recherche sont triés par date et heure d’envoi du message. Une $search
requête renvoie jusqu’à 1 000 résultats.
Si vous effectuez une recherche sur des messages et que vous spécifiez une valeur sans propriété de message spécifique, la recherche est effectuée sur les propriétés de recherche par défaut des éléments from, subject et body.
L’exemple suivant renvoie tous les messages de la boîte de réception de l’utilisateur connecté dont l’une des trois propriétés de recherche par défaut contient « pizza » :
GET https://graph.microsoft.com/v1.0/me/messages?$search="pizza"
Vous pouvez également rechercher des messages en spécifiant les noms de propriété des messages dans le tableau suivant, qui seront reconnus par la syntaxe de langage de requête de mot clé (KQL). Ces noms de propriété correspondent aux propriétés définies dans l’entité de message de Microsoft Graph. Outlook et d’autres applications Microsoft 365, telles que SharePoint, prennent en charge la syntaxe KQL et procurent le confort d’un domaine de découverte en commun pour leurs magasins de données.
Propriété de messagerie utilisable dans une requête | Description | Exemple |
---|---|---|
attachment | Nom des fichiers joints à un message électronique. | GET../me/messages?$search="attachment:api-catalog.md" |
bcc | Champ Cci d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET../me/messages?$search="bcc:samanthab@contoso.com"&$select=subject,bccRecipients |
body | Corps d’un message électronique. | GET../me/messages?$search="body:excitement" |
cc | Champ Cc d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET../me/messages?$search="cc:danas"&$select=subject,ccRecipients |
from | Expéditeur d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET../me/messages?$search="from:randiw"&$select=subject,from |
hasAttachment | True si un message électronique contient une pièce jointe qui n’est pas une pièce jointe incorporée, False dans le cas contraire. | GET../me/messages?$search="hasAttachments:true" |
importance | Importance d’un message électronique, que l’expéditeur peut préciser lors de l’envoi. Les valeurs possibles sont low , medium ou high . |
GET../me/messages?$search="importance:high"&$select=subject,importance |
kind | Type du message. Les valeurs possibles sont contacts , docs , email , faxes , im , journals , meetings , notes , posts , rssfeeds , tasks ou voicemail . |
GET../me/messages?$search="kind:voicemail" |
participants | Champs De, À, Cc et Cci d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET../me/messages?$search="participants:danas" |
received | Date à laquelle un message électronique a été reçu par un destinataire. | GET../me/messages?$search="received:07/23/2018"&$select=subject,receivedDateTime |
recipients | Champs À, Cc et Cci d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET../me/messages?$search="recipients:randiq"&$select=subject,toRecipients,ccRecipients,bccRecipients |
sent | Date à laquelle un message électronique a été envoyé par l’expéditeur. | GET../me/messages?$search="sent:07/23/2018"&$select=subject,sentDateTime |
size | Taille d’un élément, en octets. | GET../me/messages?$search="size:1..500000" |
subject | Texte de la ligne d’objet d’un message électronique. . | GET../me/messages?$search="subject:has"&$select=subject |
to | Champ À d’un message électronique spécifié en tant qu’adresse SMTP, nom d’affichage ou alias. | GET.../me/messages?$search="to:randiw"&$select=subject,toRecipients |
Pour plus d’informations sur les propriétés de messagerie utilisables dans une requête, la syntaxe KQL et les opérateurs pris en charge, et pour bénéficier de conseils sur la recherche, consultez les articles suivants :
Utilisation du critère $search dans les collections person
Vous pouvez utiliser l’API Contacts de Microsoft Graph pour récupérer les contacts les plus pertinents pour un utilisateur. La pertinence est déterminée par les relations professionnelles, ainsi que les modèles de communication et de collaboration de l’utilisateur. L’API Contacts prend en charge les paramètres de requête $search
. Une requête $search
renvoie jusqu’à 250 résultats.
Les recherches de contacts sont effectuées dans les propriétés displayName et emailAddress de la ressource person.
La requête suivante recherche une personne nommée « Irene McGowen » dans les propriétés displayName et emailAddress de chaque personne figurant dans la collection people de l’utilisateur connecté. Étant donné qu’une personne nommée « Irene McGowan » est pertinente pour l’utilisateur connecté, les informations relatives à « Irene McGowan » sont renvoyées.
GET https://graph.microsoft.com/v1.0/me/people/?$search="Irene McGowen"
L’exemple suivant illustre la réponse.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"id": "C0BD1BA1-A84E-4796-9C65-F8A0293741D1",
"displayName": "Irene McGowan",
"givenName": "Irene",
"surname": "McGowan",
"birthday": "",
"personNotes": "",
"isFavorite": false,
"jobTitle": "Auditor",
"companyName": null,
"yomiCompany": "",
"department": "Finance",
"officeLocation": "12/1110",
"profession": "",
"userPrincipalName": "irenem@contoso.onmicrosoft.com",
"imAddress": "sip:irenem@contoso.onmicrosoft.com",
"scoredEmailAddresses": [
{
"address": "irenem@contoso.onmicrosoft.com",
"relevanceScore": -16.446060612802224
}
],
"phones": [
{
"type": "Business",
"number": "+1 412 555 0109"
}
],
"postalAddresses": [],
"websites": [],
"personType": {
"class": "Person",
"subclass": "OrganizationUser"
}
}
]
}
Pour en savoir plus sur l’API Contacts, consultez l’article Utiliser l’API Contacts dans Microsoft Graph pour obtenir des informations sur les contacts plus pertinents pour vous.
Utilisation de $search sur les collections d’objets de l’annuaire
Les ressources Azure AD et leurs relations qui dérivent de directoryObject prennent en charge le $search
paramètre de requête uniquement dans les requêtes avancées. L’implémentation de recherche ne prend pas en charge la logique « contains ». Au lieu de cela, il utilise une approche de création de jetons qui fonctionne en extrayant des mots de la valeur de la propriété et de la chaîne de recherche à l'aide d'espaces, de chiffres, de casse différente et de symboles, comme le montrent les exemples suivants :
- Espaces :
hello world
=>hello
,world
- Casse différente⁽¹⁾:
HelloWorld
ouhelloWORLD
=>hello
,world
- Symboles⁽²⁾:
hello.world
=>hello
,.
, ,world
helloworld
- Nombres :
hello123world
=>hello
,123
,world
⁽¹⁾ Actuellement, l’utilisation de jetons ne fonctionne que lorsque la casse change de minuscules en majuscules. Par conséquent, le programme considère HELLOworld
comme un seul jeton :helloworld
et HelloWORld
sont deux jetons : hello
et world
.
⁽²⁾ La logique d’utilisation de jetons combine également les mots séparés uniquement par des symboles. par exemple, la recherche de helloworld
donne hello-world
et hello.world
.
Remarque
- Après la création de jetons, les jetons sont mis en correspondance indépendamment de la casse d’origine, et ils sont mis en correspondance dans n’importe quel ordre. Par exemple, displayName
李四(David Li)
correspondra à des chaînes de recherche telles李四(David Li)
,李四
,David
,Li
,David)
,(李四
,Li 李
. - Le support de recherche à jeton fonctionne uniquement sur les champs Nom complet et description. Tout champ de type String peut être placé dans
$search
; les champs autres que displayName et description sont par défaut de$filter
startswith
comportement. Par exemple :
GET https://graph.microsoft.com/v1.0/groups/?$search="displayName:OneVideo" OR "mail:onevideo"
ConsistencyLevel: eventual
Cette opération recherche tous les groupes dont les noms d’affichage ont des jetons one
et video
, ou le courrier commençant par onevideo
.
$search
peut être utilisé avec $filter
:
GET https://graph.microsoft.com/v1.0/groups/?$filter=mailEnabled eq true&$search="displayName:OneVideo"
ConsistencyLevel: eventual
Cette fonction recherche tous les groupes de messagerie dont les noms complets ressemblent à « OneVideo ».
Les résultats sont limités en fonction d'une conjonction logique (un « ET ») du $filter
et de la requête entière dans le $search
.
La syntaxe de la recherche respecte les règles suivantes :
- Format générique : $search="clause1 » [AND | OR] « [clauseX] ».
- Un nombre quelconque de clauses est pris en charge. Les parenthèses pour la préséance sont également prises en charge.
- La syntaxe de chaque clause est la suivante : «< property>:<text to search> ».
- Le nom de la propriété doit être spécifié dans la clause. Toute propriété pouvant être utilisée dans
$filter
peut également être utilisée dans$search
. Selon la propriété, le comportement de recherche est « search » ou « startsWith » si la recherche n’est pas prise en charge sur la propriété. - La clause entière doit être déclarée entre guillemets doubles. S’il contient des guillemets doubles ou une barre oblique inverse, il doit être placé dans une séquence d’échappement avec une barre oblique inverse. Tous les autres caractères spéciaux doivent être encodés en URL.
- Les opérateurs logiques
AND
etOR
doivent être placés en dehors des guillemets doubles et en majuscules.
Le tableau ci-dessous vous montre quelques exemples.
Classe d’objet | Description | Exemple |
---|---|---|
Utilisateur | Nom complet du carnet d'adresses de l'utilisateur. | GET../users?$search="displayName:Guthr" |
Utilisateur | Nom complet du carnet d'adresses ou courrier de l'utilisateur. | GET../users?$search="displayName:Guthr" OR "mail:Guthr" |
Groupe | Nom complet du carnet d'adresses ou description du groupe. | GET../groups?$search="description:One" AND ("displayName:Video" OR "displayName:Drive" |
Group | Nom complet du carnet d’adresses dans un groupe à extension messagerie. | GET../groups?$filter=mailEnabled eq true&$search="displayName:OneVideo" |
Les entrées de chaîne que vous fournissez dans $search
, ainsi que les propriétés de recherche, sont divisées en différentes parties par des espaces, des casses et des types de caractères différents (chiffres et caractères spéciaux).