Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Microsoft Graph suporta capacidades de consulta avançadas em vários objetos de Microsoft Entra ID, também denominados objetos de diretório, para o ajudar a aceder a dados de forma eficiente. Os exemplos incluem a adição de não (not), não é igual a (ne) e termina com operadores (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 capacidades de consulta adicionais em algumas propriedades, essas propriedades são indexadas num arquivo separado. Esta indexação separada melhora o desempenho das consultas. No entanto, estas capacidades avançadas de consulta não estão disponíveis por predefinição. O requerente tem de definir o cabeçalho ConsistencyLevel como eventuale, exceto para $search, utilize 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 obter apenas contas de utilizador inativas, pode executar qualquer uma destas consultas que utilizam o $filter parâmetro de consulta:
Opção 1: Utilize o $filter parâmetro de consulta com o eq operador . Este pedido funciona por predefiniçã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: Utilize o $filter parâmetro de consulta com o ne operador . Este pedido não é suportado por predefinição porque o ne operador só é suportado em consultas avançadas. Por conseguinte, tem de adicionar o cabeçalho ConsistencyLevel definido a eventuale utilizar a $count=true cadeia de consulta.
GET https://graph.microsoft.com/v1.0/users?$filter=accountEnabled ne true&$count=true
ConsistencyLevel: eventual
Microsoft Entra ID objetos (diretório) que suportam capacidades de consulta avançadas
As capacidades avançadas de consulta são suportadas apenas em objetos de diretório e respetivas relações, incluindo os seguintes objetos:
Observação
A utilização de $filter nas relações da lista anterior de objetos de diretório é suportada apenas com parâmetros de consulta avançados. No entanto, nesses casos, não utilize $expand no mesmo pedido porque não é suportado com parâmetros de consulta avançados.
Cenários de consulta que requerem capacidades de consulta avançadas
A tabela seguinte lista cenários de consulta em objetos de diretório que as consultas avançadas suportam:
| 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
- Só pode utilizar
$filtere$orderbyem conjunto com consultas avançadas. - As consultas avançadas não suportam
$expandatualmente . - Azure AD inquilinos B2C não suportam atualmente capacidades de consulta avançadas.
- Para usar recursos avançados de consulta em solicitações em lote, especifique o cabeçalho ConsistencyLevel na propriedade da
POSTsolicitação JSON.
Suporte para filtrar por propriedades de objetos de 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 operadoreqfor suportado por padrão. - O
endswithoperador só é suportado com parâmetros de consulta avançados e apenas pelas propriedades mail, otherMails, userPrincipalName e proxyAddresses . - A obtenção de coleções vazias (
/$count eq 0,/$count ne 0) e coleções com menos de um objeto (/$count eq 1,/$count ne 1) só é suportada com parâmetros de consulta avançados. - Os
notoperadores de negação enesão suportados apenas com parâmetros de consulta avançados.- Todas as propriedades que suportam o
eqoperador também suportam osneoperadores ounot. - Para consultas que utilizam o
anyoperador lambda, usar onotoperador. Veja Filtrar utilizando operadores lambda.
- Todas as propriedades que suportam o
As tabelas seguintes resumem o suporte para $filter operadores por propriedades de objetos de diretório e indicam onde a consulta é suportada através de capacidades de consulta avançadas.
Legenda
-
O
$filteroperador funciona por predefinição para essa propriedade. -
O
$filteroperador só funciona sem parâmetros de consulta avançados. -
O
$filteroperador requer parâmetrosde consulta avançados, que são:-
ConsistencyLevel=eventualcabeçalho -
$count=truecadeia de caracteres
-
-
O
$filteroperador não é suportado nessa propriedade. Envie-nos comentários para solicitar que esta propriedade suporte$filterpara seus cenários. - As 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 suportam
$filterde todo.
Propriedades da unidade administrativa
| Propriedade | eq | startsWith | eq Nulo |
|---|---|---|---|
| description |
|
|
|
| displayName |
|
|
|
| isMemberManagementRestricted |
|
||
| membershipRule |
|
|
|
| membershipRuleProcessingState |
|
Propriedades do aplicativo
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| appId |
|
|||
| createdDateTime |
|
|
||
| description |
|
|
|
|
| disabledByMicrosoftStatus |
|
|||
| displayName |
|
|
|
|
| federatedIdentityCredentials/any(f:f/issuer) |
|
|
||
| federatedIdentityCredentials/any(f:f/name) |
|
|
||
| federatedIdentityCredentials/any(f:f/subject) |
|
|
||
| identifierUris/any(p:p) |
|
|
||
| info/logoUrl |
|
|||
| info/termsOfServiceUrl |
|
|
||
| notes |
|
|
|
|
| publicClient/redirectUris/any(p:p) |
|
|
||
| publisherDomain |
|
|
||
| requiredResourceAccess/any(r:r/resourceAppId) |
|
|||
| referênciaDeGerenciamentoDeServiços |
|
|
|
|
| signInAudience |
|
|||
| spa/redirectUris/any(p:p) |
|
|
||
| tags/any(p:p) |
|
|
||
| Nome único |
|
|
||
| verifiedPublisher/displayName |
|
|
|
|
| web/homePageUrl |
|
|
|
|
| web/redirectUris/any(p:p) |
|
|
As seguintes propriedades da entidade da aplicação suportam $count uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| extensionProperties/$count |
|
|
| federatedIdentityCredentials/$count |
|
|
Propriedades do contrato
| Propriedade | eq | startsWith |
|---|---|---|
| customerId |
|
|
| defaultDomainName |
|
|
| displayName |
|
|
Propriedades do dispositivo
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| accountEnabled |
|
|||
| alternativeSecurityIds/any(a:a/identityProvider) |
|
|
||
| alternativeSecurityIds/any(a:a/type) |
|
|||
| approximateLastSignInDateTime |
|
|
||
| deviceCategory |
|
|
|
|
| deviceId |
|
|||
| deviceOwnership |
|
|
||
| displayName |
|
|
|
|
| enrollmentProfileName |
|
|
|
|
| extensionAttributes/extensionAttribute1-15 |
|
|
|
|
| hostnames/any(p:p) |
|
|
||
| isCompliant |
|
|||
| isManaged |
|
|||
| isRooted |
|
|
||
| managementType |
|
|
||
| fabricante |
|
|
|
|
| mdmAppId |
|
|
||
| modelo |
|
|
|
|
| onPremisesLastSyncDateTime |
|
|||
| onPremisesSecurityIdentifier |
|
|
||
| onPremisesSyncEnabled |
|
|
||
| operatingSystem |
|
|
|
|
| operatingSystemVersion |
|
|
|
|
| physicalIds/any(p:p) |
|
|||
| profileType |
|
|||
| registrationDateTime |
|
|
||
| trustType |
|
As seguintes propriedades da entidade do dispositivo suportam $count uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| physicalIds/$count |
|
|
| systemLabels/$count |
|
|
Propriedades da função de diretório
| Propriedade | eq | startsWith | eq Nulo |
|---|---|---|---|
| description |
|
|
|
| displayName |
|
|
|
| roleTemplateId |
|
|
Propriedades do grupo
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| assignedLicenses/any(a:a/skuId) |
|
|||
| classificação |
|
|
||
| createdByAppId |
|
|||
| createdDateTime |
|
|
||
| description |
|
|
|
|
| displayName |
|
|
|
|
| expirationDateTime |
|
|||
| groupTypes/any(p:p) |
|
|||
| hasMembersWithLicenseErrors |
|
|
||
| infoCatalogs/any(p:p) |
|
|
||
| isAssignableToRole |
|
|||
|
|
|
|
||
| mailEnabled |
|
|||
| mailNickname |
|
|
|
|
| membershipRule |
|
|
||
| membershipRuleProcessingState |
|
|||
| onPremisesLastSyncDateTime |
|
|||
| onPremisesProvisioningErrors/any(o:o/category) |
|
|||
| onPremisesProvisioningErrors/any(o:o/propertyCausingError) |
|
|||
| onPremisesSamAccountName |
|
|
||
| onPremisesSecurityIdentifier |
|
|
||
| onPremisesSyncEnabled |
|
|
||
| preferredLanguage |
|
|
||
| proxyAddresses/any(p:p) |
|
|
||
| renewedDateTime |
|
|||
| resourceBehaviorOptions/any(p:p) |
|
|||
| resourceProvisioningOptions/any(p:p) |
|
|||
| securityEnabled |
|
|||
| Nome único |
|
|
As seguintes propriedades da entidade de grupo suportam $count uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| assignedLicenses/$count |
|
|
| onPremisesProvisioningErrors/$count |
|
|
| proxyAddresses/$count |
|
|
Propriedades de contato organizacional
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| CompanyName |
|
|
|
|
| department |
|
|
|
|
| displayName |
|
|
|
|
| givenName |
|
|
|
|
| jobTitle |
|
|
|
|
|
|
|
|
||
| mailNickname |
|
|
|
|
| manager/id |
|
|||
| onPremisesLastSyncDateTime |
|
|||
| onPremisesProvisioningErrors/any(o:o/category) |
|
|||
| onPremisesProvisioningErrors/any(o:o/propertyCausingError) |
|
|||
| onPremisesSyncEnabled |
|
|
||
| proxyAddresses/any(p:p) |
|
|
||
| surname |
|
|
|
As seguintes propriedades da entidade orgContact suportam $count uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| onPremisesProvisioningErrors/$count |
|
|
| proxyAddresses/$count |
|
|
Propriedades da entidade de serviço
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| accountEnabled |
|
|||
| alternativeNames/any(p:p) |
|
|
||
| appId |
|
|||
| appOwnerOrganizationId |
|
|||
| appRoleAssignmentRequired |
|
|||
| applicationTemplateId |
|
|||
| claimsPolicy/id |
|
|||
| createdObjects/any(c:c/id) |
|
|||
| description |
|
|
|
|
| displayName |
|
|
|
|
| federatedIdentityCredentials/any(f:f/issuer) |
|
|
||
| federatedIdentityCredentials/any(f:f/name) |
|
|
||
| federatedIdentityCredentials/any(f:f/subject) |
|
|
||
| homepage |
|
|
|
|
| info/logoUrl |
|
|||
| info/termsOfServiceUrl |
|
|
||
| notes |
|
|
|
|
| preferredSingleSignOnMode |
|
|||
| preferredTokenSigningKeyEndDateTime |
|
|||
| publisherName |
|
|
||
| remoteDesktopSecurityConfiguration/id |
|
|||
| servicePrincipalNames/any(p:p) |
|
|
||
| servicePrincipalType |
|
|||
| tags/any(p:p) |
|
|
||
| verifiedPublisher/displayName |
|
|
|
As seguintes propriedades da entidade servicePrincipal suportam $count uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| federatedIdentityCredentials/$count |
|
|
Propriedades de usuário
| Propriedade | eq | startsWith | ge/le | eq Nulo |
|---|---|---|---|---|
| accountEnabled |
|
|||
| ageGroup |
|
|||
| assignedLicenses/any(a:a/skuId) |
|
|||
| assignedPlans/any(a:a/capabilityStatus) |
|
|||
| assignedPlans/any(a:a/service) |
|
|
||
| assignedPlans/any(a:a/servicePlanId) |
|
|||
| authorizationInfo/certificateUserIds/any(p:p) |
|
|||
| businessPhones/any(p:p) |
|
|
||
| city |
|
|
|
|
| cloudRealtimeCommunicationInfo/isSipEnabled |
|
|||
| CompanyName |
|
|
|
|
| consentProvidedForMinor |
|
|||
| country |
|
|
|
|
| createdDateTime |
|
|
||
| createdObjects/any(c:c/id) |
|
|||
| creationType |
|
|||
| department |
|
|
|
|
| displayName |
|
|
|
|
| employeeHireDate |
|
|||
| employeeId |
|
|
||
| employeeOrgData/costCenter |
|
|
||
| employeeOrgData/division |
|
|
||
| employeeType |
|
|||
| externalUserState |
|
|||
| FaxNumber |
|
|
|
|
| givenName |
|
|
|
|
| identities/any(i:i/issuer) |
|
|
||
| imAddresses/any(p:p) |
|
|
||
| infoCatalogs/any(p:p) |
|
|
||
| isLicenseReconciliationNeeded |
|
|||
| isResourceAccount |
|
|||
| jobTitle |
|
|
|
|
|
|
|
|
||
| mailNickname |
|
|
|
|
| mobilePhone |
|
|
|
|
| officeLocation |
|
|
|
|
| onPremisesDistinguishedName |
|
|
|
|
| onPremisesExtensionAttributes/extensionAttribute1-15 |
|
|
|
|
| onPremisesImmutableId |
|
|||
| onPremisesLastSyncDateTime |
|
|||
| onPremisesProvisioningErrors/any(o:o/category) |
|
|||
| onPremisesProvisioningErrors/any(o:o/propertyCausingError) |
|
|||
| onPremisesSamAccountName |
|
|
||
| onPremisesSecurityIdentifier |
|
|
||
| onPremisesSipInfo/isSipEnabled |
|
|||
| onPremisesSyncEnabled |
|
|
||
| otherMails/any(p:p) |
|
|
||
| passwordPolicies |
|
|||
| passwordProfile/forceChangePasswordNextSignIn |
|
|
||
| passwordProfile/forceChangePasswordNextSignInWithMfa |
|
|
||
| postalCode |
|
|
|
|
| preferredLanguage |
|
|
||
| provisionedPlans/any(p:p/provisioningStatus) |
|
|||
| provisionedPlans/any(p:p/service) |
|
|
||
| proxyAddresses/any(p:p) |
|
|
||
| state |
|
|
||
| streetAddress |
|
|
|
|
| surname |
|
|
|
|
| usageLocation |
|
|
|
|
| userPrincipalName |
|
|
||
| userType |
|
|
As seguintes propriedades do suporte $count da entidade de utilizador de uma coleção numa expressão de filtro.
| Propriedade | Contagem de eq 0 | eq Contagem 1 |
|---|---|---|
| assignedLicenses/$count |
|
|
| onPremisesProvisioningErrors/$count |
|
|
| otherMails/$count |
|
|
| ownedObjects/$count |
|
|
| proxyAddresses/$count |
|
|
A tabela seguinte mostra o suporte para $filter outras propriedades de extensão no objeto de utilizador .
| Tipo de extensão | eq | startsWith | eq null |
|---|---|---|---|
| Extensões de esquema |
|
|
|
| Extensões abertas |
|
|
|
| Extensões de diretório |
|
|
|
Suporte para ordenação por propriedades de objetos de Microsoft Entra ID (diretório)
A tabela seguinte resume o suporte para $orderby por propriedades de objetos de diretório e indica onde a ordenação é suportada através de capacidades de consulta avançadas.
Legenda
-
O
$orderbyoperador funciona por predefinição para essa propriedade. -
O
$orderbyoperador requer parâmetrosde consulta avançados, que são:-
ConsistencyLevel=eventualcabeçalho -
$count=truecadeia de caracteres
-
- A utilização de
$filtere$orderbyna mesma consulta para objetos de diretório requer sempre parâmetros de consulta avançados. Para obter mais informações, veja Cenários de consulta que requerem capacidades de consulta avançadas.
| Objeto de diretório | Nome da propriedade | $orderby |
|---|---|---|
| administrativeUnit | createdDateTime |
|
| administrativeUnit | deletedDateTime |
|
| administrativeUnit | displayName |
|
| aplicação | createdDateTime |
|
| aplicação | deletedDateTime |
|
| aplicação | displayName |
|
| orgContact | createdDateTime |
|
| orgContact | displayName |
|
| device | approximateLastSignInDateTime |
|
| device | createdDateTime |
|
| device | deletedDateTime |
|
| device | displayName |
|
| group | createdDateTime |
|
| group | deletedDateTime |
|
| group | displayName |
|
| servicePrincipal | createdDateTime |
|
| servicePrincipal | deletedDateTime |
|
| servicePrincipal | displayName |
|
| usuário | createdDateTime |
|
| usuário | deletedDateTime |
|
| usuário | displayName |
|
| usuário | userPrincipalName |
|
| [todos os outros] | [todos os outros] |
|
Tratamento de erros para consultas avançadas sobre objetos de diretório
A secção seguinte fornece exemplos de cenários de erro comuns quando não utiliza parâmetros de consulta avançados, sempre que necessário.
Só pode contar objetos de diretório com os parâmetros de consultas avançadas. Se não especificar o ConsistencyLevel=eventual cabeçalho, o pedido devolve um erro quando utiliza o $count segmento de URL (/$count) ou ignora silenciosamente o $count parâmetro de consulta (?$count=true) se o utilizar.
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 não especificar o cabeçalho ConsistencyLevel , o pedido devolve 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 no URL suportar apenas consultas avançadas, mas o cabeçalho ConsistencyLevel ou a $count=true cadeia de consulta estiverem em falta, o pedido devolve 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 estiver indexada para suportar um parâmetro de consulta, o pedido devolve um erro mesmo que sejam especificados parâmetros de consulta avançados. Por exemplo, a propriedade createdDateTime do recurso de grupo não está indexada para capacidades 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, um pedido que inclua parâmetros de consulta pode falhar automaticamente. Por exemplo, o pedido pode falhar para parâmetros de consulta não suportados e para combinações não suportadas de parâmetros de consulta. Nestes casos, examine os dados devolvidos pelo pedido para determinar se os parâmetros de consulta especificados tiveram 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"
}
]
}