Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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 Folder

Create 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 Polling

Retrieve 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