Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
prathmeshpawar
Regular Visitor

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;
}
}

 

 

 

1 ACCEPTED SOLUTION
v-priyankata
Community Support
Community Support

Hi @prathmeshpawar,
Hope your doing good,
The similar issue faced by someone. You can please go through this accepted solution : Solved: Re: Workload Development Toolkit CRUD APIs - Microsoft Fabric Community

Hope this might helps you to solve the problem.
If this answers your question, please Accept it as a solution and give it a 'Kudos' so others can find it easily.

Thank you.

Priyanka

View solution in original post

5 REPLIES 5
v-priyankata
Community Support
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.

v-priyankata
Community Support
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
Community Support
Community Support

Hi @prathmeshpawar,
Hope your doing good,
The similar issue faced by someone. You can please go through this accepted solution : Solved: Re: Workload Development Toolkit CRUD APIs - Microsoft Fabric Community

Hope this might helps you to solve the problem.
If this answers your question, please Accept it as a solution and give it a 'Kudos' so others can find it easily.

Thank you.

Priyanka

v-priyankata
Community Support
Community Support

Hi @prathmeshpawar,

One of the method is to use OAuth 2.0 Client Credentials Flow rather than hardcoding the bearer token. With the use of a client ID, secret, and tenant ID, you can now create tokens dynamically without the need for human interaction.
Plesae refer below document it may help you on this.
OAuth 2.0 client credentials flow on the Microsoft identity platform - Microsoft identity platform |...

Thank you.

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);
  }
};

 

Helpful resources

Announcements
MarchFBCvideo - carousel

Fabric Monthly Update - March 2025

Check out the March 2025 Fabric update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

Find out what's new and trending in the Fabric community.

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082