Role

auth = dmda.DomoTokenAuth(
    domo_instance=os.environ["DOMO_INSTANCE"],
    domo_access_token=os.environ["DOMO_ACCESS_TOKEN"],
    
)

roles = (await role_routes.get_roles(auth=auth)).response
role = next((role for role in roles if 'test' in role['name'].lower()))
role_id = role["id"]

users = (await user_routes.get_all_users(auth=auth)).response
user = next((user for user in users if 'test' in user["emailAddress"].lower()))

DomoRole


source

DomoRole

 DomoRole (auth:domolibrary.client.DomoAuth.DomoAuth, id:str,
           name:str=None, description:str=None, is_system_role:bool=False,
           is_default_role:bool=False,
           grants:List[domolibrary.classes.DomoGrant.DomoGrant]=<factory>,
           membership_ls:list=<factory>)

DomoRole GET

## DomoRole GET

sample get role by id

await DomoRole.get_by_id(auth=auth, role_id=role_id, return_raw=False)
DomoRole(id=108369421, name='test_update_metadata', description='updated via domolibrary on 2024-11-11', is_system_role=0, is_default_role=None, grants=[], membership_ls=[])

Handle Role Grants

sample implementation of get_role_grants

domo_role = DomoRole(auth=auth, id=role_id)

(await domo_role.get_grants(return_raw=False))[0:5]
[DomoGrant(id='user.invite', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None),
 DomoGrant(id='user.edit', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None)]

source

SetRoleGrants_MissingGrants

 SetRoleGrants_MissingGrants (cls_instance, missing_grants:List[str])

base exception

sample implementation of set_grants

domo_role = await DomoRole.get_by_id(role_id = role_id, auth = auth)

role_grants = [
    "user.edit",
    "user.invite",
    # "user.session.edit",
    # "versions.repository.admin",
]

await domo_role.set_grants(grants=role_grants, debug_api=False)
 😕 weird API issue, but role should have been modified.  setting is_success = True 
[DomoGrant(id='user.invite', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None),
 DomoGrant(id='user.edit', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None)]

CRUD Role

Handle Role Membership

sample implementation of get_membership

domo_role = DomoRole(id=role_id, auth=auth)

(await domo_role.get_membership(return_raw=False))[0:5]
[DomoUser(id='1149821919', display_name='test 3 - updated 2024-10-28', email_address='delete_test3@test.com', role_id=108369421, department=None, title=None, avatar_key=None, phone_number=None, web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to=None, publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=None, last_activity_dt=None, custom_attributes={}, role=None, domo_api_clients=None, domo_access_tokens=None)]

source

AddUser_Error

 AddUser_Error (cls_instance, user_id, user_name=None)

base exception

sample implementation of add_user

domo_user = dmdu.DomoUser(id=user["id"], auth=auth)
domo_role = DomoRole(id=role_id, auth=auth)

(await domo_role.add_user(user=domo_user))[0:5]
[DomoUser(id='1149821919', display_name='test 3 - updated 2024-10-28', email_address='delete_test3@test.com', role_id=108369421, department=None, title=None, avatar_key=None, phone_number=None, web_landing_page=None, web_mobile_landing_page=None, employee_id=None, employee_number=None, hire_date=None, reports_to=None, publisher_domain=None, subscriber_domain=None, virtual_user_id=None, created_dt=None, last_activity_dt=None, custom_attributes={}, role=None, domo_api_clients=None, domo_access_tokens=None)]

Handle Role Metadata

sample implementation of update_role_metadata

# retrieve the super_admin role
dmr = await DomoRole.get_by_id(role_id=role_id, auth=auth)

await dmr.update(
    description=f"updated via domolibrary on {dt.date.today()}", debug_api=False
)
 😕 weird API issue, but role should have been modified.  setting is_success = True 
DomoRole(id=108369421, name='test_update_metadata', description='updated via domolibrary on 2024-11-22', is_system_role=0, is_default_role=None, grants=[], membership_ls=[])

handle CRUD Role


source

DeleteRole_Error

 DeleteRole_Error (cls_instance)

base exception

sample implementation of delete_role

try:
    await DomoRole.delete_role(role_id=role_id, auth=auth, debug_api=False)
except Exception as e:
    print(e)
 😕 weird API issue, but role should have been deleted.  setting is_success = True 

Domo Roles


source

DomoRoles

 DomoRoles (auth:domolibrary.client.DomoAuth.DomoAuth,
            roles:List[__main__.DomoRole]=None,
            default_role:__main__.DomoRole=None)

source

SearchRole_NotFound

 SearchRole_NotFound (cls_instance, role_id, message='not found')

base exception

Search and Get Roles

domo_roles = DomoRoles(auth=auth)

await domo_roles.get_default_role()

domo_roles
DomoRoles(roles=None, default_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=[]))
(await domo_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=True, 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=[])]
await domo_roles.search_by_name(role_name="Admin")
DomoRole(id=1, name='Admin', description='Full access to everything', is_system_role=True, is_default_role=False, grants=[], membership_ls=[])

Handle CRUD Roles

sample implementation of create_role

domo_role = DomoRoles(auth =auth)

try:
    await domo_role.create(
        name="super_admin_v3",
        description="created via DomoLibrary",
    )
except dmde.DomoError as e:
    print(e)
🛑  Role_CRUD_Error 🛑 - function: get_traceback || status 400 || Bad Request at domo-community

sample implementation of upsert_role

grant_ls = [
    "cloud.admin",
    "versions.repository.admin",
    "codeengine.package.manage",
    "appstore.admin",
    "datastore.admin",
    "certifiedcontent.admin",
]


await domo_roles.upsert(
    name="super_admin_v3",
    description="upsert via DomoLibrary",
    grants=grant_ls,
)
 😕 weird API issue, but role should have been modified.  setting is_success = True 

 😕 weird API issue, but role should have been modified.  setting is_success = True 
DomoRole(id=104295428, name='super_admin_v3', description='upsert via DomoLibrary', is_system_role=0, is_default_role=False, grants=[DomoGrant(id='cloud.admin', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None), DomoGrant(id='versions.repository.admin', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None), DomoGrant(id='codeengine.package.manage', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None), DomoGrant(id='appstore.admin', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None), DomoGrant(id='datastore.admin', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None), DomoGrant(id='certifiedcontent.admin', display_group=None, title=None, depends_on_ls=None, description=None, role_membership_ls=None)], membership_ls=[])

Default Role