PDP Routes


source

PDP_NotRetrieved

 PDP_NotRetrieved (domo_instance, function_name, status, message,
                   pdp_id=None)

base exception


source

get_pdp_policies

 get_pdp_policies (auth:domolibrary.client.DomoAuth.DomoAuth,
                   dataset_id:str, debug_api:bool=False,
                   include_all_rows:bool=True)

Sample implementation for get_pdp_policies

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

dataset_id = os.environ["DOJO_DATASET_ID"]

try:
    res = await get_pdp_policies(auth=token_auth, dataset_id=dataset_id)
    print(res)
except PDP_NotRetrieved as e:
    print(e)
warning this token has not been validated by who_am_i, run get_auth_token first
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}
ResponseGetData(status=200, response=[{'name': 'All Rows', 'filterGroupId': 797, 'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b', 'type': 'open', 'virtualUserIds': ['vu:0ed4455a-35df-4049-8d6d-80341083b2f4', 'vu:566d15dc-9600-48af-b5ad-89cd0ea00cb7', 'vu:a8841f70-909a-438e-9853-49783846bf22', 'vu:ed6853bb-d8c7-4777-be41-0af475fde7ba', 'vu:20e30033-edb3-44f0-a121-5ccf5f8161bc'], 'dataSourcePermissions': False, 'resources': {'VIRTUAL_USER': ['vu:0ed4455a-35df-4049-8d6d-80341083b2f4', 'vu:566d15dc-9600-48af-b5ad-89cd0ea00cb7', 'vu:ed6853bb-d8c7-4777-be41-0af475fde7ba', 'vu:a8841f70-909a-438e-9853-49783846bf22', 'vu:20e30033-edb3-44f0-a121-5ccf5f8161bc']}, 'order': 0}, {'name': 'Test Update Policy Name', 'filterGroupId': 1149, 'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b', 'type': 'user', 'userIds': [308783524], 'virtualUserIds': ['fc:e3ce6205-6717-42b4-ba1c-16b5e40eca98'], 'dataSourcePermissions': False, 'resources': {'USER': ['308783524'], 'VIRTUAL_USER': ['fc:e3ce6205-6717-42b4-ba1c-16b5e40eca98']}, 'parameters': [{'name': 'objectID', 'value': '000003007', 'values': ['000003007'], 'type': 'COLUMN', 'operator': 'EQUALS', 'not': False, 'ignoreCase': True}], 'order': 0}, {'name': 't2', 'filterGroupId': 1224, 'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b', 'type': 'user', 'userIds': [663516735, 1681443709], 'groupIds': [1513712315], 'dataSourcePermissions': False, 'resources': {'GROUP': ['1513712315'], 'USER': ['1681443709', '663516735']}, 'parameters': [{'name': 'Title', 'value': 'AWS Cost and Usage Dashboard', 'values': ['AWS Cost and Usage Dashboard'], 'type': 'COLUMN', 'operator': 'EQUALS', 'not': False, 'ignoreCase': False}], 'order': 0}, {'name': 't3s', 'filterGroupId': 1225, 'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b', 'type': 'user', 'userIds': [987822803, 838842812, 1186995515], 'dataSourcePermissions': False, 'resources': {'USER': ['987822803', '1186995515', '838842812']}, 'parameters': [{'name': 'Title', 'value': 'Accessing Goals Data', 'values': ['Accessing Goals Data'], 'type': 'COLUMN', 'operator': 'EQUALS', 'not': False, 'ignoreCase': False}], 'order': 0}, {'name': 'sds', 'filterGroupId': 1226, 'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b', 'type': 'user', 'userIds': [838842812], 'dataSourcePermissions': False, 'resources': {'USER': ['838842812']}, 'parameters': [{'name': 'Title', 'value': 'Adding Scale Markers to Your Charts', 'values': ['Adding Scale Markers to Your Charts'], 'type': 'COLUMN', 'operator': 'EQUALS', 'not': False, 'ignoreCase': False}], 'order': 0}], is_success=True, parent_class=None)

source

search_pdp_policies_by_name

 search_pdp_policies_by_name (search_name:str, result_list:list[dict],
                              is_exact_match:bool=True)
Type Default Details
search_name str used to return pdp policy info, search by name
result_list list
is_exact_match bool True this is the res.response from get_pdp_policies – should be list of dict

source

SearchPDP_Error

 SearchPDP_Error (status, message, domo_instance,
                  function_name='search_pdp_by_name')

base exception

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

dataset_id = os.environ["DOJO_DATASET_ID"]

res = await get_pdp_policies(auth=token_auth, dataset_id=dataset_id)

res.response

pdp_policy_search = search_pdp_policies_by_name(
    search_name="All Rows", result_list=res.response, is_exact_match=False
)
pdp_policy_search
warning this token has not been validated by who_am_i, run get_auth_token first
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}
[{'name': 'All Rows',
  'filterGroupId': 797,
  'dataSourceId': '04c1574e-c8be-4721-9846-c6ffa491144b',
  'type': 'open',
  'virtualUserIds': ['vu:0ed4455a-35df-4049-8d6d-80341083b2f4',
   'vu:a8841f70-909a-438e-9853-49783846bf22',
   'vu:566d15dc-9600-48af-b5ad-89cd0ea00cb7',
   'vu:ed6853bb-d8c7-4777-be41-0af475fde7ba',
   'vu:20e30033-edb3-44f0-a121-5ccf5f8161bc'],
  'dataSourcePermissions': False,
  'resources': {'VIRTUAL_USER': ['vu:0ed4455a-35df-4049-8d6d-80341083b2f4',
    'vu:a8841f70-909a-438e-9853-49783846bf22',
    'vu:566d15dc-9600-48af-b5ad-89cd0ea00cb7',
    'vu:20e30033-edb3-44f0-a121-5ccf5f8161bc',
    'vu:ed6853bb-d8c7-4777-be41-0af475fde7ba']},
  'order': 0}]
# class SearchPDP_Error(de.DomoError):
#     def __init__(self, status, message, domo_instance, function_name = "search_pdp_by_name"):
#         super().__init__(function_name = function_name, status = status, message = message , domo_instance = domo_instance)

# async def search_pdp_policies_by_id(
#         # used to return pdp policy info, search by id
#         search_id: str,
#         result_list: list[dict], # this is the res.response from get_pdp_policies -- should be list of dict
#         ):

#     policy_search = next((policy for policy in result_list if policy.filter_group_id == search_id), None)
#     #print(policy_search)

#     if not policy_search:
#         raise SearchPDP_Error(
#             status='',
#             message=f'There is no policy id "{search_id}"',
#             domo_instance=''
#         )

#     return policy_search

generate body for create_policy endpoint


source

generate_policy_parameter_simple

 generate_policy_parameter_simple (column_name:str, type:str='COLUMN',
                                   column_values_ls:list[str]=None,
                                   operator='EQUALS',
                                   ignore_case:bool=True)

source

generate_policy_body

 generate_policy_body (policy_name:str, dataset_id:str,
                       parameters_ls:list[dict], policy_id:str=None,
                       user_ids:list[str]=None, group_ids:list[str]=None,
                       virtual_user_ids:list[str]=None)
Type Default Details
policy_name str
dataset_id str
parameters_ls list generated by generate_policy_parameter_simple method
policy_id str None only included if updating existing policy
user_ids list None
group_ids list None
virtual_user_ids list None

Policy CRUD Operations

Create PDP Policy


source

create_policy

 create_policy (auth:domolibrary.client.DomoAuth.DomoAuth, dataset_id:str,
                body:dict, session:httpx.AsyncClient=None,
                override_same_name:bool=False, debug_api:bool=False)
Type Default Details
auth DomoAuth
dataset_id str
body dict generated using generate_policy_parameter_simple & generate_policy_body
session AsyncClient None
override_same_name bool False
debug_api bool False
Returns ResponseGetData

source

CreatePolicy_Error

 CreatePolicy_Error (status, message, domo_instance,
                     function_name='create_policy')

base exception

sample implementation of create_policy, generate_policy_parameter_simple and generate_policy_body

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

dataset_id = os.environ["DOJO_DATASET_ID"]

sample_parameter = generate_policy_parameter_simple(
    column_name="Employee ID",
    column_values_ls=["123"],
    operator="EQUALS",
    ignore_case=True,
)

body = generate_policy_body(
    policy_name="Test Policy Name Employee 1789",
    dataset_id=dataset_id,
    # policy_id="123",  # including the policy_id updates that existing policy
    parameters_ls=sample_parameter,
    user_ids=["1893952720"],
)

res = await create_policy(
    auth=token_auth, dataset_id=dataset_id, body=body, override_same_name=False
)
res.response
warning this token has not been validated by who_am_i, run get_auth_token first
Creating policy...
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}
'Bad Request'
### Update PDP Policy

Update PDP Policy


source

update_policy

 update_policy (auth:domolibrary.client.DomoAuth.DomoAuth, dataset_id:str,
                policy_id:str, body:dict, session:httpx.AsyncClient=None,
                debug_api:bool=False)
Type Default Details
auth DomoAuth
dataset_id str
policy_id str
body dict generated using generate_policy_parameter_simple & generate_policy_body
session AsyncClient None
debug_api bool False
Returns ResponseGetData

sample implementation of update_policy

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

dataset_id = os.environ["DOJO_DATASET_ID"]

sample_parameters = generate_policy_parameter_simple(
    column_name="Employee ID",
    column_values_ls=["123"],
    operator="EQUALS",
    ignore_case=True,
)

body = generate_policy_body(
    "Test Policy Name Employee 123",
    dataset_id=dataset_id,
    # policy_id='1153',
    parameters_ls=[sample_parameters],
    user_ids=["1893952720"],
)

res = await update_policy(
    auth=token_auth, dataset_id=dataset_id, policy_id="1178", body=body, debug_api=False
)

res
warning this token has not been validated by who_am_i, run get_auth_token first
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}
ResponseGetData(status=404, response='Not Found', is_success=False, parent_class=None)

Delete PDP Policy


source

delete_policy

 delete_policy (auth:domolibrary.client.DomoAuth.DomoAuth,
                dataset_id:str=None, policy_id:str=None,
                session:httpx.AsyncClient=None, debug_api:bool=False)

sample implementation of delete_policy

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

dataset_id = os.environ["DOJO_DATASET_ID"]

res = await delete_policy(
    auth=token_auth, dataset_id=dataset_id, policy_id="1179", debug_api=False
)
warning this token has not been validated by who_am_i, run get_auth_token first
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}

Enable / Disable PDP on dataset (toggle_pdp)


source

toggle_pdp

 toggle_pdp (auth:domolibrary.client.DomoAuth.DomoAuth, dataset_id:str,
             is_enable:bool=True, debug_api:bool=False,
             session:httpx.AsyncClient=None)

sample implementation of toggle_pdp

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

dataset_id = os.environ["DOJO_DATASET_ID"]

res = await toggle_pdp(
    auth=token_auth,
    dataset_id=dataset_id,
    is_enable=True,
)
res
warning this token has not been validated by who_am_i, run get_auth_token first
adjusting num_stacks_to_drop, consider revising `get_traceback` call
{'stack_length': 16, 'module_index': 12, 'num_stacks_to_drop_passed': 3}
ResponseGetData(status=200, response={'enabled': True, 'secured': False, 'external': False, 'enabledColumn': False}, is_success=True, parent_class=None)