Microsoft graph call from Sharepoint Url - sharepoint

Suppose that I have the two following urls:
https://MYCOMPANY.sharepoint.com/sites/DevTeam/Shared%20Documents/Forms/AllItems.aspx
https://MYCOMPANY.sharepoint.com/sites/DevTeam/Shared%20Documents/Forms/AllItems.aspx?viewid=VIEW_ID&id=%2Fsites%2FDevTeam%2FShared%20Documents%2FGeneral
How do I "convert" them into graph api calls? Eg:
Only having the host name (MYCOMPANY.sharepoint.com) and the site name (DevTeam), how do I list all the root documents of the site drive with a graph api call?
Only having the host name (MYCOMPANY.sharepoint.com), the site name (DevTeam), an ID i'm not sure what corresponds to but that I can read in the url (VIEW_ID) and a path (DevTeam/Shared Documents/General), how di I list all the files in DevTeam/Shared Documents/General with a graph api call?

The first URL is for your site's document library. The 2nd URL is for the \General folder in that library.
To access a site given its URL, see: https://learn.microsoft.com/en-us/graph/api/site-get?view=graph-rest-1.0&tabs=http In your case, the API call would be
GET /sites/MYCOMPANY.sharepoint.com:dev/
To access the default document library ("drive") for a site, see: https://learn.microsoft.com/en-us/graph/api/drive-get?view=graph-rest-1.0&tabs=http In your case, the API call would be
GET /sites/MYCOMPANY.sharepoint.com:dev/drive
To list the files in a folder of a drive, see: https://learn.microsoft.com/en-us/graph/api/driveitem-list-children?view=graph-rest-1.0&tabs=http In your case, the API call would be
GET /sites/MYCOMPANY.sharepoint.com:dev/drive/root:/general:/children

Related

Microsoft Graph API - Copying SharePoint file - Item not found

I'm working with Graph API against Microsoft Teams team's SharePoint site.
I'm following the example on this page (https://learn.microsoft.com/en-us/graph/long-running-actions-overview?tabs=http) and have an issue. I'm able to query the location provided by the copy endpoint and get a "Completed" status that also provides a ResourceId. But I'm unable to use this resource id in any queries and only getting "Item not found".
Example of paths tried:
/drives/{driveId}/items/{resource-id-returned-from-monitor-url}
/groups/{groupId}/drive/items/{resource-id-returned-from-monitor-url}
The {driveID} is the driveId specified in the parentReference.DriveId in the copy file body.
I'm using the v1 Graph endpoint to get the file.
Btw, I can see the file fine in the correct folder within SharePoint.
Any ideas?
Regards,
Oskar
I wasn't using the DriveId supplied by the /education/***/setUpResourcesFolder Location header but rather the Drive of the class.
Fixed by using the driveId part of the Location URL.

Get all items of a Sharepoint document library using Graph API

I'm trying to retrieve a document library by path using the Graph API and I'm not sure how to proceed.
The url to the library is for example the following:
https://hostname/sites/sitename/subsite/nameofdocumentlibrary/
I would like to have all the children through the Graph API. The issue: I know the document of the library but I don't know the ID of the library. It seems that it's possible to access it through the relative path but I'm not succeeding to it.
How do I do this?
My get url was the following:
/v1.0/sites/hostname:/sites/sitename/subsite/nameofdoccumentlibary/items
I'm always getting:
The provided path does not exist, or does not represent a site or UnknownError.
Any ideas ?
Try to use this:
GET https://graph.microsoft.com/v1.0/sites/{hostname},{spsite-id},{spweb-id}/lists/{list-id}
I don't check this in real life because I don't have SP Online. But it must working.
Use this link with SharePoint Graph API.
To get site id (site collection) you can go to your site collection and browse this endpoint:
https://hostname/sites/sitename/_api/site?$select=Id
To get web id (subsite) you can go to your subsite and browse this endpoint:
https://hostname/sites/sitename/subsite/_api/web?$select=Id
To get library Id you can just open Document Library Settings page. URL have library ID. You can transform it to real guid. Like this:
/_layouts/15/listedit.aspx?List=%7B603D7FA3-C801-46EB-A044-421234452901%7D
Must transformed to:
603D7FA3-C801-46EB-A044-421234452901
Following your feedback, I could now retrieve the document library using the display name (not the path in the url).
This is my request:
https://graph.microsoft.com/v1.0/sites/fullsubsiteid/lists/69369/items
69369 is my display Name here.
I can also use:
https://graph.microsoft.com/v1.0/sites/fullsubsiteid/lists/69369/drive
Now the first request, is returning an empty value array, while there is a "Documents" folder in the document library. How could I retrieve all folders/files etc in this document library? How can I use relative path?
Tx!

What is MS Graph API to fetch childrens for a folder in SharePoint?

what is the graph API to fetch the content of a folder in Microsoft Sharepoint?
What is the graph API to fetch the content of a file ?
Here the api to fetch the root elements works.
https://graph.microsoft.com/v1.0/sites/{site-id}/drive
what is the graph API to fetch the content of a folder in Microsoft
Sharepoint?
No specific API for this, you can try this workaround:
Use the following endpoint to get the file/sub-folder list in the root folder(if you know the folder name, you can jump to step 2 directly).
/drives/driveid/root:/{folder-name}:/children
Then check the item if have folder properties. We need to do this by ourselves(in-memory filter or such).
"folder": {
"childCount": 3
}
Get file/sub-folder list in the folder.
https://graph.microsoft.com/v1.0/me/drives/drive-id/root:/sub-folder-name:/
Do other logic on file based on your requirement by your self.
What is the graph API to fetch the content of a file ?
Get /sites/{site-id}/drive/items/{parent-id}:/{filename}:/content
More infomation:
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/driveitem_get

Sharepoint Site Download a file Using Microsoft Graph 1.0

What is wrong with this:
https://graph.microsoft.com/v1.0/sites/insuriasa.sharepoint.com:/Sites/IFS:/drive/root/children
At the end of the day I want to be able to download this:
https://graph.microsoft.com/v1.0/sites/insuriasa.sharepoint.com:/Sites/IFS:/drive/root:/Std Forms/Discovery Invest/Servicing/change_of_contribution_form_retirement_annuity_plan.pdf
If you want to download the file content in a web application you should do a GET call on the item with ?select=#content.downloadUrl parameter. In the response you will get a pre-authenticated url in the property '#microsoft.graph.downloadUrl' on that you can do a get call without passing any extra authentication header to download the file.
If you are using in native clients then this Download Endpoint should work fine.

Get a weburl from Sharepoint Client Side Object Model

So let's say I have a full url into a sharepoint website.
In the past when I wanted to get the weburl and doc url, I used the "url to web url" method of the Front Page Server Extensions. (http://msdn.microsoft.com/en-us/library/ms460544.aspx).
So for example if you had a site at
http://webapp/site1/chidsite/a.doc
I want a method in CSOM that will return /site1/childsite as the weburl.
I see the Web.WebUrlFromPageUrlDirect() method in CSOM but I'm not sure I'm getting what I need back from it. In the Uri class I get back, would I use teh "AbsolutePath" property for the weburl?
What is the correct way to do this?
I also would like to get the docURL that is usually retrieved by a call to url to web url via frontpage extensions.
The fileurl will be the file location relative to the web site. So if the document is stored in the document library called "Documents", you will get a value of /Documents/file.ext.
Well, I've reverted to using the FrontPage extensions when doing URLToWebURL since I just wasn't sure what I was getting using CSOM methods. Though check the link below for answers I received elsewhere.
Information Pertaining to this issue

Resources