Reference · Tools
Microsoft SharePoint
Manage files, list items, and lists in Microsoft SharePoint Online. Download, upload, and update files in document libraries. Create, read, update, delete, and upsert list items. Retrieve list metadata.
The Microsoft SharePoint node works with document libraries and lists in SharePoint Online: downloading, uploading and updating files, and creating, reading, updating, deleting or upserting list items, plus retrieving list metadata. A typical build is syncing a system of record into a SharePoint list that the wider business already uses.
- Node type
- Action (binary)
- Parameters
- 37
- Outputs
- Output, Error
- Credentials
- Microsoft OAuth2
Microsoft SharePoint
Manage files, list items, and lists in SharePoint Online
Overview
Manages files, list items and lists in SharePoint Online through the Microsoft Graph API, across three resources. File covers download, upload and update in a document library. Item covers create, get, get many, update, upsert and delete for list items. List covers reading a single list or every list on a site.
File download produces binary data on the output item; file upload and content update consume binary data from an upstream node. Item operations support OData filtering, response simplification, field selection, and upsert keyed on matching columns. List operations paginate and simplify. Authentication is Microsoft OAuth2, with tokens refreshed automatically.
Category: Data & Storage
Tool Name: microsoft_sharepoint
Version: 1
Appearance: Icon: lucide-HardDrive | Color: #038387
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Microsoft OAuth2 credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| File | file |
| Item | item |
| List | list |
Operations
The available operations depend on the selected resource — file operations first, then item, then list.
| Operation | Value | Description |
|---|---|---|
| Download | download | Download a file from a document library |
| Update | update | Update a file name and/or content |
| Upload | upload | Upload a file to a document library folder |
| Create | create | Create an item in a list |
| Create or Update | upsert | Create a new item or update an existing one (upsert) |
| Delete | delete | Delete an item from a list |
| Get | get | Retrieve a single item from a list |
| Get Many | getAll | Retrieve multiple items from a list |
| Update | update | Update an item in a list |
| Get | get | Retrieve details of a single list |
| Get Many | getAll | Retrieve all lists from a site |
Parameters
File: Download
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Parent Folder ID | string | Yes | — | The drive item ID of the parent folder. Used for context; the download uses fileId directly. |
| File ID | string | Yes | — | The drive item ID of the file to download. Supports expressions. |
| Binary Property | string | Yes | data | Name of the binary property to write the downloaded file to. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
File: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Parent Folder ID | string | Yes | — | The drive item ID of the parent folder. |
| File ID | string | Yes | — | The drive item ID of the file to update. Supports expressions. |
| Updated File Name | string | No | — | If not specified, the original file name will be used. |
| Change File Content | boolean | Yes | false | Whether to replace the file contents with new binary data. |
| Binary Property | string | Yes | data | Name of the binary property containing the new file content. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Change File Content is true) |
File: Upload
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Parent Folder ID | string | Yes | — | The drive item ID of the destination folder. |
| File Name | string | Yes | — | The name for the uploaded file. Supports expressions. |
| Binary Property | string | Yes | data | Name of the binary property containing the file data to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
Item: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Fields (JSON) | json | Yes | {} | Column values as a JSON object, e.g. {“Title”: “My Item”, “Status”: “Active”}. URL-type columns should be wrapped as {“Description”: “url”, “Url”: “url”}. Unsupported column types: Hyperlink, Location, Metadata. |
Item: Create or Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Fields (JSON) | json | Yes | {} | Column values as a JSON object. Include matching column values for lookup. |
| Matching Columns | string | Yes | — | Comma-separated column names to match existing items (e.g. “Title” or “id”). If “id” is included and has a value, it is used directly. |
Item: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Item ID | string | Yes | — | The ID of the item to delete. Supports expressions. |
Item: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Item ID | string | Yes | — | The ID of the item to retrieve. Supports expressions. |
| Simplify | boolean | No | true | Whether to strip OData metadata from the response. |
Item: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Filter by Formula | string | No | — | OData $filter expression (e.g. “fields/Title eq ‘item1’”). If empty, all items are returned. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to strip OData metadata from the response. |
| Options | collection | No | {} | Extra response-shaping options. |
| — Fields | multiOptions | No | [] | The fields to include in the output (only when Simplify is off). |
Options: contentType, createdDateTime, createdBy, fields, id, lastModifiedDateTime, lastModifiedBy, parentReference, webUrl |
Item: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Fields (JSON) | json | Yes | {} | Column values to update as a JSON object. |
| Matching Columns | string | Yes | id | Comma-separated column names to identify the target item (e.g. “id” or “Title”). If “id” is included and has a value in fields, it is used directly. |
Item: All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| List ID | string | Yes | — | The SharePoint list ID. Supports expressions. |
List: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| List ID | string | Yes | — | The SharePoint list ID. Supports expressions. |
| Simplify | boolean | No | true | Whether to limit response fields for cleaner output. |
List: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Simplify | boolean | No | true | Whether to limit response fields for cleaner output. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Microsoft Account | credential | No | — | Connect your Microsoft account via OAuth2. |
| Site ID | string | Yes | — | The SharePoint site ID. Find this in the SharePoint admin center or via the Graph API /sites endpoint. Supports expressions. |
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
Results are merged into the input item’s JSON, so the incoming fields stay available downstream, and binary data on the input item is forwarded.
| Operation | Output |
|---|---|
file / download | One item whose JSON is unchanged; the file is written to the binary property you named, alongside any binary already on the item. The file name comes from the download response. |
file / upload, update | One item carrying the drive item’s metadata (id, name, size, webUrl, timestamps …). |
item / create, upsert, update | One item carrying the list item as SharePoint returned it, including its id and fields object. |
item / get | One item carrying the requested list item. |
item / delete | One item carrying deleted: true. |
item / getAll | One item per list item. When nothing matches, one item carrying an empty results array. |
list / get | One item carrying the list’s metadata (id, name, displayName, description, webUrl, timestamps). |
list / getAll | One item per list on the site. When the site has no lists, one item carrying an empty results array. |
A simplified list item looks like this:
{
"id": "123",
"createdDateTime": "2024-01-15T09:30:00Z",
"lastModifiedDateTime": "2024-01-20T14:02:11Z",
"webUrl": "https://contoso.sharepoint.com/sites/Team/Lists/Tasks/123_.000",
"fields": { "Title": "New Task" }
}
Simplify trims the response to id, the two timestamps, webUrl and the Title field, and strips OData annotations. Turn it off to receive the full record — and, for Get Many, to choose exactly which properties come back via Options → Fields.
Read column values downstream with expressions such as {{ $json.fields.Title }}.
Usage Examples
- Download a file from a SharePoint document library
- Upload a binary file to a SharePoint folder
- Update a file name and content in SharePoint
- Create a new item in a SharePoint list
- Get all items from a SharePoint list with filtering
- Update list item fields by matching columns
- Upsert a list item (create or update)
- Delete a list item from SharePoint
- Get details of a SharePoint list
- List all lists in a SharePoint site
Example Configuration
Download a file into a named binary property:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "file",
"operation": "download",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"folderId": "{{ $json.folderId }}",
"fileId": "{{ $json.fileId }}",
"binaryPropertyName": "fileData"
}
}
Upload binary data from an upstream node:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "file",
"operation": "upload",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"folderId": "destination-folder-id",
"fileName": "document.pdf",
"binaryPropertyName": "data"
}
}
Rename a file without touching its contents:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "file",
"operation": "update",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"folderId": "folder-drive-item-id",
"fileId": "file-drive-item-id",
"fileName": "new-filename.docx",
"changeFileContent": false
}
}
Replace both the name and the contents:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "file",
"operation": "update",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"folderId": "folder-drive-item-id",
"fileId": "file-drive-item-id",
"fileName": "updated-document.pdf",
"changeFileContent": true,
"binaryPropertyName": "newContent"
}
}
Create a list item:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "item",
"operation": "create",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"listId": "your-list-id",
"fields": "{\"Title\": \"{{ $json.title }}\", \"Status\": \"In Progress\", \"Priority\": \"High\"}"
}
}
Create the item, or update it if one with the same Title already exists:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "item",
"operation": "upsert",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"listId": "your-list-id",
"matchingColumns": "Title",
"fields": "{\"Title\": \"Project Update\", \"Status\": \"Completed\"}"
}
}
Read a page of items matching an OData filter:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "item",
"operation": "getAll",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"listId": "your-list-id",
"filter": "fields/Status eq 'Active'",
"returnAll": false,
"limit": 50,
"simplify": false,
"options": {
"fields": ["id", "fields", "createdDateTime", "webUrl"]
}
}
}
Update an item addressed by its ID:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "item",
"operation": "update",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"listId": "your-list-id",
"matchingColumns": "id",
"fields": "{\"id\": \"{{ $json.id }}\", \"Status\": \"Completed\"}"
}
}
Delete an item:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "item",
"operation": "delete",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"listId": "your-list-id",
"itemId": "{{ $json.id }}"
}
}
List every list on the site:
{
"type": "microsoft_sharepoint",
"parameters": {
"resource": "list",
"operation": "getAll",
"siteId": "contoso.sharepoint.com,guid1,guid2",
"returnAll": true,
"simplify": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Download, upload, and update files; create, read, update, delete, and upsert list items; retrieve list metadata in SharePoint Online via Microsoft Graph API.
- Site ID is a composite value. It looks like
contoso.sharepoint.com,<guid>,<guid>; take it from the SharePoint admin center or the Graph/sitesendpoint. - Matching Columns drives Upsert and Update. Naming
iduses the value straight from your Fields JSON; naming ordinary columns runs a lookup first, and the operation fails if the columns match no existing item. Update always requires a match; Upsert creates a new item when there is none. idis never written. It is removed from the payload before the request, so it can identify the row without also being treated as a column value.- URL columns need an object. Wrap them as
{"Description": "Display text", "Url": "https://example.com"}. Hyperlink, Location and Metadata columns are not supported. - Simplify trims aggressively. It is convenient, but it drops every column other than
Title. Turn it off — and use Options → Fields on Get Many — when you need the rest. - Update always issues a rename request for files, even when Updated File Name is blank; only the contents change when Change File Content is on.
- Get Many fans out — each list item or list becomes its own workflow item.
Frequently asked questions
What does the Site ID look like?
It is a composite value shaped like `contoso.sharepoint.com,<guid>,<guid>`. Take it from the SharePoint admin center or the Graph `/sites` endpoint rather than trying to construct it.
How does upsert decide what to match?
Matching Columns drives it. Naming `id` uses the value straight from your Fields JSON; naming ordinary columns runs a lookup first, and the operation fails if the columns you named do not match anything usable.
Can it handle files as well as list data?
Yes — download, upload and update in document libraries, alongside the full list-item operations.
Which credential does it need?
A Microsoft OAuth2 credential with permission for the site and lists you are targeting.
Build with the Microsoft SharePoint node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Microsoft OAuth2 credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.