EnterpriseApps

auth = dmda.DomoTokenAuth(
    domo_instance=os.environ["DOMO_DOJO_INSTANCE"],
    domo_access_token=os.environ["DOMO_DOJO_ACCESS_TOKEN"],
)

await auth.print_is_token()

design_id_card = "8c16c8ab-c068-4110-940b-f738d7146efc"
design_id_enterprise = "fdbcd9e6-e58e-4d59-bb47-514676d5bef7"
🎉 token_auth token retrieved from domo-community ⚙️

Routes


source

get_all_designs

 get_all_designs (auth:domolibrary.client.DomoAuth.DomoAuth,
                  parts:str='owners,creator,thumbnail,versions,cards',
                  debug_api:bool=False, debug_num_stacks_to_drop:int=1,
                  session:httpx.AsyncClient=None, parent_class:str=None)
Exported source
class App_API_Exception(dmde.RouteError):
    def __init__(self, res: rgd.ResponseGetData):
        super().__init__(res=res)


@gd.route_function
async def get_all_designs(
    auth: dmda.DomoAuth,
    parts: str = "owners,creator,thumbnail,versions,cards",
    debug_api: bool = False,
    debug_num_stacks_to_drop: int = 1,
    session: httpx.AsyncClient = None,
    parent_class: str = None,
):

    url = f"https://{auth.domo_instance}.domo.com/api/apps/v1/designs"

    params = {
        "checkAdminAuthority": True,
        "deleted": False,
        "direction": "desc",
        "parts": parts,
        "search": "",
        "withPermission": "ADMIN",
    }

    res = await gd.get_data(
        url=url,
        method="get",
        params=params,
        auth=auth,
        debug_api=debug_api,
        timeout=10,
        num_stacks_to_drop=debug_num_stacks_to_drop,
        session=session,
        parent_class=parent_class,
    )

    if not res.is_success:
        raise App_API_Exception(res=res)

    return res

source

App_API_Exception

 App_API_Exception
                    (res:domolibrary.client.ResponseGetData.ResponseGetDat
                    a)

base exception

all_apps = (await get_all_designs(auth=auth)).response

print(len(all_apps))
all_apps[0:1]
84
[{'id': 'e09d6625-3680-4fac-bc71-1cd81607eb9a',
  'name': 'YouTubeViewer Demographic',
  'owner': None,
  'createdBy': None,
  'createdDate': '2016-07-19T22:10:36Z',
  'updatedBy': None,
  'updatedDate': '2016-09-20T21:41:39Z',
  'description': None,
  'versions': [{'id': '579013e1-1b40-4879-8a22-de93a8e091ac',
    'designId': 'e09d6625-3680-4fac-bc71-1cd81607eb9a',
    'version': '1.0.7',
    'draft': False,
    'trusted': False,
    'publicAssetsEnabled': True,
    'scopes': [],
    'datasetsMapping': [{'alias': 'LikesAndDislikes',
      'dataSetId': 'c5cb7d3b-b3a4-4c28-a665-4219b5d71a1d',
      'fields': [{'alias': 'Category',
        'columnName': 'Category',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'Names',
        'columnName': 'Names',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'Value',
        'columnName': 'Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ViewerGenderTitle',
      'dataSetId': '18126ab8-3c4e-41b4-98a8-ce5dbb4945ab',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'MalePercentValue',
      'dataSetId': '446c712f-1271-416d-bf97-d18df96c6ee3',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FemalePercentValue',
      'dataSetId': '27f682e6-6d73-48fe-b13b-a55d17cefff4',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'MalePercentTitle',
      'dataSetId': '5b879352-a967-4b4d-89a2-c7dd3c9a4d67',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ViewsTitle',
      'dataSetId': '73179b98-c2d0-44f1-98f9-47ce290bcf4f',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FemalePercentTitle',
      'dataSetId': '56750cf3-4730-4065-89ba-4b1347026898',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'MapTitle',
      'dataSetId': 'a70ba903-f429-4b1c-8721-cb9f42417dea',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'DonutTitle',
      'dataSetId': 'e025242d-3142-4c09-9bd1-ad07beb347b0',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'RatingsTitle',
      'dataSetId': '1094f389-fa0d-4e5b-acce-c65fc534565c',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'DeviceTypeTitle',
      'dataSetId': '6fc924bf-3877-4b7e-84a1-603cbb8fb00d',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'MostLeastViewedTitle',
      'dataSetId': 'cb8376ed-10be-4e33-bbe9-336824be8ca6',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'CommentsTitle',
      'dataSetId': 'b4ee2e13-4f14-4b37-903c-c07e531d1715',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SharesTitle',
      'dataSetId': '4599b990-0f14-42b7-97db-d6c2aa782b08',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'WorldMap',
      'dataSetId': 'd7fe98f2-5706-4cba-a588-b0e18f7adee4',
      'fields': [{'alias': 'CountryName',
        'columnName': 'Country Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'CountryValue',
        'columnName': 'Country Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'MapSubTitle',
      'dataSetId': 'c04bc96b-dc51-4c78-b466-b2218717a565',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FirstCountryTitle',
      'dataSetId': 'a2e6fda6-5788-454c-9898-49dd7f98f6ba',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ThirdCountryTitle',
      'dataSetId': '982bae3b-e3cb-44af-8378-b7a2b0aaa1b6',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SecondCountryTitle',
      'dataSetId': '673bcb8b-9095-4c2c-bfb4-b797b981e192',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FourthCountryTitle',
      'dataSetId': '88a535b6-1668-47a4-996c-ce4e2ce1a891',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FifthCountryTitle',
      'dataSetId': '64594d20-7915-43d9-83ad-8ce3afa3d40d',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FirstCountryValue',
      'dataSetId': 'de68281f-d8c9-49b7-8968-aadebf035e56',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SecondCountryValue',
      'dataSetId': '875cb61c-2d0a-4c1f-9eb0-46105cb3e442',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ThirdCountryValue',
      'dataSetId': 'fa4fdf9d-70a9-453f-806a-f6d7d576dd0a',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FourthCountryValue',
      'dataSetId': 'a4640252-e21d-493f-9e76-2a7cdbc3a3f9',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'FifthCountryValue',
      'dataSetId': 'e5d35469-e2ff-43e2-a134-1cc044a5b4e3',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'Donut',
      'dataSetId': '6853b7f9-06eb-41c7-b64e-def20cef4229',
      'fields': [{'alias': 'DonutSliceName',
        'columnName': 'Donut Slice Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'DonutSliceValue',
        'columnName': 'Donut Slice Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'DeviceBarChart',
      'dataSetId': '44844b9e-01f0-424d-93d1-0d6d064caa46',
      'fields': [{'alias': 'XAxis',
        'columnName': 'X Axis',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'YAxis',
        'columnName': 'Y Axis',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'TopViewedVideoTitle',
      'dataSetId': '21215d64-6c8d-4bf6-8a88-4c1ce878319f',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SecondViewedVideoTitle',
      'dataSetId': '2211a158-b67d-4a38-88d6-5f99b6edd7d2',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ThirdViewedVideoTitle',
      'dataSetId': 'b01356b5-491a-4db1-b5bb-db4ce05a271f',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'LeastViewedVideoTitle',
      'dataSetId': '4042b338-c93c-4278-a249-e7a27ed540a8',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SecondLeastViewedVideoTitle',
      'dataSetId': '4b4387cb-f612-439f-a783-50d5fad5a274',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ThirdLeastViewedVideoTitle',
      'dataSetId': 'e7f8eb9f-dcf1-4213-b1f6-31558f0ea066',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'ViewsValue',
      'dataSetId': '27da2f8f-a0bc-4976-ab44-994cd70bfa46',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'CommentsValue',
      'dataSetId': '64ff0498-36bf-49dc-bfbc-5b01a4ab11ed',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'SharesValue',
      'dataSetId': 'c78f940e-4f97-46ad-a67b-c61c0ab050ce',
      'fields': [{'alias': 'IndicatorName',
        'columnName': 'Indicator Name',
        'fieldType': None,
        'beastModeName': None},
       {'alias': 'IndicatorValue',
        'columnName': 'Indicator Value',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None},
     {'alias': 'DateRangeTitle',
      'dataSetId': 'd8435077-5cd6-4754-a5fd-31bd1c121587',
      'fields': [{'alias': 'Text',
        'columnName': 'Text',
        'fieldType': None,
        'beastModeName': None}],
      'dql': None}],
    'collectionsMapping': [],
    'databasesMapping': [],
    'accountsMapping': [],
    'actionsMapping': [],
    'workflowsMapping': [],
    'packagesMapping': [],
    'size': {'width': 5.0, 'height': 3.0},
    'fullpage': False,
    'flags': {},
    'createdBy': None,
    'createdDate': '2016-07-19T22:10:36Z',
    'updatedBy': None,
    'updatedDate': '2016-09-20T21:41:39Z',
    'releasedDate': '2016-09-20T21:41:39Z',
    'deletedDate': None}],
  'latestVersion': '1.0.7',
  'instances': [],
  'referencingCards': [{'domoapp': {'id': '97ca0d0d-ad37-4855-83a0-c999f6e3dbdc'},
    'urn': '1934131982',
    'id': 1934131982,
    'type': 'domoapp',
    'created': 1710133852,
    'badgeUpdated': 1710133852000,
    'creatorId': 263469872,
    'ownerId': 263469872,
    'title': 'YouTube Viewer Demographic',
    'active': True,
    'allowTableDrill': True,
    'locked': False},
   {'domoapp': {'id': 'fb7414d5-c865-4443-8ebd-05c40a15c423'},
    'urn': '1630184741',
    'id': 1630184741,
    'type': 'domoapp',
    'created': 1698825150,
    'badgeUpdated': 1698825150000,
    'creatorId': 453523183,
    'ownerId': 453523183,
    'title': 'YouTube Viewer Demographic',
    'active': True,
    'allowTableDrill': True,
    'locked': False}],
  'owners': [{'id': 1216550715,
    'displayName': '8:26 - go to sleep',
    'avatarKey': None,
    'role': 'Privileged',
    'roleId': 2,
    'detail': None},
   {'id': 263469872,
    'displayName': 'Daniel Ha',
    'avatarKey': 'eea729d0-723d-47bf-9ab7-59210c590828',
    'role': 'Privileged',
    'roleId': 2,
    'detail': None},
   {'id': 1893952720,
    'displayName': 'Jae Wilson1',
    'avatarKey': 'c605f478-0cd2-4451-9fd4-d82090b71e66',
    'role': None,
    'roleId': 810756122,
    'detail': None},
   {'id': 453523183,
    'displayName': 'Hemangi Vibhute',
    'avatarKey': '4021c924-59dd-44f6-bef4-21ea8f3bec99',
    'role': 'Privileged',
    'roleId': 2,
    'detail': None}],
  'creator': None,
  'deletedDate': None,
  'trusted': False,
  'hasThumbnail': True}]
design_id_enterprise = next(
    (
        app["id"]
        for app in all_apps
        if app.get("referencingCards")
        and any(
            (card for card in app.get("referencingCards") if card["type"] == "domoapp")
        )
    )
)
design_id_enterprise
'e09d6625-3680-4fac-bc71-1cd81607eb9a'

source

get_design_by_id

 get_design_by_id (auth:domolibrary.client.DomoAuth.DomoAuth,
                   design_id:str, parts='owners,cards,versions,creator',
                   debug_api:bool=False, debug_num_stacks_to_drop=1,
                   parent_class:str=None, session:httpx.AsyncClient=None)
Exported source
@gd.route_function
async def get_design_by_id(
    auth: dmda.DomoAuth,
    design_id: str,
    parts="owners,cards,versions,creator",
    debug_api: bool = False,
    debug_num_stacks_to_drop=1,
    parent_class: str = None,
    session: httpx.AsyncClient = None,
):

    url = f"https://{auth.domo_instance}.domo.com/api/apps/v1/designs/{design_id}"

    res = await gd.get_data(
        url=url,
        method="get",
        params={"parts": parts},
        auth=auth,
        debug_api=debug_api,
        num_stacks_to_drop=debug_num_stacks_to_drop,
        session=session,
        parent_class=parent_class,
    )

    if not res.is_success:
        raise App_API_Exception(res=res)

    return res
design = (await get_design_by_id(
    auth=auth, design_id=design_id_enterprise, debug_api=False
)).response

design
{'id': 'e09d6625-3680-4fac-bc71-1cd81607eb9a',
 'name': 'YouTubeViewer Demographic',
 'owner': None,
 'createdBy': None,
 'createdDate': '2016-07-19T22:10:36Z',
 'updatedBy': None,
 'updatedDate': '2016-09-20T21:41:39Z',
 'description': None,
 'versions': [{'id': '579013e1-1b40-4879-8a22-de93a8e091ac',
   'designId': 'e09d6625-3680-4fac-bc71-1cd81607eb9a',
   'version': '1.0.7',
   'draft': False,
   'trusted': False,
   'publicAssetsEnabled': True,
   'scopes': [],
   'datasetsMapping': [{'alias': 'LikesAndDislikes',
     'dataSetId': 'c5cb7d3b-b3a4-4c28-a665-4219b5d71a1d',
     'fields': [{'alias': 'Category',
       'columnName': 'Category',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'Names',
       'columnName': 'Names',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'Value',
       'columnName': 'Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ViewerGenderTitle',
     'dataSetId': '18126ab8-3c4e-41b4-98a8-ce5dbb4945ab',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'MalePercentValue',
     'dataSetId': '446c712f-1271-416d-bf97-d18df96c6ee3',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FemalePercentValue',
     'dataSetId': '27f682e6-6d73-48fe-b13b-a55d17cefff4',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'MalePercentTitle',
     'dataSetId': '5b879352-a967-4b4d-89a2-c7dd3c9a4d67',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ViewsTitle',
     'dataSetId': '73179b98-c2d0-44f1-98f9-47ce290bcf4f',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FemalePercentTitle',
     'dataSetId': '56750cf3-4730-4065-89ba-4b1347026898',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'MapTitle',
     'dataSetId': 'a70ba903-f429-4b1c-8721-cb9f42417dea',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'DonutTitle',
     'dataSetId': 'e025242d-3142-4c09-9bd1-ad07beb347b0',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'RatingsTitle',
     'dataSetId': '1094f389-fa0d-4e5b-acce-c65fc534565c',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'DeviceTypeTitle',
     'dataSetId': '6fc924bf-3877-4b7e-84a1-603cbb8fb00d',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'MostLeastViewedTitle',
     'dataSetId': 'cb8376ed-10be-4e33-bbe9-336824be8ca6',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'CommentsTitle',
     'dataSetId': 'b4ee2e13-4f14-4b37-903c-c07e531d1715',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SharesTitle',
     'dataSetId': '4599b990-0f14-42b7-97db-d6c2aa782b08',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'WorldMap',
     'dataSetId': 'd7fe98f2-5706-4cba-a588-b0e18f7adee4',
     'fields': [{'alias': 'CountryName',
       'columnName': 'Country Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'CountryValue',
       'columnName': 'Country Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'MapSubTitle',
     'dataSetId': 'c04bc96b-dc51-4c78-b466-b2218717a565',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FirstCountryTitle',
     'dataSetId': 'a2e6fda6-5788-454c-9898-49dd7f98f6ba',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ThirdCountryTitle',
     'dataSetId': '982bae3b-e3cb-44af-8378-b7a2b0aaa1b6',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SecondCountryTitle',
     'dataSetId': '673bcb8b-9095-4c2c-bfb4-b797b981e192',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FourthCountryTitle',
     'dataSetId': '88a535b6-1668-47a4-996c-ce4e2ce1a891',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FifthCountryTitle',
     'dataSetId': '64594d20-7915-43d9-83ad-8ce3afa3d40d',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FirstCountryValue',
     'dataSetId': 'de68281f-d8c9-49b7-8968-aadebf035e56',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SecondCountryValue',
     'dataSetId': '875cb61c-2d0a-4c1f-9eb0-46105cb3e442',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ThirdCountryValue',
     'dataSetId': 'fa4fdf9d-70a9-453f-806a-f6d7d576dd0a',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FourthCountryValue',
     'dataSetId': 'a4640252-e21d-493f-9e76-2a7cdbc3a3f9',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'FifthCountryValue',
     'dataSetId': 'e5d35469-e2ff-43e2-a134-1cc044a5b4e3',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'Donut',
     'dataSetId': '6853b7f9-06eb-41c7-b64e-def20cef4229',
     'fields': [{'alias': 'DonutSliceName',
       'columnName': 'Donut Slice Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'DonutSliceValue',
       'columnName': 'Donut Slice Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'DeviceBarChart',
     'dataSetId': '44844b9e-01f0-424d-93d1-0d6d064caa46',
     'fields': [{'alias': 'XAxis',
       'columnName': 'X Axis',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'YAxis',
       'columnName': 'Y Axis',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'TopViewedVideoTitle',
     'dataSetId': '21215d64-6c8d-4bf6-8a88-4c1ce878319f',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SecondViewedVideoTitle',
     'dataSetId': '2211a158-b67d-4a38-88d6-5f99b6edd7d2',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ThirdViewedVideoTitle',
     'dataSetId': 'b01356b5-491a-4db1-b5bb-db4ce05a271f',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'LeastViewedVideoTitle',
     'dataSetId': '4042b338-c93c-4278-a249-e7a27ed540a8',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SecondLeastViewedVideoTitle',
     'dataSetId': '4b4387cb-f612-439f-a783-50d5fad5a274',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ThirdLeastViewedVideoTitle',
     'dataSetId': 'e7f8eb9f-dcf1-4213-b1f6-31558f0ea066',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'ViewsValue',
     'dataSetId': '27da2f8f-a0bc-4976-ab44-994cd70bfa46',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'CommentsValue',
     'dataSetId': '64ff0498-36bf-49dc-bfbc-5b01a4ab11ed',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'SharesValue',
     'dataSetId': 'c78f940e-4f97-46ad-a67b-c61c0ab050ce',
     'fields': [{'alias': 'IndicatorName',
       'columnName': 'Indicator Name',
       'fieldType': None,
       'beastModeName': None},
      {'alias': 'IndicatorValue',
       'columnName': 'Indicator Value',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None},
    {'alias': 'DateRangeTitle',
     'dataSetId': 'd8435077-5cd6-4754-a5fd-31bd1c121587',
     'fields': [{'alias': 'Text',
       'columnName': 'Text',
       'fieldType': None,
       'beastModeName': None}],
     'dql': None}],
   'collectionsMapping': [],
   'databasesMapping': [],
   'accountsMapping': [],
   'actionsMapping': [],
   'workflowsMapping': [],
   'packagesMapping': [],
   'size': {'width': 5.0, 'height': 3.0},
   'fullpage': False,
   'flags': {},
   'createdBy': None,
   'createdDate': '2016-07-19T22:10:36Z',
   'updatedBy': None,
   'updatedDate': '2016-09-20T21:41:39Z',
   'releasedDate': '2016-09-20T21:41:39Z',
   'deletedDate': None}],
 'latestVersion': '1.0.7',
 'instances': [],
 'referencingCards': [{'domoapp': {'id': '97ca0d0d-ad37-4855-83a0-c999f6e3dbdc'},
   'urn': '1934131982',
   'id': 1934131982,
   'type': 'domoapp',
   'created': 1710133852,
   'badgeUpdated': 1710133852000,
   'creatorId': 263469872,
   'ownerId': 263469872,
   'title': 'YouTube Viewer Demographic',
   'active': True,
   'allowTableDrill': True,
   'locked': False},
  {'domoapp': {'id': 'fb7414d5-c865-4443-8ebd-05c40a15c423'},
   'urn': '1630184741',
   'id': 1630184741,
   'type': 'domoapp',
   'created': 1698825150,
   'badgeUpdated': 1698825150000,
   'creatorId': 453523183,
   'ownerId': 453523183,
   'title': 'YouTube Viewer Demographic',
   'active': True,
   'allowTableDrill': True,
   'locked': False}],
 'owners': [{'id': 1216550715,
   'displayName': '8:26 - go to sleep',
   'avatarKey': None,
   'role': 'Privileged',
   'roleId': 2,
   'detail': None},
  {'id': 1893952720,
   'displayName': 'Jae Wilson1',
   'avatarKey': 'c605f478-0cd2-4451-9fd4-d82090b71e66',
   'role': None,
   'roleId': 810756122,
   'detail': None},
  {'id': 263469872,
   'displayName': 'Daniel Ha',
   'avatarKey': 'eea729d0-723d-47bf-9ab7-59210c590828',
   'role': 'Privileged',
   'roleId': 2,
   'detail': None},
  {'id': 453523183,
   'displayName': 'Hemangi Vibhute',
   'avatarKey': '4021c924-59dd-44f6-bef4-21ea8f3bec99',
   'role': 'Privileged',
   'roleId': 2,
   'detail': None}],
 'creator': None,
 'deletedDate': None,
 'trusted': False,
 'hasThumbnail': None}

source

get_design_versions

 get_design_versions (auth:domolibrary.client.DomoAuth.DomoAuth,
                      design_id, debug_api:bool=False,
                      debug_num_stacks_to_drop=1, parent_class:str=None,
                      session:httpx.AsyncClient=None)
Exported source
@gd.route_function
async def get_design_versions(
    auth: dmda.DomoAuth,
    design_id,
    debug_api: bool = False,
    debug_num_stacks_to_drop=1,
    parent_class: str = None,
    session: httpx.AsyncClient = None,
):

    url = f"https://{auth.domo_instance}.domo.com/domoapps/designs/{design_id}/versions"

    res = await gd.get_data(
        url=url,
        auth=auth,
        method="get",
        debug_api=debug_api,
        num_stacks_to_drop=debug_num_stacks_to_drop,
        session=session,
        parent_class=parent_class,
    )

    if not res.is_success:
        raise App_API_Exception(res=res)

    return res
design_versions = (
    await get_design_versions(
        auth=auth,
        design_id=design["id"],
    )
).response

design_versions
['1.0.7']
# NOT SUPPORTED
# def get_design_version_by_id(
#     auth: dmda.DomoAuth,
#     design_id,
#     version,
#     debug_api: bool = False,
# ):

#     endpoint = f"/domoapps/designs/{design_id}/versions/{version}"

#     res = dmda.domo_api_request(
#         endpoint=endpoint,
#         request_type="get",
#         auth=auth,
#         debug_api=debug_api,
#     )

#     if not res.is_success:
#         raise App_API_Exception(
#             res=res, message=f"unable to retrieve design {design_id} - {version}"
#         )

#     return res

# res = get_design_version_by_id(
#     auth=auth,
#     design_id=design['id'],
#     version=design['versions'][0]['id'],
#     debug_api=False,
# )

source

get_design_source_code_by_version

 get_design_source_code_by_version
                                    (auth:domolibrary.client.DomoAuth.Domo
                                    Auth, design_id, version,
                                    debug_api:bool=False,
                                    debug_num_stacks_to_drop=1,
                                    parent_class:str=None,
                                    session:httpx.AsyncClient=None,
                                    download_path:str=None,
                                    is_unpack_archive=True,
                                    return_raw:bool=False)
Type Default Details
auth DomoAuth
design_id
version
debug_api bool False
debug_num_stacks_to_drop int 1
parent_class str None
session AsyncClient None
download_path str None location to download file to
is_unpack_archive bool True
return_raw bool False
Exported source
class Design_GET_Assets(dmde.DomoError):
    def __init__(self, res, design_id, message=None):
        message = message or f"unable to download assets for {design_id}"
        super().__init__(res=res, message=message)


@gd.route_function
async def get_design_source_code_by_version(
    auth: dmda.DomoAuth,
    design_id,
    version,
    debug_api: bool = False,
    debug_num_stacks_to_drop=1,
    parent_class: str = None,
    session: httpx.AsyncClient = None,
    download_path: str = None,  # location to download file to
    is_unpack_archive=True,
    return_raw: bool = False,
):

    url = f"http://{auth.domo_instance}.domo.com/domoapps/designs/{design_id}/versions/{version}/assets"

    res = await gd.get_data_stream(
        url=url,
        method="get",
        auth=auth,
        debug_api=debug_api,
        num_stacks_to_drop=debug_num_stacks_to_drop,
        session=session,
        parent_class=parent_class,
    )

    if return_raw:
        return res

    if not res.is_success and res.response == "Not Found":
        raise Design_GET_Assets(res=res, design_id=design_id, message="Not Found")

    if not res.is_success:
        raise Design_GET_Assets(res=res, design_id=design_id)

    if download_path:
        archive_path = os.path.join(download_path, "archive.zip")

        dmfi.download_zip(
            output_folder=archive_path,
            zip_bytes_content=res.response,
            is_unpack_archive=False,
        )

        if is_unpack_archive:
            dmfi.download_zip(
                output_folder=download_path,
                zip_bytes_content=res.response,
                is_unpack_archive=True,
            )

    return res

source

Design_GET_Assets

 Design_GET_Assets (res, design_id, message=None)

base exception

# design_id_enterprise = 'e09d6625-3680-4fac-bc71-1cd81607eb9a'

design_id_enterprise = "8c16c8ab-c068-4110-940b-f738d7146efc"
await get_design_source_code_by_version(
    auth=auth,
    design_id=design_id_enterprise,
    version=design_versions[0],
    download_path="../test/route/apps/get_design",
    is_unpack_archive=True,
    return_raw=False,
    debug_api=False,
)
ResponseGetData(status=200, response=bytearray(b'PK\x05\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), is_success=True, parent_class=None)

source

add_design_admin

 add_design_admin (design_id:str,
                   auth:domolibrary.client.DomoAuth.DomoAuth,
                   user_ids:List[int], debug_api:bool=False)
Exported source
@gd.route_function
async def get_design_permissions(
    design_id: str,
    auth: dmda.DomoAuth,
    debug_api: bool = False,
    debug_num_stacks_to_drop: int = 1,
    session: httpx.AsyncClient = None,
    parent_class: str = None,
):

    res = await get_design_by_id(
        auth=auth,
        design_id=design_id,
        parts="owners",
        debug_api=debug_api,
        debug_num_stacks_to_drop=debug_num_stacks_to_drop + 1,
        session=session,
        parent_class=parent_class,
    )

    res.response = res.response["owners"]
    return res


async def set_design_admins(
    design_id,
    auth: dmda.DomoAuth,
    user_ids: List[str],
    debug_api: bool = False,
    return_raw: bool = False,
):
    url = f"https://{auth.domo_instance}.domo.com/api/apps/v1/designs/{design_id}/permissions/ADMIN"

    res = await gd.get_data(
        url=url,
        method="POST",
        auth=auth,
        debug_api=debug_api,
        body=user_ids,
    )

    if return_raw:
        return res

    if not res.is_success:
        raise App_API_Exception(res=res)

    res.response = f"successfully set design_id {design_id} admins to {user_ids}"

    return res


async def add_design_admin(
    design_id: str, auth: dmda.DomoAuth, user_ids: List[int], debug_api: bool = False
):
    user_ids = user_ids if isinstance(user_ids, list) else [user_ids]

    res = await get_design_permissions(
        design_id=design_id, auth=auth, debug_api=debug_api
    )

    user_ids = list(set([owner["id"] for owner in res.response] + user_ids))

    return await set_design_admins(
        design_id=design_id, auth=auth, debug_api=debug_api, user_ids=user_ids
    )

source

set_design_admins

 set_design_admins (design_id, auth:domolibrary.client.DomoAuth.DomoAuth,
                    user_ids:List[str], debug_api:bool=False,
                    return_raw:bool=False)

source

get_design_permissions

 get_design_permissions (design_id:str,
                         auth:domolibrary.client.DomoAuth.DomoAuth,
                         debug_api:bool=False,
                         debug_num_stacks_to_drop:int=1,
                         session:httpx.AsyncClient=None,
                         parent_class:str=None)
await get_design_permissions(design_id=design_id_enterprise, auth=auth)

await add_design_admin(
    design_id=design_id_enterprise, auth=auth, user_ids=[auth.user_id], debug_api=False
)
ResponseGetData(status=200, response='successfully set design_id 8c16c8ab-c068-4110-940b-f738d7146efc admins to [1893952720, 1216550715]', is_success=True, parent_class=None)