Source code for google.apis.admin

# -*- coding: utf-8 -*-

from apis.google import GoogleAPI
from const import PAGE_SIZE
from util import print_json


[docs]class ReportsAPI(GoogleAPI): """Class to interact with G Suite Admin Reports APIs. Documentation for the Python API: - https://developers.google.com/resources/api-libraries/documentation/admin/reports_v1/python/latest/ See also: https://developers.google.com/admin-sdk/reports/v1/quickstart/python """ _service_name = 'admin' _version = 'reports_v1'
[docs] def activity(self, user_key='all', app_name=None, **kwargs): """Return the last 180 days of activities. https://developers.google.com/admin-sdk/reports/v1/reference/activities/list The ``application_name`` parameter specifies which events are to be retrieved. The possible values include: - ``admin`` – The Admin console application's activity reports return account information about different types of `administrator activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/admin-event-names.html>`_. - ``calendar`` – The G Suite Calendar application's activity reports return information about various `Calendar activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/calendar-event-names>`_. - ``drive`` – The Google Drive application's activity reports return information about various `Google Drive activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/drive-event-names>`_. The Drive activity report is only available for G Suite Business customers. - ``groups`` – The Google Groups application's activity reports return information about various `Groups activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/groups-event-names>`_. - ``gplus`` – The Google+ application's activity reports return information about various `Google+ activity events <https://developers.google.com/admin-sdk/reports/v1/appendix/activity/gplus>`_. - ``login`` – The G Suite Login application's activity reports return account information about different types of `Login activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/login-event-names.html>`_. - ``mobile`` – The G Suite Mobile Audit activity report return information about different types of `Mobile Audit activity events <https://developers.google.com/admin-sdk/reports/v1/reference/appendix/mobile>`_. - ``rules`` – The G Suite Rules activity report return information about different types of `Rules activity events, <https://developers.google.com/admin-sdk/reports/v1/appendix/activity/rules>`_. - ``token`` – The G Suite Token application's activity reports return account information about different types of `Token activity events <https://developers.google.com/admin-sdk/reports/v1/reference/activity-ref-appendix-a/token-event-names.html>`_. :param str user_key: The value can be ``'all'``, which returns all administrator information, or a ``userKey``, which represents a user's unique G Suite profile ID or the primary email address of a person or entity. :param str app_name: Name of application from the list above. If set to ``None``, data will be retrieved from *all* the applications listed above. :return: JSON """ args = { 'userKey': user_key, # 'applicationName': application_name, 'maxResults': PAGE_SIZE, # Accepted range is [1, 1000] } data = {} # If no application was specified, just get everything all_apps = ('admin', 'calendar', 'drive', 'groups', 'gplus', 'login', 'mobile', 'rules', 'token') if app_name is None: app_name = all_apps else: app_name = [app_name] for app in app_name: items = [] page_token = None while True: act = self.service.activities().list(applicationName=app, pageToken=page_token, **args).execute() page_token = act.get('nextPageToken') items += act.get('items', []) if page_token is None: break data[app] = items print_json(data) raise EnvironmentError return items
# Not useful for this project
[docs] def get_customer_usage_reports(self, date, customer_id=False): """Get customer usage reports. https://developers.google.com/admin-sdk/reports/v1/reference/customerUsageReports/get :param date: :param customer_id: :return: JSON """ if not customer_id: report = self.service.customerUsageReports().get(date=date).execute() else: report = self.service.activities().list().execute() return report
# Not useful for this project
[docs] def get_user_usage_report(self, date, user_key='all'): """Get user usage report. https://developers.google.com/admin-sdk/reports/v1/reference/userUsageReport/get :param date: :param user_key: :return: JSON """ report = self.service.userUsageReport().get(date=date, userKey=user_key).execute() return report
[docs]class DirectoryAPI(GoogleAPI): """Class to interact with G Suite Admin Directory APIs. Documentation for the Python API: - https://developers.google.com/resources/api-libraries/documentation/admin/directory_v1/python/latest/ See also: https://developers.google.com/admin-sdk/directory/v1/quickstart/python """ _service_name = 'admin' _version = 'directory_v1' def __init__(self, **kwargs): super().__init__(**kwargs)
[docs] def list_chromeos_devices(self, fields='*'): """List up to 100 Chrome OS devices in the organization. API: https://developers.google.com/resources/api-libraries/documentation/admin/directory_v1/python/latest/admin_directory_v1.chromeosdevices.html Reference: https://developers.google.com/admin-sdk/directory/v1/reference/chromeosdevices/list :param str fields: Comma-separated list of metadata fields to request. :return: The list of Chrome OS devices. See one of the documentation links above for the format of the return value. :rtype: list """ items = [] page_token = None args = {'customerId': self.customer_id, 'projection': 'FULL', 'fields': fields} while True: dev_set = self.service.chromeosdevices().list(pageToken=page_token, **args).execute() page_token = dev_set.get('nextPageToken') items += dev_set.get('chromeosdevices', []) if page_token is None: break return items
[docs] def get_user(self, user_email): """Get information for a single user specified by their email. https://developers.google.com/admin-sdk/directory/v1/reference/users/get :param str user_email: user's email :return: JSON """ user = self.service.users().get(userKey=user_email).execute() return user
[docs] def get_all_users(self, domain_name): """Return all users in the domain. https://developers.google.com/admin-sdk/directory/v1/reference/users/list :param str domain_name: the name of the domain :return: JSON """ users = self.service.users().list(domain=domain_name).execute() return users
[docs] def get_chrome_os_devices_properties(self, device_id): """Get data pertaining to a single ChromeOS device. https://developers.google.com/admin-sdk/directory/v1/reference/chromeosdevices/get :param str device_id: unique ID for the device. :return: JSON """ device_info = self.service.chromeosdevices().get(customerId=self.customer_id, deviceId=device_id).execute() return device_info
[docs] def list_customers_mobile_devices_properties(self): """Get a list of mobile devices. https://developers.google.com/admin-sdk/directory/v1/reference/mobiledevices/list :return: JSON """ mobiles = self.service.mobiledevices().list(customerId=self.customer_id).execute() return mobiles
[docs] def get_mobile_devices_properties(self, resource_id): """Get data pertaining to a single mobile device. https://developers.google.com/admin-sdk/directory/v1/reference/mobiledevices/get :param str resource_id: The unique ID the API service uses to identify the mobile device. :return: JSON """ mobile_info = self.service.mobiledevices().get(customerId=self.customer_id, resourceId=resource_id).execute() return mobile_info
[docs] def suspend_user_account(self, user_email): """Suspend an user's account. https://developers.google.com/admin-sdk/directory/v1/reference/users/update https://developers.google.com/admin-sdk/directory/v1/guides/manage-users :param str user_email: Email for the user to be suspended. :return: JSON """ request_body = {'suspended': True} return_info = self.service.users.update(userKey=user_email, body=request_body).execute() return return_info
[docs] def unsuspend_user_account(self, user_email): """Un-suspend a user's account. https://developers.google.com/admin-sdk/directory/v1/reference/users/update https://developers.google.com/admin-sdk/directory/v1/guides/manage-users :param str user_email: Email for the user to be un-suspended. :return: JSON """ request_body = {'suspended': False} return_info = self.service.users.update(userKey=user_email, body=request_body).execute() return return_info