DomoAccount

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

account = (await account_routes.get_account_by_id(auth=auth, account_id=71)).response

account_id = account["id"]
account
{'id': 71,
 'userId': 1893952720,
 'name': 'domo_creds',
 'displayName': 'DomoLibrary - update 2024-12-16 19:23:18.686560',
 'type': 'data',
 'valid': True,
 'dataProviderType': 'abstract-credential-store',
 'credentialsType': 'fields',
 'createdAt': 1684447092000,
 'createdBy': 1893952720,
 'modifiedAt': 1734376998000,
 'modifiedBy': 1893952720,
 'configurations': {},
 'accountId': 71,
 'accountTemplateId': None,
 'accountTemplateAuthorizationId': None}

declare DomoAccount


source

DomoAccount

 DomoAccount (id:int, auth:domolibrary.client.DomoAuth.DomoAuth,
              name:str=None, data_provider_type:str=None,
              created_dt:datetime.datetime=None,
              modified_dt:datetime.datetime=None, owners:List[Any]=None,
              is_admin_summary:bool=True, Config:domolibrary.classes.DomoA
              ccount_Config.DomoAccount_Config=None, Access:domolibrary.cl
              asses.DomoAccess.DomoAccess_Account=None)

DomoAccount_Types Enum


source

DomoAccount_Types

 DomoAccount_Types (value, names=None, module=None, qualname=None,
                    type=None, start=1)

An enumeration.

DomoAccount_Types.get("domo-access-token")
domolibrary.classes.DomoAccount_Credential.DomoAccount_Credential

DomoAccount methods

Sample Implementation of get_by_id

Note is_use_default_class can toggle using the Default Class or adding an extension class type

# retrieve an extension class  by setting is_use_default_account_class to False
await DomoAccount.get_by_id(
    auth=auth, account_id=100, is_use_default_account_class=False
)
DomoAccount_Credential(id=100, name='domo-community_NF', data_provider_type='domo-access-token', created_dt=datetime.datetime(2024, 3, 24, 0, 53, 57), modified_dt=datetime.datetime(2024, 5, 29, 15, 23, 46), owners=None, is_admin_summary=False, target_instance=None, is_valid_full_auth=None, is_valid_token_auth=None, target_auth=None, target_user=None)
domo_account = await DomoAccount.get_by_id(
    auth=auth, account_id=account_id, is_use_default_account_class=True
)
domo_account
DomoAccount(id=71, name='DomoLibrary - update 2024-12-16 19:23:18.686560', data_provider_type='abstract-credential-store', created_dt=datetime.datetime(2023, 5, 18, 21, 58, 12), modified_dt=datetime.datetime(2024, 12, 16, 19, 23, 18), owners=None, is_admin_summary=False)
domo_account.name = f"DomoLibrary - update {dt.datetime.now()}"
await domo_account.update_name()
DomoAccount(id=71, name='DomoLibrary - update 2024-12-16 19:26:43.711660', data_provider_type='abstract-credential-store', created_dt=datetime.datetime(2023, 5, 18, 21, 58, 12), modified_dt=datetime.datetime(2024, 12, 16, 19, 26, 43), owners=None, is_admin_summary=False)

DomoAccount_Config

The .Config attribute is a composition from the DomoAccount_Config class

# update Config by directly modifying the Config class and callin .update_config()
domo_account.Config.credentials = json.dumps(
    {
        "text": "any_new_value_goes_here",
        "today_date": str(dt.datetime.now()),
    }
)

await domo_account.update_config(debug_api=False)
DomoAccount_Config_AbstractCredential(data_provider_type='abstract-credential-store', is_oauth=False, credentials='{"text": "any_new_value_goes_here", "today_date": "2024-12-16 19:26:45.261468"}')
# update domo Account API by passing new config object
config = AccountConfig.abstract_credential_store.value(
    credentials=json.dumps({"domo_instance": auth.domo_instance})
)

await domo_account.update_config(config=config, debug_api=False)
DomoAccount_Config_AbstractCredential(data_provider_type='abstract-credential-store', is_oauth=False, credentials='{"domo_instance": "domo-community"}')

DomoAccount Access

await auth.who_am_i()

await domo_account.Access.share(user_id=auth.user_id)
ResponseGetData(status=200, response='', is_success=True, parent_class=None)
alpha_auth = dmda.DomoTokenAuth(
    domo_instance="domo-alpha",
    domo_access_token=os.environ["ALPHA_ACCESS_TOKEN"],
)

domo_account = await DomoAccount.get_by_id(account_id=5, auth=alpha_auth)
try:
    print(
        await domo_account.Access.share(
            access_level=ShareAccount_AccessLevel.CAN_VIEW,
            group_id=1814479647,
            debug_api=False,
        )
    )

except Account_Share_Error as e:
    print(e)
🛑  Account_Share_Error 🛑 - function: DomoAccess_Account.get_traceback || 5 || status 404 || Not Found at domo-alpha

DomoAccounts

A class for retrieving account objects


source

DomoAccounts

 DomoAccounts (auth:domolibrary.client.DomoAuth.DomoAuth,
               accounts:List[__main__.DomoAccount]=None, oauths:List[domol
               ibrary.classes.DomoAccount_OAuth.DomoAccount_OAuth]=None)

source

DomoAccounts_NoAccount

 DomoAccounts_NoAccount (cls=None, cls_instance=None, message=None,
                         domo_instance=None)

base exception

domo_accounts = DomoAccounts(auth=auth)
(await domo_accounts.get())[0:5]
[DomoAccount(id=50, name='**ReplicationUtility**:modocorp.domo.com', data_provider_type='dataset-copy', created_dt=datetime.datetime(2022, 10, 6, 19, 20, 34), modified_dt=datetime.datetime(2024, 10, 16, 15, 45, 49), owners=[DictDot(id='1345102715', type='USER', displayName='McWayne Mumford')], is_admin_summary=True),
 DomoAccount(id=84, name='**ReplicationUtility**:domo-ncv.domo.com', data_provider_type='dataset-copy', created_dt=datetime.datetime(2023, 11, 20, 22, 25, 42), modified_dt=datetime.datetime(2024, 12, 16, 18, 47, 47), owners=[DictDot(id='152768850', type='USER', displayName='Heath Pulham')], is_admin_summary=True),
 DomoAccount_Credential(id=100, name='domo-community_NF', data_provider_type='domo-access-token', created_dt=datetime.datetime(2024, 3, 24, 0, 53, 57), modified_dt=datetime.datetime(2024, 5, 29, 15, 23, 46), owners=[DictDot(id='1893952720', type='USER', displayName='Jae Wilson1')], is_admin_summary=True, target_instance=None, is_valid_full_auth=None, is_valid_token_auth=None, target_auth=None, target_user=None),
 DomoAccount_Credential(id=125, name='sudo_demo', data_provider_type='domo-access-token', created_dt=datetime.datetime(2024, 6, 3, 22, 10, 45), modified_dt=datetime.datetime(2024, 6, 3, 22, 10, 45), owners=[DictDot(id='1893952720', type='USER', displayName='Jae Wilson1')], is_admin_summary=True, target_instance=None, is_valid_full_auth=None, is_valid_token_auth=None, target_auth=None, target_user=None),
 DomoAccount(id=99, name='jw_sudo_demo_admin', data_provider_type='abstract-credential-store', created_dt=datetime.datetime(2024, 3, 23, 22, 11, 42), modified_dt=datetime.datetime(2024, 6, 3, 22, 12, 36), owners=[DictDot(id='1893952720', type='USER', displayName='Jae Wilson1')], is_admin_summary=True)]
await domo_accounts.get_oauths()
[DomoAccount_OAuth(id=1, name='OZ test', data_provider_type='snowflake-oauth-config', created_dt=datetime.datetime(2024, 11, 13, 13, 11, 56), modified_dt=datetime.datetime(2024, 11, 13, 13, 37, 49), owners=[DictDot(type='USER', id='612085674')], is_admin_summary=True),
 DomoAccount_OAuth(id=3, name='test_api', data_provider_type='snowflake-oauth-config', created_dt=datetime.datetime(2024, 11, 13, 14, 15, 43), modified_dt=datetime.datetime(2024, 11, 13, 14, 15, 43), owners=[DictDot(type='USER', id='1893952720')], is_admin_summary=True),
 DomoAccount_OAuth(id=4, name='test_api', data_provider_type='snowflake-oauth-config', created_dt=datetime.datetime(2024, 11, 13, 14, 21, 19), modified_dt=datetime.datetime(2024, 11, 13, 14, 21, 19), owners=[DictDot(type='USER', id='1893952720')], is_admin_summary=True),
 DomoAccount_OAuth(id=5, name='domolibrary test account - updated 2024-12-16', data_provider_type='jira-on-prem-oauth-config', created_dt=datetime.datetime(2024, 11, 13, 15, 17, 29), modified_dt=datetime.datetime(2024, 12, 16, 18, 48, 7), owners=[DictDot(type='USER', id='1893952720')], is_admin_summary=True),
 DomoAccount_OAuth(id=6, name='test_dl', data_provider_type='snowflake-oauth-config', created_dt=datetime.datetime(2024, 11, 13, 15, 58, 24), modified_dt=datetime.datetime(2024, 11, 13, 15, 58, 24), owners=[DictDot(type='USER', id='1893952720')], is_admin_summary=True),
 DomoAccount_OAuth(id=61, name='test_dl', data_provider_type='snowflake-oauth-config', created_dt=datetime.datetime(2024, 11, 27, 23, 25, 53), modified_dt=datetime.datetime(2024, 11, 27, 23, 25, 53), owners=[DictDot(type='USER', id='1893952720')], is_admin_summary=True)]

UPSERT Functions

sample implementation of upsert_account

# import domolibrary.classes.DomoUser as dmu
# import datetime as dt

# creates a DomoAccount object
domo_account = await DomoAccounts.upsert_account(
    account_name=f"DL test UPSERT {auth.domo_instance} - update {str(dt.datetime.now())}",
    account_id=113,
    auth=auth,
    debug_api=False,
    is_use_default_account_class = False,
    # return_search= True
    # target_instance = auth.domo_instance
)

domo_account
DomoAccount_Credential(id=113, name='DL test UPSERT domo-community - update 2024-12-16 19:26:50.022936', data_provider_type='domo-access-token', created_dt=datetime.datetime(2024, 3, 25, 20, 34, 20), modified_dt=datetime.datetime(2024, 12, 16, 19, 26, 50), owners=None, is_admin_summary=False, target_instance=None, is_valid_full_auth=None, is_valid_token_auth=None, target_auth=None, target_user=None)
# datacrew_auth = dmda.DomoTokenAuth(
#     domo_instance="datacrew-space",
#     domo_access_token=os.environ["DOMO_DATACREW_ACCESS_TOKEN"],
# )

# await domo_account.upsert_target_account(
#     target_auth=datacrew_auth,
#     account_name="DL test UPSERT domo-community > datacrew",
#     debug_api=False,
# )