Atualizar assinatura

Namespace: microsoft.graph

Importante

As APIs na versão /beta no Microsoft Graph estão sujeitas a alterações. Não há suporte para o uso dessas APIs em aplicativos de produção. Para determinar se uma API está disponível na v1.0, use o seletor de versão.

Cuidado

Os aplicativos existentes que usam esse recurso com baseTask ou baseTaskList devem ser atualizados, pois o conjunto de APIs de tarefas pendentes criado com base nesses recursos foi preterido a partir de 31 de maio de 2022. Esse conjunto de API deixará de retornar dados em 31 de agosto de 2022. Use o conjunto de API criado em todoTask.

Renove uma assinatura ampliando seu tempo de validade.

A tabela na seção Permissões lista os recursos que dão suporte à assinatura para alterar notificações.

As assinaturas expiram após um período de tempo que varia de acordo com o tipo de recurso. Para evitar notificações de alteração ausentes, um aplicativo deve renovar suas assinaturas bem antes da data de expiração. Consulte a assinatura para obter o comprimento máximo de uma assinatura para cada tipo de recurso.

Permissões

Dependendo do recurso e do tipo de permissão (delegado ou aplicativo) solicitado, a permissão especificada na tabela a seguir é a menos privilegiada necessária para fazer chamadas a esta API. Para saber mais, incluindo tomar cuidado antes de escolher as permissões mais privilegiadas, pesquise as seguintes permissões em Permissões.

Recurso com suporte Delegada (conta corporativa ou de estudante) Delegada (conta pessoal da Microsoft) Aplicativo
baseTask (preterido) Tasks.ReadWrite Tasks.ReadWrite Incompatível
callRecord Incompatível Incompatível CallRecords.Read.All
canal (/teams/getAllChannels – todos os canais em uma organização) Incompatível Incompatível Channel.ReadBasic.All, ChannelSettings.Read.All
canal (/teams/{id}/channels) Channel.ReadBasic.All, ChannelSettings.Read.All Incompatível Channel.ReadBasic.All, ChannelSettings.Read.All
chat chat (/conversa – todos os chats em uma organização) Incompatível Incompatível Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
chat (/chats/{id}) Chat.ReadBasic, Chat.Read, Chat.ReadWrite Sem suporte ChatSettings.Read.Chat , ChatSettings.ReadWrite.Chat, Chat.Manage.Chat*, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
chatMessage (/teams/{id}/channels/{id}/messages) ChannelMessage.Read.All, Group.Read.All, Group.ReadWrite.All Sem suporte ChannelMessage.Read.Group*, ChannelMessage.Read.All
chatMessage (/teams/getAllMessages -- todas as mensagens de canal na organização) Sem suporte Sem suporte ChannelMessage.Read.All
chatMessage (/chats/{id}/messages) Chat.Read, Chat.ReadWrite Sem suporte Chat.Read.All
chatMessage (/teams/getAllMessages -- todas as mensagens de chat na organização) Sem suporte Sem suporte Chat.Read.All
chatMessage (/users/{id}/chats/getAllMessages -- mensagens de chat para todos os chats dos quais um usuário específico faz parte) Chat.Read, Chat.ReadWrite Sem suporte Chat.Read.All, Chat.ReadWrite.All
contato Contacts.Read Contacts.Read Contacts.Read
conversationMember (/chats/getAllMembers) Incompatível Sem suporte ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
conversationMember (/chats/{id}/members) ChatMember.Read, ChatMember.ReadWrite, Chat.ReadBasic, Chat.Read, Chat.ReadWrite Incompatível ChatMember.Read.Chat , Chat.Manage.Chat, ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
conversationMember (/teams/getAllMembers) Incompatível Incompatível TeamMember.Read.All, TeamMember.ReadWrite.All
conversationMember (/teams/{id}/members) TeamMember.Read.All Incompatível TeamMember.Read.All
conversationMember (/teams/{id}/channels/getAllMembers) Incompatível Incompatível ChannelMember.Read.All
driveItem (OneDrive pessoal de um usuário) Sem suporte Files.ReadWrite Sem suporte
driveItem (OneDrive for Business) Files.ReadWrite.All Sem suporte Files.ReadWrite.All
evento Calendars.Read Calendars.Read Calendars.Read
grupo Group.Read.All Sem suporte Group.Read.All
conversa em grupo Group.Read.All Sem suporte Sem suporte
list Sites.ReadWrite.All Sem suporte Sites.ReadWrite.All
message Mail.ReadBasic, Mail.Read Mail.ReadBasic, Mail.Read Mail.Read
reunião online Sem suporte Incompatível OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All
presence Presence.Read.All Incompatível Incompatível
printer Sem suporte Sem suporte Printer.Read.All, Printer.ReadWrite.All
printTaskDefinition Sem suporte Sem suporte PrintTaskDefinition.ReadWrite.All
alerta de segurança SecurityEvents.ReadWrite.All Sem suporte SecurityEvents.ReadWrite.All
equipe (/teams – todas as equipes em uma organização) Incompatível Incompatível Team.ReadBasic.All, TeamSettings.Read.All
equipe (/teams/{id}) Team.ReadBasic.All, TeamSettings.Read.All Incompatível Team.ReadBasic.All, TeamSettings.Read.All
todoTask Tasks.ReadWrite Tasks.ReadWrite Incompatível
user User.Read.All User.Read.All User.Read.All

Observação: Permissões marcadas com * usam consentimento específico de recurso.

chatMessage

chatMessage assinaturas podem ser especificadas para incluir dados de recurso. Se especificado para incluir dados de recurso (includeResourceData definido como true), encryption é necessária. A criação de assinatura falhará se um encryptionCertificate não for especificado para tais assinaturas. Antes de criar uma assinatura chatMessage com permissões de aplicativo, talvez seja necessário solicitar acesso. Para obter detalhes, confira APIs protegidas no Microsoft Teams.

Você deve usar o cabeçalho da solicitação Prefer: include-unknown-enum-members para obter os seguintes valores nos recursos chatMessage messageType enumeração evoluível: systemEventMessage para /teams/{id}/channels/{id}/messages e /chats/{id}/messages.

Observação

/teams/getAllMessages, /chats/getAllMessages, /me/chats/getAllMessages e /users/{id}/chats/getAllMessages tem requisitos de licenciamento e pagamento. /teams/getAllMessages e /chats/getAllMessages suportam ambos parâmetros de consulta model=A e model=B, /me/chats/getAllMessages e /users/{id}/chats/getAllMessages dão suporte apenas model=B. Se nenhum modelo for especificado, o modo de avaliação será usado.

conversationMember

As assinaturas conversationMember podem ser especificadas para incluir dados de recurso. Se especificado para incluir dados de recurso (includeResourceData definido como true), encryption é necessária. A criação de assinatura falhará se um encryptionCertificate não for especificado.

Observação

/teams/getAllMembers e /chats/getAllMembers tem requisitos de licenciamento e pagamento. /teams/getAllMembers e /chats/getAllMembers suportam os parâmetros de consulta model=A e model=B. Se nenhum modelo for especificado, o modo de avaliação será usado.

equipe, canal e chat

assinaturas de equipe, canal e chat podem ser especificadas para incluir dados de recursos. Se especificado para incluir dados de recurso (includeResourceData definido como true), encryption é necessária. A criação de assinatura falhará se um encryptionCertificate não for especificado.

Exemplo de solicitação

Especifique o parâmetro de consulta model na propriedade recurso no corpo da solicitação.

POST https://graph.microsoft.com/beta/subscriptions
Content-type: application/json

{
   "changeType": "created",
   "notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
   "resource": "chats/getAllMessages?model=A",
   "expirationDateTime":"2016-11-20T18:23:45.9356913Z",
   "clientState": "secretClientValue",
   "latestSupportedTlsVersion": "v1_2"
}

driveItem

As limitações adicionais se aplicam aos itens do OneDrive. As limitações se aplicam para criação e gerenciamento de assinaturas (receber, atualizar e excluir assinaturas).

No OneDrive pessoal, você pode se inscrever em qualquer pasta raiz ou qualquer subpasta da unidade. No OneDrive for Business, você pode assinar somente a pasta raiz. As notificações de alteração são enviadas para os tipos de alterações solicitados na pasta assinada ou em qualquer arquivo, pasta ou outras instâncias driveItem em sua hierarquia. Você não pode inscrever as instâncias unidade ou driveItem que não sejam pastas, como arquivos individuais.

contato, evento e mensagem

Você pode assinar alterações nos recursos de contato, evento ou mensagem do Outlook e, opcionalmente, especificar no conteúdo da solicitação POST se deseja incluir dados de recursos criptografados em notificações.

Criar e gerenciar (obter, atualizar e excluir) uma assinatura requer um escopo de leitura para o recurso. Por exemplo, para receber notificações de alteração nas mensagens, seu aplicativo precisa da permissão Mail.Read. As notificações de alteração do Outlook dão suporte a escopos de permissão de aplicativo e delegados. Observe as seguintes limitações:

  • A permissão delegada dá suporte a inscrição de itens em pastas apenas na caixa de correio do usuário conectado. Por exemplo, você não pode usar os Calendários de permissões delegadas. Leia para assinar eventos na caixa de correio de outro usuário.

  • Se inscrever para alterar as notificações de contatos, eventos no Outlook ou mensagens em pastas compartilhadas ou delegadas:

    • Usar a permissão de aplicativos correspondentes para inscrever as alterações dos itens em uma pasta ou uma caixa de correio de qualquer usuários no locatário.
    • Não use as permissões de compartilhamento do Outlook (Contacts.Read.Shared Calendars.Read.Shared, Mail.Read.Shared e seus equivalentes de somente leitura), pois eles não suportam inscrições que alteram as notificações em itens de pastas compartilhadas ou delegadas.

onlineMeetings, presença

OnlineMeetings e assinaturas de presença exigem criptografia para notificações com dados de recurso. A criação da assinatura falhará se encryptionCertificate e encryptionCertificateId não forem especificados se os dados de recurso forem desejados em notificações. Para obter detalhes sobre assinaturas de reunião online, consulte Obter notificações de alteração para reuniões online.

Solicitação HTTP

PATCH /subscriptions/{id}

Cabeçalhos de solicitação

Nome Tipo Descrição
Autorização string {token} de portador. Obrigatório.

Corpo da solicitação

No corpo da solicitação, forneça apenas os valores das propriedades que devem ser atualizadas. As propriedades existentes que não estão incluídas no corpo da solicitação manterão seus valores anteriores ou serão recalculadas com base nas alterações em outros valores de propriedade.

A tabela a seguir especifica as propriedades que podem ser atualizadas.

Nome Tipo Descrição
expirationDateTime DateTimeOffset Especifica a data e a hora em UTC quando a assinatura expira. Para o período máximo de assinatura com suporte, varia dependendo do recurso.

Resposta

Se bem-sucedido, este método retorna um código de resposta 200 OK e um objeto subscription no corpo da resposta.

Para detalhes sobre como os erros são retornados, confira Respostas de erro.

Exemplo

Solicitação

Este é um exemplo da solicitação.

PATCH https://graph.microsoft.com/beta/subscriptions/{id}
Content-type: application/json

{
   "expirationDateTime":"2016-11-22T18:23:45.9356913Z"
}

Resposta

Veja a seguir um exemplo da resposta.

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

{
  "id":"7f105c7d-2dc5-4530-97cd-4e7ae6534c07",
  "resource":"me/messages",
  "applicationId": "24d3b144-21ae-4080-943f-7067b395b913",
  "changeType":"created,updated",
  "clientState":"secretClientValue",
  "notificationUrl":"https://webhook.azurewebsites.net/api/send/myNotifyClient",
  "lifecycleNotificationUrl":"https://webhook.azurewebsites.net/api/send/lifecycleNotifications",
  "expirationDateTime":"2016-11-22T18:23:45.9356913Z",
  "creatorId": "8ee44408-0679-472c-bc2a-692812af3437",
  "latestSupportedTlsVersion": "v1_2",
  "encryptionCertificate": "",
  "encryptionCertificateId": "",
  "includeResourceData": false,
  "notificationContentType": "application/json"
}