Recursos avançados de consulta em objetos do Microsoft Entra ID

O Microsoft Graph dá suporte a recursos avançados de consulta em vários objetos do Microsoft Entra ID, também chamados de objetos de diretório, para ajudá-lo a acessar dados com eficiência. Os exemplos incluem a adição de operadores not (not), not equals (ne) e ends with (endsWith) no $filter parâmetro de consulta.

O mecanismo de consulta do Microsoft Graph usa um repositório de índice para atender às solicitações de consulta. Para adicionar suporte para recursos de consulta extras em algumas propriedades, essas propriedades são indexadas em um repositório separado. Essa indexação separada melhora o desempenho da consulta. No entanto, esses recursos avançados de consulta não estão disponíveis por padrão. O solicitante deve definir o cabeçalho eventualConsistencyLevelpara e, exceto para $search, usar o $count parâmetro de consulta. O cabeçalho ConsistencyLevel e $count são referidos como parâmetros de consulta avançados.

Por exemplo, para recuperar apenas contas de usuário inativas, você pode executar uma destas consultas que usam o $filter parâmetro de consulta:

Opção 1: Use o $filter parâmetro query com o eq operador. Essa solicitação funciona por padrão e não requer os parâmetros de consulta avançados.

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

Opção 2: Use o $filter parâmetro query com o ne operador. Não há suporte para essa solicitação por padrão porque o ne operador só tem suporte em consultas avançadas. Portanto, você deve adicionar o cabeçalho ConsistencyLevel definido eeventual usar a cadeia de caracteres de $count=true consulta.

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

Objetos do Microsoft Entra ID (diretório) que dão suporte a recursos avançados de consulta

Os recursos avançados de consulta têm suporte apenas em objetos de diretório e suas relações, incluindo os seguintes objetos:

Objeto Relações
administrativeUnit
  • membros
  • application
  • proprietários
  • appRoleAssignment -
    device
  • memberOf
  • transitiveMemberOf
  • registeredUsers
  • registeredOwners
  • group
  • membros
  • transitiveMembers
  • memberOf
  • transitiveMemberOf
  • proprietários
  • appRoleAssignments
  • oAuth2PermissionGrant (concessões de permissão delegadas) -
    orgContact
  • memberOf
  • transitiveMemberOf
  • servicePrincipal
  • memberOf
  • proprietários
  • transitiveMemberOf
  • appRoleAssignments
  • appRoleAssignedTo
  • oAuth2PermissionGrant
  • user
  • memberOf
  • transitiveMemberOf
  • ownedObjects
  • registeredDevices
  • ownedDevices
  • transitiveManagers
  • directReports
  • transitiveReports
  • appRoleAssignments
  • oAuth2PermissionGrant
  • Observação

    O uso de $filter nas relações da lista anterior de objetos de diretório tem suporte apenas com parâmetros de consulta avançados. No entanto, nesses casos, não use $expand na mesma solicitação porque não há suporte com parâmetros de consulta avançados.

    Cenários de consulta que exigem recursos avançados de consulta

    A tabela a seguir lista cenários de consulta em objetos de diretório compatíveis com consultas avançadas:

    Descrição Exemplo
    Usar $count como um segmento URL OBTER~/groups/$count
    Usar o $count como parâmetro consultar cadeia de caracteres OBTER~/servicePrincipals?$count=true
    Uso de $count em uma expressão $filter OBTER~/users?$filter=assignedLicenses/$count eq 0&$count=true
    Usar de $search OBTER~/applications?$search="displayName:Browser"
    Usar $orderby em propriedades selecionadas OBTER~/applications?$orderby=displayName&$count=true
    Usar o $filter com o endsWith operador OBTER~/users?$count=true&$filter=endsWith(mail,'@outlook.com')
    Usar o $filter e $orderby na mesma consulta OBTER../applications?$orderby=displayName&$filter=startsWith(displayName, 'Box')&$count=true
    Uso o $filter com os startsWith operadores em propriedades específicas. OBTER~/users?$filter=startsWith(mobilePhone, '25478') OR startsWith(mobilePhone, '25473')&$count=true
    Usar o $filter com ne e not operadores OBTER~/users?$filter=companyName ne null and NOT(companyName eq 'Microsoft')&$count=true
    Usar o $filter com not e startsWith operadores OBTER~/users?$filter=NOT startsWith(displayName, 'Conf')&$count=true
    Uso de $filter em uma coleção com o operador endsWith OBTER~/users?$count=true&$filter=proxyAddresses/any (p:endsWith(p, 'contoso.com'))&$select=id,displayName,proxyaddresses
    Uso de conversão de OData com lista de membros transitivos OBTER~/me/transitiveMemberOf/microsoft.graph.group?$count=true

    Observação

    • Você pode usar $filter e $orderby em conjunto somente com consultas avançadas.
    • No momento, as consultas avançadas não dão suporte a $expand.
    • No momento, os locatários do Azure AD B2C não dão suporte a recursos avançados de consulta.
    • Para usar recursos avançados de consulta em solicitações em lote, especifique o cabeçalho ConsistencyLevel na propriedade da POST solicitação JSON.

    Suporte para filtrar por propriedades de objetos do Microsoft Entra ID (diretório)

    As propriedades dos objetos de diretório se comportam de forma diferente em seu suporte aos parâmetros de consulta. Os cenários a seguir são comuns para objetos de diretório:

    • O operador in é suportado por padrão sempre que o operador eq for suportado por padrão.
    • O endswith operador é compatível apenas com parâmetros de consulta avançados e apenas pelas propriedades mail, otherMails, userPrincipalName e proxyAddresses .
    • Obter coleções vazias (/$count eq 0, /$count ne 0) e coleções com menos de um objeto (/$count eq 1, /$count ne 1) é suportado apenas com parâmetros de consulta avançados.
    • Os not operadores de negação and ne têm suporte apenas com parâmetros de consulta avançados.
      • Todas as propriedades que dão suporte ao operador também dão suporte aos eqne operadores ou not .
      • Para consultas que utilizam o any operador lambda, usar o not operador. Veja Filtrar utilizando operadores lambda.

    As tabelas a seguir resumem o suporte para operadores por $filter propriedades de objetos de diretório e indicam onde há suporte para consultas por meio de recursos avançados de consulta.

    Legenda

    • O filtro funciona por padrão. Não requer parâmetros de consulta avançados, mas ainda funciona com parâmetros de consulta avançados. O $filter operador funciona por padrão para essa propriedade.
    • O filtro só funciona sem parâmetros de consulta avançados. O $filter operador só funciona sem parâmetros de consulta avançados.
    • O filtro requer parâmetros de consulta avançados. O $filter operador requerparâmetros de consulta avançados, que são:
      • ConsistencyLevel=eventual cabeçalho
      • $count=true cadeia de caracteres
    • Sem suporte. Não há suporte para o $filter operador nessa propriedade. Envie-nos comentários para solicitar que esta propriedade suporte $filter para seus cenários.
    • Células em branco indicam que a consulta não é válida para essa propriedade.
    • A coluna de valor nulo indica que a propriedade pode ser anulada e filtrada usando null.
    • As propriedades que não estão listadas aqui não $filter oferecem suporte algum.

    Propriedades da unidade administrativa

    Propriedade eq startsWith eq Null
    description Avançado Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    isMemberManagementRestricted Padrão+Avançado
    membershipRule Padrão+Avançado Padrão+Avançado
    membershipRuleProcessingState Padrão+Avançado

    Propriedades do aplicativo

    Propriedade eq startsWith ge/le eq Null
    appId Padrão+Avançado
    createdDateTime Padrão+Avançado Avançado
    description Avançado Avançado Avançado
    disabledByMicrosoftStatus Padrão+Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    federatedIdentityCredentials/any(f:f/issuer) Avançado Avançado
    federatedIdentityCredentials/any(f:f/name) Avançado Avançado
    federatedIdentityCredentials/any(f:f/subject) Avançado Avançado
    identifierUris/any(p:p) Padrão+Avançado Padrão+Avançado
    info/logoUrl Avançado
    info/termsOfServiceUrl Avançado Avançado
    notes Avançado Avançado Avançado
    publicClient/redirectUris/any(p:p) Avançado Avançado
    publisherDomain Padrão+Avançado Padrão+Avançado
    requiredResourceAccess/any(r:r/resourceAppId) Avançado
    referênciaDeGerenciamentoDeServiços Avançado Avançado Avançado
    signInAudience Padrão+Avançado
    spa/redirectUris/any(p:p) Avançado Avançado
    tags/any(p:p) Padrão+Avançado Padrão+Avançado
    Nome único Padrão+Avançado Padrão+Avançado
    verifiedPublisher/displayName Avançado Avançado Avançado
    web/homePageUrl Avançado Avançado Avançado
    web/redirectUris/any(p:p) Avançado Avançado

    As propriedades a seguir da entidade de aplicativo dão suporte $count a uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    extensionProperties/$count Avançado Sem suporte
    federatedIdentityCredentials/$count Avançado Sem suporte

    Propriedades do contrato

    Propriedade eq startsWith
    customerId Padrão+Avançado
    defaultDomainName Padrão+Avançado Padrão+Avançado
    displayName Padrão+Avançado Padrão+Avançado

    Propriedades do dispositivo

    Propriedade eq startsWith ge/le eq Null
    accountEnabled Padrão+Avançado
    alternativeSecurityIds/any(a:a/identityProvider) Avançado Avançado
    alternativeSecurityIds/any(a:a/type) Padrão+Avançado
    approximateLastSignInDateTime Padrão+Avançado Avançado
    deviceCategory Avançado Avançado Avançado
    deviceId Padrão+Avançado
    deviceOwnership Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    enrollmentProfileName Avançado Avançado Avançado
    extensionAttributes/extensionAttribute1-15 Avançado Avançado Avançado
    hostnames/any(p:p) Padrão+Avançado Padrão+Avançado
    isCompliant Padrão+Avançado
    isManaged Padrão+Avançado
    isRooted Avançado Avançado
    managementType Avançado Avançado
    fabricante Avançado Avançado Avançado
    mdmAppId Padrão+Avançado Avançado
    modelo Avançado Avançado Avançado
    onPremisesLastSyncDateTime Padrão+Avançado
    onPremisesSecurityIdentifier Padrão+Avançado Avançado
    onPremisesSyncEnabled Padrão+Avançado Avançado
    operatingSystem Padrão+Avançado Padrão+Avançado Avançado
    operatingSystemVersion Padrão+Avançado Padrão+Avançado Avançado
    physicalIds/any(p:p) Padrão+Avançado
    profileType Padrão+Avançado
    registrationDateTime Avançado Avançado
    trustType Padrão+Avançado

    As propriedades a seguir da entidade de dispositivo dão suporte $count a uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    physicalIds/$count Avançado Sem suporte
    systemLabels/$count Avançado Sem suporte

    Propriedades de função de diretório

    Propriedade eq startsWith eq Null
    description Avançado Avançado Avançado
    displayName Padrão+Avançado Avançado Avançado
    roleTemplateId Padrão+Avançado Sem suporte

    Propriedades do grupo

    Propriedade eq startsWith ge/le eq Null
    assignedLicenses/any(a:a/skuId) Padrão+Avançado
    classificação Padrão+Avançado Padrão+Avançado
    createdByAppId Padrão+Avançado
    createdDateTime Avançado Avançado
    description Avançado Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    expirationDateTime Avançado
    groupTypes/any(p:p) Padrão+Avançado
    hasMembersWithLicenseErrors DefaultOnly DefaultOnly
    infoCatalogs/any(p:p) Padrão+Avançado Padrão+Avançado
    isAssignableToRole Padrão+Avançado
    Email Padrão+Avançado Padrão+Avançado Avançado
    mailEnabled Padrão+Avançado
    mailNickname Padrão+Avançado Padrão+Avançado Avançado
    membershipRule Padrão+Avançado Padrão+Avançado
    membershipRuleProcessingState Padrão+Avançado
    onPremisesLastSyncDateTime Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/category) Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Padrão+Avançado
    onPremisesSamAccountName Avançado Avançado
    onPremisesSecurityIdentifier Padrão+Avançado Avançado
    onPremisesSyncEnabled Padrão+Avançado Avançado
    preferredLanguage Avançado Avançado
    proxyAddresses/any(p:p) Padrão+Avançado Padrão+Avançado
    renewedDateTime Padrão+Avançado
    resourceBehaviorOptions/any(p:p) Padrão+Avançado
    resourceProvisioningOptions/any(p:p) Padrão+Avançado
    securityEnabled Padrão+Avançado
    Nome único Padrão+Avançado Padrão+Avançado

    As propriedades a seguir da entidade do grupo dão suporte $count a uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    assignedLicenses/$count Avançado Sem suporte
    onPremisesProvisioningErrors/$count Avançado Sem suporte
    proxyAddresses/$count Avançado Sem suporte

    Propriedades de contato organizacional

    Propriedade eq startsWith ge/le eq Null
    CompanyName Avançado Avançado Avançado
    department Padrão+Avançado Padrão+Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    givenName Padrão+Avançado Padrão+Avançado Avançado
    jobTitle Padrão+Avançado Padrão+Avançado Avançado
    Email Padrão+Avançado Padrão+Avançado Avançado
    mailNickname Padrão+Avançado Padrão+Avançado Avançado
    manager/id Padrão+Avançado
    onPremisesLastSyncDateTime Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/category) Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Padrão+Avançado
    onPremisesSyncEnabled Padrão+Avançado Avançado
    proxyAddresses/any(p:p) Padrão+Avançado Padrão+Avançado
    surname Padrão+Avançado Padrão+Avançado Avançado

    As seguintes propriedades da entidade orgContact dão suporte $count a uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    onPremisesProvisioningErrors/$count Avançado Sem suporte
    proxyAddresses/$count Avançado Sem suporte

    Propriedades da entidade de serviço

    Propriedade eq startsWith ge/le eq Null
    accountEnabled Padrão+Avançado
    alternativeNames/any(p:p) Padrão+Avançado Padrão+Avançado
    appId Padrão+Avançado
    appOwnerOrganizationId Avançado
    appRoleAssignmentRequired Avançado
    applicationTemplateId Padrão+Avançado
    claimsPolicy/id Padrão+Avançado
    createdObjects/any(c:c/id) Avançado
    description Avançado Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    federatedIdentityCredentials/any(f:f/issuer) Avançado Avançado
    federatedIdentityCredentials/any(f:f/name) Avançado Avançado
    federatedIdentityCredentials/any(f:f/subject) Avançado Avançado
    homepage Avançado Avançado Avançado
    info/logoUrl Avançado
    info/termsOfServiceUrl Avançado Avançado
    notes Avançado Avançado Avançado
    preferredSingleSignOnMode Padrão+Avançado
    preferredTokenSigningKeyEndDateTime Padrão+Avançado
    publisherName Padrão+Avançado Padrão+Avançado
    remoteDesktopSecurityConfiguration/id Padrão+Avançado
    servicePrincipalNames/any(p:p) Padrão+Avançado Padrão+Avançado
    servicePrincipalType Padrão+Avançado
    tags/any(p:p) Padrão+Avançado Padrão+Avançado
    verifiedPublisher/displayName Avançado Avançado Avançado

    As seguintes propriedades da entidade servicePrincipal dão suporte $count a uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    federatedIdentityCredentials/$count Avançado Sem suporte

    Propriedades de usuário

    Propriedade eq startsWith ge/le eq Null
    accountEnabled Padrão+Avançado
    ageGroup Padrão+Avançado
    assignedLicenses/any(a:a/skuId) Padrão+Avançado
    assignedPlans/any(a:a/capabilityStatus) Avançado
    assignedPlans/any(a:a/service) Avançado Avançado
    assignedPlans/any(a:a/servicePlanId) Avançado
    authorizationInfo/certificateUserIds/any(p:p) Avançado
    businessPhones/any(p:p) Avançado Avançado
    city Padrão+Avançado Padrão+Avançado Avançado
    em nuvemRealtimeCommunicationInfo/isSipEnabled Padrão+Avançado
    CompanyName Avançado Avançado Avançado
    consentProvidedForMinor Padrão+Avançado
    country Padrão+Avançado Padrão+Avançado Avançado
    createdDateTime Padrão+Avançado Avançado
    createdObjects/any(c:c/id) Avançado
    creationType Padrão+Avançado
    department Padrão+Avançado Padrão+Avançado Avançado
    displayName Padrão+Avançado Padrão+Avançado Avançado
    employeeHireDate Avançado
    employeeId Padrão+Avançado Avançado
    employeeOrgData/costCenter Avançado Avançado
    employeeOrgData/division Avançado Avançado
    employeeType Avançado
    externalUserState Padrão+Avançado
    FaxNumber Avançado Avançado Avançado
    givenName Padrão+Avançado Padrão+Avançado Avançado
    identities/any(i:i/issuer) DefaultOnly DefaultOnly
    imAddresses/any(p:p) Padrão+Avançado Padrão+Avançado
    infoCatalogs/any(p:p) Padrão+Avançado Padrão+Avançado
    isLicenseReconciliationNeeded DefaultOnly
    isResourceAccount Padrão+Avançado
    jobTitle Padrão+Avançado Padrão+Avançado Avançado
    Email Padrão+Avançado Padrão+Avançado Avançado
    mailNickname Padrão+Avançado Padrão+Avançado Avançado
    mobilePhone Avançado Avançado Avançado
    officeLocation Avançado Avançado Avançado
    onPremisesDistinguishedName Avançado Avançado Avançado
    onPremisesExtensionAttributes/extensionAttribute1-15 Avançado Avançado Avançado
    onPremisesImmutableId Padrão+Avançado
    onPremisesLastSyncDateTime Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/category) Padrão+Avançado
    onPremisesProvisioningErrors/any(o:o/propertyCausingError) Padrão+Avançado
    onPremisesSamAccountName Avançado Avançado
    onPremisesSecurityIdentifier Padrão+Avançado Avançado
    onPremisesSipInfo/isSipEnabled Avançado
    onPremisesSyncEnabled Padrão+Avançado Avançado
    otherMails/any(p:p) Padrão+Avançado Padrão+Avançado
    passwordPolicies Avançado
    passwordProfile/forceChangePasswordNextSignIn Avançado Avançado
    passwordProfile/forceChangePasswordNextSignInWithMfa Avançado Avançado
    postalCode Avançado Avançado Avançado
    preferredLanguage Avançado Avançado
    provisionedPlans/any(p:p/provisioningStatus) Avançado
    provisionedPlans/any(p:p/service) Avançado Avançado
    proxyAddresses/any(p:p) Padrão+Avançado Padrão+Avançado
    state Padrão+Avançado Avançado
    streetAddress Avançado Avançado Avançado
    surname Padrão+Avançado Padrão+Avançado Avançado
    usageLocation Padrão+Avançado Padrão+Avançado Avançado
    userPrincipalName Padrão+Avançado Padrão+Avançado
    userType Padrão+Avançado Avançado

    As seguintes propriedades da entidade de usuário suportam $count uma coleção em uma expressão de filtro.

    Propriedade eq Contagem 0 eq Contagem 1
    assignedLicenses/$count Avançado Sem suporte
    onPremisesProvisioningErrors/$count Avançado Sem suporte
    otherMails/$count Avançado Sem suporte
    ownedObjects/$count Avançado Avançado
    proxyAddresses/$count Avançado Sem suporte

    A tabela a seguir mostra o suporte para $filter outras propriedades de extensão no objeto de usuário .

    Tipo de extensão eq startsWith eq null
    Extensões de esquema Avançado Avançado Avançado
    Extensões abertas Sem suporte Sem suporte Sem suporte
    Extensões de diretório Padrão+Avançado Avançado Avançado

    Suporte para classificação por propriedades de objetos do Microsoft Entra ID (diretório)

    A tabela a seguir resume o suporte para $orderby propriedades by de objetos de diretório e indica onde há suporte para a classificação por meio de recursos avançados de consulta.

    Legenda

    • A classificação funciona por padrão. Não requer parâmetros de consulta avançados. O $orderby operador funciona por padrão para essa propriedade.
    • A classificação requer parâmetros de consulta avançados. O $orderby operador requerparâmetros de consulta avançados, que são:
      • ConsistencyLevel=eventual cabeçalho
      • $count=true cadeia de caracteres
    • O uso de e $orderby na mesma consulta para objetos de $filter diretório sempre requer parâmetros de consulta avançados. Para obter mais informações, consulte Cenários de consulta que exigem recursos avançados de consulta.
    Objeto de diretório Nome da propriedade $orderby
    administrativeUnit createdDateTime Avançado
    administrativeUnit deletedDateTime Avançado
    administrativeUnit displayName Avançado
    aplicação createdDateTime Avançado
    aplicação deletedDateTime Avançado
    aplicação displayName Avançado
    orgContact createdDateTime Avançado
    orgContact displayName Avançado
    device approximateLastSignInDateTime Avançado
    device createdDateTime Avançado
    device deletedDateTime Avançado
    device displayName Avançado
    group createdDateTime Avançado
    group deletedDateTime Avançado
    group displayName Padrão
    servicePrincipal createdDateTime Avançado
    servicePrincipal deletedDateTime Avançado
    servicePrincipal displayName Avançado
    usuário createdDateTime Avançado
    usuário deletedDateTime Avançado
    usuário displayName Padrão
    usuário userPrincipalName Padrão
    [todos os outros] [todos os outros] Sem suporte

    Tratamento de erros para consultas avançadas sobre objetos de diretório

    A seção a seguir fornece exemplos de cenários de erro comuns quando você não usa parâmetros de consulta avançados quando necessário.

    Você só pode contar objetos de diretório usando os parâmetros de consultas avançadas. Se você não especificar o ConsistencyLevel=eventual cabeçalho, a solicitação retornará um erro quando você usar o $count segmento de URL (/$count) ou ignorará silenciosamente o $count parâmetro de consulta (?$count=true) se você usá-lo.

    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"
            }
        }
    }
    

    Para objetos de diretório, $search funciona apenas em consultas avançadas. Se você não especificar o cabeçalho ConsistencyLevel , a solicitação retornará um erro.

    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"
            }
        }
    }
    

    Se uma propriedade ou parâmetro de consulta na URL der suporte apenas a consultas avançadas, mas o cabeçalho ConsistencyLevel ou a $count=true cadeia de caracteres de consulta estiver ausente, a solicitação retornará um erro.

    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"
            }
        }
    }
    

    Se uma propriedade não for indexada para dar suporte a um parâmetro de consulta, a solicitação retornará um erro mesmo que parâmetros de consulta avançados sejam especificados. Por exemplo, a propriedade createdDateTime do recurso de grupo não é indexada para recursos de consulta.

    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"
            }
        }
    }
    

    No entanto, uma solicitação que inclui parâmetros de consulta pode falhar silenciosamente. Por exemplo, a solicitação pode falhar para parâmetros de consulta sem suporte e para combinações sem suporte de parâmetros de consulta. Nesses casos, examine os dados retornados pela solicitação para determinar se os parâmetros de consulta especificados surtiram o efeito desejado. Por exemplo, no exemplo a seguir, falta o parâmetro @odata.count mesmo que a consulta seja bem sucedida.

    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"
        }
      ]
    }