def collect_all_accessible(auth_api, object_types = ["Role", "Organization", "EntitySet", "PropertyTypeInEntitySet"], permissions = ["OWNER", "READ", "WRITE"]):
    """
    Creates a dict with outputs of get_all_accessible_at_permission_level over various object_types and permission levels

    Output format is dict({
        tuple(principal_1): ["OWNER"],
        tuple(principal_2): ["READ"],
        tuple(principal_3): ["READ", "WRITE"]
    })
    """

    out = dict()
    for perm in permissions:
        for object_type in object_types:
            api_output = auth_api.get_accessible_objects(object_type = object_type, permission = perm)
            accessibles = [tuple(a) for a in api_output.authorized_objects]
            for a in accessibles:
                if a in out.keys():
                    out[a].append(perm)
                else:
                    out[a] = [perm]
    return out