Instance Configuration

a class based approach to configuring your domo instance
token_auth = dmda.DomoTokenAuth(
    domo_instance="domo-alpha",
    domo_access_token=os.environ["ALPHA_ACCESS_TOKEN"],
)

community_token_auth = dmda.DomoTokenAuth(
    domo_instance="domo-community",
    domo_access_token=os.environ["DOMO_DOJO_ACCESS_TOKEN"],
)

full_auth = dmda.DomoFullAuth(
    domo_instance=os.environ["DOMO_INSTANCE"],
    domo_username=os.environ["DOMO_USERNAME"],
    domo_password=os.environ["DOMO_PASSWORD"],
)

domo_users = await dmdu.DomoUsers.all_users(auth=token_auth)
domo_user = next(
    (domo_user for domo_user in domo_users if "test" in domo_user.display_name.lower())
)

DomoInstanceConfigClass


source

DomoInstanceConfig

 DomoInstanceConfig (auth:domolibrary.client.DomoAuth.DomoAuth,
                     allowlist:list[str]=<factory>,
                     is_sandbox_self_instance_promotion_enabled:bool=None,
                     is_user_invite_notification_enabled:bool=None,
                     is_invite_social_users_enabled:bool=None, Accounts:do
                     molibrary.classes.DomoAccount.DomoAccounts=None, Acce
                     ssTokens:domolibrary.classes.DomoAccessToken.DomoAcce
                     ssTokens=None, ApiClients:domolibrary.classes.DomoIns
                     tanceConfig_ApiClient.ApiClients=None, Connectors:dom
                     olibrary.classes.DomoDataset_Connector.DomoConnectors
                     =None, InstanceSwitcher:domolibrary.classes.DomoInsta
                     nceConfig_InstanceSwitcher.DomoInstanceConfig_Instanc
                     eSwitcher=None,
                     Grants:domolibrary.classes.DomoGrant.DomoGrants=None,
                     MFA:domolibrary.classes.DomoInstanceConfig_MFA.MFA_Co
                     nfig=None,
                     Roles:domolibrary.classes.DomoRole.DomoRoles=None, SS
                     O:domolibrary.classes.DomoInstanceConfig_SSO.SSO_Conf
                     ig=None, Publish:domolibrary.classes.DomoPublish.Domo
                     Publications=None, UserAttributes:domolibrary.classes
                     .DomoInstanceConfig_UserAttribute.UserAttributes=None
                     )

utility class that absorbs many of the domo instance configuration methods

domo_config = DomoInstanceConfig(auth=token_auth)

Accounts

(await domo_config.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, 11, 29, 2, 10, 11), 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)]

Access Token

(await domo_config.AccessTokens.get())[0:5]
[DomoAccessToken(id=156180, name='Governance', owner=DomoUser(id='587894148', display_name='Bryan Van Kampen', email_address='bryan@bvankampen.net', role_id=1, department='BT Partners', title='Executive Analytics', avatar_key='/api/content/v1/avatar/USER/587894148', phone_number='6304647034', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=1588827600000, reports_to='1893952720', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2020, 5, 7, 17, 57, 47), last_activity_dt=datetime.datetime(2024, 11, 29, 1, 6, 22, 800000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), expiration_date=datetime.datetime(2030, 5, 13, 14, 47, 33)),
 DomoAccessToken(id=159191, name='Java CLI', owner=DomoUser(id='1345408759', display_name='Alexis Lorenz (DataMaven)', email_address='DataMaven42@gmail.com', role_id=1, department='Owner', title='Major Domo Support Specialist', avatar_key='/api/content/v1/avatar/USER/1345408759', phone_number='518-496-4710', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=1590156374000, reports_to='2009312032', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2020, 5, 8, 17, 55, 20), last_activity_dt=datetime.datetime(2024, 10, 23, 15, 26, 6, 391000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), expiration_date=datetime.datetime(2030, 7, 26, 20, 11, 21)),
 DomoAccessToken(id=163868, name='Governance', owner=DomoUser(id='1345408759', display_name='Alexis Lorenz (DataMaven)', email_address='DataMaven42@gmail.com', role_id=1, department='Owner', title='Major Domo Support Specialist', avatar_key='/api/content/v1/avatar/USER/1345408759', phone_number='518-496-4710', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=1590156374000, reports_to='2009312032', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2020, 5, 8, 17, 55, 20), last_activity_dt=datetime.datetime(2024, 10, 23, 15, 26, 6, 391000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), expiration_date=datetime.datetime(2030, 11, 4, 21, 6)),
 DomoAccessToken(id=168840, name='Dataset Copy', owner=DomoUser(id='1345408759', display_name='Alexis Lorenz (DataMaven)', email_address='DataMaven42@gmail.com', role_id=1, department='Owner', title='Major Domo Support Specialist', avatar_key='/api/content/v1/avatar/USER/1345408759', phone_number='518-496-4710', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=1590156374000, reports_to='2009312032', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2020, 5, 8, 17, 55, 20), last_activity_dt=datetime.datetime(2024, 10, 23, 15, 26, 6, 391000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), expiration_date=datetime.datetime(2031, 2, 20, 18, 55, 14)),
 DomoAccessToken(id=182879, name='S3 Export', owner=DomoUser(id='68216396', display_name='Elliott Leonard', email_address='egleonard88@gmail.com', role_id=1, department='Owner', title=None, avatar_key='/api/content/v1/avatar/USER/68216396', phone_number='9702198956', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to='1741757362', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2021, 8, 3, 20, 12, 56), last_activity_dt=datetime.datetime(2024, 11, 23, 0, 5, 20, 968000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), expiration_date=datetime.datetime(2022, 10, 8, 2, 51, 55))]
token = await domo_config.AccessTokens.generate(
    owner=domo_user, duration_in_days=15, token_name=f"DL test {dt.date.today()}"
)

print(token.token)

await token.revoke()
c9b140fdbe1c20f528208d68a716c8281ead972f951f8014
ResponseGetData(status=200, response='access token 11788 revoked', is_success=True, parent_class=None)

Allowlist

  • The updating the allowlist will automatically include the IP Address that submits the set_allowlist request. This prevents users from accidentally locking themselves out of domo.
  • the set_allowlist API always does a SET command, by default there is no UPDATE or INSERT option. This class-based implementation uses a combination of get_allowlist, MERGE and set_allowlist to perform an UPSERT equivalent.
domo_config = DomoInstanceConfig(auth=full_auth)

await domo_config.get_allowlist()
await domo_config.set_allowlist(ip_address_ls=["0.0.0.0/0"])
await domo_config.upsert_allowlist(ip_address_ls=["192.168.0.1"])
['0.0.0.0/0', '172.182.200.131', '192.168.0.1']

Api Client (Client_ID and Secret)

domo_config = DomoInstanceConfig(auth=community_token_auth)

(await domo_config.ApiClients.get())[0:5]
[ApiClient(id=4731, name='SF Write-back', client_id='374b3480-4fdd-XXXX-XXXX-XXXXXXXXXXXX', owner_id=68216396, domo_user=DomoUser(id='68216396', display_name='Elliott Leonard', email_address='egleonard88@gmail.com', role_id=1, department='Owner', title=None, avatar_key='/api/content/v1/avatar/USER/68216396', phone_number='9702198956', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to='1741757362', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2021, 8, 3, 20, 12, 56), last_activity_dt=datetime.datetime(2024, 11, 23, 0, 5, 20, 968000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), authorization_grant_types=['client_credentials'], scope=[<ApiClient_ScopeEnum.DATA: 'data'>, <ApiClient_ScopeEnum.WORKFLOW: 'workflow'>, <ApiClient_ScopeEnum.AUDIT: 'audit'>, <ApiClient_ScopeEnum.BUZZ: 'buzz'>, <ApiClient_ScopeEnum.USER: 'user'>, <ApiClient_ScopeEnum.ACCOUNT: 'account'>, <ApiClient_ScopeEnum.DASHBOARD: 'dashboard'>], description='', is_invalid=False),
 ApiClient(id=8939, name='AWS Export', client_id='68fa308a-b408-XXXX-XXXX-XXXXXXXXXXXX', owner_id=68216396, domo_user=DomoUser(id='68216396', display_name='Elliott Leonard', email_address='egleonard88@gmail.com', role_id=1, department='Owner', title=None, avatar_key='/api/content/v1/avatar/USER/68216396', phone_number='9702198956', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to='1741757362', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2021, 8, 3, 20, 12, 56), last_activity_dt=datetime.datetime(2024, 11, 23, 0, 5, 20, 968000), custom_attributes={}, role=DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), authorization_grant_types=['client_credentials'], scope=[<ApiClient_ScopeEnum.DATA: 'data'>, <ApiClient_ScopeEnum.WORKFLOW: 'workflow'>, <ApiClient_ScopeEnum.AUDIT: 'audit'>, <ApiClient_ScopeEnum.BUZZ: 'buzz'>, <ApiClient_ScopeEnum.USER: 'user'>, <ApiClient_ScopeEnum.ACCOUNT: 'account'>, <ApiClient_ScopeEnum.DASHBOARD: 'dashboard'>], description='', is_invalid=False),
 ApiClient(id=12739, name='Domo IDEA Orchestration', client_id='9647357d-b136-XXXX-XXXX-XXXXXXXXXXXX', owner_id=1026818196, domo_user=DomoUser(id='1026818196', display_name='Giuseppe Russo', email_address='giuseppe.russo@everli.com', role_id=2097317660, department=None, title=None, avatar_key='/api/content/v1/avatar/USER/1026818196', phone_number=None, web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to='1178984171', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2021, 4, 12, 9, 14, 13), last_activity_dt=datetime.datetime(2024, 1, 22, 20, 44, 21, 270000), custom_attributes={}, role=DomoRole(id=2097317660, name='Community_Default_Priviliged', description='Full access except for editing users and settings owners', is_system_role=0, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), authorization_grant_types=['client_credentials'], scope=[<ApiClient_ScopeEnum.DATA: 'data'>, <ApiClient_ScopeEnum.WORKFLOW: 'workflow'>, <ApiClient_ScopeEnum.AUDIT: 'audit'>, <ApiClient_ScopeEnum.BUZZ: 'buzz'>, <ApiClient_ScopeEnum.USER: 'user'>, <ApiClient_ScopeEnum.ACCOUNT: 'account'>, <ApiClient_ScopeEnum.DASHBOARD: 'dashboard'>], description='', is_invalid=False),
 ApiClient(id=18413, name='Plan Writeback', client_id='d8cda0c5-f125-XXXX-XXXX-XXXXXXXXXXXX', owner_id=1536267297, domo_user=None, authorization_grant_types=['client_credentials'], scope=[<ApiClient_ScopeEnum.DATA: 'data'>, <ApiClient_ScopeEnum.WORKFLOW: 'workflow'>, <ApiClient_ScopeEnum.USER: 'user'>, <ApiClient_ScopeEnum.ACCOUNT: 'account'>, <ApiClient_ScopeEnum.DASHBOARD: 'dashboard'>], description='', is_invalid=True),
 ApiClient(id=19020, name='Desc', client_id='dfeec71d-64ca-XXXX-XXXX-XXXXXXXXXXXX', owner_id=1345737456, domo_user=DomoUser(id='1345737456', display_name='Aditya Jain', email_address='jain_aditya95@yahoo.com', role_id=2, department=None, title=None, avatar_key='/api/content/v1/avatar/USER/1345737456', phone_number='', web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to='1141078945', publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=datetime.datetime(2021, 4, 27, 8, 26, 46), last_activity_dt=datetime.datetime(2024, 6, 10, 13, 0, 7, 539000), custom_attributes={}, role=DomoRole(id=2, name='Privileged', description='Full access except for editing users and settings owners', is_system_role=True, is_default_role=None, grants=[], membership_ls=[]), domo_api_clients=None, domo_access_tokens=None), authorization_grant_types=['client_credentials'], scope=[<ApiClient_ScopeEnum.DATA: 'data'>, <ApiClient_ScopeEnum.WORKFLOW: 'workflow'>, <ApiClient_ScopeEnum.AUDIT: 'audit'>, <ApiClient_ScopeEnum.BUZZ: 'buzz'>, <ApiClient_ScopeEnum.USER: 'user'>, <ApiClient_ScopeEnum.ACCOUNT: 'account'>, <ApiClient_ScopeEnum.DASHBOARD: 'dashboard'>], description='', is_invalid=False)]

Applications

sample implementation of get_applications()

# import domolibrary.client.DomoAuth as dmda


dmdic = DomoInstanceConfig(auth=token_auth)
await token_auth.print_is_token()

domo_applications = await dmdic.get_applications(return_raw=False)
domo_applications

rds_app = next((app for app in domo_applications if "Remote Domo Stats" in app.name))
await rds_app.get_jobs()
🎉 token_auth token retrieved from domo-alpha ⚙️
[DomoJob_RemoteDomoStats(name='domo-community', application_id='50e7230f-d2f2-42e2-a208-d94c8ae9f64c', logs_dataset_id='c29116fa-c3ad-4bc9-9de5-0f05ce7e7649', id='95ace776-c254-4e61-97f6-77671f3b098b', user_id=1623162654, execution_timeout=1440, is_enabled=False, customer_id='domo-alpha', created_dt=datetime.datetime(2024, 9, 19, 21, 32, 55), updated_dt=datetime.datetime(2024, 9, 19, 21, 35, 2), description='', execution_payload={'remoteInstance': 'domo-community', 'subscriberJobId': 'df57f5b6-9219-46ec-9cf9-d0c8ae56b76f', 'policies': {'People': '7a7caccc-4724-470d-b89f-e5f6d27676a8'}, 'metricsDatasetId': 'c29116fa-c3ad-4bc9-9de5-0f05ce7e7649'}, share_state={'sharedEntities': [{'id': '1623162654', 'type': 'USER', 'accessLevel': 'OWNER'}]}, accounts=[14], triggers=[], remote_instance='domo-community', subscriber_job_id='df57f5b6-9219-46ec-9cf9-d0c8ae56b76f', config=RemoteDomoStats_Config(policies=[RemoteDomoStats_Config_Policy(type='People', dataset_id='7a7caccc-4724-470d-b89f-e5f6d27676a8')])),
 DomoJob_RemoteDomoStats(name='REMOTE_Users', application_id='50e7230f-d2f2-42e2-a208-d94c8ae9f64c', logs_dataset_id='c29116fa-c3ad-4bc9-9de5-0f05ce7e7649', id='b4fd853a-1524-4512-9e4f-1d7a809913db', user_id=1623162654, execution_timeout=1440, is_enabled=False, customer_id='domo-alpha', created_dt=datetime.datetime(2024, 3, 8, 21, 35, 46), updated_dt=datetime.datetime(2024, 9, 19, 21, 30, 25), description='updated - 2024-03-08 17:50:24.269350', execution_payload={'remoteInstance': 'domo-alpha.domo.com', 'policies': {'People': '7a7caccc-4724-470d-b89f-e5f6d27676a8'}, 'metricsDatasetId': 'c29116fa-c3ad-4bc9-9de5-0f05ce7e7649'}, share_state={'sharedEntities': [{'id': '1623162654', 'type': 'USER', 'accessLevel': 'OWNER'}]}, accounts=[10], triggers=[], remote_instance='domo-alpha', subscriber_job_id=None, config=RemoteDomoStats_Config(policies=[RemoteDomoStats_Config_Policy(type='People', dataset_id='7a7caccc-4724-470d-b89f-e5f6d27676a8')]))]

sample implementation of generate_appications_report

domo_config = DomoInstanceConfig(auth=token_auth)

(await domo_config.generate_applications_report())[0:5]
application_description application_id application_name application_version customer_id domo_instance execution_class grants jobs jobs_schedule
0 DataSet S3 Backup e37a6942-9c0f-485a-8288-4fe95e10b23d Toolkit: DataSet S3 Backup 1.0.20_1 domo-alpha domo-alpha com.domo.executor.backup.DataSetBackupExecutor [dataset.admin, search.allentities.query] None None
1 Schema Management 4ddbf5d7-6441-4eb3-b5aa-97707cae2d2b Toolkit: Schema Management 1.0.25_3 domo-alpha domo-alpha com.domo.executor.schema.SchemaManagement [pipeline.executor.job.create, dataset.admin] None None
2 Post results from a PDP approval to the Publisher 07322d0d-783f-4991-97e4-9720c470b6c4 Sony PDP Executor 1.0.27_1 domo-alpha domo-alpha com.domo.executor.sony.SonyPDPApplication [pipeline.executor.job.admin] None None
3 Sony Publisher Executor Service 3ab19023-c8b3-40f4-93d0-00be8ac05259 Sony Collaboration Publisher Executor 1.2.9_1 domo-alpha domo-alpha com.domo.executor.sony.CollaboratorPublisherEx... [dataflow.admin, dataset.admin, publish.public... None None
4 Toolkit: User Automation b52f3c80-2642-4dcb-b874-b327326021b0 Toolkit: User Automation 1.0.139_1 domo-alpha domo-alpha com.domo.executor.userautomation.UserAutomatio... [pipeline.executor.job.create, dataset.manage,... None None

Connectors

domo_config = DomoInstanceConfig(auth=token_auth)

(await domo_config.Connectors.get())[0:5]
[DomoConnector(id='com.domo.connector.cloudability', label='Cloudability', title=None, sub_title=None, description=None, create_date=datetime.datetime(2018, 8, 21, 20, 14, 30), last_modified=datetime.datetime(2018, 11, 15, 20, 1, 7), publisher_name=None, writeback_enabled=None, tags=None, capabilities=None),
 DomoConnector(id='com.thirdparty.connector.52eb236b-6a78-40cf-84ea-f593bfda50a6', label='Quintly', title='Quintly', sub_title='Quintly Third Party Connector', description='quintly is a social media analytics platform that helps organizations to analyze their social media channels and benchmark against competitors. The quintly connector can be used by quintly customers to connect their social media data from within the quintly platform into Domo.', create_date=datetime.datetime(2019, 12, 2, 15, 31, 30), last_modified=datetime.datetime(2019, 12, 3, 4, 59, 5), publisher_name='mmmm-0010-6905', writeback_enabled=False, tags=['Marketing', 'Social Media', 'Analytics', 'Digital Marketing', 'Cloud Connector', 'Web Analytics', 'Ads', 'CMO', 'CEO'], capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.informaticaplugintile', label='Informatica Cloud Connector', title='Informatica Cloud Connector', sub_title='Create an easy integration between Domo and Informatica that takes the friction out of analysis.', description='Working with data across different platforms can be difficult to maintain and can lead to confusion around which data is more reliable. The Informatica Cloud Plugin solves this pain by creating an easy integration between Domo and Informatica that takes the friction out of analysis and gives you an easy way to create, update, and manage data accurately across platforms. The Informatica Cloud plugin allows Domo customers to retrieve a DataSet from Domo, pass it to the Informatica Cloud for further data processing, and then upload the changes back to Domo. If instead you just need to create a DataSet from your existing Informatica Cloud data, no worries. The plugin can also be used to create a new DataSet in Domo pulling directly from the Informatica Cloud. You can use the Informatica Cloud Plugin to take data from Domo, perform analysis on it in Informatica, and then update the data back in Domo in a seamless workflow. You can also use the Informatica Cloud Plugin to create DataSets in Domo from your existing Informatica data. Use this versatile tool today and start getting more out of your data. Along with your Domo account, you will need access to Domo Informatica Cloud connector. You can download the plugin from the Informatica Cloud Marketplace.', create_date=datetime.datetime(2020, 2, 11, 19, 43, 27), last_modified=datetime.datetime(2020, 6, 9, 20, 35, 22), publisher_name='domo', writeback_enabled=False, tags=['Database', 'Cloud Connector', 'BI'], capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.mariadbwritebacktile', label='MariaDB Writeback Tile', title='MariaDB Writeback Tile', sub_title='Export your data from a Domo dataset to your Maria DB database.', description='MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system. Use this connector to export your data from a Domo DataSet to a MariaDB database.', create_date=datetime.datetime(2020, 2, 11, 21, 47, 20), last_modified=datetime.datetime(2020, 6, 9, 20, 39, 14), publisher_name='domo', writeback_enabled=False, tags=['Database', 'Analytics', 'Cloud Connector', 'BI'], capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.domos3writebackthirdpartyconnectortile', label='S3 Writeback Tile', title='S3 Writeback Tile', sub_title='Export data from a Domo DataSet to an Amazon S3 Bucket.', description='Amazon S3 is an online file storage web service offered by Amazon Web Services that you can use to store and retrieve any amount of data, at any time, from anywhere on the web. Use this connector to export your data from a Domo DataSet to an Amazon S3 Bucket.', create_date=datetime.datetime(2020, 2, 6, 22, 4, 18), last_modified=datetime.datetime(2020, 2, 11, 22, 16, 21), publisher_name='domo', writeback_enabled=False, tags=['IT', 'Database', 'AWS', 'Cloud Connector', 'BI'], capabilities=['Connector'])]
domo_config = DomoInstanceConfig(auth=token_auth)

(
    await domo_config.Connectors.get(
        search_text="snowflake", return_raw=False, debug_api=False
    )
)[0:5]
[DomoConnector(id='com.domo.connector.snowflake.partition', label='Snowflake Partition Connector', title='Snowflake Partition Connector', sub_title='Maximize your cloud data strategy and investments by connecting your Snowflake data to Domo based on the number of past days provided, then make it instantly accessible to business users.', description='The Domo Snowflake Partition Connector makes it easy to bring all your data from your Snowflake data warehouse into Domo based on the number of past days provided. If you are already using Snowflake as a data warehousing solution, this connector helps you use Domo in conjunction with it to get the most from your data. To use this connector, you must have your Snowflake account name (domain) and the username and password for your Snowflake account.<br><br>Once your Snowflake data is in Domo, you can combine it with all your other Domo data to get a centralized view of your most mission-critical data.', create_date=datetime.datetime(2023, 10, 18, 23, 10, 53), last_modified=datetime.datetime(2023, 10, 30, 15, 28, 46), publisher_name='domo', writeback_enabled=False, tags=[' Cloud Connector', ' IT', 'BI', ' Database', ' Partition', ' Snowflake'], capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.snowflakekeypairauthentication', label='Snowflake Key Pair Authentication Connector', title='Snowflake Key Pair Authentication Connector', sub_title='Create an even more secure connection between Domo and your Snowflake database.', description="By combining the business intelligence power of Domo with your Snowflake data warehouse, you will be able to unlock even more data value and democratize data for your business. Use Domo's Snowflake Key Pair Authentication connector to maximize your cloud data strategy by connecting your data to Domo and making it accessible to everyone in your company.<br />With this connector, you'll be able to use key pair authentication to securely bring your Snowflake data into Domo. You can use key pair authentication as enhanced authentication security over basic authentication like a username and password.<br />Once you've connected Domo to your Snowflake database, you'll be able to combine it with all your other Domo data to get a centralized view of your most mission-critical information.", create_date=datetime.datetime(2024, 7, 2, 17, 14, 39), last_modified=datetime.datetime(2024, 9, 30, 15, 2, 30), publisher_name='domo', writeback_enabled=False, tags=[' IT', 'BI', ' SQL', ' Database', ' Snowflake Keypair', ' Query'], capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.snowflake.oauth.config', label='Snowflake Enterprise OAuth Connector', title='Snowflake Enterprise OAuth Connector', sub_title='Maximize your cloud data strategy and investment by securely connecting your Snowflake data to Domo.', description='By combining the power of Domo with your Snowflake data warehouse, you will be able to unlock even more data value and democratize data for your business. The Domo Snowflake OAuth connector makes it easy to securely bring your data from your Snowflake data warehouse into Domo. If you are already using Snowflake as a data warehousing solution, this connector helps you use Domo in conjunction with it to get the most from your data.<br />With the OAuth connector for Snowflake, you can use your existing Snowflake account to access your data, including your Client ID and the Client Secret provided by Snowflake when you were registered. Once your Snowflake data is in Domo, you can combine it with all your other Domo data to get a centralized view of your most mission-critical data.', create_date=datetime.datetime(2024, 11, 7, 18, 11, 44), last_modified=datetime.datetime(2024, 11, 7, 20, 35, 30), publisher_name='domo', writeback_enabled=False, tags=None, capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.snowflake.domo.managed.unload', label='Snowflake Domo Managed High Bandwidth', title='Snowflake Domo Managed High Bandwidth', sub_title='Snowflake Domo Managed High Bandwidth Connector', description="Snowflake is a data warehouse built for the cloud for all your data and users. Use Domo's Snowflake Unload V2 Connector to unload data from your Snowflake into Amazon S3. Unloaded files are imported from Amazon S3 into Domo. Choose this connector instead of the Snowflake connector if you are executing very large queries.", create_date=datetime.datetime(2024, 11, 7, 18, 36, 4), last_modified=datetime.datetime(2024, 11, 7, 22, 24, 17), publisher_name='domo', writeback_enabled=False, tags=None, capabilities=['Connector']),
 DomoConnector(id='com.domo.connector.snowflake.keypair.internalmanagedunload', label='Snowflake KeyPair Internal Managed Unload Connector', title='Snowflake KeyPair Internal Managed Unload Connector', sub_title="Use Domo's Snowflake Managed Unload connector to unload data easily and securely from your Snowflake database into Domo via internal Amazon S3.", description="Snowflake is a cloud-based analytic data warehouse system. Use Domo's Snowflake KeyPair Internal Managed Unload connector to unload data from your Snowflake database into internal Amazon S3. The files are then downloaded from internal S3 into Domo. This connector should be preferred over the other Snowflake connectors if you are executing very large queries.", create_date=datetime.datetime(2023, 8, 16, 11, 35, 27), last_modified=datetime.datetime(2023, 8, 17, 14, 40, 22), publisher_name='domo', writeback_enabled=False, tags=['preferred'], capabilities=['Connector'])]

Domains

Authorized Domains

sample implementation of get_authorized_domains

dmdic = DomoInstanceConfig(auth=token_auth)

await dmdic.get_authorized_domains(return_raw=False)
[]

Custom Application Authorized Domains

sample implementation of get_authorized_custom_app_domains

dmdic = DomoInstanceConfig(auth=token_auth)

await dmdic.get_authorized_custom_app_domains(return_raw=False)
['domo.com',
 'salesforce.com',
 'facebook.com',
 'twitter.com',
 'instagram.com',
 'youtube.com',
 'linkedin.com']

Grants

domo_config = DomoInstanceConfig(auth=token_auth)

pd.DataFrame((await domo_config.Grants.get())[0:5])
id display_group title depends_on_ls description role_membership_ls
0 authorization.roles COMPANY Manage all roles [ui.admin] Create, edit and delete custom roles. Assign a... [1, 309082875]
1 authorization.roles.assign COMPANY Assign users to a role [ui.admin] Assign users to a role in the allowlist. [1]
2 entity.attribute.admin COMPANY Manage Certified Attributes [ui.admin] Create, edit and delete certified attributes [1]
3 audit COMPANY View activity logs [ui.admin] View and export audit logs. [1, 309082875]
4 customer.edit COMPANY Manage all company settings [ui.admin] Manage company metadata, authentication rules,... [1, 309082875]

MFA Configuration

domo_config = DomoInstanceConfig(auth=community_token_auth)

await domo_config.MFA.get()
MFA_Config(is_multifactor_required=False, max_code_attempts=5, num_days_valid=15)

Publish

(await domo_config.Publish.get())[0:5]
[DomoPublication(id='052567d8-d1ff-46dc-b37c-fcdcb3b3ba15', name='AppStudio publication', description='', is_v2=True, created_dt=datetime.datetime(2024, 6, 4, 8, 8, 44, 142000), subscription_authorizations=[DomoPublication_Subscription(subscription_id='8ec9b3ce-d4ae-445a-9b00-f8bef3a56818', publication_id='052567d8-d1ff-46dc-b37c-fcdcb3b3ba15', domain='domo-community-subscriber.domo.com', created_dt=(datetime.datetime(2024, 8, 27, 17, 52, 5, 474000),)), DomoPublication_Subscription(subscription_id='eff7320a-50aa-47fe-89ae-9a4ae12df73f', publication_id='052567d8-d1ff-46dc-b37c-fcdcb3b3ba15', domain='datacrew-space.domo.com', created_dt=(datetime.datetime(2024, 6, 4, 8, 9, 11, 349000),))], content=[DomoPublication_Content(content_id='6d605d2c-e425-4673-bb5c-2afa3498c8d5', entity_type='DATASET', entity_id='e747ac95-669f-40d6-aeb4-f3b9e769c975', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None), DomoPublication_Content(content_id='d5d94e25-06ac-4205-b693-04d44ff9dbe4', entity_type='DATASET', entity_id='248e93d7-1a06-422b-afe0-28159f1f07ec', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None), DomoPublication_Content(content_id='866f98bd-2390-4910-b8ec-f9ca8e28677b', entity_type='DATA_APP', entity_id='847733852', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None)], content_page_id_ls=[], content_dataset_id_ls=['e747ac95-669f-40d6-aeb4-f3b9e769c975', '248e93d7-1a06-422b-afe0-28159f1f07ec'], content_data_app_id_ls=['847733852'], lineage=DomoLineage(page_id_ls=[], card_id_ls=[], dataflow_id_ls=[], dataset_id_ls=[], entity_ls=[])),
 DomoPublication(id='095426a1-2c35-468b-bb96-36c516382f19', name='Ellibot', description='', is_v2=True, created_dt=datetime.datetime(2023, 11, 10, 18, 5, 10, 961000), subscription_authorizations=[DomoPublication_Subscription(subscription_id='173ee64d-4f68-4d40-b634-22b5332f4e45', publication_id='095426a1-2c35-468b-bb96-36c516382f19', domain='domo-community-ellibot.domo.com', created_dt=(datetime.datetime(2023, 11, 10, 18, 5, 10, 961000),))], content=[DomoPublication_Content(content_id='c61531b6-81ac-45ec-9a77-d41194406097', entity_type='DATASET', entity_id='f6210193-5322-4481-a1de-d07aed544050', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None)], content_page_id_ls=[], content_dataset_id_ls=['f6210193-5322-4481-a1de-d07aed544050'], content_data_app_id_ls=[], lineage=DomoLineage(page_id_ls=[], card_id_ls=[], dataflow_id_ls=[], dataset_id_ls=[], entity_ls=[])),
 DomoPublication(id='f02ad4d6-8fde-43b6-8263-7b5450ff0e11', name='jace-testing', description='', is_v2=True, created_dt=datetime.datetime(2024, 4, 26, 14, 27, 49, 495000), subscription_authorizations=[DomoPublication_Subscription(subscription_id='4b467a18-90f6-4bd8-9c56-70e8e6c9d3e8', publication_id='f02ad4d6-8fde-43b6-8263-7b5450ff0e11', domain='domo-community-jace-testing.domo.com', created_dt=(datetime.datetime(2024, 4, 26, 14, 27, 49, 495000),))], content=[DomoPublication_Content(content_id='8394d6a3-7a2a-47be-9b2d-71a2fb687dd0', entity_type='PAGE', entity_id='1296051561', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None), DomoPublication_Content(content_id='17f00f37-a5fe-4535-bf87-9c7f1362f7da', entity_type='DATASET', entity_id='37e027fb-f689-4ca0-992b-8f132049e28f', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None)], content_page_id_ls=['1296051561'], content_dataset_id_ls=['37e027fb-f689-4ca0-992b-8f132049e28f'], content_data_app_id_ls=[], lineage=DomoLineage(page_id_ls=[], card_id_ls=[], dataflow_id_ls=[], dataset_id_ls=[], entity_ls=[])),
 DomoPublication(id='99a4f772-f0e0-47a6-873a-5870d03b9134', name='Landing Page QA', description='', is_v2=True, created_dt=datetime.datetime(2023, 6, 15, 21, 14, 23, 791000), subscription_authorizations=[DomoPublication_Subscription(subscription_id='e0788b4e-5973-4c48-8a56-433dfb280496', publication_id='99a4f772-f0e0-47a6-873a-5870d03b9134', domain='test.domo.com', created_dt=(datetime.datetime(2023, 6, 15, 21, 14, 23, 791000),))], content=[DomoPublication_Content(content_id='b10b76dd-17f6-4459-9279-d1764035fad8', entity_type='DATASET', entity_id='51260f1d-b146-4dff-a1d8-68b7aa0b740b', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None)], content_page_id_ls=[], content_dataset_id_ls=['51260f1d-b146-4dff-a1d8-68b7aa0b740b'], content_data_app_id_ls=[], lineage=DomoLineage(page_id_ls=[], card_id_ls=[], dataflow_id_ls=[], dataset_id_ls=[], entity_ls=[])),
 DomoPublication(id='e3295d79-4dbe-4994-8f8e-f105b178cc3b', name='Sandbox_PROD', description='', is_v2=True, created_dt=datetime.datetime(2023, 6, 15, 20, 54, 18, 747000), subscription_authorizations=[DomoPublication_Subscription(subscription_id='7ff7ec45-4a5b-4f5b-ab82-c2d4e00527a1', publication_id='e3295d79-4dbe-4994-8f8e-f105b178cc3b', domain='test.domo.com', created_dt=(datetime.datetime(2023, 6, 15, 20, 54, 18, 748000),))], content=[DomoPublication_Content(content_id='d4414dfc-3d05-41ef-bb47-8b29b75bb6b8', entity_type='DATASET', entity_id='15543b0f-dfe7-4a91-b7db-a86b9e8fec82', entity_domain='domo-community.domo.com', is_v2=True, is_direct_content=True, subscriber_content_id=None, subscriber_insance=None)], content_page_id_ls=[], content_dataset_id_ls=['15543b0f-dfe7-4a91-b7db-a86b9e8fec82'], content_data_app_id_ls=[], lineage=DomoLineage(page_id_ls=[], card_id_ls=[], dataflow_id_ls=[], dataset_id_ls=[], entity_ls=[]))]

Roles

domo_config = DomoInstanceConfig(auth=token_auth)

(await domo_config.Roles.get())[0:5]
[DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=False, grants=[], membership_ls=[]),
 DomoRole(id=2, name='Privileged', description='Full access except for editing users and settings owners', is_system_role=True, is_default_role=False, grants=[], membership_ls=[]),
 DomoRole(id=3, name='Editor', description='Can edit Cards, Pages, DataSets, and Dataflows', is_system_role=True, is_default_role=False, grants=[], membership_ls=[]),
 DomoRole(id=4, name='Participant', description='Read only access to Cards and Pages', is_system_role=True, is_default_role=False, grants=[], membership_ls=[]),
 DomoRole(id=5, name='Social', description='Access limited to social features', is_system_role=True, is_default_role=False, grants=[], membership_ls=[])]

Sandbox

Toggle Sandbox - allow_same_instance_promotion

sample implementation of get is self promotion enabled

domo_config = DomoInstanceConfig(auth=token_auth)

await domo_config.get_sandbox_is_same_instance_promotion_enabled(
    debug_api=False, return_raw=False
)
{'name': 'allow_same_instance_promotion', 'is_enabled': True}
domo_config = DomoInstanceConfig(auth=token_auth)

await domo_config.toggle_sandbox_allow_same_instance_promotion(
    is_enabled=True,
    debug_api=False,
    return_raw=False,
)
{'name': 'allow_same_instance_promotion', 'is_enabled': True}

Invite notification enabled

domo_config = DomoInstanceConfig(auth=token_auth)

await domo_config.get_is_user_invite_notification_enabled(
    debug_api=False, return_raw=False
)
{'name': 'user.invite.email.enabled', 'is_enabled': True}
domo_config = DomoInstanceConfig(auth=token_auth)

await domo_config.toggle_is_user_invite_notification_enabled(is_enabled=True)
{'name': 'user.invite.email.enabled', 'is_enabled': True}

Social Users

sample implementation of is_invite_social_users_enabled

domo_config = DomoInstanceConfig(auth=full_auth)

try:
    await domo_config.get_is_invite_social_users_enabled(
        debug_api=False, return_raw=False
    )

except InstanceConfig_ClassError as e:
    print(e)
await domo_config.toggle_is_invite_social_users_enabled(is_enabled=True)
{'name': 'free-invite', 'is_enabled': True}

SSO Configuration

sample implementation of get_sso_configuration

domo_config = DomoInstanceConfig(auth=token_auth)

await domo_config.SSO.get()
SSO(OIDC=SSO_OIDC_Config(idp_enabled=True, enforce_allowlist=False, idp_certificate=None, login_enabled=False, import_groups=False, require_invitation=False, skip_to_idp=False, redirect_url='', override_sso=False, override_embed=False, well_known_config='', auth_request_endpoint=None, token_endpoint=None, user_info_endpoint=None, public_key=None), SAML=SSO_SAML_Config(idp_enabled=True, enforce_allowlist=False, idp_certificate=None, is_enabled=True, import_groups=False, require_invitation=False, redirect_url='', auth_request_endpoint=None, issuer=None, relay_state=None))

UserAttributes

see DomoInstanceConfig_UserAttributes for all methods

(await domo_config.UserAttributes.get())[0:5]
[UserAttribute(id='Alpha', name='App Studio Alpha Customer', description='', issuer_type=<UserAttributes_IssuerType.CUSTOM: 'customer-defined'>, customer_id='domo-alpha', value_type='STRING', validator='ANY_VALUE', validator_configuration=None, security_voter='LIM_VIS_ADMIN', custom=True),
 UserAttribute(id='domo.policy.managed_employee_id', name=None, description=None, issuer_type=<UserAttributes_IssuerType.SYSTEM: 'domo-defined'>, customer_id=None, value_type=None, validator='ANY_VALUE', validator_configuration=None, security_voter='FULL_VIS_ADMIN_IDP', custom=False),
 UserAttribute(id='domo.policy.managed_hire_date', name=None, description=None, issuer_type=<UserAttributes_IssuerType.SYSTEM: 'domo-defined'>, customer_id=None, value_type=None, validator='ANY_VALUE', validator_configuration=None, security_voter='FULL_VIS_ADMIN_IDP', custom=False),
 UserAttribute(id='domo.policy.managed_email_address', name=None, description=None, issuer_type=<UserAttributes_IssuerType.SYSTEM: 'domo-defined'>, customer_id=None, value_type=None, validator='ANY_VALUE', validator_configuration=None, security_voter='FULL_VIS_ADMIN_IDP', custom=False)]

Weekly Digest

domo_config = DomoInstanceConfig(auth=full_auth)

try:
    print(await domo_config.get_is_weekly_digest_enabled(return_raw=True))

except InstanceConfig_Error as e:
    print(e)
ResponseGetData(status=200, response={'is_enabled': False, 'feature': 'come-back-to-domo-all-users'}, is_success=True, parent_class=None)
try:
    print(await domo_config.toggle_is_weekly_digest_enabled(is_enabled=False))
except InstanceConfig_Error as e:
    print(e)
{'is_enabled': False, 'feature': 'come-back-to-domo-all-users'}