# Microsoft 365

Name of the delegated user (for delegated permissions)

This app connects rooms and other resources to Eliona and provides information about their booking status. However, the app’s main capability is the ability to use the entire Graph API directly in Eliona by using the authentication proxy functionality.

## Installation

The Microsoft 365 app is installed via the App Store in Eliona.

## Assets

The Microsoft 365 app automatically creates all necessary asset types and assets that are accessible via the configured endpoints. The following asset types are created:

* Room: A room in Azure AD.&#x20;
* Equipment: Any piece of equipment that can be booked. Like a room, but generalized.

The following attributes are defined:

<table><thead><tr><th>Attributes</th><th>Description</th><th width="79">room</th><th width="128">Equipment</th><th>Filterable</th></tr></thead><tbody><tr><td><code>address</code></td><td>Physical address</td><td>x</td><td></td><td>x</td></tr><tr><td><code>nickname</code></td><td>Nickname</td><td>x</td><td></td><td>x</td></tr><tr><td><code>label</code></td><td>Label</td><td>x</td><td></td><td>x</td></tr><tr><td><code>geo_coordinates</code></td><td>Geo coordinates</td><td>x</td><td></td><td>x</td></tr><tr><td><code>phone</code></td><td>Phone number</td><td>x</td><td></td><td>x</td></tr><tr><td><code>email_address</code></td><td>Email address</td><td>x</td><td>x</td><td>x</td></tr><tr><td><code>booking_type</code></td><td>Booking type</td><td>x</td><td></td><td>x</td></tr><tr><td><code>building</code></td><td>Buildings</td><td>x</td><td></td><td>x</td></tr><tr><td><code>capacity</code></td><td>Capacity</td><td>x</td><td></td><td>x</td></tr><tr><td><code>floor_label</code></td><td>Floor label</td><td>x</td><td></td><td>x</td></tr><tr><td><code>floor_number</code></td><td>Floor number</td><td>x</td><td></td><td>x</td></tr><tr><td><code>is_wheel_chair_accessible</code></td><td>Wheelchair accessible</td><td>x</td><td></td><td>x</td></tr><tr><td><code>tags</code></td><td>Tags</td><td>x</td><td></td><td>x</td></tr><tr><td><code>display_device_name</code></td><td>Display device name</td><td>x</td><td></td><td>x</td></tr><tr><td><code>audio_device_name</code></td><td>Audio device name</td><td>x</td><td></td><td>x</td></tr><tr><td><code>video_device_name</code></td><td>Video device name</td><td>x</td><td></td><td>x</td></tr><tr><td><code>on_schedule</code></td><td>On schedule</td><td>x</td><td>x</td><td></td></tr></tbody></table>

### Configuration

{% hint style="info" %}
More information on configuring apps can be found [↗ here](https://doc.eliona.io/collection/dokumentation/einstellungen/apps).
{% endhint %}

The Microsoft 365 app is configured by defining one or more authentication credentials. The following data is required for each configuration:

| Attributes        | Description                                                                                                                                                                                                       |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tenantId`        | Company ID or domain                                                                                                                                                                                              |
| `clientId`        | ClientID / Azure AD application ID                                                                                                                                                                                |
| `clientSecret`    | An "app password" (for app permissions)                                                                                                                                                                           |
| `username`        | Name of the delegated user (for delegated permissions)                                                                                                                                                            |
| `password`        | Delegated user password (for delegated permissions)                                                                                                                                                               |
| `forEliona`       | Indicates whether the configuration should be used for asset creation                                                                                                                                             |
| `forProxy`        | Indicates whether the configuration should be used for the app frontend and the proxy API                                                                                                                         |
| `enable`          | Flag to enable or disable fetching from this API                                                                                                                                                                  |
| `refreshInterval` | Interval in seconds for collecting data from the API                                                                                                                                                              |
| `requestTimeout`  | API query timeout in seconds                                                                                                                                                                                      |
| `assetFilter`     | Filter for asset creation, see the app's README for more details                                                                                                                                                  |
| `projectIDs`      | List of Eliona project IDs for which this device should collect data. For each project ID, all assets are automatically created in Eliona. The mapping to Eliona assets is stored as an asset mapping in the app. |

The configuration must contain either the client secret for app permissions or the user credentials for delegated permissions. Configuration is done via a corresponding JSON structure. As an example, the following JSON structure can be used to define an endpoint for app permissions:

```
{
  "clientId": "adasf8676a-example-client-id-asfd2867130",
  "clientSecret": "8nx-8Kelionathebestwfmbsdiurnc987vcu",
  "tenantId": "tenant-id",
  "username": "",
  "password": "",
  "enable": true,
  "refreshInterval": 60,
  "requestTimeout": 120,
  "assetFilter": [],
  "projectIDs": [
    "10"
  ]
}
```

Endpoints can be created in Eliona with this structure under `Apps > Kontakt.io > Settings` . To do this, select the endpoint /configs with the POST method.

## Required privileges

For the basic use case of meeting rooms and devices and their availability, the application needs the following application permissions:

* `Place.Read.All`
* `User.Read.All`
* `Calendars.Read`
