Fonctionnalités de requête avancées sur les objets Microsoft Entra ID

Microsoft Graph prend en charge des fonctionnalités de requête avancées sur différents objets Microsoft Entra ID, également appelés objets d’annuaire, pour vous aider à accéder efficacement aux données. Par exemple, l’ajout d’opérateurs Not (not), Non égaux (ne) et se termine avec (endsWith) sur le paramètre de $filter requête.

Le moteur de requête Microsoft Graph utilise un magasin d’index pour répondre aux demandes de requête. Pour ajouter la prise en charge de fonctionnalités de requête supplémentaires sur certaines propriétés, ces propriétés peuvent être indexées dans un magasin distinct. Cette indexation distincte améliore les performances des requêtes. Toutefois, ces fonctionnalités de requête avancées ne sont pas disponibles par défaut, mais le demandeur doit définir l’en-tête eventualConsistencyLevelsur et, à l’exception de $search, utiliser le paramètre de $count requête. L’en-tête ConsistencyLevel et $count font référence aux paramètres de requête avancée.

Par exemple, pour récupérer uniquement les comptes d’utilisateur inactifs, vous pouvez exécuter l’une de ces requêtes qui utilisent le paramètre de requête $filter.

Option 1 : Utilisez le paramètre de $filter requête avec l’opérateur eq . Cette requête fonctionne par défaut et ne nécessite pas les paramètres de requête avancés.

GET https://graph.microsoft.com/v1.0/users?$filter=accountEnabled eq false

Option 2 : Utilisez le paramètre de $filter requête avec l’opérateur ne . Cette requête n’est pas prise en charge par défaut, car l’opérateur ne est uniquement pris en charge dans les requêtes avancées. Par conséquent, vous devez ajouter l’en-tête ConsistencyLevel défini sur eventualet utiliser la chaîne de $count=true requête.

GET https://graph.microsoft.com/v1.0/users?$filter=accountEnabled ne true&$count=true
ConsistencyLevel: eventual

Microsoft Entra ID objets (répertoire) qui prennent en charge les fonctionnalités de requête avancées

Les fonctionnalités de requête avancées sont prises en charge uniquement sur les objets d’annuaire et leurs relations, y compris les objets suivants :

Objet Relations
administrativeUnit
  • membres
  • application
  • propriétaires
  • appRoleAssignment -
    appareil
  • memberOf
  • transitiveMemberOf
  • registeredUsers
  • registeredOwners
  • groupe
  • membres
  • transitiveMembers
  • memberOf
  • transitiveMemberOf
  • propriétaires
  • appRoleAssignments
  • oAuth2PermissionGrant (octrois d’autorisations déléguées) -
    orgContact
  • memberOf
  • transitiveMemberOf
  • servicePrincipal
  • memberOf
  • transitiveMemberOf
  • appRoleAssignments
  • appRoleAssignmentsTo
  • oAuth2PermissionGrant
  • user
  • memberOf
  • transitiveMemberOf
  • ownedObjects
  • registeredDevices
  • ownedDevices
  • transitiveManagers
  • directReports
  • transitiveReports
  • appRoleAssignments
  • oAuth2PermissionGrant
  • Scénarios de requête nécessitant des fonctionnalités de requête avancées

    Le tableau suivant répertorie les scénarios de requête sur des objets annuaire qui sont uniquement pris en charge dans des requêtes avancées :

    Description Exemple
    Utilisation de $count en tant que segment d’URL GET~/groups/$count
    Utilisation de $count comme paramètre de chaîne de requête GET~/servicePrincipals?$count=true
    Utilisation de $count dans une expression $filter GET~/users?$filter=assignedLicenses/$count eq 0&$count=true
    Utilisation de $search GET~/applications?$search="displayName:Browser"
    Utilisation de $orderby sur certaines propriétés GET~/applications?$orderby=displayName&$count=true
    Utilisation de $filter avec l’opérateur endsWith GET~/users?$count=true&$filter=endsWith(mail,'@outlook.com')
    Utilisateur de $filter et $orderby dans la même requête GET../applications?$orderby=displayName&$filter=startsWith(displayName, 'Box')&$count=true
    Utilisation de $filter avec les opérateurs startsWith sur des propriétés spécifiques. GET~/users?$filter=startsWith(mobilePhone, '25478') OR startsWith(mobilePhone, '25473')&$count=true
    Utilisation de $filter avec les opérateurs ne et not GET~/users?$filter=companyName ne null and NOT(companyName eq 'Microsoft')&$count=true
    Utilisation de $filter avec les opérateurs not et startsWith GET~/users?$filter=NOT startsWith(displayName, 'Conf')&$count=true
    Utilisation de $filter sur une collection avec l’opérateur endsWith GET~/users?$count=true&$filter=proxyAddresses/any (p:endsWith(p, 'contoso.com'))&$select=id,displayName,proxyaddresses
    Utilisation de la conversion OData avec la liste des membres transitifs GET~/me/transitiveMemberOf/microsoft.graph.group?$count=true

    Remarque

    • L’utilisation simultanée de $filter et $orderby est uniquement pris en charge par les requêtes avancées.
    • $expand n’est actuellement pas pris en charge avec les requêtes avancées.
    • Ces fonctionnalités de requête avancée ne sont pas disponibles chez les clients Azure AD B2C.
    • Pour utiliser des fonctionnalités de requête avancées dans les requêtes par lots, spécifiez l’en-tête ConsistencyLevel dans le corps JSON de la demande POST .

    Prise en charge du filtrage par propriétés des objets Microsoft Entra ID (répertoire)

    Les propriétés d’objets annuaire se comportent différemment dans leur prise en charge pour des paramètres de requête. Les scénarios suivants sont courants pour les objets annuaire :

    • inL’opérateur est pris en charge par défaut chaque fois que eq l’opérateur est pris en charge par défaut.
    • L’opérateur endswith est pris en charge uniquement avec les paramètres de requête avancés et uniquement par les propriétés mail, otherMails, userPrincipalName et proxyAddresses .
    • L’obtention de collections vides (/$count eq 0, /$count ne 0) et de collections avec moins d’un objet (/$count eq 1, /$count ne 1) est prise en charge uniquement avec des paramètres de requête avancés.
    • Les not opérateurs de négation et ne sont pris en charge uniquement avec les paramètres de requête avancés.
      • Toutes les propriétés qui prennent en charge l’opérateur eq prennent également en charge les ne opérateurs ou not .
      • Pour les requêtes utilisant l’opérateur lambda any, utilisez l’opérateur not. Voir Filtrage en utilisant des opérateurs lambda.

    Les tableaux suivants résument la prise en charge des $filter opérateurs par les propriétés des objets d’annuaire et indiquent où l’interrogation est prise en charge par le biais de fonctionnalités de requête avancées.

    Légende

    • Le filtre fonctionne par défaut. Ne nécessite pas de paramètres de requête avancés, mais fonctionne toujours avec les paramètres de requête avancés. L’opérateur $filter fonctionne par défaut pour cette propriété.
    • Le filtre fonctionne uniquement sans paramètres de requête avancés. L’opérateur $filter fonctionne uniquement sans paramètres de requête avancés.
    • Le filtre nécessite des paramètres de requête avancés. L’opérateur $filternécessite desparamètres de requête avancés, qui sont les suivants :
      • En-tête ConsistencyLevel=eventual
      • Chaîne de requête $count=true
    • Non pris en charge. L’opérateur $filter n’est pas pris en charge sur cette propriété. Envoyez-nous vos commentaires pour demander la prise en charge de cette propriété $filter pour vos scénarios.
    • Les cellules vides indiquent que la requête n’est pas valide pour cette propriété.
    • La colonne valeur nulle indique que la propriété peut avoir la valeur Null et peut être filtrée à l’aide de null.
    • Les propriétés qui ne sont pas répertoriées ici ne prennent pas en charge $filter du tout.

    Propriétés des unités administratives

    Propriété eq startsWith eq Null
    description Avancé Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    isMemberManagementRestricted Par défaut+Avancé
    membershipRule Par défaut+Avancé Par défaut+Avancé
    membershipRuleProcessingState Par défaut+Avancé

    Propriétés de l’application

    Propriété eq startsWith ge/le eq Null
    appId Par défaut+Avancé
    createdDateTime Par défaut+Avancé Avancé
    description Avancé Avancé Avancé
    disabledByMicrosoftStatus Par défaut+Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    federatedIdentityCredentials/any(f :f/issuer) Avancé Avancé
    federatedIdentityCredentials/any(f :f/name) Avancé Avancé
    federatedIdentityCredentials/any(f :f/subject) Avancé Avancé
    identifierUris/any(p:p) Par défaut+Avancé Par défaut+Avancé
    info/logoUrl Avancé
    info/termsOfServiceUrl Avancé Avancé
    notes Avancé Avancé Avancé
    publicClient/redirectUris/any(p:p) Avancé Avancé
    publisherDomain Par défaut+Avancé Par défaut+Avancé
    requiredResourceAccess/any(r:r/resourceAppId) Avancé
    serviceManagementReference Avancé Avancé Avancé
    signInAudience Par défaut+Avancé
    spa/redirectUris/any(p:p) Avancé Avancé
    tags/any(p:p) Par défaut+Avancé Par défaut+Avancé
    uniqueName Par défaut+Avancé Par défaut+Avancé
    verifiedPublisher/displayName Avancé Avancé Avancé
    web/homePageUrl Avancé Avancé Avancé
    web/redirectUris/any(p:p) Avancé Avancé

    Les propriétés suivantes de l’entité d’application prennent en charge $count une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    extensionProperties/$count Avancé NotSupported
    federatedIdentityCredentials/$count Avancé NotSupported

    Propriétés du contrat

    Propriété eq startsWith
    customerId Par défaut+Avancé
    defaultDomainName Par défaut+Avancé Par défaut+Avancé
    displayName Par défaut+Avancé Par défaut+Avancé

    Propriétés du périphérique

    Propriété eq startsWith ge/le eq Null
    accountEnabled Par défaut+Avancé
    alternativeSecurityIds/any(a:a/identityProvider) Avancé Avancé
    alternativeSecurityIds/any(a:a/type) Par défaut+Avancé
    approximateLastSignInDateTime Par défaut+Avancé Avancé
    deviceCategory Avancé Avancé Avancé
    deviceId Par défaut+Avancé
    deviceOwnership Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    enrollmentProfileName Avancé Avancé Avancé
    extensionAttributes/extensionAttribute1-15 Avancé Avancé Avancé
    hostnames/any(p:p) Par défaut+Avancé Par défaut+Avancé
    isCompliant Par défaut+Avancé
    isManaged Par défaut+Avancé
    isRooted Avancé Avancé
    managementType Avancé Avancé
    Fabricant Avancé Avancé Avancé
    mdmAppId Par défaut+Avancé Avancé
    model Avancé Avancé Avancé
    onPremisesLastSyncDateTime Par défaut+Avancé
    onPremisesSecurityIdentifier Par défaut+Avancé Avancé
    onPremisesSyncEnabled Par défaut+Avancé Avancé
    operatingSystem Par défaut+Avancé Par défaut+Avancé Avancé
    operatingSystemVersion Par défaut+Avancé Par défaut+Avancé Avancé
    physicalIds/any(p:p) Par défaut+Avancé
    profileType Par défaut+Avancé
    registrationDateTime Avancé Avancé
    trustType Par défaut+Avancé

    Les propriétés suivantes de l’entité d’appareil prennent en charge $count une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    physicalIds/$count Avancé NotSupported
    systemLabels/$count Avancé NotSupported

    Propriétés du rôle d’annuaire

    Propriété eq startsWith eq Null
    description Avancé Avancé Avancé
    displayName Par défaut+Avancé Avancé Avancé
    roleTemplateId Par défaut+Avancé NotSupported

    Propriétés de Group

    Propriété eq startsWith ge/le eq Null
    assignedLicenses/any(a:a/skuId) Par défaut+Avancé
    classification Par défaut+Avancé Par défaut+Avancé
    createdByAppId Par défaut+Avancé
    createdDateTime Avancé Avancé
    description Avancé Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    expirationDateTime Avancé
    groupTypes/any(p :p) Par défaut+Avancé
    hasMembersWithLicenseErrors DefaultOnly DefaultOnly
    infoCatalogs/any(p:p) Par défaut+Avancé Par défaut+Avancé
    isAssignableToRole Par défaut+Avancé
    mail Par défaut+Avancé Par défaut+Avancé Avancé
    mailEnabled Par défaut+Avancé
    mailNickname Par défaut+Avancé Par défaut+Avancé Avancé
    membershipRule Par défaut+Avancé Par défaut+Avancé
    membershipRuleProcessingState Par défaut+Avancé
    onPremisesLastSyncDateTime Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/category) Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Par défaut+Avancé
    onPremisesSamAccountName Avancé Avancé
    onPremisesSecurityIdentifier Par défaut+Avancé Avancé
    onPremisesSyncEnabled Par défaut+Avancé Avancé
    preferredLanguage Avancé Avancé
    proxyAddresses/any(p:p) Par défaut+Avancé Par défaut+Avancé
    renewedDateTime Par défaut+Avancé
    resourceBehaviorOptions/any(p:p) Par défaut+Avancé
    resourceProvisioningOptions/any(p:p) Par défaut+Avancé
    securityEnabled Par défaut+Avancé
    uniqueName Par défaut+Avancé Par défaut+Avancé

    Les propriétés suivantes de l’entité de groupe prennent en charge $count une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    assignedLicenses/$count Avancé NotSupported
    onPremisesProvisioningErrors/$count Avancé NotSupported
    proxyAddresses/$count Avancé NotSupported

    Propriétés du contact organisationnel

    Propriété eq startsWith ge/le eq Null
    CompanyName Avancé Avancé Avancé
    Service Par défaut+Avancé Par défaut+Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    givenName Par défaut+Avancé Par défaut+Avancé Avancé
    jobTitle Par défaut+Avancé Par défaut+Avancé Avancé
    mail Par défaut+Avancé Par défaut+Avancé Avancé
    mailNickname Par défaut+Avancé Par défaut+Avancé Avancé
    manager/id Par défaut+Avancé
    onPremisesLastSyncDateTime Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/category) Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Par défaut+Avancé
    onPremisesSyncEnabled Par défaut+Avancé Avancé
    proxyAddresses/any(p:p) Par défaut+Avancé Par défaut+Avancé
    surname Par défaut+Avancé Par défaut+Avancé Avancé

    Les propriétés suivantes de l’entité orgContact prennent en charge $count une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    onPremisesProvisioningErrors/$count Avancé NotSupported
    proxyAddresses/$count Avancé NotSupported

    Propriétés principales du service

    Propriété eq startsWith ge/le eq Null
    accountEnabled Par défaut+Avancé
    alternativeNames/any(p:p) Par défaut+Avancé Par défaut+Avancé
    appId Par défaut+Avancé
    appOwnerOrganizationId Avancé
    appRoleAssignmentRequired Avancé
    applicationTemplateId Par défaut+Avancé
    claimsPolicy/id Par défaut+Avancé
    createdObjects/any(c:c/id) Avancé
    description Avancé Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    federatedIdentityCredentials/any(f :f/issuer) Avancé Avancé
    federatedIdentityCredentials/any(f :f/name) Avancé Avancé
    federatedIdentityCredentials/any(f :f/subject) Avancé Avancé
    homepage Avancé Avancé Avancé
    info/logoUrl Avancé
    info/termsOfServiceUrl Avancé Avancé
    notes Avancé Avancé Avancé
    preferredSingleSignOnMode Par défaut+Avancé
    preferredTokenSigningKeyEndDateTime Par défaut+Avancé
    publisherName Par défaut+Avancé Par défaut+Avancé
    remoteDesktopSecurityConfiguration/id Par défaut+Avancé
    servicePrincipalNames/any(p:p) Par défaut+Avancé Par défaut+Avancé
    servicePrincipalType Par défaut+Avancé
    tags/any(p:p) Par défaut+Avancé Par défaut+Avancé
    verifiedPublisher/displayName Avancé Avancé Avancé

    Les propriétés suivantes de la prise en charge $count de l’entité servicePrincipal d’une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    federatedIdentityCredentials/$count Avancé NotSupported

    Propriétés utilisateur

    Propriété eq startsWith ge/le eq Null
    accountEnabled Par défaut+Avancé
    ageGroup Par défaut+Avancé
    assignedLicenses/any(a:a/skuId) Par défaut+Avancé
    assignedPlans/any(a:a/capabilityStatus) Avancé
    assignedPlans/any(a:a/service) Avancé Avancé
    assignedPlans/any(a:a/servicePlanId) Avancé
    authorizationInfo/certificateUserIds/any(p :p) Avancé
    businessPhones/any(p:p) Avancé Avancé
    Ville Par défaut+Avancé Par défaut+Avancé Avancé
    cloudRealtimeCommunicationInfo/isSipEnabled Par défaut+Avancé
    CompanyName Avancé Avancé Avancé
    consentProvidedForMinor Par défaut+Avancé
    country Par défaut+Avancé Par défaut+Avancé Avancé
    createdDateTime Par défaut+Avancé Avancé
    createdObjects/any(c:c/id) Avancé
    creationType Par défaut+Avancé
    Service Par défaut+Avancé Par défaut+Avancé Avancé
    displayName Par défaut+Avancé Par défaut+Avancé Avancé
    employeeHireDate Avancé
    employeeId Par défaut+Avancé Avancé
    employeeOrgData/costCenter Avancé Avancé
    employeeOrgData/division Avancé Avancé
    employeeType Avancé
    externalUserState Par défaut+Avancé
    faxNumber Avancé Avancé Avancé
    givenName Par défaut+Avancé Par défaut+Avancé Avancé
    identities/any(i:i/issuer) DefaultOnly DefaultOnly
    imAddresses/any(p:p) Par défaut+Avancé Par défaut+Avancé
    infoCatalogs/any(p:p) Par défaut+Avancé Par défaut+Avancé
    isLicenseReconciliationNeeded DefaultOnly
    isResourceAccount Par défaut+Avancé
    jobTitle Par défaut+Avancé Par défaut+Avancé Avancé
    mail Par défaut+Avancé Par défaut+Avancé Avancé
    mailNickname Par défaut+Avancé Par défaut+Avancé Avancé
    mobilePhone Avancé Avancé Avancé
    officeLocation Avancé Avancé Avancé
    onPremisesDistinguishedName Avancé Avancé Avancé
    onPremisesExtensionAttributes/extensionAttribute1-15 Avancé Avancé Avancé
    onPremisesImmutableId Par défaut+Avancé
    onPremisesLastSyncDateTime Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/category) Par défaut+Avancé
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Par défaut+Avancé
    onPremisesSamAccountName Avancé Avancé
    onPremisesSecurityIdentifier Par défaut+Avancé Avancé
    onPremisesSipInfo/isSipEnabled Avancé
    onPremisesSyncEnabled Par défaut+Avancé Avancé
    otherMails/any(p:p) Par défaut+Avancé Par défaut+Avancé
    passwordPolicies Avancé
    passwordProfile/forceChangePasswordNextSignIn Avancé Avancé
    passwordProfile/forceChangePasswordNextSignInWithMfa Avancé Avancé
    postalCode Avancé Avancé Avancé
    preferredLanguage Avancé Avancé
    provisionedPlans/any(p:p/provisioningStatus) Avancé
    provisionedPlans/any(p:p/service) Avancé Avancé
    proxyAddresses/any(p:p) Par défaut+Avancé Par défaut+Avancé
    state Par défaut+Avancé Avancé
    streetAddress Avancé Avancé Avancé
    surname Par défaut+Avancé Par défaut+Avancé Avancé
    usageLocation Par défaut+Avancé Par défaut+Avancé Avancé
    userPrincipalName Par défaut+Avancé Par défaut+Avancé
    userType Par défaut+Avancé Avancé

    Les propriétés suivantes de l’entité utilisateur prennent en charge $count une collection dans une expression de filtre.

    Propriété eq Count 0 nombre d’eq 1
    assignedLicenses/$count Avancé NotSupported
    onPremisesProvisioningErrors/$count Avancé NotSupported
    otherMails/$count Avancé NotSupported
    ownedObjects/$count Avancé Avancé
    proxyAddresses/$count Avancé NotSupported

    Le tableau suivant indique la prise en charge $filter par d’autres propriétés d’extension sur l’objet utilisateur .

    Type d’extension eq startsWith eq null
    Extensions de schéma Avancé Avancé Avancé
    Extensions d’ouverture NotSupported NotSupported NotSupported
    Extensions du schéma Directory Par défaut+Avancé Avancé Avancé

    Prise en charge du tri par propriétés des objets Microsoft Entra ID (répertoire)

    Le tableau suivant récapitule la prise en charge $orderby par les propriétés des objets d’annuaire et indique où le tri est pris en charge via des fonctionnalités de requête avancées.

    Légende

    • Le tri fonctionne par défaut. Ne nécessite pas de paramètres de requête avancés. L’opérateur $orderby fonctionne par défaut pour cette propriété.
    • Le tri nécessite des paramètres de requête avancés. L’opérateur $orderbynécessite desparamètres de requête avancés, qui sont les suivants :
      • En-tête ConsistencyLevel=eventual
      • Chaîne de requête $count=true
    • L’utilisation de $filter et $orderby dans la même requête pour les objets d’annuaire nécessite toujours des paramètres de requête avancés. Pour plus d’informations, consultez Scénarios de requête qui nécessitent des fonctionnalités de requête avancées.
    Objet d’annuaire Nom de la propriété $orderby
    administrativeUnit createdDateTime Avancé
    administrativeUnit deletedDateTime Avancé
    administrativeUnit displayName Avancé
    application createdDateTime Avancé
    application deletedDateTime Avancé
    application displayName Avancé
    orgContact createdDateTime Avancé
    orgContact displayName Avancé
    device approximateLastSignInDateTime Avancé
    device createdDateTime Avancé
    device deletedDateTime Avancé
    device displayName Avancé
    group createdDateTime Avancé
    group deletedDateTime Avancé
    group displayName Par défaut
    servicePrincipal createdDateTime Avancé
    servicePrincipal deletedDateTime Avancé
    servicePrincipal displayName Avancé
    utilisateur createdDateTime Avancé
    utilisateur deletedDateTime Avancé
    utilisateur displayName Par défaut
    utilisateur userPrincipalName Par défaut
    [tous les autres] [tous les autres] NotSupported

    Traitement des erreurs pour les requêtes avancées sur des objets annuaire

    La section suivante fournit des exemples de scénarios d’erreur courants lorsque vous n’utilisez pas de paramètres de requête avancés si nécessaire.

    Le comptage d’objets annuaire est uniquement pris en charge en utilisant les paramètres de requêtes avancées. Si l’en-tête ConsistencyLevel=eventual n’est pas spécifié, la requête retourne une erreur lorsque le $count segment d’URL (/$count) est utilisé ou ignore silencieusement le $count paramètre de requête (?$count=true) s’il est utilisé.

    GET https://graph.microsoft.com/v1.0/users/$count
    
    {
        "error": {
            "code": "Request_BadRequest",
            "message": "$count is not currently supported.",
            "innerError": {
                "date": "2021-05-18T19:03:10",
                "request-id": "d9bbd4d8-bb2d-44e6-99a1-71a9516da744",
                "client-request-id": "539da3bd-942f-25db-636b-27f6f6e8eae4"
            }
        }
    }
    

    Pour les objets d’annuaire, $search fonctionne uniquement dans les requêtes avancées. Si l’en-tête ConsistencyLevel n’est pas spécifié, la requête retourne une erreur.

    GET https://graph.microsoft.com/v1.0/applications?$search="displayName:Browser"
    
    {
        "error": {
            "code": "Request_UnsupportedQuery",
            "message": "Request with $search query parameter only works through MSGraph with a special request header: 'ConsistencyLevel: eventual'",
            "innerError": {
                "date": "2021-05-27T14:26:47",
                "request-id": "9b600954-ba11-4899-8ce9-6abad341f299",
                "client-request-id": "7964ef27-13a3-6ca4-ed7b-73c271110867"
            }
        }
    }
    

    Si une propriété ou un paramètre de requête dans l’URL est uniquement pris en charge dans les requêtes avancées, mais que l’en-tête ConsistencyLevel ou la chaîne de requête $count=true est manquant, la requête renvoie une erreur.

    GET https://graph.microsoft.com/beta/users?$filter=endsWith(userPrincipalName,'%23EXT%23@contoso.com')
    
    {
        "error": {
            "code": "Request_UnsupportedQuery",
            "message": "Operator 'endsWith' is not supported because the required parameters might be missing. Try adding $count=true query parameter and ConsistencyLevel:eventual header. Refer to https://aka.ms/graph-docs/advanced-queries for more information",
            "innerError": {
                "date": "2023-07-14T08:43:39",
                "request-id": "b3731da7-5c46-4c37-a8e5-b190124d2531",
                "client-request-id": "a1556ddf-4794-929d-0105-b753a78b4c68"
            }
        }
    }
    

    Si une propriété n’est pas indexée pour prendre en charge un paramètre de requête, la requête retourne une erreur même si des paramètres de requête avancés sont spécifiés. Par exemple, la propriété createdDateTime de la ressource de groupe n’est pas indexée pour les fonctionnalités de requête.

    GET https://graph.microsoft.com/beta/groups?$filter=createdDateTime ge 2021-11-01&$count=true
    ConsistencyLevel: eventual
    
    {
        "error": {
            "code": "Request_UnsupportedQuery",
            "message": "Unsupported or invalid query filter clause specified for property 'createdDateTime' of resource 'Group'.",
            "innerError": {
                "date": "2023-07-14T08:42:44",
                "request-id": "b6a5f998-94c8-430d-846d-2eaae3031492",
                "client-request-id": "2be83e05-649e-2508-bcd9-62e666168fc8"
            }
        }
    }
    

    Toutefois, une requête qui inclut des paramètres de requête peut échouer en mode silencieux. Par exemple, pour les paramètres de requête non pris en charge et pour les combinaisons de paramètres de requête non prises en charge. Dans ce cas, examinez les données retournées par la requête pour déterminer si les paramètres de requête que vous avez spécifiés ont eu l’effet souhaité. Dans l’exemple qui suit, le paramètre @odata.count est manquant bien que la requête soit réussie.

    GET https://graph.microsoft.com/v1.0/users?$count=true
    
    HTTP/1.1 200 OK
    Content-type: application/json
    
    {
      "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
      "value":[
        {
          "displayName":"Oscar Ward",
          "mail":"oscarward@contoso.com",
          "userPrincipalName":"oscarward@contoso.com"
        }
      ]
    }