Obter as alterações incrementais para usuários

A consulta delta no Microsoft Graph permite consultar adições, exclusões ou atualizações para recursos com suporte, por meio de uma série de solicitações 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 total inicial de todos os usuários em um locatário e, em seguida, obtém alterações incrementais para os usuários 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. A solicitação GET tem as seguintes características:

  • A função delta pré-endended para o caminho da URL.
  • Um token de estado (deltatoken ou skipToken) da chamada de função delta get anterior.
  • [Opcional] Todos os parâmetros de consulta com suporte

Exemplo

Este artigo mostra uma série de solicitações de exemplo para acompanhar as alterações nos usuários:

  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.deltatotalmente qualificado . As solicitações geradas pelos SDKs do Microsoft Graph usam o nome totalmente 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 devem ser especificados na solicitação inicial.
    • Somente as propriedades incluídas no $select são rastreadas para alterações. Se $select não for especificado, todas as propriedades do objeto serão rastreadas para alterações.
  • A solicitação inicial não inclui um token de estado. Os tokens de estado são usados em solicitações subsequentes.
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. Supondo que todo o conjunto de usuários seja muito grande, a resposta inclui um token de @odata.nextLink estado em um @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. Observe o $skiptoken na 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 usuário com 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 usuário é excluído permanentemente, o item contém uma anotação: @removed com o valor de "reason": "deleted".
  • Quando o usuário é criado ou restaurado do contêiner de itens excluídos, não há 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

Essa resposta inclui uma @odata.deltaLink URL, que indica que não há mais dados sobre o estado existente dos objetos de usuário. 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"
    }
  ]
}

Usando a deltatoken da última resposta, você obtém alterações (adições, exclusões ou atualizações) aos usuários desde a última solicitação.

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

Se não houver alterações, um @odata.deltaLink será retornado sem resultados – a propriedade value é 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 houver alterações, uma coleção de objetos de usuário alterados será incluída. 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"
      }
    }
  ]
}