Помеченные сообщения через Office 365 REST API?

Я ищу способ определения и установки "помеченного" состояния электронной почты с помощью API-сообщения REST Office 365. Я не вижу флажка в качестве свойства сообщения REST, хотя вижу его в списке веб-служб Exchange.

Я попытался сделать вызов REST, добавив флаг к отфильтрованным свойствам, а также к SingleValueExtendedProperties и MultiValueExtendedProperties, например:

/folders/inbox/messages?$top=50&$select=Subject,...,Flag
/folders/inbox/messages?$top=50&$select=Subject,...,SingleValueExtendedProperties
/folders/inbox/messages?$top=50&$select=Subject,...,MultiValueExtendedProperties

все они вернулись с некоторой формой:

{"error":{"code":"RequestBroker-ParseUri","message":"Could not find a property named \\\'Flag\\\' on type \\\'Microsoft.OutlookServices.Message\\\'."}}

Любые предложения о том, как получить доступ к свойству Outlook "Флаг" через REST API?

1 ответ

Решение

ОБНОВЛЕНИЕ: теперь есть Flag собственность на Message на /beta конечная точка. Это рекомендуемый способ сделать это. Я оставлю там другую информацию для исторических целей и для помощи людям, пытающимся установить другие расширенные свойства.

Теперь вы можете получить / установить статус флага намного проще. Message сущность теперь имеет Flag свойство типа FollowupFlag, (Если вы не видите его по этой ссылке, убедитесь, что beta версия выбирается в верхней части страницы).

Вы можете пометить сообщение как помеченное, отправив PATCH со следующей полезной нагрузкой:

{
  "Flag": {
    "FlagStatus": "Flagged"
  }
}

СТАРЫЙ МЕТОД (Использование расширенных свойств)

Примечание. Недавно мы внесли изменения, чтобы упростить формат расширенных свойств. Это изменение теперь распространяется на серверы, поэтому я добавил новый формат к этому ответу. Я оставил старый формат на случай, если кто-нибудь получит доступ к почтовым ящикам, к которым еще не применено обновление. Если вы используете старый формат, и вы получите ошибку:

"Could not find a property named 'PropertyRef' on type 
'Microsoft.OutlookServices.SingleValueLegacyExtendedProperty'."

Вам нужно перейти на новый формат.

Что вам нужно сделать, это включить $expand параметр запроса для расширения SingleValueExtendedProperties коллекция, с $filter подпараметр для указания свойства, которое вы хотите включить. В этом случае вы хотите PidTagFlagStatus. Попробуйте запрос как этот:

Новый формат:

api/beta/me/messages?$select=Subject,SingleValueExtendedProperties&$expand=SingleValueExtendedProperties($filter=PropertyId eq 'Integer 0x1090')

Старый формат:

api/beta/me/messages?$select=Subject,SingleValueExtendedProperties&$expand=SingleValueExtendedProperties($filter=(PropertyRef eq '0x1090' and Type eq Microsoft.OutlookServices.MapiPropertyType'Integer'))

Для сообщений, которые вообще не помечены, это свойство не будет возвращено. Сообщения, которые будут выглядеть, будут выглядеть примерно так:

Новый формат:

{
  "@odata.id": "https://outlook.office365.com/api/beta/Users('JasonJ@jasonjohdemo.onmicrosoft.com')/Messages('AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA=')",
  "@odata.etag": "W/\"CQAAABYAAADpfBfj8UPUTqu4bEwGpnFMAAAjCzND\"",
  "Id": "AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA=",
  "Subject": "Test Flag",
  "SingleValueExtendedProperties@odata.context": "https://outlook.office365.com/api/beta/$metadata#Me/Messages('AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA%3D')/SingleValueExtendedProperties",
  "SingleValueExtendedProperties": [
    {
      "PropertyId": "Integer 0x1090",
      "Value": "2"
    }
  ]
}

Старый формат:

{
  "@odata.id": "https://outlook.office365.com/api/beta/Users('JasonJ@jasonjohdemo.onmicrosoft.com')/Messages('AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA=')",
  "@odata.etag": "W/\"CQAAABYAAADpfBfj8UPUTqu4bEwGpnFMAAAjCzND\"",
  "Id": "AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA=",
  "Subject": "Test Flag",
  "SingleValueExtendedProperties@odata.context": "https://outlook.office365.com/api/beta/$metadata#Me/Messages('AAMkAGQ4Yzc2NDkwLTYxYmItNDZmYS1iZjI1LTYyNmY4NTZkMjI1NgBGAAAAAADwPSus7EwaR6q1wNtgoqEMBwDpfBfj8UPUTqu4bEwGpnFMAAAAAAEgAADpfBfj8UPUTqu4bEwGpnFMAAAjCUJGAAA%3D')/SingleValueExtendedProperties",
  "SingleValueExtendedProperties": [
    {
      "PropertyRef": "0x1090",
      "Type": "Integer",
      "Value": "2"
    }
  ]
}

Установить флаг так же просто, как отправить PATCH для сообщения с этим свойством в SingleValueExtendedProperties коллекция:

Новый формат:

PATCH https://outlook.office365.com/api/beta/me/messages/{id}

{
  "SingleValueExtendedProperties": [
    {
      "PropertyId": "Integer 0x1090",
      "Value": "2"
    }
  ]
}

Старый формат:

PATCH https://outlook.office365.com/api/beta/me/messages/{id}

{
  "SingleValueExtendedProperties": [
    {
      "PropertyRef": "0x1090",
      "Type": "Integer",
      "Value": "2"
    }
  ]
}

Наконец, для MS-OXOFLAG значение 2 означает помеченный для последующего наблюдения, а 1 означает, что флаг завершен.

Другие вопросы по тегам