Compartilhar via


Listar usuários

Namespace: microsoft.graph

Recupere uma lista de objetos user.

Observação: Essa solicitação pode ter atrasos de replicação para usuários que foram criados, atualizados ou excluídos recentemente.

Esta API está disponível nas seguintes implementações de cloud nacionais.

Serviço global US Government L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Uma das seguintes permissões é necessária para chamar esta API. Para saber mais, incluindo como escolher permissões, confira Permissões.

Tipo de permissão Permissões (da com menos para a com mais privilégios)
Delegado (conta corporativa ou de estudante) User.ReadBasic.All, User.Read.All, User.ReadWrite.All, Directory.Read.All, Directory.ReadWrite.All
Delegado (conta pessoal da Microsoft) Sem suporte.
Aplicativo User.Read.All, User.ReadWrite.All, Directory.Read.All, Directory.ReadWrite.All

Os convidados não podem chamar esta API. Para obter mais informações sobre as permissões para membros e convidados, veja Quais são as permissões de utilizador predefinidas no Microsoft Entra ID?

Permissões para cenários específicos

  • User-Mail.ReadWrite.All é a permissão com menos privilégios para ler e escrever a propriedade outros Correios ; também permite ler algumas propriedades relacionadas com o identificador no objeto de utilizador.
  • User-PasswordProfile.ReadWrite.All é a permissão com menos privilégios para ler e escrever a propriedade passwordProfile ; também permite ler algumas propriedades relacionadas com o identificador no objeto de utilizador.
  • User-Phone.ReadWrite.All é a permissão com menos privilégios para ler e escrever as propriedades businessPhones e mobilePhone ; também permite ler algumas propriedades relacionadas com o identificador no objeto de utilizador.
  • User.EnableDisableAccount.All + User.Read.All é a combinação menos privilegiada de permissões para ler e escrever a propriedade accountEnabled .

Solicitação HTTP

GET /users

Parâmetros de consulta opcionais

Este método suporta os $countparâmetros de consulta , $expand, $filter$orderby, $search, $select, e $topOData para ajudar a personalizar a resposta. $skip não é compatível. Tem de especificar $select=signInActivity ou $filter=signInActivity ao listar os utilizadores, uma vez que a propriedade signInActivity não é devolvida por predefinição.

Algumas consultas são suportadas somente quando se usa o cabeçalho ConsistencyLevel definido como eventual e $count. Para obter mais informações, veja Capacidades avançadas de consulta em objetos de diretório. Os parâmetros $count e $search não estão disponíveis no momento em locatários do Azure AD B2C.

Por padrão, apenas um conjunto limitado de propriedades é retornado (businessPhones, displayName, givenName, id, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname e userPrincipalName).Para retornar um conjunto de propriedades alternativo, especifique o conjunto desejado de propriedades de usuário usando o parâmetro de consulta $select OData. Por exemplo, para retornardisplayName, givenName e postalCode, adicione o seguinte à sua consulta $select=displayName,givenName,postalCode.

As propriedades da extensão também suportam parâmetros de consulta da seguinte forma:

Tipo de extensão Comentários
onPremisesExtensionAttributes 1-15 Retornado somente com $select. Suporte $filter (eq, ne, e eq no null valores).
Extensões de esquema Retornado somente com $select. Suporte $filter (eq, ne, e eq no null valores).
Extensões abertas Retornado somente com $expand, ou seja, users?$expand=extensions.
Extensões de diretório Retornado somente com $select. Suporte $filter (eq, ne, e eq no null valores).

Determinadas propriedades não podem ser devolvidas numa coleção de utilizadores. As seguintes propriedades só são suportadas ao obter um único utilizador: aboutMe, birthday, hireDate, interests, mySite, pastProjects, preferredName, responsibilities, schools, skills, mailboxSettings.

As seguintes propriedades não são suportadas em contas Microsoft pessoais e serão null: aboutMe, birthday, interests, mySite, pastProjects, preferredName, responsibilities, schools, skills, streetAddress.

Cabeçalhos de solicitação

Cabeçalho Valor
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
ConsistencyLevel eventualmente. Este cabeçalho e $count são necessários quando se utiliza $search, ou em uso específico de $filter. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Corpo da solicitação

Não forneça um corpo de solicitação para esse método.

Resposta

Se bem-sucedido, este método retorna um código de resposta 200 OK e uma coleção de objetos user no corpo da resposta. Se uma coleção grande de usuários for retornada, você poderá usar a paginação no seu aplicativo.

Tentar utilizar $select na /users coleção para obter propriedades que não podem ser devolvidas numa coleção de utilizadores (por exemplo, o pedido ../users?$select=aboutMe) devolve um 501 Not Implemented código de erro.

Exemplos

Exemplo 1: Obter todos os usuários

Solicitação

O exemplo a seguir mostra uma solicitação.

GET https://graph.microsoft.com/v1.0/users

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "value": [
        {
            "businessPhones": [],
            "displayName": "Conf Room Adams",
            "givenName": null,
            "jobTitle": null,
            "mail": "Adams@contoso.com",
            "mobilePhone": null,
            "officeLocation": null,
            "preferredLanguage": null,
            "surname": null,
            "userPrincipalName": "Adams@contoso.com",
            "id": "6ea91a8d-e32e-41a1-b7bd-d2d185eed0e0"
        },
        {
            "businessPhones": [
                "425-555-0100"
            ],
            "displayName": "MOD Administrator",
            "givenName": "MOD",
            "jobTitle": null,
            "mail": null,
            "mobilePhone": "425-555-0101",
            "officeLocation": null,
            "preferredLanguage": "en-US",
            "surname": "Administrator",
            "userPrincipalName": "admin@contoso.com",
            "id": "4562bcc8-c436-4f95-b7c0-4f8ce89dca5e"
        }
    ]
}

Exemplo 2: Obter uma conta de usuário usando um nome de entrada

Solicitação

O exemplo a seguir mostra uma solicitação.

Observação: ao filtrar em issuerAssignedId, você deve fornecer emissor e issuerAssignedId. Entretanto, o valor do emissor será ignorado em determinados cenários. Para obter mais informações sobre a filtragem de identidades, veja objectIdentity resource type (Tipo de recurso objectIdentity)

GET https://graph.microsoft.com/v1.0/users?$select=displayName,id&$filter=identities/any(c:c/issuerAssignedId eq 'j.smith@yahoo.com' and c/issuer eq 'My B2C tenant')

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "value": [
    {
      "displayName": "John Smith",
      "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
    }
  ]
}

Exemplo 3: obter apenas uma contagem de usuários

Solicitação

O exemplo a seguir mostra uma solicitação. Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual porque $count está na solicitação. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Observação: os parâmetros de consulta $count e $search não estão disponíveis atualmente nos locatários do Azure Active Directory B2C.

GET https://graph.microsoft.com/v1.0/users/$count
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 200 OK
Content-type: text/plain

893

Exemplo 4: utilize $filter e $top para obter um usuário com um nome de exibição que comece com a letra 'a', incluindo uma contagem de objetos retornados

Solicitação

O exemplo a seguir mostra uma solicitação. Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual e a cadeia de caracteres de consulta $count=true porque a solicitação tem os parâmetros de consulta $orderby e $filter. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Observação: os parâmetros de consulta $count e $search não estão disponíveis atualmente nos locatários do Azure Active Directory B2C.

GET https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'a')&$orderby=displayName&$count=true&$top=1
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.count":1,
  "value":[
    {
      "displayName":"a",
      "mail":"a@contoso.com",
      "mailNickname":"a_contoso.com#EXT#",
      "userPrincipalName":"a_contoso.com#EXT#@contoso.com"
    }
  ]
}

Exemplo 5: utilize $filter para obter todos os utilizadores com um e-mail que termine com "a@contoso.com", incluindo uma contagem de objetos devolvidos, com os resultados ordenados por userPrincipalName

Solicitação

O exemplo a seguir mostra uma solicitação. Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual e a cadeia de consulta $count=true porque a solicitação tem os parâmetros de consulta $orderby e $filter, e também usa o operador endsWith. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Observação: os parâmetros de consulta $count e $search não estão disponíveis atualmente nos locatários do Azure Active Directory B2C.

GET https://graph.microsoft.com/v1.0/users?$filter=endswith(mail,'a@contoso.com')&$orderby=userPrincipalName&$count=true
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.count": 1,
  "value": [
    {
      "displayName": "Grady Archie",
      "givenName": "Grady",
      "jobTitle": "Designer",
      "mail": "GradyA@contoso.com",
      "userPrincipalName": "GradyA@contoso.com",
      "id": "e8b753b5-4117-464e-9a08-713e1ff266b3"
      }
    ]
}

Exemplo 6: utilize $pesquisa para obter usuários com nomes de exibição que contenham as letras 'wa', incluindo uma contagem de objetos retornados

Solicitação

O exemplo a seguir mostra uma solicitação. Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual porque $search está na solicitação. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Observação: os parâmetros de consulta $count e $search não estão disponíveis atualmente nos locatários do Azure Active Directory B2C.

GET https://graph.microsoft.com/v1.0/users?$search="displayName:wa"&$orderby=displayName&$count=true
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.count":7,
  "value":[
    {
      "displayName":"Oscar Ward",
      "givenName":"Oscar",
      "mail":"oscarward@contoso.com",
      "userPrincipalName":"oscarward@contoso.com"
    }
  ]
}

Exemplo 7: Use $search para obter usuários com nomes de exibição que contenham as letras 'wa' ou as letras 'ad', incluindo uma contagem de objetos retornados

Solicitação

O exemplo a seguir mostra uma solicitação. Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual porque $search está na solicitação. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

Observação: os parâmetros de consulta $count e $search não estão disponíveis atualmente nos locatários do Azure Active Directory B2C.

GET https://graph.microsoft.com/v1.0/users?$search="displayName:wa" OR "displayName:ad"&$orderbydisplayName&$count=true
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.count":7,
  "value":[
    {
      "displayName":"Oscar Ward",
      "givenName":"Oscar",
      "mail":"oscarward@contoso.com",
      "userPrincipalName":"oscarward@contoso.com"
    },
    {
      "displayName":"contosoAdmin1",
      "givenName":"Contoso Administrator",
      "mail":"'contosoadmin1@fabrikam.com",
      "userPrincipalName":"contosoadmin1_fabrikam.com#EXT#@contoso.com"
    }
  ]
}

Exemplo 8: Obter utilizadores convidados (B2B) de um inquilino ou domínio específico por userPrincipalName

Solicitação

O exemplo a seguir mostra uma solicitação. O valor userPrincipalName para utilizadores convidados (colaboração B2B) contém sempre o identificador "#EXT#". Por exemplo, userPrincipalName de um utilizador no respetivo inquilino raiz é AdeleV@adatum.com. Quando convida o utilizador a colaborar no seu inquilino, contoso.com, o userPrincipalName no seu inquilino é "AdeleV_adatum.com#EXT#@contoso.com".

Este pedido requer o cabeçalho ConsistencyLevel definido como eventual e a $count=true cadeia de consulta porque o pedido inclui o operador endsWith. Para obter mais informações sobre a utilização de ConsistencyLevel e $count, veja Advanced query capabilities on directory objects (Capacidades de consulta avançadas em objetos de diretório).

NOTA: Tem de codificar o caráter reservado "#" no valor userPrincipalName como "%23" no URL do pedido. Para obter mais informações, veja Codificar carateres especiais.

GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,mail,identities&$filter=endsWith(userPrincipalName,'%23EXT%23@contoso.com')&$count=true
ConsistencyLevel: eventual

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,mail,identities)",
    "@odata.count": 2,
    "value": [
        {
            "id": "39807bd1-3dde-48f3-8165-81ddd4e46de0",
            "displayName": "Adele Vance",
            "mail": "AdeleV@adatum.com",
            "identities": [
                {
                    "signInType": "userPrincipalName",
                    "issuer": "contoso.com",
                    "issuerAssignedId": "AdeleV_adatum.com#EXT#@cntoso.com"
                }
            ]
        }
    ]
}

Exemplo 9: Utilizar $filter para obter utilizadores a quem foi atribuída uma licença específica

Solicitação

O exemplo a seguir mostra uma solicitação.

GET https://graph.microsoft.com/v1.0/users?$select=id,mail,assignedLicenses&$filter=assignedLicenses/any(u:u/skuId eq cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46)

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,mail,assignedLicenses)",
  "value": [
    {
      "id": "cb4954e8-467f-4a6d-a8c8-28b9034fadbc",
      "mail": "admin@contoso.com",
      "assignedLicenses": [
        {
          "disabledPlans": [],
          "skuId": "cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46"
        }
      ]
    },
    {
      "id": "81a133c2-bdf2-4e67-8755-7264366b04ee",
      "mail": "DebraB@contoso.com",
      "assignedLicenses": [
        {
          "disabledPlans": [],
          "skuId": "cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46"
        }
      ]
    }
  ]
}

Exemplo 10: Obter o valor de uma extensão de esquema para todos os utilizadores

Neste exemplo, o ID da extensão do esquema é ext55gb1l09_msLearnCourses.

Solicitação

GET https://graph.microsoft.com/v1.0/users?$select=ext55gb1l09_msLearnCourses

Resposta

Na resposta a seguir, a propriedade de extensão de esquema ext55gb1l09_msLearnCourses não está designada em dois dos objetos de usuário.

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(ext55gb1l09_msLearnCourses)",
    "value": [
        {},
        {
            "ext55gb1l09_msLearnCourses": {
                "@odata.type": "#microsoft.graph.ComplexExtensionValue",
                "courseType": "Developer",
                "courseName": "Introduction to Microsoft Graph",
                "courseId": 1
            }
        },
        {}
    ]
}

Observação: você também pode aplicar $filter na propriedade de extensão do esquema para recuperar objetos em que uma propriedade na coleção corresponde a um valor especificado. A sintaxe é /users?$filter={schemaPropertyID}/{propertyName} eq 'value'. Por exemplo, GET /users?$select=ext55gb1l09_msLearnCourses&$filter=ext55gb1l09_msLearnCourses/courseType eq 'Developer'. Os eq e not operadores são compatíveis.

Exemplo 11: Obter utilizadores, incluindo o último tempo de início de sessão

Solicitação

O exemplo a seguir mostra uma solicitação.

Observação

  • Os detalhes da propriedade signInActivity requerem uma licença P1 ou P2 Microsoft Entra ID e a AuditLog.Read.All permissão.
  • Quando especificar $select=signInActivity ou $filter=signInActivity ao listar utilizadores, o tamanho máximo da página para $top é 120. Pedidos com $top um conjunto superior a 120 páginas de retorno com até 120 utilizadores. A propriedade signInActivity suporta $filter (eq, ne, not, ge, le) mas não com outras propriedades filtráveis.
GET https://graph.microsoft.com/v1.0/users?$select=displayName,userPrincipalName,signInActivity

Resposta

O exemplo a seguir mostra a resposta.

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(displayName,userPrincipalName,signInActivity)",
  "value": [
    {
      "displayName": "Adele Vance",
      "userPrincipalName": "AdeleV@contoso.com",
      "id": "1aecaf40-dc3a-461f-88a8-d06994e12898",
      "signInActivity": {
        "lastSignInDateTime": "2021-06-17T16:41:33Z",
        "lastSignInRequestId": "d4d31c40-4c36-4775-ad59-7d1e6a171f00",
        "lastNonInteractiveSignInDateTime": "0001-01-01T00:00:00Z",
        "lastNonInteractiveSignInRequestId": "",
        "lastSuccessfulSignInDateTime": "",
        "lastSuccessfulSignInRequestId": ""
      }
    },
    {
      "displayName": "Alex Wilber",
      "userPrincipalName": "AlexW@contoso.com",
      "id": "f0662ee5-84b1-43d6-8338-769cce1bc141",
      "signInActivity": {
        "lastSignInDateTime": "2021-07-29T15:53:27Z",
        "lastSignInRequestId": "f3149ee1-e347-4181-b45b-99a1f82b1c00",
        "lastNonInteractiveSignInDateTime": "2021-07-29T17:53:42Z",
        "lastNonInteractiveSignInRequestId": "868efa6a-b2e9-40e9-9b1c-0aaea5b50200",
        "lastSuccessfulSignInDateTime": "",
        "lastSuccessfulSignInRequestId": ""
      }
    }
  ]
}