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

# SharePoint Connector

<Badge icon="arrow-left" color="gray">[Back to Search AI connectors list](/ai-for-service/searchai/content-sources#supported-connectors)</Badge>

Configure the SharePoint connector to make content managed in SharePoint searchable through Search AI.

| Specification              | Details                                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------------------ |
| Repository type            | Cloud                                                                                                  |
| Supported content          | All, Articles (.aspx), Pages, and files in .doc, .docx, .ppt, .pptx, .html, .xhtml, .txt, .pdf formats |
| RACL support               | Yes                                                                                                    |
| Content filtering          | Yes                                                                                                    |
| Auto permission resolution | Yes                                                                                                    |

<Note>Searching through attachments is not supported.</Note>

## Prerequisites

* Access to the [Azure Portal](https://portal.azure.com/#home) with permissions to register applications.
* A multi-tenant app registered in Azure Active Directory (see below).

## Authorization Support

Search AI supports two OAuth 2.0 authentication mechanisms for SharePoint:

* **Authorization Code Grant Type** — The app acts on behalf of the user using Delegated Permissions. Requires explicit user consent.
* **Client Credentials Grant Type** — The app acts as itself using Application Permissions. No user interaction required.

## Register a Multi-Tenant App in SharePoint

App registration establishes trust between Search AI and the Microsoft identity platform.

1. Log in to the [Azure Portal](https://portal.azure.com/#home) and go to **Azure Active Directory**.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/azure-home.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=a2ce9f34f7dbaa64407e37b213542fdc" alt="Azure Home" width="1600" height="726" data-path="ai-for-service/searchai/connectors/images/sharepoint/azure-home.png" />

2. Go to **App Registrations** under **Applications** and click **New Registration**.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/new-app-registration.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=a5d0eb2915884bdc0eb206b3039ae43b" alt="App Registration" width="1600" height="710" data-path="ai-for-service/searchai/connectors/images/sharepoint/new-app-registration.png" />

3. Enter the application name. Set the account type to **Accounts in any organization directory** (multi-tenant). Set the Redirect URL for your region and click **Register**.

   * JP Region: `https://jp-bots-idp.kore.ai/workflows/callback`
   * DE Region: `https://de-bots-idp.kore.ai/workflows/callback`
   * Production: `https://idp.kore.com/workflows/callback`

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/account-types.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=35e4c9df29ee0ff4f8cb1e69de621c48" alt="Account Types" width="1600" height="727" data-path="ai-for-service/searchai/connectors/images/sharepoint/account-types.png" />

4. Save the **Client ID** and **Tenant ID** from the **Overview** section.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/client-credentials.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=b7c7aded0aeae29379a0ffe1fca0b6aa" alt="Client Credentials" width="1600" height="743" data-path="ai-for-service/searchai/connectors/images/sharepoint/client-credentials.png" />

5. Go to **Certificates and Secrets** and [generate a client secret](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app#add-a-client-secret).

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/client-secret.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=1059e37be3b62a8fcb9c009f9ce2c5bb" alt="Client Credentials" width="1600" height="729" data-path="ai-for-service/searchai/connectors/images/sharepoint/client-secret.png" />

6. Enter a description, set the expiration to 24 months, and click **Add**.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/generate-secret.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=db35f36f2be6414077955c086389ead8" alt="Client Credentials" width="1600" height="743" data-path="ai-for-service/searchai/connectors/images/sharepoint/generate-secret.png" />

7. Save the client secret immediately — it cannot be viewed again after leaving the page.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/save-secret.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=93011b13d1cd955f383febd087cbf2de" alt="Client Credentials" width="1600" height="724" data-path="ai-for-service/searchai/connectors/images/sharepoint/save-secret.png" />

8. Go to **API Permissions** and click **Add a permission**.

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/api-permissions.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=9e869b77fb0c44c0add360cdd7f60747" alt="API Permissions" width="1600" height="728" data-path="ai-for-service/searchai/connectors/images/sharepoint/api-permissions.png" />

9. Add the following permissions under **Microsoft Graph**:

   **Delegated Permissions** (for Authorization Code Grant Type):

   * `User.ReadBasic.All`
   * `Group.Read.All`
   * `Directory.AccessAsUser.All`
   * `Files.Read`
   * `Files.Read.All`
   * `Sites.Read.All`
   * `Offline_access`
   * `GroupMember.Read.All` — required only if RACL is enabled
   * `Organization.Read.All` — required only if RACL is enabled

   <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/request-permissions.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=7bbfe3af89b3b557b43d62428b5984e8" alt="Request Permissions" width="1600" height="729" data-path="ai-for-service/searchai/connectors/images/sharepoint/request-permissions.png" />

   **Application Permissions** (for Client Credentials Grant Type):

   * `Sites.Selected`
   * `GroupMember.Read.All` — required only if RACL is enabled
   * `Organization.Read.All` — required only if RACL is enabled

10. Click **Grant Admin Consent** to apply the permissions.

    <img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/grant-permissions.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=754e82957b0c295a9261cf809ecf48fd" alt="Grant Permissions" width="1600" height="724" data-path="ai-for-service/searchai/connectors/images/sharepoint/grant-permissions.png" />

## Configure the SharePoint Connector in Search AI

1. Go to **Content > Connectors** and select **SharePoint**.
2. On the **Authorization** page, provide the following details:

| Field                  | Description                                       |
| ---------------------- | ------------------------------------------------- |
| **Name**               | Unique name for the connector                     |
| **Authorization Type** | OAuth 2.0                                         |
| **Grant Type**         | Authorization Code or Client Credentials          |
| **Client ID**          | Client ID from the Azure app registration         |
| **Client Secret**      | Client secret from the Azure app registration     |
| **Tenant ID**          | Directory (Tenant) ID from your Azure AD instance |
| **Content Type**       | All, Articles, or Files                           |

3. Click **Connect** to authenticate.

## Content Ingestion

After authentication, select the SharePoint sites to ingest content from.

<Note>Configuration steps vary depending on the grant type selected.</Note>

### Authorization Code Grant Type

1. Go to the **Configuration** section.
2. Under **Sync Specific Content**, click **Select Content**.
3. Choose the SharePoint sites to ingest content from.
4. Click **Save**.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/sitelist.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=8cb920bb7495e4ba4b7bb601f1406534" alt="Select Sites" width="945" height="852" data-path="ai-for-service/searchai/connectors/images/sharepoint/sitelist.png" />

### Client Credentials Grant Type

1. Go to the **Configuration** section.
2. Under **Sync Specific Content**, click **Configure**.
3. Enter one or more Site IDs. The Azure AD app must have access to all sites listed here.
4. Select the content type: **Articles** or **Files**.
5. Optionally apply filters to narrow the content ingested.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/site-filter.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=2c833db0ac35fb38bda7bb3c538cb317" alt="Select Sites" width="895" height="859" data-path="ai-for-service/searchai/connectors/images/sharepoint/site-filter.png" />

<Note>Only Articles or Files can be selected individually as content types. To ingest both, create a filter with two conditions joined by the OR operator:</Note>

> * Condition 1: Content Type = Articles
> * Condition 2: Content Type = Files

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/site-filter.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=2c833db0ac35fb38bda7bb3c538cb317" alt="Select Sites" width="895" height="859" data-path="ai-for-service/searchai/connectors/images/sharepoint/site-filter.png" />

## Sync Content

Click **Sync Now** to start ingestion immediately, or configure **Schedule Sync** in the **Configuration** page for automatic ingestion.

## Advanced Content Filtering

In addition to selecting sites, Search AI allows you to apply custom filtering rules to selectively ingest content. To configure filters, navigate to the Advanced Filter tab and define your rules using the following fields.

* Site — Select the site on which filtering is to be applied.
* Content Type — Select the type of content: All, Articles, or Files.

Use the following fields to set up conditions for each filtering rule.

* Parameter — The attribute of the content on which the filter condition is applied. Select from the dropdown or add a custom parameter using +Add. Ensure custom parameter names match exactly with the field names in SharePoint.
* Operator — Defines how the condition is evaluated (for example, Equals, Contains, Greater Than).
* Value — The value the parameter must meet according to the chosen operator.

<Note>Filter conditions are optional. If no conditions are defined, all content matching the selected Content Type from the chosen site is ingested.</Note>

**Filter Rule Behavior**

* Multiple rules — Content that satisfies any one of the defined rules is selected for ingestion (logical OR between rules).
* Multiple conditions within a rule — All conditions in a rule must be satisfied for the content to be selected (logical AND within a rule).

**Supported Parameters for Articles**

| Parameter         | Description                      | Supported Operators |
| ----------------- | -------------------------------- | ------------------- |
| `Article Id`      | Unique identifier of the article | Equals              |
| `Article Name`    | Name of the article              | Equals              |
| `Article Web URL` | Web URL of the article           | Equals              |
| `Article Title`   | Title of the article             | Equals              |

**Supported Parameters for Files**

When Content Type is set to Files, the following folder-related parameters are available in addition to the standard file parameters.

| Parameter    | Description                                   | Supported Operators |
| ------------ | --------------------------------------------- | ------------------- |
| `FolderPath` | Path of the folder within the SharePoint site | In                  |

Folder paths must be constructed in the following format: `/Folder Name/Sub Folder Name`

For example, to ingest files from a specific folder, set up a filter with **Content Type = Files**, **Parameter = FolderPath**, **Operator = In**, and **Value = /Documents/Reports**.

## Access Control

### Understanding Permissions in SharePoint

SharePoint permissions include site-level permissions and individual file permissions.

### Site-Level Permissions

SharePoint uses two membership group types:

* **Office 365 Groups** — Grant site access to members.
* **SharePoint Security Groups** — Control site access at three default permission levels: Site Visitors, Site Members, and Site Owners.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/racl/config-tab.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=079cf8ca6ce2b0c34f5084184365d564" alt="Office 365 Membership" width="1600" height="676" data-path="ai-for-service/searchai/connectors/images/sharepoint/racl/config-tab.png" />

Click **Members** to view the list of members and their roles.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/racl/members.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=951fb217bda983eeae93c24e88b0e5c2" alt="Office 365 Members" width="1600" height="715" data-path="ai-for-service/searchai/connectors/images/sharepoint/racl/members.png" />

Go to **Settings > Site Permissions** to view SharePoint Security Groups.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/racl/site-permissions.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=025481a66f88b393bf8c1cd1918feacf" alt="Site Permissions" width="1600" height="720" data-path="ai-for-service/searchai/connectors/images/sharepoint/racl/site-permissions.png" />

### How Search AI Handles Site Permissions

* **Office 365 Group** — A Permission Entity is created in Search AI. All users directly added to this group are automatically added to the Permission Entity. Email groups added here must be resolved manually using the [Permission Entity APIs](/ai-for-service/apis/searchai/permission-entity-apis).
* **SharePoint Security Groups** — Three Permission Entities are created (one per default permission level). Users in these groups must be added manually to their corresponding Permission Entities using the [Permission Entity APIs](/ai-for-service/apis/searchai/permission-entity-apis).

The `sourceACL` field contains four Permission Entities corresponding to the site permissions.

### File-Level Permissions

Site-level permissions apply to all files within that site. File owners can also share files with individual users, internally or externally, or with all domain or organization members.

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/racl/file-permissions.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=d66c5f0e1703a4dbd377c12d97661630" alt="File Permissions" width="1561" height="637" data-path="ai-for-service/searchai/connectors/images/sharepoint/racl/file-permissions.png" />

<img src="https://mintcdn.com/koreai/UwS79gPryFOfHx6d/ai-for-service/searchai/connectors/images/sharepoint/racl/domain-access.png?fit=max&auto=format&n=UwS79gPryFOfHx6d&q=85&s=6c251334da4f0661ed3eee7afe538f0f" alt="Domain Access" width="1036" height="780" data-path="ai-for-service/searchai/connectors/images/sharepoint/racl/domain-access.png" />

### How Search AI Handles File Permissions

* **Shared with a specific user** — The user is automatically added to the `sourceACL` field during ingestion.
* **Shared with a user group** — The group ID is used to create a Permission Entity that resolves individual users.
* **Shared with a specific domain** — The domain name is stored as a Permission Entity in `sourceACL`. Search AI compares user email domains during answer generation and grants access on a match.

## Related Topics

* [Access Control in Search AI](/ai-for-service/searchai/content-sources#role-based-access-control-racl)
* [Permission Entity APIs](/ai-for-service/apis/searchai/permission-entity-apis)
* [Content Sources](/ai-for-service/searchai/content-sources)
