# msservices

RocketRide source endpoints for Microsoft 365: SharePoint document libraries and
Outlook mailboxes, both reached through the Microsoft Graph API.

## What it does

The node scans a Microsoft 365 tenant and feeds what it finds into the pipeline
on the `tags` lane. It registers three services over one shared Graph connector:
`ms-sharepointcpp` for SharePoint drives, and `outlook-enterprise` and
`outlook-personal` for mailboxes, which differ only in how they authenticate.
The services are marked internal, so they are not offered on the canvas and are
reached through task or pipeline configuration.

## Lanes

| Input | Output | Description |
| ----- | ------ | ----------- |
| `_source` | `tags` | Emits the scanned items to be processed. |

## Configuration

Every service authenticates as a registered Entra ID application, so all of them
take a `clientId` and a `clientSecret`. Include paths begin with the container:
a site or drive for SharePoint, a mailbox folder for Outlook.

### ms-sharepointcpp

Set `tenant` to the directory (tenant) id the application belongs to.

### outlook-enterprise

Set `tenant` as above. The application authenticates on its own behalf, so it
reaches the mailboxes its Graph permissions allow.

### outlook-personal

Takes a `refreshToken` instead of a tenant, since a personal account
authenticates as the signed-in user rather than as the directory.

## Notes

### One library, three services

All three services name the same `msservices` library, which the engine loads
once, on the first lookup of any of them. That load registers the factories of
all three. Outlook is a source only; configuring it as a target is refused.

<!-- ROCKETRIDE:GENERATED:PARAMS START -->
<!-- Generated by nodes:docs-generate. Do not edit by hand. -->

## Schema

### Outlook Enterprise (`services.outlook.enterprise.json`)

| Field | Type | Description | Default |
|---|---|---|---|
| `ms.clientId` | `string` | **Client id**<br/>Application (client) id. |  |
| `ms.tenant` | `string` | **Tenant**<br/>Directory (tenant) id. |  |
| `outlook.source.parameters` |  | **Parameters** |  |

### Outlook Personal (`services.outlook.personal.json`)

| Field | Type | Description | Default |
|---|---|---|---|
| `ms.clientId` | `string` | **Client id**<br/>Application (client) id. |  |
| `ms.tenant` | `string` | **Tenant**<br/>Directory (tenant) id. |  |
| `outlookp.source.parameters` |  | **Parameters** |  |

### SharePoint (`services.sharepoint.json`)

| Field | Type | Description | Default |
|---|---|---|---|
| `ms.clientId` | `string` | **Client id**<br/>Application (client) id. |  |
| `ms.tenant` | `string` | **Tenant**<br/>Directory (tenant) id. |  |
| `sharepoint.source.parameters` |  | **Parameters** |  |

## Source

[<svg viewBox="0 0 16 16" width="15" height="15" fill="currentColor" aria-hidden="true" style="vertical-align:-0.15em;margin-right:0.35em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg> View source](https://github.com/rocketride-org/rocketride-server/tree/develop/nodes/src/nodes/msservices)
<!-- ROCKETRIDE:GENERATED:PARAMS END -->
