Criar 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 Versão.

Inscreve um aplicativo de ouvinte para receber notificações de alterações quando o tipo de alteração solicitado ocorrer no recurso especificado no Microsoft Graph.

Para identificar os recursos para os quais pode criar subscrições e as limitações das subscrições, veja Configurar notificações para alterações nos dados de recursos: Recursos suportados.

Alguns recursos suportam notificações avançadas, ou seja, notificações que incluem dados de recursos. Para obter mais informações sobre estes recursos, veja Configurar notificações de alteração que incluem dados de recursos: Recursos suportados.

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

A criação de uma subscrição requer permissão de leitura para o recurso. Por exemplo, para receber notificações de alteração em mensagens, a sua aplicação precisa das permissões Mail.Read.

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 ter cuidado antes de escolher as permissões, pesquise as permissões a seguir em Permissões.

Observação

  • Devido a restrições de segurança, as subscrições do Microsoft Graph não suportam permissões de acesso de escrita quando são necessárias apenas permissões de acesso de leitura.
  • Alguns recursos suportam notificações de alteração em vários cenários, cada um dos quais pode exigir permissões diferentes. Nesses casos, utilize o caminho do recurso para diferenciar os cenários.
Recurso com suporte Delegada (conta corporativa ou de estudante) Delegada (conta pessoal da Microsoft) Application
approvalItems Sem suporte. Sem suporte. ApprovalSolution.ReadWrite.All
callRecord Sem suporte. Sem suporte. CallRecords.Read.All
callRecording
communications/onlineMeetings/getAllRecordings
Todas as gravações ficam disponíveis no inquilino.
Sem suporte. Sem suporte. OnlineMeetingRecording.Read.All
callRecording
communications/onlineMeetings/{onlineMeetingId}/recordings
Qualquer gravação fica disponível para uma reunião específica.
OnlineMeetingRecording.Read.All Sem suporte. OnlineMeetingRecording.Read.All
callRecording
users/{userId}/onlineMeetings/getAllRecordings
Uma gravação de chamada que fica disponível numa reunião organizada por um utilizador específico.
OnlineMeetingRecording.Read.All Sem suporte. OnlineMeetingRecording.Read.All
callRecording
appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings
Uma gravação de chamada que fica disponível numa reunião onde está instalada uma determinada aplicação do Teams.
Sem suporte. Sem suporte. OnlineMeetingRecording.Read.All, OnlineMeetingRecording.Read.Chat
callTranscript
communications/onlineMeetings/getAllTranscripts
Qualquer transcrição fica disponível no inquilino.
Sem suporte. Sem suporte. OnlineMeetingTranscript.Read.All
callTranscript
communications/onlineMeetings/{onlineMeetingId}/transcripts
Qualquer transcrição fica disponível para uma reunião específica.
OnlineMeetingTranscript.Read.All Sem suporte. OnlineMeetingTranscript.Read.All
callTranscript
users/{userId}/onlineMeetings/getAllTranscripts
Uma transcrição de chamadas que fica disponível numa reunião organizada por um utilizador específico.
OnlineMeetingTranscript.Read.All Sem suporte. OnlineMeetingTranscript.Read.All
callTranscript
appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTranscripts
Uma transcrição de chamadas que fica disponível numa reunião onde está instalada uma determinada aplicação do Teams.
Sem suporte. Sem suporte. OnlineMeetingTranscript.Read.All, OnlineMeetingTranscript.Read.Chat
canal
/teams/getAllChannels
Todos os canais numa organização.
Sem suporte. Sem suporte. Channel.ReadBasic.All, ChannelSettings.Read.All
canal
/teams/{id}/channels
Todos os canais de uma determinada equipa numa organização.
Channel.ReadBasic.All, ChannelSettings.Read.All Sem suporte. Channel.ReadBasic.All, ChannelSettings.Read.All
chat
/chats
Todas as conversas numa organização.
Sem suporte. Sem suporte. Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
chat
/chats/{id}
Uma conversa específica.
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
chat
/appCatalogs/teamsApps/{id}/installedToChats
Todas as conversas numa organização onde está instalada uma determinada aplicação do Teams.
Sem suporte. Sem suporte. Chat.ReadBasic.WhereInstalled, Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled
chat
/users/{id}/chats
Todas as conversas das quais um determinado utilizador faz parte.
Chat.ReadBasic, Chat.Read, Chat.ReadWrite Sem suporte. Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
chatMessage
/teams/{id}/channels/{id}/messages
Todas as mensagens e respostas num canal específico.
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
Todas as mensagens numa conversa.
Chat.Read, Chat.ReadWrite Sem suporte. Chat.Read.All
chatMessage
/chats/getAllMessages
Todas as mensagens de chat numa organização.
Sem suporte. Sem suporte. Chat.Read.All
chatMessage
/users/{id}/chats/getAllMessages
Mensagens de chat para todas as conversas de que um determinado utilizador faz parte.
Chat.Read, Chat.ReadWrite Sem suporte. Chat.Read.All, Chat.ReadWrite.All
chatMessage
/appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
Mensagens de chat para todas as conversas numa organização onde está instalada uma determinada aplicação do Teams.
Sem suporte. Sem suporte. Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled
contato Contacts.Read Contacts.Read Contacts.Read
conversationMember
/chats/getAllMembers
Membros de todas as conversas numa organização.
Sem suporte. Sem suporte. ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
conversationMember
/chats/{id}/members
Membros de uma conversa específica.
ChatMember.Read, ChatMember.ReadWrite, Chat.ReadBasic, Chat.Read, Chat.ReadWrite Sem suporte. ChatMember.Read.Chat, Chat.Manage.Chat, ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All
conversationMember
/appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
Chat members for all chats in an organization where a particular Teams app is installed.
Sem suporte. Sem suporte. ChatMember.Read.WhereInstalled, ChatMember.ReadWrite.WhereInstalled, Chat.ReadBasic.WhereInstalled, Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled
conversationMember
/teams/getAllMembers
Membros de todas as equipas numa organização.
Sem suporte. Sem suporte. TeamMember.Read.All, TeamMember.ReadWrite.All
conversationMember
/teams/{id}/members
Membros de uma determinada equipa.
TeamMember.Read.All Sem suporte. TeamMember.Read.All
conversationMember
/teams/{id}/channels/getAllMembers
Membros em todos os canais privados de uma determinada equipa.
Sem suporte. Sem suporte. ChannelMember.Read.All
conversationMember
/teams/getAllChannels/getAllMembers
Sem suporte. Sem suporte. ChannelMember.Read.All
driveItem (OneDrive pessoal de um usuário) Sem suporte. Files.ReadWrite Sem suporte.
driveItem (OneDrive para trabalho ou escola) 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
offerShiftRequest
/teams/{id}/schedule/offerShiftRequests
Alterações a qualquer pedido de turno de oferta numa equipa.
Schedule.Read.All, Schedule.ReadWrite.All Sem suporte. Schedule.Read.All, Schedule.ReadWrite.All
onlineMeeting Sem suporte. Sem suporte. OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All
openShiftChangeRequest
/teams/{id}/schedule/openShiftChangeRequests
Alterações a qualquer pedido de turno aberto numa equipa.
Schedule.Read.All, Schedule.ReadWrite.All Sem suporte. Schedule.Read.All, Schedule.ReadWrite.All
presence Presence.Read.All Sem suporte. Sem suporte.
impressora 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
shift
/teams/{id}/schedule/shifts
Alterações a qualquer mudança numa equipa.
Schedule.Read.All, Schedule.ReadWrite.All Sem suporte. Schedule.Read.All, Schedule.ReadWrite.All
swapShiftsChangeRequest
/teams/{id}/schedule/swapShiftsChangeRequests
Alterações a qualquer pedido de turno de troca numa equipa.
Schedule.Read.All, Schedule.ReadWrite.All Sem suporte. Schedule.Read.All, Schedule.ReadWrite.All
team
/teams
Todas as equipas numa organização.
Sem suporte. Sem suporte. Team.ReadBasic.All, TeamSettings.Read.All
team
/teams/{id}
Uma equipa específica.
Team.ReadBasic.All, TeamSettings.Read.All Sem suporte. Team.ReadBasic.All, TeamSettings.Read.All
timeOffRequest
/teams/{id}/schedule/timeOffRequests
Alterações a qualquer pedido de folga numa equipa.
Schedule.Read.All, Schedule.ReadWrite.All Sem suporte. Schedule.Read.All, Schedule.ReadWrite.All
todoTask Tasks.ReadWrite Tasks.ReadWrite Sem suporte.
user User.Read.All User.Read.All User.Read.All
virtualEventWebinar VirtualEvent.Read Sem suporte. VirtualEvent.Read.All
baseTask (preterido) Tasks.ReadWrite Tasks.ReadWrite Sem suporte.

Observação

As seguintes permissões utilizam o consentimento específico do recurso:

  • OnlineMeetingRecording.Read.Chat
  • OnlineMeetingTranscript.Read.Chat
  • ChatSettings.Read.Chat
  • ChatSettings.ReadWrite.Chat
  • Chat.Manage.Chat
  • ChannelMessage.Read.Group
  • ChatMember.Read.Chat

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.

Tem de utilizar o cabeçalho do Prefer: include-unknown-enum-members pedido para obter os seguintes valores no chatMessagemessageTypeenum evoluível: systemEventMessage para /teams/{id}/channels/{id}/messages e /chats/{id}/messages recurso.

Observação

/teams/getAllMessages, /chats/getAllMessages, /me/chats/getAllMessages, /users/{id}/chats/getAllMessagese /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages são APIs com tráfego limitado; podem aplicar-se modelos de pagamento e requisitos de licenciamento . /teams/getAllMessages e /chats/getAllMessages suportam modelos model=A de pagamento e model=B , /me/chats/getAllMessages, /users/{id}/chats/getAllMessagese /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages suportam apenas model=B. Se não especificar um modelo de pagamento na consulta, será utilizado o modo de avaliação predefinido.

Observação

Para adicionar ou alterar um modelo de pagamento para um recurso subscrito de uma notificação de alteração, tem de criar uma nova subscrição de notificação de alteração com o novo modelo de pagamento; atualizar uma notificação de alteração existente não funciona.

conversationMember

conversationMember subscriptions can be specified to include resource data. 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, /chats/getAllMemberse /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers são APIs com tráfego limitado; podem aplicar-se modelos de pagamento e requisitos de licenciamento . /teams/getAllMembers e /chats/getAllMembers suportam modelos model=A de pagamento e model=B . /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers suporta apenas model=B. Se não especificar um modelo de pagamento na consulta, será utilizado o modo de avaliação predefinido.

Observação

Para adicionar ou alterar um modelo de pagamento para um recurso subscrito de uma notificação de alteração, tem de criar uma nova subscrição de notificação de alteração com o novo modelo de pagamento; atualizar uma notificação de alteração existente não funciona.

equipa, canal e chat

as subscrições de equipa, 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.

Pode utilizar o parâmetro de cadeia de consulta notifyOnUserSpecificProperties quando subscrever alterações num chat específico ou ao nível do utilizador. Quando define o parâmetro de cadeia de consulta notifyOnUserSpecificProperties como durante a true criação da subscrição, são enviados dois tipos de payloads para o subscritor. Um tipo contém propriedades específicas do utilizador e o outro é enviado sem eles. Para obter mais informações, consulte Obter notificações de alteração para conversas com o Microsoft Graph.

Observação

/appCatalogs/teamsApps/{id}/installedToChats tem requisitos de licenciamento e pagamento, especificamente suportando apenas model=B. Se nenhum modelo for especificado, o modo de avaliação será usado.

Observação

Para adicionar ou alterar um modelo de pagamento para um recurso subscrito de uma notificação de alteração, tem de criar uma nova subscrição de notificação de alteração com o novo modelo de pagamento; atualizar uma notificação de alteração existente não funciona.

Exemplo de solicitação

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

POST https://graph.microsoft.com/v1.0/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

Aplicam-se mais limitações às subscrições em 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 para trabalho ou escola, pode subscrever apenas a pasta raiz. As notificações de alteração são enviadas para as alterações pedidas na pasta subscrita ou em qualquer ficheiro, pasta ou outras instâncias driveItem na respetiva hierarquia. Não pode subscrever instâncias drive ou driveItem que não sejam pastas, como ficheiros individuais.

O OneDrive para trabalho ou escola e o SharePoint suportam o envio de notificações de eventos de segurança da sua aplicação que ocorrem num driveItem. Para se inscrever nestes eventos, adicionar o cabeçalho prefer:includesecuritywebhooks a sua solicitação para criar uma assinatura. Após a criação da assinatura, você receberá notificações quando as permissões sobre uma mudança de item forem alteradas. Este cabeçalho aplica-se ao SharePoint e ao OneDrive para contas escolares ou profissionais, mas não para consumidores do OneDrive.

contato, evento e mensagem

Pode subscrever alterações nos recursos de contactos, eventos ou mensagens do Outlook e, opcionalmente, especificar no payload do pedido POST se pretende incluir dados de recursos encriptados 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, não pode utilizar a permissão delegada Calendários.Ler para subscrever eventos na caixa de correio de outro utilizador.

  • Se inscrever para alterar as notificações de contatos, eventos no Outlook ou mensagens em pastascompartilhadas 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 utilize as permissões de partilha do Outlook (Contacts.Read.Shared, Calendars.Read.Shared, Mail.Read.Shared e os seus homólogos de leitura/escrita), uma vez que não suportam a subscrição para alterar notificações de itens em pastas partilhadas ou delegadas.

onlineMeetings, presença

As subscrições em onlineMeetings e presença requerem a propriedade encryptionCertificate e encryptionCertificateId ao criar uma subscrição para notificações com dados de recursos encriptados. Para obter mais informações, veja Configurar notificações de alteração para incluir dados de recursos. Para obter detalhes sobre subscrições de reuniões online, consulte Obter notificações de alteração para reuniões online.

virtualEventWebinar

As subscrições em eventos virtuais suportam apenas notificações básicas e estão limitadas a algumas entidades de um evento virtual. Para obter mais informações sobre os tipos de subscrição suportados, veja Obter notificações de alteração para atualizações de eventos virtuais do Microsoft Teams.

Solicitação HTTP

POST /subscriptions

Cabeçalhos de solicitação

Nome Tipo Descrição
Autorização string {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.

Corpo da solicitação

No corpo da solicitação, forneça uma representação JSON do objeto de assinatura.

Resposta

Se for bem-sucedido, este método devolve um 201 Created código de resposta e um objeto de subscrição no corpo da resposta.

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

Exemplo

Solicitação

No corpo da solicitação, forneça uma representação JSON do objeto subscription. Os campos clientState e latestSupportedTlsVersion são opcionais.

Este pedido cria uma subscrição para notificações de alteração sobre o novo e-mail recebido pelo utilizador atualmente com sessão iniciada.

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

{
   "changeType": "created",
   "notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
   "resource": "me/mailFolders('Inbox')/messages",
   "expirationDateTime":"2016-11-20T18:23:45.9356913Z",
   "clientState": "secretClientValue",
   "latestSupportedTlsVersion": "v1_2"
}

No corpo da solicitação, forneça uma representação JSON do objeto subscription. Os campos clientState e latestSupportedTlsVersion são opcionais.

Comportamento duplicado da subscrição

Não são permitidas subscrições duplicadas. Quando um pedido de subscrição contém os mesmos valores para changeType e recurso que uma subscrição existente contém, o pedido falha com um código 409 Conflictde erro HTTP e a mensagem Subscription Id <> already exists for the requested combinationde erro .

Exemplos de recursos

Seguem-se valores válidos para a propriedade do recurso.

Tipo de recurso Exemplos
approvalItems solution/approval/approvalItems
callRecord communications/callRecords
callRecording communications/onlineMeetings/getAllRecordings, communications/onlineMeetings/{onlineMeetingId}/recordings, users/{userId}/onlineMeetings/getAllRecordings, appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings
callTranscript communications/onlineMeetings/getAllTranscripts, communications/onlineMeetings/{onlineMeetingId}/transcripts, users/{userId}/onlineMeetings/getAllTranscripts, appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTranscripts
canal /teams/getAllChannels, /teams/{id}/channels
chat /chats, /chats/{id}
chatMessage chats/{id}/messages, chats/getAllMessages, teams/{id}/channels/{id}/messages, teams/getAllMessages
contato me/contacts
conversationMember /chats/{id}/members, /chats/getAllMembers, /teams/{id}/members, /teams/getAllMembers, /teams/{id}/channels/getAllMembers
driveItem me/drive/root
event me/events
group groups
conversa em grupo groups('{id}')/conversations
list sites/{site-id}/lists/{list-id}
message me/mailfolders('inbox')/messages, me/messages
onlineMeeting /communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}'
presença /communications/presences/{id} (usuário único), /communications/presences?$filter=id in ('{id}','{id}',…) (vários usuários)
impressora print/printers/{id}/jobs
printTaskDefinition print/taskDefinitions/{id}/tasks
equipe /teams, /teams/{id}
user users
todoTask /me/todo/lists/{todoTaskListId}/tasks
alerta de segurança security/alerts?$filter=status eq 'NewAlert'
baseTask (preterido) /me/tasks/lists/{Id}/tasks

Observação

Qualquer caminho que comece com me também pode ser utilizado com users/{id} , em vez de me para direcionar um utilizador específico em vez do utilizador atual.

Resposta

O exemplo a seguir mostra a resposta.

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

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#subscriptions/$entity",
  "id": "7f105c7d-2dc5-4530-97cd-4e7ae6534c07",
  "resource": "me/mailFolders('Inbox')/messages",
  "applicationId": "24d3b144-21ae-4080-943f-7067b395b913",
  "changeType": "created",
  "clientState": "secretClientValue",
  "notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
  "expirationDateTime": "2016-11-20T18:23:45.9356913Z",
  "creatorId": "8ee44408-0679-472c-bc2a-692812af3437",
  "latestSupportedTlsVersion": "v1_2",
  "notificationContentType": "application/json"
}

Validação de ponto de extremidade da notificação

O ponto final de notificação da subscrição (especificado na propriedade notificationUrl ) tem de ser capaz de responder a um pedido de validação, conforme descrito em Configurar notificações para alterações nos dados do utilizador. Se a validação falhar, a solicitação para criar a assinatura retornará um erro de Solicitação Incorreta 400.