-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Admin Directory SDK.
--   
--   The Admin SDK Directory API lets you view and manage enterprise
--   resources such as users and groups, administrative notifications,
--   security features, and more.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>directory_v1</tt> of the
--   API.
@package gogol-admin-directory
@version 0.3.0


module Network.Google.Directory.Types

-- | Default request referring to version <tt>directory_v1</tt> of the
--   Admin Directory API. This contains the host and root path used as a
--   starting point for constructing service requests.
directoryService :: ServiceConfig

-- | View delegated admin roles for your domain
adminDirectoryRoleManagementReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly"]

-- | View groups on your domain
adminDirectoryGroupReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.readonly"]

-- | View your Chrome OS devices' metadata
adminDirectoryDeviceChromeosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly"]

-- | View and manage your Chrome OS devices' metadata
adminDirectoryDeviceChromeosScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos"]

-- | View and manage the provisioning of users on your domain
adminDirectoryUserScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user"]

-- | View group subscriptions on your domain
adminDirectoryGroupMemberReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member.readonly"]

-- | View and manage user aliases on your domain
adminDirectoryUserAliasScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias"]

-- | View and manage the provisioning of calendar resources on your domain
adminDirectoryResourceCalendarScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]

-- | Manage your mobile devices by performing administrative tasks
adminDirectoryDeviceMobileActionScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.action"]

-- | View calendar resources on your domain
adminDirectoryResourceCalendarReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly"]

-- | View domains related to your customers
adminDirectoryDomainReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain.readonly"]

-- | View and manage the provisioning of user schemas on your domain
adminDirectoryUserschemaScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema"]

-- | View user schemas on your domain
adminDirectoryUserschemaReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema.readonly"]

-- | View and manage the provisioning of domains for your customers
adminDirectoryDomainScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain"]

-- | Manage delegated admin roles for your domain
adminDirectoryRoleManagementScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement"]

-- | View and manage the provisioning of groups on your domain
adminDirectoryGroupScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group"]

-- | View organization units on your domain
adminDirectoryOrgUnitReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit.readonly"]

-- | View and manage customer related information
adminDirectoryCustomerScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer"]

-- | View customer related information
adminDirectoryCustomerReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer.readonly"]

-- | View and manage organization units on your domain
adminDirectoryOrgUnitScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit"]

-- | View users on your domain
adminDirectoryUserReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.readonly"]

-- | View user aliases on your domain
adminDirectoryUserAliasReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias.readonly"]

-- | Manage data access permissions for users on your domain
adminDirectoryUserSecurityScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.security"]

-- | View and manage group subscriptions on your domain
adminDirectoryGroupMemberScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member"]

-- | View and manage notifications received on your domain
adminDirectoryNotificationsScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.notifications"]

-- | View and manage your mobile devices' metadata
adminDirectoryDeviceMobileScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile"]

-- | View your mobile devices' metadata
adminDirectoryDeviceMobileReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.readonly"]

-- | JSON template for verification codes in Directory API.
--   
--   <i>See:</i> <a>verificationCode</a> smart constructor.
data VerificationCode

-- | Creates a value of <a>VerificationCode</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcVerificationCode</a></li>
--   <li><a>vcEtag</a></li>
--   <li><a>vcKind</a></li>
--   <li><a>vcUserId</a></li>
--   </ul>
verificationCode :: VerificationCode

-- | A current verification code for the user. Invalidated or used
--   verification codes are not returned as part of the result.
vcVerificationCode :: Lens' VerificationCode (Maybe Text)

-- | ETag of the resource.
vcEtag :: Lens' VerificationCode (Maybe Text)

-- | The type of the resource. This is always adminverificationCode.
vcKind :: Lens' VerificationCode Text

-- | The obfuscated unique ID of the user.
vcUserId :: Lens' VerificationCode (Maybe Text)

-- | JSON template for Org Unit resource in Directory API.
--   
--   <i>See:</i> <a>orgUnit</a> smart constructor.
data OrgUnit

-- | Creates a value of <a>OrgUnit</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouEtag</a></li>
--   <li><a>ouParentOrgUnitPath</a></li>
--   <li><a>ouKind</a></li>
--   <li><a>ouOrgUnitPath</a></li>
--   <li><a>ouName</a></li>
--   <li><a>ouBlockInheritance</a></li>
--   <li><a>ouParentOrgUnitId</a></li>
--   <li><a>ouDescription</a></li>
--   <li><a>ouOrgUnitId</a></li>
--   </ul>
orgUnit :: OrgUnit

-- | ETag of the resource.
ouEtag :: Lens' OrgUnit (Maybe Text)

-- | Path of parent OrgUnit
ouParentOrgUnitPath :: Lens' OrgUnit (Maybe Text)

-- | Kind of resource this is.
ouKind :: Lens' OrgUnit Text

-- | Path of OrgUnit
ouOrgUnitPath :: Lens' OrgUnit (Maybe Text)

-- | Name of OrgUnit
ouName :: Lens' OrgUnit (Maybe Text)

-- | Should block inheritance
ouBlockInheritance :: Lens' OrgUnit (Maybe Bool)

-- | Id of parent OrgUnit
ouParentOrgUnitId :: Lens' OrgUnit (Maybe Text)

-- | Description of OrgUnit
ouDescription :: Lens' OrgUnit (Maybe Text)

-- | Id of OrgUnit
ouOrgUnitId :: Lens' OrgUnit (Maybe Text)

-- | JSON request template for setting/revoking admin status of a user in
--   Directory API.
--   
--   <i>See:</i> <a>userMakeAdmin</a> smart constructor.
data UserMakeAdmin

-- | Creates a value of <a>UserMakeAdmin</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umaStatus</a></li>
--   </ul>
userMakeAdmin :: UserMakeAdmin

-- | Boolean indicating new admin status of the user
umaStatus :: Lens' UserMakeAdmin (Maybe Bool)

-- | JSON template for About (notes) of a user in Directory API.
--   
--   <i>See:</i> <a>userAbout</a> smart constructor.
data UserAbout

-- | Creates a value of <a>UserAbout</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaValue</a></li>
--   <li><a>uaContentType</a></li>
--   </ul>
userAbout :: UserAbout

-- | Actual value of notes.
uaValue :: Lens' UserAbout (Maybe Text)

-- | About entry can have a type which indicates the content type. It can
--   either be plain or html. By default, notes contents are assumed to
--   contain plain text.
uaContentType :: Lens' UserAbout (Maybe Text)

-- | Event on which subscription is intended (if subscribing)
data UsersListEvent

-- | <tt>add</tt> User Created Event
Add :: UsersListEvent

-- | <tt>delete</tt> User Deleted Event
Delete' :: UsersListEvent

-- | <tt>makeAdmin</tt> User Admin Status Change Event
MakeAdmin :: UsersListEvent

-- | <tt>undelete</tt> User Undeleted Event
Undelete :: UsersListEvent

-- | <tt>update</tt> User Updated Event
Update :: UsersListEvent

-- | JSON response template for List privileges operation in Directory API.
--   
--   <i>See:</i> <a>privileges</a> smart constructor.
data Privileges

-- | Creates a value of <a>Privileges</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pEtag</a></li>
--   <li><a>pKind</a></li>
--   <li><a>pItems</a></li>
--   </ul>
privileges :: Privileges

-- | ETag of the resource.
pEtag :: Lens' Privileges (Maybe Text)

-- | The type of the API resource. This is always adminprivileges.
pKind :: Lens' Privileges Text

-- | A list of Privilege resources.
pItems :: Lens' Privileges [Privilege]

-- | JSON response template for List Groups operation in Directory API.
--   
--   <i>See:</i> <a>groups</a> smart constructor.
data Groups

-- | Creates a value of <a>Groups</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gGroups</a></li>
--   <li><a>gEtag</a></li>
--   <li><a>gNextPageToken</a></li>
--   <li><a>gKind</a></li>
--   </ul>
groups :: Groups

-- | List of group objects.
gGroups :: Lens' Groups [Group]

-- | ETag of the resource.
gEtag :: Lens' Groups (Maybe Text)

-- | Token used to access next page of this result.
gNextPageToken :: Lens' Groups (Maybe Text)

-- | Kind of resource this is.
gKind :: Lens' Groups Text

-- | Event on which subscription is intended (if subscribing)
data UsersAliasesListEvent

-- | <tt>add</tt> Alias Created Event
UALEAdd :: UsersAliasesListEvent

-- | <tt>delete</tt> Alias Deleted Event
UALEDelete' :: UsersAliasesListEvent

-- | JSON response template for List roleAssignments operation in Directory
--   API.
--   
--   <i>See:</i> <a>roleAssignments</a> smart constructor.
data RoleAssignments

-- | Creates a value of <a>RoleAssignments</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raEtag</a></li>
--   <li><a>raNextPageToken</a></li>
--   <li><a>raKind</a></li>
--   <li><a>raItems</a></li>
--   </ul>
roleAssignments :: RoleAssignments

-- | ETag of the resource.
raEtag :: Lens' RoleAssignments (Maybe Text)
raNextPageToken :: Lens' RoleAssignments (Maybe Text)

-- | The type of the API resource. This is always adminroleAssignments.
raKind :: Lens' RoleAssignments Text

-- | A list of RoleAssignment resources.
raItems :: Lens' RoleAssignments [RoleAssignment]

-- | JSON template for privilege resource in Directory API.
--   
--   <i>See:</i> <a>privilege</a> smart constructor.
data Privilege

-- | Creates a value of <a>Privilege</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>priEtag</a></li>
--   <li><a>priIsOuScopable</a></li>
--   <li><a>priKind</a></li>
--   <li><a>priServiceName</a></li>
--   <li><a>priServiceId</a></li>
--   <li><a>priPrivilegeName</a></li>
--   <li><a>priChildPrivileges</a></li>
--   </ul>
privilege :: Privilege

-- | ETag of the resource.
priEtag :: Lens' Privilege (Maybe Text)

-- | If the privilege can be restricted to an organization unit.
priIsOuScopable :: Lens' Privilege (Maybe Bool)

-- | The type of the API resource. This is always adminprivilege.
priKind :: Lens' Privilege Text

-- | The name of the service this privilege is for.
priServiceName :: Lens' Privilege (Maybe Text)

-- | The obfuscated ID of the service this privilege is for.
priServiceId :: Lens' Privilege (Maybe Text)

-- | The name of the privilege.
priPrivilegeName :: Lens' Privilege (Maybe Text)

-- | A list of child privileges. Privileges for a service form a tree. Each
--   privilege can have a list of child privileges; this list is empty for
--   a leaf privilege.
priChildPrivileges :: Lens' Privilege [Privilege]

-- | Event on which subscription is intended (if subscribing)
data UsersAliasesWatchEvent

-- | <tt>add</tt> Alias Created Event
UAWEAdd :: UsersAliasesWatchEvent

-- | <tt>delete</tt> Alias Deleted Event
UAWEDelete' :: UsersAliasesWatchEvent

-- | JSON response template for List roles operation in Directory API.
--   
--   <i>See:</i> <a>roles</a> smart constructor.
data Roles

-- | Creates a value of <a>Roles</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rEtag</a></li>
--   <li><a>rNextPageToken</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rItems</a></li>
--   </ul>
roles :: Roles

-- | ETag of the resource.
rEtag :: Lens' Roles (Maybe Text)
rNextPageToken :: Lens' Roles (Maybe Text)

-- | The type of the API resource. This is always adminroles.
rKind :: Lens' Roles Text

-- | A list of Role resources.
rItems :: Lens' Roles [Role]

-- | Event on which subscription is intended (if subscribing)
data UsersWatchEvent

-- | <tt>add</tt> User Created Event
UWEAdd :: UsersWatchEvent

-- | <tt>delete</tt> User Deleted Event
UWEDelete' :: UsersWatchEvent

-- | <tt>makeAdmin</tt> User Admin Status Change Event
UWEMakeAdmin :: UsersWatchEvent

-- | <tt>undelete</tt> User Undeleted Event
UWEUndelete :: UsersWatchEvent

-- | <tt>update</tt> User Updated Event
UWEUpdate :: UsersWatchEvent

-- | JSON template for address.
--   
--   <i>See:</i> <a>userAddress</a> smart constructor.
data UserAddress

-- | Creates a value of <a>UserAddress</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaStreetAddress</a></li>
--   <li><a>uaPoBox</a></li>
--   <li><a>uaCountry</a></li>
--   <li><a>uaPostalCode</a></li>
--   <li><a>uaFormatted</a></li>
--   <li><a>uaExtendedAddress</a></li>
--   <li><a>uaLocality</a></li>
--   <li><a>uaPrimary</a></li>
--   <li><a>uaCountryCode</a></li>
--   <li><a>uaRegion</a></li>
--   <li><a>uaType</a></li>
--   <li><a>uaCustomType</a></li>
--   <li><a>uaSourceIsStructured</a></li>
--   </ul>
userAddress :: UserAddress

-- | Street.
uaStreetAddress :: Lens' UserAddress (Maybe Text)

-- | Other parts of address.
uaPoBox :: Lens' UserAddress (Maybe Text)

-- | Country.
uaCountry :: Lens' UserAddress (Maybe Text)

-- | Postal code.
uaPostalCode :: Lens' UserAddress (Maybe Text)

-- | Formatted address.
uaFormatted :: Lens' UserAddress (Maybe Text)

-- | Extended Address.
uaExtendedAddress :: Lens' UserAddress (Maybe Text)

-- | Locality.
uaLocality :: Lens' UserAddress (Maybe Text)

-- | If this is user's primary address. Only one entry could be marked as
--   primary.
uaPrimary :: Lens' UserAddress (Maybe Bool)

-- | Country code.
uaCountryCode :: Lens' UserAddress (Maybe Text)

-- | Region.
uaRegion :: Lens' UserAddress (Maybe Text)

-- | Each entry can have a type which indicates standard values of that
--   entry. For example address could be of home, work etc. In addition to
--   the standard type, an entry can have a custom type and can take any
--   value. Such type should have the CUSTOM value as type and also have a
--   customType value.
uaType :: Lens' UserAddress (Maybe Text)

-- | Custom type.
uaCustomType :: Lens' UserAddress (Maybe Text)

-- | User supplied address was structured. Structured addresses are NOT
--   supported at this time. You might be able to write structured
--   addresses, but any values will eventually be clobbered.
uaSourceIsStructured :: Lens' UserAddress (Maybe Bool)

-- | JSON template for postal address of a customer.
--   
--   <i>See:</i> <a>customerPostalAddress</a> smart constructor.
data CustomerPostalAddress

-- | Creates a value of <a>CustomerPostalAddress</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpaOrganizationName</a></li>
--   <li><a>cpaPostalCode</a></li>
--   <li><a>cpaAddressLine1</a></li>
--   <li><a>cpaLocality</a></li>
--   <li><a>cpaContactName</a></li>
--   <li><a>cpaAddressLine2</a></li>
--   <li><a>cpaCountryCode</a></li>
--   <li><a>cpaRegion</a></li>
--   <li><a>cpaAddressLine3</a></li>
--   </ul>
customerPostalAddress :: CustomerPostalAddress

-- | The company or company division name.
cpaOrganizationName :: Lens' CustomerPostalAddress (Maybe Text)

-- | The postal code. A postalCode example is a postal zip code such as
--   10009. This is in accordance with -
--   http://portablecontacts.net/draft-spec.html#address_element.
cpaPostalCode :: Lens' CustomerPostalAddress (Maybe Text)

-- | A customer's physical address. The address can be composed of one to
--   three lines.
cpaAddressLine1 :: Lens' CustomerPostalAddress (Maybe Text)

-- | Name of the locality. An example of a locality value is the city of
--   San Francisco.
cpaLocality :: Lens' CustomerPostalAddress (Maybe Text)

-- | The customer contact's name.
cpaContactName :: Lens' CustomerPostalAddress (Maybe Text)

-- | Address line 2 of the address.
cpaAddressLine2 :: Lens' CustomerPostalAddress (Maybe Text)

-- | This is a required property. For countryCode information see the ISO
--   3166 country code elements.
cpaCountryCode :: Lens' CustomerPostalAddress (Maybe Text)

-- | Name of the region. An example of a region value is NY for the state
--   of New York.
cpaRegion :: Lens' CustomerPostalAddress (Maybe Text)

-- | Address line 3 of the address.
cpaAddressLine3 :: Lens' CustomerPostalAddress (Maybe Text)

-- | JSON template for roleAssignment resource in Directory API.
--   
--   <i>See:</i> <a>roleAssignment</a> smart constructor.
data RoleAssignment

-- | Creates a value of <a>RoleAssignment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rolEtag</a></li>
--   <li><a>rolScopeType</a></li>
--   <li><a>rolKind</a></li>
--   <li><a>rolAssignedTo</a></li>
--   <li><a>rolRoleId</a></li>
--   <li><a>rolRoleAssignmentId</a></li>
--   <li><a>rolOrgUnitId</a></li>
--   </ul>
roleAssignment :: RoleAssignment

-- | ETag of the resource.
rolEtag :: Lens' RoleAssignment (Maybe Text)

-- | The scope in which this role is assigned. Possible values are: -
--   CUSTOMER - ORG_UNIT
rolScopeType :: Lens' RoleAssignment (Maybe Text)

-- | The type of the API resource. This is always adminroleAssignment.
rolKind :: Lens' RoleAssignment Text

-- | The unique ID of the user this role is assigned to.
rolAssignedTo :: Lens' RoleAssignment (Maybe Text)

-- | The ID of the role that is assigned.
rolRoleId :: Lens' RoleAssignment (Maybe Int64)

-- | ID of this roleAssignment.
rolRoleAssignmentId :: Lens' RoleAssignment (Maybe Int64)

-- | If the role is restricted to an organization unit, this contains the
--   ID for the organization unit the exercise of this role is restricted
--   to.
rolOrgUnitId :: Lens' RoleAssignment (Maybe Text)

-- | JSON template for Group resource in Directory API.
--   
--   <i>See:</i> <a>group'</a> smart constructor.
data Group

-- | Creates a value of <a>Group</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>groEmail</a></li>
--   <li><a>groEtag</a></li>
--   <li><a>groDirectMembersCount</a></li>
--   <li><a>groKind</a></li>
--   <li><a>groAliases</a></li>
--   <li><a>groNonEditableAliases</a></li>
--   <li><a>groName</a></li>
--   <li><a>groAdminCreated</a></li>
--   <li><a>groId</a></li>
--   <li><a>groDescription</a></li>
--   </ul>
group' :: Group

-- | Email of Group
groEmail :: Lens' Group (Maybe Text)

-- | ETag of the resource.
groEtag :: Lens' Group (Maybe Text)

-- | Group direct members count
groDirectMembersCount :: Lens' Group (Maybe Int64)

-- | Kind of resource this is.
groKind :: Lens' Group Text

-- | List of aliases (Read-only)
groAliases :: Lens' Group [Text]

-- | List of non editable aliases (Read-only)
groNonEditableAliases :: Lens' Group [Text]

-- | Group name
groName :: Lens' Group (Maybe Text)

-- | Is the group created by admin (Read-only) *
groAdminCreated :: Lens' Group (Maybe Bool)

-- | Unique identifier of Group (Read-only)
groId :: Lens' Group (Maybe Text)

-- | Description of the group
groDescription :: Lens' Group (Maybe Text)

-- | JSON template for Chrome Os Device resource in Directory API.
--   
--   <i>See:</i> <a>chromeOSDevice</a> smart constructor.
data ChromeOSDevice

-- | Creates a value of <a>ChromeOSDevice</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codStatus</a></li>
--   <li><a>codEtag</a></li>
--   <li><a>codAnnotatedUser</a></li>
--   <li><a>codPlatformVersion</a></li>
--   <li><a>codLastSync</a></li>
--   <li><a>codActiveTimeRanges</a></li>
--   <li><a>codKind</a></li>
--   <li><a>codEthernetMACAddress</a></li>
--   <li><a>codLastEnrollmentTime</a></li>
--   <li><a>codAnnotatedLocation</a></li>
--   <li><a>codMACAddress</a></li>
--   <li><a>codOrgUnitPath</a></li>
--   <li><a>codRecentUsers</a></li>
--   <li><a>codSupportEndDate</a></li>
--   <li><a>codModel</a></li>
--   <li><a>codWillAutoRenew</a></li>
--   <li><a>codMeid</a></li>
--   <li><a>codDeviceId</a></li>
--   <li><a>codBootMode</a></li>
--   <li><a>codOrderNumber</a></li>
--   <li><a>codAnnotatedAssetId</a></li>
--   <li><a>codNotes</a></li>
--   <li><a>codSerialNumber</a></li>
--   <li><a>codFirmwareVersion</a></li>
--   <li><a>codOSVersion</a></li>
--   </ul>
chromeOSDevice :: ChromeOSDevice

-- | status of the device (Read-only)
codStatus :: Lens' ChromeOSDevice (Maybe Text)

-- | ETag of the resource.
codEtag :: Lens' ChromeOSDevice (Maybe Text)

-- | User of the device
codAnnotatedUser :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook platform version (Read-only)
codPlatformVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Date and time the device was last synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
codLastSync :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | List of active time ranges (Read-only)
codActiveTimeRanges :: Lens' ChromeOSDevice [ChromeOSDeviceActiveTimeRangesItem]

-- | Kind of resource this is.
codKind :: Lens' ChromeOSDevice Text

-- | Chromebook Mac Address on ethernet network interface (Read-only)
codEthernetMACAddress :: Lens' ChromeOSDevice (Maybe Text)

-- | Date and time the device was last enrolled (Read-only)
codLastEnrollmentTime :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | Address or location of the device as noted by the administrator
codAnnotatedLocation :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook Mac Address on wifi network interface (Read-only)
codMACAddress :: Lens' ChromeOSDevice (Maybe Text)

-- | OrgUnit of the device
codOrgUnitPath :: Lens' ChromeOSDevice (Maybe Text)

-- | List of recent device users, in descending order by last login time
--   (Read-only)
codRecentUsers :: Lens' ChromeOSDevice [ChromeOSDeviceRecentUsersItem]

-- | Final date the device will be supported (Read-only)
codSupportEndDate :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | Chromebook Model (Read-only)
codModel :: Lens' ChromeOSDevice (Maybe Text)

-- | Will Chromebook auto renew after support end date (Read-only)
codWillAutoRenew :: Lens' ChromeOSDevice (Maybe Bool)

-- | Mobile Equipment identifier for the 3G mobile card in the Chromebook
--   (Read-only)
codMeid :: Lens' ChromeOSDevice (Maybe Text)

-- | Unique identifier of Chrome OS Device (Read-only)
codDeviceId :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook boot mode (Read-only)
codBootMode :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook order number (Read-only)
codOrderNumber :: Lens' ChromeOSDevice (Maybe Text)

-- | AssetId specified during enrollment or through later annotation
codAnnotatedAssetId :: Lens' ChromeOSDevice (Maybe Text)

-- | Notes added by the administrator
codNotes :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook serial number (Read-only)
codSerialNumber :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook firmware version (Read-only)
codFirmwareVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook Os Version (Read-only)
codOSVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesPatchProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
Basic :: ChromeosDevicesPatchProjection

-- | <tt>FULL</tt> Includes all metadata fields
Full :: ChromeosDevicesPatchProjection

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesGetProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDGPBasic :: ChromeosDevicesGetProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDGPFull :: ChromeosDevicesGetProjection

-- | JSON response template for List Users operation in Apps Directory API.
--   
--   <i>See:</i> <a>users</a> smart constructor.
data Users

-- | Creates a value of <a>Users</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uEtag</a></li>
--   <li><a>uNextPageToken</a></li>
--   <li><a>uUsers</a></li>
--   <li><a>uKind</a></li>
--   <li><a>uTriggerEvent</a></li>
--   </ul>
users :: Users

-- | ETag of the resource.
uEtag :: Lens' Users (Maybe Text)

-- | Token used to access next page of this result.
uNextPageToken :: Lens' Users (Maybe Text)

-- | List of user objects.
uUsers :: Lens' Users [User]

-- | Kind of resource this is.
uKind :: Lens' Users Text

-- | Event that triggered this response (only used in case of Push
--   Response)
uTriggerEvent :: Lens' Users (Maybe Text)

-- | The template that returns individual ASP (Access Code) data.
--   
--   <i>See:</i> <a>asp</a> smart constructor.
data Asp

-- | Creates a value of <a>Asp</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aCreationTime</a></li>
--   <li><a>aEtag</a></li>
--   <li><a>aCodeId</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aName</a></li>
--   <li><a>aLastTimeUsed</a></li>
--   <li><a>aUserKey</a></li>
--   </ul>
asp :: Asp

-- | The time when the ASP was created. Expressed in Unix time format.
aCreationTime :: Lens' Asp (Maybe Int64)

-- | ETag of the ASP.
aEtag :: Lens' Asp (Maybe Text)

-- | The unique ID of the ASP.
aCodeId :: Lens' Asp (Maybe Int32)

-- | The type of the API resource. This is always adminasp.
aKind :: Lens' Asp Text

-- | The name of the application that the user, represented by their
--   userId, entered when the ASP was created.
aName :: Lens' Asp (Maybe Text)

-- | The time when the ASP was last used. Expressed in Unix time format.
aLastTimeUsed :: Lens' Asp (Maybe Int64)

-- | The unique ID of the user who issued the ASP.
aUserKey :: Lens' Asp (Maybe Text)

-- | JSON response template for List Schema operation in Directory API.
--   
--   <i>See:</i> <a>schemas</a> smart constructor.
data Schemas

-- | Creates a value of <a>Schemas</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sSchemas</a></li>
--   <li><a>sKind</a></li>
--   </ul>
schemas :: Schemas

-- | ETag of the resource.
sEtag :: Lens' Schemas (Maybe Text)

-- | List of UserSchema objects.
sSchemas :: Lens' Schemas [Schema]

-- | Kind of resource this is.
sKind :: Lens' Schemas Text

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersListViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
AdminView :: UsersListViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
DomainPublic :: UsersListViewType

-- | Whether to return all sub-organizations or just immediate children
data OrgUnitsListType

-- | <tt>all</tt> All sub-organization units.
All :: OrgUnitsListType

-- | <tt>children</tt> Immediate children only (default).
Children :: OrgUnitsListType

-- | Template for a notification resource.
--   
--   <i>See:</i> <a>notification</a> smart constructor.
data Notification

-- | Creates a value of <a>Notification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nSubject</a></li>
--   <li><a>nEtag</a></li>
--   <li><a>nKind</a></li>
--   <li><a>nBody</a></li>
--   <li><a>nFromAddress</a></li>
--   <li><a>nIsUnread</a></li>
--   <li><a>nNotificationId</a></li>
--   <li><a>nSendTime</a></li>
--   </ul>
notification :: Notification

-- | Subject of the notification (Read-only)
nSubject :: Lens' Notification (Maybe Text)

-- | ETag of the resource.
nEtag :: Lens' Notification (Maybe Text)

-- | The type of the resource.
nKind :: Lens' Notification Text

-- | Body of the notification (Read-only)
nBody :: Lens' Notification (Maybe Text)

-- | Address from which the notification is received (Read-only)
nFromAddress :: Lens' Notification (Maybe Text)

-- | Boolean indicating whether the notification is unread or not.
nIsUnread :: Lens' Notification (Maybe Bool)
nNotificationId :: Lens' Notification (Maybe Text)

-- | Time at which notification was sent (Read-only)
nSendTime :: Lens' Notification (Maybe UTCTime)

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
data MobileDevicesListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
Ascending :: MobileDevicesListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
Descending :: MobileDevicesListSortOrder

-- | JSON template for instant messenger of an user.
--   
--   <i>See:</i> <a>userIm</a> smart constructor.
data UserIm

-- | Creates a value of <a>UserIm</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uiIm</a></li>
--   <li><a>uiProtocol</a></li>
--   <li><a>uiPrimary</a></li>
--   <li><a>uiCustomProtocol</a></li>
--   <li><a>uiType</a></li>
--   <li><a>uiCustomType</a></li>
--   </ul>
userIm :: UserIm

-- | Instant messenger id.
uiIm :: Lens' UserIm (Maybe Text)

-- | Protocol used in the instant messenger. It should be one of the values
--   from ImProtocolTypes map. Similar to type, it can take a CUSTOM value
--   and specify the custom name in customProtocol field.
uiProtocol :: Lens' UserIm (Maybe Text)

-- | If this is user's primary im. Only one entry could be marked as
--   primary.
uiPrimary :: Lens' UserIm (Maybe Bool)

-- | Custom protocol.
uiCustomProtocol :: Lens' UserIm (Maybe Text)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example instant messengers could be of home, work etc. In
--   addition to the standard type, an entry can have a custom type and can
--   take any value. Such types should have the CUSTOM value as type and
--   also have a customType value.
uiType :: Lens' UserIm (Maybe Text)

-- | Custom type.
uiCustomType :: Lens' UserIm (Maybe Text)

-- | Column to use for sorting results
data UsersListOrderBy

-- | <tt>email</tt> Primary email of the user.
Email :: UsersListOrderBy

-- | <tt>familyName</tt> User's family name.
FamilyName :: UsersListOrderBy

-- | <tt>givenName</tt> User's given name.
GivenName :: UsersListOrderBy

-- | JSON response template for List tokens operation in Directory API.
--   
--   <i>See:</i> <a>tokens</a> smart constructor.
data Tokens

-- | Creates a value of <a>Tokens</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tEtag</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tokens :: Tokens

-- | ETag of the resource.
tEtag :: Lens' Tokens (Maybe Text)

-- | The type of the API resource. This is always admintokenList.
tKind :: Lens' Tokens Text

-- | A list of Token resources.
tItems :: Lens' Tokens [Token]

-- | Custom fields of the user.
--   
--   <i>See:</i> <a>userCustomSchemas</a> smart constructor.
data UserCustomSchemas

-- | Creates a value of <a>UserCustomSchemas</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucsAddtional</a></li>
--   </ul>
userCustomSchemas :: HashMap Text UserCustomProperties -> UserCustomSchemas
ucsAddtional :: Lens' UserCustomSchemas (HashMap Text UserCustomProperties)

-- | JSON response template to list domain aliases in Directory API.
--   
--   <i>See:</i> <a>domainAliases</a> smart constructor.
data DomainAliases

-- | Creates a value of <a>DomainAliases</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daEtag</a></li>
--   <li><a>daKind</a></li>
--   <li><a>daDomainAliases</a></li>
--   </ul>
domainAliases :: DomainAliases

-- | ETag of the resource.
daEtag :: Lens' DomainAliases (Maybe Text)

-- | Kind of resource this is.
daKind :: Lens' DomainAliases Text

-- | List of domain alias objects.
daDomainAliases :: Lens' DomainAliases [DomainAlias]

-- | JSON response template to list aliases in Directory API.
--   
--   <i>See:</i> <a>aliases</a> smart constructor.
data Aliases

-- | Creates a value of <a>Aliases</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aliEtag</a></li>
--   <li><a>aliKind</a></li>
--   <li><a>aliAliases</a></li>
--   </ul>
aliases :: Aliases

-- | ETag of the resource.
aliEtag :: Lens' Aliases (Maybe Text)

-- | Kind of resource this is.
aliKind :: Lens' Aliases Text

-- | List of alias objects.
aliAliases :: Lens' Aliases [JSONValue]

-- | JSON template for Calendar Resource object in Directory API.
--   
--   <i>See:</i> <a>calendarResource</a> smart constructor.
data CalendarResource

-- | Creates a value of <a>CalendarResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crEtags</a></li>
--   <li><a>crResourceId</a></li>
--   <li><a>crResourceType</a></li>
--   <li><a>crResourceName</a></li>
--   <li><a>crKind</a></li>
--   <li><a>crResourceEmail</a></li>
--   <li><a>crResourceDescription</a></li>
--   </ul>
calendarResource :: CalendarResource

-- | ETag of the resource.
crEtags :: Lens' CalendarResource (Maybe Text)

-- | The unique ID for the calendar resource.
crResourceId :: Lens' CalendarResource (Maybe Text)

-- | The type of the calendar resource. Used for grouping resources in the
--   calendar user interface.
crResourceType :: Lens' CalendarResource (Maybe Text)

-- | The name of the calendar resource. For example, Training Room 1A
crResourceName :: Lens' CalendarResource (Maybe Text)

-- | The type of the resource. For calendar resources, the value is
--   adminresourcesCalendarResource.
crKind :: Lens' CalendarResource Text

-- | The read-only email ID for the calendar resource. Generated as part of
--   creating a new calendar resource.
crResourceEmail :: Lens' CalendarResource (Maybe Text)

-- | The brief description of the calendar resource.
crResourceDescription :: Lens' CalendarResource (Maybe Text)

-- | JSON request template to undelete a user in Directory API.
--   
--   <i>See:</i> <a>userUndelete</a> smart constructor.
data UserUndelete

-- | Creates a value of <a>UserUndelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uuOrgUnitPath</a></li>
--   </ul>
userUndelete :: UserUndelete

-- | OrgUnit of User
uuOrgUnitPath :: Lens' UserUndelete (Maybe Text)

-- | JSON response template for List Members operation in Directory API.
--   
--   <i>See:</i> <a>members</a> smart constructor.
data Members

-- | Creates a value of <a>Members</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mEtag</a></li>
--   <li><a>mNextPageToken</a></li>
--   <li><a>mKind</a></li>
--   <li><a>mMembers</a></li>
--   </ul>
members :: Members

-- | ETag of the resource.
mEtag :: Lens' Members (Maybe Text)

-- | Token used to access next page of this result.
mNextPageToken :: Lens' Members (Maybe Text)

-- | Kind of resource this is.
mKind :: Lens' Members Text

-- | List of member objects.
mMembers :: Lens' Members [Member]

-- | An notification channel used to watch for resource changes.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)

-- | JSON response template for List Mobile Devices operation in Directory
--   API.
--   
--   <i>See:</i> <a>mobileDevices</a> smart constructor.
data MobileDevices

-- | Creates a value of <a>MobileDevices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdEtag</a></li>
--   <li><a>mdNextPageToken</a></li>
--   <li><a>mdKind</a></li>
--   <li><a>mdMobileDevices</a></li>
--   </ul>
mobileDevices :: MobileDevices

-- | ETag of the resource.
mdEtag :: Lens' MobileDevices (Maybe Text)

-- | Token used to access next page of this result.
mdNextPageToken :: Lens' MobileDevices (Maybe Text)

-- | Kind of resource this is.
mdKind :: Lens' MobileDevices Text

-- | List of Mobile Device objects.
mdMobileDevices :: Lens' MobileDevices [MobileDevice]

-- | JSON template for token resource in Directory API.
--   
--   <i>See:</i> <a>token</a> smart constructor.
data Token

-- | Creates a value of <a>Token</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tokClientId</a></li>
--   <li><a>tokEtag</a></li>
--   <li><a>tokDisplayText</a></li>
--   <li><a>tokKind</a></li>
--   <li><a>tokScopes</a></li>
--   <li><a>tokNATiveApp</a></li>
--   <li><a>tokAnonymous</a></li>
--   <li><a>tokUserKey</a></li>
--   </ul>
token :: Token

-- | The Client ID of the application the token is issued to.
tokClientId :: Lens' Token (Maybe Text)

-- | ETag of the resource.
tokEtag :: Lens' Token (Maybe Text)

-- | The displayable name of the application the token is issued to.
tokDisplayText :: Lens' Token (Maybe Text)

-- | The type of the API resource. This is always admintoken.
tokKind :: Lens' Token Text

-- | A list of authorization scopes the application is granted.
tokScopes :: Lens' Token [Text]

-- | Whether the token is issued to an installed application. The value is
--   true if the application is installed to a desktop or mobile device.
tokNATiveApp :: Lens' Token (Maybe Bool)

-- | Whether the application is registered with Google. The value is true
--   if the application has an anonymous Client ID.
tokAnonymous :: Lens' Token (Maybe Bool)

-- | The unique ID of the user that issued the token.
tokUserKey :: Lens' Token (Maybe Text)

-- | JSON template for name of a user in Directory API.
--   
--   <i>See:</i> <a>userName</a> smart constructor.
data UserName

-- | Creates a value of <a>UserName</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unGivenName</a></li>
--   <li><a>unFullName</a></li>
--   <li><a>unFamilyName</a></li>
--   </ul>
userName :: UserName

-- | First Name
unGivenName :: Lens' UserName (Maybe Text)

-- | Full Name
unFullName :: Lens' UserName (Maybe Text)

-- | Last Name
unFamilyName :: Lens' UserName (Maybe Text)

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersWatchViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
UWVTAdminView :: UsersWatchViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
UWVTDomainPublic :: UsersWatchViewType
data ChromeOSDeviceRecentUsersItem

-- | Creates a value of <a>ChromeOSDeviceRecentUsersItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codruiEmail</a></li>
--   <li><a>codruiType</a></li>
--   </ul>
chromeOSDeviceRecentUsersItem :: ChromeOSDeviceRecentUsersItem

-- | Email address of the user. Present only if the user type is managed
codruiEmail :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)

-- | The type of the user
codruiType :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)

-- | JSON template for Domain Alias object in Directory API.
--   
--   <i>See:</i> <a>domainAlias</a> smart constructor.
data DomainAlias

-- | Creates a value of <a>DomainAlias</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCreationTime</a></li>
--   <li><a>dEtag</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dVerified</a></li>
--   <li><a>dDomainAliasName</a></li>
--   <li><a>dParentDomainName</a></li>
--   </ul>
domainAlias :: DomainAlias

-- | The creation time of the domain alias. (Read-only).
dCreationTime :: Lens' DomainAlias (Maybe Int64)

-- | ETag of the resource.
dEtag :: Lens' DomainAlias (Maybe Text)

-- | Kind of resource this is.
dKind :: Lens' DomainAlias Text

-- | Indicates the verification state of a domain alias. (Read-only)
dVerified :: Lens' DomainAlias (Maybe Bool)

-- | The domain alias name.
dDomainAliasName :: Lens' DomainAlias (Maybe Text)

-- | The parent domain name that the domain alias is associated with. This
--   can either be a primary or secondary domain name within a customer.
dParentDomainName :: Lens' DomainAlias (Maybe Text)

-- | JSON template for Alias object in Directory API.
--   
--   <i>See:</i> <a>alias</a> smart constructor.
data Alias

-- | Creates a value of <a>Alias</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaEtag</a></li>
--   <li><a>aaKind</a></li>
--   <li><a>aaAlias</a></li>
--   <li><a>aaId</a></li>
--   <li><a>aaPrimaryEmail</a></li>
--   </ul>
alias :: Alias

-- | ETag of the resource.
aaEtag :: Lens' Alias (Maybe Text)

-- | Kind of resource this is.
aaKind :: Lens' Alias Text

-- | A alias email
aaAlias :: Lens' Alias (Maybe Text)

-- | Unique id of the group (Read-only) Unique id of the user (Read-only)
aaId :: Lens' Alias (Maybe Text)

-- | Group's primary email (Read-only) User's primary email (Read-only)
aaPrimaryEmail :: Lens' Alias (Maybe Text)

-- | What subset of fields to fetch for this user.
data UsersGetProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
UGPBasic :: UsersGetProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
UGPCustom :: UsersGetProjection

-- | <tt>full</tt> Include all fields associated with this user.
UGPFull :: UsersGetProjection

-- | JSON template for Schema resource in Directory API.
--   
--   <i>See:</i> <a>schema</a> smart constructor.
data Schema

-- | Creates a value of <a>Schema</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>schEtag</a></li>
--   <li><a>schKind</a></li>
--   <li><a>schSchemaName</a></li>
--   <li><a>schSchemaId</a></li>
--   <li><a>schFields</a></li>
--   </ul>
schema :: Schema

-- | ETag of the resource.
schEtag :: Lens' Schema (Maybe Text)

-- | Kind of resource this is.
schKind :: Lens' Schema Text

-- | Schema name
schSchemaName :: Lens' Schema (Maybe Text)

-- | Unique identifier of Schema (Read-only)
schSchemaId :: Lens' Schema (Maybe Text)

-- | Fields of Schema
schFields :: Lens' Schema [SchemaFieldSpec]

-- | JSON template for User object in Directory API.
--   
--   <i>See:</i> <a>user</a> smart constructor.
data User

-- | Creates a value of <a>User</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>useCreationTime</a></li>
--   <li><a>useLastLoginTime</a></li>
--   <li><a>useThumbnailPhotoEtag</a></li>
--   <li><a>useEtag</a></li>
--   <li><a>useIPWhiteListed</a></li>
--   <li><a>useRelations</a></li>
--   <li><a>useHashFunction</a></li>
--   <li><a>useKind</a></li>
--   <li><a>useChangePasswordAtNextLogin</a></li>
--   <li><a>useWebsites</a></li>
--   <li><a>useAddresses</a></li>
--   <li><a>useAliases</a></li>
--   <li><a>useThumbnailPhotoURL</a></li>
--   <li><a>useExternalIds</a></li>
--   <li><a>useSuspended</a></li>
--   <li><a>useAgreedToTerms</a></li>
--   <li><a>useDeletionTime</a></li>
--   <li><a>useNonEditableAliases</a></li>
--   <li><a>useOrgUnitPath</a></li>
--   <li><a>useCustomerId</a></li>
--   <li><a>useIncludeInGlobalAddressList</a></li>
--   <li><a>usePhones</a></li>
--   <li><a>useName</a></li>
--   <li><a>usePassword</a></li>
--   <li><a>useEmails</a></li>
--   <li><a>useIms</a></li>
--   <li><a>useIsAdmin</a></li>
--   <li><a>useIsEnrolledIn2Sv</a></li>
--   <li><a>useId</a></li>
--   <li><a>useOrganizations</a></li>
--   <li><a>usePrimaryEmail</a></li>
--   <li><a>useIsEnforcedIn2Sv</a></li>
--   <li><a>useNotes</a></li>
--   <li><a>useIsDelegatedAdmin</a></li>
--   <li><a>useIsMailboxSetup</a></li>
--   <li><a>useCustomSchemas</a></li>
--   <li><a>useSuspensionReason</a></li>
--   </ul>
user :: User

-- | User's Google account creation time. (Read-only)
useCreationTime :: Lens' User (Maybe UTCTime)

-- | User's last login time. (Read-only)
useLastLoginTime :: Lens' User (Maybe UTCTime)

-- | ETag of the user's photo (Read-only)
useThumbnailPhotoEtag :: Lens' User (Maybe Text)

-- | ETag of the resource.
useEtag :: Lens' User (Maybe Text)

-- | Boolean indicating if ip is whitelisted
useIPWhiteListed :: Lens' User (Maybe Bool)
useRelations :: Lens' User (Maybe JSONValue)

-- | Hash function name for password. Supported are MD5, SHA-1 and crypt
useHashFunction :: Lens' User (Maybe Text)

-- | Kind of resource this is.
useKind :: Lens' User Text

-- | Boolean indicating if the user should change password in next login
useChangePasswordAtNextLogin :: Lens' User (Maybe Bool)
useWebsites :: Lens' User (Maybe JSONValue)
useAddresses :: Lens' User (Maybe JSONValue)

-- | List of aliases (Read-only)
useAliases :: Lens' User [Text]

-- | Photo Url of the user (Read-only)
useThumbnailPhotoURL :: Lens' User (Maybe Text)
useExternalIds :: Lens' User (Maybe JSONValue)

-- | Indicates if user is suspended
useSuspended :: Lens' User (Maybe Bool)

-- | Indicates if user has agreed to terms (Read-only)
useAgreedToTerms :: Lens' User (Maybe Bool)
useDeletionTime :: Lens' User (Maybe UTCTime)

-- | List of non editable aliases (Read-only)
useNonEditableAliases :: Lens' User [Text]

-- | OrgUnit of User
useOrgUnitPath :: Lens' User (Maybe Text)

-- | CustomerId of User (Read-only)
useCustomerId :: Lens' User (Maybe Text)

-- | Boolean indicating if user is included in Global Address List
useIncludeInGlobalAddressList :: Lens' User (Maybe Bool)
usePhones :: Lens' User (Maybe JSONValue)

-- | User's name
useName :: Lens' User (Maybe UserName)

-- | User's password
usePassword :: Lens' User (Maybe Text)
useEmails :: Lens' User (Maybe JSONValue)
useIms :: Lens' User (Maybe JSONValue)

-- | Boolean indicating if the user is admin (Read-only)
useIsAdmin :: Lens' User (Maybe Bool)

-- | Is enrolled in 2-step verification (Read-only)
useIsEnrolledIn2Sv :: Lens' User (Maybe Bool)

-- | Unique identifier of User (Read-only)
useId :: Lens' User (Maybe Text)
useOrganizations :: Lens' User (Maybe JSONValue)

-- | username of User
usePrimaryEmail :: Lens' User (Maybe Text)

-- | Is 2-step verification enforced (Read-only)
useIsEnforcedIn2Sv :: Lens' User (Maybe Bool)
useNotes :: Lens' User (Maybe JSONValue)

-- | Boolean indicating if the user is delegated admin (Read-only)
useIsDelegatedAdmin :: Lens' User (Maybe Bool)

-- | Is mailbox setup (Read-only)
useIsMailboxSetup :: Lens' User (Maybe Bool)

-- | Custom fields of the user.
useCustomSchemas :: Lens' User (Maybe UserCustomSchemas)

-- | Suspension reason if user is suspended (Read-only)
useSuspensionReason :: Lens' User (Maybe Text)

-- | Restrict information returned to a set of selected fields.
data MobileDevicesListProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, model, status, type, and status)
MDLPBasic :: MobileDevicesListProjection

-- | <tt>FULL</tt> Includes all metadata fields
MDLPFull :: MobileDevicesListProjection

-- | JSON request template for firing actions on ChromeOs Device in
--   Directory Devices API.
--   
--   <i>See:</i> <a>chromeOSDeviceAction</a> smart constructor.
data ChromeOSDeviceAction

-- | Creates a value of <a>ChromeOSDeviceAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codaAction</a></li>
--   <li><a>codaDeprovisionReason</a></li>
--   </ul>
chromeOSDeviceAction :: ChromeOSDeviceAction

-- | Action to be taken on the ChromeOs Device
codaAction :: Lens' ChromeOSDeviceAction (Maybe Text)
codaDeprovisionReason :: Lens' ChromeOSDeviceAction (Maybe Text)

-- | JSON template for role resource in Directory API.
--   
--   <i>See:</i> <a>role'</a> smart constructor.
data Role

-- | Creates a value of <a>Role</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrEtag</a></li>
--   <li><a>rrKind</a></li>
--   <li><a>rrRoleName</a></li>
--   <li><a>rrIsSystemRole</a></li>
--   <li><a>rrRoleId</a></li>
--   <li><a>rrRoleDescription</a></li>
--   <li><a>rrIsSuperAdminRole</a></li>
--   <li><a>rrRolePrivileges</a></li>
--   </ul>
role' :: Role

-- | ETag of the resource.
rrEtag :: Lens' Role (Maybe Text)

-- | The type of the API resource. This is always adminrole.
rrKind :: Lens' Role Text

-- | Name of the role.
rrRoleName :: Lens' Role (Maybe Text)

-- | Returns true if this is a pre-defined system role.
rrIsSystemRole :: Lens' Role (Maybe Bool)

-- | ID of the role.
rrRoleId :: Lens' Role (Maybe Int64)

-- | A short description of the role.
rrRoleDescription :: Lens' Role (Maybe Text)

-- | Returns true if the role is a super admin role.
rrIsSuperAdminRole :: Lens' Role (Maybe Bool)

-- | The set of privileges that are granted to this role.
rrRolePrivileges :: Lens' Role [RoleRolePrivilegesItem]

-- | JSON template for Customer Resource object in Directory API.
--   
--   <i>See:</i> <a>customer</a> smart constructor.
data Customer

-- | Creates a value of <a>Customer</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cusEtag</a></li>
--   <li><a>cusKind</a></li>
--   <li><a>cusAlternateEmail</a></li>
--   <li><a>cusCustomerDomain</a></li>
--   <li><a>cusPhoneNumber</a></li>
--   <li><a>cusLanguage</a></li>
--   <li><a>cusId</a></li>
--   <li><a>cusCustomerCreationTime</a></li>
--   <li><a>cusPostalAddress</a></li>
--   </ul>
customer :: Customer

-- | ETag of the resource.
cusEtag :: Lens' Customer (Maybe Text)

-- | Identifies the resource as a customer. Value: admincustomer
cusKind :: Lens' Customer Text

-- | The customer's secondary contact email address. This email address
--   cannot be on the same domain as the customerDomain
cusAlternateEmail :: Lens' Customer (Maybe Text)

-- | The customer's primary domain name string. Do not include the www
--   prefix when creating a new customer.
cusCustomerDomain :: Lens' Customer (Maybe Text)

-- | The customer's contact phone number in E.164 format.
cusPhoneNumber :: Lens' Customer (Maybe Text)

-- | The customer's ISO 639-2 language code. The default value is en-US
cusLanguage :: Lens' Customer (Maybe Text)

-- | The unique ID for the customer's Google account. (Readonly)
cusId :: Lens' Customer (Maybe Text)

-- | The customer's creation time (Readonly)
cusCustomerCreationTime :: Lens' Customer (Maybe UTCTime)

-- | The customer's postal address information.
cusPostalAddress :: Lens' Customer (Maybe CustomerPostalAddress)
data MobileDeviceApplicationsItem

-- | Creates a value of <a>MobileDeviceApplicationsItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdaiVersionCode</a></li>
--   <li><a>mdaiVersionName</a></li>
--   <li><a>mdaiPackageName</a></li>
--   <li><a>mdaiDisplayName</a></li>
--   <li><a>mdaiPermission</a></li>
--   </ul>
mobileDeviceApplicationsItem :: MobileDeviceApplicationsItem

-- | Version code of application
mdaiVersionCode :: Lens' MobileDeviceApplicationsItem (Maybe Int32)

-- | Version name of application
mdaiVersionName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | Package name of application
mdaiPackageName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | Display name of application
mdaiDisplayName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | List of Permissions for application
mdaiPermission :: Lens' MobileDeviceApplicationsItem [Text]

-- | Column to use for sorting results
data MobileDevicesListOrderBy

-- | <tt>deviceId</tt> Mobile Device serial number.
MDLOBDeviceId :: MobileDevicesListOrderBy

-- | <tt>email</tt> Owner user email.
MDLOBEmail :: MobileDevicesListOrderBy

-- | <tt>lastSync</tt> Last policy settings sync date time of the device.
MDLOBLastSync :: MobileDevicesListOrderBy

-- | <tt>model</tt> Mobile Device model.
MDLOBModel :: MobileDevicesListOrderBy

-- | <tt>name</tt> Owner user name.
MDLOBName :: MobileDevicesListOrderBy

-- | <tt>os</tt> Mobile operating system.
MDLOBOS :: MobileDevicesListOrderBy

-- | <tt>status</tt> Status of the device.
MDLOBStatus :: MobileDevicesListOrderBy

-- | <tt>type</tt> Type of the device.
MDLOBType :: MobileDevicesListOrderBy

-- | Whether to return results in ascending or descending order.
data UsersListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
ULSOAscending :: UsersListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
ULSODescending :: UsersListSortOrder

-- | JSON response template for List Organization Units operation in
--   Directory API.
--   
--   <i>See:</i> <a>orgUnits</a> smart constructor.
data OrgUnits

-- | Creates a value of <a>OrgUnits</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oEtag</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oOrganizationUnits</a></li>
--   </ul>
orgUnits :: OrgUnits

-- | ETag of the resource.
oEtag :: Lens' OrgUnits (Maybe Text)

-- | Kind of resource this is.
oKind :: Lens' OrgUnits Text

-- | List of user objects.
oOrganizationUnits :: Lens' OrgUnits [OrgUnit]

-- | JSON response template for List verification codes operation in
--   Directory API.
--   
--   <i>See:</i> <a>verificationCodes</a> smart constructor.
data VerificationCodes

-- | Creates a value of <a>VerificationCodes</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vEtag</a></li>
--   <li><a>vKind</a></li>
--   <li><a>vItems</a></li>
--   </ul>
verificationCodes :: VerificationCodes

-- | ETag of the resource.
vEtag :: Lens' VerificationCodes (Maybe Text)

-- | The type of the resource. This is always adminverificationCodesList.
vKind :: Lens' VerificationCodes Text

-- | A list of verification code resources.
vItems :: Lens' VerificationCodes [VerificationCode]

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
data ChromeosDevicesListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
CDLSOAscending :: ChromeosDevicesListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
CDLSODescending :: ChromeosDevicesListSortOrder

-- | JSON template for a relation entry.
--   
--   <i>See:</i> <a>userRelation</a> smart constructor.
data UserRelation

-- | Creates a value of <a>UserRelation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urValue</a></li>
--   <li><a>urType</a></li>
--   <li><a>urCustomType</a></li>
--   </ul>
userRelation :: UserRelation

-- | The name of the relation.
urValue :: Lens' UserRelation (Maybe Text)

-- | The relation of the user. Some of the possible values are mother,
--   father, sister, brother, manager, assistant, partner.
urType :: Lens' UserRelation (Maybe Text)

-- | Custom Type.
urCustomType :: Lens' UserRelation (Maybe Text)

-- | Whether to return results in ascending or descending order.
data UsersWatchSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
UWSOAscending :: UsersWatchSortOrder

-- | <tt>DESCENDING</tt> Descending order.
UWSODescending :: UsersWatchSortOrder

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

-- | Creates a value of <a>ChannelParams</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpAddtional</a></li>
--   </ul>
channelParams :: HashMap Text Text -> ChannelParams

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)

-- | JSON template for an organization entry.
--   
--   <i>See:</i> <a>userOrganization</a> smart constructor.
data UserOrganization

-- | Creates a value of <a>UserOrganization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uoDePartment</a></li>
--   <li><a>uoLocation</a></li>
--   <li><a>uoCostCenter</a></li>
--   <li><a>uoDomain</a></li>
--   <li><a>uoSymbol</a></li>
--   <li><a>uoPrimary</a></li>
--   <li><a>uoName</a></li>
--   <li><a>uoTitle</a></li>
--   <li><a>uoType</a></li>
--   <li><a>uoCustomType</a></li>
--   <li><a>uoDescription</a></li>
--   </ul>
userOrganization :: UserOrganization

-- | Department within the organization.
uoDePartment :: Lens' UserOrganization (Maybe Text)

-- | Location of the organization. This need not be fully qualified
--   address.
uoLocation :: Lens' UserOrganization (Maybe Text)

-- | The cost center of the users department.
uoCostCenter :: Lens' UserOrganization (Maybe Text)

-- | The domain to which the organization belongs to.
uoDomain :: Lens' UserOrganization (Maybe Text)

-- | Symbol of the organization.
uoSymbol :: Lens' UserOrganization (Maybe Text)

-- | If it user's primary organization.
uoPrimary :: Lens' UserOrganization (Maybe Bool)

-- | Name of the organization
uoName :: Lens' UserOrganization (Maybe Text)

-- | Title (designation) of the user in the organization.
uoTitle :: Lens' UserOrganization (Maybe Text)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example organization could be of school, work etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a CustomType value.
uoType :: Lens' UserOrganization (Maybe Text)

-- | Custom type.
uoCustomType :: Lens' UserOrganization (Maybe Text)

-- | Description of the organization.
uoDescription :: Lens' UserOrganization (Maybe Text)

-- | JSON template for a website entry.
--   
--   <i>See:</i> <a>userWebsite</a> smart constructor.
data UserWebsite

-- | Creates a value of <a>UserWebsite</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uwValue</a></li>
--   <li><a>uwPrimary</a></li>
--   <li><a>uwType</a></li>
--   <li><a>uwCustomType</a></li>
--   </ul>
userWebsite :: UserWebsite

-- | Website.
uwValue :: Lens' UserWebsite (Maybe Text)

-- | If this is user's primary website or not.
uwPrimary :: Lens' UserWebsite (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example website could be of home, work, blog etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a customType value.
uwType :: Lens' UserWebsite (Maybe Text)

-- | Custom Type.
uwCustomType :: Lens' UserWebsite (Maybe Text)
data ChromeOSDeviceActiveTimeRangesItem

-- | Creates a value of <a>ChromeOSDeviceActiveTimeRangesItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codatriDate</a></li>
--   <li><a>codatriActiveTime</a></li>
--   </ul>
chromeOSDeviceActiveTimeRangesItem :: ChromeOSDeviceActiveTimeRangesItem

-- | Date of usage
codatriDate :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Day)

-- | Duration in milliseconds
codatriActiveTime :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Int32)

-- | JSON template for an email.
--   
--   <i>See:</i> <a>userEmail</a> smart constructor.
data UserEmail

-- | Creates a value of <a>UserEmail</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueAddress</a></li>
--   <li><a>uePrimary</a></li>
--   <li><a>ueType</a></li>
--   <li><a>ueCustomType</a></li>
--   </ul>
userEmail :: UserEmail

-- | Email id of the user.
ueAddress :: Lens' UserEmail (Maybe Text)

-- | If this is user's primary email. Only one entry could be marked as
--   primary.
uePrimary :: Lens' UserEmail (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example email could be of home, work etc. In addition to
--   the standard type, an entry can have a custom type and can take any
--   value Such types should have the CUSTOM value as type and also have a
--   customType value.
ueType :: Lens' UserEmail (Maybe Text)

-- | Custom Type.
ueCustomType :: Lens' UserEmail (Maybe Text)

-- | JSON template for a phone entry.
--   
--   <i>See:</i> <a>userPhone</a> smart constructor.
data UserPhone

-- | Creates a value of <a>UserPhone</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upValue</a></li>
--   <li><a>upPrimary</a></li>
--   <li><a>upType</a></li>
--   <li><a>upCustomType</a></li>
--   </ul>
userPhone :: UserPhone

-- | Phone number.
upValue :: Lens' UserPhone (Maybe Text)

-- | If this is user's primary phone or not.
upPrimary :: Lens' UserPhone (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example phone could be of home_fax, work, mobile etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a customType value.
upType :: Lens' UserPhone (Maybe Text)

-- | Custom Type.
upCustomType :: Lens' UserPhone (Maybe Text)

-- | JSON template for Photo object in Directory API.
--   
--   <i>See:</i> <a>userPhoto</a> smart constructor.
data UserPhoto

-- | Creates a value of <a>UserPhoto</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upPhotoData</a></li>
--   <li><a>upEtag</a></li>
--   <li><a>upHeight</a></li>
--   <li><a>upKind</a></li>
--   <li><a>upWidth</a></li>
--   <li><a>upMimeType</a></li>
--   <li><a>upId</a></li>
--   <li><a>upPrimaryEmail</a></li>
--   </ul>
userPhoto :: UserPhoto

-- | Base64 encoded photo data
upPhotoData :: Lens' UserPhoto (Maybe ByteString)

-- | ETag of the resource.
upEtag :: Lens' UserPhoto (Maybe Text)

-- | Height in pixels of the photo
upHeight :: Lens' UserPhoto (Maybe Int32)

-- | Kind of resource this is.
upKind :: Lens' UserPhoto Text

-- | Width in pixels of the photo
upWidth :: Lens' UserPhoto (Maybe Int32)

-- | Mime Type of the photo
upMimeType :: Lens' UserPhoto (Maybe Text)

-- | Unique identifier of User (Read-only)
upId :: Lens' UserPhoto (Maybe Text)

-- | Primary email of User (Read-only)
upPrimaryEmail :: Lens' UserPhoto (Maybe Text)

-- | What subset of fields to fetch for this user.
data UsersListProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
ULPBasic :: UsersListProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
ULPCustom :: UsersListProjection

-- | <tt>full</tt> Include all fields associated with this user.
ULPFull :: UsersListProjection

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesUpdateProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDUPBasic :: ChromeosDevicesUpdateProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDUPFull :: ChromeosDevicesUpdateProjection

-- | Restrict information returned to a set of selected fields.
data MobileDevicesGetProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, model, status, type, and status)
MDGPBasic :: MobileDevicesGetProjection

-- | <tt>FULL</tt> Includes all metadata fields
MDGPFull :: MobileDevicesGetProjection

-- | JSON template for Mobile Device resource in Directory API.
--   
--   <i>See:</i> <a>mobileDevice</a> smart constructor.
data MobileDevice

-- | Creates a value of <a>MobileDevice</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mobEmail</a></li>
--   <li><a>mobStatus</a></li>
--   <li><a>mobPrivilege</a></li>
--   <li><a>mobEtag</a></li>
--   <li><a>mobResourceId</a></li>
--   <li><a>mobManufacturer</a></li>
--   <li><a>mobBuildNumber</a></li>
--   <li><a>mobManagedAccountIsOnOwnerProFile</a></li>
--   <li><a>mobLastSync</a></li>
--   <li><a>mobOtherAccountsInfo</a></li>
--   <li><a>mobKind</a></li>
--   <li><a>mobAdbStatus</a></li>
--   <li><a>mobReleaseVersion</a></li>
--   <li><a>mobBrand</a></li>
--   <li><a>mobSecurityPatchLevel</a></li>
--   <li><a>mobNetworkOperator</a></li>
--   <li><a>mobKernelVersion</a></li>
--   <li><a>mobOS</a></li>
--   <li><a>mobName</a></li>
--   <li><a>mobModel</a></li>
--   <li><a>mobDeveloperOptionsStatus</a></li>
--   <li><a>mobUnknownSourcesStatus</a></li>
--   <li><a>mobMeid</a></li>
--   <li><a>mobBootLoaderVersion</a></li>
--   <li><a>mobDeviceId</a></li>
--   <li><a>mobFirstSync</a></li>
--   <li><a>mobUserAgent</a></li>
--   <li><a>mobImei</a></li>
--   <li><a>mobType</a></li>
--   <li><a>mobWifiMACAddress</a></li>
--   <li><a>mobEncryptionStatus</a></li>
--   <li><a>mobSerialNumber</a></li>
--   <li><a>mobDevicePasswordStatus</a></li>
--   <li><a>mobHardwareId</a></li>
--   <li><a>mobBasebandVersion</a></li>
--   <li><a>mobSupportsWorkProFile</a></li>
--   <li><a>mobHardware</a></li>
--   <li><a>mobDeviceCompromisedStatus</a></li>
--   <li><a>mobApplications</a></li>
--   <li><a>mobDefaultLanguage</a></li>
--   </ul>
mobileDevice :: MobileDevice

-- | List of owner user's email addresses (Read-only)
mobEmail :: Lens' MobileDevice [Text]

-- | Status of the device (Read-only)
mobStatus :: Lens' MobileDevice (Maybe Text)

-- | DMAgentPermission (Read-only)
mobPrivilege :: Lens' MobileDevice (Maybe Text)

-- | ETag of the resource.
mobEtag :: Lens' MobileDevice (Maybe Text)

-- | Unique identifier of Mobile Device (Read-only)
mobResourceId :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device manufacturer (Read-only)
mobManufacturer :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Build number (Read-only)
mobBuildNumber :: Lens' MobileDevice (Maybe Text)

-- | Boolean indicating if this account is on owner/primary profile or not
--   (Read-only)
mobManagedAccountIsOnOwnerProFile :: Lens' MobileDevice (Maybe Bool)

-- | Date and time the device was last synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
mobLastSync :: Lens' MobileDevice (Maybe UTCTime)

-- | List of accounts added on device (Read-only)
mobOtherAccountsInfo :: Lens' MobileDevice [Text]

-- | Kind of resource this is.
mobKind :: Lens' MobileDevice Text

-- | Adb (USB debugging) enabled or disabled on device (Read-only)
mobAdbStatus :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device release version version (Read-only)
mobReleaseVersion :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Brand (Read-only)
mobBrand :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Security patch level (Read-only)
mobSecurityPatchLevel :: Lens' MobileDevice (Maybe Int64)

-- | Mobile Device mobile or network operator (if available) (Read-only)
mobNetworkOperator :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Kernel version (Read-only)
mobKernelVersion :: Lens' MobileDevice (Maybe Text)

-- | Name of the mobile operating system
mobOS :: Lens' MobileDevice (Maybe Text)

-- | List of owner user's names (Read-only)
mobName :: Lens' MobileDevice [Text]

-- | Name of the model of the device
mobModel :: Lens' MobileDevice (Maybe Text)

-- | Developer options enabled or disabled on device (Read-only)
mobDeveloperOptionsStatus :: Lens' MobileDevice (Maybe Bool)

-- | Unknown sources enabled or disabled on device (Read-only)
mobUnknownSourcesStatus :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device MEID number (Read-only)
mobMeid :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Bootloader version (Read-only)
mobBootLoaderVersion :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device serial number (Read-only)
mobDeviceId :: Lens' MobileDevice (Maybe Text)

-- | Date and time the device was first synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
mobFirstSync :: Lens' MobileDevice (Maybe UTCTime)

-- | Mobile Device user agent
mobUserAgent :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device IMEI number (Read-only)
mobImei :: Lens' MobileDevice (Maybe Text)

-- | The type of device (Read-only)
mobType :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device WiFi MAC address (Read-only)
mobWifiMACAddress :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Encryption Status (Read-only)
mobEncryptionStatus :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device SSN or Serial Number (Read-only)
mobSerialNumber :: Lens' MobileDevice (Maybe Text)

-- | DevicePasswordStatus (Read-only)
mobDevicePasswordStatus :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Hardware Id (Read-only)
mobHardwareId :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Baseband version (Read-only)
mobBasebandVersion :: Lens' MobileDevice (Maybe Text)

-- | Work profile supported on device (Read-only)
mobSupportsWorkProFile :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device Hardware (Read-only)
mobHardware :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device compromised status (Read-only)
mobDeviceCompromisedStatus :: Lens' MobileDevice (Maybe Text)

-- | List of applications installed on Mobile Device
mobApplications :: Lens' MobileDevice [MobileDeviceApplicationsItem]

-- | The default locale used on the Mobile Device (Read-only)
mobDefaultLanguage :: Lens' MobileDevice (Maybe Text)

-- | JSON template for Member resource in Directory API.
--   
--   <i>See:</i> <a>member</a> smart constructor.
data Member

-- | Creates a value of <a>Member</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>memEmail</a></li>
--   <li><a>memStatus</a></li>
--   <li><a>memEtag</a></li>
--   <li><a>memKind</a></li>
--   <li><a>memRole</a></li>
--   <li><a>memId</a></li>
--   <li><a>memType</a></li>
--   </ul>
member :: Member

-- | Email of member (Read-only)
memEmail :: Lens' Member (Maybe Text)

-- | Status of member (Immutable)
memStatus :: Lens' Member (Maybe Text)

-- | ETag of the resource.
memEtag :: Lens' Member (Maybe Text)

-- | Kind of resource this is.
memKind :: Lens' Member Text

-- | Role of member
memRole :: Lens' Member (Maybe Text)

-- | Unique identifier of customer member (Read-only) Unique identifier of
--   group (Read-only) Unique identifier of member (Read-only)
memId :: Lens' Member (Maybe Text)

-- | Type of member (Immutable)
memType :: Lens' Member (Maybe Text)

-- | JSON template for a set of custom properties (i.e. all fields in a
--   particular schema)
--   
--   <i>See:</i> <a>userCustomProperties</a> smart constructor.
data UserCustomProperties

-- | Creates a value of <a>UserCustomProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucpAddtional</a></li>
--   </ul>
userCustomProperties :: HashMap Text JSONValue -> UserCustomProperties
ucpAddtional :: Lens' UserCustomProperties (HashMap Text JSONValue)

-- | JSON template for Domain object in Directory API.
--   
--   <i>See:</i> <a>domains</a> smart constructor.
data Domains

-- | Creates a value of <a>Domains</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>domCreationTime</a></li>
--   <li><a>domEtag</a></li>
--   <li><a>domKind</a></li>
--   <li><a>domDomainAliases</a></li>
--   <li><a>domVerified</a></li>
--   <li><a>domDomainName</a></li>
--   <li><a>domIsPrimary</a></li>
--   </ul>
domains :: Domains

-- | Creation time of the domain. (Read-only).
domCreationTime :: Lens' Domains (Maybe Int64)

-- | ETag of the resource.
domEtag :: Lens' Domains (Maybe Text)

-- | Kind of resource this is.
domKind :: Lens' Domains Text

-- | List of domain alias objects. (Read-only)
domDomainAliases :: Lens' Domains [DomainAlias]

-- | Indicates the verification state of a domain. (Read-only).
domVerified :: Lens' Domains (Maybe Bool)

-- | The domain name of the customer.
domDomainName :: Lens' Domains (Maybe Text)

-- | Indicates if the domain is a primary domain (Read-only).
domIsPrimary :: Lens' Domains (Maybe Bool)

-- | JSON template for Calendar Resource List Response object in Directory
--   API.
--   
--   <i>See:</i> <a>calendarResources</a> smart constructor.
data CalendarResources

-- | Creates a value of <a>CalendarResources</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsEtag</a></li>
--   <li><a>crsNextPageToken</a></li>
--   <li><a>crsKind</a></li>
--   <li><a>crsItems</a></li>
--   </ul>
calendarResources :: CalendarResources

-- | ETag of the resource.
crsEtag :: Lens' CalendarResources (Maybe Text)

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
crsNextPageToken :: Lens' CalendarResources (Maybe Text)

-- | Identifies this as a collection of CalendarResources. This is always
--   adminresourcescalendarResourcesList.
crsKind :: Lens' CalendarResources Text

-- | The CalendarResources in this page of results.
crsItems :: Lens' CalendarResources [CalendarResource]

-- | Column to use for sorting results
data ChromeosDevicesListOrderBy

-- | <tt>annotatedLocation</tt> Chromebook location as annotated by the
--   administrator.
AnnotatedLocation :: ChromeosDevicesListOrderBy

-- | <tt>annotatedUser</tt> Chromebook user as annotated by administrator.
AnnotatedUser :: ChromeosDevicesListOrderBy

-- | <tt>lastSync</tt> Chromebook last sync.
LastSync :: ChromeosDevicesListOrderBy

-- | <tt>notes</tt> Chromebook notes as annotated by the administrator.
Notes :: ChromeosDevicesListOrderBy

-- | <tt>serialNumber</tt> Chromebook Serial Number.
SerialNumber :: ChromeosDevicesListOrderBy

-- | <tt>status</tt> Chromebook status.
Status :: ChromeosDevicesListOrderBy

-- | <tt>supportEndDate</tt> Chromebook support end date.
SupportEndDate :: ChromeosDevicesListOrderBy

-- | What subset of fields to fetch for this user.
data UsersWatchProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
UWPBasic :: UsersWatchProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
UWPCustom :: UsersWatchProjection

-- | <tt>full</tt> Include all fields associated with this user.
UWPFull :: UsersWatchProjection

-- | Column to use for sorting results
data UsersWatchOrderBy

-- | <tt>email</tt> Primary email of the user.
UWOBEmail :: UsersWatchOrderBy

-- | <tt>familyName</tt> User's family name.
UWOBFamilyName :: UsersWatchOrderBy

-- | <tt>givenName</tt> User's given name.
UWOBGivenName :: UsersWatchOrderBy

-- | Template for notifications list response.
--   
--   <i>See:</i> <a>notifications</a> smart constructor.
data Notifications

-- | Creates a value of <a>Notifications</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>notEtag</a></li>
--   <li><a>notNextPageToken</a></li>
--   <li><a>notKind</a></li>
--   <li><a>notItems</a></li>
--   <li><a>notUnreadNotificationsCount</a></li>
--   </ul>
notifications :: Notifications

-- | ETag of the resource.
notEtag :: Lens' Notifications (Maybe Text)

-- | Token for fetching the next page of notifications.
notNextPageToken :: Lens' Notifications (Maybe Text)

-- | The type of the resource.
notKind :: Lens' Notifications Text

-- | List of notifications in this page.
notItems :: Lens' Notifications [Notification]

-- | Number of unread notification for the domain.
notUnreadNotificationsCount :: Lens' Notifications (Maybe Int32)

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesListProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDLPBasic :: ChromeosDevicesListProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDLPFull :: ChromeosDevicesListProjection

-- | Indexing spec for a numeric field. By default, only exact match
--   queries will be supported for numeric fields. Setting the
--   numericIndexingSpec allows range queries to be supported.
--   
--   <i>See:</i> <a>schemaFieldSpecNumericIndexingSpec</a> smart
--   constructor.
data SchemaFieldSpecNumericIndexingSpec

-- | Creates a value of <a>SchemaFieldSpecNumericIndexingSpec</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sfsnisMaxValue</a></li>
--   <li><a>sfsnisMinValue</a></li>
--   </ul>
schemaFieldSpecNumericIndexingSpec :: SchemaFieldSpecNumericIndexingSpec

-- | Maximum value of this field. This is meant to be indicative rather
--   than enforced. Values outside this range will still be indexed, but
--   search may not be as performant.
sfsnisMaxValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)

-- | Minimum value of this field. This is meant to be indicative rather
--   than enforced. Values outside this range will still be indexed, but
--   search may not be as performant.
sfsnisMinValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)

-- | JSON request template for firing commands on Mobile Device in
--   Directory Devices API.
--   
--   <i>See:</i> <a>mobileDeviceAction</a> smart constructor.
data MobileDeviceAction

-- | Creates a value of <a>MobileDeviceAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdaAction</a></li>
--   </ul>
mobileDeviceAction :: MobileDeviceAction

-- | Action to be taken on the Mobile Device
mdaAction :: Lens' MobileDeviceAction (Maybe Text)

-- | JSON template for FieldSpec resource for Schemas in Directory API.
--   
--   <i>See:</i> <a>schemaFieldSpec</a> smart constructor.
data SchemaFieldSpec

-- | Creates a value of <a>SchemaFieldSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sfsEtag</a></li>
--   <li><a>sfsKind</a></li>
--   <li><a>sfsNumericIndexingSpec</a></li>
--   <li><a>sfsReadAccessType</a></li>
--   <li><a>sfsFieldId</a></li>
--   <li><a>sfsIndexed</a></li>
--   <li><a>sfsFieldType</a></li>
--   <li><a>sfsFieldName</a></li>
--   <li><a>sfsMultiValued</a></li>
--   </ul>
schemaFieldSpec :: SchemaFieldSpec

-- | ETag of the resource.
sfsEtag :: Lens' SchemaFieldSpec (Maybe Text)

-- | Kind of resource this is.
sfsKind :: Lens' SchemaFieldSpec Text

-- | Indexing spec for a numeric field. By default, only exact match
--   queries will be supported for numeric fields. Setting the
--   numericIndexingSpec allows range queries to be supported.
sfsNumericIndexingSpec :: Lens' SchemaFieldSpec (Maybe SchemaFieldSpecNumericIndexingSpec)

-- | Read ACLs on the field specifying who can view values of this field.
--   Valid values are "ALL_DOMAIN_USERS" and "ADMINS_AND_SELF".
sfsReadAccessType :: Lens' SchemaFieldSpec Text

-- | Unique identifier of Field (Read-only)
sfsFieldId :: Lens' SchemaFieldSpec (Maybe Text)

-- | Boolean specifying whether the field is indexed or not.
sfsIndexed :: Lens' SchemaFieldSpec Bool

-- | Type of the field.
sfsFieldType :: Lens' SchemaFieldSpec (Maybe Text)

-- | Name of the field.
sfsFieldName :: Lens' SchemaFieldSpec (Maybe Text)

-- | Boolean specifying whether this is a multi-valued field or not.
sfsMultiValued :: Lens' SchemaFieldSpec (Maybe Bool)

-- | JSON response template for List Chrome OS Devices operation in
--   Directory API.
--   
--   <i>See:</i> <a>chromeOSDevices</a> smart constructor.
data ChromeOSDevices

-- | Creates a value of <a>ChromeOSDevices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cosdEtag</a></li>
--   <li><a>cosdNextPageToken</a></li>
--   <li><a>cosdKind</a></li>
--   <li><a>cosdChromeosDevices</a></li>
--   </ul>
chromeOSDevices :: ChromeOSDevices

-- | ETag of the resource.
cosdEtag :: Lens' ChromeOSDevices (Maybe Text)

-- | Token used to access next page of this result.
cosdNextPageToken :: Lens' ChromeOSDevices (Maybe Text)

-- | Kind of resource this is.
cosdKind :: Lens' ChromeOSDevices Text

-- | List of Chrome OS Device objects.
cosdChromeosDevices :: Lens' ChromeOSDevices [ChromeOSDevice]

-- | JSON template for an externalId entry.
--   
--   <i>See:</i> <a>userExternalId</a> smart constructor.
data UserExternalId

-- | Creates a value of <a>UserExternalId</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueiValue</a></li>
--   <li><a>ueiType</a></li>
--   <li><a>ueiCustomType</a></li>
--   </ul>
userExternalId :: UserExternalId

-- | The value of the id.
ueiValue :: Lens' UserExternalId (Maybe Text)

-- | The type of the Id.
ueiType :: Lens' UserExternalId (Maybe Text)

-- | Custom type.
ueiCustomType :: Lens' UserExternalId (Maybe Text)
data Asps

-- | Creates a value of <a>Asps</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aspEtag</a></li>
--   <li><a>aspKind</a></li>
--   <li><a>aspItems</a></li>
--   </ul>
asps :: Asps

-- | ETag of the resource.
aspEtag :: Lens' Asps (Maybe Text)

-- | The type of the API resource. This is always adminaspList.
aspKind :: Lens' Asps Text

-- | A list of ASP resources.
aspItems :: Lens' Asps [Asp]

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersGetViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
UGVTAdminView :: UsersGetViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
UGVTDomainPublic :: UsersGetViewType
data RoleRolePrivilegesItem

-- | Creates a value of <a>RoleRolePrivilegesItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrpiServiceId</a></li>
--   <li><a>rrpiPrivilegeName</a></li>
--   </ul>
roleRolePrivilegesItem :: RoleRolePrivilegesItem

-- | The obfuscated ID of the service this privilege is for.
rrpiServiceId :: Lens' RoleRolePrivilegesItem (Maybe Text)

-- | The name of the privilege.
rrpiPrivilegeName :: Lens' RoleRolePrivilegesItem (Maybe Text)

-- | JSON response template to list Domains in Directory API.
--   
--   <i>See:</i> <a>domains2</a> smart constructor.
data Domains2

-- | Creates a value of <a>Domains2</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddEtag</a></li>
--   <li><a>ddKind</a></li>
--   <li><a>ddDomains</a></li>
--   </ul>
domains2 :: Domains2

-- | ETag of the resource.
ddEtag :: Lens' Domains2 (Maybe Text)

-- | Kind of resource this is.
ddKind :: Lens' Domains2 Text

-- | List of domain objects.
ddDomains :: Lens' Domains2 [Domains]


-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>admin.channels.stop</tt>.
module Network.Google.Resource.Admin.Channels.Stop

-- | A resource alias for <tt>admin.channels.stop</tt> method which the
--   <a>ChannelsStop</a> request conforms to.
type ChannelsStopResource = "admin" :> ("directory" :> ("v1" :> ("admin" :> ("directory_v1" :> ("channels" :> ("stop" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] ()))))))))

-- | Creates a value of <a>ChannelsStop</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csPayload</a></li>
--   </ul>
channelsStop :: Channel -> ChannelsStop

-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>channelsStop</a> smart constructor.
data ChannelsStop

-- | Multipart request metadata.
csPayload :: Lens' ChannelsStop Channel
instance GHC.Generics.Generic Network.Google.Resource.Admin.Channels.Stop.ChannelsStop
instance Data.Data.Data Network.Google.Resource.Admin.Channels.Stop.ChannelsStop
instance GHC.Show.Show Network.Google.Resource.Admin.Channels.Stop.ChannelsStop
instance GHC.Classes.Eq Network.Google.Resource.Admin.Channels.Stop.ChannelsStop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Admin.Channels.Stop.ChannelsStop


-- | Delete an ASP issued by a user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.asps.delete</tt>.
module Network.Google.Resource.Directory.Asps.Delete

-- | A resource alias for <tt>directory.asps.delete</tt> method which the
--   <a>AspsDelete</a> request conforms to.
type AspsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("asps" :> (Capture "codeId" (Textual Int32) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>AspsDelete</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adCodeId</a></li>
--   <li><a>adUserKey</a></li>
--   </ul>
aspsDelete :: Int32 -> Text -> AspsDelete

-- | Delete an ASP issued by a user.
--   
--   <i>See:</i> <a>aspsDelete</a> smart constructor.
data AspsDelete

-- | The unique ID of the ASP to be deleted.
adCodeId :: Lens' AspsDelete Int32

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
adUserKey :: Lens' AspsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Asps.Delete.AspsDelete
instance Data.Data.Data Network.Google.Resource.Directory.Asps.Delete.AspsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Asps.Delete.AspsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Asps.Delete.AspsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Asps.Delete.AspsDelete


-- | Get information about an ASP issued by a user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.asps.get</tt>.
module Network.Google.Resource.Directory.Asps.Get

-- | A resource alias for <tt>directory.asps.get</tt> method which the
--   <a>AspsGet</a> request conforms to.
type AspsGetResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("asps" :> (Capture "codeId" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Asp)))))))

-- | Creates a value of <a>AspsGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>agCodeId</a></li>
--   <li><a>agUserKey</a></li>
--   </ul>
aspsGet :: Int32 -> Text -> AspsGet

-- | Get information about an ASP issued by a user.
--   
--   <i>See:</i> <a>aspsGet</a> smart constructor.
data AspsGet

-- | The unique ID of the ASP.
agCodeId :: Lens' AspsGet Int32

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
agUserKey :: Lens' AspsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Asps.Get.AspsGet
instance Data.Data.Data Network.Google.Resource.Directory.Asps.Get.AspsGet
instance GHC.Show.Show Network.Google.Resource.Directory.Asps.Get.AspsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Asps.Get.AspsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Asps.Get.AspsGet


-- | List the ASPs issued by a user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.asps.list</tt>.
module Network.Google.Resource.Directory.Asps.List

-- | A resource alias for <tt>directory.asps.list</tt> method which the
--   <a>AspsList</a> request conforms to.
type AspsListResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("asps" :> (QueryParam "alt" AltJSON :> Get '[JSON] Asps))))))

-- | Creates a value of <a>AspsList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alUserKey</a></li>
--   </ul>
aspsList :: Text -> AspsList

-- | List the ASPs issued by a user.
--   
--   <i>See:</i> <a>aspsList</a> smart constructor.
data AspsList

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
alUserKey :: Lens' AspsList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Asps.List.AspsList
instance Data.Data.Data Network.Google.Resource.Directory.Asps.List.AspsList
instance GHC.Show.Show Network.Google.Resource.Directory.Asps.List.AspsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Asps.List.AspsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Asps.List.AspsList


-- | Take action on Chrome OS Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.chromeosdevices.action</tt>.
module Network.Google.Resource.Directory.ChromeosDevices.Action

-- | A resource alias for <tt>directory.chromeosdevices.action</tt> method
--   which the <a>ChromeosDevicesAction</a> request conforms to.
type ChromeosDevicesActionResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("chromeos" :> (Capture "resourceId" Text :> ("action" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChromeOSDeviceAction :> Post '[JSON] ()))))))))))

-- | Creates a value of <a>ChromeosDevicesAction</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdaResourceId</a></li>
--   <li><a>cdaPayload</a></li>
--   <li><a>cdaCustomerId</a></li>
--   </ul>
chromeosDevicesAction :: Text -> ChromeOSDeviceAction -> Text -> ChromeosDevicesAction

-- | Take action on Chrome OS Device
--   
--   <i>See:</i> <a>chromeosDevicesAction</a> smart constructor.
data ChromeosDevicesAction

-- | Immutable id of Chrome OS Device
cdaResourceId :: Lens' ChromeosDevicesAction Text

-- | Multipart request metadata.
cdaPayload :: Lens' ChromeosDevicesAction ChromeOSDeviceAction

-- | Immutable id of the Google Apps account
cdaCustomerId :: Lens' ChromeosDevicesAction Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.ChromeosDevices.Action.ChromeosDevicesAction
instance Data.Data.Data Network.Google.Resource.Directory.ChromeosDevices.Action.ChromeosDevicesAction
instance GHC.Show.Show Network.Google.Resource.Directory.ChromeosDevices.Action.ChromeosDevicesAction
instance GHC.Classes.Eq Network.Google.Resource.Directory.ChromeosDevices.Action.ChromeosDevicesAction
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.ChromeosDevices.Action.ChromeosDevicesAction


-- | Retrieve Chrome OS Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.chromeosdevices.get</tt>.
module Network.Google.Resource.Directory.ChromeosDevices.Get

-- | A resource alias for <tt>directory.chromeosdevices.get</tt> method
--   which the <a>ChromeosDevicesGet</a> request conforms to.
type ChromeosDevicesGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("chromeos" :> (Capture "deviceId" Text :> (QueryParam "projection" ChromeosDevicesGetProjection :> (QueryParam "alt" AltJSON :> Get '[JSON] ChromeOSDevice)))))))))

-- | Creates a value of <a>ChromeosDevicesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdgCustomerId</a></li>
--   <li><a>cdgDeviceId</a></li>
--   <li><a>cdgProjection</a></li>
--   </ul>
chromeosDevicesGet :: Text -> Text -> ChromeosDevicesGet

-- | Retrieve Chrome OS Device
--   
--   <i>See:</i> <a>chromeosDevicesGet</a> smart constructor.
data ChromeosDevicesGet

-- | Immutable id of the Google Apps account
cdgCustomerId :: Lens' ChromeosDevicesGet Text

-- | Immutable id of Chrome OS Device
cdgDeviceId :: Lens' ChromeosDevicesGet Text

-- | Restrict information returned to a set of selected fields.
cdgProjection :: Lens' ChromeosDevicesGet (Maybe ChromeosDevicesGetProjection)
instance GHC.Generics.Generic Network.Google.Resource.Directory.ChromeosDevices.Get.ChromeosDevicesGet
instance Data.Data.Data Network.Google.Resource.Directory.ChromeosDevices.Get.ChromeosDevicesGet
instance GHC.Show.Show Network.Google.Resource.Directory.ChromeosDevices.Get.ChromeosDevicesGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.ChromeosDevices.Get.ChromeosDevicesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.ChromeosDevices.Get.ChromeosDevicesGet


-- | Retrieve all Chrome OS Devices of a customer (paginated)
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.chromeosdevices.list</tt>.
module Network.Google.Resource.Directory.ChromeosDevices.List

-- | A resource alias for <tt>directory.chromeosdevices.list</tt> method
--   which the <a>ChromeosDevicesList</a> request conforms to.
type ChromeosDevicesListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("chromeos" :> (QueryParam "orderBy" ChromeosDevicesListOrderBy :> (QueryParam "sortOrder" ChromeosDevicesListSortOrder :> (QueryParam "query" Text :> (QueryParam "projection" ChromeosDevicesListProjection :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ChromeOSDevices)))))))))))))

-- | Creates a value of <a>ChromeosDevicesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdlOrderBy</a></li>
--   <li><a>cdlCustomerId</a></li>
--   <li><a>cdlSortOrder</a></li>
--   <li><a>cdlQuery</a></li>
--   <li><a>cdlProjection</a></li>
--   <li><a>cdlPageToken</a></li>
--   <li><a>cdlMaxResults</a></li>
--   </ul>
chromeosDevicesList :: Text -> ChromeosDevicesList

-- | Retrieve all Chrome OS Devices of a customer (paginated)
--   
--   <i>See:</i> <a>chromeosDevicesList</a> smart constructor.
data ChromeosDevicesList

-- | Column to use for sorting results
cdlOrderBy :: Lens' ChromeosDevicesList (Maybe ChromeosDevicesListOrderBy)

-- | Immutable id of the Google Apps account
cdlCustomerId :: Lens' ChromeosDevicesList Text

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
cdlSortOrder :: Lens' ChromeosDevicesList (Maybe ChromeosDevicesListSortOrder)

-- | Search string in the format given at
--   http://support.google.com/chromeos/a/bin/answer.py?hl=en&amp;answer=1698333
cdlQuery :: Lens' ChromeosDevicesList (Maybe Text)

-- | Restrict information returned to a set of selected fields.
cdlProjection :: Lens' ChromeosDevicesList (Maybe ChromeosDevicesListProjection)

-- | Token to specify next page in the list
cdlPageToken :: Lens' ChromeosDevicesList (Maybe Text)

-- | Maximum number of results to return. Default is 100
cdlMaxResults :: Lens' ChromeosDevicesList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.ChromeosDevices.List.ChromeosDevicesList
instance Data.Data.Data Network.Google.Resource.Directory.ChromeosDevices.List.ChromeosDevicesList
instance GHC.Show.Show Network.Google.Resource.Directory.ChromeosDevices.List.ChromeosDevicesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.ChromeosDevices.List.ChromeosDevicesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.ChromeosDevices.List.ChromeosDevicesList


-- | Update Chrome OS Device. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.chromeosdevices.patch</tt>.
module Network.Google.Resource.Directory.ChromeosDevices.Patch

-- | A resource alias for <tt>directory.chromeosdevices.patch</tt> method
--   which the <a>ChromeosDevicesPatch</a> request conforms to.
type ChromeosDevicesPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("chromeos" :> (Capture "deviceId" Text :> (QueryParam "projection" ChromeosDevicesPatchProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChromeOSDevice :> Patch '[JSON] ChromeOSDevice))))))))))

-- | Creates a value of <a>ChromeosDevicesPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdpPayload</a></li>
--   <li><a>cdpCustomerId</a></li>
--   <li><a>cdpDeviceId</a></li>
--   <li><a>cdpProjection</a></li>
--   </ul>
chromeosDevicesPatch :: ChromeOSDevice -> Text -> Text -> ChromeosDevicesPatch

-- | Update Chrome OS Device. This method supports patch semantics.
--   
--   <i>See:</i> <a>chromeosDevicesPatch</a> smart constructor.
data ChromeosDevicesPatch

-- | Multipart request metadata.
cdpPayload :: Lens' ChromeosDevicesPatch ChromeOSDevice

-- | Immutable id of the Google Apps account
cdpCustomerId :: Lens' ChromeosDevicesPatch Text

-- | Immutable id of Chrome OS Device
cdpDeviceId :: Lens' ChromeosDevicesPatch Text

-- | Restrict information returned to a set of selected fields.
cdpProjection :: Lens' ChromeosDevicesPatch (Maybe ChromeosDevicesPatchProjection)
instance GHC.Generics.Generic Network.Google.Resource.Directory.ChromeosDevices.Patch.ChromeosDevicesPatch
instance Data.Data.Data Network.Google.Resource.Directory.ChromeosDevices.Patch.ChromeosDevicesPatch
instance GHC.Show.Show Network.Google.Resource.Directory.ChromeosDevices.Patch.ChromeosDevicesPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.ChromeosDevices.Patch.ChromeosDevicesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.ChromeosDevices.Patch.ChromeosDevicesPatch


-- | Update Chrome OS Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.chromeosdevices.update</tt>.
module Network.Google.Resource.Directory.ChromeosDevices.Update

-- | A resource alias for <tt>directory.chromeosdevices.update</tt> method
--   which the <a>ChromeosDevicesUpdate</a> request conforms to.
type ChromeosDevicesUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("chromeos" :> (Capture "deviceId" Text :> (QueryParam "projection" ChromeosDevicesUpdateProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ChromeOSDevice :> Put '[JSON] ChromeOSDevice))))))))))

-- | Creates a value of <a>ChromeosDevicesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cduPayload</a></li>
--   <li><a>cduCustomerId</a></li>
--   <li><a>cduDeviceId</a></li>
--   <li><a>cduProjection</a></li>
--   </ul>
chromeosDevicesUpdate :: ChromeOSDevice -> Text -> Text -> ChromeosDevicesUpdate

-- | Update Chrome OS Device
--   
--   <i>See:</i> <a>chromeosDevicesUpdate</a> smart constructor.
data ChromeosDevicesUpdate

-- | Multipart request metadata.
cduPayload :: Lens' ChromeosDevicesUpdate ChromeOSDevice

-- | Immutable id of the Google Apps account
cduCustomerId :: Lens' ChromeosDevicesUpdate Text

-- | Immutable id of Chrome OS Device
cduDeviceId :: Lens' ChromeosDevicesUpdate Text

-- | Restrict information returned to a set of selected fields.
cduProjection :: Lens' ChromeosDevicesUpdate (Maybe ChromeosDevicesUpdateProjection)
instance GHC.Generics.Generic Network.Google.Resource.Directory.ChromeosDevices.Update.ChromeosDevicesUpdate
instance Data.Data.Data Network.Google.Resource.Directory.ChromeosDevices.Update.ChromeosDevicesUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.ChromeosDevices.Update.ChromeosDevicesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.ChromeosDevices.Update.ChromeosDevicesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.ChromeosDevices.Update.ChromeosDevicesUpdate


-- | Retrieves a customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.customers.get</tt>.
module Network.Google.Resource.Directory.Customers.Get

-- | A resource alias for <tt>directory.customers.get</tt> method which the
--   <a>CustomersGet</a> request conforms to.
type CustomersGetResource = "admin" :> ("directory" :> ("v1" :> ("customers" :> (Capture "customerKey" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Customer)))))

-- | Creates a value of <a>CustomersGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cgCustomerKey</a></li>
--   </ul>
customersGet :: Text -> CustomersGet

-- | Retrieves a customer.
--   
--   <i>See:</i> <a>customersGet</a> smart constructor.
data CustomersGet

-- | Id of the customer to be retrieved
cgCustomerKey :: Lens' CustomersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Customers.Get.CustomersGet
instance Data.Data.Data Network.Google.Resource.Directory.Customers.Get.CustomersGet
instance GHC.Show.Show Network.Google.Resource.Directory.Customers.Get.CustomersGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Customers.Get.CustomersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Customers.Get.CustomersGet


-- | Updates a customer. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.customers.patch</tt>.
module Network.Google.Resource.Directory.Customers.Patch

-- | A resource alias for <tt>directory.customers.patch</tt> method which
--   the <a>CustomersPatch</a> request conforms to.
type CustomersPatchResource = "admin" :> ("directory" :> ("v1" :> ("customers" :> (Capture "customerKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Customer :> Patch '[JSON] Customer))))))

-- | Creates a value of <a>CustomersPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpCustomerKey</a></li>
--   <li><a>cpPayload</a></li>
--   </ul>
customersPatch :: Text -> Customer -> CustomersPatch

-- | Updates a customer. This method supports patch semantics.
--   
--   <i>See:</i> <a>customersPatch</a> smart constructor.
data CustomersPatch

-- | Id of the customer to be updated
cpCustomerKey :: Lens' CustomersPatch Text

-- | Multipart request metadata.
cpPayload :: Lens' CustomersPatch Customer
instance GHC.Generics.Generic Network.Google.Resource.Directory.Customers.Patch.CustomersPatch
instance Data.Data.Data Network.Google.Resource.Directory.Customers.Patch.CustomersPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Customers.Patch.CustomersPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Customers.Patch.CustomersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Customers.Patch.CustomersPatch


-- | Updates a customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.customers.update</tt>.
module Network.Google.Resource.Directory.Customers.Update

-- | A resource alias for <tt>directory.customers.update</tt> method which
--   the <a>CustomersUpdate</a> request conforms to.
type CustomersUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customers" :> (Capture "customerKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Customer :> Put '[JSON] Customer))))))

-- | Creates a value of <a>CustomersUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cuCustomerKey</a></li>
--   <li><a>cuPayload</a></li>
--   </ul>
customersUpdate :: Text -> Customer -> CustomersUpdate

-- | Updates a customer.
--   
--   <i>See:</i> <a>customersUpdate</a> smart constructor.
data CustomersUpdate

-- | Id of the customer to be updated
cuCustomerKey :: Lens' CustomersUpdate Text

-- | Multipart request metadata.
cuPayload :: Lens' CustomersUpdate Customer
instance GHC.Generics.Generic Network.Google.Resource.Directory.Customers.Update.CustomersUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Customers.Update.CustomersUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Customers.Update.CustomersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Customers.Update.CustomersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Customers.Update.CustomersUpdate


-- | Deletes a Domain Alias of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domainAliases.delete</tt>.
module Network.Google.Resource.Directory.DomainAliases.Delete

-- | A resource alias for <tt>directory.domainAliases.delete</tt> method
--   which the <a>DomainAliasesDelete</a> request conforms to.
type DomainAliasesDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domainaliases" :> (Capture "domainAliasName" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>DomainAliasesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dadDomainAliasName</a></li>
--   <li><a>dadCustomer</a></li>
--   </ul>
domainAliasesDelete :: Text -> Text -> DomainAliasesDelete

-- | Deletes a Domain Alias of the customer.
--   
--   <i>See:</i> <a>domainAliasesDelete</a> smart constructor.
data DomainAliasesDelete

-- | Name of domain alias to be retrieved.
dadDomainAliasName :: Lens' DomainAliasesDelete Text

-- | Immutable id of the Google Apps account.
dadCustomer :: Lens' DomainAliasesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.DomainAliases.Delete.DomainAliasesDelete
instance Data.Data.Data Network.Google.Resource.Directory.DomainAliases.Delete.DomainAliasesDelete
instance GHC.Show.Show Network.Google.Resource.Directory.DomainAliases.Delete.DomainAliasesDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.DomainAliases.Delete.DomainAliasesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.DomainAliases.Delete.DomainAliasesDelete


-- | Retrieves a domain alias of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domainAliases.get</tt>.
module Network.Google.Resource.Directory.DomainAliases.Get

-- | A resource alias for <tt>directory.domainAliases.get</tt> method which
--   the <a>DomainAliasesGet</a> request conforms to.
type DomainAliasesGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domainaliases" :> (Capture "domainAliasName" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DomainAlias)))))))

-- | Creates a value of <a>DomainAliasesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dagDomainAliasName</a></li>
--   <li><a>dagCustomer</a></li>
--   </ul>
domainAliasesGet :: Text -> Text -> DomainAliasesGet

-- | Retrieves a domain alias of the customer.
--   
--   <i>See:</i> <a>domainAliasesGet</a> smart constructor.
data DomainAliasesGet

-- | Name of domain alias to be retrieved.
dagDomainAliasName :: Lens' DomainAliasesGet Text

-- | Immutable id of the Google Apps account.
dagCustomer :: Lens' DomainAliasesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.DomainAliases.Get.DomainAliasesGet
instance Data.Data.Data Network.Google.Resource.Directory.DomainAliases.Get.DomainAliasesGet
instance GHC.Show.Show Network.Google.Resource.Directory.DomainAliases.Get.DomainAliasesGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.DomainAliases.Get.DomainAliasesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.DomainAliases.Get.DomainAliasesGet


-- | Inserts a Domain alias of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domainAliases.insert</tt>.
module Network.Google.Resource.Directory.DomainAliases.Insert

-- | A resource alias for <tt>directory.domainAliases.insert</tt> method
--   which the <a>DomainAliasesInsert</a> request conforms to.
type DomainAliasesInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domainaliases" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DomainAlias :> Post '[JSON] DomainAlias)))))))

-- | Creates a value of <a>DomainAliasesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daiPayload</a></li>
--   <li><a>daiCustomer</a></li>
--   </ul>
domainAliasesInsert :: DomainAlias -> Text -> DomainAliasesInsert

-- | Inserts a Domain alias of the customer.
--   
--   <i>See:</i> <a>domainAliasesInsert</a> smart constructor.
data DomainAliasesInsert

-- | Multipart request metadata.
daiPayload :: Lens' DomainAliasesInsert DomainAlias

-- | Immutable id of the Google Apps account.
daiCustomer :: Lens' DomainAliasesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.DomainAliases.Insert.DomainAliasesInsert
instance Data.Data.Data Network.Google.Resource.Directory.DomainAliases.Insert.DomainAliasesInsert
instance GHC.Show.Show Network.Google.Resource.Directory.DomainAliases.Insert.DomainAliasesInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.DomainAliases.Insert.DomainAliasesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.DomainAliases.Insert.DomainAliasesInsert


-- | Lists the domain aliases of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domainAliases.list</tt>.
module Network.Google.Resource.Directory.DomainAliases.List

-- | A resource alias for <tt>directory.domainAliases.list</tt> method
--   which the <a>DomainAliasesList</a> request conforms to.
type DomainAliasesListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domainaliases" :> (QueryParam "parentDomainName" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DomainAliases)))))))

-- | Creates a value of <a>DomainAliasesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dalCustomer</a></li>
--   <li><a>dalParentDomainName</a></li>
--   </ul>
domainAliasesList :: Text -> DomainAliasesList

-- | Lists the domain aliases of the customer.
--   
--   <i>See:</i> <a>domainAliasesList</a> smart constructor.
data DomainAliasesList

-- | Immutable id of the Google Apps account.
dalCustomer :: Lens' DomainAliasesList Text

-- | Name of the parent domain for which domain aliases are to be fetched.
dalParentDomainName :: Lens' DomainAliasesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Directory.DomainAliases.List.DomainAliasesList
instance Data.Data.Data Network.Google.Resource.Directory.DomainAliases.List.DomainAliasesList
instance GHC.Show.Show Network.Google.Resource.Directory.DomainAliases.List.DomainAliasesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.DomainAliases.List.DomainAliasesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.DomainAliases.List.DomainAliasesList


-- | Deletes a domain of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domains.delete</tt>.
module Network.Google.Resource.Directory.Domains.Delete

-- | A resource alias for <tt>directory.domains.delete</tt> method which
--   the <a>DomainsDelete</a> request conforms to.
type DomainsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domains" :> (Capture "domainName" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>DomainsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddCustomer</a></li>
--   <li><a>ddDomainName</a></li>
--   </ul>
domainsDelete :: Text -> Text -> DomainsDelete

-- | Deletes a domain of the customer.
--   
--   <i>See:</i> <a>domainsDelete</a> smart constructor.
data DomainsDelete

-- | Immutable id of the Google Apps account.
ddCustomer :: Lens' DomainsDelete Text

-- | Name of domain to be deleted
ddDomainName :: Lens' DomainsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Domains.Delete.DomainsDelete
instance Data.Data.Data Network.Google.Resource.Directory.Domains.Delete.DomainsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Domains.Delete.DomainsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Domains.Delete.DomainsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Domains.Delete.DomainsDelete


-- | Retrieves a domain of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domains.get</tt>.
module Network.Google.Resource.Directory.Domains.Get

-- | A resource alias for <tt>directory.domains.get</tt> method which the
--   <a>DomainsGet</a> request conforms to.
type DomainsGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domains" :> (Capture "domainName" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Domains)))))))

-- | Creates a value of <a>DomainsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dgCustomer</a></li>
--   <li><a>dgDomainName</a></li>
--   </ul>
domainsGet :: Text -> Text -> DomainsGet

-- | Retrieves a domain of the customer.
--   
--   <i>See:</i> <a>domainsGet</a> smart constructor.
data DomainsGet

-- | Immutable id of the Google Apps account.
dgCustomer :: Lens' DomainsGet Text

-- | Name of domain to be retrieved
dgDomainName :: Lens' DomainsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Domains.Get.DomainsGet
instance Data.Data.Data Network.Google.Resource.Directory.Domains.Get.DomainsGet
instance GHC.Show.Show Network.Google.Resource.Directory.Domains.Get.DomainsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Domains.Get.DomainsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Domains.Get.DomainsGet


-- | Inserts a domain of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domains.insert</tt>.
module Network.Google.Resource.Directory.Domains.Insert

-- | A resource alias for <tt>directory.domains.insert</tt> method which
--   the <a>DomainsInsert</a> request conforms to.
type DomainsInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domains" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Domains :> Post '[JSON] Domains)))))))

-- | Creates a value of <a>DomainsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>diPayload</a></li>
--   <li><a>diCustomer</a></li>
--   </ul>
domainsInsert :: Domains -> Text -> DomainsInsert

-- | Inserts a domain of the customer.
--   
--   <i>See:</i> <a>domainsInsert</a> smart constructor.
data DomainsInsert

-- | Multipart request metadata.
diPayload :: Lens' DomainsInsert Domains

-- | Immutable id of the Google Apps account.
diCustomer :: Lens' DomainsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Domains.Insert.DomainsInsert
instance Data.Data.Data Network.Google.Resource.Directory.Domains.Insert.DomainsInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Domains.Insert.DomainsInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Domains.Insert.DomainsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Domains.Insert.DomainsInsert


-- | Lists the domains of the customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.domains.list</tt>.
module Network.Google.Resource.Directory.Domains.List

-- | A resource alias for <tt>directory.domains.list</tt> method which the
--   <a>DomainsList</a> request conforms to.
type DomainsListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("domains" :> (QueryParam "alt" AltJSON :> Get '[JSON] Domains2))))))

-- | Creates a value of <a>DomainsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlCustomer</a></li>
--   </ul>
domainsList :: Text -> DomainsList

-- | Lists the domains of the customer.
--   
--   <i>See:</i> <a>domainsList</a> smart constructor.
data DomainsList

-- | Immutable id of the Google Apps account.
dlCustomer :: Lens' DomainsList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Domains.List.DomainsList
instance Data.Data.Data Network.Google.Resource.Directory.Domains.List.DomainsList
instance GHC.Show.Show Network.Google.Resource.Directory.Domains.List.DomainsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Domains.List.DomainsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Domains.List.DomainsList


-- | Remove a alias for the group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.aliases.delete</tt>.
module Network.Google.Resource.Directory.Groups.Aliases.Delete

-- | A resource alias for <tt>directory.groups.aliases.delete</tt> method
--   which the <a>GroupsAliasesDelete</a> request conforms to.
type GroupsAliasesDeleteResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("aliases" :> (Capture "alias" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>GroupsAliasesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gadGroupKey</a></li>
--   <li><a>gadAlias</a></li>
--   </ul>
groupsAliasesDelete :: Text -> Text -> GroupsAliasesDelete

-- | Remove a alias for the group
--   
--   <i>See:</i> <a>groupsAliasesDelete</a> smart constructor.
data GroupsAliasesDelete

-- | Email or immutable Id of the group
gadGroupKey :: Lens' GroupsAliasesDelete Text

-- | The alias to be removed
gadAlias :: Lens' GroupsAliasesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Aliases.Delete.GroupsAliasesDelete
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Aliases.Delete.GroupsAliasesDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Aliases.Delete.GroupsAliasesDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Aliases.Delete.GroupsAliasesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Aliases.Delete.GroupsAliasesDelete


-- | Add a alias for the group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.aliases.insert</tt>.
module Network.Google.Resource.Directory.Groups.Aliases.Insert

-- | A resource alias for <tt>directory.groups.aliases.insert</tt> method
--   which the <a>GroupsAliasesInsert</a> request conforms to.
type GroupsAliasesInsertResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("aliases" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Alias :> Post '[JSON] Alias)))))))

-- | Creates a value of <a>GroupsAliasesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gaiGroupKey</a></li>
--   <li><a>gaiPayload</a></li>
--   </ul>
groupsAliasesInsert :: Text -> Alias -> GroupsAliasesInsert

-- | Add a alias for the group
--   
--   <i>See:</i> <a>groupsAliasesInsert</a> smart constructor.
data GroupsAliasesInsert

-- | Email or immutable Id of the group
gaiGroupKey :: Lens' GroupsAliasesInsert Text

-- | Multipart request metadata.
gaiPayload :: Lens' GroupsAliasesInsert Alias
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Aliases.Insert.GroupsAliasesInsert
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Aliases.Insert.GroupsAliasesInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Aliases.Insert.GroupsAliasesInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Aliases.Insert.GroupsAliasesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Aliases.Insert.GroupsAliasesInsert


-- | List all aliases for a group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.aliases.list</tt>.
module Network.Google.Resource.Directory.Groups.Aliases.List

-- | A resource alias for <tt>directory.groups.aliases.list</tt> method
--   which the <a>GroupsAliasesList</a> request conforms to.
type GroupsAliasesListResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("aliases" :> (QueryParam "alt" AltJSON :> Get '[JSON] Aliases))))))

-- | Creates a value of <a>GroupsAliasesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>galGroupKey</a></li>
--   </ul>
groupsAliasesList :: Text -> GroupsAliasesList

-- | List all aliases for a group
--   
--   <i>See:</i> <a>groupsAliasesList</a> smart constructor.
data GroupsAliasesList

-- | Email or immutable Id of the group
galGroupKey :: Lens' GroupsAliasesList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Aliases.List.GroupsAliasesList
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Aliases.List.GroupsAliasesList
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Aliases.List.GroupsAliasesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Aliases.List.GroupsAliasesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Aliases.List.GroupsAliasesList


-- | Delete Group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.delete</tt>.
module Network.Google.Resource.Directory.Groups.Delete

-- | A resource alias for <tt>directory.groups.delete</tt> method which the
--   <a>GroupsDelete</a> request conforms to.
type GroupsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>GroupsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gdGroupKey</a></li>
--   </ul>
groupsDelete :: Text -> GroupsDelete

-- | Delete Group
--   
--   <i>See:</i> <a>groupsDelete</a> smart constructor.
data GroupsDelete

-- | Email or immutable Id of the group
gdGroupKey :: Lens' GroupsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Delete.GroupsDelete
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Delete.GroupsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Delete.GroupsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Delete.GroupsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Delete.GroupsDelete


-- | Retrieve Group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.get</tt>.
module Network.Google.Resource.Directory.Groups.Get

-- | A resource alias for <tt>directory.groups.get</tt> method which the
--   <a>GroupsGet</a> request conforms to.
type GroupsGetResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Group)))))

-- | Creates a value of <a>GroupsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ggGroupKey</a></li>
--   </ul>
groupsGet :: Text -> GroupsGet

-- | Retrieve Group
--   
--   <i>See:</i> <a>groupsGet</a> smart constructor.
data GroupsGet

-- | Email or immutable Id of the group
ggGroupKey :: Lens' GroupsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Get.GroupsGet
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Get.GroupsGet
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Get.GroupsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Get.GroupsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Get.GroupsGet


-- | Create Group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.insert</tt>.
module Network.Google.Resource.Directory.Groups.Insert

-- | A resource alias for <tt>directory.groups.insert</tt> method which the
--   <a>GroupsInsert</a> request conforms to.
type GroupsInsertResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Group :> Post '[JSON] Group)))))

-- | Creates a value of <a>GroupsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giPayload</a></li>
--   </ul>
groupsInsert :: Group -> GroupsInsert

-- | Create Group
--   
--   <i>See:</i> <a>groupsInsert</a> smart constructor.
data GroupsInsert

-- | Multipart request metadata.
giPayload :: Lens' GroupsInsert Group
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Insert.GroupsInsert
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Insert.GroupsInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Insert.GroupsInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Insert.GroupsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Insert.GroupsInsert


-- | Retrieve all groups in a domain (paginated)
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.list</tt>.
module Network.Google.Resource.Directory.Groups.List

-- | A resource alias for <tt>directory.groups.list</tt> method which the
--   <a>GroupsList</a> request conforms to.
type GroupsListResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (QueryParam "domain" Text :> (QueryParam "customer" Text :> (QueryParam "pageToken" Text :> (QueryParam "userKey" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Groups)))))))))

-- | Creates a value of <a>GroupsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glDomain</a></li>
--   <li><a>glCustomer</a></li>
--   <li><a>glPageToken</a></li>
--   <li><a>glUserKey</a></li>
--   <li><a>glMaxResults</a></li>
--   </ul>
groupsList :: GroupsList

-- | Retrieve all groups in a domain (paginated)
--   
--   <i>See:</i> <a>groupsList</a> smart constructor.
data GroupsList

-- | Name of the domain. Fill this field to get groups from only this
--   domain. To return all groups in a multi-domain fill customer field
--   instead.
glDomain :: Lens' GroupsList (Maybe Text)

-- | Immutable id of the Google Apps account. In case of multi-domain, to
--   fetch all groups for a customer, fill this field instead of domain.
glCustomer :: Lens' GroupsList (Maybe Text)

-- | Token to specify next page in the list
glPageToken :: Lens' GroupsList (Maybe Text)

-- | Email or immutable Id of the user if only those groups are to be
--   listed, the given user is a member of. If Id, it should match with id
--   of user object
glUserKey :: Lens' GroupsList (Maybe Text)

-- | Maximum number of results to return. Default is 200
glMaxResults :: Lens' GroupsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.List.GroupsList
instance Data.Data.Data Network.Google.Resource.Directory.Groups.List.GroupsList
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.List.GroupsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.List.GroupsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.List.GroupsList


-- | Update Group. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.patch</tt>.
module Network.Google.Resource.Directory.Groups.Patch

-- | A resource alias for <tt>directory.groups.patch</tt> method which the
--   <a>GroupsPatch</a> request conforms to.
type GroupsPatchResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Group :> Patch '[JSON] Group))))))

-- | Creates a value of <a>GroupsPatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpGroupKey</a></li>
--   <li><a>gpPayload</a></li>
--   </ul>
groupsPatch :: Text -> Group -> GroupsPatch

-- | Update Group. This method supports patch semantics.
--   
--   <i>See:</i> <a>groupsPatch</a> smart constructor.
data GroupsPatch

-- | Email or immutable Id of the group. If Id, it should match with id of
--   group object
gpGroupKey :: Lens' GroupsPatch Text

-- | Multipart request metadata.
gpPayload :: Lens' GroupsPatch Group
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Patch.GroupsPatch
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Patch.GroupsPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Patch.GroupsPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Patch.GroupsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Patch.GroupsPatch


-- | Update Group
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.groups.update</tt>.
module Network.Google.Resource.Directory.Groups.Update

-- | A resource alias for <tt>directory.groups.update</tt> method which the
--   <a>GroupsUpdate</a> request conforms to.
type GroupsUpdateResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Group :> Put '[JSON] Group))))))

-- | Creates a value of <a>GroupsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>guGroupKey</a></li>
--   <li><a>guPayload</a></li>
--   </ul>
groupsUpdate :: Text -> Group -> GroupsUpdate

-- | Update Group
--   
--   <i>See:</i> <a>groupsUpdate</a> smart constructor.
data GroupsUpdate

-- | Email or immutable Id of the group. If Id, it should match with id of
--   group object
guGroupKey :: Lens' GroupsUpdate Text

-- | Multipart request metadata.
guPayload :: Lens' GroupsUpdate Group
instance GHC.Generics.Generic Network.Google.Resource.Directory.Groups.Update.GroupsUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Groups.Update.GroupsUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Groups.Update.GroupsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Groups.Update.GroupsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Groups.Update.GroupsUpdate


-- | Remove membership.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.delete</tt>.
module Network.Google.Resource.Directory.Members.Delete

-- | A resource alias for <tt>directory.members.delete</tt> method which
--   the <a>MembersDelete</a> request conforms to.
type MembersDeleteResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (Capture "memberKey" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>MembersDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdMemberKey</a></li>
--   <li><a>mdGroupKey</a></li>
--   </ul>
membersDelete :: Text -> Text -> MembersDelete

-- | Remove membership.
--   
--   <i>See:</i> <a>membersDelete</a> smart constructor.
data MembersDelete

-- | Email or immutable Id of the member
mdMemberKey :: Lens' MembersDelete Text

-- | Email or immutable Id of the group
mdGroupKey :: Lens' MembersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.Delete.MembersDelete
instance Data.Data.Data Network.Google.Resource.Directory.Members.Delete.MembersDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Members.Delete.MembersDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.Delete.MembersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.Delete.MembersDelete


-- | Retrieve Group Member
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.get</tt>.
module Network.Google.Resource.Directory.Members.Get

-- | A resource alias for <tt>directory.members.get</tt> method which the
--   <a>MembersGet</a> request conforms to.
type MembersGetResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (Capture "memberKey" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Member)))))))

-- | Creates a value of <a>MembersGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mgMemberKey</a></li>
--   <li><a>mgGroupKey</a></li>
--   </ul>
membersGet :: Text -> Text -> MembersGet

-- | Retrieve Group Member
--   
--   <i>See:</i> <a>membersGet</a> smart constructor.
data MembersGet

-- | Email or immutable Id of the member
mgMemberKey :: Lens' MembersGet Text

-- | Email or immutable Id of the group
mgGroupKey :: Lens' MembersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.Get.MembersGet
instance Data.Data.Data Network.Google.Resource.Directory.Members.Get.MembersGet
instance GHC.Show.Show Network.Google.Resource.Directory.Members.Get.MembersGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.Get.MembersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.Get.MembersGet


-- | Add user to the specified group.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.insert</tt>.
module Network.Google.Resource.Directory.Members.Insert

-- | A resource alias for <tt>directory.members.insert</tt> method which
--   the <a>MembersInsert</a> request conforms to.
type MembersInsertResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Member :> Post '[JSON] Member)))))))

-- | Creates a value of <a>MembersInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>miGroupKey</a></li>
--   <li><a>miPayload</a></li>
--   </ul>
membersInsert :: Text -> Member -> MembersInsert

-- | Add user to the specified group.
--   
--   <i>See:</i> <a>membersInsert</a> smart constructor.
data MembersInsert

-- | Email or immutable Id of the group
miGroupKey :: Lens' MembersInsert Text

-- | Multipart request metadata.
miPayload :: Lens' MembersInsert Member
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.Insert.MembersInsert
instance Data.Data.Data Network.Google.Resource.Directory.Members.Insert.MembersInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Members.Insert.MembersInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.Insert.MembersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.Insert.MembersInsert


-- | Retrieve all members in a group (paginated)
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.list</tt>.
module Network.Google.Resource.Directory.Members.List

-- | A resource alias for <tt>directory.members.list</tt> method which the
--   <a>MembersList</a> request conforms to.
type MembersListResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (QueryParam "roles" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Members)))))))))

-- | Creates a value of <a>MembersList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mlRoles</a></li>
--   <li><a>mlGroupKey</a></li>
--   <li><a>mlPageToken</a></li>
--   <li><a>mlMaxResults</a></li>
--   </ul>
membersList :: Text -> MembersList

-- | Retrieve all members in a group (paginated)
--   
--   <i>See:</i> <a>membersList</a> smart constructor.
data MembersList

-- | Comma separated role values to filter list results on.
mlRoles :: Lens' MembersList (Maybe Text)

-- | Email or immutable Id of the group
mlGroupKey :: Lens' MembersList Text

-- | Token to specify next page in the list
mlPageToken :: Lens' MembersList (Maybe Text)

-- | Maximum number of results to return. Default is 200
mlMaxResults :: Lens' MembersList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.List.MembersList
instance Data.Data.Data Network.Google.Resource.Directory.Members.List.MembersList
instance GHC.Show.Show Network.Google.Resource.Directory.Members.List.MembersList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.List.MembersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.List.MembersList


-- | Update membership of a user in the specified group. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.patch</tt>.
module Network.Google.Resource.Directory.Members.Patch

-- | A resource alias for <tt>directory.members.patch</tt> method which the
--   <a>MembersPatch</a> request conforms to.
type MembersPatchResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (Capture "memberKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Member :> Patch '[JSON] Member))))))))

-- | Creates a value of <a>MembersPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mpMemberKey</a></li>
--   <li><a>mpGroupKey</a></li>
--   <li><a>mpPayload</a></li>
--   </ul>
membersPatch :: Text -> Text -> Member -> MembersPatch

-- | Update membership of a user in the specified group. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>membersPatch</a> smart constructor.
data MembersPatch

-- | Email or immutable Id of the user. If Id, it should match with id of
--   member object
mpMemberKey :: Lens' MembersPatch Text

-- | Email or immutable Id of the group. If Id, it should match with id of
--   group object
mpGroupKey :: Lens' MembersPatch Text

-- | Multipart request metadata.
mpPayload :: Lens' MembersPatch Member
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.Patch.MembersPatch
instance Data.Data.Data Network.Google.Resource.Directory.Members.Patch.MembersPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Members.Patch.MembersPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.Patch.MembersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.Patch.MembersPatch


-- | Update membership of a user in the specified group.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.members.update</tt>.
module Network.Google.Resource.Directory.Members.Update

-- | A resource alias for <tt>directory.members.update</tt> method which
--   the <a>MembersUpdate</a> request conforms to.
type MembersUpdateResource = "admin" :> ("directory" :> ("v1" :> ("groups" :> (Capture "groupKey" Text :> ("members" :> (Capture "memberKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Member :> Put '[JSON] Member))))))))

-- | Creates a value of <a>MembersUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>muMemberKey</a></li>
--   <li><a>muGroupKey</a></li>
--   <li><a>muPayload</a></li>
--   </ul>
membersUpdate :: Text -> Text -> Member -> MembersUpdate

-- | Update membership of a user in the specified group.
--   
--   <i>See:</i> <a>membersUpdate</a> smart constructor.
data MembersUpdate

-- | Email or immutable Id of the user. If Id, it should match with id of
--   member object
muMemberKey :: Lens' MembersUpdate Text

-- | Email or immutable Id of the group. If Id, it should match with id of
--   group object
muGroupKey :: Lens' MembersUpdate Text

-- | Multipart request metadata.
muPayload :: Lens' MembersUpdate Member
instance GHC.Generics.Generic Network.Google.Resource.Directory.Members.Update.MembersUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Members.Update.MembersUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Members.Update.MembersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Members.Update.MembersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Members.Update.MembersUpdate


-- | Take action on Mobile Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.mobiledevices.action</tt>.
module Network.Google.Resource.Directory.MobileDevices.Action

-- | A resource alias for <tt>directory.mobiledevices.action</tt> method
--   which the <a>MobileDevicesAction</a> request conforms to.
type MobileDevicesActionResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("mobile" :> (Capture "resourceId" Text :> ("action" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] MobileDeviceAction :> Post '[JSON] ()))))))))))

-- | Creates a value of <a>MobileDevicesAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdaResourceId</a></li>
--   <li><a>mdaPayload</a></li>
--   <li><a>mdaCustomerId</a></li>
--   </ul>
mobileDevicesAction :: Text -> MobileDeviceAction -> Text -> MobileDevicesAction

-- | Take action on Mobile Device
--   
--   <i>See:</i> <a>mobileDevicesAction</a> smart constructor.
data MobileDevicesAction

-- | Immutable id of Mobile Device
mdaResourceId :: Lens' MobileDevicesAction Text

-- | Multipart request metadata.
mdaPayload :: Lens' MobileDevicesAction MobileDeviceAction

-- | Immutable id of the Google Apps account
mdaCustomerId :: Lens' MobileDevicesAction Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.MobileDevices.Action.MobileDevicesAction
instance Data.Data.Data Network.Google.Resource.Directory.MobileDevices.Action.MobileDevicesAction
instance GHC.Show.Show Network.Google.Resource.Directory.MobileDevices.Action.MobileDevicesAction
instance GHC.Classes.Eq Network.Google.Resource.Directory.MobileDevices.Action.MobileDevicesAction
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.MobileDevices.Action.MobileDevicesAction


-- | Delete Mobile Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.mobiledevices.delete</tt>.
module Network.Google.Resource.Directory.MobileDevices.Delete

-- | A resource alias for <tt>directory.mobiledevices.delete</tt> method
--   which the <a>MobileDevicesDelete</a> request conforms to.
type MobileDevicesDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("mobile" :> (Capture "resourceId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))))

-- | Creates a value of <a>MobileDevicesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mddResourceId</a></li>
--   <li><a>mddCustomerId</a></li>
--   </ul>
mobileDevicesDelete :: Text -> Text -> MobileDevicesDelete

-- | Delete Mobile Device
--   
--   <i>See:</i> <a>mobileDevicesDelete</a> smart constructor.
data MobileDevicesDelete

-- | Immutable id of Mobile Device
mddResourceId :: Lens' MobileDevicesDelete Text

-- | Immutable id of the Google Apps account
mddCustomerId :: Lens' MobileDevicesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.MobileDevices.Delete.MobileDevicesDelete
instance Data.Data.Data Network.Google.Resource.Directory.MobileDevices.Delete.MobileDevicesDelete
instance GHC.Show.Show Network.Google.Resource.Directory.MobileDevices.Delete.MobileDevicesDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.MobileDevices.Delete.MobileDevicesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.MobileDevices.Delete.MobileDevicesDelete


-- | Retrieve Mobile Device
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.mobiledevices.get</tt>.
module Network.Google.Resource.Directory.MobileDevices.Get

-- | A resource alias for <tt>directory.mobiledevices.get</tt> method which
--   the <a>MobileDevicesGet</a> request conforms to.
type MobileDevicesGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("mobile" :> (Capture "resourceId" Text :> (QueryParam "projection" MobileDevicesGetProjection :> (QueryParam "alt" AltJSON :> Get '[JSON] MobileDevice)))))))))

-- | Creates a value of <a>MobileDevicesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdgResourceId</a></li>
--   <li><a>mdgCustomerId</a></li>
--   <li><a>mdgProjection</a></li>
--   </ul>
mobileDevicesGet :: Text -> Text -> MobileDevicesGet

-- | Retrieve Mobile Device
--   
--   <i>See:</i> <a>mobileDevicesGet</a> smart constructor.
data MobileDevicesGet

-- | Immutable id of Mobile Device
mdgResourceId :: Lens' MobileDevicesGet Text

-- | Immutable id of the Google Apps account
mdgCustomerId :: Lens' MobileDevicesGet Text

-- | Restrict information returned to a set of selected fields.
mdgProjection :: Lens' MobileDevicesGet (Maybe MobileDevicesGetProjection)
instance GHC.Generics.Generic Network.Google.Resource.Directory.MobileDevices.Get.MobileDevicesGet
instance Data.Data.Data Network.Google.Resource.Directory.MobileDevices.Get.MobileDevicesGet
instance GHC.Show.Show Network.Google.Resource.Directory.MobileDevices.Get.MobileDevicesGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.MobileDevices.Get.MobileDevicesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.MobileDevices.Get.MobileDevicesGet


-- | Retrieve all Mobile Devices of a customer (paginated)
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.mobiledevices.list</tt>.
module Network.Google.Resource.Directory.MobileDevices.List

-- | A resource alias for <tt>directory.mobiledevices.list</tt> method
--   which the <a>MobileDevicesList</a> request conforms to.
type MobileDevicesListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("devices" :> ("mobile" :> (QueryParam "orderBy" MobileDevicesListOrderBy :> (QueryParam "sortOrder" MobileDevicesListSortOrder :> (QueryParam "query" Text :> (QueryParam "projection" MobileDevicesListProjection :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MobileDevices)))))))))))))

-- | Creates a value of <a>MobileDevicesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdlOrderBy</a></li>
--   <li><a>mdlCustomerId</a></li>
--   <li><a>mdlSortOrder</a></li>
--   <li><a>mdlQuery</a></li>
--   <li><a>mdlProjection</a></li>
--   <li><a>mdlPageToken</a></li>
--   <li><a>mdlMaxResults</a></li>
--   </ul>
mobileDevicesList :: Text -> MobileDevicesList

-- | Retrieve all Mobile Devices of a customer (paginated)
--   
--   <i>See:</i> <a>mobileDevicesList</a> smart constructor.
data MobileDevicesList

-- | Column to use for sorting results
mdlOrderBy :: Lens' MobileDevicesList (Maybe MobileDevicesListOrderBy)

-- | Immutable id of the Google Apps account
mdlCustomerId :: Lens' MobileDevicesList Text

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
mdlSortOrder :: Lens' MobileDevicesList (Maybe MobileDevicesListSortOrder)

-- | Search string in the format given at
--   http://support.google.com/a/bin/answer.py?hl=en&amp;answer=1408863#search
mdlQuery :: Lens' MobileDevicesList (Maybe Text)

-- | Restrict information returned to a set of selected fields.
mdlProjection :: Lens' MobileDevicesList (Maybe MobileDevicesListProjection)

-- | Token to specify next page in the list
mdlPageToken :: Lens' MobileDevicesList (Maybe Text)

-- | Maximum number of results to return. Default is 100
mdlMaxResults :: Lens' MobileDevicesList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.MobileDevices.List.MobileDevicesList
instance Data.Data.Data Network.Google.Resource.Directory.MobileDevices.List.MobileDevicesList
instance GHC.Show.Show Network.Google.Resource.Directory.MobileDevices.List.MobileDevicesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.MobileDevices.List.MobileDevicesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.MobileDevices.List.MobileDevicesList


-- | Deletes a notification
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.notifications.delete</tt>.
module Network.Google.Resource.Directory.Notifications.Delete

-- | A resource alias for <tt>directory.notifications.delete</tt> method
--   which the <a>NotificationsDelete</a> request conforms to.
type NotificationsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("notifications" :> (Capture "notificationId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>NotificationsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ndCustomer</a></li>
--   <li><a>ndNotificationId</a></li>
--   </ul>
notificationsDelete :: Text -> Text -> NotificationsDelete

-- | Deletes a notification
--   
--   <i>See:</i> <a>notificationsDelete</a> smart constructor.
data NotificationsDelete

-- | The unique ID for the customer's Google account. The customerId is
--   also returned as part of the Users resource.
ndCustomer :: Lens' NotificationsDelete Text

-- | The unique ID of the notification.
ndNotificationId :: Lens' NotificationsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Notifications.Delete.NotificationsDelete
instance Data.Data.Data Network.Google.Resource.Directory.Notifications.Delete.NotificationsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Notifications.Delete.NotificationsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Notifications.Delete.NotificationsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Notifications.Delete.NotificationsDelete


-- | Retrieves a notification.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.notifications.get</tt>.
module Network.Google.Resource.Directory.Notifications.Get

-- | A resource alias for <tt>directory.notifications.get</tt> method which
--   the <a>NotificationsGet</a> request conforms to.
type NotificationsGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("notifications" :> (Capture "notificationId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Notification)))))))

-- | Creates a value of <a>NotificationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngCustomer</a></li>
--   <li><a>ngNotificationId</a></li>
--   </ul>
notificationsGet :: Text -> Text -> NotificationsGet

-- | Retrieves a notification.
--   
--   <i>See:</i> <a>notificationsGet</a> smart constructor.
data NotificationsGet

-- | The unique ID for the customer's Google account. The customerId is
--   also returned as part of the Users resource.
ngCustomer :: Lens' NotificationsGet Text

-- | The unique ID of the notification.
ngNotificationId :: Lens' NotificationsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Notifications.Get.NotificationsGet
instance Data.Data.Data Network.Google.Resource.Directory.Notifications.Get.NotificationsGet
instance GHC.Show.Show Network.Google.Resource.Directory.Notifications.Get.NotificationsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Notifications.Get.NotificationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Notifications.Get.NotificationsGet


-- | Retrieves a list of notifications.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.notifications.list</tt>.
module Network.Google.Resource.Directory.Notifications.List

-- | A resource alias for <tt>directory.notifications.list</tt> method
--   which the <a>NotificationsList</a> request conforms to.
type NotificationsListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("notifications" :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Notifications)))))))))

-- | Creates a value of <a>NotificationsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nlCustomer</a></li>
--   <li><a>nlLanguage</a></li>
--   <li><a>nlPageToken</a></li>
--   <li><a>nlMaxResults</a></li>
--   </ul>
notificationsList :: Text -> NotificationsList

-- | Retrieves a list of notifications.
--   
--   <i>See:</i> <a>notificationsList</a> smart constructor.
data NotificationsList

-- | The unique ID for the customer's Google account.
nlCustomer :: Lens' NotificationsList Text

-- | The ISO 639-1 code of the language notifications are returned in. The
--   default is English (en).
nlLanguage :: Lens' NotificationsList (Maybe Text)

-- | The token to specify the page of results to retrieve.
nlPageToken :: Lens' NotificationsList (Maybe Text)

-- | Maximum number of notifications to return per page. The default is
--   100.
nlMaxResults :: Lens' NotificationsList (Maybe Word32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Notifications.List.NotificationsList
instance Data.Data.Data Network.Google.Resource.Directory.Notifications.List.NotificationsList
instance GHC.Show.Show Network.Google.Resource.Directory.Notifications.List.NotificationsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Notifications.List.NotificationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Notifications.List.NotificationsList


-- | Updates a notification. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.notifications.patch</tt>.
module Network.Google.Resource.Directory.Notifications.Patch

-- | A resource alias for <tt>directory.notifications.patch</tt> method
--   which the <a>NotificationsPatch</a> request conforms to.
type NotificationsPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("notifications" :> (Capture "notificationId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Notification :> Patch '[JSON] Notification))))))))

-- | Creates a value of <a>NotificationsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>npPayload</a></li>
--   <li><a>npCustomer</a></li>
--   <li><a>npNotificationId</a></li>
--   </ul>
notificationsPatch :: Notification -> Text -> Text -> NotificationsPatch

-- | Updates a notification. This method supports patch semantics.
--   
--   <i>See:</i> <a>notificationsPatch</a> smart constructor.
data NotificationsPatch

-- | Multipart request metadata.
npPayload :: Lens' NotificationsPatch Notification

-- | The unique ID for the customer's Google account.
npCustomer :: Lens' NotificationsPatch Text

-- | The unique ID of the notification.
npNotificationId :: Lens' NotificationsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Notifications.Patch.NotificationsPatch
instance Data.Data.Data Network.Google.Resource.Directory.Notifications.Patch.NotificationsPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Notifications.Patch.NotificationsPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Notifications.Patch.NotificationsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Notifications.Patch.NotificationsPatch


-- | Updates a notification.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.notifications.update</tt>.
module Network.Google.Resource.Directory.Notifications.Update

-- | A resource alias for <tt>directory.notifications.update</tt> method
--   which the <a>NotificationsUpdate</a> request conforms to.
type NotificationsUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("notifications" :> (Capture "notificationId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Notification :> Put '[JSON] Notification))))))))

-- | Creates a value of <a>NotificationsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nuPayload</a></li>
--   <li><a>nuCustomer</a></li>
--   <li><a>nuNotificationId</a></li>
--   </ul>
notificationsUpdate :: Notification -> Text -> Text -> NotificationsUpdate

-- | Updates a notification.
--   
--   <i>See:</i> <a>notificationsUpdate</a> smart constructor.
data NotificationsUpdate

-- | Multipart request metadata.
nuPayload :: Lens' NotificationsUpdate Notification

-- | The unique ID for the customer's Google account.
nuCustomer :: Lens' NotificationsUpdate Text

-- | The unique ID of the notification.
nuNotificationId :: Lens' NotificationsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Notifications.Update.NotificationsUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Notifications.Update.NotificationsUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Notifications.Update.NotificationsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Notifications.Update.NotificationsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Notifications.Update.NotificationsUpdate


-- | Remove Organization Unit
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.delete</tt>.
module Network.Google.Resource.Directory.OrgUnits.Delete

-- | A resource alias for <tt>directory.orgunits.delete</tt> method which
--   the <a>OrgUnitsDelete</a> request conforms to.
type OrgUnitsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (Captures "orgUnitPath" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>OrgUnitsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oudOrgUnitPath</a></li>
--   <li><a>oudCustomerId</a></li>
--   </ul>
orgUnitsDelete :: [Text] -> Text -> OrgUnitsDelete

-- | Remove Organization Unit
--   
--   <i>See:</i> <a>orgUnitsDelete</a> smart constructor.
data OrgUnitsDelete

-- | Full path of the organization unit or its Id
oudOrgUnitPath :: Lens' OrgUnitsDelete [Text]

-- | Immutable id of the Google Apps account
oudCustomerId :: Lens' OrgUnitsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.Delete.OrgUnitsDelete
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.Delete.OrgUnitsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.Delete.OrgUnitsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.Delete.OrgUnitsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.Delete.OrgUnitsDelete


-- | Retrieve Organization Unit
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.get</tt>.
module Network.Google.Resource.Directory.OrgUnits.Get

-- | A resource alias for <tt>directory.orgunits.get</tt> method which the
--   <a>OrgUnitsGet</a> request conforms to.
type OrgUnitsGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (Captures "orgUnitPath" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] OrgUnit)))))))

-- | Creates a value of <a>OrgUnitsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ougOrgUnitPath</a></li>
--   <li><a>ougCustomerId</a></li>
--   </ul>
orgUnitsGet :: [Text] -> Text -> OrgUnitsGet

-- | Retrieve Organization Unit
--   
--   <i>See:</i> <a>orgUnitsGet</a> smart constructor.
data OrgUnitsGet

-- | Full path of the organization unit or its Id
ougOrgUnitPath :: Lens' OrgUnitsGet [Text]

-- | Immutable id of the Google Apps account
ougCustomerId :: Lens' OrgUnitsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.Get.OrgUnitsGet
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.Get.OrgUnitsGet
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.Get.OrgUnitsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.Get.OrgUnitsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.Get.OrgUnitsGet


-- | Add Organization Unit
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.insert</tt>.
module Network.Google.Resource.Directory.OrgUnits.Insert

-- | A resource alias for <tt>directory.orgunits.insert</tt> method which
--   the <a>OrgUnitsInsert</a> request conforms to.
type OrgUnitsInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] OrgUnit :> Post '[JSON] OrgUnit)))))))

-- | Creates a value of <a>OrgUnitsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouiPayload</a></li>
--   <li><a>ouiCustomerId</a></li>
--   </ul>
orgUnitsInsert :: OrgUnit -> Text -> OrgUnitsInsert

-- | Add Organization Unit
--   
--   <i>See:</i> <a>orgUnitsInsert</a> smart constructor.
data OrgUnitsInsert

-- | Multipart request metadata.
ouiPayload :: Lens' OrgUnitsInsert OrgUnit

-- | Immutable id of the Google Apps account
ouiCustomerId :: Lens' OrgUnitsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.Insert.OrgUnitsInsert
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.Insert.OrgUnitsInsert
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.Insert.OrgUnitsInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.Insert.OrgUnitsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.Insert.OrgUnitsInsert


-- | Retrieve all Organization Units
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.list</tt>.
module Network.Google.Resource.Directory.OrgUnits.List

-- | A resource alias for <tt>directory.orgunits.list</tt> method which the
--   <a>OrgUnitsList</a> request conforms to.
type OrgUnitsListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (QueryParam "orgUnitPath" Text :> (QueryParam "type" OrgUnitsListType :> (QueryParam "alt" AltJSON :> Get '[JSON] OrgUnits))))))))

-- | Creates a value of <a>OrgUnitsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oulOrgUnitPath</a></li>
--   <li><a>oulCustomerId</a></li>
--   <li><a>oulType</a></li>
--   </ul>
orgUnitsList :: Text -> OrgUnitsList

-- | Retrieve all Organization Units
--   
--   <i>See:</i> <a>orgUnitsList</a> smart constructor.
data OrgUnitsList

-- | the URL-encoded organization unit's path or its Id
oulOrgUnitPath :: Lens' OrgUnitsList Text

-- | Immutable id of the Google Apps account
oulCustomerId :: Lens' OrgUnitsList Text

-- | Whether to return all sub-organizations or just immediate children
oulType :: Lens' OrgUnitsList (Maybe OrgUnitsListType)
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.List.OrgUnitsList
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.List.OrgUnitsList
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.List.OrgUnitsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.List.OrgUnitsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.List.OrgUnitsList


-- | Update Organization Unit. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.patch</tt>.
module Network.Google.Resource.Directory.OrgUnits.Patch

-- | A resource alias for <tt>directory.orgunits.patch</tt> method which
--   the <a>OrgUnitsPatch</a> request conforms to.
type OrgUnitsPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (Captures "orgUnitPath" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] OrgUnit :> Patch '[JSON] OrgUnit))))))))

-- | Creates a value of <a>OrgUnitsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oupPayload</a></li>
--   <li><a>oupOrgUnitPath</a></li>
--   <li><a>oupCustomerId</a></li>
--   </ul>
orgUnitsPatch :: OrgUnit -> [Text] -> Text -> OrgUnitsPatch

-- | Update Organization Unit. This method supports patch semantics.
--   
--   <i>See:</i> <a>orgUnitsPatch</a> smart constructor.
data OrgUnitsPatch

-- | Multipart request metadata.
oupPayload :: Lens' OrgUnitsPatch OrgUnit

-- | Full path of the organization unit or its Id
oupOrgUnitPath :: Lens' OrgUnitsPatch [Text]

-- | Immutable id of the Google Apps account
oupCustomerId :: Lens' OrgUnitsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.Patch.OrgUnitsPatch
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.Patch.OrgUnitsPatch
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.Patch.OrgUnitsPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.Patch.OrgUnitsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.Patch.OrgUnitsPatch


-- | Update Organization Unit
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.orgunits.update</tt>.
module Network.Google.Resource.Directory.OrgUnits.Update

-- | A resource alias for <tt>directory.orgunits.update</tt> method which
--   the <a>OrgUnitsUpdate</a> request conforms to.
type OrgUnitsUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("orgunits" :> (Captures "orgUnitPath" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] OrgUnit :> Put '[JSON] OrgUnit))))))))

-- | Creates a value of <a>OrgUnitsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouuPayload</a></li>
--   <li><a>ouuOrgUnitPath</a></li>
--   <li><a>ouuCustomerId</a></li>
--   </ul>
orgUnitsUpdate :: OrgUnit -> [Text] -> Text -> OrgUnitsUpdate

-- | Update Organization Unit
--   
--   <i>See:</i> <a>orgUnitsUpdate</a> smart constructor.
data OrgUnitsUpdate

-- | Multipart request metadata.
ouuPayload :: Lens' OrgUnitsUpdate OrgUnit

-- | Full path of the organization unit or its Id
ouuOrgUnitPath :: Lens' OrgUnitsUpdate [Text]

-- | Immutable id of the Google Apps account
ouuCustomerId :: Lens' OrgUnitsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.OrgUnits.Update.OrgUnitsUpdate
instance Data.Data.Data Network.Google.Resource.Directory.OrgUnits.Update.OrgUnitsUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.OrgUnits.Update.OrgUnitsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.OrgUnits.Update.OrgUnitsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.OrgUnits.Update.OrgUnitsUpdate


-- | Retrieves a paginated list of all privileges for a customer.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.privileges.list</tt>.
module Network.Google.Resource.Directory.Privileges.List

-- | A resource alias for <tt>directory.privileges.list</tt> method which
--   the <a>PrivilegesList</a> request conforms to.
type PrivilegesListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> ("ALL" :> ("privileges" :> (QueryParam "alt" AltJSON :> Get '[JSON] Privileges))))))))

-- | Creates a value of <a>PrivilegesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plCustomer</a></li>
--   </ul>
privilegesList :: Text -> PrivilegesList

-- | Retrieves a paginated list of all privileges for a customer.
--   
--   <i>See:</i> <a>privilegesList</a> smart constructor.
data PrivilegesList

-- | Immutable ID of the Google Apps account.
plCustomer :: Lens' PrivilegesList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Privileges.List.PrivilegesList
instance Data.Data.Data Network.Google.Resource.Directory.Privileges.List.PrivilegesList
instance GHC.Show.Show Network.Google.Resource.Directory.Privileges.List.PrivilegesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Privileges.List.PrivilegesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Privileges.List.PrivilegesList


-- | Deletes a calendar resource.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.delete</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.Delete

-- | A resource alias for <tt>directory.resources.calendars.delete</tt>
--   method which the <a>ResourcesCalendarsDelete</a> request conforms to.
type ResourcesCalendarsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (Capture "calendarResourceId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))))

-- | Creates a value of <a>ResourcesCalendarsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcdCustomer</a></li>
--   <li><a>rcdCalendarResourceId</a></li>
--   </ul>
resourcesCalendarsDelete :: Text -> Text -> ResourcesCalendarsDelete

-- | Deletes a calendar resource.
--   
--   <i>See:</i> <a>resourcesCalendarsDelete</a> smart constructor.
data ResourcesCalendarsDelete

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rcdCustomer :: Lens' ResourcesCalendarsDelete Text

-- | The unique ID of the calendar resource to delete.
rcdCalendarResourceId :: Lens' ResourcesCalendarsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.Delete.ResourcesCalendarsDelete
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.Delete.ResourcesCalendarsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.Delete.ResourcesCalendarsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.Delete.ResourcesCalendarsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.Delete.ResourcesCalendarsDelete


-- | Retrieves a calendar resource.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.get</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.Get

-- | A resource alias for <tt>directory.resources.calendars.get</tt> method
--   which the <a>ResourcesCalendarsGet</a> request conforms to.
type ResourcesCalendarsGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (Capture "calendarResourceId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] CalendarResource))))))))

-- | Creates a value of <a>ResourcesCalendarsGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcgCustomer</a></li>
--   <li><a>rcgCalendarResourceId</a></li>
--   </ul>
resourcesCalendarsGet :: Text -> Text -> ResourcesCalendarsGet

-- | Retrieves a calendar resource.
--   
--   <i>See:</i> <a>resourcesCalendarsGet</a> smart constructor.
data ResourcesCalendarsGet

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rcgCustomer :: Lens' ResourcesCalendarsGet Text

-- | The unique ID of the calendar resource to retrieve.
rcgCalendarResourceId :: Lens' ResourcesCalendarsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.Get.ResourcesCalendarsGet
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.Get.ResourcesCalendarsGet
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.Get.ResourcesCalendarsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.Get.ResourcesCalendarsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.Get.ResourcesCalendarsGet


-- | Inserts a calendar resource.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.insert</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.Insert

-- | A resource alias for <tt>directory.resources.calendars.insert</tt>
--   method which the <a>ResourcesCalendarsInsert</a> request conforms to.
type ResourcesCalendarsInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarResource :> Post '[JSON] CalendarResource))))))))

-- | Creates a value of <a>ResourcesCalendarsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rciPayload</a></li>
--   <li><a>rciCustomer</a></li>
--   </ul>
resourcesCalendarsInsert :: CalendarResource -> Text -> ResourcesCalendarsInsert

-- | Inserts a calendar resource.
--   
--   <i>See:</i> <a>resourcesCalendarsInsert</a> smart constructor.
data ResourcesCalendarsInsert

-- | Multipart request metadata.
rciPayload :: Lens' ResourcesCalendarsInsert CalendarResource

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rciCustomer :: Lens' ResourcesCalendarsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.Insert.ResourcesCalendarsInsert
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.Insert.ResourcesCalendarsInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.Insert.ResourcesCalendarsInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.Insert.ResourcesCalendarsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.Insert.ResourcesCalendarsInsert


-- | Retrieves a list of calendar resources for an account.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.list</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.List

-- | A resource alias for <tt>directory.resources.calendars.list</tt>
--   method which the <a>ResourcesCalendarsList</a> request conforms to.
type ResourcesCalendarsListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] CalendarResources)))))))))

-- | Creates a value of <a>ResourcesCalendarsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rclCustomer</a></li>
--   <li><a>rclPageToken</a></li>
--   <li><a>rclMaxResults</a></li>
--   </ul>
resourcesCalendarsList :: Text -> ResourcesCalendarsList

-- | Retrieves a list of calendar resources for an account.
--   
--   <i>See:</i> <a>resourcesCalendarsList</a> smart constructor.
data ResourcesCalendarsList

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rclCustomer :: Lens' ResourcesCalendarsList Text

-- | Token to specify the next page in the list.
rclPageToken :: Lens' ResourcesCalendarsList (Maybe Text)

-- | Maximum number of results to return.
rclMaxResults :: Lens' ResourcesCalendarsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.List.ResourcesCalendarsList
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.List.ResourcesCalendarsList
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.List.ResourcesCalendarsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.List.ResourcesCalendarsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.List.ResourcesCalendarsList


-- | Updates a calendar resource. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.patch</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.Patch

-- | A resource alias for <tt>directory.resources.calendars.patch</tt>
--   method which the <a>ResourcesCalendarsPatch</a> request conforms to.
type ResourcesCalendarsPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (Capture "calendarResourceId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarResource :> Patch '[JSON] CalendarResource)))))))))

-- | Creates a value of <a>ResourcesCalendarsPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcpPayload</a></li>
--   <li><a>rcpCustomer</a></li>
--   <li><a>rcpCalendarResourceId</a></li>
--   </ul>
resourcesCalendarsPatch :: CalendarResource -> Text -> Text -> ResourcesCalendarsPatch

-- | Updates a calendar resource. This method supports patch semantics.
--   
--   <i>See:</i> <a>resourcesCalendarsPatch</a> smart constructor.
data ResourcesCalendarsPatch

-- | Multipart request metadata.
rcpPayload :: Lens' ResourcesCalendarsPatch CalendarResource

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rcpCustomer :: Lens' ResourcesCalendarsPatch Text

-- | The unique ID of the calendar resource to update.
rcpCalendarResourceId :: Lens' ResourcesCalendarsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.Patch.ResourcesCalendarsPatch
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.Patch.ResourcesCalendarsPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.Patch.ResourcesCalendarsPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.Patch.ResourcesCalendarsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.Patch.ResourcesCalendarsPatch


-- | Updates a calendar resource.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.resources.calendars.update</tt>.
module Network.Google.Resource.Directory.Resources.Calendars.Update

-- | A resource alias for <tt>directory.resources.calendars.update</tt>
--   method which the <a>ResourcesCalendarsUpdate</a> request conforms to.
type ResourcesCalendarsUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("resources" :> ("calendars" :> (Capture "calendarResourceId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CalendarResource :> Put '[JSON] CalendarResource)))))))))

-- | Creates a value of <a>ResourcesCalendarsUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcuPayload</a></li>
--   <li><a>rcuCustomer</a></li>
--   <li><a>rcuCalendarResourceId</a></li>
--   </ul>
resourcesCalendarsUpdate :: CalendarResource -> Text -> Text -> ResourcesCalendarsUpdate

-- | Updates a calendar resource.
--   
--   <i>See:</i> <a>resourcesCalendarsUpdate</a> smart constructor.
data ResourcesCalendarsUpdate

-- | Multipart request metadata.
rcuPayload :: Lens' ResourcesCalendarsUpdate CalendarResource

-- | The unique ID for the customer's Google account. As an account
--   administrator, you can also use the my_customer alias to represent
--   your account's customer ID.
rcuCustomer :: Lens' ResourcesCalendarsUpdate Text

-- | The unique ID of the calendar resource to update.
rcuCalendarResourceId :: Lens' ResourcesCalendarsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Resources.Calendars.Update.ResourcesCalendarsUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Resources.Calendars.Update.ResourcesCalendarsUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Resources.Calendars.Update.ResourcesCalendarsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Resources.Calendars.Update.ResourcesCalendarsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Resources.Calendars.Update.ResourcesCalendarsUpdate


-- | Deletes a role assignment.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roleAssignments.delete</tt>.
module Network.Google.Resource.Directory.RoleAssignments.Delete

-- | A resource alias for <tt>directory.roleAssignments.delete</tt> method
--   which the <a>RoleAssignmentsDelete</a> request conforms to.
type RoleAssignmentsDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roleassignments" :> (Capture "roleAssignmentId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>RoleAssignmentsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>radCustomer</a></li>
--   <li><a>radRoleAssignmentId</a></li>
--   </ul>
roleAssignmentsDelete :: Text -> Text -> RoleAssignmentsDelete

-- | Deletes a role assignment.
--   
--   <i>See:</i> <a>roleAssignmentsDelete</a> smart constructor.
data RoleAssignmentsDelete

-- | Immutable ID of the Google Apps account.
radCustomer :: Lens' RoleAssignmentsDelete Text

-- | Immutable ID of the role assignment.
radRoleAssignmentId :: Lens' RoleAssignmentsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.RoleAssignments.Delete.RoleAssignmentsDelete
instance Data.Data.Data Network.Google.Resource.Directory.RoleAssignments.Delete.RoleAssignmentsDelete
instance GHC.Show.Show Network.Google.Resource.Directory.RoleAssignments.Delete.RoleAssignmentsDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.RoleAssignments.Delete.RoleAssignmentsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.RoleAssignments.Delete.RoleAssignmentsDelete


-- | Retrieve a role assignment.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roleAssignments.get</tt>.
module Network.Google.Resource.Directory.RoleAssignments.Get

-- | A resource alias for <tt>directory.roleAssignments.get</tt> method
--   which the <a>RoleAssignmentsGet</a> request conforms to.
type RoleAssignmentsGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roleassignments" :> (Capture "roleAssignmentId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] RoleAssignment)))))))

-- | Creates a value of <a>RoleAssignmentsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ragCustomer</a></li>
--   <li><a>ragRoleAssignmentId</a></li>
--   </ul>
roleAssignmentsGet :: Text -> Text -> RoleAssignmentsGet

-- | Retrieve a role assignment.
--   
--   <i>See:</i> <a>roleAssignmentsGet</a> smart constructor.
data RoleAssignmentsGet

-- | Immutable ID of the Google Apps account.
ragCustomer :: Lens' RoleAssignmentsGet Text

-- | Immutable ID of the role assignment.
ragRoleAssignmentId :: Lens' RoleAssignmentsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.RoleAssignments.Get.RoleAssignmentsGet
instance Data.Data.Data Network.Google.Resource.Directory.RoleAssignments.Get.RoleAssignmentsGet
instance GHC.Show.Show Network.Google.Resource.Directory.RoleAssignments.Get.RoleAssignmentsGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.RoleAssignments.Get.RoleAssignmentsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.RoleAssignments.Get.RoleAssignmentsGet


-- | Creates a role assignment.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roleAssignments.insert</tt>.
module Network.Google.Resource.Directory.RoleAssignments.Insert

-- | A resource alias for <tt>directory.roleAssignments.insert</tt> method
--   which the <a>RoleAssignmentsInsert</a> request conforms to.
type RoleAssignmentsInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roleassignments" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RoleAssignment :> Post '[JSON] RoleAssignment)))))))

-- | Creates a value of <a>RoleAssignmentsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raiPayload</a></li>
--   <li><a>raiCustomer</a></li>
--   </ul>
roleAssignmentsInsert :: RoleAssignment -> Text -> RoleAssignmentsInsert

-- | Creates a role assignment.
--   
--   <i>See:</i> <a>roleAssignmentsInsert</a> smart constructor.
data RoleAssignmentsInsert

-- | Multipart request metadata.
raiPayload :: Lens' RoleAssignmentsInsert RoleAssignment

-- | Immutable ID of the Google Apps account.
raiCustomer :: Lens' RoleAssignmentsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.RoleAssignments.Insert.RoleAssignmentsInsert
instance Data.Data.Data Network.Google.Resource.Directory.RoleAssignments.Insert.RoleAssignmentsInsert
instance GHC.Show.Show Network.Google.Resource.Directory.RoleAssignments.Insert.RoleAssignmentsInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.RoleAssignments.Insert.RoleAssignmentsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.RoleAssignments.Insert.RoleAssignmentsInsert


-- | Retrieves a paginated list of all roleAssignments.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roleAssignments.list</tt>.
module Network.Google.Resource.Directory.RoleAssignments.List

-- | A resource alias for <tt>directory.roleAssignments.list</tt> method
--   which the <a>RoleAssignmentsList</a> request conforms to.
type RoleAssignmentsListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roleassignments" :> (QueryParam "roleId" Text :> (QueryParam "pageToken" Text :> (QueryParam "userKey" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RoleAssignments))))))))))

-- | Creates a value of <a>RoleAssignmentsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ralRoleId</a></li>
--   <li><a>ralCustomer</a></li>
--   <li><a>ralPageToken</a></li>
--   <li><a>ralUserKey</a></li>
--   <li><a>ralMaxResults</a></li>
--   </ul>
roleAssignmentsList :: Text -> RoleAssignmentsList

-- | Retrieves a paginated list of all roleAssignments.
--   
--   <i>See:</i> <a>roleAssignmentsList</a> smart constructor.
data RoleAssignmentsList

-- | Immutable ID of a role. If included in the request, returns only role
--   assignments containing this role ID.
ralRoleId :: Lens' RoleAssignmentsList (Maybe Text)

-- | Immutable ID of the Google Apps account.
ralCustomer :: Lens' RoleAssignmentsList Text

-- | Token to specify the next page in the list.
ralPageToken :: Lens' RoleAssignmentsList (Maybe Text)

-- | The user's primary email address, alias email address, or unique user
--   ID. If included in the request, returns role assignments only for this
--   user.
ralUserKey :: Lens' RoleAssignmentsList (Maybe Text)

-- | Maximum number of results to return.
ralMaxResults :: Lens' RoleAssignmentsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.RoleAssignments.List.RoleAssignmentsList
instance Data.Data.Data Network.Google.Resource.Directory.RoleAssignments.List.RoleAssignmentsList
instance GHC.Show.Show Network.Google.Resource.Directory.RoleAssignments.List.RoleAssignmentsList
instance GHC.Classes.Eq Network.Google.Resource.Directory.RoleAssignments.List.RoleAssignmentsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.RoleAssignments.List.RoleAssignmentsList


-- | Deletes a role.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.delete</tt>.
module Network.Google.Resource.Directory.Roles.Delete

-- | A resource alias for <tt>directory.roles.delete</tt> method which the
--   <a>RolesDelete</a> request conforms to.
type RolesDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (Capture "roleId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>RolesDelete</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdRoleId</a></li>
--   <li><a>rdCustomer</a></li>
--   </ul>
rolesDelete :: Text -> Text -> RolesDelete

-- | Deletes a role.
--   
--   <i>See:</i> <a>rolesDelete</a> smart constructor.
data RolesDelete

-- | Immutable ID of the role.
rdRoleId :: Lens' RolesDelete Text

-- | Immutable ID of the Google Apps account.
rdCustomer :: Lens' RolesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.Delete.RolesDelete
instance Data.Data.Data Network.Google.Resource.Directory.Roles.Delete.RolesDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.Delete.RolesDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.Delete.RolesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.Delete.RolesDelete


-- | Retrieves a role.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.get</tt>.
module Network.Google.Resource.Directory.Roles.Get

-- | A resource alias for <tt>directory.roles.get</tt> method which the
--   <a>RolesGet</a> request conforms to.
type RolesGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (Capture "roleId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Role)))))))

-- | Creates a value of <a>RolesGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgRoleId</a></li>
--   <li><a>rgCustomer</a></li>
--   </ul>
rolesGet :: Text -> Text -> RolesGet

-- | Retrieves a role.
--   
--   <i>See:</i> <a>rolesGet</a> smart constructor.
data RolesGet

-- | Immutable ID of the role.
rgRoleId :: Lens' RolesGet Text

-- | Immutable ID of the Google Apps account.
rgCustomer :: Lens' RolesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.Get.RolesGet
instance Data.Data.Data Network.Google.Resource.Directory.Roles.Get.RolesGet
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.Get.RolesGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.Get.RolesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.Get.RolesGet


-- | Creates a role.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.insert</tt>.
module Network.Google.Resource.Directory.Roles.Insert

-- | A resource alias for <tt>directory.roles.insert</tt> method which the
--   <a>RolesInsert</a> request conforms to.
type RolesInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Role :> Post '[JSON] Role)))))))

-- | Creates a value of <a>RolesInsert</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riPayload</a></li>
--   <li><a>riCustomer</a></li>
--   </ul>
rolesInsert :: Role -> Text -> RolesInsert

-- | Creates a role.
--   
--   <i>See:</i> <a>rolesInsert</a> smart constructor.
data RolesInsert

-- | Multipart request metadata.
riPayload :: Lens' RolesInsert Role

-- | Immutable ID of the Google Apps account.
riCustomer :: Lens' RolesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.Insert.RolesInsert
instance Data.Data.Data Network.Google.Resource.Directory.Roles.Insert.RolesInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.Insert.RolesInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.Insert.RolesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.Insert.RolesInsert


-- | Retrieves a paginated list of all the roles in a domain.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.list</tt>.
module Network.Google.Resource.Directory.Roles.List

-- | A resource alias for <tt>directory.roles.list</tt> method which the
--   <a>RolesList</a> request conforms to.
type RolesListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Roles))))))))

-- | Creates a value of <a>RolesList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlCustomer</a></li>
--   <li><a>rlPageToken</a></li>
--   <li><a>rlMaxResults</a></li>
--   </ul>
rolesList :: Text -> RolesList

-- | Retrieves a paginated list of all the roles in a domain.
--   
--   <i>See:</i> <a>rolesList</a> smart constructor.
data RolesList

-- | Immutable id of the Google Apps account.
rlCustomer :: Lens' RolesList Text

-- | Token to specify the next page in the list.
rlPageToken :: Lens' RolesList (Maybe Text)

-- | Maximum number of results to return.
rlMaxResults :: Lens' RolesList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.List.RolesList
instance Data.Data.Data Network.Google.Resource.Directory.Roles.List.RolesList
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.List.RolesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.List.RolesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.List.RolesList


-- | Updates a role. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.patch</tt>.
module Network.Google.Resource.Directory.Roles.Patch

-- | A resource alias for <tt>directory.roles.patch</tt> method which the
--   <a>RolesPatch</a> request conforms to.
type RolesPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (Capture "roleId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Role :> Patch '[JSON] Role))))))))

-- | Creates a value of <a>RolesPatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpPayload</a></li>
--   <li><a>rpRoleId</a></li>
--   <li><a>rpCustomer</a></li>
--   </ul>
rolesPatch :: Role -> Text -> Text -> RolesPatch

-- | Updates a role. This method supports patch semantics.
--   
--   <i>See:</i> <a>rolesPatch</a> smart constructor.
data RolesPatch

-- | Multipart request metadata.
rpPayload :: Lens' RolesPatch Role

-- | Immutable ID of the role.
rpRoleId :: Lens' RolesPatch Text

-- | Immutable ID of the Google Apps account.
rpCustomer :: Lens' RolesPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.Patch.RolesPatch
instance Data.Data.Data Network.Google.Resource.Directory.Roles.Patch.RolesPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.Patch.RolesPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.Patch.RolesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.Patch.RolesPatch


-- | Updates a role.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.roles.update</tt>.
module Network.Google.Resource.Directory.Roles.Update

-- | A resource alias for <tt>directory.roles.update</tt> method which the
--   <a>RolesUpdate</a> request conforms to.
type RolesUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customer" Text :> ("roles" :> (Capture "roleId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Role :> Put '[JSON] Role))))))))

-- | Creates a value of <a>RolesUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ruPayload</a></li>
--   <li><a>ruRoleId</a></li>
--   <li><a>ruCustomer</a></li>
--   </ul>
rolesUpdate :: Role -> Text -> Text -> RolesUpdate

-- | Updates a role.
--   
--   <i>See:</i> <a>rolesUpdate</a> smart constructor.
data RolesUpdate

-- | Multipart request metadata.
ruPayload :: Lens' RolesUpdate Role

-- | Immutable ID of the role.
ruRoleId :: Lens' RolesUpdate Text

-- | Immutable ID of the Google Apps account.
ruCustomer :: Lens' RolesUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Roles.Update.RolesUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Roles.Update.RolesUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Roles.Update.RolesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Roles.Update.RolesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Roles.Update.RolesUpdate


-- | Delete schema
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.delete</tt>.
module Network.Google.Resource.Directory.Schemas.Delete

-- | A resource alias for <tt>directory.schemas.delete</tt> method which
--   the <a>SchemasDelete</a> request conforms to.
type SchemasDeleteResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (Capture "schemaKey" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>SchemasDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdCustomerId</a></li>
--   <li><a>sdSchemaKey</a></li>
--   </ul>
schemasDelete :: Text -> Text -> SchemasDelete

-- | Delete schema
--   
--   <i>See:</i> <a>schemasDelete</a> smart constructor.
data SchemasDelete

-- | Immutable id of the Google Apps account
sdCustomerId :: Lens' SchemasDelete Text

-- | Name or immutable Id of the schema
sdSchemaKey :: Lens' SchemasDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.Delete.SchemasDelete
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.Delete.SchemasDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.Delete.SchemasDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.Delete.SchemasDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.Delete.SchemasDelete


-- | Retrieve schema
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.get</tt>.
module Network.Google.Resource.Directory.Schemas.Get

-- | A resource alias for <tt>directory.schemas.get</tt> method which the
--   <a>SchemasGet</a> request conforms to.
type SchemasGetResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (Capture "schemaKey" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Schema)))))))

-- | Creates a value of <a>SchemasGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgCustomerId</a></li>
--   <li><a>sgSchemaKey</a></li>
--   </ul>
schemasGet :: Text -> Text -> SchemasGet

-- | Retrieve schema
--   
--   <i>See:</i> <a>schemasGet</a> smart constructor.
data SchemasGet

-- | Immutable id of the Google Apps account
sgCustomerId :: Lens' SchemasGet Text

-- | Name or immutable Id of the schema
sgSchemaKey :: Lens' SchemasGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.Get.SchemasGet
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.Get.SchemasGet
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.Get.SchemasGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.Get.SchemasGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.Get.SchemasGet


-- | Create schema.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.insert</tt>.
module Network.Google.Resource.Directory.Schemas.Insert

-- | A resource alias for <tt>directory.schemas.insert</tt> method which
--   the <a>SchemasInsert</a> request conforms to.
type SchemasInsertResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Schema :> Post '[JSON] Schema)))))))

-- | Creates a value of <a>SchemasInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siPayload</a></li>
--   <li><a>siCustomerId</a></li>
--   </ul>
schemasInsert :: Schema -> Text -> SchemasInsert

-- | Create schema.
--   
--   <i>See:</i> <a>schemasInsert</a> smart constructor.
data SchemasInsert

-- | Multipart request metadata.
siPayload :: Lens' SchemasInsert Schema

-- | Immutable id of the Google Apps account
siCustomerId :: Lens' SchemasInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.Insert.SchemasInsert
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.Insert.SchemasInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.Insert.SchemasInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.Insert.SchemasInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.Insert.SchemasInsert


-- | Retrieve all schemas for a customer
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.list</tt>.
module Network.Google.Resource.Directory.Schemas.List

-- | A resource alias for <tt>directory.schemas.list</tt> method which the
--   <a>SchemasList</a> request conforms to.
type SchemasListResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (QueryParam "alt" AltJSON :> Get '[JSON] Schemas))))))

-- | Creates a value of <a>SchemasList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slCustomerId</a></li>
--   </ul>
schemasList :: Text -> SchemasList

-- | Retrieve all schemas for a customer
--   
--   <i>See:</i> <a>schemasList</a> smart constructor.
data SchemasList

-- | Immutable id of the Google Apps account
slCustomerId :: Lens' SchemasList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.List.SchemasList
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.List.SchemasList
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.List.SchemasList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.List.SchemasList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.List.SchemasList


-- | Update schema. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.patch</tt>.
module Network.Google.Resource.Directory.Schemas.Patch

-- | A resource alias for <tt>directory.schemas.patch</tt> method which the
--   <a>SchemasPatch</a> request conforms to.
type SchemasPatchResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (Capture "schemaKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Schema :> Patch '[JSON] Schema))))))))

-- | Creates a value of <a>SchemasPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spPayload</a></li>
--   <li><a>spCustomerId</a></li>
--   <li><a>spSchemaKey</a></li>
--   </ul>
schemasPatch :: Schema -> Text -> Text -> SchemasPatch

-- | Update schema. This method supports patch semantics.
--   
--   <i>See:</i> <a>schemasPatch</a> smart constructor.
data SchemasPatch

-- | Multipart request metadata.
spPayload :: Lens' SchemasPatch Schema

-- | Immutable id of the Google Apps account
spCustomerId :: Lens' SchemasPatch Text

-- | Name or immutable Id of the schema.
spSchemaKey :: Lens' SchemasPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.Patch.SchemasPatch
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.Patch.SchemasPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.Patch.SchemasPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.Patch.SchemasPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.Patch.SchemasPatch


-- | Update schema
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.schemas.update</tt>.
module Network.Google.Resource.Directory.Schemas.Update

-- | A resource alias for <tt>directory.schemas.update</tt> method which
--   the <a>SchemasUpdate</a> request conforms to.
type SchemasUpdateResource = "admin" :> ("directory" :> ("v1" :> ("customer" :> (Capture "customerId" Text :> ("schemas" :> (Capture "schemaKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Schema :> Put '[JSON] Schema))))))))

-- | Creates a value of <a>SchemasUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>suPayload</a></li>
--   <li><a>suCustomerId</a></li>
--   <li><a>suSchemaKey</a></li>
--   </ul>
schemasUpdate :: Schema -> Text -> Text -> SchemasUpdate

-- | Update schema
--   
--   <i>See:</i> <a>schemasUpdate</a> smart constructor.
data SchemasUpdate

-- | Multipart request metadata.
suPayload :: Lens' SchemasUpdate Schema

-- | Immutable id of the Google Apps account
suCustomerId :: Lens' SchemasUpdate Text

-- | Name or immutable Id of the schema.
suSchemaKey :: Lens' SchemasUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Schemas.Update.SchemasUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Schemas.Update.SchemasUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Schemas.Update.SchemasUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Schemas.Update.SchemasUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Schemas.Update.SchemasUpdate


-- | Delete all access tokens issued by a user for an application.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.tokens.delete</tt>.
module Network.Google.Resource.Directory.Tokens.Delete

-- | A resource alias for <tt>directory.tokens.delete</tt> method which the
--   <a>TokensDelete</a> request conforms to.
type TokensDeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("tokens" :> (Capture "clientId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>TokensDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdClientId</a></li>
--   <li><a>tdUserKey</a></li>
--   </ul>
tokensDelete :: Text -> Text -> TokensDelete

-- | Delete all access tokens issued by a user for an application.
--   
--   <i>See:</i> <a>tokensDelete</a> smart constructor.
data TokensDelete

-- | The Client ID of the application the token is issued to.
tdClientId :: Lens' TokensDelete Text

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
tdUserKey :: Lens' TokensDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Tokens.Delete.TokensDelete
instance Data.Data.Data Network.Google.Resource.Directory.Tokens.Delete.TokensDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Tokens.Delete.TokensDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Tokens.Delete.TokensDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Tokens.Delete.TokensDelete


-- | Get information about an access token issued by a user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.tokens.get</tt>.
module Network.Google.Resource.Directory.Tokens.Get

-- | A resource alias for <tt>directory.tokens.get</tt> method which the
--   <a>TokensGet</a> request conforms to.
type TokensGetResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("tokens" :> (Capture "clientId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Token)))))))

-- | Creates a value of <a>TokensGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tgClientId</a></li>
--   <li><a>tgUserKey</a></li>
--   </ul>
tokensGet :: Text -> Text -> TokensGet

-- | Get information about an access token issued by a user.
--   
--   <i>See:</i> <a>tokensGet</a> smart constructor.
data TokensGet

-- | The Client ID of the application the token is issued to.
tgClientId :: Lens' TokensGet Text

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
tgUserKey :: Lens' TokensGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Tokens.Get.TokensGet
instance Data.Data.Data Network.Google.Resource.Directory.Tokens.Get.TokensGet
instance GHC.Show.Show Network.Google.Resource.Directory.Tokens.Get.TokensGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Tokens.Get.TokensGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Tokens.Get.TokensGet


-- | Returns the set of tokens specified user has issued to 3rd party
--   applications.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.tokens.list</tt>.
module Network.Google.Resource.Directory.Tokens.List

-- | A resource alias for <tt>directory.tokens.list</tt> method which the
--   <a>TokensList</a> request conforms to.
type TokensListResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("tokens" :> (QueryParam "alt" AltJSON :> Get '[JSON] Tokens))))))

-- | Creates a value of <a>TokensList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tlUserKey</a></li>
--   </ul>
tokensList :: Text -> TokensList

-- | Returns the set of tokens specified user has issued to 3rd party
--   applications.
--   
--   <i>See:</i> <a>tokensList</a> smart constructor.
data TokensList

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
tlUserKey :: Lens' TokensList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Tokens.List.TokensList
instance Data.Data.Data Network.Google.Resource.Directory.Tokens.List.TokensList
instance GHC.Show.Show Network.Google.Resource.Directory.Tokens.List.TokensList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Tokens.List.TokensList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Tokens.List.TokensList


-- | Remove a alias for the user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.aliases.delete</tt>.
module Network.Google.Resource.Directory.Users.Aliases.Delete

-- | A resource alias for <tt>directory.users.aliases.delete</tt> method
--   which the <a>UsersAliasesDelete</a> request conforms to.
type UsersAliasesDeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("aliases" :> (Capture "alias" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersAliasesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uadAlias</a></li>
--   <li><a>uadUserKey</a></li>
--   </ul>
usersAliasesDelete :: Text -> Text -> UsersAliasesDelete

-- | Remove a alias for the user
--   
--   <i>See:</i> <a>usersAliasesDelete</a> smart constructor.
data UsersAliasesDelete

-- | The alias to be removed
uadAlias :: Lens' UsersAliasesDelete Text

-- | Email or immutable Id of the user
uadUserKey :: Lens' UsersAliasesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Aliases.Delete.UsersAliasesDelete
instance Data.Data.Data Network.Google.Resource.Directory.Users.Aliases.Delete.UsersAliasesDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Aliases.Delete.UsersAliasesDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Aliases.Delete.UsersAliasesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Aliases.Delete.UsersAliasesDelete


-- | Add a alias for the user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.aliases.insert</tt>.
module Network.Google.Resource.Directory.Users.Aliases.Insert

-- | A resource alias for <tt>directory.users.aliases.insert</tt> method
--   which the <a>UsersAliasesInsert</a> request conforms to.
type UsersAliasesInsertResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("aliases" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Alias :> Post '[JSON] Alias)))))))

-- | Creates a value of <a>UsersAliasesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaiPayload</a></li>
--   <li><a>uaiUserKey</a></li>
--   </ul>
usersAliasesInsert :: Alias -> Text -> UsersAliasesInsert

-- | Add a alias for the user
--   
--   <i>See:</i> <a>usersAliasesInsert</a> smart constructor.
data UsersAliasesInsert

-- | Multipart request metadata.
uaiPayload :: Lens' UsersAliasesInsert Alias

-- | Email or immutable Id of the user
uaiUserKey :: Lens' UsersAliasesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Aliases.Insert.UsersAliasesInsert
instance Data.Data.Data Network.Google.Resource.Directory.Users.Aliases.Insert.UsersAliasesInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Aliases.Insert.UsersAliasesInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Aliases.Insert.UsersAliasesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Aliases.Insert.UsersAliasesInsert


-- | List all aliases for a user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.aliases.list</tt>.
module Network.Google.Resource.Directory.Users.Aliases.List

-- | A resource alias for <tt>directory.users.aliases.list</tt> method
--   which the <a>UsersAliasesList</a> request conforms to.
type UsersAliasesListResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("aliases" :> (QueryParam "event" UsersAliasesListEvent :> (QueryParam "alt" AltJSON :> Get '[JSON] Aliases)))))))

-- | Creates a value of <a>UsersAliasesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ualEvent</a></li>
--   <li><a>ualUserKey</a></li>
--   </ul>
usersAliasesList :: Text -> UsersAliasesList

-- | List all aliases for a user
--   
--   <i>See:</i> <a>usersAliasesList</a> smart constructor.
data UsersAliasesList

-- | Event on which subscription is intended (if subscribing)
ualEvent :: Lens' UsersAliasesList (Maybe UsersAliasesListEvent)

-- | Email or immutable Id of the user
ualUserKey :: Lens' UsersAliasesList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Aliases.List.UsersAliasesList
instance Data.Data.Data Network.Google.Resource.Directory.Users.Aliases.List.UsersAliasesList
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Aliases.List.UsersAliasesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Aliases.List.UsersAliasesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Aliases.List.UsersAliasesList


-- | Watch for changes in user aliases list
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.aliases.watch</tt>.
module Network.Google.Resource.Directory.Users.Aliases.Watch

-- | A resource alias for <tt>directory.users.aliases.watch</tt> method
--   which the <a>UsersAliasesWatch</a> request conforms to.
type UsersAliasesWatchResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("aliases" :> ("watch" :> (QueryParam "event" UsersAliasesWatchEvent :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel)))))))))

-- | Creates a value of <a>UsersAliasesWatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uawEvent</a></li>
--   <li><a>uawPayload</a></li>
--   <li><a>uawUserKey</a></li>
--   </ul>
usersAliasesWatch :: Channel -> Text -> UsersAliasesWatch

-- | Watch for changes in user aliases list
--   
--   <i>See:</i> <a>usersAliasesWatch</a> smart constructor.
data UsersAliasesWatch

-- | Event on which subscription is intended (if subscribing)
uawEvent :: Lens' UsersAliasesWatch (Maybe UsersAliasesWatchEvent)

-- | Multipart request metadata.
uawPayload :: Lens' UsersAliasesWatch Channel

-- | Email or immutable Id of the user
uawUserKey :: Lens' UsersAliasesWatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Aliases.Watch.UsersAliasesWatch
instance Data.Data.Data Network.Google.Resource.Directory.Users.Aliases.Watch.UsersAliasesWatch
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Aliases.Watch.UsersAliasesWatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Aliases.Watch.UsersAliasesWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Aliases.Watch.UsersAliasesWatch


-- | Delete user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.delete</tt>.
module Network.Google.Resource.Directory.Users.Delete

-- | A resource alias for <tt>directory.users.delete</tt> method which the
--   <a>UsersDelete</a> request conforms to.
type UsersDeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))

-- | Creates a value of <a>UsersDelete</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udUserKey</a></li>
--   </ul>
usersDelete :: Text -> UsersDelete

-- | Delete user
--   
--   <i>See:</i> <a>usersDelete</a> smart constructor.
data UsersDelete

-- | Email or immutable Id of the user
udUserKey :: Lens' UsersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Delete.UsersDelete
instance Data.Data.Data Network.Google.Resource.Directory.Users.Delete.UsersDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Delete.UsersDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Delete.UsersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Delete.UsersDelete


-- | retrieve user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.get</tt>.
module Network.Google.Resource.Directory.Users.Get

-- | A resource alias for <tt>directory.users.get</tt> method which the
--   <a>UsersGet</a> request conforms to.
type UsersGetResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> (QueryParam "viewType" UsersGetViewType :> (QueryParam "customFieldMask" Text :> (QueryParam "projection" UsersGetProjection :> (QueryParam "alt" AltJSON :> Get '[JSON] User))))))))

-- | Creates a value of <a>UsersGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ugViewType</a></li>
--   <li><a>ugCustomFieldMask</a></li>
--   <li><a>ugProjection</a></li>
--   <li><a>ugUserKey</a></li>
--   </ul>
usersGet :: Text -> UsersGet

-- | retrieve user
--   
--   <i>See:</i> <a>usersGet</a> smart constructor.
data UsersGet

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
ugViewType :: Lens' UsersGet UsersGetViewType

-- | Comma-separated list of schema names. All fields from these schemas
--   are fetched. This should only be set when projection=custom.
ugCustomFieldMask :: Lens' UsersGet (Maybe Text)

-- | What subset of fields to fetch for this user.
ugProjection :: Lens' UsersGet UsersGetProjection

-- | Email or immutable Id of the user
ugUserKey :: Lens' UsersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Get.UsersGet
instance Data.Data.Data Network.Google.Resource.Directory.Users.Get.UsersGet
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Get.UsersGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Get.UsersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Get.UsersGet


-- | create user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.insert</tt>.
module Network.Google.Resource.Directory.Users.Insert

-- | A resource alias for <tt>directory.users.insert</tt> method which the
--   <a>UsersInsert</a> request conforms to.
type UsersInsertResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] User :> Post '[JSON] User)))))

-- | Creates a value of <a>UsersInsert</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uiPayload</a></li>
--   </ul>
usersInsert :: User -> UsersInsert

-- | create user.
--   
--   <i>See:</i> <a>usersInsert</a> smart constructor.
data UsersInsert

-- | Multipart request metadata.
uiPayload :: Lens' UsersInsert User
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Insert.UsersInsert
instance Data.Data.Data Network.Google.Resource.Directory.Users.Insert.UsersInsert
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Insert.UsersInsert
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Insert.UsersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Insert.UsersInsert


-- | Retrieve either deleted users or all users in a domain (paginated)
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.list</tt>.
module Network.Google.Resource.Directory.Users.List

-- | A resource alias for <tt>directory.users.list</tt> method which the
--   <a>UsersList</a> request conforms to.
type UsersListResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (QueryParam "event" UsersListEvent :> (QueryParam "orderBy" UsersListOrderBy :> (QueryParam "viewType" UsersListViewType :> (QueryParam "customFieldMask" Text :> (QueryParam "domain" Text :> (QueryParam "showDeleted" Text :> (QueryParam "sortOrder" UsersListSortOrder :> (QueryParam "customer" Text :> (QueryParam "query" Text :> (QueryParam "projection" UsersListProjection :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Users))))))))))))))))

-- | Creates a value of <a>UsersList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ulEvent</a></li>
--   <li><a>ulOrderBy</a></li>
--   <li><a>ulViewType</a></li>
--   <li><a>ulCustomFieldMask</a></li>
--   <li><a>ulDomain</a></li>
--   <li><a>ulShowDeleted</a></li>
--   <li><a>ulSortOrder</a></li>
--   <li><a>ulCustomer</a></li>
--   <li><a>ulQuery</a></li>
--   <li><a>ulProjection</a></li>
--   <li><a>ulPageToken</a></li>
--   <li><a>ulMaxResults</a></li>
--   </ul>
usersList :: UsersList

-- | Retrieve either deleted users or all users in a domain (paginated)
--   
--   <i>See:</i> <a>usersList</a> smart constructor.
data UsersList

-- | Event on which subscription is intended (if subscribing)
ulEvent :: Lens' UsersList (Maybe UsersListEvent)

-- | Column to use for sorting results
ulOrderBy :: Lens' UsersList (Maybe UsersListOrderBy)

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
ulViewType :: Lens' UsersList UsersListViewType

-- | Comma-separated list of schema names. All fields from these schemas
--   are fetched. This should only be set when projection=custom.
ulCustomFieldMask :: Lens' UsersList (Maybe Text)

-- | Name of the domain. Fill this field to get users from only this
--   domain. To return all users in a multi-domain fill customer field
--   instead.
ulDomain :: Lens' UsersList (Maybe Text)

-- | If set to true retrieves the list of deleted users. Default is false
ulShowDeleted :: Lens' UsersList (Maybe Text)

-- | Whether to return results in ascending or descending order.
ulSortOrder :: Lens' UsersList (Maybe UsersListSortOrder)

-- | Immutable id of the Google Apps account. In case of multi-domain, to
--   fetch all users for a customer, fill this field instead of domain.
ulCustomer :: Lens' UsersList (Maybe Text)

-- | Query string search. Should be of the form "". Complete documentation
--   is at
--   https://developers.google.com/admin-sdk/directory/v1/guides/search-users
ulQuery :: Lens' UsersList (Maybe Text)

-- | What subset of fields to fetch for this user.
ulProjection :: Lens' UsersList UsersListProjection

-- | Token to specify next page in the list
ulPageToken :: Lens' UsersList (Maybe Text)

-- | Maximum number of results to return. Default is 100. Max allowed is
--   500
ulMaxResults :: Lens' UsersList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.List.UsersList
instance Data.Data.Data Network.Google.Resource.Directory.Users.List.UsersList
instance GHC.Show.Show Network.Google.Resource.Directory.Users.List.UsersList
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.List.UsersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.List.UsersList


-- | change admin status of a user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.makeAdmin</tt>.
module Network.Google.Resource.Directory.Users.MakeAdmin

-- | A resource alias for <tt>directory.users.makeAdmin</tt> method which
--   the <a>UsersMakeAdmin</a> request conforms to.
type UsersMakeAdminResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("makeAdmin" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UserMakeAdmin :> Post '[JSON] ())))))))

-- | Creates a value of <a>UsersMakeAdmin</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umaPayload</a></li>
--   <li><a>umaUserKey</a></li>
--   </ul>
usersMakeAdmin :: UserMakeAdmin -> Text -> UsersMakeAdmin

-- | change admin status of a user
--   
--   <i>See:</i> <a>usersMakeAdmin</a> smart constructor.
data UsersMakeAdmin

-- | Multipart request metadata.
umaPayload :: Lens' UsersMakeAdmin UserMakeAdmin

-- | Email or immutable Id of the user as admin
umaUserKey :: Lens' UsersMakeAdmin Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.MakeAdmin.UsersMakeAdmin
instance Data.Data.Data Network.Google.Resource.Directory.Users.MakeAdmin.UsersMakeAdmin
instance GHC.Show.Show Network.Google.Resource.Directory.Users.MakeAdmin.UsersMakeAdmin
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.MakeAdmin.UsersMakeAdmin
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.MakeAdmin.UsersMakeAdmin


-- | update user. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.patch</tt>.
module Network.Google.Resource.Directory.Users.Patch

-- | A resource alias for <tt>directory.users.patch</tt> method which the
--   <a>UsersPatch</a> request conforms to.
type UsersPatchResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] User :> Patch '[JSON] User))))))

-- | Creates a value of <a>UsersPatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upPayload</a></li>
--   <li><a>upUserKey</a></li>
--   </ul>
usersPatch :: User -> Text -> UsersPatch

-- | update user. This method supports patch semantics.
--   
--   <i>See:</i> <a>usersPatch</a> smart constructor.
data UsersPatch

-- | Multipart request metadata.
upPayload :: Lens' UsersPatch User

-- | Email or immutable Id of the user. If Id, it should match with id of
--   user object
upUserKey :: Lens' UsersPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Patch.UsersPatch
instance Data.Data.Data Network.Google.Resource.Directory.Users.Patch.UsersPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Patch.UsersPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Patch.UsersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Patch.UsersPatch


-- | Remove photos for the user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.photos.delete</tt>.
module Network.Google.Resource.Directory.Users.Photos.Delete

-- | A resource alias for <tt>directory.users.photos.delete</tt> method
--   which the <a>UsersPhotosDelete</a> request conforms to.
type UsersPhotosDeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("photos" :> ("thumbnail" :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersPhotosDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>updUserKey</a></li>
--   </ul>
usersPhotosDelete :: Text -> UsersPhotosDelete

-- | Remove photos for the user
--   
--   <i>See:</i> <a>usersPhotosDelete</a> smart constructor.
data UsersPhotosDelete

-- | Email or immutable Id of the user
updUserKey :: Lens' UsersPhotosDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Photos.Delete.UsersPhotosDelete
instance Data.Data.Data Network.Google.Resource.Directory.Users.Photos.Delete.UsersPhotosDelete
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Photos.Delete.UsersPhotosDelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Photos.Delete.UsersPhotosDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Photos.Delete.UsersPhotosDelete


-- | Retrieve photo of a user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.photos.get</tt>.
module Network.Google.Resource.Directory.Users.Photos.Get

-- | A resource alias for <tt>directory.users.photos.get</tt> method which
--   the <a>UsersPhotosGet</a> request conforms to.
type UsersPhotosGetResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("photos" :> ("thumbnail" :> (QueryParam "alt" AltJSON :> Get '[JSON] UserPhoto)))))))

-- | Creates a value of <a>UsersPhotosGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upgUserKey</a></li>
--   </ul>
usersPhotosGet :: Text -> UsersPhotosGet

-- | Retrieve photo of a user
--   
--   <i>See:</i> <a>usersPhotosGet</a> smart constructor.
data UsersPhotosGet

-- | Email or immutable Id of the user
upgUserKey :: Lens' UsersPhotosGet Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Photos.Get.UsersPhotosGet
instance Data.Data.Data Network.Google.Resource.Directory.Users.Photos.Get.UsersPhotosGet
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Photos.Get.UsersPhotosGet
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Photos.Get.UsersPhotosGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Photos.Get.UsersPhotosGet


-- | Add a photo for the user. This method supports patch semantics.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.photos.patch</tt>.
module Network.Google.Resource.Directory.Users.Photos.Patch

-- | A resource alias for <tt>directory.users.photos.patch</tt> method
--   which the <a>UsersPhotosPatch</a> request conforms to.
type UsersPhotosPatchResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("photos" :> ("thumbnail" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UserPhoto :> Patch '[JSON] UserPhoto))))))))

-- | Creates a value of <a>UsersPhotosPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uppPayload</a></li>
--   <li><a>uppUserKey</a></li>
--   </ul>
usersPhotosPatch :: UserPhoto -> Text -> UsersPhotosPatch

-- | Add a photo for the user. This method supports patch semantics.
--   
--   <i>See:</i> <a>usersPhotosPatch</a> smart constructor.
data UsersPhotosPatch

-- | Multipart request metadata.
uppPayload :: Lens' UsersPhotosPatch UserPhoto

-- | Email or immutable Id of the user
uppUserKey :: Lens' UsersPhotosPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Photos.Patch.UsersPhotosPatch
instance Data.Data.Data Network.Google.Resource.Directory.Users.Photos.Patch.UsersPhotosPatch
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Photos.Patch.UsersPhotosPatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Photos.Patch.UsersPhotosPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Photos.Patch.UsersPhotosPatch


-- | Add a photo for the user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.photos.update</tt>.
module Network.Google.Resource.Directory.Users.Photos.Update

-- | A resource alias for <tt>directory.users.photos.update</tt> method
--   which the <a>UsersPhotosUpdate</a> request conforms to.
type UsersPhotosUpdateResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("photos" :> ("thumbnail" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UserPhoto :> Put '[JSON] UserPhoto))))))))

-- | Creates a value of <a>UsersPhotosUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upuPayload</a></li>
--   <li><a>upuUserKey</a></li>
--   </ul>
usersPhotosUpdate :: UserPhoto -> Text -> UsersPhotosUpdate

-- | Add a photo for the user
--   
--   <i>See:</i> <a>usersPhotosUpdate</a> smart constructor.
data UsersPhotosUpdate

-- | Multipart request metadata.
upuPayload :: Lens' UsersPhotosUpdate UserPhoto

-- | Email or immutable Id of the user
upuUserKey :: Lens' UsersPhotosUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Photos.Update.UsersPhotosUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Users.Photos.Update.UsersPhotosUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Photos.Update.UsersPhotosUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Photos.Update.UsersPhotosUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Photos.Update.UsersPhotosUpdate


-- | Undelete a deleted user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.undelete</tt>.
module Network.Google.Resource.Directory.Users.Undelete

-- | A resource alias for <tt>directory.users.undelete</tt> method which
--   the <a>UsersUndelete</a> request conforms to.
type UsersUndeleteResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("undelete" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UserUndelete :> Post '[JSON] ())))))))

-- | Creates a value of <a>UsersUndelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uuPayload</a></li>
--   <li><a>uuUserKey</a></li>
--   </ul>
usersUndelete :: UserUndelete -> Text -> UsersUndelete

-- | Undelete a deleted user
--   
--   <i>See:</i> <a>usersUndelete</a> smart constructor.
data UsersUndelete

-- | Multipart request metadata.
uuPayload :: Lens' UsersUndelete UserUndelete

-- | The immutable id of the user
uuUserKey :: Lens' UsersUndelete Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Undelete.UsersUndelete
instance Data.Data.Data Network.Google.Resource.Directory.Users.Undelete.UsersUndelete
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Undelete.UsersUndelete
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Undelete.UsersUndelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Undelete.UsersUndelete


-- | update user
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.update</tt>.
module Network.Google.Resource.Directory.Users.Update

-- | A resource alias for <tt>directory.users.update</tt> method which the
--   <a>UsersUpdate</a> request conforms to.
type UsersUpdateResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] User :> Put '[JSON] User))))))

-- | Creates a value of <a>UsersUpdate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uPayload</a></li>
--   <li><a>uUserKey</a></li>
--   </ul>
usersUpdate :: User -> Text -> UsersUpdate

-- | update user
--   
--   <i>See:</i> <a>usersUpdate</a> smart constructor.
data UsersUpdate

-- | Multipart request metadata.
uPayload :: Lens' UsersUpdate User

-- | Email or immutable Id of the user. If Id, it should match with id of
--   user object
uUserKey :: Lens' UsersUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Update.UsersUpdate
instance Data.Data.Data Network.Google.Resource.Directory.Users.Update.UsersUpdate
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Update.UsersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Update.UsersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Update.UsersUpdate


-- | Watch for changes in users list
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.users.watch</tt>.
module Network.Google.Resource.Directory.Users.Watch

-- | A resource alias for <tt>directory.users.watch</tt> method which the
--   <a>UsersWatch</a> request conforms to.
type UsersWatchResource = "admin" :> ("directory" :> ("v1" :> ("users" :> ("watch" :> (QueryParam "event" UsersWatchEvent :> (QueryParam "orderBy" UsersWatchOrderBy :> (QueryParam "viewType" UsersWatchViewType :> (QueryParam "customFieldMask" Text :> (QueryParam "domain" Text :> (QueryParam "showDeleted" Text :> (QueryParam "sortOrder" UsersWatchSortOrder :> (QueryParam "customer" Text :> (QueryParam "query" Text :> (QueryParam "projection" UsersWatchProjection :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel))))))))))))))))))

-- | Creates a value of <a>UsersWatch</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uwEvent</a></li>
--   <li><a>uwOrderBy</a></li>
--   <li><a>uwViewType</a></li>
--   <li><a>uwCustomFieldMask</a></li>
--   <li><a>uwDomain</a></li>
--   <li><a>uwShowDeleted</a></li>
--   <li><a>uwPayload</a></li>
--   <li><a>uwSortOrder</a></li>
--   <li><a>uwCustomer</a></li>
--   <li><a>uwQuery</a></li>
--   <li><a>uwProjection</a></li>
--   <li><a>uwPageToken</a></li>
--   <li><a>uwMaxResults</a></li>
--   </ul>
usersWatch :: Channel -> UsersWatch

-- | Watch for changes in users list
--   
--   <i>See:</i> <a>usersWatch</a> smart constructor.
data UsersWatch

-- | Event on which subscription is intended (if subscribing)
uwEvent :: Lens' UsersWatch (Maybe UsersWatchEvent)

-- | Column to use for sorting results
uwOrderBy :: Lens' UsersWatch (Maybe UsersWatchOrderBy)

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
uwViewType :: Lens' UsersWatch UsersWatchViewType

-- | Comma-separated list of schema names. All fields from these schemas
--   are fetched. This should only be set when projection=custom.
uwCustomFieldMask :: Lens' UsersWatch (Maybe Text)

-- | Name of the domain. Fill this field to get users from only this
--   domain. To return all users in a multi-domain fill customer field
--   instead.
uwDomain :: Lens' UsersWatch (Maybe Text)

-- | If set to true retrieves the list of deleted users. Default is false
uwShowDeleted :: Lens' UsersWatch (Maybe Text)

-- | Multipart request metadata.
uwPayload :: Lens' UsersWatch Channel

-- | Whether to return results in ascending or descending order.
uwSortOrder :: Lens' UsersWatch (Maybe UsersWatchSortOrder)

-- | Immutable id of the Google Apps account. In case of multi-domain, to
--   fetch all users for a customer, fill this field instead of domain.
uwCustomer :: Lens' UsersWatch (Maybe Text)

-- | Query string search. Should be of the form "". Complete documentation
--   is at
--   https://developers.google.com/admin-sdk/directory/v1/guides/search-users
uwQuery :: Lens' UsersWatch (Maybe Text)

-- | What subset of fields to fetch for this user.
uwProjection :: Lens' UsersWatch UsersWatchProjection

-- | Token to specify next page in the list
uwPageToken :: Lens' UsersWatch (Maybe Text)

-- | Maximum number of results to return. Default is 100. Max allowed is
--   500
uwMaxResults :: Lens' UsersWatch (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Directory.Users.Watch.UsersWatch
instance Data.Data.Data Network.Google.Resource.Directory.Users.Watch.UsersWatch
instance GHC.Show.Show Network.Google.Resource.Directory.Users.Watch.UsersWatch
instance GHC.Classes.Eq Network.Google.Resource.Directory.Users.Watch.UsersWatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.Users.Watch.UsersWatch


-- | Generate new backup verification codes for the user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.verificationCodes.generate</tt>.
module Network.Google.Resource.Directory.VerificationCodes.Generate

-- | A resource alias for <tt>directory.verificationCodes.generate</tt>
--   method which the <a>VerificationCodesGenerate</a> request conforms to.
type VerificationCodesGenerateResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("verificationCodes" :> ("generate" :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))))

-- | Creates a value of <a>VerificationCodesGenerate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcgUserKey</a></li>
--   </ul>
verificationCodesGenerate :: Text -> VerificationCodesGenerate

-- | Generate new backup verification codes for the user.
--   
--   <i>See:</i> <a>verificationCodesGenerate</a> smart constructor.
data VerificationCodesGenerate

-- | Email or immutable Id of the user
vcgUserKey :: Lens' VerificationCodesGenerate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.VerificationCodes.Generate.VerificationCodesGenerate
instance Data.Data.Data Network.Google.Resource.Directory.VerificationCodes.Generate.VerificationCodesGenerate
instance GHC.Show.Show Network.Google.Resource.Directory.VerificationCodes.Generate.VerificationCodesGenerate
instance GHC.Classes.Eq Network.Google.Resource.Directory.VerificationCodes.Generate.VerificationCodesGenerate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.VerificationCodes.Generate.VerificationCodesGenerate


-- | Invalidate the current backup verification codes for the user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.verificationCodes.invalidate</tt>.
module Network.Google.Resource.Directory.VerificationCodes.Invalidate

-- | A resource alias for <tt>directory.verificationCodes.invalidate</tt>
--   method which the <a>VerificationCodesInvalidate</a> request conforms
--   to.
type VerificationCodesInvalidateResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("verificationCodes" :> ("invalidate" :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))))

-- | Creates a value of <a>VerificationCodesInvalidate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vciUserKey</a></li>
--   </ul>
verificationCodesInvalidate :: Text -> VerificationCodesInvalidate

-- | Invalidate the current backup verification codes for the user.
--   
--   <i>See:</i> <a>verificationCodesInvalidate</a> smart constructor.
data VerificationCodesInvalidate

-- | Email or immutable Id of the user
vciUserKey :: Lens' VerificationCodesInvalidate Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.VerificationCodes.Invalidate.VerificationCodesInvalidate
instance Data.Data.Data Network.Google.Resource.Directory.VerificationCodes.Invalidate.VerificationCodesInvalidate
instance GHC.Show.Show Network.Google.Resource.Directory.VerificationCodes.Invalidate.VerificationCodesInvalidate
instance GHC.Classes.Eq Network.Google.Resource.Directory.VerificationCodes.Invalidate.VerificationCodesInvalidate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.VerificationCodes.Invalidate.VerificationCodesInvalidate


-- | Returns the current set of valid backup verification codes for the
--   specified user.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a> for
--   <tt>directory.verificationCodes.list</tt>.
module Network.Google.Resource.Directory.VerificationCodes.List

-- | A resource alias for <tt>directory.verificationCodes.list</tt> method
--   which the <a>VerificationCodesList</a> request conforms to.
type VerificationCodesListResource = "admin" :> ("directory" :> ("v1" :> ("users" :> (Capture "userKey" Text :> ("verificationCodes" :> (QueryParam "alt" AltJSON :> Get '[JSON] VerificationCodes))))))

-- | Creates a value of <a>VerificationCodesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vclUserKey</a></li>
--   </ul>
verificationCodesList :: Text -> VerificationCodesList

-- | Returns the current set of valid backup verification codes for the
--   specified user.
--   
--   <i>See:</i> <a>verificationCodesList</a> smart constructor.
data VerificationCodesList

-- | Identifies the user in the API request. The value can be the user's
--   primary email address, alias email address, or unique user ID.
vclUserKey :: Lens' VerificationCodesList Text
instance GHC.Generics.Generic Network.Google.Resource.Directory.VerificationCodes.List.VerificationCodesList
instance Data.Data.Data Network.Google.Resource.Directory.VerificationCodes.List.VerificationCodesList
instance GHC.Show.Show Network.Google.Resource.Directory.VerificationCodes.List.VerificationCodesList
instance GHC.Classes.Eq Network.Google.Resource.Directory.VerificationCodes.List.VerificationCodesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Directory.VerificationCodes.List.VerificationCodesList


-- | The Admin SDK Directory API lets you view and manage enterprise
--   resources such as users and groups, administrative notifications,
--   security features, and more.
--   
--   <i>See:</i> <a>Admin Directory API Reference</a>
module Network.Google.Directory

-- | Default request referring to version <tt>directory_v1</tt> of the
--   Admin Directory API. This contains the host and root path used as a
--   starting point for constructing service requests.
directoryService :: ServiceConfig

-- | View delegated admin roles for your domain
adminDirectoryRoleManagementReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly"]

-- | View groups on your domain
adminDirectoryGroupReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.readonly"]

-- | View your Chrome OS devices' metadata
adminDirectoryDeviceChromeosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly"]

-- | View and manage your Chrome OS devices' metadata
adminDirectoryDeviceChromeosScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos"]

-- | View and manage the provisioning of users on your domain
adminDirectoryUserScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user"]

-- | View group subscriptions on your domain
adminDirectoryGroupMemberReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member.readonly"]

-- | View and manage user aliases on your domain
adminDirectoryUserAliasScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias"]

-- | View and manage the provisioning of calendar resources on your domain
adminDirectoryResourceCalendarScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]

-- | Manage your mobile devices by performing administrative tasks
adminDirectoryDeviceMobileActionScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.action"]

-- | View calendar resources on your domain
adminDirectoryResourceCalendarReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly"]

-- | View domains related to your customers
adminDirectoryDomainReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain.readonly"]

-- | View and manage the provisioning of user schemas on your domain
adminDirectoryUserschemaScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema"]

-- | View user schemas on your domain
adminDirectoryUserschemaReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema.readonly"]

-- | View and manage the provisioning of domains for your customers
adminDirectoryDomainScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain"]

-- | Manage delegated admin roles for your domain
adminDirectoryRoleManagementScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement"]

-- | View and manage the provisioning of groups on your domain
adminDirectoryGroupScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group"]

-- | View organization units on your domain
adminDirectoryOrgUnitReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit.readonly"]

-- | View and manage customer related information
adminDirectoryCustomerScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer"]

-- | View customer related information
adminDirectoryCustomerReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer.readonly"]

-- | View and manage organization units on your domain
adminDirectoryOrgUnitScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit"]

-- | View users on your domain
adminDirectoryUserReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.readonly"]

-- | View user aliases on your domain
adminDirectoryUserAliasReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias.readonly"]

-- | Manage data access permissions for users on your domain
adminDirectoryUserSecurityScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.security"]

-- | View and manage group subscriptions on your domain
adminDirectoryGroupMemberScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member"]

-- | View and manage notifications received on your domain
adminDirectoryNotificationsScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.notifications"]

-- | View and manage your mobile devices' metadata
adminDirectoryDeviceMobileScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile"]

-- | View your mobile devices' metadata
adminDirectoryDeviceMobileReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   Admin Directory API service.
type DirectoryAPI = PrivilegesListResource :<|> (GroupsAliasesInsertResource :<|> (GroupsAliasesListResource :<|> (GroupsAliasesDeleteResource :<|> (GroupsInsertResource :<|> (GroupsListResource :<|> (GroupsPatchResource :<|> (GroupsGetResource :<|> (GroupsDeleteResource :<|> (GroupsUpdateResource :<|> (RoleAssignmentsInsertResource :<|> (RoleAssignmentsListResource :<|> (RoleAssignmentsGetResource :<|> (RoleAssignmentsDeleteResource :<|> (RolesInsertResource :<|> (RolesListResource :<|> (RolesPatchResource :<|> (RolesGetResource :<|> (RolesDeleteResource :<|> (RolesUpdateResource :<|> (CustomersPatchResource :<|> (CustomersGetResource :<|> (CustomersUpdateResource :<|> (UsersAliasesInsertResource :<|> (UsersAliasesListResource :<|> (UsersAliasesDeleteResource :<|> (UsersAliasesWatchResource :<|> (UsersPhotosPatchResource :<|> (UsersPhotosGetResource :<|> (UsersPhotosDeleteResource :<|> (UsersPhotosUpdateResource :<|> (UsersInsertResource :<|> (UsersListResource :<|> (UsersUndeleteResource :<|> (UsersPatchResource :<|> (UsersGetResource :<|> (UsersMakeAdminResource :<|> (UsersDeleteResource :<|> (UsersUpdateResource :<|> (UsersWatchResource :<|> (SchemasInsertResource :<|> (SchemasListResource :<|> (SchemasPatchResource :<|> (SchemasGetResource :<|> (SchemasDeleteResource :<|> (SchemasUpdateResource :<|> (TokensListResource :<|> (TokensGetResource :<|> (TokensDeleteResource :<|> (DomainAliasesInsertResource :<|> (DomainAliasesListResource :<|> (DomainAliasesGetResource :<|> (DomainAliasesDeleteResource :<|> (ChannelsStopResource :<|> (MembersInsertResource :<|> (MembersListResource :<|> (MembersPatchResource :<|> (MembersGetResource :<|> (MembersDeleteResource :<|> (MembersUpdateResource :<|> (MobileDevicesListResource :<|> (MobileDevicesGetResource :<|> (MobileDevicesActionResource :<|> (MobileDevicesDeleteResource :<|> (ResourcesCalendarsInsertResource :<|> (ResourcesCalendarsListResource :<|> (ResourcesCalendarsPatchResource :<|> (ResourcesCalendarsGetResource :<|> (ResourcesCalendarsDeleteResource :<|> (ResourcesCalendarsUpdateResource :<|> (OrgUnitsInsertResource :<|> (OrgUnitsListResource :<|> (OrgUnitsPatchResource :<|> (OrgUnitsGetResource :<|> (OrgUnitsDeleteResource :<|> (OrgUnitsUpdateResource :<|> (VerificationCodesListResource :<|> (VerificationCodesGenerateResource :<|> (VerificationCodesInvalidateResource :<|> (DomainsInsertResource :<|> (DomainsListResource :<|> (DomainsGetResource :<|> (DomainsDeleteResource :<|> (NotificationsListResource :<|> (NotificationsPatchResource :<|> (NotificationsGetResource :<|> (NotificationsDeleteResource :<|> (NotificationsUpdateResource :<|> (ChromeosDevicesListResource :<|> (ChromeosDevicesPatchResource :<|> (ChromeosDevicesGetResource :<|> (ChromeosDevicesActionResource :<|> (ChromeosDevicesUpdateResource :<|> (AspsListResource :<|> (AspsGetResource :<|> AspsDeleteResource))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

-- | JSON template for verification codes in Directory API.
--   
--   <i>See:</i> <a>verificationCode</a> smart constructor.
data VerificationCode

-- | Creates a value of <a>VerificationCode</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vcVerificationCode</a></li>
--   <li><a>vcEtag</a></li>
--   <li><a>vcKind</a></li>
--   <li><a>vcUserId</a></li>
--   </ul>
verificationCode :: VerificationCode

-- | A current verification code for the user. Invalidated or used
--   verification codes are not returned as part of the result.
vcVerificationCode :: Lens' VerificationCode (Maybe Text)

-- | ETag of the resource.
vcEtag :: Lens' VerificationCode (Maybe Text)

-- | The type of the resource. This is always adminverificationCode.
vcKind :: Lens' VerificationCode Text

-- | The obfuscated unique ID of the user.
vcUserId :: Lens' VerificationCode (Maybe Text)

-- | JSON template for Org Unit resource in Directory API.
--   
--   <i>See:</i> <a>orgUnit</a> smart constructor.
data OrgUnit

-- | Creates a value of <a>OrgUnit</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouEtag</a></li>
--   <li><a>ouParentOrgUnitPath</a></li>
--   <li><a>ouKind</a></li>
--   <li><a>ouOrgUnitPath</a></li>
--   <li><a>ouName</a></li>
--   <li><a>ouBlockInheritance</a></li>
--   <li><a>ouParentOrgUnitId</a></li>
--   <li><a>ouDescription</a></li>
--   <li><a>ouOrgUnitId</a></li>
--   </ul>
orgUnit :: OrgUnit

-- | ETag of the resource.
ouEtag :: Lens' OrgUnit (Maybe Text)

-- | Path of parent OrgUnit
ouParentOrgUnitPath :: Lens' OrgUnit (Maybe Text)

-- | Kind of resource this is.
ouKind :: Lens' OrgUnit Text

-- | Path of OrgUnit
ouOrgUnitPath :: Lens' OrgUnit (Maybe Text)

-- | Name of OrgUnit
ouName :: Lens' OrgUnit (Maybe Text)

-- | Should block inheritance
ouBlockInheritance :: Lens' OrgUnit (Maybe Bool)

-- | Id of parent OrgUnit
ouParentOrgUnitId :: Lens' OrgUnit (Maybe Text)

-- | Description of OrgUnit
ouDescription :: Lens' OrgUnit (Maybe Text)

-- | Id of OrgUnit
ouOrgUnitId :: Lens' OrgUnit (Maybe Text)

-- | JSON request template for setting/revoking admin status of a user in
--   Directory API.
--   
--   <i>See:</i> <a>userMakeAdmin</a> smart constructor.
data UserMakeAdmin

-- | Creates a value of <a>UserMakeAdmin</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umaStatus</a></li>
--   </ul>
userMakeAdmin :: UserMakeAdmin

-- | Boolean indicating new admin status of the user
umaStatus :: Lens' UserMakeAdmin (Maybe Bool)

-- | JSON template for About (notes) of a user in Directory API.
--   
--   <i>See:</i> <a>userAbout</a> smart constructor.
data UserAbout

-- | Creates a value of <a>UserAbout</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaValue</a></li>
--   <li><a>uaContentType</a></li>
--   </ul>
userAbout :: UserAbout

-- | Actual value of notes.
uaValue :: Lens' UserAbout (Maybe Text)

-- | About entry can have a type which indicates the content type. It can
--   either be plain or html. By default, notes contents are assumed to
--   contain plain text.
uaContentType :: Lens' UserAbout (Maybe Text)

-- | Event on which subscription is intended (if subscribing)
data UsersListEvent

-- | <tt>add</tt> User Created Event
Add :: UsersListEvent

-- | <tt>delete</tt> User Deleted Event
Delete' :: UsersListEvent

-- | <tt>makeAdmin</tt> User Admin Status Change Event
MakeAdmin :: UsersListEvent

-- | <tt>undelete</tt> User Undeleted Event
Undelete :: UsersListEvent

-- | <tt>update</tt> User Updated Event
Update :: UsersListEvent

-- | JSON response template for List privileges operation in Directory API.
--   
--   <i>See:</i> <a>privileges</a> smart constructor.
data Privileges

-- | Creates a value of <a>Privileges</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pEtag</a></li>
--   <li><a>pKind</a></li>
--   <li><a>pItems</a></li>
--   </ul>
privileges :: Privileges

-- | ETag of the resource.
pEtag :: Lens' Privileges (Maybe Text)

-- | The type of the API resource. This is always adminprivileges.
pKind :: Lens' Privileges Text

-- | A list of Privilege resources.
pItems :: Lens' Privileges [Privilege]

-- | JSON response template for List Groups operation in Directory API.
--   
--   <i>See:</i> <a>groups</a> smart constructor.
data Groups

-- | Creates a value of <a>Groups</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gGroups</a></li>
--   <li><a>gEtag</a></li>
--   <li><a>gNextPageToken</a></li>
--   <li><a>gKind</a></li>
--   </ul>
groups :: Groups

-- | List of group objects.
gGroups :: Lens' Groups [Group]

-- | ETag of the resource.
gEtag :: Lens' Groups (Maybe Text)

-- | Token used to access next page of this result.
gNextPageToken :: Lens' Groups (Maybe Text)

-- | Kind of resource this is.
gKind :: Lens' Groups Text

-- | Event on which subscription is intended (if subscribing)
data UsersAliasesListEvent

-- | <tt>add</tt> Alias Created Event
UALEAdd :: UsersAliasesListEvent

-- | <tt>delete</tt> Alias Deleted Event
UALEDelete' :: UsersAliasesListEvent

-- | JSON response template for List roleAssignments operation in Directory
--   API.
--   
--   <i>See:</i> <a>roleAssignments</a> smart constructor.
data RoleAssignments

-- | Creates a value of <a>RoleAssignments</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raEtag</a></li>
--   <li><a>raNextPageToken</a></li>
--   <li><a>raKind</a></li>
--   <li><a>raItems</a></li>
--   </ul>
roleAssignments :: RoleAssignments

-- | ETag of the resource.
raEtag :: Lens' RoleAssignments (Maybe Text)
raNextPageToken :: Lens' RoleAssignments (Maybe Text)

-- | The type of the API resource. This is always adminroleAssignments.
raKind :: Lens' RoleAssignments Text

-- | A list of RoleAssignment resources.
raItems :: Lens' RoleAssignments [RoleAssignment]

-- | JSON template for privilege resource in Directory API.
--   
--   <i>See:</i> <a>privilege</a> smart constructor.
data Privilege

-- | Creates a value of <a>Privilege</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>priEtag</a></li>
--   <li><a>priIsOuScopable</a></li>
--   <li><a>priKind</a></li>
--   <li><a>priServiceName</a></li>
--   <li><a>priServiceId</a></li>
--   <li><a>priPrivilegeName</a></li>
--   <li><a>priChildPrivileges</a></li>
--   </ul>
privilege :: Privilege

-- | ETag of the resource.
priEtag :: Lens' Privilege (Maybe Text)

-- | If the privilege can be restricted to an organization unit.
priIsOuScopable :: Lens' Privilege (Maybe Bool)

-- | The type of the API resource. This is always adminprivilege.
priKind :: Lens' Privilege Text

-- | The name of the service this privilege is for.
priServiceName :: Lens' Privilege (Maybe Text)

-- | The obfuscated ID of the service this privilege is for.
priServiceId :: Lens' Privilege (Maybe Text)

-- | The name of the privilege.
priPrivilegeName :: Lens' Privilege (Maybe Text)

-- | A list of child privileges. Privileges for a service form a tree. Each
--   privilege can have a list of child privileges; this list is empty for
--   a leaf privilege.
priChildPrivileges :: Lens' Privilege [Privilege]

-- | Event on which subscription is intended (if subscribing)
data UsersAliasesWatchEvent

-- | <tt>add</tt> Alias Created Event
UAWEAdd :: UsersAliasesWatchEvent

-- | <tt>delete</tt> Alias Deleted Event
UAWEDelete' :: UsersAliasesWatchEvent

-- | JSON response template for List roles operation in Directory API.
--   
--   <i>See:</i> <a>roles</a> smart constructor.
data Roles

-- | Creates a value of <a>Roles</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rEtag</a></li>
--   <li><a>rNextPageToken</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rItems</a></li>
--   </ul>
roles :: Roles

-- | ETag of the resource.
rEtag :: Lens' Roles (Maybe Text)
rNextPageToken :: Lens' Roles (Maybe Text)

-- | The type of the API resource. This is always adminroles.
rKind :: Lens' Roles Text

-- | A list of Role resources.
rItems :: Lens' Roles [Role]

-- | Event on which subscription is intended (if subscribing)
data UsersWatchEvent

-- | <tt>add</tt> User Created Event
UWEAdd :: UsersWatchEvent

-- | <tt>delete</tt> User Deleted Event
UWEDelete' :: UsersWatchEvent

-- | <tt>makeAdmin</tt> User Admin Status Change Event
UWEMakeAdmin :: UsersWatchEvent

-- | <tt>undelete</tt> User Undeleted Event
UWEUndelete :: UsersWatchEvent

-- | <tt>update</tt> User Updated Event
UWEUpdate :: UsersWatchEvent

-- | JSON template for address.
--   
--   <i>See:</i> <a>userAddress</a> smart constructor.
data UserAddress

-- | Creates a value of <a>UserAddress</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uaStreetAddress</a></li>
--   <li><a>uaPoBox</a></li>
--   <li><a>uaCountry</a></li>
--   <li><a>uaPostalCode</a></li>
--   <li><a>uaFormatted</a></li>
--   <li><a>uaExtendedAddress</a></li>
--   <li><a>uaLocality</a></li>
--   <li><a>uaPrimary</a></li>
--   <li><a>uaCountryCode</a></li>
--   <li><a>uaRegion</a></li>
--   <li><a>uaType</a></li>
--   <li><a>uaCustomType</a></li>
--   <li><a>uaSourceIsStructured</a></li>
--   </ul>
userAddress :: UserAddress

-- | Street.
uaStreetAddress :: Lens' UserAddress (Maybe Text)

-- | Other parts of address.
uaPoBox :: Lens' UserAddress (Maybe Text)

-- | Country.
uaCountry :: Lens' UserAddress (Maybe Text)

-- | Postal code.
uaPostalCode :: Lens' UserAddress (Maybe Text)

-- | Formatted address.
uaFormatted :: Lens' UserAddress (Maybe Text)

-- | Extended Address.
uaExtendedAddress :: Lens' UserAddress (Maybe Text)

-- | Locality.
uaLocality :: Lens' UserAddress (Maybe Text)

-- | If this is user's primary address. Only one entry could be marked as
--   primary.
uaPrimary :: Lens' UserAddress (Maybe Bool)

-- | Country code.
uaCountryCode :: Lens' UserAddress (Maybe Text)

-- | Region.
uaRegion :: Lens' UserAddress (Maybe Text)

-- | Each entry can have a type which indicates standard values of that
--   entry. For example address could be of home, work etc. In addition to
--   the standard type, an entry can have a custom type and can take any
--   value. Such type should have the CUSTOM value as type and also have a
--   customType value.
uaType :: Lens' UserAddress (Maybe Text)

-- | Custom type.
uaCustomType :: Lens' UserAddress (Maybe Text)

-- | User supplied address was structured. Structured addresses are NOT
--   supported at this time. You might be able to write structured
--   addresses, but any values will eventually be clobbered.
uaSourceIsStructured :: Lens' UserAddress (Maybe Bool)

-- | JSON template for postal address of a customer.
--   
--   <i>See:</i> <a>customerPostalAddress</a> smart constructor.
data CustomerPostalAddress

-- | Creates a value of <a>CustomerPostalAddress</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpaOrganizationName</a></li>
--   <li><a>cpaPostalCode</a></li>
--   <li><a>cpaAddressLine1</a></li>
--   <li><a>cpaLocality</a></li>
--   <li><a>cpaContactName</a></li>
--   <li><a>cpaAddressLine2</a></li>
--   <li><a>cpaCountryCode</a></li>
--   <li><a>cpaRegion</a></li>
--   <li><a>cpaAddressLine3</a></li>
--   </ul>
customerPostalAddress :: CustomerPostalAddress

-- | The company or company division name.
cpaOrganizationName :: Lens' CustomerPostalAddress (Maybe Text)

-- | The postal code. A postalCode example is a postal zip code such as
--   10009. This is in accordance with -
--   http://portablecontacts.net/draft-spec.html#address_element.
cpaPostalCode :: Lens' CustomerPostalAddress (Maybe Text)

-- | A customer's physical address. The address can be composed of one to
--   three lines.
cpaAddressLine1 :: Lens' CustomerPostalAddress (Maybe Text)

-- | Name of the locality. An example of a locality value is the city of
--   San Francisco.
cpaLocality :: Lens' CustomerPostalAddress (Maybe Text)

-- | The customer contact's name.
cpaContactName :: Lens' CustomerPostalAddress (Maybe Text)

-- | Address line 2 of the address.
cpaAddressLine2 :: Lens' CustomerPostalAddress (Maybe Text)

-- | This is a required property. For countryCode information see the ISO
--   3166 country code elements.
cpaCountryCode :: Lens' CustomerPostalAddress (Maybe Text)

-- | Name of the region. An example of a region value is NY for the state
--   of New York.
cpaRegion :: Lens' CustomerPostalAddress (Maybe Text)

-- | Address line 3 of the address.
cpaAddressLine3 :: Lens' CustomerPostalAddress (Maybe Text)

-- | JSON template for roleAssignment resource in Directory API.
--   
--   <i>See:</i> <a>roleAssignment</a> smart constructor.
data RoleAssignment

-- | Creates a value of <a>RoleAssignment</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rolEtag</a></li>
--   <li><a>rolScopeType</a></li>
--   <li><a>rolKind</a></li>
--   <li><a>rolAssignedTo</a></li>
--   <li><a>rolRoleId</a></li>
--   <li><a>rolRoleAssignmentId</a></li>
--   <li><a>rolOrgUnitId</a></li>
--   </ul>
roleAssignment :: RoleAssignment

-- | ETag of the resource.
rolEtag :: Lens' RoleAssignment (Maybe Text)

-- | The scope in which this role is assigned. Possible values are: -
--   CUSTOMER - ORG_UNIT
rolScopeType :: Lens' RoleAssignment (Maybe Text)

-- | The type of the API resource. This is always adminroleAssignment.
rolKind :: Lens' RoleAssignment Text

-- | The unique ID of the user this role is assigned to.
rolAssignedTo :: Lens' RoleAssignment (Maybe Text)

-- | The ID of the role that is assigned.
rolRoleId :: Lens' RoleAssignment (Maybe Int64)

-- | ID of this roleAssignment.
rolRoleAssignmentId :: Lens' RoleAssignment (Maybe Int64)

-- | If the role is restricted to an organization unit, this contains the
--   ID for the organization unit the exercise of this role is restricted
--   to.
rolOrgUnitId :: Lens' RoleAssignment (Maybe Text)

-- | JSON template for Group resource in Directory API.
--   
--   <i>See:</i> <a>group'</a> smart constructor.
data Group

-- | Creates a value of <a>Group</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>groEmail</a></li>
--   <li><a>groEtag</a></li>
--   <li><a>groDirectMembersCount</a></li>
--   <li><a>groKind</a></li>
--   <li><a>groAliases</a></li>
--   <li><a>groNonEditableAliases</a></li>
--   <li><a>groName</a></li>
--   <li><a>groAdminCreated</a></li>
--   <li><a>groId</a></li>
--   <li><a>groDescription</a></li>
--   </ul>
group' :: Group

-- | Email of Group
groEmail :: Lens' Group (Maybe Text)

-- | ETag of the resource.
groEtag :: Lens' Group (Maybe Text)

-- | Group direct members count
groDirectMembersCount :: Lens' Group (Maybe Int64)

-- | Kind of resource this is.
groKind :: Lens' Group Text

-- | List of aliases (Read-only)
groAliases :: Lens' Group [Text]

-- | List of non editable aliases (Read-only)
groNonEditableAliases :: Lens' Group [Text]

-- | Group name
groName :: Lens' Group (Maybe Text)

-- | Is the group created by admin (Read-only) *
groAdminCreated :: Lens' Group (Maybe Bool)

-- | Unique identifier of Group (Read-only)
groId :: Lens' Group (Maybe Text)

-- | Description of the group
groDescription :: Lens' Group (Maybe Text)

-- | JSON template for Chrome Os Device resource in Directory API.
--   
--   <i>See:</i> <a>chromeOSDevice</a> smart constructor.
data ChromeOSDevice

-- | Creates a value of <a>ChromeOSDevice</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codStatus</a></li>
--   <li><a>codEtag</a></li>
--   <li><a>codAnnotatedUser</a></li>
--   <li><a>codPlatformVersion</a></li>
--   <li><a>codLastSync</a></li>
--   <li><a>codActiveTimeRanges</a></li>
--   <li><a>codKind</a></li>
--   <li><a>codEthernetMACAddress</a></li>
--   <li><a>codLastEnrollmentTime</a></li>
--   <li><a>codAnnotatedLocation</a></li>
--   <li><a>codMACAddress</a></li>
--   <li><a>codOrgUnitPath</a></li>
--   <li><a>codRecentUsers</a></li>
--   <li><a>codSupportEndDate</a></li>
--   <li><a>codModel</a></li>
--   <li><a>codWillAutoRenew</a></li>
--   <li><a>codMeid</a></li>
--   <li><a>codDeviceId</a></li>
--   <li><a>codBootMode</a></li>
--   <li><a>codOrderNumber</a></li>
--   <li><a>codAnnotatedAssetId</a></li>
--   <li><a>codNotes</a></li>
--   <li><a>codSerialNumber</a></li>
--   <li><a>codFirmwareVersion</a></li>
--   <li><a>codOSVersion</a></li>
--   </ul>
chromeOSDevice :: ChromeOSDevice

-- | status of the device (Read-only)
codStatus :: Lens' ChromeOSDevice (Maybe Text)

-- | ETag of the resource.
codEtag :: Lens' ChromeOSDevice (Maybe Text)

-- | User of the device
codAnnotatedUser :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook platform version (Read-only)
codPlatformVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Date and time the device was last synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
codLastSync :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | List of active time ranges (Read-only)
codActiveTimeRanges :: Lens' ChromeOSDevice [ChromeOSDeviceActiveTimeRangesItem]

-- | Kind of resource this is.
codKind :: Lens' ChromeOSDevice Text

-- | Chromebook Mac Address on ethernet network interface (Read-only)
codEthernetMACAddress :: Lens' ChromeOSDevice (Maybe Text)

-- | Date and time the device was last enrolled (Read-only)
codLastEnrollmentTime :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | Address or location of the device as noted by the administrator
codAnnotatedLocation :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook Mac Address on wifi network interface (Read-only)
codMACAddress :: Lens' ChromeOSDevice (Maybe Text)

-- | OrgUnit of the device
codOrgUnitPath :: Lens' ChromeOSDevice (Maybe Text)

-- | List of recent device users, in descending order by last login time
--   (Read-only)
codRecentUsers :: Lens' ChromeOSDevice [ChromeOSDeviceRecentUsersItem]

-- | Final date the device will be supported (Read-only)
codSupportEndDate :: Lens' ChromeOSDevice (Maybe UTCTime)

-- | Chromebook Model (Read-only)
codModel :: Lens' ChromeOSDevice (Maybe Text)

-- | Will Chromebook auto renew after support end date (Read-only)
codWillAutoRenew :: Lens' ChromeOSDevice (Maybe Bool)

-- | Mobile Equipment identifier for the 3G mobile card in the Chromebook
--   (Read-only)
codMeid :: Lens' ChromeOSDevice (Maybe Text)

-- | Unique identifier of Chrome OS Device (Read-only)
codDeviceId :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook boot mode (Read-only)
codBootMode :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook order number (Read-only)
codOrderNumber :: Lens' ChromeOSDevice (Maybe Text)

-- | AssetId specified during enrollment or through later annotation
codAnnotatedAssetId :: Lens' ChromeOSDevice (Maybe Text)

-- | Notes added by the administrator
codNotes :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook serial number (Read-only)
codSerialNumber :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook firmware version (Read-only)
codFirmwareVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Chromebook Os Version (Read-only)
codOSVersion :: Lens' ChromeOSDevice (Maybe Text)

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesPatchProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
Basic :: ChromeosDevicesPatchProjection

-- | <tt>FULL</tt> Includes all metadata fields
Full :: ChromeosDevicesPatchProjection

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesGetProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDGPBasic :: ChromeosDevicesGetProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDGPFull :: ChromeosDevicesGetProjection

-- | JSON response template for List Users operation in Apps Directory API.
--   
--   <i>See:</i> <a>users</a> smart constructor.
data Users

-- | Creates a value of <a>Users</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uEtag</a></li>
--   <li><a>uNextPageToken</a></li>
--   <li><a>uUsers</a></li>
--   <li><a>uKind</a></li>
--   <li><a>uTriggerEvent</a></li>
--   </ul>
users :: Users

-- | ETag of the resource.
uEtag :: Lens' Users (Maybe Text)

-- | Token used to access next page of this result.
uNextPageToken :: Lens' Users (Maybe Text)

-- | List of user objects.
uUsers :: Lens' Users [User]

-- | Kind of resource this is.
uKind :: Lens' Users Text

-- | Event that triggered this response (only used in case of Push
--   Response)
uTriggerEvent :: Lens' Users (Maybe Text)

-- | The template that returns individual ASP (Access Code) data.
--   
--   <i>See:</i> <a>asp</a> smart constructor.
data Asp

-- | Creates a value of <a>Asp</a> with the minimum fields required to make
--   a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aCreationTime</a></li>
--   <li><a>aEtag</a></li>
--   <li><a>aCodeId</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aName</a></li>
--   <li><a>aLastTimeUsed</a></li>
--   <li><a>aUserKey</a></li>
--   </ul>
asp :: Asp

-- | The time when the ASP was created. Expressed in Unix time format.
aCreationTime :: Lens' Asp (Maybe Int64)

-- | ETag of the ASP.
aEtag :: Lens' Asp (Maybe Text)

-- | The unique ID of the ASP.
aCodeId :: Lens' Asp (Maybe Int32)

-- | The type of the API resource. This is always adminasp.
aKind :: Lens' Asp Text

-- | The name of the application that the user, represented by their
--   userId, entered when the ASP was created.
aName :: Lens' Asp (Maybe Text)

-- | The time when the ASP was last used. Expressed in Unix time format.
aLastTimeUsed :: Lens' Asp (Maybe Int64)

-- | The unique ID of the user who issued the ASP.
aUserKey :: Lens' Asp (Maybe Text)

-- | JSON response template for List Schema operation in Directory API.
--   
--   <i>See:</i> <a>schemas</a> smart constructor.
data Schemas

-- | Creates a value of <a>Schemas</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEtag</a></li>
--   <li><a>sSchemas</a></li>
--   <li><a>sKind</a></li>
--   </ul>
schemas :: Schemas

-- | ETag of the resource.
sEtag :: Lens' Schemas (Maybe Text)

-- | List of UserSchema objects.
sSchemas :: Lens' Schemas [Schema]

-- | Kind of resource this is.
sKind :: Lens' Schemas Text

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersListViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
AdminView :: UsersListViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
DomainPublic :: UsersListViewType

-- | Whether to return all sub-organizations or just immediate children
data OrgUnitsListType

-- | <tt>all</tt> All sub-organization units.
All :: OrgUnitsListType

-- | <tt>children</tt> Immediate children only (default).
Children :: OrgUnitsListType

-- | Template for a notification resource.
--   
--   <i>See:</i> <a>notification</a> smart constructor.
data Notification

-- | Creates a value of <a>Notification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nSubject</a></li>
--   <li><a>nEtag</a></li>
--   <li><a>nKind</a></li>
--   <li><a>nBody</a></li>
--   <li><a>nFromAddress</a></li>
--   <li><a>nIsUnread</a></li>
--   <li><a>nNotificationId</a></li>
--   <li><a>nSendTime</a></li>
--   </ul>
notification :: Notification

-- | Subject of the notification (Read-only)
nSubject :: Lens' Notification (Maybe Text)

-- | ETag of the resource.
nEtag :: Lens' Notification (Maybe Text)

-- | The type of the resource.
nKind :: Lens' Notification Text

-- | Body of the notification (Read-only)
nBody :: Lens' Notification (Maybe Text)

-- | Address from which the notification is received (Read-only)
nFromAddress :: Lens' Notification (Maybe Text)

-- | Boolean indicating whether the notification is unread or not.
nIsUnread :: Lens' Notification (Maybe Bool)
nNotificationId :: Lens' Notification (Maybe Text)

-- | Time at which notification was sent (Read-only)
nSendTime :: Lens' Notification (Maybe UTCTime)

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
data MobileDevicesListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
Ascending :: MobileDevicesListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
Descending :: MobileDevicesListSortOrder

-- | JSON template for instant messenger of an user.
--   
--   <i>See:</i> <a>userIm</a> smart constructor.
data UserIm

-- | Creates a value of <a>UserIm</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uiIm</a></li>
--   <li><a>uiProtocol</a></li>
--   <li><a>uiPrimary</a></li>
--   <li><a>uiCustomProtocol</a></li>
--   <li><a>uiType</a></li>
--   <li><a>uiCustomType</a></li>
--   </ul>
userIm :: UserIm

-- | Instant messenger id.
uiIm :: Lens' UserIm (Maybe Text)

-- | Protocol used in the instant messenger. It should be one of the values
--   from ImProtocolTypes map. Similar to type, it can take a CUSTOM value
--   and specify the custom name in customProtocol field.
uiProtocol :: Lens' UserIm (Maybe Text)

-- | If this is user's primary im. Only one entry could be marked as
--   primary.
uiPrimary :: Lens' UserIm (Maybe Bool)

-- | Custom protocol.
uiCustomProtocol :: Lens' UserIm (Maybe Text)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example instant messengers could be of home, work etc. In
--   addition to the standard type, an entry can have a custom type and can
--   take any value. Such types should have the CUSTOM value as type and
--   also have a customType value.
uiType :: Lens' UserIm (Maybe Text)

-- | Custom type.
uiCustomType :: Lens' UserIm (Maybe Text)

-- | Column to use for sorting results
data UsersListOrderBy

-- | <tt>email</tt> Primary email of the user.
Email :: UsersListOrderBy

-- | <tt>familyName</tt> User's family name.
FamilyName :: UsersListOrderBy

-- | <tt>givenName</tt> User's given name.
GivenName :: UsersListOrderBy

-- | JSON response template for List tokens operation in Directory API.
--   
--   <i>See:</i> <a>tokens</a> smart constructor.
data Tokens

-- | Creates a value of <a>Tokens</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tEtag</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tokens :: Tokens

-- | ETag of the resource.
tEtag :: Lens' Tokens (Maybe Text)

-- | The type of the API resource. This is always admintokenList.
tKind :: Lens' Tokens Text

-- | A list of Token resources.
tItems :: Lens' Tokens [Token]

-- | Custom fields of the user.
--   
--   <i>See:</i> <a>userCustomSchemas</a> smart constructor.
data UserCustomSchemas

-- | Creates a value of <a>UserCustomSchemas</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucsAddtional</a></li>
--   </ul>
userCustomSchemas :: HashMap Text UserCustomProperties -> UserCustomSchemas
ucsAddtional :: Lens' UserCustomSchemas (HashMap Text UserCustomProperties)

-- | JSON response template to list domain aliases in Directory API.
--   
--   <i>See:</i> <a>domainAliases</a> smart constructor.
data DomainAliases

-- | Creates a value of <a>DomainAliases</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daEtag</a></li>
--   <li><a>daKind</a></li>
--   <li><a>daDomainAliases</a></li>
--   </ul>
domainAliases :: DomainAliases

-- | ETag of the resource.
daEtag :: Lens' DomainAliases (Maybe Text)

-- | Kind of resource this is.
daKind :: Lens' DomainAliases Text

-- | List of domain alias objects.
daDomainAliases :: Lens' DomainAliases [DomainAlias]

-- | JSON response template to list aliases in Directory API.
--   
--   <i>See:</i> <a>aliases</a> smart constructor.
data Aliases

-- | Creates a value of <a>Aliases</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aliEtag</a></li>
--   <li><a>aliKind</a></li>
--   <li><a>aliAliases</a></li>
--   </ul>
aliases :: Aliases

-- | ETag of the resource.
aliEtag :: Lens' Aliases (Maybe Text)

-- | Kind of resource this is.
aliKind :: Lens' Aliases Text

-- | List of alias objects.
aliAliases :: Lens' Aliases [JSONValue]

-- | JSON template for Calendar Resource object in Directory API.
--   
--   <i>See:</i> <a>calendarResource</a> smart constructor.
data CalendarResource

-- | Creates a value of <a>CalendarResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crEtags</a></li>
--   <li><a>crResourceId</a></li>
--   <li><a>crResourceType</a></li>
--   <li><a>crResourceName</a></li>
--   <li><a>crKind</a></li>
--   <li><a>crResourceEmail</a></li>
--   <li><a>crResourceDescription</a></li>
--   </ul>
calendarResource :: CalendarResource

-- | ETag of the resource.
crEtags :: Lens' CalendarResource (Maybe Text)

-- | The unique ID for the calendar resource.
crResourceId :: Lens' CalendarResource (Maybe Text)

-- | The type of the calendar resource. Used for grouping resources in the
--   calendar user interface.
crResourceType :: Lens' CalendarResource (Maybe Text)

-- | The name of the calendar resource. For example, Training Room 1A
crResourceName :: Lens' CalendarResource (Maybe Text)

-- | The type of the resource. For calendar resources, the value is
--   adminresourcesCalendarResource.
crKind :: Lens' CalendarResource Text

-- | The read-only email ID for the calendar resource. Generated as part of
--   creating a new calendar resource.
crResourceEmail :: Lens' CalendarResource (Maybe Text)

-- | The brief description of the calendar resource.
crResourceDescription :: Lens' CalendarResource (Maybe Text)

-- | JSON request template to undelete a user in Directory API.
--   
--   <i>See:</i> <a>userUndelete</a> smart constructor.
data UserUndelete

-- | Creates a value of <a>UserUndelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uuOrgUnitPath</a></li>
--   </ul>
userUndelete :: UserUndelete

-- | OrgUnit of User
uuOrgUnitPath :: Lens' UserUndelete (Maybe Text)

-- | JSON response template for List Members operation in Directory API.
--   
--   <i>See:</i> <a>members</a> smart constructor.
data Members

-- | Creates a value of <a>Members</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mEtag</a></li>
--   <li><a>mNextPageToken</a></li>
--   <li><a>mKind</a></li>
--   <li><a>mMembers</a></li>
--   </ul>
members :: Members

-- | ETag of the resource.
mEtag :: Lens' Members (Maybe Text)

-- | Token used to access next page of this result.
mNextPageToken :: Lens' Members (Maybe Text)

-- | Kind of resource this is.
mKind :: Lens' Members Text

-- | List of member objects.
mMembers :: Lens' Members [Member]

-- | An notification channel used to watch for resource changes.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)

-- | JSON response template for List Mobile Devices operation in Directory
--   API.
--   
--   <i>See:</i> <a>mobileDevices</a> smart constructor.
data MobileDevices

-- | Creates a value of <a>MobileDevices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdEtag</a></li>
--   <li><a>mdNextPageToken</a></li>
--   <li><a>mdKind</a></li>
--   <li><a>mdMobileDevices</a></li>
--   </ul>
mobileDevices :: MobileDevices

-- | ETag of the resource.
mdEtag :: Lens' MobileDevices (Maybe Text)

-- | Token used to access next page of this result.
mdNextPageToken :: Lens' MobileDevices (Maybe Text)

-- | Kind of resource this is.
mdKind :: Lens' MobileDevices Text

-- | List of Mobile Device objects.
mdMobileDevices :: Lens' MobileDevices [MobileDevice]

-- | JSON template for token resource in Directory API.
--   
--   <i>See:</i> <a>token</a> smart constructor.
data Token

-- | Creates a value of <a>Token</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tokClientId</a></li>
--   <li><a>tokEtag</a></li>
--   <li><a>tokDisplayText</a></li>
--   <li><a>tokKind</a></li>
--   <li><a>tokScopes</a></li>
--   <li><a>tokNATiveApp</a></li>
--   <li><a>tokAnonymous</a></li>
--   <li><a>tokUserKey</a></li>
--   </ul>
token :: Token

-- | The Client ID of the application the token is issued to.
tokClientId :: Lens' Token (Maybe Text)

-- | ETag of the resource.
tokEtag :: Lens' Token (Maybe Text)

-- | The displayable name of the application the token is issued to.
tokDisplayText :: Lens' Token (Maybe Text)

-- | The type of the API resource. This is always admintoken.
tokKind :: Lens' Token Text

-- | A list of authorization scopes the application is granted.
tokScopes :: Lens' Token [Text]

-- | Whether the token is issued to an installed application. The value is
--   true if the application is installed to a desktop or mobile device.
tokNATiveApp :: Lens' Token (Maybe Bool)

-- | Whether the application is registered with Google. The value is true
--   if the application has an anonymous Client ID.
tokAnonymous :: Lens' Token (Maybe Bool)

-- | The unique ID of the user that issued the token.
tokUserKey :: Lens' Token (Maybe Text)

-- | JSON template for name of a user in Directory API.
--   
--   <i>See:</i> <a>userName</a> smart constructor.
data UserName

-- | Creates a value of <a>UserName</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>unGivenName</a></li>
--   <li><a>unFullName</a></li>
--   <li><a>unFamilyName</a></li>
--   </ul>
userName :: UserName

-- | First Name
unGivenName :: Lens' UserName (Maybe Text)

-- | Full Name
unFullName :: Lens' UserName (Maybe Text)

-- | Last Name
unFamilyName :: Lens' UserName (Maybe Text)

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersWatchViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
UWVTAdminView :: UsersWatchViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
UWVTDomainPublic :: UsersWatchViewType
data ChromeOSDeviceRecentUsersItem

-- | Creates a value of <a>ChromeOSDeviceRecentUsersItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codruiEmail</a></li>
--   <li><a>codruiType</a></li>
--   </ul>
chromeOSDeviceRecentUsersItem :: ChromeOSDeviceRecentUsersItem

-- | Email address of the user. Present only if the user type is managed
codruiEmail :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)

-- | The type of the user
codruiType :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)

-- | JSON template for Domain Alias object in Directory API.
--   
--   <i>See:</i> <a>domainAlias</a> smart constructor.
data DomainAlias

-- | Creates a value of <a>DomainAlias</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCreationTime</a></li>
--   <li><a>dEtag</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dVerified</a></li>
--   <li><a>dDomainAliasName</a></li>
--   <li><a>dParentDomainName</a></li>
--   </ul>
domainAlias :: DomainAlias

-- | The creation time of the domain alias. (Read-only).
dCreationTime :: Lens' DomainAlias (Maybe Int64)

-- | ETag of the resource.
dEtag :: Lens' DomainAlias (Maybe Text)

-- | Kind of resource this is.
dKind :: Lens' DomainAlias Text

-- | Indicates the verification state of a domain alias. (Read-only)
dVerified :: Lens' DomainAlias (Maybe Bool)

-- | The domain alias name.
dDomainAliasName :: Lens' DomainAlias (Maybe Text)

-- | The parent domain name that the domain alias is associated with. This
--   can either be a primary or secondary domain name within a customer.
dParentDomainName :: Lens' DomainAlias (Maybe Text)

-- | JSON template for Alias object in Directory API.
--   
--   <i>See:</i> <a>alias</a> smart constructor.
data Alias

-- | Creates a value of <a>Alias</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaEtag</a></li>
--   <li><a>aaKind</a></li>
--   <li><a>aaAlias</a></li>
--   <li><a>aaId</a></li>
--   <li><a>aaPrimaryEmail</a></li>
--   </ul>
alias :: Alias

-- | ETag of the resource.
aaEtag :: Lens' Alias (Maybe Text)

-- | Kind of resource this is.
aaKind :: Lens' Alias Text

-- | A alias email
aaAlias :: Lens' Alias (Maybe Text)

-- | Unique id of the group (Read-only) Unique id of the user (Read-only)
aaId :: Lens' Alias (Maybe Text)

-- | Group's primary email (Read-only) User's primary email (Read-only)
aaPrimaryEmail :: Lens' Alias (Maybe Text)

-- | What subset of fields to fetch for this user.
data UsersGetProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
UGPBasic :: UsersGetProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
UGPCustom :: UsersGetProjection

-- | <tt>full</tt> Include all fields associated with this user.
UGPFull :: UsersGetProjection

-- | JSON template for Schema resource in Directory API.
--   
--   <i>See:</i> <a>schema</a> smart constructor.
data Schema

-- | Creates a value of <a>Schema</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>schEtag</a></li>
--   <li><a>schKind</a></li>
--   <li><a>schSchemaName</a></li>
--   <li><a>schSchemaId</a></li>
--   <li><a>schFields</a></li>
--   </ul>
schema :: Schema

-- | ETag of the resource.
schEtag :: Lens' Schema (Maybe Text)

-- | Kind of resource this is.
schKind :: Lens' Schema Text

-- | Schema name
schSchemaName :: Lens' Schema (Maybe Text)

-- | Unique identifier of Schema (Read-only)
schSchemaId :: Lens' Schema (Maybe Text)

-- | Fields of Schema
schFields :: Lens' Schema [SchemaFieldSpec]

-- | JSON template for User object in Directory API.
--   
--   <i>See:</i> <a>user</a> smart constructor.
data User

-- | Creates a value of <a>User</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>useCreationTime</a></li>
--   <li><a>useLastLoginTime</a></li>
--   <li><a>useThumbnailPhotoEtag</a></li>
--   <li><a>useEtag</a></li>
--   <li><a>useIPWhiteListed</a></li>
--   <li><a>useRelations</a></li>
--   <li><a>useHashFunction</a></li>
--   <li><a>useKind</a></li>
--   <li><a>useChangePasswordAtNextLogin</a></li>
--   <li><a>useWebsites</a></li>
--   <li><a>useAddresses</a></li>
--   <li><a>useAliases</a></li>
--   <li><a>useThumbnailPhotoURL</a></li>
--   <li><a>useExternalIds</a></li>
--   <li><a>useSuspended</a></li>
--   <li><a>useAgreedToTerms</a></li>
--   <li><a>useDeletionTime</a></li>
--   <li><a>useNonEditableAliases</a></li>
--   <li><a>useOrgUnitPath</a></li>
--   <li><a>useCustomerId</a></li>
--   <li><a>useIncludeInGlobalAddressList</a></li>
--   <li><a>usePhones</a></li>
--   <li><a>useName</a></li>
--   <li><a>usePassword</a></li>
--   <li><a>useEmails</a></li>
--   <li><a>useIms</a></li>
--   <li><a>useIsAdmin</a></li>
--   <li><a>useIsEnrolledIn2Sv</a></li>
--   <li><a>useId</a></li>
--   <li><a>useOrganizations</a></li>
--   <li><a>usePrimaryEmail</a></li>
--   <li><a>useIsEnforcedIn2Sv</a></li>
--   <li><a>useNotes</a></li>
--   <li><a>useIsDelegatedAdmin</a></li>
--   <li><a>useIsMailboxSetup</a></li>
--   <li><a>useCustomSchemas</a></li>
--   <li><a>useSuspensionReason</a></li>
--   </ul>
user :: User

-- | User's Google account creation time. (Read-only)
useCreationTime :: Lens' User (Maybe UTCTime)

-- | User's last login time. (Read-only)
useLastLoginTime :: Lens' User (Maybe UTCTime)

-- | ETag of the user's photo (Read-only)
useThumbnailPhotoEtag :: Lens' User (Maybe Text)

-- | ETag of the resource.
useEtag :: Lens' User (Maybe Text)

-- | Boolean indicating if ip is whitelisted
useIPWhiteListed :: Lens' User (Maybe Bool)
useRelations :: Lens' User (Maybe JSONValue)

-- | Hash function name for password. Supported are MD5, SHA-1 and crypt
useHashFunction :: Lens' User (Maybe Text)

-- | Kind of resource this is.
useKind :: Lens' User Text

-- | Boolean indicating if the user should change password in next login
useChangePasswordAtNextLogin :: Lens' User (Maybe Bool)
useWebsites :: Lens' User (Maybe JSONValue)
useAddresses :: Lens' User (Maybe JSONValue)

-- | List of aliases (Read-only)
useAliases :: Lens' User [Text]

-- | Photo Url of the user (Read-only)
useThumbnailPhotoURL :: Lens' User (Maybe Text)
useExternalIds :: Lens' User (Maybe JSONValue)

-- | Indicates if user is suspended
useSuspended :: Lens' User (Maybe Bool)

-- | Indicates if user has agreed to terms (Read-only)
useAgreedToTerms :: Lens' User (Maybe Bool)
useDeletionTime :: Lens' User (Maybe UTCTime)

-- | List of non editable aliases (Read-only)
useNonEditableAliases :: Lens' User [Text]

-- | OrgUnit of User
useOrgUnitPath :: Lens' User (Maybe Text)

-- | CustomerId of User (Read-only)
useCustomerId :: Lens' User (Maybe Text)

-- | Boolean indicating if user is included in Global Address List
useIncludeInGlobalAddressList :: Lens' User (Maybe Bool)
usePhones :: Lens' User (Maybe JSONValue)

-- | User's name
useName :: Lens' User (Maybe UserName)

-- | User's password
usePassword :: Lens' User (Maybe Text)
useEmails :: Lens' User (Maybe JSONValue)
useIms :: Lens' User (Maybe JSONValue)

-- | Boolean indicating if the user is admin (Read-only)
useIsAdmin :: Lens' User (Maybe Bool)

-- | Is enrolled in 2-step verification (Read-only)
useIsEnrolledIn2Sv :: Lens' User (Maybe Bool)

-- | Unique identifier of User (Read-only)
useId :: Lens' User (Maybe Text)
useOrganizations :: Lens' User (Maybe JSONValue)

-- | username of User
usePrimaryEmail :: Lens' User (Maybe Text)

-- | Is 2-step verification enforced (Read-only)
useIsEnforcedIn2Sv :: Lens' User (Maybe Bool)
useNotes :: Lens' User (Maybe JSONValue)

-- | Boolean indicating if the user is delegated admin (Read-only)
useIsDelegatedAdmin :: Lens' User (Maybe Bool)

-- | Is mailbox setup (Read-only)
useIsMailboxSetup :: Lens' User (Maybe Bool)

-- | Custom fields of the user.
useCustomSchemas :: Lens' User (Maybe UserCustomSchemas)

-- | Suspension reason if user is suspended (Read-only)
useSuspensionReason :: Lens' User (Maybe Text)

-- | Restrict information returned to a set of selected fields.
data MobileDevicesListProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, model, status, type, and status)
MDLPBasic :: MobileDevicesListProjection

-- | <tt>FULL</tt> Includes all metadata fields
MDLPFull :: MobileDevicesListProjection

-- | JSON request template for firing actions on ChromeOs Device in
--   Directory Devices API.
--   
--   <i>See:</i> <a>chromeOSDeviceAction</a> smart constructor.
data ChromeOSDeviceAction

-- | Creates a value of <a>ChromeOSDeviceAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codaAction</a></li>
--   <li><a>codaDeprovisionReason</a></li>
--   </ul>
chromeOSDeviceAction :: ChromeOSDeviceAction

-- | Action to be taken on the ChromeOs Device
codaAction :: Lens' ChromeOSDeviceAction (Maybe Text)
codaDeprovisionReason :: Lens' ChromeOSDeviceAction (Maybe Text)

-- | JSON template for role resource in Directory API.
--   
--   <i>See:</i> <a>role'</a> smart constructor.
data Role

-- | Creates a value of <a>Role</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrEtag</a></li>
--   <li><a>rrKind</a></li>
--   <li><a>rrRoleName</a></li>
--   <li><a>rrIsSystemRole</a></li>
--   <li><a>rrRoleId</a></li>
--   <li><a>rrRoleDescription</a></li>
--   <li><a>rrIsSuperAdminRole</a></li>
--   <li><a>rrRolePrivileges</a></li>
--   </ul>
role' :: Role

-- | ETag of the resource.
rrEtag :: Lens' Role (Maybe Text)

-- | The type of the API resource. This is always adminrole.
rrKind :: Lens' Role Text

-- | Name of the role.
rrRoleName :: Lens' Role (Maybe Text)

-- | Returns true if this is a pre-defined system role.
rrIsSystemRole :: Lens' Role (Maybe Bool)

-- | ID of the role.
rrRoleId :: Lens' Role (Maybe Int64)

-- | A short description of the role.
rrRoleDescription :: Lens' Role (Maybe Text)

-- | Returns true if the role is a super admin role.
rrIsSuperAdminRole :: Lens' Role (Maybe Bool)

-- | The set of privileges that are granted to this role.
rrRolePrivileges :: Lens' Role [RoleRolePrivilegesItem]

-- | JSON template for Customer Resource object in Directory API.
--   
--   <i>See:</i> <a>customer</a> smart constructor.
data Customer

-- | Creates a value of <a>Customer</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cusEtag</a></li>
--   <li><a>cusKind</a></li>
--   <li><a>cusAlternateEmail</a></li>
--   <li><a>cusCustomerDomain</a></li>
--   <li><a>cusPhoneNumber</a></li>
--   <li><a>cusLanguage</a></li>
--   <li><a>cusId</a></li>
--   <li><a>cusCustomerCreationTime</a></li>
--   <li><a>cusPostalAddress</a></li>
--   </ul>
customer :: Customer

-- | ETag of the resource.
cusEtag :: Lens' Customer (Maybe Text)

-- | Identifies the resource as a customer. Value: admincustomer
cusKind :: Lens' Customer Text

-- | The customer's secondary contact email address. This email address
--   cannot be on the same domain as the customerDomain
cusAlternateEmail :: Lens' Customer (Maybe Text)

-- | The customer's primary domain name string. Do not include the www
--   prefix when creating a new customer.
cusCustomerDomain :: Lens' Customer (Maybe Text)

-- | The customer's contact phone number in E.164 format.
cusPhoneNumber :: Lens' Customer (Maybe Text)

-- | The customer's ISO 639-2 language code. The default value is en-US
cusLanguage :: Lens' Customer (Maybe Text)

-- | The unique ID for the customer's Google account. (Readonly)
cusId :: Lens' Customer (Maybe Text)

-- | The customer's creation time (Readonly)
cusCustomerCreationTime :: Lens' Customer (Maybe UTCTime)

-- | The customer's postal address information.
cusPostalAddress :: Lens' Customer (Maybe CustomerPostalAddress)
data MobileDeviceApplicationsItem

-- | Creates a value of <a>MobileDeviceApplicationsItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdaiVersionCode</a></li>
--   <li><a>mdaiVersionName</a></li>
--   <li><a>mdaiPackageName</a></li>
--   <li><a>mdaiDisplayName</a></li>
--   <li><a>mdaiPermission</a></li>
--   </ul>
mobileDeviceApplicationsItem :: MobileDeviceApplicationsItem

-- | Version code of application
mdaiVersionCode :: Lens' MobileDeviceApplicationsItem (Maybe Int32)

-- | Version name of application
mdaiVersionName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | Package name of application
mdaiPackageName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | Display name of application
mdaiDisplayName :: Lens' MobileDeviceApplicationsItem (Maybe Text)

-- | List of Permissions for application
mdaiPermission :: Lens' MobileDeviceApplicationsItem [Text]

-- | Column to use for sorting results
data MobileDevicesListOrderBy

-- | <tt>deviceId</tt> Mobile Device serial number.
MDLOBDeviceId :: MobileDevicesListOrderBy

-- | <tt>email</tt> Owner user email.
MDLOBEmail :: MobileDevicesListOrderBy

-- | <tt>lastSync</tt> Last policy settings sync date time of the device.
MDLOBLastSync :: MobileDevicesListOrderBy

-- | <tt>model</tt> Mobile Device model.
MDLOBModel :: MobileDevicesListOrderBy

-- | <tt>name</tt> Owner user name.
MDLOBName :: MobileDevicesListOrderBy

-- | <tt>os</tt> Mobile operating system.
MDLOBOS :: MobileDevicesListOrderBy

-- | <tt>status</tt> Status of the device.
MDLOBStatus :: MobileDevicesListOrderBy

-- | <tt>type</tt> Type of the device.
MDLOBType :: MobileDevicesListOrderBy

-- | Whether to return results in ascending or descending order.
data UsersListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
ULSOAscending :: UsersListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
ULSODescending :: UsersListSortOrder

-- | JSON response template for List Organization Units operation in
--   Directory API.
--   
--   <i>See:</i> <a>orgUnits</a> smart constructor.
data OrgUnits

-- | Creates a value of <a>OrgUnits</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oEtag</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oOrganizationUnits</a></li>
--   </ul>
orgUnits :: OrgUnits

-- | ETag of the resource.
oEtag :: Lens' OrgUnits (Maybe Text)

-- | Kind of resource this is.
oKind :: Lens' OrgUnits Text

-- | List of user objects.
oOrganizationUnits :: Lens' OrgUnits [OrgUnit]

-- | JSON response template for List verification codes operation in
--   Directory API.
--   
--   <i>See:</i> <a>verificationCodes</a> smart constructor.
data VerificationCodes

-- | Creates a value of <a>VerificationCodes</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vEtag</a></li>
--   <li><a>vKind</a></li>
--   <li><a>vItems</a></li>
--   </ul>
verificationCodes :: VerificationCodes

-- | ETag of the resource.
vEtag :: Lens' VerificationCodes (Maybe Text)

-- | The type of the resource. This is always adminverificationCodesList.
vKind :: Lens' VerificationCodes Text

-- | A list of verification code resources.
vItems :: Lens' VerificationCodes [VerificationCode]

-- | Whether to return results in ascending or descending order. Only of
--   use when orderBy is also used
data ChromeosDevicesListSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
CDLSOAscending :: ChromeosDevicesListSortOrder

-- | <tt>DESCENDING</tt> Descending order.
CDLSODescending :: ChromeosDevicesListSortOrder

-- | JSON template for a relation entry.
--   
--   <i>See:</i> <a>userRelation</a> smart constructor.
data UserRelation

-- | Creates a value of <a>UserRelation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>urValue</a></li>
--   <li><a>urType</a></li>
--   <li><a>urCustomType</a></li>
--   </ul>
userRelation :: UserRelation

-- | The name of the relation.
urValue :: Lens' UserRelation (Maybe Text)

-- | The relation of the user. Some of the possible values are mother,
--   father, sister, brother, manager, assistant, partner.
urType :: Lens' UserRelation (Maybe Text)

-- | Custom Type.
urCustomType :: Lens' UserRelation (Maybe Text)

-- | Whether to return results in ascending or descending order.
data UsersWatchSortOrder

-- | <tt>ASCENDING</tt> Ascending order.
UWSOAscending :: UsersWatchSortOrder

-- | <tt>DESCENDING</tt> Descending order.
UWSODescending :: UsersWatchSortOrder

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

-- | Creates a value of <a>ChannelParams</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpAddtional</a></li>
--   </ul>
channelParams :: HashMap Text Text -> ChannelParams

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)

-- | JSON template for an organization entry.
--   
--   <i>See:</i> <a>userOrganization</a> smart constructor.
data UserOrganization

-- | Creates a value of <a>UserOrganization</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uoDePartment</a></li>
--   <li><a>uoLocation</a></li>
--   <li><a>uoCostCenter</a></li>
--   <li><a>uoDomain</a></li>
--   <li><a>uoSymbol</a></li>
--   <li><a>uoPrimary</a></li>
--   <li><a>uoName</a></li>
--   <li><a>uoTitle</a></li>
--   <li><a>uoType</a></li>
--   <li><a>uoCustomType</a></li>
--   <li><a>uoDescription</a></li>
--   </ul>
userOrganization :: UserOrganization

-- | Department within the organization.
uoDePartment :: Lens' UserOrganization (Maybe Text)

-- | Location of the organization. This need not be fully qualified
--   address.
uoLocation :: Lens' UserOrganization (Maybe Text)

-- | The cost center of the users department.
uoCostCenter :: Lens' UserOrganization (Maybe Text)

-- | The domain to which the organization belongs to.
uoDomain :: Lens' UserOrganization (Maybe Text)

-- | Symbol of the organization.
uoSymbol :: Lens' UserOrganization (Maybe Text)

-- | If it user's primary organization.
uoPrimary :: Lens' UserOrganization (Maybe Bool)

-- | Name of the organization
uoName :: Lens' UserOrganization (Maybe Text)

-- | Title (designation) of the user in the organization.
uoTitle :: Lens' UserOrganization (Maybe Text)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example organization could be of school, work etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a CustomType value.
uoType :: Lens' UserOrganization (Maybe Text)

-- | Custom type.
uoCustomType :: Lens' UserOrganization (Maybe Text)

-- | Description of the organization.
uoDescription :: Lens' UserOrganization (Maybe Text)

-- | JSON template for a website entry.
--   
--   <i>See:</i> <a>userWebsite</a> smart constructor.
data UserWebsite

-- | Creates a value of <a>UserWebsite</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uwValue</a></li>
--   <li><a>uwPrimary</a></li>
--   <li><a>uwType</a></li>
--   <li><a>uwCustomType</a></li>
--   </ul>
userWebsite :: UserWebsite

-- | Website.
uwValue :: Lens' UserWebsite (Maybe Text)

-- | If this is user's primary website or not.
uwPrimary :: Lens' UserWebsite (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example website could be of home, work, blog etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a customType value.
uwType :: Lens' UserWebsite (Maybe Text)

-- | Custom Type.
uwCustomType :: Lens' UserWebsite (Maybe Text)
data ChromeOSDeviceActiveTimeRangesItem

-- | Creates a value of <a>ChromeOSDeviceActiveTimeRangesItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>codatriDate</a></li>
--   <li><a>codatriActiveTime</a></li>
--   </ul>
chromeOSDeviceActiveTimeRangesItem :: ChromeOSDeviceActiveTimeRangesItem

-- | Date of usage
codatriDate :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Day)

-- | Duration in milliseconds
codatriActiveTime :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Int32)

-- | JSON template for an email.
--   
--   <i>See:</i> <a>userEmail</a> smart constructor.
data UserEmail

-- | Creates a value of <a>UserEmail</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueAddress</a></li>
--   <li><a>uePrimary</a></li>
--   <li><a>ueType</a></li>
--   <li><a>ueCustomType</a></li>
--   </ul>
userEmail :: UserEmail

-- | Email id of the user.
ueAddress :: Lens' UserEmail (Maybe Text)

-- | If this is user's primary email. Only one entry could be marked as
--   primary.
uePrimary :: Lens' UserEmail (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example email could be of home, work etc. In addition to
--   the standard type, an entry can have a custom type and can take any
--   value Such types should have the CUSTOM value as type and also have a
--   customType value.
ueType :: Lens' UserEmail (Maybe Text)

-- | Custom Type.
ueCustomType :: Lens' UserEmail (Maybe Text)

-- | JSON template for a phone entry.
--   
--   <i>See:</i> <a>userPhone</a> smart constructor.
data UserPhone

-- | Creates a value of <a>UserPhone</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upValue</a></li>
--   <li><a>upPrimary</a></li>
--   <li><a>upType</a></li>
--   <li><a>upCustomType</a></li>
--   </ul>
userPhone :: UserPhone

-- | Phone number.
upValue :: Lens' UserPhone (Maybe Text)

-- | If this is user's primary phone or not.
upPrimary :: Lens' UserPhone (Maybe Bool)

-- | Each entry can have a type which indicates standard types of that
--   entry. For example phone could be of home_fax, work, mobile etc. In
--   addition to the standard type, an entry can have a custom type and can
--   give it any name. Such types should have the CUSTOM value as type and
--   also have a customType value.
upType :: Lens' UserPhone (Maybe Text)

-- | Custom Type.
upCustomType :: Lens' UserPhone (Maybe Text)

-- | JSON template for Photo object in Directory API.
--   
--   <i>See:</i> <a>userPhoto</a> smart constructor.
data UserPhoto

-- | Creates a value of <a>UserPhoto</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upPhotoData</a></li>
--   <li><a>upEtag</a></li>
--   <li><a>upHeight</a></li>
--   <li><a>upKind</a></li>
--   <li><a>upWidth</a></li>
--   <li><a>upMimeType</a></li>
--   <li><a>upId</a></li>
--   <li><a>upPrimaryEmail</a></li>
--   </ul>
userPhoto :: UserPhoto

-- | Base64 encoded photo data
upPhotoData :: Lens' UserPhoto (Maybe ByteString)

-- | ETag of the resource.
upEtag :: Lens' UserPhoto (Maybe Text)

-- | Height in pixels of the photo
upHeight :: Lens' UserPhoto (Maybe Int32)

-- | Kind of resource this is.
upKind :: Lens' UserPhoto Text

-- | Width in pixels of the photo
upWidth :: Lens' UserPhoto (Maybe Int32)

-- | Mime Type of the photo
upMimeType :: Lens' UserPhoto (Maybe Text)

-- | Unique identifier of User (Read-only)
upId :: Lens' UserPhoto (Maybe Text)

-- | Primary email of User (Read-only)
upPrimaryEmail :: Lens' UserPhoto (Maybe Text)

-- | What subset of fields to fetch for this user.
data UsersListProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
ULPBasic :: UsersListProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
ULPCustom :: UsersListProjection

-- | <tt>full</tt> Include all fields associated with this user.
ULPFull :: UsersListProjection

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesUpdateProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDUPBasic :: ChromeosDevicesUpdateProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDUPFull :: ChromeosDevicesUpdateProjection

-- | Restrict information returned to a set of selected fields.
data MobileDevicesGetProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, model, status, type, and status)
MDGPBasic :: MobileDevicesGetProjection

-- | <tt>FULL</tt> Includes all metadata fields
MDGPFull :: MobileDevicesGetProjection

-- | JSON template for Mobile Device resource in Directory API.
--   
--   <i>See:</i> <a>mobileDevice</a> smart constructor.
data MobileDevice

-- | Creates a value of <a>MobileDevice</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mobEmail</a></li>
--   <li><a>mobStatus</a></li>
--   <li><a>mobPrivilege</a></li>
--   <li><a>mobEtag</a></li>
--   <li><a>mobResourceId</a></li>
--   <li><a>mobManufacturer</a></li>
--   <li><a>mobBuildNumber</a></li>
--   <li><a>mobManagedAccountIsOnOwnerProFile</a></li>
--   <li><a>mobLastSync</a></li>
--   <li><a>mobOtherAccountsInfo</a></li>
--   <li><a>mobKind</a></li>
--   <li><a>mobAdbStatus</a></li>
--   <li><a>mobReleaseVersion</a></li>
--   <li><a>mobBrand</a></li>
--   <li><a>mobSecurityPatchLevel</a></li>
--   <li><a>mobNetworkOperator</a></li>
--   <li><a>mobKernelVersion</a></li>
--   <li><a>mobOS</a></li>
--   <li><a>mobName</a></li>
--   <li><a>mobModel</a></li>
--   <li><a>mobDeveloperOptionsStatus</a></li>
--   <li><a>mobUnknownSourcesStatus</a></li>
--   <li><a>mobMeid</a></li>
--   <li><a>mobBootLoaderVersion</a></li>
--   <li><a>mobDeviceId</a></li>
--   <li><a>mobFirstSync</a></li>
--   <li><a>mobUserAgent</a></li>
--   <li><a>mobImei</a></li>
--   <li><a>mobType</a></li>
--   <li><a>mobWifiMACAddress</a></li>
--   <li><a>mobEncryptionStatus</a></li>
--   <li><a>mobSerialNumber</a></li>
--   <li><a>mobDevicePasswordStatus</a></li>
--   <li><a>mobHardwareId</a></li>
--   <li><a>mobBasebandVersion</a></li>
--   <li><a>mobSupportsWorkProFile</a></li>
--   <li><a>mobHardware</a></li>
--   <li><a>mobDeviceCompromisedStatus</a></li>
--   <li><a>mobApplications</a></li>
--   <li><a>mobDefaultLanguage</a></li>
--   </ul>
mobileDevice :: MobileDevice

-- | List of owner user's email addresses (Read-only)
mobEmail :: Lens' MobileDevice [Text]

-- | Status of the device (Read-only)
mobStatus :: Lens' MobileDevice (Maybe Text)

-- | DMAgentPermission (Read-only)
mobPrivilege :: Lens' MobileDevice (Maybe Text)

-- | ETag of the resource.
mobEtag :: Lens' MobileDevice (Maybe Text)

-- | Unique identifier of Mobile Device (Read-only)
mobResourceId :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device manufacturer (Read-only)
mobManufacturer :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Build number (Read-only)
mobBuildNumber :: Lens' MobileDevice (Maybe Text)

-- | Boolean indicating if this account is on owner/primary profile or not
--   (Read-only)
mobManagedAccountIsOnOwnerProFile :: Lens' MobileDevice (Maybe Bool)

-- | Date and time the device was last synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
mobLastSync :: Lens' MobileDevice (Maybe UTCTime)

-- | List of accounts added on device (Read-only)
mobOtherAccountsInfo :: Lens' MobileDevice [Text]

-- | Kind of resource this is.
mobKind :: Lens' MobileDevice Text

-- | Adb (USB debugging) enabled or disabled on device (Read-only)
mobAdbStatus :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device release version version (Read-only)
mobReleaseVersion :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Brand (Read-only)
mobBrand :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Security patch level (Read-only)
mobSecurityPatchLevel :: Lens' MobileDevice (Maybe Int64)

-- | Mobile Device mobile or network operator (if available) (Read-only)
mobNetworkOperator :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Kernel version (Read-only)
mobKernelVersion :: Lens' MobileDevice (Maybe Text)

-- | Name of the mobile operating system
mobOS :: Lens' MobileDevice (Maybe Text)

-- | List of owner user's names (Read-only)
mobName :: Lens' MobileDevice [Text]

-- | Name of the model of the device
mobModel :: Lens' MobileDevice (Maybe Text)

-- | Developer options enabled or disabled on device (Read-only)
mobDeveloperOptionsStatus :: Lens' MobileDevice (Maybe Bool)

-- | Unknown sources enabled or disabled on device (Read-only)
mobUnknownSourcesStatus :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device MEID number (Read-only)
mobMeid :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Bootloader version (Read-only)
mobBootLoaderVersion :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device serial number (Read-only)
mobDeviceId :: Lens' MobileDevice (Maybe Text)

-- | Date and time the device was first synchronized with the policy
--   settings in the Google Apps administrator control panel (Read-only)
mobFirstSync :: Lens' MobileDevice (Maybe UTCTime)

-- | Mobile Device user agent
mobUserAgent :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device IMEI number (Read-only)
mobImei :: Lens' MobileDevice (Maybe Text)

-- | The type of device (Read-only)
mobType :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device WiFi MAC address (Read-only)
mobWifiMACAddress :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Encryption Status (Read-only)
mobEncryptionStatus :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device SSN or Serial Number (Read-only)
mobSerialNumber :: Lens' MobileDevice (Maybe Text)

-- | DevicePasswordStatus (Read-only)
mobDevicePasswordStatus :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Hardware Id (Read-only)
mobHardwareId :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device Baseband version (Read-only)
mobBasebandVersion :: Lens' MobileDevice (Maybe Text)

-- | Work profile supported on device (Read-only)
mobSupportsWorkProFile :: Lens' MobileDevice (Maybe Bool)

-- | Mobile Device Hardware (Read-only)
mobHardware :: Lens' MobileDevice (Maybe Text)

-- | Mobile Device compromised status (Read-only)
mobDeviceCompromisedStatus :: Lens' MobileDevice (Maybe Text)

-- | List of applications installed on Mobile Device
mobApplications :: Lens' MobileDevice [MobileDeviceApplicationsItem]

-- | The default locale used on the Mobile Device (Read-only)
mobDefaultLanguage :: Lens' MobileDevice (Maybe Text)

-- | JSON template for Member resource in Directory API.
--   
--   <i>See:</i> <a>member</a> smart constructor.
data Member

-- | Creates a value of <a>Member</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>memEmail</a></li>
--   <li><a>memStatus</a></li>
--   <li><a>memEtag</a></li>
--   <li><a>memKind</a></li>
--   <li><a>memRole</a></li>
--   <li><a>memId</a></li>
--   <li><a>memType</a></li>
--   </ul>
member :: Member

-- | Email of member (Read-only)
memEmail :: Lens' Member (Maybe Text)

-- | Status of member (Immutable)
memStatus :: Lens' Member (Maybe Text)

-- | ETag of the resource.
memEtag :: Lens' Member (Maybe Text)

-- | Kind of resource this is.
memKind :: Lens' Member Text

-- | Role of member
memRole :: Lens' Member (Maybe Text)

-- | Unique identifier of customer member (Read-only) Unique identifier of
--   group (Read-only) Unique identifier of member (Read-only)
memId :: Lens' Member (Maybe Text)

-- | Type of member (Immutable)
memType :: Lens' Member (Maybe Text)

-- | JSON template for a set of custom properties (i.e. all fields in a
--   particular schema)
--   
--   <i>See:</i> <a>userCustomProperties</a> smart constructor.
data UserCustomProperties

-- | Creates a value of <a>UserCustomProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucpAddtional</a></li>
--   </ul>
userCustomProperties :: HashMap Text JSONValue -> UserCustomProperties
ucpAddtional :: Lens' UserCustomProperties (HashMap Text JSONValue)

-- | JSON template for Domain object in Directory API.
--   
--   <i>See:</i> <a>domains</a> smart constructor.
data Domains

-- | Creates a value of <a>Domains</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>domCreationTime</a></li>
--   <li><a>domEtag</a></li>
--   <li><a>domKind</a></li>
--   <li><a>domDomainAliases</a></li>
--   <li><a>domVerified</a></li>
--   <li><a>domDomainName</a></li>
--   <li><a>domIsPrimary</a></li>
--   </ul>
domains :: Domains

-- | Creation time of the domain. (Read-only).
domCreationTime :: Lens' Domains (Maybe Int64)

-- | ETag of the resource.
domEtag :: Lens' Domains (Maybe Text)

-- | Kind of resource this is.
domKind :: Lens' Domains Text

-- | List of domain alias objects. (Read-only)
domDomainAliases :: Lens' Domains [DomainAlias]

-- | Indicates the verification state of a domain. (Read-only).
domVerified :: Lens' Domains (Maybe Bool)

-- | The domain name of the customer.
domDomainName :: Lens' Domains (Maybe Text)

-- | Indicates if the domain is a primary domain (Read-only).
domIsPrimary :: Lens' Domains (Maybe Bool)

-- | JSON template for Calendar Resource List Response object in Directory
--   API.
--   
--   <i>See:</i> <a>calendarResources</a> smart constructor.
data CalendarResources

-- | Creates a value of <a>CalendarResources</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsEtag</a></li>
--   <li><a>crsNextPageToken</a></li>
--   <li><a>crsKind</a></li>
--   <li><a>crsItems</a></li>
--   </ul>
calendarResources :: CalendarResources

-- | ETag of the resource.
crsEtag :: Lens' CalendarResources (Maybe Text)

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
crsNextPageToken :: Lens' CalendarResources (Maybe Text)

-- | Identifies this as a collection of CalendarResources. This is always
--   adminresourcescalendarResourcesList.
crsKind :: Lens' CalendarResources Text

-- | The CalendarResources in this page of results.
crsItems :: Lens' CalendarResources [CalendarResource]

-- | Column to use for sorting results
data ChromeosDevicesListOrderBy

-- | <tt>annotatedLocation</tt> Chromebook location as annotated by the
--   administrator.
AnnotatedLocation :: ChromeosDevicesListOrderBy

-- | <tt>annotatedUser</tt> Chromebook user as annotated by administrator.
AnnotatedUser :: ChromeosDevicesListOrderBy

-- | <tt>lastSync</tt> Chromebook last sync.
LastSync :: ChromeosDevicesListOrderBy

-- | <tt>notes</tt> Chromebook notes as annotated by the administrator.
Notes :: ChromeosDevicesListOrderBy

-- | <tt>serialNumber</tt> Chromebook Serial Number.
SerialNumber :: ChromeosDevicesListOrderBy

-- | <tt>status</tt> Chromebook status.
Status :: ChromeosDevicesListOrderBy

-- | <tt>supportEndDate</tt> Chromebook support end date.
SupportEndDate :: ChromeosDevicesListOrderBy

-- | What subset of fields to fetch for this user.
data UsersWatchProjection

-- | <tt>basic</tt> Do not include any custom fields for the user.
UWPBasic :: UsersWatchProjection

-- | <tt>custom</tt> Include custom fields from schemas mentioned in
--   customFieldMask.
UWPCustom :: UsersWatchProjection

-- | <tt>full</tt> Include all fields associated with this user.
UWPFull :: UsersWatchProjection

-- | Column to use for sorting results
data UsersWatchOrderBy

-- | <tt>email</tt> Primary email of the user.
UWOBEmail :: UsersWatchOrderBy

-- | <tt>familyName</tt> User's family name.
UWOBFamilyName :: UsersWatchOrderBy

-- | <tt>givenName</tt> User's given name.
UWOBGivenName :: UsersWatchOrderBy

-- | Template for notifications list response.
--   
--   <i>See:</i> <a>notifications</a> smart constructor.
data Notifications

-- | Creates a value of <a>Notifications</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>notEtag</a></li>
--   <li><a>notNextPageToken</a></li>
--   <li><a>notKind</a></li>
--   <li><a>notItems</a></li>
--   <li><a>notUnreadNotificationsCount</a></li>
--   </ul>
notifications :: Notifications

-- | ETag of the resource.
notEtag :: Lens' Notifications (Maybe Text)

-- | Token for fetching the next page of notifications.
notNextPageToken :: Lens' Notifications (Maybe Text)

-- | The type of the resource.
notKind :: Lens' Notifications Text

-- | List of notifications in this page.
notItems :: Lens' Notifications [Notification]

-- | Number of unread notification for the domain.
notUnreadNotificationsCount :: Lens' Notifications (Maybe Int32)

-- | Restrict information returned to a set of selected fields.
data ChromeosDevicesListProjection

-- | <tt>BASIC</tt> Includes only the basic metadata fields (e.g.,
--   deviceId, serialNumber, status, and user)
CDLPBasic :: ChromeosDevicesListProjection

-- | <tt>FULL</tt> Includes all metadata fields
CDLPFull :: ChromeosDevicesListProjection

-- | Indexing spec for a numeric field. By default, only exact match
--   queries will be supported for numeric fields. Setting the
--   numericIndexingSpec allows range queries to be supported.
--   
--   <i>See:</i> <a>schemaFieldSpecNumericIndexingSpec</a> smart
--   constructor.
data SchemaFieldSpecNumericIndexingSpec

-- | Creates a value of <a>SchemaFieldSpecNumericIndexingSpec</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sfsnisMaxValue</a></li>
--   <li><a>sfsnisMinValue</a></li>
--   </ul>
schemaFieldSpecNumericIndexingSpec :: SchemaFieldSpecNumericIndexingSpec

-- | Maximum value of this field. This is meant to be indicative rather
--   than enforced. Values outside this range will still be indexed, but
--   search may not be as performant.
sfsnisMaxValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)

-- | Minimum value of this field. This is meant to be indicative rather
--   than enforced. Values outside this range will still be indexed, but
--   search may not be as performant.
sfsnisMinValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)

-- | JSON request template for firing commands on Mobile Device in
--   Directory Devices API.
--   
--   <i>See:</i> <a>mobileDeviceAction</a> smart constructor.
data MobileDeviceAction

-- | Creates a value of <a>MobileDeviceAction</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mdaAction</a></li>
--   </ul>
mobileDeviceAction :: MobileDeviceAction

-- | Action to be taken on the Mobile Device
mdaAction :: Lens' MobileDeviceAction (Maybe Text)

-- | JSON template for FieldSpec resource for Schemas in Directory API.
--   
--   <i>See:</i> <a>schemaFieldSpec</a> smart constructor.
data SchemaFieldSpec

-- | Creates a value of <a>SchemaFieldSpec</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sfsEtag</a></li>
--   <li><a>sfsKind</a></li>
--   <li><a>sfsNumericIndexingSpec</a></li>
--   <li><a>sfsReadAccessType</a></li>
--   <li><a>sfsFieldId</a></li>
--   <li><a>sfsIndexed</a></li>
--   <li><a>sfsFieldType</a></li>
--   <li><a>sfsFieldName</a></li>
--   <li><a>sfsMultiValued</a></li>
--   </ul>
schemaFieldSpec :: SchemaFieldSpec

-- | ETag of the resource.
sfsEtag :: Lens' SchemaFieldSpec (Maybe Text)

-- | Kind of resource this is.
sfsKind :: Lens' SchemaFieldSpec Text

-- | Indexing spec for a numeric field. By default, only exact match
--   queries will be supported for numeric fields. Setting the
--   numericIndexingSpec allows range queries to be supported.
sfsNumericIndexingSpec :: Lens' SchemaFieldSpec (Maybe SchemaFieldSpecNumericIndexingSpec)

-- | Read ACLs on the field specifying who can view values of this field.
--   Valid values are "ALL_DOMAIN_USERS" and "ADMINS_AND_SELF".
sfsReadAccessType :: Lens' SchemaFieldSpec Text

-- | Unique identifier of Field (Read-only)
sfsFieldId :: Lens' SchemaFieldSpec (Maybe Text)

-- | Boolean specifying whether the field is indexed or not.
sfsIndexed :: Lens' SchemaFieldSpec Bool

-- | Type of the field.
sfsFieldType :: Lens' SchemaFieldSpec (Maybe Text)

-- | Name of the field.
sfsFieldName :: Lens' SchemaFieldSpec (Maybe Text)

-- | Boolean specifying whether this is a multi-valued field or not.
sfsMultiValued :: Lens' SchemaFieldSpec (Maybe Bool)

-- | JSON response template for List Chrome OS Devices operation in
--   Directory API.
--   
--   <i>See:</i> <a>chromeOSDevices</a> smart constructor.
data ChromeOSDevices

-- | Creates a value of <a>ChromeOSDevices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cosdEtag</a></li>
--   <li><a>cosdNextPageToken</a></li>
--   <li><a>cosdKind</a></li>
--   <li><a>cosdChromeosDevices</a></li>
--   </ul>
chromeOSDevices :: ChromeOSDevices

-- | ETag of the resource.
cosdEtag :: Lens' ChromeOSDevices (Maybe Text)

-- | Token used to access next page of this result.
cosdNextPageToken :: Lens' ChromeOSDevices (Maybe Text)

-- | Kind of resource this is.
cosdKind :: Lens' ChromeOSDevices Text

-- | List of Chrome OS Device objects.
cosdChromeosDevices :: Lens' ChromeOSDevices [ChromeOSDevice]

-- | JSON template for an externalId entry.
--   
--   <i>See:</i> <a>userExternalId</a> smart constructor.
data UserExternalId

-- | Creates a value of <a>UserExternalId</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ueiValue</a></li>
--   <li><a>ueiType</a></li>
--   <li><a>ueiCustomType</a></li>
--   </ul>
userExternalId :: UserExternalId

-- | The value of the id.
ueiValue :: Lens' UserExternalId (Maybe Text)

-- | The type of the Id.
ueiType :: Lens' UserExternalId (Maybe Text)

-- | Custom type.
ueiCustomType :: Lens' UserExternalId (Maybe Text)
data Asps

-- | Creates a value of <a>Asps</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aspEtag</a></li>
--   <li><a>aspKind</a></li>
--   <li><a>aspItems</a></li>
--   </ul>
asps :: Asps

-- | ETag of the resource.
aspEtag :: Lens' Asps (Maybe Text)

-- | The type of the API resource. This is always adminaspList.
aspKind :: Lens' Asps Text

-- | A list of ASP resources.
aspItems :: Lens' Asps [Asp]

-- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
data UsersGetViewType

-- | <tt>admin_view</tt> Fetches the ADMIN_VIEW of the user.
UGVTAdminView :: UsersGetViewType

-- | <tt>domain_public</tt> Fetches the DOMAIN_PUBLIC view of the user.
UGVTDomainPublic :: UsersGetViewType
data RoleRolePrivilegesItem

-- | Creates a value of <a>RoleRolePrivilegesItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrpiServiceId</a></li>
--   <li><a>rrpiPrivilegeName</a></li>
--   </ul>
roleRolePrivilegesItem :: RoleRolePrivilegesItem

-- | The obfuscated ID of the service this privilege is for.
rrpiServiceId :: Lens' RoleRolePrivilegesItem (Maybe Text)

-- | The name of the privilege.
rrpiPrivilegeName :: Lens' RoleRolePrivilegesItem (Maybe Text)

-- | JSON response template to list Domains in Directory API.
--   
--   <i>See:</i> <a>domains2</a> smart constructor.
data Domains2

-- | Creates a value of <a>Domains2</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddEtag</a></li>
--   <li><a>ddKind</a></li>
--   <li><a>ddDomains</a></li>
--   </ul>
domains2 :: Domains2

-- | ETag of the resource.
ddEtag :: Lens' Domains2 (Maybe Text)

-- | Kind of resource this is.
ddKind :: Lens' Domains2 Text

-- | List of domain objects.
ddDomains :: Lens' Domains2 [Domains]
