Previously I used Microsoft EWS API to retrieve emails. It has a field called "References", now I am upgrading to MS Graph and couldn't find this particular field via REST API. Note that I could find and retrieve all other fields except this.
The References property is just the References Message header so you get that header as part of the IntenetMessageHeaders https://learn.microsoft.com/en-us/graph/api/message-get?view=graph-rest-1.0
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADhAAAW-VPeAAA=/?$select=internetMessageHeaders
You can also request the underlying Extended Mapi property PR_INTERNET_REFERENCES also eg
https://graph.microsoft.com/v1.0/me/messages?$expand=singleValueExtendedProperties($filter=id eq 'String 0x1039')
Related
When i get mail message from o365 Graph using
https://graph.microsoft.com/v1.0/users/XXXX#xxx.xx/messages/?$select=InternetMessageHeaders
Not all headers is present in result. I´m missing From, To and CC.
Same result in graph SDK for .net
Looking at same mail in OWA view original shows From and To as headers.
Anyone else has this problem, or is this expected? I just has a feeling i have seen this headers in this result, but i´m not at all sure.
I don't know the reasoning behind it but the Graph doesn't return all the header properties when you use InternetMessageHeaders prop. If you want all the headers you need to use the PidTagTransportMessageHeaders extended property https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagtransportmessageheaders-canonical-property which will show you what you see in Outlook (you will need to parse it yourself though)eg
https://graph.microsoft.com/v1.0/me/MailFolders('Inbox')/messages('...=')?$select=InternetMessageHeaders&$expand=singleValueExtendedProperties($filter=id eq 'String 0x007D')
I want to get a collection of ListItem from a Sharepoint List (O365) using Microsoft Graph. I have used the following URI but it is returninga "Bad Request" error.
https://graph.microsoft.com/beta/sites/{id}/lists/{id}/items/{id}?expand=fields(select=Title,Product)
First, you really shouldn't use the /beta Graph in production code. It is not stable and breaking changes can (and do) happen without warning. Unless you have a very specific need, always use /v1.0.
I believe your problem here is that you're attempting to select Title from the Fields collection. This property isn't actually a member of Fields, it is part of the ListItem itself. Try this instead:
?$select=title,fields&$expand=$fields($select=product)
We have integrated outlook to our iOS application using Microsoft Graph API. We have a use case where we have to filter outlook messages by attachment name or by subject. We are using query parameters to hit graph API.
Link to microsoft documentation.
As per above documentation, $search parameter is used to filter outlook messages. When are hitting below API, we are getting wrong responses. It’s returning messages which have “Test Mail” in both subject and message body. But it should return only the messages whose subject line is “Test Mail”.
https://graph.microsoft.com/v1.0/me/messages?$search="subject:Test Mail”
The same problem we are facing when we filter messages by attachment name, by hitting below API. In fact we are getting a empty response in this case.
https://graph.microsoft.com/v1.0/me/messages?$search=“attachments:test.png”
Is the above URL formation is correct? Why we’re not getting desired response? Please help us out on this.
For searching Subject only, you can use:
/v1.0/me/messages?$search="subject:search term"
or a filter:
/v1.0/me/messages?$filter=contains(subject, 'my search term')
(in this method the search term must exactly match a portion of the subject string)
For searching attachments only, you must use the keyword 'attachment' instead of 'attachments' (exchange documentation):
/v1.0/me/messages?$search="attachment:search term"
I'm using ms-graph with SharePoint Online.
I've a simple list with a single title column and 3 items.
I use the following ms-graph call to filter items by title:
https://graph.microsoft.com/v1.0/sites/root:/lists/list-guid/items?expand=fields&filter=startswith(fields/Title,%27fig%27)
The result is an error message:
Field 'Title' cannot be referenced in filter or orderby as it is not indexed. Provide the 'Prefer: HonorNonIndexedQueriesWarningMayFailRandomly' header to allow this, but be warned that such queries may fail on large lists.
I know that this call was working before and also when I use SharePoint REST API then I can filter the list without any problems. I also tried different tenants.
Another fact is that the same call is working without the startswith filter.
Few days ago I had a different message for the same call.
"Field 'Title' cannot be referenced in filter or orderby as it is not indexed. Provide the 'allowthrottleablequeries' preference to allow this, but be warned that such queries may fail on large lists."
Regarding the following error:
Field 'Title' cannot be referenced in filter or orderby as it is not
indexed. Provide the 'Prefer:
HonorNonIndexedQueriesWarningMayFailRandomly' header to allow this,
but be warned that such queries may fail on large lists.
at least two options are available to surpass this error while filtering.
Option 1. Add an index to a SharePoint column
Once the index to a SharePoint column which participates in filtering is created, the error should no longer appear.
Option 2. Append header Prefer:HonorNonIndexedQueriesWarningMayFailRandomly
As the error message states append the specified header to request, for example in Graph Explorer:
Just checked the Graph API Explorer and found out that you can use allowthrottleablequeries rather than HonorNonIndexedQueriesWarningMayFailRandomly
Try to send your request with the following Request Header
Prefer: allowthrottleablequeries
I'm using Microsoft Graph to get a list of messages for a user.
I'm using the following URL
https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages
One important thing that is returned by this is the meetingMessageType when the message revolves around a meeting request.
I would also like to get the uniqueBody of the message. However, that's not provided by default. One needs to specifically ask for that field. I can do that by adding ?$select=uniqueBody to the URL.
However, that now means that I need to add the rest of the fields I want to the $select query parameter. That's not a big deal until I run into meetingMessageType. Microsoft Graph returns:
Could not find a property named 'meetingMessageType' on type 'Microsoft.OutlookServices.Message'.
What can I do to ensure I get both uniqueBody and meetingMessageType?
Try this:
$select=uniqueBody, microsoft.graph.eventMessage/meetingMessageType
Yogesh's answer is close but will result in a Only one level select is supported error.
As long as you don't care about the value of meetingMessageType, you can use this select:
$select=microsoft.graph.eventMessage, uniqueBody
You'll note that the results no longer include meetingMessageType as a property. The list however is limited to only those messages that are eventMessage, effectively giving you a result set filtered to only show meeting requests.