# Microsoft 365

Name des delegierten Benutzers (bei delegierten Rechten)

This app connects rooms and other resources with BuildingPro Suites and provides information about their booking status. The most important capability of the app, however, is the ability to use the entire Graph API directly in BuildingPro Suites by using the authentication proxy functionality.

### Installation

The Microsoft 365 App is installed via the BuildingPro Suites App Store.

### 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.
* Equipment: Any piece of equipment that can be booked. Like a room, but generalized.

The following attributes are defined:

<table><thead><tr><th>Attribute</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>Building</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 accessibility</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>

#### Konfiguration

{% hint style="info" %}
More information on app configuration 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:

| Attribute         | Description                                                                                                                                                                                                                                        |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tenantId`        | ID or domain of the company                                                                                                                                                                                                                        |
| `clientId`        | ClientID / Azure AD application ID                                                                                                                                                                                                                 |
| `clientSecret`    | A "client secret" (for app permissions)                                                                                                                                                                                                            |
| `username`        | Name of the delegated user (for delegated rights)                                                                                                                                                                                                  |
| `password`        | Password of the delegated user (for delegated permissions)                                                                                                                                                                                         |
| `forEliona`       | Specifies whether the configuration should be used for asset creation                                                                                                                                                                              |
| `forProxy`        | Specifies whether the configuration should be used for the app frontend and the proxy API                                                                                                                                                          |
| `enable`          | Flag to activate or deactivate the 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, more details can be found in the app's README                                                                                                                                                                           |
| `tenantIDs`       | List of BuildingPro Suites tenant IDs for which this device should collect data. All assets are automatically created in BuildingPro Suites for each tenant ID. The mapping to BuildingPro Suites 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. The 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:

\[code here]

Endpoints can be created with this structure in BuildingPro Suites under `Apps > Kontakt.io > Settings`. Select the /configs endpoint with the POST method.

### Required Privileges

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

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