> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voltai.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SharePoint

> Register an app in Microsoft Entra ID so Voltai can read SharePoint sites and files via Microsoft Graph.

**You'll create:** an app registration in Microsoft Entra ID (formerly Azure Active Directory).

**We'll be able to read:** sites and files the connecting user can already open in Microsoft 365, using delegated Microsoft Graph permissions.

## Steps

<Steps>
  <Step title="Register the app">
    Go to [entra.microsoft.com](https://entra.microsoft.com/) and sign in as an Entra admin.

    Navigate to **Applications → App registrations → New registration** and name it (for example, "Voltai SharePoint").

    For **Supported account types**, pick **Accounts in this organizational directory only** (single tenant) unless you need to support guest tenants.

    Under **Redirect URI**, choose the **Web** platform and paste the [redirect URI](/connectors/introduction#redirect-uri-used-by-every-connector). Click **Register**.

    <Warning>
      The platform must be **Web**, not "Single-page application" or "Mobile and desktop". Anything else produces `AADSTS500113: No reply address is registered for the application.`
    </Warning>
  </Step>

  <Step title="Add Microsoft Graph delegated permissions">
    Open **API permissions → Add a permission → Microsoft Graph → Delegated permissions**, and add:

    * `Sites.Read.All`
    * `Files.Read.All`
    * `offline_access`

    Then click **Grant admin consent for \<your tenant>** so each user does not have to consent individually.
  </Step>

  <Step title="Create a client secret">
    Open **Certificates & secrets → Client secrets → New client secret**.

    Pick a reasonable expiry (12–24 months) and copy the **Value** immediately — Entra shows it only once.
  </Step>

  <Step title="Copy the IDs">
    On the **Overview** page, copy the **Application (client) ID** and the **Directory (tenant) ID**.
  </Step>
</Steps>

## Send us

| Value           | Where to find it                       |
| --------------- | -------------------------------------- |
| `client_id`     | Overview → **Application (client) ID** |
| `client_secret` | The secret **Value** you copied        |
| `tenant_id`     | Overview → **Directory (tenant) ID**   |

`tenant_id` is optional but strongly recommended. Without it we fall back to `common`, which only works if you allowed multi-tenant accounts.

## Things to know

* These are **delegated** permissions. Despite the `.All` suffix, they never exceed what the signed-in user can already open — see [Security and architecture](/connectors/security#scopes-we-request-per-connector).
* Client secrets always expire in Entra ID. Set a calendar reminder and send us a replacement before the old one lapses, otherwise every user's connection fails at the same moment.
