En el mundo de la gestión de datos y el análisis, la capacidad de ejecutar pipelines por parte de los usuarios finales de manera dinámica y bajo demanda, a veces, es imperativo. La API de Microsoft Fabric proporciona la posibilidad de lograr esto, permitiendo a los desarrolladores integrar la ejecución de pipelines directamente en sus aplicaciones. Para todos aquellos que estén trasteando con Microsoft Fabric aquí les va, espero, una pequeña ayuda. 🚀🚀
Paso 1: Registrar una aplicación en el Centro de Administración Microsoft Entra
Paso 2: Copiar el Client ID
Paso 3: Montar el código de prueba, que te dejo a continuación (Está realizado en C#)
// Parámetros de configuración
string ClientId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
string Authority = "https://login.microsoftonline.com/organizations";
string RedirectUri = "http://localhost";
// Scopes
string[] scopes = new string[] {
"https://api.fabric.microsoft.com/Workspace.ReadWrite.All",
"https://api.fabric.microsoft.com/Item.ReadWrite.All",
"https://api.fabric.microsoft.com/Item.Execute.All",
"https://api.fabric.microsoft.com/Notebook.ReadWrite.All",
"https://api.fabric.microsoft.com/Notebook.Execute.All" };
try
{
// Crear instancia
var PublicClientAppBuilder = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(Authority)
.WithRedirectUri(RedirectUri);
var PublicClientApp = PublicClientAppBuilder.Build();
// Intentamos adquirir un token
AuthenticationResult result = await PublicClientApp.AcquireTokenInteractive(scopes)
.ExecuteAsync()
.ConfigureAwait(false);
// Imprimimos el token de acceso, simplemente para ver que todo está correcto
Console.WriteLine("Token de acceso: " + result.AccessToken);
// Crear cliente HTTP
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
string baseUrl = "https://api.fabric.microsoft.com/v1/";
// Definir el objeto que se enviará en el cuerpo de la solicitud POST (si es necesario)
string postData = "{\"Key1\":\"Value1\",\"Key2\":\"Value2\"}"; // Ejemplo de cuerpo de la solicitud
// Realizar la llamada a la API para enviar una solicitud POST
var response = await client.PostAsync(baseUrl + "workspaces/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/items/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/jobs/instances?jobType=pipeline",
new StringContent(postData, System.Text.Encoding.UTF8, "application/json"));
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
catch (MsalException ex)
{
Console.WriteLine($"Error al adquirir el token: {ex.Message}");
}
// Para que no se cierre la consola y se pueda comprobar la impresión del Token
Console.WriteLine("Presiona cualquier tecla para salir...");
Console.ReadKey();
Recuerda cambiar el Workspace ID y el Item ID del Pipeline. Espero que te sirva.