okta/UserGroupsClient.py (47 lines of code) (raw):
from okta.framework.ApiClient import ApiClient
from okta.framework.Utils import Utils
from okta.models.user.User import User
from okta.models.usergroup.UserGroup import UserGroup
from okta.framework.PagedResults import PagedResults
class UserGroupsClient(ApiClient):
def __init__(self, *args, **kwargs):
kwargs['pathname'] = '/api/v1/groups'
ApiClient.__init__(self, *args, **kwargs)
# CRUD
def get_groups(self, limit=None, query=None):
"""Get a list of UserGroups
:param limit: maximum number of groups to return
:type limit: int or None
:param query: string to search group names
:type query: str or None
:rtype: list of UserGroup
"""
params = {
'limit': limit,
'q': query
}
response = ApiClient.get_path(self, '/', params=params)
return Utils.deserialize(response.text, UserGroup)
def get_paged_groups(self, limit=None, after=None, url=None):
"""Get a paged list of UserGroups
:param limit: maximum number of groups to return
:type limit: int or None
:param after: group id that filtering will resume after
:type after: str
:param url: url that returns a list of UserGroup
:type url: str
:rtype: PagedResults of UserGroup
"""
if url:
response = ApiClient.get(self, url)
else:
params = {
'limit': limit,
'after': after
}
response = ApiClient.get_path(self, '/', params=params)
return PagedResults(response, UserGroup)
def get_group(self, gid):
"""Get a single group
:param gid: the group id
:type gid: str
:rtype: UserGroup
"""
response = ApiClient.get_path(self, '/{0}'.format(gid))
return Utils.deserialize(response.text, UserGroup)
def get_group_users(self, gid):
"""Get the users of a group
:param gid: the group id
:type gid: str
:rtype: User
"""
response = ApiClient.get_path(self, '/{0}/users'.format(gid))
return Utils.deserialize(response.text, User)
def update_group(self, group):
"""Update a group
:param group: the group to update
:type group: UserGroup
:rtype: UserGroup
"""
return self.update_group_by_id(group.id, group)
def update_group_by_id(self, gid, group):
"""Update a group, defined by an id
:param gid: the target group id
:type gid: str
:param group: the data to update the target group
:type group: UserGroup
:rtype: UserGroup
"""
response = ApiClient.put_path(self, '/{0}'.format(gid), group)
return Utils.deserialize(response.text, UserGroup)
def create_group(self, group):
"""Create a group
:param group: the data to create a group
:type group: UserGroup
:rtype: UserGroup
"""
response = ApiClient.post_path(self, '/', group)
return Utils.deserialize(response.text, UserGroup)
def delete_group(self, gid):
"""Delete group by target id
:param gid: the target group id
:type gid: str
:return: None
"""
response = ApiClient.delete_path(self, '/{0}'.format(gid))
return Utils.deserialize(response.text, UserGroup)
def add_user_to_group(self, group, user):
"""Add a user to a group
:param group: the target group
:type group: UserGroup
:param user: the target user
:type user: User
:return: None
"""
return self.add_user_to_group_by_id(group.id, user.id)
def add_user_to_group_by_id(self, gid, uid):
"""Add a user to a group
:param gid: the target group id
:type gid: str
:param uid: the target user id
:type uid: str
:return: None
"""
response = ApiClient.put_path(self, '/{0}/users/{1}'.format(gid, uid))