public static EmbedConfig getEmbedConfig()

in Java/Embed for your customers/AppOwnsData/src/main/java/com/embedsample/appownsdata/services/PowerBIService.java [144:224]


	public static EmbedConfig getEmbedConfig(String accessToken, String workspaceId, List<String> reportIds) throws JsonMappingException, JsonProcessingException {

		// Note: This method is an example and is not consumed in this sample app

		if (reportIds == null || reportIds.isEmpty()) {
			throw new RuntimeException("Empty Report Ids");
		}
		if (workspaceId == null || workspaceId.isEmpty()) {
			throw new RuntimeException("Empty Workspace Id");
		}
		
		// Create embedding configuration object
		EmbedConfig reportEmbedConfig = new EmbedConfig();
		reportEmbedConfig.embedReports = new ArrayList<ReportConfig>();
		
		// Create a list of DatasetIds
		List<String> datasetIds = new ArrayList<String>();
		
		for (String reportId : reportIds) {
			
			// Get Report In Group API: https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/reports/{reportId}
			StringBuilder urlStringBuilder = new StringBuilder("https://api.powerbi.com/v1.0/myorg/groups/"); 
			urlStringBuilder.append(workspaceId);
			urlStringBuilder.append("/reports/");
			urlStringBuilder.append(reportId);
			
			// Request header
			HttpHeaders reqHeader = new HttpHeaders();
			reqHeader.put("Content-Type", Arrays.asList("application/json"));
			reqHeader.put("Authorization", Arrays.asList("Bearer " + accessToken));
			
			// HTTP entity object - holds header and body
			HttpEntity<String> reqEntity = new HttpEntity<> (reqHeader);
			
			// REST API URL to get report details
			String endPointUrl = urlStringBuilder.toString();
			
			// Rest API get report's details
			RestTemplate getReportRestTemplate = new RestTemplate();
			ResponseEntity<String> response = getReportRestTemplate.exchange(endPointUrl, HttpMethod.GET, reqEntity, String.class);
			
			HttpHeaders responseHeader = response.getHeaders();
			String responseBody = response.getBody();
			
			// Create Object Mapper to convert String into Object
			ObjectMapper mapper = new ObjectMapper();
			mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
			
			// Convert responseBody string into ReportConfig class object
			ReportConfig embedReport = mapper.readValue(responseBody, ReportConfig.class);
			
			// Add embed config to client response object
			reportEmbedConfig.embedReports.add(embedReport);
			
			if (Config.DEBUG) {
				
				// Get the request Id
				List<String> reqIdList = responseHeader.get("RequestId");
				
				// Log progress
				logger.info("Retrieved report details");
							
				// Log Request Id
				if (reqIdList != null && !reqIdList.isEmpty()) {
					for (String reqId: reqIdList) {
						logger.info("Request Id: {}", reqId);
					}
				}
			}
			
			// Parse JSON and get Report details
			JSONObject responseObj = new JSONObject(responseBody);
			
			// Add datasetId in the datasetIds
			datasetIds.add(responseObj.getString("datasetId"));
		}
		
		// Get embed token
		reportEmbedConfig.embedToken = PowerBIService.getEmbedToken(accessToken, reportIds, datasetIds);
		return reportEmbedConfig;
	}