public static EmbedToken getEmbedToken()

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


	public static EmbedToken getEmbedToken(String accessToken, String reportId, List<String> datasetIds, String... targetWorkspaceIds) throws JsonMappingException, JsonProcessingException {
		
		// Embed Token - Generate Token REST API
		final String uri = "https://api.powerbi.com/v1.0/myorg/GenerateToken";
		
		RestTemplate restTemplate = new RestTemplate();
		
		// Create request header
		HttpHeaders headers = new HttpHeaders();
		headers.put("Content-Type", Arrays.asList("application/json"));
		headers.put("Authorization", Arrays.asList("Bearer " + accessToken));
		
		// Add dataset id in body
		JSONArray jsonDatasets = new JSONArray();
		for (String datasetId : datasetIds) {
			jsonDatasets.put(new JSONObject().put("id", datasetId));
		}
		
		// Add report id in body
		JSONArray jsonReports = new JSONArray();
		jsonReports.put(new JSONObject().put("id", reportId));
		
		// Add target workspace id in body
		JSONArray jsonWorkspaces = new JSONArray();
		for (String targetWorkspaceId: targetWorkspaceIds) {
			jsonWorkspaces.put(new JSONObject().put("id", targetWorkspaceId));
		}
		
		// Request body
		JSONObject requestBody = new JSONObject();
		requestBody.put("datasets", jsonDatasets);
		requestBody.put("reports", jsonReports);
		requestBody.put("targetWorkspaces", jsonWorkspaces);
		
		// Add (body, header) to HTTP entity
		HttpEntity<String> httpEntity = new HttpEntity<> (requestBody.toString(), headers);
		
		// Call the API
		ResponseEntity<String> response = restTemplate.postForEntity(uri, httpEntity, 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 EmbedToken class object
		EmbedToken embedToken = mapper.readValue(responseBody, EmbedToken.class);

		if (Config.DEBUG) {
			
			// Get the request Id
			List<String> reqIdList = responseHeader.get("RequestId");
			
			// Log progress
			logger.info("Retrieved Embed token\nEmbed Token Id: {}", embedToken.tokenId);
			
			// Log Request Id
			if (reqIdList != null && !reqIdList.isEmpty()) {
				for (String reqId: reqIdList) {
					logger.info("Request Id: {}", reqId);
				}
			}
		}
		return embedToken;
	}