Forum Discussion

prathmeshpawar's avatar
prathmeshpawar
Frequent Visitor
1 year ago
Solved

Workload Development Toolkit CRUD APIs

Hi there,

I am trying to generate Authentication bearer token on the fly, to create Datawarehouse via sample workload using the POST APIs available for it. How to: Create warehouses with case-insensitive (CI) collation - Microsoft Fabric | Microsoft Learn

Just FYI: I was able to do so  by hard coding my bearer token.

Workload doc for the CRUD APIs auth setup is Authentication setup - Microsoft Fabric | Microsoft Learn

Please help me with some alternative.

 

 

 

 

import { PublicClientApplication, AuthenticationResult } from "@azure/msal-browser";

/// MSAL configuration
const msalConfig = {
auth: {
clientId: "************************", // Replace with your client ID
authority: "https://login.microsoftonline.com/***************", // Replace with your tenant ID
redirectUri: "http://localhost:60006/close", // Replace with your redirect URI
},
};

const msalInstance = new PublicClientApplication(msalConfig);

async function initializeMsal() {
await msalInstance.initialize();
}

async function acquireToken(): Promise<string> {
const request = {
scopes: ["https:api://localdevinstance/******************************/Org.WorkloadSample/FabricWorkloadControl"], // Replace with your API scopes
};

try {
const response: AuthenticationResult = await msalInstance.acquireTokenSilent(request);
return response.accessToken;
} catch (error) {
const response: AuthenticationResult = await msalInstance.acquireTokenPopup(request);
return response.accessToken;
}
}

 

 

 

5 Replies

    • prathmeshpawar's avatar
      prathmeshpawar
      Frequent Visitor

      Hi v-priyankata, consider the following scenario in Workload Development Toolkit

      I am a end user, I logged in to Fabric and opened my worload.
      Now in the above snippet I am creating Data warehouse to store the result of the operations performed in my workload. To provision DWH, I need an authentication bearer token, can it be generated by the account through which I logged in to Fabric, or else is it possible to generate PopUp Signin for authetication token generation?

      below I am attaching the file of sample workload editor
      please refer to handleCreateWarehouse function

      const handleCreateWarehouse = async () => {
        console.log(sampleItem?.workspaceId);
        const workspaceID = sampleItem?.workspaceId;
        const warehouseName = 'LoadFastWarehouse';
        const warehouseDescription = 'LoadFast Warehouse for testing';
      
        const payload = {
          type: 'Warehouse',
          displayName: warehouseName,
          description: warehouseDescription,
          creationPayload: {
            defaultCollation: 'Latin1_General_100_CI_AS_KS_WS_SC_UTF8'
          }
        };
      
        try {
          const bearerToken = await acquireToken();
          const response = await fetch(
            `https://api.fabric.microsoft.com/v1/workspaces/${workspaceID}/items`,
            {
              method: 'POST',
              headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${bearerToken}`
              },
              body: JSON.stringify(payload)
            }
          );
      
          if (!response.ok) {
            throw new Error('Network response was not ok');
          }
      
          const data = await response.json();
          console.log('Warehouse created successfully:', data);
        } catch (error) {
          console.error('Error creating warehouse:', error);
        }
      };

       

  • v-priyankata's avatar
    v-priyankata
    Community Support

    Hi prathmeshpawar 

    May I ask if you have resolved this issue? If so, please mark the helpful reply and accept it as the solution. This will be helpful for other community members who have similar problems to solve it faster.

    Thank you.

  • v-priyankata's avatar
    v-priyankata
    Community Support

    Hi prathmeshpawar 
    I wanted to check if you had the opportunity to review the information provided. Please feel free to contact us if you have any further questions. If my response has addressed your query, please accept it as a solution and give a 'Kudos' so other members can easily find it.
    Thank you.