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


-- | Google Apps Activity SDK.
--   
--   Provides a historical view of activity.
--   
--   <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>v1</tt> of the API.
@package gogol-apps-activity
@version 0.3.0


module Network.Google.AppsActivity.Types

-- | Default request referring to version <tt>v1</tt> of the Google Apps
--   Activity API. This contains the host and root path used as a starting
--   point for constructing service requests.
appsActivityService :: ServiceConfig

-- | View metadata for files in your Google Drive
driveMetadataReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata.readonly"]

-- | View the activity history of your Google Apps
activityScope :: Proxy '["https://www.googleapis.com/auth/activity"]

-- | View the files in your Google Drive
driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]

-- | View and manage the files in your Google Drive
driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]

-- | View and manage metadata of files in your Google Drive
driveMetadataScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata"]

-- | Contains information about a parent object. For example, a folder in
--   Drive is a parent for all files within it.
--   
--   <i>See:</i> <a>parent</a> smart constructor.
data Parent

-- | Creates a value of <a>Parent</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>pIsRoot</a></li>
--   <li><a>pId</a></li>
--   <li><a>pTitle</a></li>
--   </ul>
parent :: Parent

-- | Whether this is the root folder.
pIsRoot :: Lens' Parent (Maybe Bool)

-- | The parent's ID.
pId :: Lens' Parent (Maybe Text)

-- | The parent's title.
pTitle :: Lens' Parent (Maybe Text)

-- | Photo information for a user.
--   
--   <i>See:</i> <a>photo</a> smart constructor.
data Photo

-- | Creates a value of <a>Photo</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>pURL</a></li>
--   </ul>
photo :: Photo

-- | The URL of the photo.
pURL :: Lens' Photo (Maybe Text)

-- | The main type of event that occurred.
data EventPrimaryEventType

-- | <pre>
--   comment
--   </pre>
EPETComment :: EventPrimaryEventType

-- | <pre>
--   create
--   </pre>
EPETCreate :: EventPrimaryEventType

-- | <pre>
--   edit
--   </pre>
EPETEdit :: EventPrimaryEventType

-- | <pre>
--   emptyTrash
--   </pre>
EPETEmptyTrash :: EventPrimaryEventType

-- | <pre>
--   move
--   </pre>
EPETMove :: EventPrimaryEventType

-- | <pre>
--   permissionChange
--   </pre>
EPETPermissionChange :: EventPrimaryEventType

-- | <pre>
--   rename
--   </pre>
EPETRename :: EventPrimaryEventType

-- | <pre>
--   trash
--   </pre>
EPETTrash :: EventPrimaryEventType

-- | <pre>
--   unknown
--   </pre>
EPETUnknown :: EventPrimaryEventType

-- | <pre>
--   untrash
--   </pre>
EPETUntrash :: EventPrimaryEventType

-- | <pre>
--   upload
--   </pre>
EPETUpload :: EventPrimaryEventType

-- | Represents the changes associated with an action taken by a user.
--   
--   <i>See:</i> <a>event</a> smart constructor.
data Event

-- | Creates a value of <a>Event</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>ePrimaryEventType</a></li>
--   <li><a>eUser</a></li>
--   <li><a>eEventTimeMillis</a></li>
--   <li><a>eRename</a></li>
--   <li><a>eFromUserDeletion</a></li>
--   <li><a>eAdditionalEventTypes</a></li>
--   <li><a>ePermissionChanges</a></li>
--   <li><a>eTarget</a></li>
--   <li><a>eMove</a></li>
--   </ul>
event :: Event

-- | The main type of event that occurred.
ePrimaryEventType :: Lens' Event (Maybe EventPrimaryEventType)

-- | Represents the user responsible for the event.
eUser :: Lens' Event (Maybe User)

-- | The time at which the event occurred formatted as Unix time in
--   milliseconds.
eEventTimeMillis :: Lens' Event (Maybe Word64)

-- | Extra information for rename type events, such as the old and new
--   names.
eRename :: Lens' Event (Maybe Rename)

-- | Whether this event is caused by a user being deleted.
eFromUserDeletion :: Lens' Event (Maybe Bool)

-- | Additional event types. Some events may have multiple types when
--   multiple actions are part of a single event. For example, creating a
--   document, renaming it, and sharing it may be part of a single
--   file-creation event.
eAdditionalEventTypes :: Lens' Event [EventAdditionalEventTypesItem]

-- | Extra information for permissionChange type events, such as the user
--   or group the new permission applies to.
ePermissionChanges :: Lens' Event [PermissionChange]

-- | Information specific to the Target object modified by the event.
eTarget :: Lens' Event (Maybe Target)

-- | Extra information for move type events, such as changes in an object's
--   parents.
eMove :: Lens' Event (Maybe Move)

-- | Indicates the Google Drive permissions role. The role determines a
--   user's ability to read, write, or comment on the file.
data PermissionRole

-- | <pre>
--   commenter
--   </pre>
Commenter :: PermissionRole

-- | <pre>
--   owner
--   </pre>
Owner :: PermissionRole

-- | <pre>
--   reader
--   </pre>
Reader :: PermissionRole

-- | <pre>
--   writer
--   </pre>
Writer :: PermissionRole

-- | The response from the list request. Contains a list of activities and
--   a token to retrieve the next page of results.
--   
--   <i>See:</i> <a>listActivitiesResponse</a> smart constructor.
data ListActivitiesResponse

-- | Creates a value of <a>ListActivitiesResponse</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>larNextPageToken</a></li>
--   <li><a>larActivities</a></li>
--   </ul>
listActivitiesResponse :: ListActivitiesResponse

-- | Token for the next page of results.
larNextPageToken :: Lens' ListActivitiesResponse (Maybe Text)

-- | List of activities.
larActivities :: Lens' ListActivitiesResponse [Activity]

-- | Contains information about a Drive object's permissions that changed
--   as a result of a permissionChange type event.
--   
--   <i>See:</i> <a>permissionChange</a> smart constructor.
data PermissionChange

-- | Creates a value of <a>PermissionChange</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>pcAddedPermissions</a></li>
--   <li><a>pcRemovedPermissions</a></li>
--   </ul>
permissionChange :: PermissionChange

-- | Lists all Permission objects added.
pcAddedPermissions :: Lens' PermissionChange [Permission]

-- | Lists all Permission objects removed.
pcRemovedPermissions :: Lens' PermissionChange [Permission]

-- | Indicates how widely permissions are granted.
data PermissionType

-- | <pre>
--   anyone
--   </pre>
PTAnyone :: PermissionType

-- | <pre>
--   domain
--   </pre>
PTDomain :: PermissionType

-- | <pre>
--   group
--   </pre>
PTGroup :: PermissionType

-- | <pre>
--   user
--   </pre>
PTUser :: PermissionType

-- | A representation of a user.
--   
--   <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>uPhoto</a></li>
--   <li><a>uIsDeleted</a></li>
--   <li><a>uName</a></li>
--   <li><a>uIsMe</a></li>
--   <li><a>uPermissionId</a></li>
--   </ul>
user :: User

-- | The profile photo of the user. Not present if the user has no profile
--   photo.
uPhoto :: Lens' User (Maybe Photo)

-- | A boolean which indicates whether the specified User was deleted. If
--   true, name, photo and permission_id will be omitted.
uIsDeleted :: Lens' User (Maybe Bool)

-- | The displayable name of the user.
uName :: Lens' User (Maybe Text)

-- | Whether the user is the authenticated user.
uIsMe :: Lens' User (Maybe Bool)

-- | The permission ID associated with this user. Equivalent to the Drive
--   API's permission ID for this user, returned as part of the Drive
--   Permissions resource.
uPermissionId :: Lens' User (Maybe Text)
data EventAdditionalEventTypesItem

-- | <pre>
--   comment
--   </pre>
EAETIComment :: EventAdditionalEventTypesItem

-- | <pre>
--   create
--   </pre>
EAETICreate :: EventAdditionalEventTypesItem

-- | <pre>
--   edit
--   </pre>
EAETIEdit :: EventAdditionalEventTypesItem

-- | <pre>
--   emptyTrash
--   </pre>
EAETIEmptyTrash :: EventAdditionalEventTypesItem

-- | <pre>
--   move
--   </pre>
EAETIMove :: EventAdditionalEventTypesItem

-- | <pre>
--   permissionChange
--   </pre>
EAETIPermissionChange :: EventAdditionalEventTypesItem

-- | <pre>
--   rename
--   </pre>
EAETIRename :: EventAdditionalEventTypesItem

-- | <pre>
--   trash
--   </pre>
EAETITrash :: EventAdditionalEventTypesItem

-- | <pre>
--   unknown
--   </pre>
EAETIUnknown :: EventAdditionalEventTypesItem

-- | <pre>
--   untrash
--   </pre>
EAETIUntrash :: EventAdditionalEventTypesItem

-- | <pre>
--   upload
--   </pre>
EAETIUpload :: EventAdditionalEventTypesItem

-- | An Activity resource is a combined view of multiple events. An
--   activity has a list of individual events and a combined view of the
--   common fields among all events.
--   
--   <i>See:</i> <a>activity</a> smart constructor.
data Activity

-- | Creates a value of <a>Activity</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>aSingleEvents</a></li>
--   <li><a>aCombinedEvent</a></li>
--   </ul>
activity :: Activity

-- | A list of all the Events that make up the Activity.
aSingleEvents :: Lens' Activity [Event]

-- | The fields common to all of the singleEvents that make up the
--   Activity.
aCombinedEvent :: Lens' Activity (Maybe Event)

-- | Indicates the strategy to use when grouping singleEvents items in the
--   associated combinedEvent object.
data ActivitiesListGroupingStrategy

-- | <pre>
--   driveUi
--   </pre>
DriveUi :: ActivitiesListGroupingStrategy

-- | <pre>
--   none
--   </pre>
None :: ActivitiesListGroupingStrategy

-- | Contains information about a renametype event.
--   
--   <i>See:</i> <a>rename</a> smart constructor.
data Rename

-- | Creates a value of <a>Rename</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>rNewTitle</a></li>
--   <li><a>rOldTitle</a></li>
--   </ul>
rename :: Rename

-- | The new title.
rNewTitle :: Lens' Rename (Maybe Text)

-- | The old title.
rOldTitle :: Lens' Rename (Maybe Text)

-- | Contains information about the permissions and type of access allowed
--   with regards to a Google Drive object. This is a subset of the fields
--   contained in a corresponding Drive Permissions object.
--   
--   <i>See:</i> <a>permission</a> smart constructor.
data Permission

-- | Creates a value of <a>Permission</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>pWithLink</a></li>
--   <li><a>pUser</a></li>
--   <li><a>pRole</a></li>
--   <li><a>pName</a></li>
--   <li><a>pType</a></li>
--   <li><a>pPermissionId</a></li>
--   </ul>
permission :: Permission

-- | Whether the permission requires a link to the file.
pWithLink :: Lens' Permission (Maybe Bool)

-- | The user's information if the type is USER.
pUser :: Lens' Permission (Maybe User)

-- | Indicates the Google Drive permissions role. The role determines a
--   user's ability to read, write, or comment on the file.
pRole :: Lens' Permission (Maybe PermissionRole)

-- | The name of the user or group the permission applies to.
pName :: Lens' Permission (Maybe Text)

-- | Indicates how widely permissions are granted.
pType :: Lens' Permission (Maybe PermissionType)

-- | The ID for this permission. Corresponds to the Drive API's permission
--   ID returned as part of the Drive Permissions resource.
pPermissionId :: Lens' Permission (Maybe Text)

-- | Information about the object modified by the event.
--   
--   <i>See:</i> <a>target</a> smart constructor.
data Target

-- | Creates a value of <a>Target</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>tMimeType</a></li>
--   <li><a>tName</a></li>
--   <li><a>tId</a></li>
--   </ul>
target :: Target

-- | The MIME type of the target.
tMimeType :: Lens' Target (Maybe Text)

-- | The name of the target. For example, in Google Drive, this is the
--   title of the file.
tName :: Lens' Target (Maybe Text)

-- | The ID of the target. For example, in Google Drive, this is the file
--   or folder ID.
tId :: Lens' Target (Maybe Text)

-- | Contains information about changes in an object's parents as a result
--   of a move type event.
--   
--   <i>See:</i> <a>move</a> smart constructor.
data Move

-- | Creates a value of <a>Move</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>mAddedParents</a></li>
--   <li><a>mRemovedParents</a></li>
--   </ul>
move :: Move

-- | The added parent(s).
mAddedParents :: Lens' Move [Parent]

-- | The removed parent(s).
mRemovedParents :: Lens' Move [Parent]


-- | Returns a list of activities visible to the current logged in user.
--   Visible activities are determined by the visiblity settings of the
--   object that was acted on, e.g. Drive files a user can see. An activity
--   is a record of past events. Multiple events may be merged if they are
--   similar. A request is scoped to activities from a given Google service
--   using the source parameter.
--   
--   <i>See:</i> <a>Google Apps Activity API Reference</a> for
--   <tt>appsactivity.activities.list</tt>.
module Network.Google.Resource.AppsActivity.Activities.List

-- | A resource alias for <tt>appsactivity.activities.list</tt> method
--   which the <a>ActivitiesList</a> request conforms to.
type ActivitiesListResource = "appsactivity" :> ("v1" :> ("activities" :> (QueryParam "drive.fileId" Text :> (QueryParam "drive.ancestorId" Text :> (QueryParam "groupingStrategy" ActivitiesListGroupingStrategy :> (QueryParam "userId" Text :> (QueryParam "source" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ListActivitiesResponse))))))))))

-- | Creates a value of <a>ActivitiesList</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>alDriveFileId</a></li>
--   <li><a>alDriveAncestorId</a></li>
--   <li><a>alGroupingStrategy</a></li>
--   <li><a>alUserId</a></li>
--   <li><a>alSource</a></li>
--   <li><a>alPageToken</a></li>
--   <li><a>alPageSize</a></li>
--   </ul>
activitiesList :: ActivitiesList

-- | Returns a list of activities visible to the current logged in user.
--   Visible activities are determined by the visiblity settings of the
--   object that was acted on, e.g. Drive files a user can see. An activity
--   is a record of past events. Multiple events may be merged if they are
--   similar. A request is scoped to activities from a given Google service
--   using the source parameter.
--   
--   <i>See:</i> <a>activitiesList</a> smart constructor.
data ActivitiesList

-- | Identifies the Drive item to return activities for.
alDriveFileId :: Lens' ActivitiesList (Maybe Text)

-- | Identifies the Drive folder containing the items for which to return
--   activities.
alDriveAncestorId :: Lens' ActivitiesList (Maybe Text)

-- | Indicates the strategy to use when grouping singleEvents items in the
--   associated combinedEvent object.
alGroupingStrategy :: Lens' ActivitiesList ActivitiesListGroupingStrategy

-- | Indicates the user to return activity for. Use the special value me to
--   indicate the currently authenticated user.
alUserId :: Lens' ActivitiesList Text

-- | The Google service from which to return activities. Possible values of
--   source are: - drive.google.com
alSource :: Lens' ActivitiesList (Maybe Text)

-- | A token to retrieve a specific page of results.
alPageToken :: Lens' ActivitiesList (Maybe Text)

-- | The maximum number of events to return on a page. The response
--   includes a continuation token if there are more events.
alPageSize :: Lens' ActivitiesList Int32
instance GHC.Generics.Generic Network.Google.Resource.AppsActivity.Activities.List.ActivitiesList
instance Data.Data.Data Network.Google.Resource.AppsActivity.Activities.List.ActivitiesList
instance GHC.Show.Show Network.Google.Resource.AppsActivity.Activities.List.ActivitiesList
instance GHC.Classes.Eq Network.Google.Resource.AppsActivity.Activities.List.ActivitiesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.AppsActivity.Activities.List.ActivitiesList


-- | Provides a historical view of activity.
--   
--   <i>See:</i> <a>Google Apps Activity API Reference</a>
module Network.Google.AppsActivity

-- | Default request referring to version <tt>v1</tt> of the Google Apps
--   Activity API. This contains the host and root path used as a starting
--   point for constructing service requests.
appsActivityService :: ServiceConfig

-- | View metadata for files in your Google Drive
driveMetadataReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata.readonly"]

-- | View the activity history of your Google Apps
activityScope :: Proxy '["https://www.googleapis.com/auth/activity"]

-- | View the files in your Google Drive
driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]

-- | View and manage the files in your Google Drive
driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]

-- | View and manage metadata of files in your Google Drive
driveMetadataScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata"]

-- | Represents the entirety of the methods and resources available for the
--   Google Apps Activity API service.
type AppsActivityAPI = ActivitiesListResource

-- | Contains information about a parent object. For example, a folder in
--   Drive is a parent for all files within it.
--   
--   <i>See:</i> <a>parent</a> smart constructor.
data Parent

-- | Creates a value of <a>Parent</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>pIsRoot</a></li>
--   <li><a>pId</a></li>
--   <li><a>pTitle</a></li>
--   </ul>
parent :: Parent

-- | Whether this is the root folder.
pIsRoot :: Lens' Parent (Maybe Bool)

-- | The parent's ID.
pId :: Lens' Parent (Maybe Text)

-- | The parent's title.
pTitle :: Lens' Parent (Maybe Text)

-- | Photo information for a user.
--   
--   <i>See:</i> <a>photo</a> smart constructor.
data Photo

-- | Creates a value of <a>Photo</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>pURL</a></li>
--   </ul>
photo :: Photo

-- | The URL of the photo.
pURL :: Lens' Photo (Maybe Text)

-- | The main type of event that occurred.
data EventPrimaryEventType

-- | <pre>
--   comment
--   </pre>
EPETComment :: EventPrimaryEventType

-- | <pre>
--   create
--   </pre>
EPETCreate :: EventPrimaryEventType

-- | <pre>
--   edit
--   </pre>
EPETEdit :: EventPrimaryEventType

-- | <pre>
--   emptyTrash
--   </pre>
EPETEmptyTrash :: EventPrimaryEventType

-- | <pre>
--   move
--   </pre>
EPETMove :: EventPrimaryEventType

-- | <pre>
--   permissionChange
--   </pre>
EPETPermissionChange :: EventPrimaryEventType

-- | <pre>
--   rename
--   </pre>
EPETRename :: EventPrimaryEventType

-- | <pre>
--   trash
--   </pre>
EPETTrash :: EventPrimaryEventType

-- | <pre>
--   unknown
--   </pre>
EPETUnknown :: EventPrimaryEventType

-- | <pre>
--   untrash
--   </pre>
EPETUntrash :: EventPrimaryEventType

-- | <pre>
--   upload
--   </pre>
EPETUpload :: EventPrimaryEventType

-- | Represents the changes associated with an action taken by a user.
--   
--   <i>See:</i> <a>event</a> smart constructor.
data Event

-- | Creates a value of <a>Event</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>ePrimaryEventType</a></li>
--   <li><a>eUser</a></li>
--   <li><a>eEventTimeMillis</a></li>
--   <li><a>eRename</a></li>
--   <li><a>eFromUserDeletion</a></li>
--   <li><a>eAdditionalEventTypes</a></li>
--   <li><a>ePermissionChanges</a></li>
--   <li><a>eTarget</a></li>
--   <li><a>eMove</a></li>
--   </ul>
event :: Event

-- | The main type of event that occurred.
ePrimaryEventType :: Lens' Event (Maybe EventPrimaryEventType)

-- | Represents the user responsible for the event.
eUser :: Lens' Event (Maybe User)

-- | The time at which the event occurred formatted as Unix time in
--   milliseconds.
eEventTimeMillis :: Lens' Event (Maybe Word64)

-- | Extra information for rename type events, such as the old and new
--   names.
eRename :: Lens' Event (Maybe Rename)

-- | Whether this event is caused by a user being deleted.
eFromUserDeletion :: Lens' Event (Maybe Bool)

-- | Additional event types. Some events may have multiple types when
--   multiple actions are part of a single event. For example, creating a
--   document, renaming it, and sharing it may be part of a single
--   file-creation event.
eAdditionalEventTypes :: Lens' Event [EventAdditionalEventTypesItem]

-- | Extra information for permissionChange type events, such as the user
--   or group the new permission applies to.
ePermissionChanges :: Lens' Event [PermissionChange]

-- | Information specific to the Target object modified by the event.
eTarget :: Lens' Event (Maybe Target)

-- | Extra information for move type events, such as changes in an object's
--   parents.
eMove :: Lens' Event (Maybe Move)

-- | Indicates the Google Drive permissions role. The role determines a
--   user's ability to read, write, or comment on the file.
data PermissionRole

-- | <pre>
--   commenter
--   </pre>
Commenter :: PermissionRole

-- | <pre>
--   owner
--   </pre>
Owner :: PermissionRole

-- | <pre>
--   reader
--   </pre>
Reader :: PermissionRole

-- | <pre>
--   writer
--   </pre>
Writer :: PermissionRole

-- | The response from the list request. Contains a list of activities and
--   a token to retrieve the next page of results.
--   
--   <i>See:</i> <a>listActivitiesResponse</a> smart constructor.
data ListActivitiesResponse

-- | Creates a value of <a>ListActivitiesResponse</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>larNextPageToken</a></li>
--   <li><a>larActivities</a></li>
--   </ul>
listActivitiesResponse :: ListActivitiesResponse

-- | Token for the next page of results.
larNextPageToken :: Lens' ListActivitiesResponse (Maybe Text)

-- | List of activities.
larActivities :: Lens' ListActivitiesResponse [Activity]

-- | Contains information about a Drive object's permissions that changed
--   as a result of a permissionChange type event.
--   
--   <i>See:</i> <a>permissionChange</a> smart constructor.
data PermissionChange

-- | Creates a value of <a>PermissionChange</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>pcAddedPermissions</a></li>
--   <li><a>pcRemovedPermissions</a></li>
--   </ul>
permissionChange :: PermissionChange

-- | Lists all Permission objects added.
pcAddedPermissions :: Lens' PermissionChange [Permission]

-- | Lists all Permission objects removed.
pcRemovedPermissions :: Lens' PermissionChange [Permission]

-- | Indicates how widely permissions are granted.
data PermissionType

-- | <pre>
--   anyone
--   </pre>
PTAnyone :: PermissionType

-- | <pre>
--   domain
--   </pre>
PTDomain :: PermissionType

-- | <pre>
--   group
--   </pre>
PTGroup :: PermissionType

-- | <pre>
--   user
--   </pre>
PTUser :: PermissionType

-- | A representation of a user.
--   
--   <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>uPhoto</a></li>
--   <li><a>uIsDeleted</a></li>
--   <li><a>uName</a></li>
--   <li><a>uIsMe</a></li>
--   <li><a>uPermissionId</a></li>
--   </ul>
user :: User

-- | The profile photo of the user. Not present if the user has no profile
--   photo.
uPhoto :: Lens' User (Maybe Photo)

-- | A boolean which indicates whether the specified User was deleted. If
--   true, name, photo and permission_id will be omitted.
uIsDeleted :: Lens' User (Maybe Bool)

-- | The displayable name of the user.
uName :: Lens' User (Maybe Text)

-- | Whether the user is the authenticated user.
uIsMe :: Lens' User (Maybe Bool)

-- | The permission ID associated with this user. Equivalent to the Drive
--   API's permission ID for this user, returned as part of the Drive
--   Permissions resource.
uPermissionId :: Lens' User (Maybe Text)
data EventAdditionalEventTypesItem

-- | <pre>
--   comment
--   </pre>
EAETIComment :: EventAdditionalEventTypesItem

-- | <pre>
--   create
--   </pre>
EAETICreate :: EventAdditionalEventTypesItem

-- | <pre>
--   edit
--   </pre>
EAETIEdit :: EventAdditionalEventTypesItem

-- | <pre>
--   emptyTrash
--   </pre>
EAETIEmptyTrash :: EventAdditionalEventTypesItem

-- | <pre>
--   move
--   </pre>
EAETIMove :: EventAdditionalEventTypesItem

-- | <pre>
--   permissionChange
--   </pre>
EAETIPermissionChange :: EventAdditionalEventTypesItem

-- | <pre>
--   rename
--   </pre>
EAETIRename :: EventAdditionalEventTypesItem

-- | <pre>
--   trash
--   </pre>
EAETITrash :: EventAdditionalEventTypesItem

-- | <pre>
--   unknown
--   </pre>
EAETIUnknown :: EventAdditionalEventTypesItem

-- | <pre>
--   untrash
--   </pre>
EAETIUntrash :: EventAdditionalEventTypesItem

-- | <pre>
--   upload
--   </pre>
EAETIUpload :: EventAdditionalEventTypesItem

-- | An Activity resource is a combined view of multiple events. An
--   activity has a list of individual events and a combined view of the
--   common fields among all events.
--   
--   <i>See:</i> <a>activity</a> smart constructor.
data Activity

-- | Creates a value of <a>Activity</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>aSingleEvents</a></li>
--   <li><a>aCombinedEvent</a></li>
--   </ul>
activity :: Activity

-- | A list of all the Events that make up the Activity.
aSingleEvents :: Lens' Activity [Event]

-- | The fields common to all of the singleEvents that make up the
--   Activity.
aCombinedEvent :: Lens' Activity (Maybe Event)

-- | Indicates the strategy to use when grouping singleEvents items in the
--   associated combinedEvent object.
data ActivitiesListGroupingStrategy

-- | <pre>
--   driveUi
--   </pre>
DriveUi :: ActivitiesListGroupingStrategy

-- | <pre>
--   none
--   </pre>
None :: ActivitiesListGroupingStrategy

-- | Contains information about a renametype event.
--   
--   <i>See:</i> <a>rename</a> smart constructor.
data Rename

-- | Creates a value of <a>Rename</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>rNewTitle</a></li>
--   <li><a>rOldTitle</a></li>
--   </ul>
rename :: Rename

-- | The new title.
rNewTitle :: Lens' Rename (Maybe Text)

-- | The old title.
rOldTitle :: Lens' Rename (Maybe Text)

-- | Contains information about the permissions and type of access allowed
--   with regards to a Google Drive object. This is a subset of the fields
--   contained in a corresponding Drive Permissions object.
--   
--   <i>See:</i> <a>permission</a> smart constructor.
data Permission

-- | Creates a value of <a>Permission</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>pWithLink</a></li>
--   <li><a>pUser</a></li>
--   <li><a>pRole</a></li>
--   <li><a>pName</a></li>
--   <li><a>pType</a></li>
--   <li><a>pPermissionId</a></li>
--   </ul>
permission :: Permission

-- | Whether the permission requires a link to the file.
pWithLink :: Lens' Permission (Maybe Bool)

-- | The user's information if the type is USER.
pUser :: Lens' Permission (Maybe User)

-- | Indicates the Google Drive permissions role. The role determines a
--   user's ability to read, write, or comment on the file.
pRole :: Lens' Permission (Maybe PermissionRole)

-- | The name of the user or group the permission applies to.
pName :: Lens' Permission (Maybe Text)

-- | Indicates how widely permissions are granted.
pType :: Lens' Permission (Maybe PermissionType)

-- | The ID for this permission. Corresponds to the Drive API's permission
--   ID returned as part of the Drive Permissions resource.
pPermissionId :: Lens' Permission (Maybe Text)

-- | Information about the object modified by the event.
--   
--   <i>See:</i> <a>target</a> smart constructor.
data Target

-- | Creates a value of <a>Target</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>tMimeType</a></li>
--   <li><a>tName</a></li>
--   <li><a>tId</a></li>
--   </ul>
target :: Target

-- | The MIME type of the target.
tMimeType :: Lens' Target (Maybe Text)

-- | The name of the target. For example, in Google Drive, this is the
--   title of the file.
tName :: Lens' Target (Maybe Text)

-- | The ID of the target. For example, in Google Drive, this is the file
--   or folder ID.
tId :: Lens' Target (Maybe Text)

-- | Contains information about changes in an object's parents as a result
--   of a move type event.
--   
--   <i>See:</i> <a>move</a> smart constructor.
data Move

-- | Creates a value of <a>Move</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>mAddedParents</a></li>
--   <li><a>mRemovedParents</a></li>
--   </ul>
move :: Move

-- | The added parent(s).
mAddedParents :: Lens' Move [Parent]

-- | The removed parent(s).
mRemovedParents :: Lens' Move [Parent]
