Referência da API REST de Extensões de Dados do Office 365 (beta)
Aplica-se a: Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com
Observação
Esta documentação abrange a versão beta da API de Extensões de Dados do Office 365 no status de versão prévia. Os recursos de versão prévia estão sujeitos a alterações antes da finalização e podem fazer com que seu código deixe de funcionar. Por essa razão, em geral, você deve usar somente uma versão de produção de uma API em seu código de produção. Se disponível, a versão v2.0 é a preferencial no momento.
A API REST de Extensões de Dados do Office 365 permite que os aplicativos armazenem dinamicamente dados personalizados em uma mensagem, evento ou contato da conta do usuário. A conta pode estar no Office 365 ou ser uma conta da Microsoft (Hotmail.com, Live.com, MSN.com, Outlook.com e Passport.com).
Observação
Para simplificar a referência, o restante deste artigo usa o "Outlook.com" para incluir esses domínios de conta da Microsoft.
Não tem interesse na versão beta da API? No sumário à esquerda, vá para a seção de Referência da API REST do Office 365 e selecione a versão desejada.
Visão geral
Uma extensão de dados na API REST do Outlook é um tipo aberto do OData v4 que contém propriedades que você pode especificar em tempo de execução. Você pode usar a API de extensões de dados para ampliar uma instância de um tipo de entidade já definido no Modelo de Dados de Entidade (EDM) - uma mensagem, evento ou contato - especificando dinamicamente propriedades e valores personalizados em uma carga útil JSON. Isso torna a definição desses tipos de entidades mais flexível, economizando tempo para definir novos tipos de entidade apenas para esse propósito.
A propriedade ExtensionName é a única propriedade definida para todas as extensões. Um modo de garantir que os nomes de extensão sejam exclusivos é usar um método reverso no sistema de nomes de domínio (DNS) que seja dependente do seu próprio domínio, por exemplo, Com.Contoso.Contact
. Não use o domínio Microsoft em um nome de extensão.
Como uma extensão é um tipo aberto, você pode especificar dados adicionais específicos para uma instância de uma entidade. Por exemplo, você pode criar uma extensão para contatos comerciais individuais que rastreie dados personalizados, como nome da empresa e referenciador inicial, e especificar os dados na carga do JSON, conforme abaixo:
POST https://outlook.office.com/api/beta/me/contacts('{contact_id}')/extensions
{
@odata.type: "Microsoft.OutlookServices.OpenTypeExtension",
"ExtensionName": "Com.Contoso.Customer",
"CompanyName": "Alpine Skis",
"InitialReferrer": "Robin McCall"
}
Você pode usar a API de Extensões de Dados para executar operações CRUD em um recurso novo ou existente. Leia mais sobre as operações suportadas.
Para obter mais informações sobre o tipo aberto OData, consulte a documentação do OData v4 em OData.org.
Usar a API REST de Extensões de Dados
Extensões de dados ou propriedades estendidas?
As extensões de dados são a solução recomendada para a maioria dos cenários que envolvem o armazenamento e o acesso a dados personalizados. Se, no entanto, você precisar acessar dados personalizados para as propriedades MAPI do Outlook que ainda não estejam expostas por meio dos metadados da API REST do Outlook, você poderá usar as propriedades estendidas e sua API REST. Você pode verificar quais propriedades os metadados expõem em https://outlook.office.com/api/{version}/$metadata, substituindo {version} por v2.0, beta, etc., pela versão de sua escolha.
Autenticação
Assim como acontece com outras APIs REST do Outlook, para cada solicitação à API de Extensões de Dados você deve incluir um token de acesso válido. Para obter um token de acesso você deve ter registrado e identificado o seu aplicativo e obtido a autorização adequada.
Saiba mais aqui sobre algumas opções simplificadas de registro e autorização. Tenha isso em mente ao prosseguir com as operações específicas na API de Extensões de Dados.
Recursos REST com suporte
Você pode criar extensões para instâncias dos seguintes recursos no ponto de extremidade REST do Outlook:
Versão da API
Essa API foi promovida da versão prévia para o status de Disponibilidade Geral (GA). É suportado nas versões v2.0 e beta:
https://outlook.office.com/api/v2.0/
https://outlook.office.com/api/beta/
Parâmetros de URL
Os exemplos neste artigo usam os seguintes espaços reservados de ID em parâmetros de URLs de solicitação REST. Você deve especificar a ID da instância do recurso para o qual você deseja criar uma extensão.
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetros de URL | ||
contact_id | sequência de caracteres | A ID do contato. |
event_id | sequência de caracteres | A ID do evento. |
message_id | sequência de caracteres | A ID da mensagem. |
Veja Use a API REST do Outlook para obter mais informações comuns a todos os subconjuntos da API REST do Outlook e da API REST de Extensões de Dados do Office 365.
Operações de extensão
- Criar uma extensão em um item existente
- Criar uma extensão em um novo item
- Obter uma extensão
- Obter item expandido com uma extensão
- Encontre e expanda itens com uma extensão
- Adicionar ou modificar dados em uma extensão
- Excluir uma extensão
Criar extensão em um item existente
Criar uma extensão e adicionar propriedades personalizadas para a instância especificada de um recurso. O recurso pode ser uma mensagem, evento de calendário ou contato no Office 365 ou no Outlook.com. Os dados na carga do JSON podem ser tipos primitivos ou matrizes de tipos primitivos.
Para criar uma extensão para cada um dos recursos suportados:
POST https://outlook.office.com/api/beta/me/messages('{message_id}')/extensions
POST https://outlook.office.com/api/beta/me/events('{event_id}')/extensions
POST https://outlook.office.com/api/beta/me/contacts('{contact_id}')/extensions
Escopo mínimo necessário
Um dos escopos de leitura/gravação a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.readwrite
- https://outlook.office.com/calendars.readwrite
- https://outlook.office.com/contacts.readwrite
- wl.imap
- wl.calendars_update
- wl.events_create
- wl.contacts_create
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetros de corpo | ||
ExtensionName | sequência de caracteres | Um identificador de texto exclusivo para uma extensão. Obrigatório. |
Exemplo de solicitação
Este exemplo cria uma extensão para a mensagem especificada. O corpo da solicitação inclui o seguinte para a extensão:
- O tipo
Microsoft.OutlookServices.OpenTypeExtension
que é definido como sendo um tipo aberto OData nos metadados da API REST do Outlook. - O nome da extensão "Com.Contoso.Referral".
- Dados adicionais a serem armazenados como propriedades customizadas na carga do JSON:
CompanyName
,DealValue
eExpirationDate
que contêm tipos primitivos eTopModels
eTopSalespersons
que contêm matrizes de tipos primitivos.
POST https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions
Content-Type: application/json
{
"@odata.type" : "Microsoft.OutlookServices.OpenTypeExtension",
"ExtensionName" : "Com.Contoso.Referral",
"CompanyName" : "Wingtip Toys",
"DealValue@odata.type": "#Int64",
"DealValue" : 500050,
"ExpirationDate" : "2015-12-03T10:00:00.000Z",
"TopModels": [
3001,
4002,
5003
],
"TopSalespersons": [
"Dana Swope",
"Fanny Downs",
"Randi Welch"
]
}
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 201 Created
.
O corpo da resposta inclui o seguinte para a nova extensão:
- A propriedade padrão ExtensionName.
- A propriedade Id com o nome totalmente qualificado de
Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral
. - Os dados personalizados a serem armazenados.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions/$entity",
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df85e00@1717f226-49d1-4d0c-9d74-709fad6677b4')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions
('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"ExtensionName": "Com.Contoso.Referral",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"DealValue@odata.type": "#Int64",
"DealValue": 500050,
"ExpirationDate": "2015-12-03T10:00:00.000Z",
"TopModels@odata.type": "#Collection(Int32)",
"TopModels": [
3001,
4002,
5003
],
"TopSalespersons@odata.type": "#Collection(String)",
"TopSalespersons": [
"Dana Swope",
"Fanny Downs",
"Randi Welch"
]
}
Criar extensão em um novo item
Crie uma ou mais extensões ao criar uma nova instância de um recurso, todas na mesma chamada POST e adicione propriedades personalizadas à extensão. O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com. Os dados na carga do JSON podem ser tipos primitivos ou matrizes de tipos primitivos.
Para criar uma extensão para cada um dos recursos suportados, faça uma chamada POST semelhante à criação desse recurso e inclua uma extensão no corpo da solicitação POST.
POST https://outlook.office.com/api/beta/me/messages
POST https://outlook.office.com/api/beta/me/events
POST https://outlook.office.com/api/beta/me/contacts
Escopo mínimo necessário
Um dos escopos de leitura/gravação a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.readwrite
- https://outlook.office.com/calendars.readwrite
- https://outlook.office.com/contacts.readwrite
- wl.imap
- wl.calendars_update
- wl.events_create
- wl.contacts_create
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetros de corpo | ||
ExtensionName | sequência de caracteres | Um identificador de texto exclusivo para uma extensão. Obrigatório. |
Exemplo de solicitação
Este exemplo cria uma mensagem e uma extensão na mesma chamada. O corpo da solicitação inclui o seguinte:
- As propriedades Subject, Body e ToRecipients típicas de uma nova mensagem.
- E para a extensão:
- O tipo
Microsoft.OutlookServices.OpenTypeExtension
que é definido como sendo um tipo aberto OData nos metadados da API REST do Outlook. - O nome da extensão "Com.Contoso.Referral".
- Dados adicionais a serem armazenados como propriedades customizadas na carga do JSON:
CompanyName
,ExpirationDate
eDealValue
que contêm tipos primitivos eTopModels
eTopSalespersons
que contêm matrizes de tipos primitivos.
- O tipo
POST https://outlook.office.com/api/beta/me/messages
Content-Type: application/json
{
"Subject": "Annual review",
"Body": {
"ContentType": "HTML",
"Content": "You should be proud!"
},
"ToRecipients": [
{
"EmailAddress": {
"Address": "rufus@contoso.com"
}
}
],
"Extensions": [
{
"@odata.type": "Microsoft.OutlookServices.OpenTypeExtension",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"ExpirationDate": "2015-12-30T11:00:00.000Z",
"DealValue": 10000,
"TopModels": [
3001,
4002,
5003
],
"TopSalespersons": [
"Dana Swope",
"Fanny Downs",
"Randi Welch"
]
}
]
}
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 201 Created
.
O corpo da resposta inclui as propriedades da nova mensagem e o seguinte para a nova extensão:
- A propriedade Id com o nome totalmente qualificado de
Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral
. - A propriedade padrão ExtensionName especificada na solicitação.
- Os dados personalizados especificados na solicitação, armazenados como propriedades personalizadas.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df800e5@1717f226-49d1-4d0c-9d74-709fad664b77')/Messages
('AAMkAGEbs88AAB84uLuAAA=')",
"@odata.etag": "W/\"CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AAB88LOj\"",
"Id": "AAMkAGEbs88AAB84uLuAAA=",
"CreatedDateTime": "2015-10-30T03:03:43Z",
"LastModifiedDateTime": "2015-10-30T03:03:43Z",
"ChangeKey": "CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AAB88LOj",
"Categories": [ ],
"ReceivedDateTime": "2015-10-30T03:03:43Z",
"SentDateTime": "2015-10-30T03:03:43Z",
"HasAttachments": false,
"Subject": "Annual review",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r
\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nYou should be proud!\r\n</body>\r
\n</html>\r\n"
},
"BodyPreview": "You should be proud!",
"Importance": "Normal",
"ParentFolderId": "AQMkAGEwAAAIBDwAAAA==",
"Sender": null,
"From": null,
"ToRecipients": [
{
"EmailAddress": {
"Address": "rufus@contoso.com",
"Name": "John Doe"
}
}
],
"CcRecipients": [ ],
"BccRecipients": [ ],
"ReplyTo": [ ],
"ConversationId": "AAQkAGEFGugh3SVdMzzc=",
"IsDeliveryReceiptRequested": false,
"IsReadReceiptRequested": false,
"IsRead": true,
"IsDraft": true,
"WebLink": "https://outlook.office.com/owa/?
ItemID=AAMkAGEbs88AAB84uLuAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"MentionedMe": null,
"Mentioned": [ ],
"InferenceClassification": "Focused",
"Extensions@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages
('AAMkAGEbs88AAB84uLuAAA%3D')/Extensions",
"Extensions": [
{
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df800e5@1717f226-49d1-4d0c-9d74-709fad664b77')/Messages
('AAMkAGEbs88AAB84uLuAAA=')/extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"ExpirationDate": "2015-12-30T11:00:00.000Z",
"DealValue": 10000,
"TopModels@odata.type": "#Collection(Int32)",
"TopModels": [
3001,
4002,
5003
],
"TopSalespersons@odata.type": "#Collection(String)",
"TopSalespersons": [
"Dana Swope",
"Fanny Downs",
"Randi Welch"
]
}
]
}
Obter extensão
Obtenha uma extensão por nome ou ID na instância especificada de um recurso. O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com.
Obter a extensão por nome ou por ID retorna o mesmo corpo de resposta.
GET https://outlook.office.com/api/beta/me/messages('{message_id}')/extensions('{extensionId}')
GET https://outlook.office.com/api/beta/me/events('{event_id}')/extensions('{extensionId}')
GET https://outlook.office.com/api/beta/me/contacts('{contact_id}')/extensions('{extensionId}')
Escopo mínimo necessário
Um dos escopos de leitura a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.read
- https://outlook.office.com/calendars.read
- https://outlook.office.com/contacts.read
- wl.imap
- wl.calendars
- wl.contacts_calendars
- wl.basic
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetro de URL | ||
extensionId | sequência de caracteres | Pode ser um nome de extensão que seja um identificador de texto exclusivo entre todas as extensões em uma instância de recurso ou um nome completo que concatene o tipo de extensão e o identificador de texto exclusivo. O nome totalmente qualificado é retornado na propriedade id quando você cria a extensão. Obrigatório. |
Exemplo de solicitação
O primeiro exemplo referencia uma extensão por seu nome e obtém a extensão da mensagem especificada.
GET https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions('Com.Contoso.Referral')
O segundo exemplo referencia uma extensão pelo seu ID (nome totalmente qualificado) e obtém a extensão na mensagem especificada.
GET https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 200 OK
.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions/$entity",
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df85e00@1717f226-49d1-4d0c-9d74-709fad6677b4')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions
('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"ExtensionName": "Com.Contoso.Referral",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"DealValue": 500050,
"ExpirationDate": "2015-12-03T10:00:00Z"
}
Obter item expandido com extensão
Obter uma instância de um recurso expandido com a extensão especificada por um filtro no Id
. O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com.
Você pode filtrar no Id
com o nome da extensão ou com o nome totalmente qualificado e, em seguida, obter a instância expandida com a extensão, conforme mostrado abaixo. Certifique-se de aplicar a codificação de URL aos caracteres de espaço na sequência de caracteres de filtro.
GET https://outlook.office.com/api/beta/me/messages('{message_id}')?$expand=Extensions($filter=Id eq '{extensionId}')
GET https://outlook.office.com/api/beta/me/events('{event_id}')?$expand=Extensions($filter=Id eq '{extensionId}')
GET https://outlook.office.com/api/beta/me/contacts('{contact_id}')?$expand=Extensions($filter=Id eq '{extensionId}')
Escopo mínimo necessário
Um dos escopos de leitura a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.read
- https://outlook.office.com/calendars.read
- https://outlook.office.com/contacts.read
- wl.imap
- wl.calendars
- wl.contacts_calendars
- wl.basic
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetro de URL | ||
extensionId | sequência de caracteres | Pode ser um nome de extensão que seja um identificador de texto exclusivo entre todas as extensões em uma instância de recurso ou um nome completo que concatene o tipo de extensão e o identificador de texto exclusivo. O nome totalmente qualificado é retornado na propriedade id quando você cria a extensão. Obrigatório. |
Exemplo de solicitação
O exemplo a seguir obtém e expande a mensagem especificada incluindo a extensão retornada de um filtro. O filtro retorna a extensão em que Id
corresponde a um nome totalmente qualificado.
Para sua conveniência, a solicitação é mostrada abaixo com a codificação de URL do caractere reservado, espaço.
GET https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')?$expand=Extensions($filter=Id%20eq%20'Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 200 OK
.
O corpo da resposta inclui todas as propriedades da mensagem especificada e a propriedade estendida retornada do filtro.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages/$entity",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df85e00@1717f226-49d1-4d0c-9d74-709fad6677b4')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')",
"@odata.etag": "W/\"CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AABNsWMM\"",
"Id": "AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===",
"ChangeKey": "CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AABNsWMM",
"Categories": [
],
"CreateDateTime": "2015-06-19T02:03:31Z",
"LastModifiedDateTime": "2015-08-13T02:28:00Z",
"Subject": "Attached is the requested info",
"BodyPreview": "See the images attached.",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<style type=\"text/css\" style=\"display:none;\"><!-- P {margin-top:0;margin-bottom:0;} --></style>\r\n</head>\r\n<body dir=\"ltr\">\r\n<div id=\"divtagdefaultwrapper\" style=\"font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;\">\r\n<p>See the images attached. <br>\r\n</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
},
"Importance": "Normal",
"HasAttachments": true,
"ParentFolderId": "AQMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===QAAAA==",
"From": {
"EmailAddress": {
"Address": "desmond@contoso.com",
"Name": "Desmond Raley"
}
},
"Sender": {
"EmailAddress": {
"Address": "desmond@contoso.com",
"Name": "Desmond Raley"
}
},
"ToRecipients": [
{
"EmailAddress": {
"Address": "wendy@contoso.com",
"Name": "Wendy Molina"
}
}
],
"CcRecipients": [
],
"BccRecipients": [
],
"ReplyTo": [
],
"ConversationId": "AAQkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===mivdTmQ=",
"ReceivedDateTime": "2015-06-19T02:05:04Z",
"SentDateTime": "2015-06-19T02:04:59Z",
"IsDeliveryReceiptRequested": false,
"IsReadReceiptRequested": false,
"IsDraft": false,
"IsRead": true,
"WebLink": "https://outlook.office.com/owa/?ItemID=AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===%2FNJTqt5NqHlVnKVBwCY4MQpaFz9SbqUDe4%2Bbs88AAAAAAEJAACY4MQpaFz9SbqUDe4%2Bbs88AAApA4JMAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"MentionedMe": null,
"Mentioned": [
],
"InferenceClassification": "Focused",
"Extensions@odata.context": "https://outlook.office.com/api/beta/$metadata#Users('desmond40contoso.com')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions",
"Extensions": [
{
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df85e00@1717f226-49d1-4d0c-9d74-709fad6677b4')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"ExtensionName": "Com.Contoso.Referral",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"DealValue": 500050,
"ExpirationDate": "2015-12-03T10:00:00Z"
}
]
}
Encontre e expanda itens com uma extensão
Você pode encontrar instâncias de um recurso que contenham uma extensão correspondente a um filtro. Além disso, na mesma consulta, você pode obter essas instâncias expandidas com a extensão. As consultas nesta seção localizam essas instâncias, as expandem e incluem a extensão na resposta.
O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com.
Você pode filtrar no Id
com o nome da extensão ou com o nome totalmente qualificado e, em seguida, obter a instância expandida com a extensão, conforme mostrado abaixo. Certifique-se de aplicar a codificação de URL aos caracteres de espaço na sequência de caracteres de filtro.
GET https://outlook.office.com/api/beta/me/messages?$filter=Extensions/any(f:f/Id eq '{extensionId}')&$expand=Extensions($filter=Id eq '{extensionId}')
GET https://outlook.office.com/api/beta/me/events?$filter=Extensions/any(f:f/Id eq '{extensionId}')&$expand=Extensions($filter=Id eq '{extensionId}')
GET https://outlook.office.com/api/beta/me/contacts?$filter=Extensions/any(f:f/Id eq '{extensionId}')&$expand=Extensions($filter=Id eq '{extensionId}')
Escopo mínimo necessário
Um dos escopos de leitura a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.read
- https://outlook.office.com/calendars.read
- https://outlook.office.com/contacts.read
- wl.imap
- wl.calendars
- wl.contacts_calendars
- wl.basic
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetro de URL | ||
extensionId | sequência de caracteres | Pode ser um nome de extensão que seja um identificador de texto exclusivo entre todas as extensões em uma instância de recurso ou um nome completo que concatene o tipo de extensão e o identificador de texto exclusivo. O nome totalmente qualificado é retornado na propriedade id quando você cria a extensão. Obrigatório. |
Exemplo de solicitação
O exemplo a seguir pesquisa todas as mensagens na caixa de correio do usuário conectado para localizar as que contêm uma extensão correspondente a um filtro e as expande incluindo a extensão. O filtro retorna extensões que tem o Id
combinando o nome da extensão Com.Contoso.Referral
.
Para sua conveniência, a solicitação é mostrada abaixo com a codificação de URL do caractere reservado, espaço.
GET https://outlook.office.com/api/beta/me/messages?$filter=Extensions/any(f:f/Id%20eq%20'Com.Contoso.Referral')&$expand=Extensions($filter=Id%20eq%20'Com.Contoso.Referral')
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 200 OK
.
O corpo da resposta inclui todas as mensagens que possuem uma extensão correspondente e todas as propriedades da mensagem. Neste exemplo, a resposta contém duas mensagens.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages",
"value": [
{
"@odata.type": "#Microsoft.OutlookServices.EventMessage",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Messages('AAMkADIyDREAAA=')",
"@odata.etag": "W/\"DAAAABYAAACGYzsRv+OAR5zyXf6CQkRrAAADJ9tn\"",
"Id": "AAMkADIyDREAAA=",
"CreatedDateTime": "2016-01-06T02:20:17Z",
"LastModifiedDateTime": "2016-01-13T02:13:54Z",
"ChangeKey": "DAAAABYAAACGYzsRv+OAR5zyXf6CQkRrAAADJ9tn",
"Categories": [
],
"ReceivedDateTime": "2016-01-06T02:20:18Z",
"SentDateTime": "2016-01-06T02:20:18Z",
"HasAttachments": false,
"InternetMessageId": "<BY1PR19MB0023E92E0B43F5E268406F0DF5F40@BY1PR19MB0023.namprd19.prod.outlook.com>",
"Subject": "Accepted: Latin American Product Manual Group",
"Body": {
"ContentType": "Text",
"Content": ""
},
"BodyPreview": "",
"Importance": "Normal",
"ParentFolderId": "AAMkADIyAAAAEJAAA=",
"Sender": {
"EmailAddress": {
"Name": "MOD Administrator",
"Address": "admin@adatumltd.onmicrosoft.com"
}
},
"From": {
"EmailAddress": {
"Name": "MOD Administrator",
"Address": "admin@adatumltd.onmicrosoft.com"
}
},
"ToRecipients": [
{
"EmailAddress": {
"Name": "Engineering",
"Address": "engineering@adatumltd.onmicrosoft.com"
}
}
],
"CcRecipients": [
],
"BccRecipients": [
],
"ReplyTo": [
],
"ConversationId": "AAQkADIyWejUoYAg=",
"IsDeliveryReceiptRequested": null,
"IsReadReceiptRequested": false,
"IsRead": true,
"IsDraft": false,
"WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADIyDREAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"InferenceClassification": "Focused",
"UnsubscribeData": [
],
"UnsubscribeEnabled": false,
"MeetingMessageType": "MeetingAccepted",
"StartDateTime": {
"DateTime": "2015-01-05T19:00:00.0000000",
"TimeZone": "UTC"
},
"EndDateTime": {
"DateTime": "2015-01-05T20:30:00.0000000",
"TimeZone": "UTC"
},
"Location": {
"DisplayName": "Mt. Adams"
},
"Type": "SeriesMaster",
"Recurrence": {
"Pattern": {
"Type": "RelativeMonthly",
"Interval": 2,
"Month": 0,
"DayOfMonth": 0,
"DaysOfWeek": [
"Monday"
],
"FirstDayOfWeek": "Sunday",
"Index": "First"
},
"Range": {
"Type": "NoEnd",
"StartDate": "2015-01-05",
"EndDate": "0001-01-01",
"RecurrenceTimeZone": "tzone://Microsoft/Utc",
"NumberOfOccurrences": 0
}
},
"IsOutOfDate": false,
"Extensions@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages('AAMkADIyDREAAA%3D')/Extensions",
"Extensions": [
{
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Messages('AAMkADIyDREAAA=')/Extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"DealValue@odata.type": "#Int64",
"DealValue": 500300,
"ExpirationDate": "2015-12-03T10:00:00.000Z"
}
],
"Event@odata.associationLink": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Events('AAMkADIyAAAAABrdAAA=')/$ref",
"Event@odata.navigationLink": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Events('AAMkADIyAAAAABrdAAA=')"
},
{
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Messages('AAMkADIyAHVAAA=')",
"@odata.etag": "W/\"CQAAABYAAACGYzsRv+OAR5zyXf6CQkRrAAADJ6aq\"",
"Id": "AAMkADIyAHVAAA=",
"CreatedDateTime": "2016-01-06T02:20:02Z",
"LastModifiedDateTime": "2016-01-13T02:24:50Z",
"ChangeKey": "CQAAABYAAACGYzsRv+OAR5zyXf6CQkRrAAADJ6aq",
"Categories": [
],
"ReceivedDateTime": "2016-01-06T02:20:02Z",
"SentDateTime": "2016-01-06T02:20:01Z",
"HasAttachments": false,
"InternetMessageId": "<CY1PR19MB0032531C620A46068FDDD45DE3F40@CY1PR19MB0032.namprd19.prod.outlook.com>",
"Subject": "International Launch Planning for XT2000",
"Body": {
"ContentType": "HTML",
"Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nWe will be ready to ship XT 2000 on 10/1, how's the International launch plan going?<br>\r\n<div style=\"display:inline-block\">\r\n<table border=\"0\" cellspacing=\"0\" style=\"background-color:#F4F4F4\">\r\n<tbody>\r\n<tr>\r\n<td style=\"padding:20px; font-size:12px; color:#666666\">You're receiving this message because you're a subscribed member of the Engineering group.<br>\r\n<a href=\"https://outlook.office.com/owa/engineering@adatumltd.onmicrosoft.com/groupsubscription.ashx?realm=adatumltd.onmicrosoft.com&action=conversations&source=EscalatedMessage\">View group conversations</a> |\r\n<a href=\"https://adatumltd.sharepoint.com/_layouts/groupstatus.aspx?id=dbcbe107-6244-40ba-b0f1-1c46ad35435d&target=documents\">\r\nView group files</a> | <a id=\"BD5134C6-8D33-4ABA-A0C4-08581FDF89DB\" href=\"https://outlook.office.com/owa/engineering@adatumltd.onmicrosoft.com/groupsubscription.ashx?realm=adatumltd.onmicrosoft.com&action=unsubscribe&source=EscalatedMessage\">\r\nUnsubscribe</a></td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n</div>\r\n</body>\r\n</html>\r\n"
},
"BodyPreview": "We will be ready to ship XT 2000 on 10/1, how's the International launch plan going?\r\nYou're receiving this message because you're a subscribed member of the Engineering group.\r\nView group conversations | View group files | Unsubscribe",
"Importance": "Normal",
"ParentFolderId": "AAMkADIyAAAEMAAA=",
"Sender": {
"EmailAddress": {
"Name": "Engineering",
"Address": "engineering@adatumltd.onmicrosoft.com"
}
},
"From": {
"EmailAddress": {
"Name": "Garret Vargas",
"Address": "GarretV@adatumltd.onmicrosoft.com"
}
},
"ToRecipients": [
{
"EmailAddress": {
"Name": "Engineering",
"Address": "engineering@adatumltd.onmicrosoft.com"
}
}
],
"CcRecipients": [
],
"BccRecipients": [
],
"ReplyTo": [
],
"ConversationId": "AAQkADIyLESZnSPc=",
"IsDeliveryReceiptRequested": null,
"IsReadReceiptRequested": false,
"IsRead": false,
"IsDraft": false,
"WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADIyAHVAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"InferenceClassification": "Focused",
"UnsubscribeData": [
],
"UnsubscribeEnabled": false,
"Extensions@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages('AAMkADIyAHVAAA%3D')/Extensions",
"Extensions": [
{
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('dc2d952a-78ff-4609-b3ae-eb66271747bf@8638a6dc-2d66-40dc-aecb-b2436ec47fc0')/Messages('AAMkADIyAHVAAA=')/Extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys",
"DealValue@odata.type": "#Int64",
"DealValue": 500050,
"ExpirationDate": "2015-12-03T10:00:00.000Z"
}
]
}
]
}
Adicionar ou modificar dados em uma extensão
Atualizar uma extensão com as propriedades no corpo da solicitação:
- Se uma propriedade no corpo da solicitação corresponder ao nome de uma propriedade existente na extensão, os dados na extensão serão atualizados.
- Caso contrário, essa propriedade e seus dados serão adicionados à extensão.
O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com. Pode ser referenciado por nome ou ID e, de qualquer forma, retorna a mesma resposta. Os dados na carga do JSON podem ser tipos primitivos ou matrizes de tipos primitivos.
PATCH https://outlook.office.com/api/beta/me/messages('{message_id}')/extensions('{extensionId}')
PATCH https://outlook.office.com/api/beta/me/events('{event_id}')/extensions('{extensionId}')
PATCH https://outlook.office.com/api/beta/me/contacts('{contact_id}')/extensions('{extensionId}')
Escopo mínimo necessário
Um dos escopos de leitura/gravação a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.readwrite
- https://outlook.office.com/calendars.readwrite
- https://outlook.office.com/contacts.readwrite
- wl.imap
- wl.calendars_update
- wl.events_create
- wl.contacts_create
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetro de URL | ||
extensionId | sequência de caracteres | Pode ser um nome de extensão que seja um identificador de texto exclusivo entre todas as extensões em uma instância de recurso ou um nome completo que concatene o tipo de extensão e o identificador de texto exclusivo. O nome totalmente qualificado é retornado na propriedade id quando você cria a extensão. Obrigatório. |
Parâmetros de corpo | ||
ExtensionName | sequência de caracteres | Um identificador de texto exclusivo para uma extensão. Obrigatório. |
Exemplo de solicitação
Cada um dos dois exemplos nesta seção usa a extensão no Exemplo de extensão GET acima. A primeira referencia a extensão por nome, a segunda por ID. Seus corpos de solicitação e respostas são os mesmos.
Cada exemplo atualiza a extensão acima:
- Alterando
CompanyName
deWingtip Toys
paraWingtip Toys (USA)
- Alterando
DealValue
de500050
para500100
- Adicionar novos dados como a propriedade personalizada
Updated
Este exemplo faz referência à extensão por seu nome:
PATCH https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions('Com.Contoso.Referral')
Content-Type: application/json
{
"@odata.type": "Microsoft.OutlookServices.OpenTypeExtension",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys (USA)",
"DealValue": "500100",
"ExpirationDate": "2015-12-03T10:00:00.000Z",
"Updated": "2015-10-29T11:00:00.000Z"
}
Este exemplo faz referência à extensão por sua ID (nome totalmente qualificado):
PATCH https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')
Content-Type: application/json
{
"@odata.type": "Microsoft.OutlookServices.OpenTypeExtension",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys (USA)",
"DealValue": "500100",
"ExpirationDate": "2015-12-03T10:00:00.000Z",
"Updated": "2015-10-29T11:00:00.000Z"
}
Exemplo de resposta
Uma resposta bem sucedida é indicada por um HTTP 200 OK
código de resposta e a extensão atualizada no corpo da resposta.
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Me/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/Extensions/$entity",
"@odata.type": "#Microsoft.OutlookServices.OpenTypeExtension",
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfc984d-b826-40d7-b48b-57002df85e00@1717f226-49d1-4d0c-9d74-709fad6677b4')/Messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions
('Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral')",
"Id": "Microsoft.OutlookServices.OpenTypeExtension.Com.Contoso.Referral",
"ExtensionName": "Com.Contoso.Referral",
"CompanyName": "Wingtip Toys (USA)",
"DealValue": 500100,
"ExpirationDate": "2015-12-03T10:00:00Z",
"Updated": "2015-10-29T11:00:00.000Z"
}
Excluir uma extensão
Excluir uma extensão da instância especificada de um recurso. O recurso pode ser uma mensagem, um evento de calendário ou um contato no Office 365 ou no Outlook.com.
Para excluir uma extensão em uma instância de cada um dos recursos suportados:
DELETE https://outlook.office.com/api/beta/me/messages('{message_id}')/extensions('{extension_name}')
DELETE https://outlook.office.com/api/beta/me/events('{event_id}')/extensions('{extension_name}')
DELETE https://outlook.office.com/api/beta/me/contacts('{contact_id}')/extensions('{extension_name}')
Escopo mínimo necessário
Um dos escopos de leitura/gravação a seguir correspondente ao recurso de destino:
- https://outlook.office.com/mail.readwrite
- https://outlook.office.com/calendars.readwrite
- https://outlook.office.com/contacts.readwrite
- wl.imap
- wl.calendars_update
- wl.events_create
- wl.contacts_create
Parâmetro | Tipo | Descrição |
---|---|---|
Parâmetros de URL | ||
extension_name | sequência de caracteres | Um identificador de texto exclusivo para uma extensão. Obrigatório. |
Exemplo de solicitação
O exemplo a seguir referencia uma extensão pelo nome e exclui a extensão da mensagem especificada.
DELETE https://outlook.office.com/api/beta/me/messages('AAMkAGE1M2IyNGNmLTI5MTktNDUyZi1iOTVl===')/extensions('Com.Contoso.Referral')
Exemplo de resposta
Uma resposta bem-sucedida é indicada por um código de resposta HTTP 204 No Content
.
Entidades de extensão
Extensão
Tipo: Microsoft.OutlookServices.Entity
Uma entidade abstrata com a entidade Entity como tipo base.
OpenTypeExtension
Tipo: Microsoft.OutlookServices.Extension
Um tipo aberto e abstrato do OData v4 que suporta especificar propriedades e dados dinamicamente em uma carga útil JSON para atualizar uma instância de um tipo de entidade.
Propriedade | Tipo | Descrição | Gravável? | Filtrável? |
---|---|---|---|---|
ExtensionName | sequência de caracteres | Nome exclusivo da extensão. Use um sistema de nome de domínio reverso com base em seu próprio domínio, por exemplo, Com.Contoso.Contact. | Sim | Não |
Próximas etapas
Se você estiver pronto para começar a criar um aplicativo ou apenas quiser aprender mais, temos tudo o que você precisa.
- Comece com as APIs REST de Email, Calendário e Contatos.
- Quer exemplos? Nós temos.
Se preferir, aprenda mais sobre como usar a plataforma do Office 365:
- API REST do Outlook no Centro de Desenvolvimento do Outlook
- Visão geral sobre desenvolvimento na plataforma do Office 365
- Autenticação de aplicativo do Office 365 e autorização de recursos
- Registre manualmente seu aplicativo com o AD do Azure para que ele possa acessar as APIs do Office 365
- Referência de APIs REST de Email
- Referência de APIs REST do Calendário
- Referência de APIs REST de contatos
- API REST de Atribuições (versão prévia)
- Referência de recurso para as APIs REST de Email, Calendário, Contatos e Tarefa