diff --git a/pbiapi/pbiapi.py b/pbiapi/pbiapi.py index 3a076b6..9afe6b1 100644 --- a/pbiapi/pbiapi.py +++ b/pbiapi/pbiapi.py @@ -1,4 +1,5 @@ import datetime +import json import logging import os from typing import Callable, Dict, List, NoReturn, Union @@ -409,3 +410,17 @@ def get_workspace_and_dataset_id(self, workspace_name: str, dataset_name: str) - dataset_id = self.find_entity_id_by_name(datasets, dataset_name, "dataset", raise_if_missing=True) return workspace_id, dataset_id + + @check_token + def get_embed_token(self, workspace_id: str, report_id: str, access_level: str) -> None: + payload = {"accessLevel": access_level} + + url = self.base_url + f"groups/{workspace_id}/reports/{report_id}/GenerateToken" + response = requests.post(url, headers=self.headers, data=json.dumps(payload)) + + if response.status_code == HTTP_OK_CODE: + logging.info(f"Report named '{report_id}' in workspace '{workspace_id}' embed'{response.json()['token']}") + return response.json()["token"] + else: + logging.error("Report failed to get embed token") + self.force_raise_http_error(response)