Mayuri
Mayuri

Reputation: 1

Can't download reference attachment from MS graph API

I'm using graph API mentioned below - "client.api(/users/${data_body.payload.originEmail}/messages/${data_body.payload.emailId}/attachments/${data_body.payload.attachmentId}/$value).getStream()"

it works fine for me if attachment type is "fileattachment" but this api is not working in case of "referenceattachment" also I went through the documentation it says that "Attempting to get the $value of a reference attachment returns HTTP 405."

and it does not return contentBytes enter image description here

site to refer - https://learn.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0&tabs=http 1: https://i.sstatic.net/fGrft.png

does anyone have any solution to get content data of reference attachment. if yes it would be great help !! Thanks in advance


GET /drive/items/{item-ID}?select=id,@microsoft.graph.downloadUrl

response => click to open

Here you can see downloadURL is missing in response

Upvotes: 0

Views: 960

Answers (2)

griesi
griesi

Reputation: 360

Just if anyone else is struggling with this on v1.0. You can get the referenced message using the id of the referenced attachment

/users/{id}/messages/{referencedAttachmendId}

or the mime message

/users/{id}/messages/{referencedAttachmendId}/$value

Upvotes: 0

Glen Scales
Glen Scales

Reputation: 22032

The graph v1.0 endpoint doesn't have any support for reference attachments (other then showing you that one existing on an email). You need to switch to the beta endpoint which will provide the sourceUrl of the attachment in question eg https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/referenceattachment

eg

https://graph.microsoft.com/beta/me/mailfolders/inbox/messages/..AA=/attachments/AAM..

would give you something like

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('..')/mailFolders('inbox')/messages('..')/attachments/$entity",
    "@odata.type": "#microsoft.graph.referenceAttachment",
    "id": "..",
    "lastModifiedDateTime": "2022-04-11T23:53:54Z",
    "name": "User1.text",
    "contentType": "application/octet-stream",
    "size": 565,
    "isInline": false,
    "sourceUrl": "https://..-my.sharepoint.com/personal/.._com/Documents/Attachments/User1.text",
    "providerType": "oneDriveBusiness",
    "thumbnailUrl": null,
    "previewUrl": null,
    "permission": "other",
    "isFolder": false
}

You then need to take the sourceURL and download that via the applicable API for the reference attachment. eg in this example its Sharepoint so you can use the SharePoint API to download the file.

Upvotes: 1

Related Questions