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

# SharePoint

Para integrar con SharePoint, necesitas **crear una aplicación de Microsof Entra** que actúa como un puente entre Zylon ↔ SharePoint y **configurar Zylon** para usar esta aplicación de Microsoft.

Esta guía te guía a través de la integración de SharePoint con Zylon usando el flujo OAuth 2.0 de Microsoft. Esto permite a Zylon acceder de forma segura a tus recursos de SharePoint usando permisos delegados.

## Crear una aplicación de Microsoft Entra

Primero necesitas una aplicación de Microsoft Entra. Recomendamos usar una cuenta no personal para crear esto desde el panel de Microsoft Entra. Esta cuenta no necesita tener acceso a ningún elemento en SharePoint pero tiene los permisos correctos para configurar la aplicación que servirá como un puente entre Zylon y SharePoint.

1. Ve a [https://entra.microsoft.com](https://entra.microsoft.com/).

En la barra lateral izquierda haz clic en `Applications` → `App Registrations` → `New Registration`

<img src="https://mintcdn.com/zylon/fjTiqvTg5eiWUGXr/images/operator-manual/knowledge-base/sharepoint-images/imagen.png?fit=max&auto=format&n=fjTiqvTg5eiWUGXr&q=85&s=886f48ef78891c43a0789e743b671d65" alt="imagen.png" width="3020" height="1590" data-path="images/operator-manual/knowledge-base/sharepoint-images/imagen.png" />

2. Proporciona un nombre significativo para la Aplicación.
3. En Tipos de cuenta admitidos elige `Accounts in this organizational directory only`
4. Bajo `Redirect URI` → Selecciona `Web` y agrega la siguiente URL de redirección

```
https://{your-zylon-instance}.com/api/app/integration/sharepoint/callback
```

1. Haz clic en `Register`

<img src="https://mintcdn.com/zylon/AAEt1MHLqi0nuOjf/images/operator-manual/knowledge-base/sharepoint-images/Screenshot_2025-04-07_at_11.23.17.png?fit=max&auto=format&n=AAEt1MHLqi0nuOjf&q=85&s=7593f512ac814cc4ed5e6ac753ddff0d" alt="Screenshot 2025-04-07 at 11.23.17.png" width="1917" height="570" data-path="images/operator-manual/knowledge-base/sharepoint-images/Screenshot_2025-04-07_at_11.23.17.png" />

2. Haz clic en `Redirect URIs`

<img src="https://mintcdn.com/zylon/fjTiqvTg5eiWUGXr/images/operator-manual/knowledge-base/sharepoint-images/image.png?fit=max&auto=format&n=fjTiqvTg5eiWUGXr&q=85&s=2c9a5ac2f25081a237305363a0d4298b" alt="image.png" width="2330" height="1120" data-path="images/operator-manual/knowledge-base/sharepoint-images/image.png" />

3. Haz clic en `Add a platform`

<img src="https://mintcdn.com/zylon/bIRZmoPdFWuTOEQj/images/operator-manual/knowledge-base/sharepoint-images/image_1.png?fit=max&auto=format&n=bIRZmoPdFWuTOEQj&q=85&s=f4980275df71017fe156503b60421179" alt="image.png" width="1732" height="960" data-path="images/operator-manual/knowledge-base/sharepoint-images/image_1.png" />

4. Haz clic en `Single-Page application`

<img src="https://mintcdn.com/zylon/bIRZmoPdFWuTOEQj/images/operator-manual/knowledge-base/sharepoint-images/image_2.png?fit=max&auto=format&n=bIRZmoPdFWuTOEQj&q=85&s=2502cd19f344baf3d5da86deebaae091" alt="image.png" width="2278" height="1482" data-path="images/operator-manual/knowledge-base/sharepoint-images/image_2.png" />

5. Agrega la siguiente URL y haz clic en `Configure`:

```
https://{your-zylon-instance}.com
```

6. Ahora que la aplicación está creada, anota el `Application (client) Id` y `Directory (tenant) id` de la página `Overview`.

<img src="https://mintcdn.com/zylon/bIRZmoPdFWuTOEQj/images/operator-manual/knowledge-base/sharepoint-images/image_3.png?fit=max&auto=format&n=bIRZmoPdFWuTOEQj&q=85&s=041b8705687b10a18580592c7769b9ed" alt="image.png" width="2048" height="1249" data-path="images/operator-manual/knowledge-base/sharepoint-images/image_3.png" />

7. Creemos un secreto de aplicación

Navega a `Certificates & secrets` → Haz clic en `+ New client secret` → Agrega una descripción y fecha de expiración (si agregas una fecha que viene pronto, debes ser consciente de que tu integración dejará de funcionar cuando el secreto expire)

Copia el `value` del Client Secret. El valor del secreto no será accesible más tarde.

<img src="https://mintcdn.com/zylon/bIRZmoPdFWuTOEQj/images/operator-manual/knowledge-base/sharepoint-images/imagen_1.png?fit=max&auto=format&n=bIRZmoPdFWuTOEQj&q=85&s=57483ffd893fa152d919126d4c6f0a42" alt="imagen.png" width="2462" height="1502" data-path="images/operator-manual/knowledge-base/sharepoint-images/imagen_1.png" />

Ahora tenemos que configurar los permisos de API que tendrá nuestra aplicación cliente.

Navega a `API Permissions` → `+ Add a permission` → `Microsoft Graph` → `Delegated permissions` e incluye los permisos a continuación y luego haz clic en `Add permissions`

* `Files.Read.All`
* `OpenId permissions.offline_access`
* `SharePointTenantSettings.Read.All`
* `Sites.Read.All`
* `User.Read`

Navega a `API Permissions` → `+ Add a permission` → `SharePoint` → `Delegated permissions` e incluye los permisos a continuación y luego haz clic en `Add permissions`

* `AllSites.Read`
* `EnterpriseResource.Read`
* `MyFiles.Read`
* `Project.Read`
* `Sites.Search.All`
* `User.Read.All`

Después de agregar ambas listas de permisos, haz clic en `Grant admin consent for [Your Org]` y confirma haciendo clic en `Yes`

<img src="https://mintcdn.com/zylon/bIRZmoPdFWuTOEQj/images/operator-manual/knowledge-base/sharepoint-images/image_4.png?fit=max&auto=format&n=bIRZmoPdFWuTOEQj&q=85&s=e57ffd10d306ef13e02e7cbbec8a0a62" alt="image.png" width="1900" height="1298" data-path="images/operator-manual/knowledge-base/sharepoint-images/image_4.png" />

## Configurar Zylon con tu aplicación de Azure AD

Con los valores que hemos adquirido en los pasos anteriores, editaremos el archivo de configuración de Zylon ubicado en `/etc/zylon/zylon-conf.yaml`

Agrega el siguiente fragmento al final del archivo

```bash theme={null}
integration:
  sharepoint:
    enabled: true
    clientId: "" //Del paso 10 - Application client Id
    clientSecret: "" //Del paso 11 - Secret value
    redirectUri: "" //Del paso 4
    domain: "" //Tu dominio de sharepoint. ej: https://zylonai.sharepoint.com
    tenantId: "" //Del paso 10 - Directory tenant Id
    entrySite: "" //Opcional: URL del sitio de SharePoint por defecto
    entryList: "" //Opcional: Nombre de la lista por defecto (ej: "Documents")
    entryFolder: "" //Opcional: Nombre de la carpeta por defecto
```

Y completa las propiedades con los valores generados previamente:

* clientId → valor generado en el paso 10
* clientSecret → valor generado en el paso 11
* redirectUri → mismo valor que en el paso 4
* domain → Tu URL de SharePoint
* tenantId → mismo valor que en el paso 10
* entrySite → (Opcional) URL del sitio de SharePoint por defecto. Ver sección [Configurar Carpeta de Apertura por Defecto](#configurar-carpeta-de-apertura-por-defecto) más abajo
* entryList → (Opcional) Nombre de la lista por defecto, ej: "Documents". Ver sección [Configurar Carpeta de Apertura por Defecto](#configurar-carpeta-de-apertura-por-defecto) más abajo
* entryFolder → (Opcional) Nombre de la carpeta por defecto. Ver sección [Configurar Carpeta de Apertura por Defecto](#configurar-carpeta-de-apertura-por-defecto) más abajo

Guarda y cierra el archivo `/etc/zylon/zylon-conf.yaml`

Finalmente, ejecuta el siguiente comando para reiniciar Zylon y actualizar la configuración

```bash theme={null}
sudo zylon-cli sync
```

¡Todo está listo 🎉

## Configurar Carpeta de Apertura por Defecto

Puedes configurar una carpeta de apertura por defecto para la integración de SharePoint. Esto permite que la integración se abra directamente en una carpeta específica cuando los usuarios acceden a SharePoint a través de Zylon, mejorando la experiencia del usuario al omitir pasos de navegación.

Los tres campos opcionales controlan el punto de entrada para la integración:

* `entrySite`: La URL absoluta del sitio de SharePoint (funciona tanto para SharePoint como para OneDrive)
* `entryList`: El nombre de la lista dentro del sitio (ej: "Documents" es el predeterminado para SharePoint)
* `entryFolder`: El nombre de la carpeta dentro de la lista

**Importante:** Debes usar rutas absolutas de SharePoint para el campo `entrySite`, incluso para OneDrive. El formato de la ruta debe ser como:

```
https://example-my.sharepoint.com/personal/user_example_onmicrosoft_com
```

### Ejemplo de Configuración

Si deseas que la integración se abra por defecto en la carpeta "Defense and Security" en la lista Documents para el usuario `user_example_onmicrosoft_com`, configurarías:

```bash theme={null}
entrySite: "https://example-my.sharepoint.com/personal/user_example_onmicrosoft_com"
entryList: "Documents" //Predeterminado en SharePoint
entryFolder: "Defense and Security"
```

Esta configuración hará que la integración se abra directamente en la carpeta "Defense and Security" cuando los usuarios accedan a SharePoint a través de Zylon.

**Nota:** Los tres campos son opcionales. Si no se configuran o se dejan vacíos, serán ignorados y la integración usará el comportamiento predeterminado (abriendo en el nivel raíz).

## Solución de Problemas

### Intenté cargar archivos a la base de conocimiento pero el botón de SharePoint está deshabilitado

Limpia la caché del navegador e intenta de nuevo.

### Cuando hago clic en `Upload files -> From SharePoint` el inicio de sesión no funciona

* Verifica que el `clientId` `secretId` estén copiados y pegados correctamente en el archivo de configuración de Zylon
* Verifica que `redirectUri` sea el mismo que en el paso 4 y que tu dominio de sharepoint sea correcto
* Verifica que el `tenantId` que se está usando coincida con el de la página `Overview` de tu aplicación en Azure AD
