{-# LANGUAGE DataKinds #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-duplicate-exports #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- | -- Module : Gogol.AppsTasks.Internal.Product -- Copyright : (c) 2015-2025 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Toni Cebrián -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Gogol.AppsTasks.Internal.Product ( -- * AssignmentInfo AssignmentInfo (..), newAssignmentInfo, -- * DriveResourceInfo DriveResourceInfo (..), newDriveResourceInfo, -- * SpaceInfo SpaceInfo (..), newSpaceInfo, -- * Task Task (..), newTask, -- * Task_LinksItem Task_LinksItem (..), newTask_LinksItem, -- * TaskList TaskList (..), newTaskList, -- * TaskLists TaskLists (..), newTaskLists, -- * Tasks Tasks (..), newTasks, ) where import Gogol.AppsTasks.Internal.Sum import Gogol.Prelude qualified as Core -- | Information about the source of the task assignment (Document, Chat Space). -- -- /See:/ 'newAssignmentInfo' smart constructor. data AssignmentInfo = AssignmentInfo { -- | Output only. Information about the Drive file where this task originates from. Currently, the Drive file can only be a document. This field is read-only. driveResourceInfo :: (Core.Maybe DriveResourceInfo), -- | Output only. An absolute link to the original task in the surface of assignment (Docs, Chat spaces, etc.). linkToTask :: (Core.Maybe Core.Text), -- | Output only. Information about the Chat Space where this task originates from. This field is read-only. spaceInfo :: (Core.Maybe SpaceInfo), -- | Output only. The type of surface this assigned task originates from. Currently limited to DOCUMENT or SPACE. surfaceType :: (Core.Maybe AssignmentInfo_SurfaceType) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'AssignmentInfo' with the minimum fields required to make a request. newAssignmentInfo :: AssignmentInfo newAssignmentInfo = AssignmentInfo { driveResourceInfo = Core.Nothing, linkToTask = Core.Nothing, spaceInfo = Core.Nothing, surfaceType = Core.Nothing } instance Core.FromJSON AssignmentInfo where parseJSON = Core.withObject "AssignmentInfo" ( \o -> AssignmentInfo Core.<$> (o Core..:? "driveResourceInfo") Core.<*> (o Core..:? "linkToTask") Core.<*> (o Core..:? "spaceInfo") Core.<*> (o Core..:? "surfaceType") ) instance Core.ToJSON AssignmentInfo where toJSON AssignmentInfo {..} = Core.object ( Core.catMaybes [ ("driveResourceInfo" Core..=) Core.<$> driveResourceInfo, ("linkToTask" Core..=) Core.<$> linkToTask, ("spaceInfo" Core..=) Core.<$> spaceInfo, ("surfaceType" Core..=) Core.<$> surfaceType ] ) -- | Information about the Drive resource where a task was assigned from (the document, sheet, etc.). -- -- /See:/ 'newDriveResourceInfo' smart constructor. data DriveResourceInfo = DriveResourceInfo { -- | Output only. Identifier of the file in the Drive API. driveFileId :: (Core.Maybe Core.Text), -- | Output only. Resource key required to access files shared via a shared link. Not required for all files. See also developers.google.com\/drive\/api\/guides\/resource-keys. resourceKey :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'DriveResourceInfo' with the minimum fields required to make a request. newDriveResourceInfo :: DriveResourceInfo newDriveResourceInfo = DriveResourceInfo { driveFileId = Core.Nothing, resourceKey = Core.Nothing } instance Core.FromJSON DriveResourceInfo where parseJSON = Core.withObject "DriveResourceInfo" ( \o -> DriveResourceInfo Core.<$> (o Core..:? "driveFileId") Core.<*> (o Core..:? "resourceKey") ) instance Core.ToJSON DriveResourceInfo where toJSON DriveResourceInfo {..} = Core.object ( Core.catMaybes [ ("driveFileId" Core..=) Core.<$> driveFileId, ("resourceKey" Core..=) Core.<$> resourceKey ] ) -- | Information about the Chat Space where a task was assigned from. -- -- /See:/ 'newSpaceInfo' smart constructor. newtype SpaceInfo = SpaceInfo { -- | Output only. The Chat space where this task originates from. The format is \"spaces\/{space}\". space :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'SpaceInfo' with the minimum fields required to make a request. newSpaceInfo :: SpaceInfo newSpaceInfo = SpaceInfo {space = Core.Nothing} instance Core.FromJSON SpaceInfo where parseJSON = Core.withObject "SpaceInfo" (\o -> SpaceInfo Core.<$> (o Core..:? "space")) instance Core.ToJSON SpaceInfo where toJSON SpaceInfo {..} = Core.object (Core.catMaybes [("space" Core..=) Core.<$> space]) -- -- /See:/ 'newTask' smart constructor. data Task = Task { -- | Output only. Context information for assigned tasks. A task can be assigned to a user, currently possible from surfaces like Docs and Chat Spaces. This field is populated for tasks assigned to the current user and identifies where the task was assigned from. This field is read-only. assignmentInfo :: (Core.Maybe AssignmentInfo), -- | Completion date of the task (as a RFC 3339 timestamp). This field is omitted if the task has not been completed. completed :: (Core.Maybe Core.Text), -- | Flag indicating whether the task has been deleted. For assigned tasks this field is read-only. They can only be deleted by calling tasks.delete, in which case both the assigned task and the original task (in Docs or Chat Spaces) are deleted. To delete the assigned task only, navigate to the assignment surface and unassign the task from there. The default is False. deleted :: (Core.Maybe Core.Bool), -- | Due date of the task (as a RFC 3339 timestamp). Optional. The due date only records date information; the time portion of the timestamp is discarded when setting the due date. It isn\'t possible to read or write the time that a task is due via the API. due :: (Core.Maybe Core.Text), -- | ETag of the resource. etag :: (Core.Maybe Core.Text), -- | Flag indicating whether the task is hidden. This is the case if the task had been marked completed when the task list was last cleared. The default is False. This field is read-only. hidden :: (Core.Maybe Core.Bool), -- | Task identifier. id :: (Core.Maybe Core.Text), -- | Output only. Type of the resource. This is always \"tasks#task\". kind :: (Core.Maybe Core.Text), -- | Output only. Collection of links. This collection is read-only. links :: (Core.Maybe [Task_LinksItem]), -- | Notes describing the task. Tasks assigned from Google Docs cannot have notes. Optional. Maximum length allowed: 8192 characters. notes :: (Core.Maybe Core.Text), -- | Output only. Parent task identifier. This field is omitted if it is a top-level task. Use the \"move\" method to move the task under a different parent or to the top level. A parent task can never be an assigned task (from Chat Spaces, Docs). This field is read-only. parent :: (Core.Maybe Core.Text), -- | Output only. String indicating the position of the task among its sibling tasks under the same parent task or at the top level. If this string is greater than another task\'s corresponding position string according to lexicographical ordering, the task is positioned after the other task under the same parent task (or at the top level). Use the \"move\" method to move the task to another position. position :: (Core.Maybe Core.Text), -- | Output only. URL pointing to this task. Used to retrieve, update, or delete this task. selfLink :: (Core.Maybe Core.Text), -- | Status of the task. This is either \"needsAction\" or \"completed\". status :: (Core.Maybe Core.Text), -- | Title of the task. Maximum length allowed: 1024 characters. title :: (Core.Maybe Core.Text), -- | Output only. Last modification time of the task (as a RFC 3339 timestamp). updated :: (Core.Maybe Core.Text), -- | Output only. An absolute link to the task in the Google Tasks Web UI. webViewLink :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Task' with the minimum fields required to make a request. newTask :: Task newTask = Task { assignmentInfo = Core.Nothing, completed = Core.Nothing, deleted = Core.Nothing, due = Core.Nothing, etag = Core.Nothing, hidden = Core.Nothing, id = Core.Nothing, kind = Core.Nothing, links = Core.Nothing, notes = Core.Nothing, parent = Core.Nothing, position = Core.Nothing, selfLink = Core.Nothing, status = Core.Nothing, title = Core.Nothing, updated = Core.Nothing, webViewLink = Core.Nothing } instance Core.FromJSON Task where parseJSON = Core.withObject "Task" ( \o -> Task Core.<$> (o Core..:? "assignmentInfo") Core.<*> (o Core..:? "completed") Core.<*> (o Core..:? "deleted") Core.<*> (o Core..:? "due") Core.<*> (o Core..:? "etag") Core.<*> (o Core..:? "hidden") Core.<*> (o Core..:? "id") Core.<*> (o Core..:? "kind") Core.<*> (o Core..:? "links") Core.<*> (o Core..:? "notes") Core.<*> (o Core..:? "parent") Core.<*> (o Core..:? "position") Core.<*> (o Core..:? "selfLink") Core.<*> (o Core..:? "status") Core.<*> (o Core..:? "title") Core.<*> (o Core..:? "updated") Core.<*> (o Core..:? "webViewLink") ) instance Core.ToJSON Task where toJSON Task {..} = Core.object ( Core.catMaybes [ ("assignmentInfo" Core..=) Core.<$> assignmentInfo, ("completed" Core..=) Core.<$> completed, ("deleted" Core..=) Core.<$> deleted, ("due" Core..=) Core.<$> due, ("etag" Core..=) Core.<$> etag, ("hidden" Core..=) Core.<$> hidden, ("id" Core..=) Core.<$> id, ("kind" Core..=) Core.<$> kind, ("links" Core..=) Core.<$> links, ("notes" Core..=) Core.<$> notes, ("parent" Core..=) Core.<$> parent, ("position" Core..=) Core.<$> position, ("selfLink" Core..=) Core.<$> selfLink, ("status" Core..=) Core.<$> status, ("title" Core..=) Core.<$> title, ("updated" Core..=) Core.<$> updated, ("webViewLink" Core..=) Core.<$> webViewLink ] ) -- -- /See:/ 'newTask_LinksItem' smart constructor. data Task_LinksItem = Task_LinksItem { -- | The description. In HTML speak: Everything between \ and \<\/a>. description :: (Core.Maybe Core.Text), -- | The URL. link :: (Core.Maybe Core.Text), -- | Type of the link, e.g. \"email\". type' :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Task_LinksItem' with the minimum fields required to make a request. newTask_LinksItem :: Task_LinksItem newTask_LinksItem = Task_LinksItem { description = Core.Nothing, link = Core.Nothing, type' = Core.Nothing } instance Core.FromJSON Task_LinksItem where parseJSON = Core.withObject "Task_LinksItem" ( \o -> Task_LinksItem Core.<$> (o Core..:? "description") Core.<*> (o Core..:? "link") Core.<*> (o Core..:? "type") ) instance Core.ToJSON Task_LinksItem where toJSON Task_LinksItem {..} = Core.object ( Core.catMaybes [ ("description" Core..=) Core.<$> description, ("link" Core..=) Core.<$> link, ("type" Core..=) Core.<$> type' ] ) -- -- /See:/ 'newTaskList' smart constructor. data TaskList = TaskList { -- | ETag of the resource. etag :: (Core.Maybe Core.Text), -- | Task list identifier. id :: (Core.Maybe Core.Text), -- | Output only. Type of the resource. This is always \"tasks#taskList\". kind :: (Core.Maybe Core.Text), -- | Output only. URL pointing to this task list. Used to retrieve, update, or delete this task list. selfLink :: (Core.Maybe Core.Text), -- | Title of the task list. Maximum length allowed: 1024 characters. title :: (Core.Maybe Core.Text), -- | Output only. Last modification time of the task list (as a RFC 3339 timestamp). updated :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'TaskList' with the minimum fields required to make a request. newTaskList :: TaskList newTaskList = TaskList { etag = Core.Nothing, id = Core.Nothing, kind = Core.Nothing, selfLink = Core.Nothing, title = Core.Nothing, updated = Core.Nothing } instance Core.FromJSON TaskList where parseJSON = Core.withObject "TaskList" ( \o -> TaskList Core.<$> (o Core..:? "etag") Core.<*> (o Core..:? "id") Core.<*> (o Core..:? "kind") Core.<*> (o Core..:? "selfLink") Core.<*> (o Core..:? "title") Core.<*> (o Core..:? "updated") ) instance Core.ToJSON TaskList where toJSON TaskList {..} = Core.object ( Core.catMaybes [ ("etag" Core..=) Core.<$> etag, ("id" Core..=) Core.<$> id, ("kind" Core..=) Core.<$> kind, ("selfLink" Core..=) Core.<$> selfLink, ("title" Core..=) Core.<$> title, ("updated" Core..=) Core.<$> updated ] ) -- -- /See:/ 'newTaskLists' smart constructor. data TaskLists = TaskLists { -- | ETag of the resource. etag :: (Core.Maybe Core.Text), -- | Collection of task lists. items :: (Core.Maybe [TaskList]), -- | Type of the resource. This is always \"tasks#taskLists\". kind :: (Core.Maybe Core.Text), -- | Token that can be used to request the next page of this result. nextPageToken :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'TaskLists' with the minimum fields required to make a request. newTaskLists :: TaskLists newTaskLists = TaskLists { etag = Core.Nothing, items = Core.Nothing, kind = Core.Nothing, nextPageToken = Core.Nothing } instance Core.FromJSON TaskLists where parseJSON = Core.withObject "TaskLists" ( \o -> TaskLists Core.<$> (o Core..:? "etag") Core.<*> (o Core..:? "items") Core.<*> (o Core..:? "kind") Core.<*> (o Core..:? "nextPageToken") ) instance Core.ToJSON TaskLists where toJSON TaskLists {..} = Core.object ( Core.catMaybes [ ("etag" Core..=) Core.<$> etag, ("items" Core..=) Core.<$> items, ("kind" Core..=) Core.<$> kind, ("nextPageToken" Core..=) Core.<$> nextPageToken ] ) -- -- /See:/ 'newTasks' smart constructor. data Tasks = Tasks { -- | ETag of the resource. etag :: (Core.Maybe Core.Text), -- | Collection of tasks. items :: (Core.Maybe [Task]), -- | Type of the resource. This is always \"tasks#tasks\". kind :: (Core.Maybe Core.Text), -- | Token used to access the next page of this result. nextPageToken :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Tasks' with the minimum fields required to make a request. newTasks :: Tasks newTasks = Tasks { etag = Core.Nothing, items = Core.Nothing, kind = Core.Nothing, nextPageToken = Core.Nothing } instance Core.FromJSON Tasks where parseJSON = Core.withObject "Tasks" ( \o -> Tasks Core.<$> (o Core..:? "etag") Core.<*> (o Core..:? "items") Core.<*> (o Core..:? "kind") Core.<*> (o Core..:? "nextPageToken") ) instance Core.ToJSON Tasks where toJSON Tasks {..} = Core.object ( Core.catMaybes [ ("etag" Core..=) Core.<$> etag, ("items" Core..=) Core.<$> items, ("kind" Core..=) Core.<$> kind, ("nextPageToken" Core..=) Core.<$> nextPageToken ] )