= dmda.DomoTokenAuth(
token_auth ="domo-alpha",
domo_instance=os.environ["ALPHA_ACCESS_TOKEN"],
domo_access_token
)
= dmda.DomoTokenAuth(
community_token_auth ="domo-community",
domo_instance=os.environ["DOMO_DOJO_ACCESS_TOKEN"],
domo_access_token
)
= dmda.DomoFullAuth(
full_auth =os.environ["DOMO_INSTANCE"],
domo_instance=os.environ["DOMO_USERNAME"],
domo_username=os.environ["DOMO_PASSWORD"],
domo_password
)
= await dmdu.DomoUsers.all_users(auth=token_auth)
domo_users = next(
domo_user for domo_user in domo_users if "test" in domo_user.display_name.lower())
(domo_user )
Instance Configuration
a class based approach to configuring your domo instance
DomoInstanceConfigClass
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
= DomoInstanceConfig(auth=token_auth) domo_config
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))]
= await domo_config.AccessTokens.generate(
token =domo_user, duration_in_days=15, token_name=f"DL test {dt.date.today()}"
owner
)
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.
= DomoInstanceConfig(auth=full_auth)
domo_config
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)
= DomoInstanceConfig(auth=community_token_auth)
domo_config
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
= DomoInstanceConfig(auth=token_auth)
dmdic await token_auth.print_is_token()
= await dmdic.get_applications(return_raw=False)
domo_applications
domo_applications
= next((app for app in domo_applications if "Remote Domo Stats" in app.name))
rds_app 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
= DomoInstanceConfig(auth=token_auth)
domo_config
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
= DomoInstanceConfig(auth=token_auth)
domo_config
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'])]
= DomoInstanceConfig(auth=token_auth)
domo_config
(await domo_config.Connectors.get(
="snowflake", return_raw=False, debug_api=False
search_text
)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
Grants
= DomoInstanceConfig(auth=token_auth)
domo_config
await domo_config.Grants.get())[0:5]) pd.DataFrame((
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
= DomoInstanceConfig(auth=community_token_auth)
domo_config
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
= DomoInstanceConfig(auth=token_auth)
domo_config
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
= DomoInstanceConfig(auth=token_auth)
domo_config
await domo_config.get_sandbox_is_same_instance_promotion_enabled(
=False, return_raw=False
debug_api )
{'name': 'allow_same_instance_promotion', 'is_enabled': True}
= DomoInstanceConfig(auth=token_auth)
domo_config
await domo_config.toggle_sandbox_allow_same_instance_promotion(
=True,
is_enabled=False,
debug_api=False,
return_raw )
{'name': 'allow_same_instance_promotion', 'is_enabled': True}
Invite notification enabled
= DomoInstanceConfig(auth=token_auth)
domo_config
await domo_config.get_is_user_invite_notification_enabled(
=False, return_raw=False
debug_api )
{'name': 'user.invite.email.enabled', 'is_enabled': True}
= DomoInstanceConfig(auth=token_auth)
domo_config
await domo_config.toggle_is_user_invite_notification_enabled(is_enabled=True)
{'name': 'user.invite.email.enabled', 'is_enabled': True}
SSO Configuration
sample implementation of get_sso_configuration
= DomoInstanceConfig(auth=token_auth)
domo_config
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
= DomoInstanceConfig(auth=full_auth)
domo_config
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'}
Social Users
sample implementation of is_invite_social_users_enabled