OneDrive API module for Node.js. It's built with pure functional programing, there are no unnecessary objects.
It's built for internal project so it supports only basic CRUD operations needed for project (for now). I will accept any pull requests.
npm install onedrive-api
var oneDriveAPI = require('onedrive-api');
Since version 0.2.0 this npm module supports accessing shared files. Simply provide the parameter shared as true along with the user, who originally owns the files. Keep in mind, that in order to access the files the access token requires certain scopes (e.g. files.read.all). See the following snippet:
oneDriveAPI.items.listChildren({
accessToken: accessToken,
itemId: 'root',
shared: true,
user: 'dkatavic'
}).then((childrens) => {
// list all children of dkatavics root directory
//
// console.log(childrens);
// returns body of https://dev.onedrive.com/items/list.htm#response
})
Create Folder
Returns: Object
- folder object
Param | Type | Default | Description |
---|---|---|---|
params | Object |
||
params.accessToken | String |
OneDrive access token | |
[params.rootItemId] | String |
root |
Item id |
params.name | String |
New folder name | |
params.shared | Boolean |
false |
A flag to indicated whether this files is owned by the user or shared from another user. If true params.user has to be set. |
params.user | String |
The user who shared the file. Must be set if params.shared is true. |
oneDriveAPI.items.createFolder({
accessToken: accessToken,
rootItemId: "root",
name: "Folder name"
}).then((item) => {
// console.log(item)
// returns body of https://dev.onedrive.com/items/create.htm#response
})
Delete item (file or folder)
Returns: undefined
- (204 No content)
Param | Type | Description |
---|---|---|
params | Object |
|
params.accessToken | String |
OneDrive access token |
params.itemId | String |
Item id |
params.shared | Boolean |
false |
params.user | String |
oneDriveAPI.items.delete({
accessToken: accessToken,
itemId: createdFolder.id
}).then(() => {
})
Download item content
Returns: Object
- Readable stream with item's content
Param | Type | Description |
---|---|---|
params | Object |
|
params.accessToken | String |
OneDrive access token |
params.itemId | String |
item id |
params.shared | Boolean |
false |
params.user | String |
var fileStream = oneDriveAPI.items.download({
accessToken: accessToken,
itemId: createdFolder.id
});
fileStream.pipe(SomeWritableStream);
Get items metadata (file or folder)
Returns: Object
- Item's metadata
Param | Type | Description |
---|---|---|
params | Object |
|
params.accessToken | String |
OneDrive access token |
params.itemId | String |
Item id |
params.shared | Boolean |
false |
params.user | String |
oneDriveAPI.items.getMetadata({
accessToken: accessToken,
itemId: createdFolder.id
}).then((item) => {
// console.log(item);
// returns body of https://dev.onedrive.com/items/update.htm#response
})
List childrens
Returns: Array
- object of children items
Param | Type | Default | Description |
---|---|---|---|
params | Object |
||
params.accessToken | String |
OneDrive access token | |
[params.itemId] | String |
root |
Item id |
params.shared | Boolean |
false |
A flag to indicated whether this files is owned by the user or shared from another user. If true params.user has to be set. |
params.user | String |
The user who shared the file. Must be set if params.shared is true. |
oneDriveAPI.items.listChildren({
accessToken: accessToken,
itemId: createdFolder.id
}).then((childrens) => {
// console.log(childrens);
// returns body of https://dev.onedrive.com/items/list.htm#response
})
Update item metadata
Returns: Object
- Item object
Param | Type | Description |
---|---|---|
params | Object |
|
params.accessToken | String |
OneDrive access token |
params.itemId | String |
Item id |
params.toUpdate | Object |
Object to update |
params.shared | Boolean |
false |
params.user | String |
oneDriveAPI.items.update({
accessToken: accessToken,
itemId: createdFolder.id,
toUpdate: {
name: "newFolderName"
}
}).then((item) => {
// console.log(item);
// returns body of https://dev.onedrive.com/items/update.htm#response
})
Create file with simple upload
Returns: Object
- Item
Param | Type | Default | Description |
---|---|---|---|
params | Object |
||
params.accessToken | String |
OneDrive access token | |
params.filename | String |
File name | |
[params.parentId] | String |
root |
Parent id |
[params.parentPath] | String |
Parent path (if parentPath is defined, than parentId is ignored) | |
params.readableStream | Object |
Readable Stream with file's content | |
params.shared | Boolean |
false |
A flag to indicated whether this files is owned by the user or shared from another user. If true params.user has to be set. |
params.user | String |
The user who shared the file. Must be set if params.shared is true. |
oneDriveAPI.items.uploadSimple({
accessToken: accessToken,
filename: filename,
readableStream: readableStream
}).then((item) => {
// console.log(item);
// returns body of https://dev.onedrive.com/items/upload_put.htm#response
})
Create file with simple upload
Returns: Object
- Item
Param | Type | Default | Description |
---|---|---|---|
params | Object |
||
params.accessToken | String |
OneDrive access token | |
params.filename | String |
File name | |
[params.parentId] | String |
root |
Parent id |
[params.parentPath] | String |
Parent path (if parentPath is defined, than parentId is ignored) | |
params.readableStream | Object |
Readable Stream with file's content | |
params.shared | Boolean |
false |
A flag to indicated whether this files is owned by the user or shared from another user. If true params.user has to be set. |
params.user | String |
The user who shared the file. Must be set if params.shared is true. |
oneDriveAPI.items.uploadSimple({
accessToken: accessToken,
filename: filename,
readableStream: readableStream
}).then((item) => {
// console.log(item);
// returns body of https://dev.onedrive.com/items/upload_put.htm#response
})
Create file with session upload. Use this for the files over 4MB. This is a synchronous wrapper around asynchronous method, which means that on the failed upload you can't resume the upload but need to retry the implementation. I am accepting PRs for asynchronous implementation
Returns: Object
- Item
Param | Type | Default | Description |
---|---|---|---|
params | Object |
||
params.accessToken | String |
OneDrive access token | |
params.filename | String |
File name | |
params.fileSize | Number |
Size of the file | |
[params.parentId] | String |
root |
Parent id |
[params.parentPath] | String |
Parent path (if parentPath is defined, than parentId is ignored) | |
params.readableStream | Object |
Readable Stream with file's content | |
params.shared | Boolean |
false |
A flag to indicated whether this files is owned by the user or shared from another user. If true params.user has to be set. |
params.user | String |
The user who shared the file. Must be set if params.shared is true. | |
[params.chunksToUpload] | Number |
20 |
Chunks to upload per request. More chunks per request requires more RAM |
oneDriveAPI.items.uploadSession({
accessToken: accessToken,
filename: filename,
fileSize: fileSize,
readableStream: readableStream
}).then((item) => {
// console.log(item);
// returns body of https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_createuploadsession?view=odsp-graph-online#http-response
})