Partilhar via


Obter as alterações incrementais para usuários

A consulta delta no Microsoft Graph permite-lhe consultar adições, eliminações ou atualizações a recursos suportados através de uma série de pedidos delta . Para usuários, a consulta delta permite descobrir alterações sem buscar todo o conjunto de usuários para comparar as alterações.

Os clientes que sincronizam usuários com um repositório de perfil local podem usar a consulta delta para a sincronização completa inicial, junto com as sincronizações incrementais subsequentes. Normalmente, um cliente faz uma sincronização completa inicial de todos os utilizadores num inquilino e, em seguida, recebe alterações incrementais aos utilizadores periodicamente.

Acompanhar alterações a usuários

Acompanhe as alterações de usuários por meio de uma ou mais solicitações GET com função delta. O pedido GET tem as seguintes características:

  • A função delta foi anexada ao caminho do URL.
  • Um token de estado (deltatoken ou skipToken) da chamada da função delta GET anterior.
  • [Opcional] Quaisquer parâmetros de consulta suportados

Exemplo

Este artigo mostra uma série de pedidos de exemplo para controlar as alterações feitas aos utilizadores:

  1. Uma solicitação inicial e réplica
  2. Uma solicitação do nextLink e réplica
  3. Uma final da solicitação nextLink e réplica
  4. Uma solicitação de deltaLink e réplica de deltaLink

Solicitação inicial

Para acompanhar as alterações no recurso de usuário, faça uma solicitação e inclua a função delta como um segmento de URL.

Dica

/delta é um atalho para o nome /microsoft.graph.deltacompletamente qualificado . Os pedidos gerados pelos SDKs do Microsoft Graph utilizam o nome completamente qualificado.

Anote os seguintes itens:

  • O parâmetro de consulta $select opcional está incluído na solicitação para demonstrar como os parâmetros de consulta são automaticamente incluídos nas futuras solicitações. Se necessário, os parâmetros de consulta têm de ser especificados no pedido inicial.
    • Apenas as propriedades incluídas no $select são registadas para alterações. Se $select não for especificado, todas as propriedades do objeto são registadas para alterações.
  • A solicitação inicial não inclui um token de estado. Os tokens de estado são utilizados em pedidos subsequentes.
  • Limitações dos parâmetros de consulta nas funções delta.
GET https://graph.microsoft.com/v1.0/users/delta?$select=displayName,givenName,surname

Resposta inicial

Se bem-sucedido, este método retorna o código de resposta 200 OK e o objeto da coleção user no corpo da resposta. Partindo do princípio de que todo o conjunto de utilizadores é demasiado grande, a resposta inclui um @odata.nextLink token de estado num @odata.nextLink parâmetro.

Neste exemplo, uma URL @odata.nextLink é retornada indicando que não há mais páginas de dados a serem recuperados na sessão. Repare no $skiptoken NO URL. O parâmetro de consulta $select da solicitação inicial é codificado na URL @odata.nextLink.

A resposta também contém uma @removed anotação para um utilizador com o ID 86462606-fde0-4fc4-9e0c-a20eb73e54c6. A @removed anotação é adicionada nos seguintes cenários:

  • Quando o usuário é excluído, o item contém uma anotação: @removed com valor de "reason": "changed".
  • Quando o utilizador é eliminado permanentemente, o item contém uma anotação: @removed com o valor de "reason": "deleted".
  • Quando o utilizador é criado ou restaurado a partir do contentor de itens eliminados, não existe nenhuma anotação.
HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users(displayName,givenName,surname)",
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/users/delta?$skiptoken=oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa",
  "value": [
    {
      "displayName":"Cameron White",
      "givenName":"Cameron",
      "surname":"White",
      "id":"ffff7b1a-13b6-477b-8c0c-380905cd99f7"
    },
    {
      "displayName":"Delia Dennis",
      "givenName":"Delia",
      "surname":"Dennis",
      "id":"605d1257-ffff-40b6-8e6f-528a53f5dc55"
    },
    {
      "id": "86462606-fde0-4fc4-9e0c-a20eb73e54c6",
      "@removed": {
        "reason": "deleted"
      }
    },
    {
      "displayName": "Conf Room Adams",
      "id": "6ea91a8d-e32e-41a1-b7bd-d2d185eed0e0"
    }
  ]
}

A segunda solicitação especifica o skipToken retornado da resposta anterior. Observe que o parâmetro $select está codificado e incluído no skipToken.

GET https://graph.microsoft.com/v1.0/users/delta?$skiptoken=oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa

A resposta contém outro @odata.nextLink com um novo valor skipToken, o que indica que mais alterações controladas para usuários estão disponíveis. Use a URL @odata.nextLink em mais solicitações até que uma URL @odata.deltaLink (em um parâmetro @odata.deltaLink) seja retornada na resposta final, mesmo que o valor seja uma matriz vazia.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/users/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7",
  "value": [
    {
      "displayName":"Mallory Cortez",
      "givenName":"Mallory",
      "surname":"Cortez",
      "id":"d8c37826-ffff-4cae-b348-e2725b1e814b"
    },
    {
      "displayName":"Diego Sicilian",
      "givenName":"Diego",
      "surname":"Sicilian",
      "id":"8b1ee412-cd8f-4d59-ffff-24010edb9f1f"
    }
  ]
}

A terceira solicitação usa a última skipToken retornada da última solicitação de sincronização.

GET https://graph.microsoft.com/v1.0/users/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjtQ5LOhVoS7qQG_wdVCHHlbQpga7

Esta resposta inclui um @odata.deltaLink URL, que indica que não existem mais dados sobre o estado existente dos objetos de utilizador. Para solicitações futuras, o aplicativo usa a URL @odata.deltaLink para saber mais sobre outras alterações nos usuários. Salve o deltatoken e use-o na URL de solicitação subsequente para descobrir mais alterações nos usuários.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.deltaLink":"https://graph.microsoft.com/v1.0/users/delta?$deltatoken=oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460",
  "value": [
    {
      "displayName":"Lidia Holloway",
      "givenName":"Lidia",
      "surname":"Holloway",
      "id":"25dcffff-959e-4ece-9973-e5d9b800e8cc"
    },
    {
      "displayName":"Patti Fernandez",
      "givenName":"Patti",
      "surname":"Fernandez",
      "id":"f6ede700-27d0-4c42-bfb9-4dffff43c74a"
    }
  ]
}

Com a deltatoken da última resposta, obtém alterações (adições, eliminações ou atualizações) aos utilizadores desde o último pedido.

GET https://graph.microsoft.com/v1.0/users/delta?$deltatoken=oEcOySpF_hWYmTIUZBOIfPzcwisr_rPe8o9M54L45qEXQGmvQC6T2dbL-9O7nSU-njKhFiGlAZqewNAThmCVnNxqPu5gOBegrm1CaVZ-ZtFZ2tPOAO98OD9y0ao460

Se não existirem alterações, é devolvido um @odata.deltaLink sem resultados – a propriedade do valor é uma matriz vazia.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.deltaLink":"https://graph.microsoft.com/v1.0/users/delta?$deltatoken=MF1LuFYbK6Lw4DtZ4o9PDrcGekRP65WEJfDmM0H26l4v9zILCPFiPwSAAeRBghxgiwsXEfywcVQ9R8VEWuYAB50Yw3KvJ-8Z1zamVotGX2b_AHVS_Z-3b0NAtmGpod",
  "value": []
}

Se existirem alterações, é incluída uma coleção de objetos de utilizador alterados. A resposta também contém um @odata.nextLink, caso haja várias páginas de alterações a serem recuperadas, ou um @odata.deltaLink. Implemente o mesmo padrão de seguir o @odata.nextLink e persistir o @odata.deltaLink final para chamadas futuras.

Observação

Essa solicitação pode ter atrasos de replicação para usuários que foram criados, atualizados ou excluídos recentemente. Repita @odata.nextLink ou @odata.deltaLink depois de algum tempo para recuperar as alterações mais recentes.

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

{
  "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users",
  "@odata.deltaLink":"https://graph.microsoft.com/v1.0/users/delta?$deltatoken=MF1LuFYbK6Lw4DtZ4o9PDrcGekRP65WEJfDmM0H26l4v9zILCPFiPwSAAeRBghxgiwsXEfywcVQ9R8VEWuYAB50Yw3KvJ-8Z1zamVotGX2b_AHVS_Z-3b0NAtmGpod",
  "value": [
    {
      "displayName":"MOD Administrator",
      "givenName":"MOD",
      "surname":"Administrator",
      "id":"25dcffff-959e-4ece-9973-e5d9b800e8cc"
    },
    {
      "id":"8ffff70c-1c63-4860-b963-e34ec660931d",
      "@removed": {
         "reason": "changed"
      }
    }
  ]
}