Unable to retrieve 'ContentId' property of Attachment in Office365 REST Api

允我心安 提交于 2020-01-15 05:04:19

问题


I'm trying to retrieve attachments in the Office365 rest api. Since I want to avoid downloading the entire attachments, I'm using a select clause to avoid downloading the content, which is in the ContentBytes property:

    $select="ContentId,ContentType,Id,IsInline,Name,Size"

So basically, I want to retrieve everything except the content. However, this gives the following error message (json):

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

It's telling me that ContentId doesn't exist, which contradicts the specifications.

Edit: Here is the full request:

    GET /api/v2.0/me/messages/AAMkAGZlZjI3N2I3LTg1YWUtNDFiNC05MGI0LTVjYTVmZGI5NGI2YQBGAAAAAABzr8uDji9LRqgTCEsDv22wBwBWTXbvZW0dTKuxUGxpK4-lAAAAAAEMAABWTXbvZW0dTKuxUGxpK4-lAAC5QnKBAAA=/attachments?%24select=ContentId%2CContentType%2CId%2CIsInline%2CName%2CSize 

Even more strange, when I do the same query without specifying any select clause, it returns me a full attachment object, including a ContentId.

Anybody can help?


回答1:


In case anyone has the same question for microsoft graph, you need to pass this filter:

$select=microsoft.graph.fileAttachment/contentId

like this:

GET https://graph.microsoft.com/v1.0/me/messages/attachments?$select=microsoft.graph.fileAttachment/contentId



回答2:


The request that you posted is getting the message specifications but not the attachments. Since you need to get the content id, you need to add /attachments to the request with any required parameters.

GET https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}

So please add the attachments to your query to be able to get the content id.

Hope this helps.




回答3:


Solved it. The answer was suggested by Brian's comment and I found an additional hint here. Since 'ContentId' is a property of a FileAttachment, you need to specify that in the request, like so:

    $select="Microsoft.OutlookServices.FileAttachment/ContentId,ContentType,Id,IsInline,Name,Size"

That did the trick. Thanks for the suggestions.



来源:https://stackoverflow.com/questions/35176483/unable-to-retrieve-contentid-property-of-attachment-in-office365-rest-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!