Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elasticio/microsoft-onedrive-component
elastic.io iPaaS integration component for Microsoft OneDrive
https://github.com/elasticio/microsoft-onedrive-component
elasticio elasticio-component onedrive onedrive-client
Last synced: 3 days ago
JSON representation
elastic.io iPaaS integration component for Microsoft OneDrive
- Host: GitHub
- URL: https://github.com/elasticio/microsoft-onedrive-component
- Owner: elasticio
- Created: 2020-03-02T09:46:28.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-05-19T13:24:48.000Z (over 1 year ago)
- Last Synced: 2024-04-09T21:02:10.973Z (7 months ago)
- Topics: elasticio, elasticio-component, onedrive, onedrive-client
- Language: TypeScript
- Homepage: https://www.elastic.io
- Size: 827 KB
- Stars: 2
- Watchers: 9
- Forks: 1
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Microsoft OneDrive Component
## Table of Contents
* [Description](#description)
* [Environment variables](#environment-variables)
* [API version](#api-version)
* [Credentials](#credentials)
* [Actions](#actions)
* [Create Folder](#create-folder)
* [Delete File](#delete-file)
* [Get File](#get-file)
* [Upsert File](#upsert-file)
* [Triggers](#triggers)
* [Get New and Updated Objects Polling](#get-new-and-updated-objects-polling)## Description
Microsoft OneDrive Component is designed to manage files and folders in OneDrive service using [Microsoft Graph API](https://learn.microsoft.com/en-us/graph/use-the-api)
## Environment variables
| Name | Mandatory | Description | Values |
|--------------------------|-----------|-------------------------------------------------------------------------------------------------------|-------------------------------------|
| `API_RETRIES_COUNT` | false | Set how many time system try to make request to API on server errors (3 by default) | `integer` above 0 and below 5 |
| `API_REQUEST_TIMEOUT` | false | HTTP requests timeout in milliseconds (15000 by default) | `integer` above 500 and below 20000 |## API version
Current release of component tested on Graph API `v1` (`https://graph.microsoft.com/v1.0/`)
## Credentials
Microsoft OneDrive uses the OAuth 2.0.
How to register an application look [here](https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/app-registration?view=odsp-graph-online).
Redirect URI for platform is `https://{your-tenant-address}/callback/oauth2`* **Type** (dropdown, required) - `OAuth2`
* **Choose Auth Client** (dropdown, required) - select one of created before or `Add New Auth Client`:
* **Name** (string, required) - provide any name you want
* **Client ID** (string, required) - put here `Application (client) ID`
* **Client Secret** (string, required) - put here `Client credentials`
* **Authorization Endpoint** (string, required) - OneDrive authorization endpoint `https://login.microsoftonline.com/common/oauth2/v2.0/authorize`
* **Token Endpoint** (string, required) - OneDrive refresh token endpoint `https://login.microsoftonline.com/common/oauth2/v2.0/token`
* **Name Your Credential** (string, required) - provide any name you want
* **Scopes (Space-separated list)** (string, required) - Put here scopes to get access to your OneDrive - `offline_access Files.ReadWrite.All`## Actions
### Create FolderCreate new folder in provided `path`. If `path` not exist component will fail.
#### Configuration Fields
* **Drive Identity** - (dropdown, required): OneDrive instance to work with
* **Conflict Behavior** - (dropdown, optional, `Fail` by default) - Select one of options to handle case when folder already exists:
* **Fail** - Fails if folder with same name already exists under provided `path`
* **Generate new name** - If folder with same name already exists under provided `path` then will be created new folder with different name. Examples: `folder_name` (already exist) -> `folder_name 1` (will be created), `folder_name 1` (already exist) -> `folder_name 1 1` (will be created)
* **Upsert** - If folder already exist, you will get information about this folder#### Input Metadata
* **Path** - (string, required): Full path to folder where you need to create new folder, ex: `Monthly reports/November`
* **Name** - (string, required): Name of new folder#### Output Metadata
Metadata of created folder
### Delete File
Action to delete item from OneDrive by provided path in selected disc.
#### Configuration Fields
* **Drive Identity** - (dropdown, required): OneDrive instance to work with
* **Emit strategy when file not found** - (dropdown, optional, `Emit nothing` by default) - select one of options to handle case when file not exist:
* **Emit nothing** - component will not produce any messages
* **Emit an empty object** - result will be empty object: `{}`
* **Throw an error** - error will be thrown#### Input Metadata
* **Path** - (string, required): Full path to item, ex: `Monthly reports/November/Cars sales.pdf`
#### Output Metadata
* **Path** - (string, required): Full path to item, ex: `Monthly reports/November/Cars sales.pdf`
### Get File
Lookup a single file by its path.
#### Configuration Fields
* **Drive Identity** - (dropdown, required): OneDrive instance to work with
* **Enable File Attachments** - (checkbox, optional): If checked, file will be uploaded to local storage and link provided in response#### Input Metadata
* **Path** - (string, required): Full path to item, ex: `Monthly reports/November/Cars sales.pdf`
#### Output Metadata
File information as JSON object, if `Enable File Attachments` checked, there also will be additional field `attachmentUrl` with link to file on platform
### Upsert File
Updates (if record exist) or creates a new file
#### Configuration Fields
* **Drive Identity** - (dropdown, required): OneDrive instance to work with
* **Upload single file** - (checkbox, optional): Use this option if you want to upload a single file#### Input Metadata
If `Upload single file` checked, there will be 2 fields:
* **URL** - (string, required): link to file on Internet or platform
* **Path** - (string, required): Full path to item on OneDrive, ex: `Monthly reports/November/Cars sales.pdf`If `Upload single file` unchecked:
* **Files** - (array, required): Collection of files to upload, each record contains object with two keys:
* **URL** - (string, required): link to file on Internet or platform
* **Path** - (string, required): Full path to item on OneDrive, ex: `Monthly reports/November/Cars sales.pdf`#### Output Metadata
Result object from upsert.
## Triggers
### Get New and Updated Objects PollingRetrieve all the updated or created objects within a given time range.
#### Configuration Fields
* **Drive Identity** - (dropdown, required): OneDrive instance to work with
* **Folders path** - (multiselect dropdown, required): Select folders to follow
* **Include subfolders** - (checkbox, optional): If checked, trigger will follow to each subfolder of selected folder.
❗Note: this will increase the number of API calls
* **Enable File Attachments** - (checkbox, optional): If checked, file will be uploaded to local storage and link provided in response
* **Time stamp field to poll on** - (dropdown, optional, default `Last Modified`): Select which date will be used to track files - `Last Modified` or `Created`
* **Emit Behavior** - (dropdown, optional, default `Emit individually`): Defines the way result objects will be emitted, one of `Emit page` or `Emit individually`.
* **Page Size** - (number, optional, defaults to 999, max 999): Indicates the size of pages to be fetched per request
* **Start Time** - (string, optional): The timestamp to start polling from (inclusive) - using ISO 8601 Date time utc format - YYYY-MM-DDThh:mm:ssZ. Default value is the beginning of time (January 1, 1970 at 00:00).
* **End Time** - (string, optional): The timestamp to stop polling (exclusive) - using ISO 8601 Date time utc format - YYYY-MM-DDThh:mm:ssZ. Default value is flow execution time.#### Input/Output Metadata
None.
#### Output Metadata
Depends on `Enable File Attachments` and `Emit behavior` fields.
* If `Emit behavior` field is equal to `Emit page` - object with property `results` that contains array of files
* If `Emit behavior` field is equal to `Emit individually`, file information will fulfill whole message
* If `Enable File Attachments` checked, for each file there will be additional field - `attachmentUrl`#### Limitations
* OneDrive API doesn't support filtering - as result we collect information about all files from selected folders and filter them locally (inside component) for each trigger execution
* From point above, option `Emit page` not always emit records according to `Page Size`
* `Include subfolders` increase amount of API calls - additional call for each subfolder and inner folders