Utiliser l’API Recherche Microsoft pour rechercher du contenu OneDrive et SharePoint
Utilisez l’API Recherche Microsoft dans Microsoft Graph pour rechercher du contenu stocké dans OneDrive ou SharePoint : fichiers, dossiers, listes, éléments de liste ou sites.
Attention
Le schéma de l’API de recherche a changé dans la version bêta. Certaines propriétés d’une demande de recherche et d’une réponse ont été renommées ou supprimées. Pour plus d’informations, consultez Avertissement de dépréciation de modification de schéma. Les exemples de cette rubrique montrent le schéma à jour.
L’API de recherche vous permet d’étendre les types de contenu à récupérer dans OneDrive ou SharePoint en spécifiant la propriété entityTypes sur searchRequest. Cet article décrit quelques exemples.
Exemple 1 : Rechercher des fichiers
Demande
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
Réponse
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
}
]
}
]
}
]
}
Exemple 2 : Rechercher des éléments de liste
Demande
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
}
}
]
}
Réponse
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/Lists/Issue tracker list/DispForm.aspx?ID=1",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"sharepointIds":{
"listId":"da61a2b0-4120-4a3f-812b-0fc0d79bf16b"
},
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
}
}
}
]
}
]
}
]
}
Exemple 3 : Rechercher des sites
Demande
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"site"
],
"query": {
"queryString": "contoso"
}
}
]
}
Réponse
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.site",
"id": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"createdDateTime": "2019-06-10T06:37:43Z",
"description": "Contoso Communication Site",
"lastModifiedDateTime": "2020-08-30T06:41:56Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/"
}
}
]
}
]
}
]
}
Exemple 4 : Rechercher tout le contenu dans OneDrive et SharePoint
Cet exemple interroge tout le contenu des sites OneDrive et SharePoint auxquels l’utilisateur connecté a accès en lecture. La propriété de ressource dans la réponse retourne des correspondances qui sont des fichiers et des dossiers en tant qu’objets driveItem , des correspondances qui sont des conteneurs (listes SharePoint) en tant que liste et toutes les autres correspondances en tant qu’objet listItem.
Demande
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem", "listItem", "list"
],
"query": {
"queryString": "contoso"
}
}
]
}
Réponse
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
"rank": 1,
"summary": "<c0>Contoso</c0> Detailed Design <ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z",
"name": "web_part_test_long Notebook",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"createdBy": {
"user": {
"displayName": "Michaelvincent Santos;Provisioning User"
}
},
"lastModifiedBy": {
"user": {
"displayName": "Richard Mayer"
}
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0",
"driveId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b",
"sharepointIds": {
"listId": "c61d1892-ca82-4f53-b16f-6bb8a379e2b2",
"listItemId": "1027",
"listItemUniqueId": "E320AFEB-AD73-46A2-83D7-985FAA4B206D"
}
},
"fileSystemInfo": {
"createdDateTime": "2019-06-10T06:37:43Z",
"lastModifiedDateTime": "2019-06-10T06:37:43Z"
}
}
},
{
"@odata.type": "#microsoft.graph.searchHit",
"hitId": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "Contoso - Documents",
"id": "51eef59e-5d49-4d28-96f0-864cf90765e0",
"description": "",
"lastModifiedDateTime": "2020-07-08T18:17:59+00:00",
"name": "Shared Documents",
"parentReference": {
"siteId": "microsoft.sharepoint-df.com,220fd155-0ea2-477c-a816-5c08fdc45f5d,fad16ab6-0736-4fbc-a053-087296b47c99"
},
"webUrl": "https://microsoft.sharepoint-df.com/teams/spoppe/collab/TaskBoard/Contoso/Shared Documents/Forms/AllItems.aspx"
}
}
]
}
]
}
]
}
Exemple 5 : Utiliser des filtres dans les requêtes de recherche
Vous pouvez utiliser KQL dans les termes de recherche des requêtes pour OneDrive et SharePoint. Par exemple :
-
"query": "contoso filetype:docx OR filetype:doc"
étend la requête à des documents Word. -
"query": "test path:\"https://contoso.sharepoint.com/sites/Team Site/Documents/Project\""
étend la requête à un dossier particulier au sein d’un site. -
"query": "contoso AND isDocument=true"
limite la requête pour renvoyer uniquement des documents. Aucun conteneur (dossier, bibliothèque de documents) n’est retourné. -
"query": "contoso contentclass:STS_List_Events"
étend la requête aux événements de calendrier stockés dans SharePoint. -
"query": "contoso (LastModifiedTime > 2021-02-01 AND Created > 2021-02-01)"
étend la requête pour filtrer les éléments SharePoint et OneDrive par date.
Pour être valide, la restriction de propriétés doit spécifier un nom de propriété managée valide et interrogeable dans la condition.
Exemple 6 : Spécifier les propriétés de sélection
Vous pouvez spécifier les champs souhaités dans la réponse, dans le cadre de la sous-propriété de champs dans listItem ou d’une sous-propriété listItem interne dans driveItem d’un objet searchHit dans la réponse. Il s’agit d’un moyen de réduire la réponse sur le câble ou de demander des propriétés spécifiques qui ne font pas partie du schéma prête à l’emploi.
Notez que la sélection de propriétés personnalisées dans SharePoint n’est disponible que pour listItem ou driveItem , car il s’agit des deux seules entités SharePoint dans Microsoft Graph qui prennent en charge les propriétés personnalisées.
requête listItem
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"title",
"contentclass"
]
}
]
}
réponse listItem
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "contoso.sharepoint.com,6598ee0b-0f5f-4416-a0ae-66d864efb43a,60024ce8-e74d-4d63-a939-ad00cd738670",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-06-10T06:37:43Z",
"webUrl": "https://contoso.sharepoint.com/sites/contoso-team/contoso-designs.docx",
"sharepointIds": {
"listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
"listItemId": "13"
},
"parentReference": {
"siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
},
"fields": {
"contentclass": "STS_ListItem_GenericList",
"title": "Contoso issue "
}
}
}
]
}
]
}
]
}
demande driveItem
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "contoso"
},
"fields": [
"listId",
"author",
"title"
]
}
]
}
réponse driveItem
POST /search/query
Content-Type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "01YOWRGSD34TVVP25X7NAZAW3P2JRL7FWE",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.driveItem",
"listItem": {
"@odata.type": "#microsoft.graph.listItem",
"fields": {
"listId": "3b6a49d3-6bea-4549-bed8-8b1c92a12345",
"author": "Robin",
"title": "Test Notebook"
},
"id": "57ebe47b-b7eb-41fb-905b-123452bf96c4"
}
}
}
],
"total": 371,
"moreResultsAvailable": true
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
Exemple 7 : Rechercher du contenu masqué
Utilisez la propriété includeHiddenContent pour inclure du contenu masqué, tel que du contenu archivé et SharePoint Embedded, dans les résultats de recherche. Par défaut, cette propriété est définie sur false
, ce qui empêche le retour de contenu masqué.
Vous pouvez également éventuellement inclure KQL pour étendre votre requête de contenu masqué à des types de contenu spécifiques. Par exemple, dans SharePoint, les administrateurs peuvent marquer les sites comme archivés. Si le contenu masqué n’est pas disponible, les résultats de la recherche incluent uniquement le contenu pertinent, à condition qu’il n’y ait pas d’autres erreurs, et renvoyer un 200 OK
code de réponse.
L’exemple suivant montre comment utiliser le queryTemplate pour étendre la requête avec KQL et la propriété includeHiddenContent pour inclure du contenu masqué. Vous pouvez également étendre les requêtes sur le contenu SharePoint Embedded à l’aide de propriétés telles que ContainerTypeId. Pour plus d’informations sur les types de conteneurs dans SharePoint Embedded, voir Types de conteneurs SharePoint Embedded.
Demande
POST /search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "*",
"queryTemplate": "({searchTerms} AuthorOWSUSER:TestContoso)"
},
"sharePointOneDriveOptions": {
"includeHiddenContent": true
}
}
]
}
Réponse
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"rank": 2,
"summary": "<c0>STS</c0>_<c0>View</c0> <c0>MySiteDocumentLibrary</c0> <c0>domain</c0>_<c0>allow</c0>:<c0>ALL</c0><ddd/>",
"resource": {
"@odata.type": "#microsoft.graph.list",
"displayName": "TestContoso - Documents",
"id": "fc78bcb9-8b26-4bba-a250-389def493e0f",
"createdBy": {
"user": {
"displayName": "System Account"
}
},
"lastModifiedDateTime": "2024-03-08T18:06:33Z",
"name": "Documents",
"parentReference": {
"siteId": "contoso-my.sharepoint.com,44776ebc-4ddc-4f7e-afb8-b706c77e0883,a118ff93-1105-40b9-bed0-2cd07cd4b2a4"
},
"webUrl": "https://contoso-my.sharepoint.com/personal/contoso_onmicrosoft_com/Documents/Forms/All.aspx"
}
}
],
"total": 1,
"moreResultsAvailable": false
}
]
}
],
"@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(microsoft.graph.searchResponse)"
}
Limitations connues
Lorsque vous recherchez un lecteur, vous devez inclure dans queryString un terme contenu dans le nom de la bibliothèque de documents. L’interrogation
*
n’est pas prise en charge et ne retourne pas tous les lecteurs disponibles.L’API de recherche ne prend pas en charge le schéma de recherche au niveau du site. Utilisez le schéma de recherche au niveau du locataire ou par défaut.
La propriété includeHiddenContent fonctionne uniquement dans les scénarios avec des autorisations déléguées. Elle ne s’applique pas aux autorisations d’application, où la propriété includeHiddenContent est automatiquement définie sur
false
.