Files and folders REST API reference
Learn about the REST API for File, FileVersion, Folder, and related resources.
Applies to: apps for SharePoint | SharePoint Foundation 2013 | SharePoint Online | SharePoint Server 2013
In this article
About the request examples in this article
Explore the SharePoint 2013 files and folders REST syntax
File resource
FileCollection resource
FileVersion resource
FileVersionCollection resource
Folder resource
FolderCollection resource
Additional resources
About the request examples in this article
The request examples in this article assume that you’re using the cross-domain library (SP.RequestExecutor.js) to make cross-domain requests, so they use SP.AppContextSite in the endpoint URI. See How to: Access SharePoint 2013 data from apps using the cross-domain library for more information.
Before you use a request example, do the following:
Change <app web url>, <host web url>, and other placeholder data such as any IDs, names, or paths of SharePoint entities.
If you’re not using the cross-domain library, include an X-RequestDigest header to send the form digest value in all POST requests and a content-length header for POST requests that send data in the request body.
If you're not making cross-domain requests, remove SP.AppContextSite(@target) and ?@target='<host web url>' from the endpoint URI.
If you’re using OAuth, include an Authorization header ("Authorization": "Bearer " + <access token>) to send the OAuth access token.
Remove the line breaks from the url and body property values in the request examples. Line breaks are added to the examples to make them easier to read.
If you want the server to return responses in Atom format, remove the "accept": "application/json; odata=verbose" header.
See Additional resources for links to more information about using the cross-domain library, OAuth, and the SharePoint REST service. See How REST requests differ by environment and Properties used in REST requests for information about request formats.
Tip
The SharePoint Online REST service supports combining multiple requests into a single call to the service by using the OData $batch query option. For details and links to code samples, see Make batch requests with the REST APIs. This option is not yet supported for on-premise SharePoint.
Explore the SharePoint 2013 files and folders REST syntax
Visually explore the SharePoint 2013 lists and list items REST syntax. Explore other SharePoint REST syntax diagrams: Lists and list items | Users and groups Download the combined PDF of all the SharePoint REST syntax diagrams. |
File resource
Represents a file in a SharePoint Web site that can be a Web Part Page, an item in a document library, or a file in a folder.
Endpoint URI | Properties | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/getfilebyserverrelativeurl('/<folder name>/<file name>')
Supported HTTP methods
GET | PUT (media resource)
GET | DELETE | POST (File resource)
Request examples
GET request example: Get file contents (media resource)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/$value
?@target='<host web url>'",
method: "GET",
binaryStringResponseBody: true,
success: successHandler,
error: errorHandler
});
GET request example: Get file metadata
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
PUT request example: Update file contents (media resource)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.txt')/$value
?@target='<host web url>'",
method: "POST",
body: "Updated contents of the file go here",
headers: { "X-HTTP-Method":"PUT" },
success: successHandler,
error: errorHandler
});
Check out the file first to prevent other users from changing it. Then, check it back in after you've made your changes. See the CheckOut method and the CheckIn method.
DELETE request example: Delete a file
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
?@target='<host web url>'",
method: "POST",
headers: { "X-HTTP-Method":"DELETE" },
success: successHandler,
error: errorHandler
});
Or you can use the Recycle method to remove the file and get the GUID of the recycled item.
Note
See the Add method for an example that shows how to create a file and add it to a folder.
File properties
To get a property, send a GET request to the property endpoint, as shown in the following example.
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/<property name>
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
Property |
Type |
R/W |
Description |
|
---|---|---|---|---|
Author |
R |
No |
Gets a value that specifies the user who added the file. |
|
CheckedOutByUser |
R |
No |
Gets a value that returns the user who has checked out the file. |
|
CheckInComment |
String |
R |
Yes |
Gets a value that returns the comment used when a document is checked in to a document library. |
CheckOutType |
Int32 |
R |
Yes |
Gets a value that indicates how the file is checked out of a document library. Represents an SP.CheckOutType value: Online = 0; Offline = 1; None = 2. The checkout state of a file is independent of its locked state. |
ContentTag |
String |
R |
Yes |
Returns internal version of content, used to validate document equality for read purposes. |
CustomizedPageStatus |
Int32 |
R |
Yes |
Gets a value that specifies the customization status of the file. Represents an SP.CustomizedPageStatus value: None = 0; Uncustomized = 1; Customized = 2. |
ETag |
String |
R |
Yes |
Gets a value that specifies the ETag value. |
Exists |
Boolean |
R |
Yes |
Gets a value that specifies whether the file exists. |
Length |
Int64 |
R |
Yes |
Gets the size of the file in bytes, excluding the size of any Web Parts that are used in the file. |
Level |
Byte |
R |
Yes |
Gets a value that specifies the publishing level of the file. Represents an SP.FileLevel value: Published = 1; Draft = 2; Checkout = 255. |
ListItemAllFields |
R |
No |
Gets a value that specifies the list item field values for the list item corresponding to the file. |
|
LockedByUser |
R |
No |
Gets a value that returns the user that owns the current lock on the file. |
|
MajorVersion |
Int32 |
R |
Yes |
Gets a value that specifies the major version of the file. |
MinorVersion |
Int32 |
R |
Yes |
Gets a value that specifies the minor version of the file. |
ModifiedBy |
R |
No |
Gets a value that returns the user who last modified the file. |
|
Name |
String |
R |
Yes |
Gets the name of the file including the extension. |
ServerRelativeUrl |
String |
R |
Yes |
Gets the relative URL of the file based on the URL for the server. |
TimeCreated |
DateTime |
R |
Yes |
Gets a value that specifies when the file was created. |
TimeLastModified |
DateTime |
R |
Yes |
Gets a value that specifies when the file was last modified. |
Title |
String |
R |
Yes |
Gets a value that specifies the display name of the file. |
UiVersion |
Int32 |
R |
Yes |
Gets a value that specifies the implementation-specific version identifier of the file. |
UiVersionLabel |
String |
R |
Yes |
Gets a value that specifies the implementation-specific version identifier of the file. |
Versions |
R |
No |
Gets a value that returns a collection of file version objects that represent the versions of the file. |
File methods
Approve
CancelUpload
CheckIn
CheckOut
ContinueUpload
CopyTo
DeleteObject
Deny
FinishUpload
GetLimitedWebPartManager
MoveTo
OpenBinaryStream
Publish
Recycle
SaveBinaryStream
StartUpload
UndoCheckOut
Unpublish
Approve
Approves the file submitted for content approval with the specified comment.
Only documents in lists that are enabled for content approval can be approved.
Endpoint |
/approve(comment) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/approve(comment='Check-in comment for the approval.')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
CancelUpload method
Stops the chunk upload session without saving the uploaded data. If the file doesn’t already exist in the library, the partially uploaded file will be deleted. Use this in response to user action (as in a request to cancel an upload) or an error or exception.
Use the uploadId value that was passed to the StartUpload method that started the upload session.
This method is currently available only on Office 365.
Endpoint |
/cancelupload(uploadId) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/cancelupload(uploadId=guid'GUID')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
CheckIn method
Checks the file in to a document library based on the check-in type.
Endpoint |
/checkin(comment, checkInType) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/checkin(comment='Check-in comment.',checkintype=0)
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
CheckOut method
Checks out the file from a document library based on the check-out type.
Endpoint |
/checkout |
Parameters |
None |
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/checkout
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
ContinueUpload method
Continues the chunk upload session with an additional fragment. The current file content is not changed.
Use the uploadId value that was passed to the StartUpload method that started the upload session.
This method is currently available only on Office 365.
Endpoint |
/continueupload(uploadId, fileOffset) |
Parameters |
Send the file contents (stream) in the post body. |
HTTP method |
POST |
Response |
Type: Int64 |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/continueupload(uploadId=guid'GUID',fileOffset=8388608)
?@target='<host web url>'",
method: "POST",
body: stream containing intermediate chunk of file
success: successHandler,
error: errorHandler
});
CopyTo method
Copies the file to the destination URL.
Endpoint |
/copyto(strNewUrl, bOverWrite) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/copyto(strnewurl='/foldername/filename.docx',boverwrite=false)
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
DeleteObject method
The recommended way to delete a file is to send a DELETE request to the File resource endpoint, as shown in File request examples.
Deny method
Denies approval for a file that was submitted for content approval.
Only documents in lists that are enabled for content approval can be denied.
Endpoint |
/deny(comment) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/deny(comment='Check-in comment for the denial.')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
FinishUpload method
Uploads the last file fragment and commits the file. The current file content is changed when this method completes.
Use the uploadId value that was passed to the StartUpload method that started the upload session.
This method is currently available only on Office 365.
Endpoint |
/finishupload(uploadId, fileOffset) |
Parameters |
Send the file contents (stream) in the post body. |
HTTP method |
POST |
Response |
Type: SP.File |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/finishupload(uploadId=guid'GUID',fileOffset=125829120)
?@target='<host web url>'",
method: "POST",
body: stream containing final chunk of file
success: successHandler,
error: errorHandler
});
GetLimitedWebPartManager method
Specifies the control set used to access, modify, or add Web Parts associated with this Web Part Page and view.
An exception is thrown if the file is not an ASPX page.
Endpoint |
/getlimitedwebpartmanager(scope) |
Parameters |
|
HTTP method |
GET |
Response |
Type: SP.WebParts.LimitedWebPartManager |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/fileName.aspx')
/getlimitedwebpartmanager(scope=0)
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
MoveTo method
Moves the file to the specified destination URL.
Endpoint |
/moveto(newUrl, flags) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/moveto(newurl='/Other Folder/filename.docx',flags=1)
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
OpenBinaryStream method
Opens the file as a stream.
Endpoint |
/openbinarystream |
Parameters |
None |
HTTP method |
GET |
Response |
Type: Stream |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/openbinarystream
?@target='<host web url>'",
method: "GET",
binaryStringResponseBody: true,
success: successHandler,
error: errorHandler
});
Note
Or you can use $value from the file resource to open a file. Example: …/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/$value.
Publish method
Submits the file for content approval with the specified comment.
Endpoint |
/publish(comment) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/publish(comment='Check-in comment for the publish operation.')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
Recycle method
Moves the file to the Recycle Bin and returns the identifier of the new Recycle Bin item.
Endpoint |
/recycle |
Parameters |
None |
HTTP method |
POST |
Response |
Type: GUID |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/recycle
?@target='<host web url>'",
method: "POST",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
SaveBinaryStream method
Endpoint |
/savebinary |
Parameters |
Send the file contents (stream) in the post body. |
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/savebinarystream
?@target='<host web url>'",
method: "POST",
body: "This is the new content.",
success: successHandler,
error: errorHandler
});
StartUpload method
Starts a new chunk upload session and uploads the first fragment. The current file content is not changed when this method completes. The method is idempotent (and therefore does not change the result) as long as you use the same values for uploadId and stream. The upload session ends either when you use the CancelUpload method or when you successfully complete the upload session by passing the rest of the file contents through the ContinueUpload and FinishUpload methods.
For example, you can pass a 35 MB file by dividing it into three 10 MB streams and one 5 MB stream and uploading them this way (using the resulting offset values of 10, 20 and 30 MB):
startUpload(GUID, stream1)
continueUpload(GUID, 10 MB, stream2)
continueUpload(GUID, 20 MB, stream3)
finishUpload(GUID, 30 MB, stream4)
The StartUpload and ContinueUpload methods return the size of the running total of uploaded data in bytes, so you can pass those return values to subsequent uses of ContinueUpload and FinishUpload.
This method is currently available only on Office 365.
Endpoint |
/startupload(uploadId) |
Parameters |
Send the file contents (stream) in the post body. |
HTTP method |
POST |
Response |
Type: Int64 |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/startupload(uploadId=guid'GUID')
?@target='<host web url>'",
method: "POST",
body: stream containing first chunk of file
success: successHandler,
error: errorHandler
});
UndoCheckOut method
Reverts an existing checkout for the file.
Endpoint |
/undocheckout |
Parameters |
None |
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/undocheckout
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
Unpublish method
Removes the file from content approval or unpublish a major version.
Endpoint |
/unpublish |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/unpublish(comment='Check-in comment for the unpublish operation.')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
OData representation
The following example represents a File resource in JSON format.
{"d":{
"__metadata":{,
"id":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared Documents/folderName/fileName.docx')",
"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')",
"type":"SP.File"
},
"Author":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/Author"}},
"CheckedOutByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/CheckedOutByUser"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/ListItemAllFields"}},
"LockedByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/LockedByUser"}},
"ModifiedBy":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/ModifiedBy"}},
"Versions":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName.docx')/Versions"}},
"CheckInComment":"Revisions to the file.",
"CheckOutType":2,
"ContentTag":"{2FBB0C3C-4059-41A2-A5CF-3E076EA0A94C},2,3",
"CustomizedPageStatus":0,
"ETag":"\"{2FBB0C3C-4059-41A2-A5CF-3E076EA0A94C},2\"",
"Exists":true,
"Length":"20609",
"Level":1,
"MajorVersion":1,
"MinorVersion":0,
"Name":"fileName.docx",
"ServerRelativeUrl":"/Shared Documents/folderName/fileName.docx",
"TimeCreated":"2013-05-16T21:01:23Z",
"TimeLastModified":"2013-05-18T04:57:32Z",
"Title":"",
"UIVersion":512,
"UIVersionLabel":"1.0"
}}
FileCollection resource
Represents a collection of File resources.
Endpoint URI | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/getfolderbyserverrelativeurl('/<folder name>')/files
Supported HTTP methods
GET | POST
Request examples
GET request example: Get the metadata of all the files in a folder
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/files
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GET request example: Get file contents (media resource) by file name
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/files('filename.docx')/$value
?@target='<host web url>'",
method: "GET",
binaryStringResponseBody: true,
success: successHandler,
error: errorHandler
});
GET request example: Get file metadata
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/files('filename.docx')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
};
See File request examples for examples of how to retrieve a file by using the GetFileByServerRelativeUrl endpoint and how to update and delete a file. To create a file, see the Add method.
FileCollection methods
Add method
Endpoint |
/add(content, overwrite, url) |
Parameters |
|
HTTP method |
POST |
Response |
Type: SP.File |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/files
/add(overwrite=true,url='filename.txt')
?@target='<host web url>'",
method: "POST",
body: "Contents of the file go here",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
The following example shows how to upload a binary file by using the cross-domain library, which requires converting the file stream to a string. For a jQuery example, see How to: Upload a file by using the REST API and jQuery.
function addFile(arrayBuffer) {
var executor = new SP.RequestExecutor(appWebUrl);
// Construct the endpoint.
// The GetList method is available for SharePoint Online only.
var fileCollectionEndpoint = String.format(
"{0}/_api/sp.appcontextsite(@target)/web/getlist('{1}')/" +
"rootfolder/files/add(overwrite=true, url='{2}')?@target='{3}'",
appWebUrl, listName, fileName, hostWebUrl);
var fileData = '';
var byteArray = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteArray.byteLength; i++) {
fileData += String.fromCharCode(byteArray[i]);
}
// Send the request.
executor.executeAsync({
url: fileCollectionEndpoint,
method: "POST",
body: fileData,
binaryStringRequestBody: true,
headers: {"accept":"application/json;odata=verbose"},
success: function (data) {
alert('File upload succeeded.');
},
error: function (err) {
alert('Error: ' + err.responseText);
}
});
}
AddTemplateFile method
Adds a ghosted file to an existing list or document library.
Endpoint |
/addTemplateFile(urlOfFile,templateFileType) |
Parameters |
|
HTTP method |
POST |
Response |
Type: SP.File |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents')/files
/addtemplatefile(urloffile='/Shared Documents/newwikipage.aspx',templatefiletype=1)
?@target='<host web url>'",
method: "POST",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GetByUrl method
Get the file at the specified URL.
The GetFileByServerRelativeUrl endpoint is recommended way to get a file. See SP.File request examples.
Endpoint |
/getbyurl('<name or server-relative url of file>') |
Parameters |
None |
HTTP method |
GET |
Response |
Type: SP.File |
Request examples
Get file contents (media resource)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/foldername')/files
/getbyurl('filename.docx')/$value
?@target='<host web url>'",
method: "GET",
binaryStringResponseBody: true,
success: successHandler,
error: errorHandler
});
Get a file's metadata (File resource)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/foldername')/files
/getbyurl('filename.docx')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
See File request examples and FileCollection request examples to see other ways to get a file.
OData representation
The following example represents a FileCollection resource in JSON format.
{"d":{
"results":[{
"__metadata":{
"id":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared Documents/folderName/fileName1.docx')",
"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')",
"type":"SP.File"
},
"Author":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/Author"}},
"CheckedOutByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/CheckedOutByUser"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/ListItemAllFields"}},
"LockedByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/LockedByUser"}},
"ModifiedBy":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/ModifiedBy"}},
"Versions":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName1.docx')/Versions"}},
"CheckInComment":"",
"CheckOutType":2,
"ContentTag":"{2FBB0C3C-4059-41A2-A5CF-3E076EA0A94C},4,7",
"CustomizedPageStatus":0,
"ETag":"\"{2FBB0C3C-4059-41A2-A5CF-3E076EA0A94C},4\"",
"Exists":true,
"Length":"20609",
"Level":1,
"MajorVersion":1,
"MinorVersion":0,
"Name":"fileName1.docx",
"ServerRelativeUrl":"/Shared Documents/folderName/fileName1.docx",
"TimeCreated":"2013-05-16T21:01:23Z",
"TimeLastModified":"2013-06-09T02:38:14Z",
"Title":"Title of fileName1",
"UIVersion":512,
"UIVersionLabel":"1.0"
},{
"__metadata":{
"id":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared Documents/folderName/fileName2.docx')",
"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')",
"type":"SP.File"
},
"Author":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/Author"}},
"CheckedOutByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/CheckedOutByUser"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/ListItemAllFields"}},
"LockedByUser":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/LockedByUser"}},
"ModifiedBy":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/ModifiedBy"}},
"Versions":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFileByServerRelativeUrl('/Shared%20Documents/folderName/fileName2.docx')/Versions"}},
"CheckInComment":"",
"CheckOutType":2,
"ContentTag":"{E654B970-C4BF-4DC5-9719-B5B01CAD6FD9},4,9",
"CustomizedPageStatus":0,
"ETag":"\"{E654B970-C4BF-4DC5-9719-B5B01CAD6FD9},4\"",
"Exists":true,
"Length":"12263",
"Level":1,
"MajorVersion":1,
"MinorVersion":0,
"Name":"fileName2.docx",
"ServerRelativeUrl":"/Shared Documents/folderName/fileName2.docx",
"TimeCreated":"2013-05-18T05:01:51Z",
"TimeLastModified":"2013-06-09T02:38:59Z",
"Title":"Title of fileName2",
"UIVersion":512,
"UIVersionLabel":"1.0"
}]}}
FileVersion resource
Represents a version of an File resource.
Endpoint URI | Properties | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/getfilebyserverrelativeurl('/<folder name>/<file name>')/versions(<version id>)
Supported HTTP methods
GET | POST | DELETE
Request examples
GET request example: Get the metadata for a file version
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions(512)
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
DELETE request example: Delete a specific version of a file
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions(513)
?@target='<host web url>'",
method: "POST",
headers: { "X-HTTP-Method":"DELETE" },
success: successHandler,
error: errorHandler
});
FileVersion properties
To get a property, send a GET request to the property endpoint, as shown in the following example.
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')
/versions(512)/<property name>
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
Property |
Type |
R/W |
Description |
|
---|---|---|---|---|
CheckInComment |
String |
R |
Yes |
Gets a value that specifies the check-in comment. |
Created |
DateTime |
R |
Yes |
Gets a value that specifies the creation date and time for the file version. |
CreatedBy |
R |
No |
Gets a value that specifies the user that represents the creator of the file version. |
|
ID |
Int32 |
R |
Yes |
Gets the internal identifier for the file version. |
IsCurrentVersion |
Boolean |
R |
Yes |
Gets a value that specifies whether the file version is the current version. |
Size |
Int32 |
R |
Yes |
|
Url |
String |
R |
Yes |
Gets a value that specifies the relative URL of the file version based on the URL for the site or subsite. |
VersionLabel |
String |
R |
Yes |
Gets a value that specifies the implementation specific identifier of the file. Uses the majorVersionNumber.minorVersionNumber format, for example: 1.2. |
FileVersion methods
DeleteObject method
The recommended way to delete a file version is to send a DELETE request to the FileVersion resource endpoint, as shown in FileVersion request examples.
OData representation
The following example represents a FileVersion resource in JSON format.
{"d":{
"__metadata":{,
"id":"http://<site url>/_api/web/getfilebyserverrelativeurl('/Shared Documents/folderName/fileName1.docx')/versions(512)",
"uri":"http://<site url>/_api/web/getfilebyserverrelativeurl('/Shared%20Documents/folderName/fileName1.docx')/versions(512)",
"type":"SP.FileVersion"
},
"CreatedBy":{"__deferred":{"uri":"http://<site url>/_api/web/getfilebyserverrelativeurl('/Shared%20Documents/folderName/fileName1.docx')/versions(512)/CreatedBy"}},
"CheckInComment":"Revisions to the file.",
"Created":"2013-06-10T04:02:53Z",
"ID":512,
"IsCurrentVersion":true,
"Size":20609,
"Url":"_vti_history/512/Shared Documents/folderName/fileName1.docx",
"VersionLabel":"1.0"
}}
FileVersionCollection resource
Represents a collection of FileVersion resources.
Endpoint URI | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/getfilebyserverrelativeurl('/<folder name>/<file name>')/versions
HTTP methods
This resource supports the following HTTP methods:
GET | POST
Request example
GET request example: Get the metadata for all versions of a file
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GET request example: Get the metadata for a file version
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions(512)
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
FileVersionCollection methods
DeleteAll
DeleteById
DeleteByLabel
GetById
RestoreByLabel
DeleteAll method
Deletes all the file version objects in the collection.
Endpoint |
/deleteall |
Parameters |
None |
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
/deleteall
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
DeleteById method
Deletes the specified version of the file.
Endpoint |
/deletebyid(vid) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
/deletebyid(vid=3)
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
DeleteByLabel method
Deletes the file version object with the specified version label.
Endpoint |
/deletebylabel(versionlabel) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
/deletebylabel(versionlabel='1.2')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
GetById method
Endpoint |
/getbyid(versionid) |
Parameters |
|
HTTP method |
GET |
Response |
Type: SP.FileVersion |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
/getbyid(512)
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
Or you can pass the version ID directly to the collection (…/versions(512)). See FileVersionCollection request examples.
RestoreByLabel method
Creates a new file version from the file specified by the version label.
Endpoint |
/restorebylabel(versionlabel) |
Parameters |
|
HTTP method |
POST |
Response |
None |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfilebyserverrelativeurl('/Shared Documents/filename.docx')/versions
/restorebylabel(versionlabel='1.2')
?@target='<host web url>'",
method: "POST",
success: successHandler,
error: errorHandler
});
OData representation
The following example represents a FileVersionCollection resource in JSON format.
{"d":{
"results":[{
"__metadata":{
"id":"http://<site url>/_api/SP.FileVersiona6a6bb00-2b96-41e6-a901-46df015183b9",
"uri":"http://<site url>/_api/SP.FileVersiona6a6bb00-2b96-41e6-a901-46df015183b9",
"type":"SP.FileVersion"
},
"CreatedBy":{"__deferred":{"uri":"http://<site url>/_api/SP.FileVersiona6a6bb00-2b96-41e6-a901-46df015183b9/CreatedBy"}},
"CheckInComment":"",
"Created":"2013-06-10T04:02:53Z",
"ID":512,
"IsCurrentVersion":true,
"Size":20609,
"Url":"_vti_history/512/Shared Documents/folderName/fileName1.docx",
"VersionLabel":"1.0"
},{
"__metadata":{
"id":"http://<site url>/_api/SP.FileVersion6accd876-7579-47b6-9779-19a24f6ab8a1",
"uri":"http://<site url>/_api/SP.FileVersion6accd876-7579-47b6-9779-19a24f6ab8a1",
"type":"SP.FileVersion"
},
"CreatedBy":{"__deferred":{"uri":"http://<site url>/_api/SP.FileVersion6accd876-7579-47b6-9779-19a24f6ab8a1/CreatedBy"}},
"CheckInComment":"Revisions to the file.",
"Created":"2013-06-11T17:42:41Z",
"ID":513,
"IsCurrentVersion":false,
"Size":17973,
"Url":"_vti_history/513/Shared Documents/folderName/fileName1.docx",
"VersionLabel":"1.1"
}]}}
Folder resource
Represents a folder on a SharePoint Web site.
Endpoint URI | Properties | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/getfolderbyserverrelativeurl('/<folder name>')
Supported HTTP methods
GET | POST | DELETE | MERGE | PUT
Request examples
GET request example: Get a folder
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
MERGE request example: Change a folder
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')
?@target='<host web url>'",
method: "POST",
body: "{ '__metadata':{ 'type': 'SP.Folder' }, 'WelcomePage':'Folder B/WelcomePage.aspx' }",
headers: {
"content-type": "application/json; odata=verbose",
"X-HTTP-Method": "MERGE"
},
success: successHandler,
error: errorHandler
});
DELETE request example: Delete a folder
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')
?@target='<host web url>'",
method: "POST",
headers: { "X-HTTP-Method":"DELETE" },
success: successHandler,
error: errorHandler
});
See FolderCollection request examples for an example of how to create a folder.
Folder properties
To get a property, send a GET request to the property endpoint, as shown in the following example.
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/<property name>
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
To set a writeable property, get the resource, set the property value in the body, and then use the MERGE method on the resource to merge your changes or use the PUT method to replace the resource. See Folder request examples for an example.
Property |
Type |
R/W |
Description |
|
---|---|---|---|---|
ContentTypeOrder |
Collection(SP.ContentTypeId) |
R |
Yes |
Specifies the sequence in which content types are displayed. |
Files |
R |
No |
Gets the collection of all files contained in the list folder. You can add a file to a folder by using the Add method on the folder’s FileCollection resource. |
|
Folders |
R |
No |
Gets the collection of list folders contained in the list folder. |
|
ItemCount |
Int32 |
R |
Yes |
Gets a value that specifies the count of items in the list folder. |
ListItemAllFields |
R |
No |
Specifies the list item field (2) values for the list item corresponding to the file. |
|
Name |
String |
R |
Yes |
Gets the name of the folder. |
ParentFolder |
R |
No |
Gets the parent list folder of the folder. |
|
Properties |
SP.PropertyValues |
R |
No |
Gets the collection of all files contained in the folder. |
ServerRelativeUrl |
String |
R |
Yes |
Gets the server-relative URL of the list folder. |
UniqueContentTypeOrder |
Collection(SP.ContentTypeId) |
RW |
Yes |
Gets or sets a value that specifies the content type order. |
WelcomePage |
String |
RW |
Yes |
Gets or sets a value that specifies folder-relative URL for the list folder welcome page. |
Folder methods
DeleteObject method
The recommended way to delete a folder is to send a DELETE request to the Folder resource endpoint, as shown in Folder request examples.
Recycle method
Moves the list folder to the Recycle Bin and returns the identifier of the new Recycle Bin item.
Endpoint |
/recycle |
HTTP method |
POST |
Parameters |
None |
Response |
Type: GUID |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')
/recycle
?@target='<host web url>'",
method: "POST",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
OData representation
The following example represents a Folder resource in JSON format.
{"d":{
"__metadata":{,
"id":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared Documents/Folder A')",
"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')",
"type":"SP.Folder"
},
"Files":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')/Files"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')/ListItemAllFields"}},
"ParentFolder":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')/ParentFolder"}},
"Properties":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')/Properties"}},
"Folders":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Folder%20A')/Folders"}},
"ItemCount":7,
"Name":"Folder A",
"ServerRelativeUrl":"/Shared Documents/Folder A",
"WelcomePage":""
}}
FolderCollection resource
Represents a collection of Folder resources.
Endpoint URI | Methods | OData representation
Endpoint URI
http://<site url>/_api/web/folders (top-level folders at the root site)
http://<site url>/_api/web/getfolderbyserverrelativeurl('/<folder name>')/folders
Supported HTTP methods
GET | POST
Request examples
GET request example: Get the folders at the root site
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web/folders
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GET request example: Get the folders in a document library
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents')/folders
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GET request example: Get a folder by name
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/folders('Folder B')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
POST request example: Create a folder (or you can use the Add method)
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web
/getfolderbyserverrelativeurl('/Shared Documents/Folder A')/folders
?@target='<host web url>'",
method: "POST",
body: "{ '__metadata':{ 'type': 'SP.Folder' }, 'ServerRelativeUrl':'Folder B' }",
headers: {
"accept": "application/json; odata=verbose",
"content-type": "application/json; odata=verbose"
},
success: successHandler,
error: errorHandler
});
See Folder request examples for examples of how to update and delete a folder.
FolderCollection methods
Add method
Adds the folder that is located at the specified URL to the collection.
Endpoint |
/add(url) |
Parameters |
|
HTTP method |
POST |
Response |
Type: SP.Folder |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web/folders
/add('/Shared Documents/Folder A/Folder B')
?@target='<host web url>'",
method: "POST",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
GetByUrl method
Endpoint |
/getbyurl('<server-relative folder url>') |
Parameters |
Type: String |
HTTP method |
GET |
Response |
Type: SP.Folder |
Request example
executor.executeAsync({
url: "<app web url>/_api/SP.AppContextSite(@target)/web/folders
/getbyurl('Folder B')
?@target='<host web url>'",
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
});
You can also pass a folder name directly to a folder collection. Example: …/folders('Folder B'). See FolderCollection request examples.
OData representation
The following example represents a FolderCollection resource in JSON format.
{"d":{
"results":[{
"__metadata":{
"id":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared Documents/Forms')",
"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')",
"type":"SP.Folder"
},
"Files":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')/Files"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')/ListItemAllFields"}},
"ParentFolder":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')/ParentFolder"}},
"Properties":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')/Properties"}},
"Folders":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Forms')/Folders"}},
"ItemCount":0,
"Name":"Forms",
"ServerRelativeUrl":"/Shared Documents/Forms",
"WelcomePage":""
},{
"__metadata":{
"id":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared Documents/folderName')",
"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')",
"type":"SP.Folder"
},
"Files":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')/Files"}},
"ListItemAllFields":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')/ListItemAllFields"}},
"ParentFolder":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')/ParentFolder"}},
"Properties":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')/Properties"}},
"Folders":{"__deferred":{"uri":"http://<site url>/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/folderName')/Folders"}},
"ItemCount":4,
"Name":"folderName",
"ServerRelativeUrl":"/Shared Documents/folderName",
"WelcomePage":""
}]}}