<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Java Springboot | Download powerbi pbix report file using restAPI in Developer</title>
    <link>https://community.fabric.microsoft.com/t5/Developer/Java-Springboot-Download-powerbi-pbix-report-file-using-restAPI/m-p/4357661#M58958</link>
    <description>&lt;P&gt;You requested a PBIX but then are polling the status for the "Export to File"&amp;nbsp; calls.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/power-bi/reports/export-report-in-group" target="_blank"&gt;Reports - Export Report In Group - REST API (Power BI Power BI REST APIs) | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 09 Jan 2025 17:44:51 GMT</pubDate>
    <dc:creator>lbendlin</dc:creator>
    <dc:date>2025-01-09T17:44:51Z</dc:date>
    <item>
      <title>Java Springboot | Download powerbi pbix report file using restAPI</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Java-Springboot-Download-powerbi-pbix-report-file-using-restAPI/m-p/4357481#M58955</link>
      <description>&lt;DIV&gt;I need help on how to download the pbix report file from PowerBI using restAPI call in java springboot. Please find the code below that I am trying to achieve the same.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;****restcontroller***&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;@PostMapping(value = "/powerbi/download/{id}")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; public ResponseEntity&amp;lt;byte[]&amp;gt; downloadPowerBIReport(@PathVariable("id") String reportId, @RequestParam String reportName) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//groupId and accessToken taken from global variables&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return powerBIService.exportPowerBIReport( reportId,&amp;nbsp; groupId,&amp;nbsp; reportName, accessToken);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception ex) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .body(ex.getMessage().getBytes());&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;****service***&lt;/DIV&gt;&lt;DIV&gt;public ResponseEntity&amp;lt;byte[]&amp;gt; exportPowerBIReport(String reportId, String groupId, String reportName,String accessToken) throws Exception {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String powerbiGroupUrl="&lt;A href="https://api.powerbi.com/v1.0/myorg/groups" target="_blank" rel="noopener"&gt;https://api.powerbi.com/v1.0/myorg/groups&lt;/A&gt;";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String exportUrl = String.format("%s/%s/reports/%s/Export", powerbiGroupUrl, groupId, reportId);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String body = "{\"format\": \"PBIX\"}";&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpEntity&amp;lt;String&amp;gt; entity = new HttpEntity&amp;lt;&amp;gt;(body,createHeaders());&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ResponseEntity&amp;lt;JsonNode&amp;gt; response = restTemplate.exchange(exportUrl, HttpMethod.POST, entity, JsonNode.class); //execution breaks here&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (response.getStatusCode() == HttpStatus.ACCEPTED) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Step 2: Poll for export status&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String exportId = response.getBody().get("id").asText();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String statusUrl = String.format("%s/%s/reports/%s/exports/%s", powerbiGroupUrl, groupId, reportId, exportId);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Poll until the export is complete&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ResponseEntity&amp;lt;JsonNode&amp;gt; statusResponse = restTemplate.exchange(statusUrl, HttpMethod.GET, entity, JsonNode.class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String status = statusResponse.getBody().get("status").asText();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ("Succeeded".equalsIgnoreCase(status)) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Step 3: Download the file&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String fileUrl = statusResponse.getBody().get("resourceLocation").asText();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return downloadFile(fileUrl, accessToken);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if ("Failed".equalsIgnoreCase(status)) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException("Export failed. Please try again.");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Wait before polling again&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TimeUnit.SECONDS.sleep(5);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException("Failed to initiate export. Status: " + response.getStatusCode());&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; private ResponseEntity&amp;lt;byte[]&amp;gt; downloadFile(String fileUrl, String reportName, String accessToken) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpHeaders headers = new HttpHeaders();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; headers.set("Authorization", "Bearer " + accessToken);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpEntity&amp;lt;String&amp;gt; entity = new HttpEntity&amp;lt;&amp;gt;(headers);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ResponseEntity&amp;lt;byte[]&amp;gt; fileResponse = restTemplate.exchange(fileUrl, HttpMethod.GET, entity, byte[].class);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (fileResponse.getStatusCode() == HttpStatus.OK) {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpHeaders downloadHeaders = new HttpHeaders();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; downloadHeaders.set("Content-Disposition", "attachment; filename="+reportName+".pbix");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; downloadHeaders.set("Content-Type", "application/octet-stream");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new ResponseEntity&amp;lt;&amp;gt;(fileResponse.getBody(), downloadHeaders, HttpStatus.OK);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException("Failed to download PBIX file. Status: " + fileResponse.getStatusCode());&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The error that I am getting&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;404 Not Found: "{&amp;lt;EOL&amp;gt;&amp;lt;EOL&amp;gt; "error":{&amp;lt;EOL&amp;gt;&amp;lt;EOL&amp;gt; "code":"","message":"No HTTP resource was found that matches the request URI '&lt;A href="https://wabi-us-north-central-g-primary-redirect.analysis.windows.net/v1.0/myorg/groups/6065e0ed-eb7d-4327-b8cb-849728ef32d1/reports/c364b8aa-b340-4327-b2e2-aeae8cc5957a/Export" target="_blank" rel="noopener"&gt;https://wabi-us-north-central-g-primary-redirect.analysis.windows.net/v1.0/myorg/groups/6065e0ed-eb7d-4327-b8cb-849728ef32d1/reports/c364b8aa-b340-4327-b2e2-aeae8cc5957a/Export&lt;/A&gt;'."&amp;lt;EOL&amp;gt;&amp;lt;EOL&amp;gt; }&amp;lt;EOL&amp;gt;&amp;lt;EOL&amp;gt;}"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Referred this @https://learn.microsoft.com/en-us/rest/api/power-bi/reports/export-report-in-group?source=docs and tried different ways to resolve this but no success yet. One thing, I am not understanding here is that why&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;A href="https://api.powerbi.com" target="_blank" rel="noopener"&gt;https://api.powerbi.com&lt;/A&gt; is getting replaced with &lt;A href="https://wabi-us-north-central-g-primary-redirect.analysis.windows.net" target="_blank" rel="noopener"&gt;https://wabi-us-north-central-g-primary-redirect.analysis.windows.net&lt;/A&gt; when i run the api.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Please help me in resolving this. Also, please note that api endpoint '&lt;SPAN&gt;/powerbi/download/{id}&lt;/SPAN&gt;', it should automatically download the report in pbix format. I want explicitly PBIX file to be exported, no other format.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks in advance for help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 09 Jan 2025 16:07:56 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Java-Springboot-Download-powerbi-pbix-report-file-using-restAPI/m-p/4357481#M58955</guid>
      <dc:creator>vijayburnwal</dc:creator>
      <dc:date>2025-01-09T16:07:56Z</dc:date>
    </item>
    <item>
      <title>Re: Java Springboot | Download powerbi pbix report file using restAPI</title>
      <link>https://community.fabric.microsoft.com/t5/Developer/Java-Springboot-Download-powerbi-pbix-report-file-using-restAPI/m-p/4357661#M58958</link>
      <description>&lt;P&gt;You requested a PBIX but then are polling the status for the "Export to File"&amp;nbsp; calls.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/power-bi/reports/export-report-in-group" target="_blank"&gt;Reports - Export Report In Group - REST API (Power BI Power BI REST APIs) | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jan 2025 17:44:51 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Developer/Java-Springboot-Download-powerbi-pbix-report-file-using-restAPI/m-p/4357661#M58958</guid>
      <dc:creator>lbendlin</dc:creator>
      <dc:date>2025-01-09T17:44:51Z</dc:date>
    </item>
  </channel>
</rss>

