Do Outlook REST API e EWS para o Microsoft Graph: O Guia de Migração de 2026 para Desenvolvedores

Unipile - Sumário
Guia de Migração 2026

De API REST do Outlook & EWS para o Microsoft Graph

A API REST do Outlook v2.0 foi descontinuada (março de 2024). O Exchange Web Services (EWS) chegará ao fim definitivo de sua vida útil em 1º de outubro de 2026. Este guia aborda todos os pontos de extremidade, fluxos OAuth e etapas de migração que você precisa implementar antes do prazo final.

Prazo final do EWS: 1º de outubro de 2026. A Microsoft confirmou que não haverá período de carência para o Exchange Online. Comece sua migração agora.

graph-mail.js
// API REST do Outlook via Microsoft Graph // Substituir EWS SOAP por uma única chamada REST const response = aguardar fetch( 'https://graph.microsoft.com/v1.0/me/messages', { cabeçalhos: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' } } ); const { value: mensagens } = await resposta.json(); console.log(`Recuperados ${messages.length} e-mails`);
GET /me/messages - 200 OK - 12 mensagens retornadas
O que é isso?

Quais são as perspectivas para a API REST do Outlook em 2026?

O termo "Outlook REST API" gera confusão em 2026, pois a Microsoft o utilizou para descrever pelo menos três conceitos distintos ao longo da última década. Aqui está o significado exato atual, por que ele ainda é importante para os desenvolvedores e o que mudou.

Definição: Em 2026, "Outlook REST API" é um termo coloquial que se refere aos pontos de extremidade de e-mail do Microsoft Graph (https://graph.microsoft.com/v1.0/me/messages). A API REST dedicada original do Outlook v2.0 (outlook.office.com/api/v2.0) foi desativado definitivamente em 31 de março de 2024, retornando o código HTTP 410 Gone para todas as solicitações. O Microsoft Graph é agora a API única e unificada para e-mail, calendário e contatos no Microsoft 365, Exchange Online, Outlook.com e Teams.

Isso é importante em 2026 por duas razões: em primeiro lugar, qualquer aplicativo que ainda faça referência ao antigo outlook.office.com/api/ O domínio está com falha. Em segundo lugar, os aplicativos que utilizam o Exchange Web Services (EWS) — o protocolo mais antigo baseado em SOAP — enfrentam um prazo de conformidade obrigatório a partir de 1º de outubro de 2026 para o Exchange Online. Compreender a nomenclatura correta é o primeiro passo para uma migração bem-sucedida.

Esclarecimento sobre a nomenclatura
Nome Protocolo URL base Situação em 2026
API REST do Outlook v2.0 REST / JSON outlook.office.com/api/v2.0 Falecido (março de 2024)
Exchange Web Services (EWS) SOAP / XML outlook.office365.com/EWS/ Fim da vida útil: outubro de 2026
API do Microsoft Graph Mail REST / JSON graph.microsoft.com/v1.0/me/mensagens Ao vivo - Use isto
MAPI / COM do Outlook COM / Binário Apenas para computador Apenas para computador

Para uma análise aprofundada da integração com o Microsoft Graph além do e-mail (webhooks, consultas delta, caixas de correio compartilhadas), consulte o Guia de integração de e-mail da API do Microsoft Graph. O guia de referência que abrange todos os padrões da API de e-mail está disponível em Guia do desenvolvedor da API de e-mail.

Planejando usar o Outlook em 2026? O Unipile oferece uma API de e-mail unificada que suporta o Microsoft Graph, o Gmail e o IMAP com uma única integração — sem necessidade de migração por provedor.

Construa com Unipile
Linha do tempo

Do v2.0 ao Microsoft Graph: Uma Breve História

A descontinuação da API REST do Outlook v2.0 não foi repentina – a Microsoft a anunciou anos antes, com múltiplos adiamentos de prazo. Entender esse histórico ajuda você a antecipar o que a Microsoft fará com o EWS e por que o prazo de outubro de 2026 está sendo tratado como final.

2015 - 2017
API REST do Outlook v2.0 é Lançada

A Microsoft introduz uma API baseada em REST em outlook.office.com/api/v2.0 como uma alternativa moderna ao EWS. Os desenvolvedores podem ler e-mails, gerenciar eventos de calendário e acessar contatos via JSON sobre HTTPS - uma melhoria significativa em relação ao SOAP/XML.

2019
O Microsoft Graph surge como a API unificada

A Microsoft lança o Microsoft Graph como um único endpoint cobrindo todos os serviços do Microsoft 365 - e-mail, calendário, contatos, Teams, OneDrive, SharePoint e muito mais. O graph.microsoft.com o domínio se torna a maneira canônica de acessar dados da Microsoft programaticamente.

Novembro de 2020
Anúncio de Depreciação da API REST do Outlook v2.0

A Microsoft anuncia oficialmente a descontinuação da API REST do Outlook v2.0 (e v1.0 beta), citando o Microsoft Graph como substituto. O anúncio afirma explicitamente que os endpoints antigos deixarão de funcionar - com um prazo de "final de 2022" na época.

2022 - 2023
Extensões Múltiplas de Prazo

A Microsoft prorrogou o prazo duas vezes – primeiro para novembro de 2022, depois para março de 2023, e então para março de 2024. Cada prorrogação veio com um aviso: "esta é a última prorrogação". Muitos desenvolvedores interpretaram essas extensões como um sinal de que os prazos eram flexíveis. O prazo de outubro de 2026 para o EWS está sendo aplicado com mais rigor.

31 de março de 2024
API REST do Outlook v2.0 Desativada Permanentemente

O outlook.office.com/api/v2.0 endpoint retorna HTTP 410 Gone para todas as solicitações. Chega de extensões. Qualquer aplicativo que ainda chame esses URLs está quebrado. "API REST do Outlook" agora significa Microsoft Graph quando usada corretamente. Para o guia de integração completo para endpoints de email do Microsoft Graph, consulte o Guia de integração de e-mail da API do Microsoft Graph.

1 de outubro de 2026
Fim de vida do EWS para Exchange Online

O Exchange Web Services (EWS) irá parar de funcionar para o Exchange Online (nuvem Microsoft 365). A Microsoft confirmou que esta é uma data de aplicação rigorosa. Servidores Exchange on-premises não são afetados. Todos os aplicativos baseados em nuvem que usam chamadas EWS SOAP/XML devem ter migrado para o Microsoft Graph até esta data.

Por Que Esta Migração Foi Inevitável

Segurança Moderna do OAuth 2.0

As APIs mais antigas dependiam de autenticação básica e formatos de token legados. O Microsoft Graph exige OAuth 2.0 com o Azure Active Directory, alinhando-se com modelos de segurança de confiança zero e eliminando riscos de exposição de credenciais.

Plataforma Unificada de Identidade

O Microsoft Graph consolida o acesso a todos os serviços do Microsoft 365 através de uma única plataforma de identidade. Um registro de aplicativo, um token, um prefixo de ponto de extremidade - em vez de manter credenciais separadas por API legada.

Capacidades Mais Ricas

O Microsoft Graph expõe recursos que o EWS nunca teve: consultas delta para sincronização incremental, notificações de alteração (webhooks), busca em todo o conteúdo, integração com o Teams e análises específicas do Graph - tudo via REST/JSON limpo.

Unipile - EWS Fim da Vida Útil
Prazo crítico

O Prazo Final Real de 2026: Fim de Vida do EWS (1º de outubro de 2026)

Embora a descontinuação da API REST do Outlook v2.0 tenha afetado um grupo relativamente pequeno de desenvolvedores, o fim da vida útil do EWS para o Exchange Online é um evento muito maior. Milhares de aplicativos corporativos, clientes de e-mail, ferramentas de sincronização de calendário e soluções de backup ainda dependem do Exchange Web Services. 1º de outubro de 2026 é a data limite definitiva - eis o que você precisa saber.

EWS Prazo Final: 1º de outubro de 2026 - Sem Período de Tolerância

Escopo: Apenas o Exchange Online (nuvem do Microsoft 365). Servidores Exchange locais não são afetados. Execução: A Microsoft confirmou que esta é uma mudança abrupta - as solicitações do EWS para o Exchange Online deixarão de ser processadas. O que quebra: todas as chamadas SOAP/XML para outlook.office365.com/EWS/Exchange.asmx, incluindo aplicativos que usam a biblioteca .NET EWS Managed API, fluxos de autenticação Kerberos/NTLM e Autenticação Básica via EWS.

Quem é afetado

  • Clientes de e-mail personalizados desenvolvidos com base na EWS Managed API
  • Complementos do Outlook usando chamadas EWS (não baseados em Graph)
  • Aplicativos de sincronização de calendário (reserva de salas, agendamento)
  • Ferramentas de backup e arquivamento de e-mail
  • Integrações de sincronização de e-mail de CRM / ATS
  • Qualquer app usando ExchangeService .Classe .NET

O que para de funcionar

  • Autenticação NTLM e Kerberos
  • Autenticação básica via EWS (já descontinuada)
  • EWS Managed API (Microsoft.Exchange.WebServices)
  • Notificações de streaming via EWS
  • Impersonação do EWSExchangeImpersonation)
  • Operações SOAP: GetItem, FindItems, SyncFolderItems

O que NÃO é afetado

  • Exchange 2016/2019 on-premises / SE EWS
  • API do Microsoft Graph (este é o destino da migração)
  • IMAP / SMTP para envio e recebimento básicos
  • ActiveSync (descontinuado separadamente)
  • aplicativo desktop do Outlook em si (usa MAPI proprietário)

A realidade do cronograma de migração

  • Aplicativo simples com 1-2 operações EWS: 1-2 semanas
  • Aplicativo de complexidade média (e-mail + agenda + contatos): 4 a 8 semanas
  • Aplicativo corporativo com representação do EWS: 8 a 16 semanas
  • Dependência de fornecedor (aguardando atualização da biblioteca): descontrolada
  • Testes + UAT + implantação em produção: acrescentar 2 a 4 semanas

Está com um prazo apertado para a migração do EWS? A API de e-mail unificada da Unipile abstrai o Microsoft Graph (além do Gmail e do IMAP), permitindo que você faça a migração uma única vez e nunca mais precise lidar com código específico de cada provedor. Veja o Guia completo da API de e-mail para padrões de arquitetura.

Comece sua migração
Referência da API

Pontos de extremidade da API REST do Outlook em 2026 (via Microsoft Graph)

Todas as funcionalidades da API REST do Outlook agora são disponibilizadas por meio do Microsoft Graph em https://graph.microsoft.com/v1.0. Abaixo estão os principais endpoints de e-mail, calendário e contatos, com seus métodos HTTP e um exemplo de código para cada categoria.

Pontos de acesso de e-mail

Método Ponto de extremidade Descrição Âmbito exigido
OBTER /eu/mensagens Listar mensagens na caixa de entrada (compatível com $filter, $orderby, $top, $select) Mail.Read
OBTER /me/mensagens/{id} Obter uma única mensagem pelo ID, incluindo o corpo completo e os cabeçalhos Mail.Read
POST /me/enviarE-mail Enviar um novo e-mail imediatamente (sem salvar rascunho) Mail.Send
POST /eu/mensagens Criar um rascunho de mensagem (enviar separadamente via /enviar) Mail.ReadWrite
PATCH /me/mensagens/{id} Atualizar uma mensagem (marcar como lida, mover, alterar categorias) Mail.ReadWrite
DELETE /me/mensagens/{id} Excluir uma mensagem definitivamente Mail.ReadWrite
OBTER /me/pastas de e-mail Listar todas as pastas de e-mail (Caixa de entrada, Enviados, Rascunhos, personalizadas) Mail.Read
OBTER /eu/mensagens/delta Sincronização incremental - obter apenas mensagens alteradas desde a última sincronização Mail.Read
send-mail.js
// POST /me/sendMail - Enviar por meio da API REST do Outlook (Microsoft Graph) const response = await fetch('https://graph.microsoft.com/v1.0/me/enviarEmail', { método: 'POST', cabeçalhos: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, corpo: JSON.stringify({ message: { assunto: '"Olá, da Microsoft Graph"', corpo: { contentType: 'Texto', conteúdo: '"Migração do EWS concluída!"' }, para os destinatários: [{ endereço de e-mail: { endereço: 'user@example.com' } }] }, Salvar nos itens enviados: true }) }); // 202 Aceito = enviado com sucesso

Pontos de extremidade do calendário

Método Ponto de extremidade Descrição Âmbito exigido
OBTER /me/eventos Listar todos os eventos do calendário (suporta filtro $ por data de início/término) Calendário.Ler
OBTER /me/calendarView Obter eventos dentro de um intervalo de tempo (parâmetros startDateTime + endDateTime) Calendário.Ler
POST /me/eventos Criar um novo evento no calendário com participantes e recorrência Calendários.LerGravar
OBTER /me/calendários Listar todos os calendários do usuário (principal, compartilhado, de grupo) Calendário.Ler

Pontos de Contato

Método Ponto de extremidade Descrição Âmbito exigido
OBTER /eu/contatos Listar todos os contatos na pasta de contatos padrão Contatos.Leitura
POST /eu/contatos Criar novo contato Contatos.LerGravar
OBTER /me/pastasDeContato Listar pastas de contatos Contatos.Leitura

Quer uma API única que lide com REST do Outlook (Microsoft Graph), Gmail e IMAP? Unipile une os três com um único endpoint unificado. Compare provedores em comparativo de provedores de API de email.

Construa com API Unificada
Autenticação

Autenticação OAuth 2.0: O Único Caminho a Seguir

A autenticação NTLM, Kerberos e Basic foram todas descontinuadas no Microsoft 365. O OAuth 2.0 é agora o método de autenticação obrigatório para todas as solicitações da API do Microsoft Graph. Não há alternativa, modo de compatibilidade nem prorrogação do prazo. Se sua aplicação ainda utiliza fluxos de autenticação legados, ela já está bloqueada para novos locatários e deixará de funcionar completamente para todos os locatários quando a aplicação do EWS for concluída em outubro de 2026.

Status de autenticação legado (Maio de 2026): NTLM e Kerberos estão totalmente desabilitados para o Exchange Online. A autenticação básica foi descontinuada para o Exchange Online em outubro de 2022. OAuth 2.0 via Azure AD é o único método de autenticação aceito para o Microsoft Graph.

Registro de aplicativos no Azure AD: 5 etapas

01
Criar um registro de aplicativo no Azure AD
Ir portal.azure.com - Azure Active Directory - Registros de aplicativo - Novo registro. Escolha um nome, defina o tipo de conta compatível (inquilino único, vários inquilinos ou contas pessoais) e configure um URI de redirecionamento.
02
Configurar permissões de API
Embaixo Permissões de API, adicione permissões do Microsoft Graph. Escolha entre permissões delegadas (contexto do usuário) ou de aplicativo (daemon), de acordo com o seu caso de uso. A maioria das integrações de e-mail/calendário utiliza permissões delegadas.
03
Criar um segredo de cliente (ou certificado)
Embaixo Certificados e segredos, crie um novo segredo do cliente. Copie o valor imediatamente – ele só é mostrado uma vez. Para aplicativos em produção, um certificado é mais seguro do que um segredo do cliente.
04
Implementar o fluxo do código de autorização
Redirecionar os usuários para https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize com id_cliente, escopo, redirect_urie tipo_de_resposta=código. Após o consentimento, troque o código por tokens no endpoint de tokens.
05
Solicitar a aprovação do administrador, se necessário
Alguns escopos (como Mail.ReadWrite.All) exigem o consentimento do administrador do locatário antes que qualquer usuário possa autorizar. Para esses casos, use o endpoint de consentimento do administrador: /adminconsent fluxo com uma conta de administrador de locatário.

Escopos OAuth Necessários para a Graph API

Role para o lado para ver a tabela completa
Escopo Tipo Caso de uso
Mail.Read Delegado Ler as mensagens da caixa de correio do usuário
Mail.ReadWrite Delegado Ler e modificar mensagens da caixa de correio
Mail.Send Delegado Enviar e-mail em nome do usuário
Calendários.LerGravar Delegado Ler e modificar eventos do calendário
Contatos.Leitura Delegado Ler os contatos do usuário
Mail.ReadWrite.All Aplicativo Ler/gravar em todas as caixas de correio (aplicativos de serviço, requer consentimento do administrador)
Calendários.LerEscrever.Todos Aplicativo Ler/gravar em todos os calendários (aplicativos em segundo plano, requer permissão de administrador)
acesso_offline Delegado Necessário para receber um token de atualização para acesso de longa duração

Fluxo do código de autorização - Exemplo em Node.js

JavaScript (Node.js)
// Passo 1: Construir URL de autorização
const authUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize?`
  + new URLSearchParams({
    client_id: ID_DO_CLIENTE,
    response_type: 'código',
    uri_de_redirecionamento: URI_DE_REDINICIONAMENTO,
    escopo: 'Mail.Read Mail.Send Calendars.ReadWrite offline_access',
    modo_resposta: 'consulta'
  });

// Etapa 2: Trocar o código por tokens
const tokenRes = await fetch(
  https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token,
  {
    method: 'POST',
    corpo: new URLSearchParams({
      client_id: ID_DO_CLIENTE,
      client_secret: CHAVE_SECRETA_DO_CLIENTE,
      código: authCode,
      redirect_uri: URI_DE_REDINICIONAMENTO,
      grant_type: ''código_de_autorização''
    })
  }
);
const { access_token, refresh_token } = await tokenRes.json();

// Passo 3: Atualizar quando o token de acesso expirar (geralmente 1 hora)
const refreshRes = await fetch(tokenEndpoint, {
  method: 'POST',
  body: new URLSearchParams({
    client_id: ID_DO_CLIENTE,
    client_secret: CHAVE_SECRETA_DO_CLIENTE,
    refresh_token: token de atualização armazenado,
    grant_type: 'token de atualização'
  })
});
Gerenciamento de token de atualização: Tokens de acesso do Microsoft Graph expiram após 1 hora. Armazene o token_de_atualização armazená-lo com segurança em seu banco de dados e usá-lo para solicitar novos tokens de acesso sem que o usuário precise se autenticar novamente. Os tokens de atualização podem expirar após 90 dias de inatividade. Sempre solicite o acesso_offline escopo para receber um token de atualização.
Plano de Ação

Lista de verificação para migração: do EWS para o Microsoft Graph em 10 etapas

A Microsoft confirmou que a descontinuação do EWS para o Exchange Online entrará em vigor a partir de 1º de outubro de 2026. Não haverá período de carência, opção de reversão nem ponte de compatibilidade. Todos os aplicativos que ainda utilizarem o Exchange Web Services para o Microsoft 365 deixarão de funcionar nessa data.

Prazo final: 1º de outubro de 2026. Sem extensões. Sem modo de compatibilidade. Planeje sua migração agora — uma aplicação EWS complexa pode levar de 4 a 8 semanas para ser totalmente migrada para o Microsoft Graph.
01
Analise sua utilização atual do EWS
Inventarie todas as chamadas EWS em seu código: operações de e-mail, sincronização de calendário, consultas de contato, notificações push/pull/streaming. Isso determina o escopo e a estimativa de esforço da sua migração.
02
Registrar um aplicativo do Azure AD e definir escopos
Crie o registro do seu aplicativo no Portal do Azure. Defina os escopos mínimos necessários do Microsoft Graph para o seu caso de uso. Solicite apenas o que for necessário — evite conceder permissões em excesso.
03
Mapeie as operações do EWS para os pontos de extremidade do Graph
Criar tabela de tradução: FindItem se torna GET /me/messages, CreateItem se torna POST /me/sendMail, FindAppointments se torna GET /me/events. A Microsoft fornece um guia oficial de mapeamento de EWS para Graph.
04
Substituir WCF/SOAP por chamadas REST HTTP
O EWS utiliza SOAP sobre HTTP. O Microsoft Graph utiliza REST padrão com JSON. Remova todas as classes de proxy WCF, a serialização XML SOAP e as dependências da API gerenciada do EWS de sua base de código.
05
Migrar a autenticação de protocolos legados para o OAuth 2.0
Substitua o NTLM, o Kerberos ou a autenticação básica pelo fluxo de código de autorização do OAuth 2.0. Implemente a lógica de atualização de token utilizando o escopo `offline_access` para manter um acesso de longa duração.
06
Teste no tenant de desenvolvimento com o Microsoft Graph Explorer
Use o Graph Explorer (developer.microsoft.com/graph/graph-explorer) para criar protótipos e testar chamadas de API antes de escrever o código. Configure um locatário de desenvolvimento separado para evitar testes em caixas de correio de produção.
07
Implementar consultas delta para sincronização incremental
Substitua o EWS SyncFolderItems por consultas delta do Graph (GET /me/messages/delta). Armazene o token deltaLink para permitir uma sincronização incremental eficiente — apenas as alterações ocorridas desde a última consulta são retornadas.
08
Gerenciamento de limitação de tráfego: HTTP 429 e Retry-After
O Microsoft Graph aplica limites de taxa rigorosos. Implemente o backoff exponencial: ao receber um código de erro HTTP 429, verifique o cabeçalho Retry-After e aguarde exatamente esse tempo antes de tentar novamente.
09
Atualizar o tratamento de erros para o formato de erro do Graph
Os erros de gráfico utilizam um formato diferente das falhas SOAP do EWS. Analise o objeto de erro JSON: { "error": { "code": "...", "message": "..." } }. Atualize todo o seu tratamento de erros e registro de logs de acordo com isso.
Prazo final
10
Mudança para o novo sistema de produção antes de 1º de outubro de 2026
Planeje a migração da produção com pelo menos 4 semanas de antecedência em relação ao prazo final. Execute o EWS e o Graph em paralelo durante um período de transição para verificar a exatidão antes de desativar completamente a camada do EWS.
Migre para o Unipile e pular a 8ª de 10 etapas - sem registro de aplicativos no Azure, sem fluxos OAuth, sem lógica de limitação de tráfego para gerenciar.
Crie já
Exemplos de Código

Exemplos de migração de código: EWS x Microsoft Graph

Abaixo, apresentamos uma comparação lado a lado de quatro operações comuns: a abordagem SOAP do EWS tradicional à esquerda e o equivalente REST do Microsoft Graph à direita. A mudança do XML prolixo para o JSON conciso fica imediatamente evidente.

1 Ler as mensagens da caixa de entrada
EWS - FindItem SOAP Obsoleto
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  
    <finditem</finditem Percurso=""Superficial""
      xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
      
        Padrão
      
      <indexedpageitemview</indexedpageitemview
        Número máximo de entradas retornadas="10"
        Deslocamento="0"
        BasePoint=""Início""/>
      
        <t:distinguishedfolderid</t:distinguishedfolderid ID=""caixa de entrada""/>
      
    
  
Microsoft Graph REST Atual
GET /me/messages
  ?$select=Assunto,De,receivedDateTime,bodyPreview
  &$top=10
  &$orderby=receivedDateTime decrescente

Autorização: Bearer {access_token}

// Resposta (JSON):
{
  "valor": [
    {
      "identificador": "AAMkAGI...",
      "assunto": "Olá",
      "de": {
        "endereço de e-mail": {
          "endereço": "sender@example.com"
        }
      },
      "dataHoraRecebimento": "27/05/2026"
    }
  ],
  "@odata.nextLink": "https://..."
}
2 Enviar um e-mail
EWS - CreateItem SOAP Obsoleto
CriarItem Disposição da Mensagem="EnviarEGuardarCopia"
  xmlns="http://schemas.microsoft.com/.../messagens">
  
    
      Olá da EWS
      <t:Corpo Tipo de Corpo="HTML">
        

Corpo da mensagem

to@example.com
Microsoft Graph REST Atual
POST /me/sendMail
Autorização: Bearer {access_token}
Content-Type: application/json

{
  "mensagem": {
    "assunto": "Olá de Graph",
    "corpo": {
      "tipoConteudo": "HTML",
      "content" (conteúdo): "

Corpo da mensagem

"
}, "paraDestinatários": [ { "endereço de e-mail": { "endereço": "to@example.com" } } ] }, "salvarEmItensEnviados": true } // Resposta: HTTP 202 Accepted (sem corpo)
3 Obter eventos do calendário
EWS - FindAppointments SOAP Obsoleto
<finditem</finditem Percurso=""Superficial"">
  
    Todas as Propriedades
  
  <VisualizacaoCalendario
    Número máximo de entradas retornadas="50"
    DataDeInício="2026-05-01T00:00:00Z"
    DataFim="2026-05-31T23:59:59Z"
  />
  
    <t:distinguishedfolderid</t:distinguishedfolderid
      ID="calendário"/>
  
Microsoft Graph REST Atual
GET /me/eventos
  ?$select=assunto,início,fim,local,organizador
  &$filter=data/hora de início ge '2026-05-01T00:00:00Z'
    e fim/dataHora <= '2026-05-31T23:59:59Z'
  &$top=50
  &$orderby=início/dataHora asc

Autorização: Bearer {access_token}

// Retorna um array JSON limpo de
// objetos de evento de calendário - sem análise XML
4 Inscreva-se para receber notificações em tempo real
EWS - Notificações em tempo real Obsoleto

  
    
      <t:distinguishedfolderid</t:distinguishedfolderid
        ID=""caixa de entrada""/>
    
    
      Evento de novo e-mail
      EventoExcluído
    
  




Webhooks do Microsoft Graph Atual
POST /assinaturas
Autorização: Bearer {access_token}
Content-Type: application/json

{
  "tipo de alteração": "criado,atualizado,excluído",
  "urlNotificacao": "https://seusite.com/webhook",
  "recurso": "/me/mensagens",
  "dataHoraValidade": "03/06/2026 18:00:00",
  "estadoDoCliente": "seu-estado-secreto"
}

// O Gráfico envia POSTs para sua URL a cada alteração.
Renovar assinatura antes do vencimento.
// Nenhuma conexão persistente é necessária.
Cuidado

Armadilhas comuns: permissões, limites de taxa, limitação de tráfego

Mesmo desenvolvedores experientes em Exchange Web Services frequentemente se deparam com os mesmos obstáculos ao migrar para o Microsoft Graph. Essas seis armadilhas são responsáveis pela maioria dos incidentes em produção durante a migração. Compreendê-las agora poupa dias de depuração mais tarde. Para uma visão mais ampla sobre como esses desafios se comparam entre os diferentes provedores, consulte nosso comparação de provedores de API de e-mail.

Permissões da aplicação vs. permissões delegadas
Essa é a confusão mais comum. Delegado as permissões atuam em nome de um usuário conectado. Aplicativo As permissões funcionam como um serviço sem contexto de usuário — e exigem a aprovação do administrador.
TipoContextoAutorização do administrador
DelegadoUsuário conectadoÀs vezes
AplicativoSem usuário / daemonSempre
Limites de restrição: HTTP 429 e Retry-After
O Microsoft Graph impõe um limite de aproximadamente 10.000 solicitações a cada 10 minutos por aplicativo por locatário. Quando ocorre a limitação, você recebe HTTP 429 with a Tentar Novamente Após cabeçalho que especifica o tempo de espera em segundos. Ignorar esse cabeçalho e tentar novamente imediatamente resulta em um banimento prolongado. Sempre implemente o backoff exponencial com o valor exato de Retry-After.
Paginação via @odata.nextLink
O Graph divide os resultados em páginas com um tamanho padrão (normalmente 10 mensagens). Se você não marcar a opção @odata.nextLink Na resposta, você perde dados sem perceber. Sempre execute o loop: if @odata.nextLink está presente, faça outra requisição GET para essa URL (ela inclui o token de Pulo) até que o campo esteja ausente.
Autorização do administrador para escopos confidenciais
Escopos como Mail.ReadWrite.All, Calendários.LerEscrever.Todose User.Read.All exigem que um administrador do locatário conceda consentimento antes que qualquer usuário possa autorizar seu aplicativo. Sem o consentimento do administrador, o fluxo OAuth retorna um AADSTS65001 erro. Use o /adminconsent ponto de extremidade durante a integração do aplicativo para clientes corporativos.
Estado da consulta delta: gerenciamento do deltaLink
As consultas Delta retornam as alterações ocorridas desde a sua última sincronização, identificadas por um deltaLink token na página final. Armazene esse token de forma permanente — ele é o seu cursor de sincronização. Se você o perder, será necessário realizar uma ressincronização completa. Nunca defina um intervalo de tempo de forma rígida — use o deltaLink para evitar o processamento de duplicatas ou a perda de alterações.
Tratamento de anexos: limite de tamanho de 3 MB
Anexos com menos de 3 MB podem ser incluídos diretamente em uma única chamada de API. Para arquivos com mais de 3 MB, é necessário criar primeiro uma sessão de upload (POST /me/mensagens/{id}/anexos/criarSessãoDeUpload) e fazer o upload em partes. Tentar incorporar um anexo grande resulta em um 413 Entidade da solicitação muito grande erro.
Abordagem de API unificada

Evite as dores de cabeça da migração: uma abordagem unificada com API de e-mail

Uma migração completa do EWS para o Graph em uma aplicação complexa leva de 4 a 8 semanas de trabalho de engenharia. É necessário registrar as aplicações do Azure, implementar fluxos OAuth, lidar com a atualização de tokens, gerenciar o controle de fluxo, reescrever todas as chamadas SOAP, atualizar o tratamento de erros e realizar testes em todos os ambientes. Depois, é preciso repetir tudo isso sempre que a Microsoft fizer alguma alteração.

O Unipile agrupa o Microsoft Graph, o Gmail e o IMAP em uma única API unificada. Basta autenticar seus usuários uma vez pelo Unipile para ler e enviar e-mails, sincronizar calendários e gerenciar contatos nos três provedores usando os mesmos pontos de extremidade — sem necessidade de registro de aplicativos no Azure, sem fluxos OAuth específicos para cada provedor e sem precisar manter uma lógica de limitação de tráfego. Veja nosso guia completo da API de e-mail e Comparação de provedores de API de e-mail para compreender o panorama.

50 linhas de código do Microsoft Graph contra 5 linhas de código do Unipile

Microsoft Graph - Ler caixa de entrada (nativo) ~50 linhas
// 1. Registro de aplicativo do Azure (portal.azure.com)
// 2. Fluxo de código de autorização OAuth
const authUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize?`
  + new URLSearchParams({
      client_id: CLIENT_ID,
      response_type: 'código',
      redirect_uri: REDIRECT_URI,
      scope: 'Mail.Read offline_access',
      modo_resposta: 'consulta'
    });
// 3. Lida com o redirecionamento, troca o código por tokens
const tokenRes = await fetch(https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token, {
  method: 'POST',
  body: new URLSearchParams({
    client_id: CLIENT_ID, client_secret: CLIENT_SECRET,
    code: authCode, redirect_uri: REDIRECT_URI,
    grant_type: ''código_de_autorização''
  })
});
const { access_token, refresh_token } = await tokenRes.json();
// 4. Armazene os tokens de acesso e de atualização com expiração (a cada hora)
// 5. Gráfico de chamadas com token de portador
const res = await fetch('https://graph.microsoft.com/v1.0/me/messages?$top=10', {
  headers: { Authorization: `Bearer ${access_token}` }
});
// 6. Gerenciar limitação de tráfego (HTTP 429 + Retry-After)
se (status_da_resolução === 429) {
  const retryAfter = res.headers.obter(''Retry-After'');
  await dormir(retryAfter * 1000);
  // tentar novamente...
}
// 7. Paginar usando @odata.nextLink
const data = await res.json();
deixar mensagens = data.value;
enquanto (dado['@odata.nextLink']) { /* ... */ }
Unipile - Ler caixa de entrada (API unificada) 5 linhas
// No aplicativo do Azure, nenhum fluxo OAuth para implementar,
// sem lógica de limitação, sem atualização de token.
// Funciona para Outlook E Gmail E IMAP.

const cliente = new UnipileClient(CHAVE_API);

const mensagens = await cliente.email.listarMensagens({
  account_id: userAccountId, // conta vinculada
  pasta: 'Caixa de entrada',
  limit: 10
});

// Mesmo código, mesmo formato de resposta
// para Outlook, Gmail e IMAP.
// Unipile lida com Oauth, throttling,
// paginação e atualização de token.
SOC 2 Tipo II
Compatível com o GDPR
CASA Nível 2
SLA de disponibilidade de 99,991%
Outlook + Gmail + IMAP
Chega de reconstruir sempre a mesma infraestrutura do OAuth
Leia e-mails, envie mensagens e sincronize calendários entre o Outlook, o Gmail e o IMAP usando uma única API. O Unipile cuida da complexidade da migração do EWS para o Graph, para que sua equipe possa se concentrar no desenvolvimento de funcionalidades em vez de fluxos de autenticação.
Comece a construir com o Unipile
Unipile - Perguntas frequentes sobre a API REST e o EWS do Outlook

API REST e EWS do Outlook - Perguntas frequentes

Perguntas frequentes sobre a descontinuação da API REST do Outlook, a obsolescência do EWS e a migração para o Microsoft Graph

Não. A API REST do Outlook (v2.0 e beta) foi descontinuada pela Microsoft. Todas as solicitações enviadas aos pontos de extremidade REST legados do Outlook agora resultam em falha. O substituto oficial é Microsoft Graph, que cobre todas as mesmas operações de e-mail e calendário, além de muito mais. Se seu aplicativo ainda usa os pontos de extremidade REST do Outlook, a migração para o Grafo não é opcional.

A API REST do Outlook era uma API REST dedicada que abrangia apenas operações relacionadas à caixa de correio do Outlook. O Microsoft Graph é a API unificada para todo o ecossistema do Microsoft 365: e-mail do Outlook, calendário, contatos, Teams, SharePoint, OneDrive e muito mais. Ambas utilizam a autenticação OAuth 2.0, mas o Graph usa uma única URL base https://graph.microsoft.com/v1.0 e oferece uma interface mais consistente e rica em recursos do que os terminais específicos do Outlook, que foram descontinuados.

A Microsoft definiu 1 de outubro de 2026 como data definitiva para a descontinuação do EWS no Exchange Online (Microsoft 365). Após essa data, o EWS deixará de funcionar para as caixas de correio do Microsoft 365. Não há período de carência nem prorrogação anunciada. O EWS continuará funcionando para instalações locais do Exchange Server, que não são afetadas por esse prazo.

Microsoft Graph é o substituto oficial do EWS. Toda operação do EWS tem um equivalente no Graph: EncontrarItem se torna GET /me/messages, CriarItem enviar e-mail POST /me/sendMail, notificações de streaming se tornam webhooks do Graph via POST /assinaturas. Autenticação muda de NTLM/Kerberos/Basic Auth para OAuth 2.0 via Azure AD. Para equipes que precisam de um caminho mais simples, uma API de e-mail unificada como a Unipile resumo de todos os três provedores sob um único SDK.

Não. A API REST do Outlook v2.0 foi desativada. Solicitações para esses pontos de extremidade falharão com erros. O Microsoft Graph é o único caminho suportado para integração de e-mail e calendário do Outlook. Todas as novas integrações devem direcionar https://graph.microsoft.com/v1.0 e use a autenticação OAuth 2.0.

O esforço depende da complexidade da sua implementação do EWS. Uma integração simples com algumas operações de leitura/escrita geralmente leva de 1 a 2 semanas. Uma aplicação complexa com notificações de streaming, sincronização delta, operações de múltiplas pastas e tratamento extenso de erros pode levar de 4 a 8 semanas. A migração requer: registro de aplicativo do Azure AD, implementação do OAuth 2.0, substituição ponto a ponto, lógica de throttling, atualizações de paginação e alterações no formato de erro. Uma alternativa é utilizar A abstração do Microsoft Graph pela Unipile, que lida com a maior parte dessa complexidade automaticamente.

O prazo de outubro de 2026 aplica-se especificamente a Exchange Web Services (EWS) uso no Exchange Online. Os complementos do Outlook que utilizam a API Office.js seguem um cronograma distinto. No entanto, a Microsoft vem descontinuando gradualmente os complementos COM e VSTO legados em favor dos complementos do Office baseados na web. Se o seu complemento realizar chamadas EWS internamente, essas chamadas deixarão de funcionar em outubro de 2026, independentemente da estrutura do complemento. Consulte o roteiro do Microsoft 365 para obter as orientações mais recentes específicas para o seu tipo de complemento.

Como a API REST do Outlook foi descontinuada, os escopos relevantes são para Microsoft Graph. Escopos principais de e-mail: Mail.Read (ler mensagens), Mail.Send (enviar email), Mail.ReadWrite (ler e modificar mensagens), Calendários.LerGravar (acesso ao calendário), Contatos.Leitura (contatos). Sempre inclua acesso_offline para receber um token de atualização. Escopos em nível de aplicativo como Mail.ReadWrite.All requer consentimento do administrador do locatário e só deve ser usado em cenários de daemon sem contexto de usuário. Consulte nosso Guia OAuth do Microsoft Graph para um passo a passo completo de configuração.

O Microsoft Graph aplica limites de taxa de aproximadamente 10.000 solicitações por 10 minutos por aplicativo por locatário. Quando limitado, a API retorna HTTP 429 Muitos Pedidos with a Tentar Novamente Após cabeçalho que especifica o número exato de segundos a esperar. A regra fundamental: sempre respeite o Tentar Novamente Após exatamente esse valor. Tentar novamente antes que essa janela se feche prolonga o período de limitação. Em aplicações SaaS multilocatárias, nas quais cada locatário tem limites distintos, a limitação em um locatário não afeta os demais. Compare também IMAP como alternativa se a limitação de tráfego em grande escala for uma preocupação.

A Unipile é uma API de e-mail unificada que reúne o Microsoft Graph, o Gmail e o IMAP em um único SDK. Em vez de implementar fluxos OAuth do Microsoft Graph, gerenciar tokens de acesso, lidar com a limitação de tráfego e escrever código específico para cada provedor, você conecta as contas dos seus usuários por meio do Unipile e utiliza uma única API consistente para os três provedores. Isso é particularmente eficaz para aplicativos SaaS que precisam oferecer suporte simultâneo ao Outlook e ao Gmail sem a necessidade de manter código de integração separado para cada um. O Unipile opera como um intermediário técnico independente, agindo em nome de cada usuário autenticado, e não é afiliado nem endossado pela Microsoft.

Pule a migração do EWS inteiramente. Nossa equipe está aqui para ajudar.

Crie já
pt_BRBR