Фильтрация нескольких возможных значений с помощью ExtendedProperties и REST API Office 365

Я пытаюсь получить список писем с указанием их InternetMessageID.

Для одного данного InternetMessageID я могу получить соответствующую почту, следуя синтаксису, приведенному в документации Outlook

 "https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep:  ep/PropertyId eq 'String 0x1035' and ep/Value eq '<12.FF.36768.EE3E3365@twitter.com>' )";

Теперь позвольте мне сказать, что я хочу получить две почты с одним и тем же запросом, но мне не удалось получить успешный синтаксис.

Например

 "https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep:  ep/PropertyId eq 'String 0x1035' and (ep/Value eq '<12.FF.36768.EE3E3365@twitter.com>' or ep/value eq 'anothermailid@toto.com'))";

не работает. BadRequest возвращается с сообщением

The filter expression for $filter does not match to a single extended property and a value restriction.

Я пробовал много комбинаций группировки, а также тест с $expand утверждение, как предлагается в этом вопросе. Есть ли способ выполнять такие запросы с помощью Outlook Web Api Graph API?

1 ответ

Решение

Я только что попробовал это, и я получаю более информативное сообщение об ошибке:

{
  "error": {
    "code": "ErrorInvalidUrlQueryFilter",
    "message": "The filter expression for $filter on property ExtendedProperty only allows 
               [and] and [eq] operators. The equality can only be specified between 
               'PropertyId' and a constant or 'Value' and a constant (for example: 
               PropertyId eq 'value')."
  }
}

ОБНОВЛЕНИЕ: Проверено моей командой инженеров, и эта ошибка относится к тому, что находится внутри ЛЮБОГО утверждения. Вы не можете использовать ИЛИ там. Таким образом, чтобы это работало, вам нужно два отдельных оператора ANY, соединенных OR:

https://outlook.office.com/api/beta/me/messages?$filter=
  SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
                                    and ep/Value eq 'someid@somedomain') or 
  SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
                                    and ep/Value eq 'otherid@otherdomain')
Другие вопросы по тегам