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


-- | Google Tasks SDK.
--   
--   Lets you manage your tasks and task lists.
--   
--   <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-tasks
@version 0.3.0


module Network.Google.AppsTasks.Types

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

-- | View your tasks
tasksReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/tasks.readonly"]

-- | Manage your tasks
tasksScope :: Proxy '["https://www.googleapis.com/auth/tasks"]
data TaskLinksItem

-- | Creates a value of <a>TaskLinksItem</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>tliLink</a></li>
--   <li><a>tliType</a></li>
--   <li><a>tliDescription</a></li>
--   </ul>
taskLinksItem :: TaskLinksItem

-- | The URL.
tliLink :: Lens' TaskLinksItem (Maybe Text)

-- | Type of the link, e.g. "email".
tliType :: Lens' TaskLinksItem (Maybe Text)

-- | The description. In HTML speak: Everything between and.
tliDescription :: Lens' TaskLinksItem (Maybe Text)
data Tasks

-- | Creates a value of <a>Tasks</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>tNextPageToken</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tasks :: Tasks

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

-- | Token used to access the next page of this result.
tNextPageToken :: Lens' Tasks (Maybe Text)

-- | Type of the resource. This is always "tasks#tasks".
tKind :: Lens' Tasks Text

-- | Collection of tasks.
tItems :: Lens' Tasks [Task]
data TaskLists

-- | Creates a value of <a>TaskLists</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>tlEtag</a></li>
--   <li><a>tlNextPageToken</a></li>
--   <li><a>tlKind</a></li>
--   <li><a>tlItems</a></li>
--   </ul>
taskLists :: TaskLists

-- | ETag of the resource.
tlEtag :: Lens' TaskLists (Maybe Text)

-- | Token that can be used to request the next page of this result.
tlNextPageToken :: Lens' TaskLists (Maybe Text)

-- | Type of the resource. This is always "tasks#taskLists".
tlKind :: Lens' TaskLists Text

-- | Collection of task lists.
tlItems :: Lens' TaskLists [TaskList]
data TaskList

-- | Creates a value of <a>TaskList</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>tasEtag</a></li>
--   <li><a>tasKind</a></li>
--   <li><a>tasSelfLink</a></li>
--   <li><a>tasId</a></li>
--   <li><a>tasUpdated</a></li>
--   <li><a>tasTitle</a></li>
--   </ul>
taskList :: TaskList

-- | ETag of the resource.
tasEtag :: Lens' TaskList (Maybe Text)

-- | Type of the resource. This is always "tasks#taskList".
tasKind :: Lens' TaskList Text

-- | URL pointing to this task list. Used to retrieve, update, or delete
--   this task list.
tasSelfLink :: Lens' TaskList (Maybe Text)

-- | Task list identifier.
tasId :: Lens' TaskList (Maybe Text)

-- | Last modification time of the task list (as a RFC 3339 timestamp).
tasUpdated :: Lens' TaskList (Maybe UTCTime)

-- | Title of the task list.
tasTitle :: Lens' TaskList (Maybe Text)
data Task

-- | Creates a value of <a>Task</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>ttParent</a></li>
--   <li><a>ttStatus</a></li>
--   <li><a>ttDue</a></li>
--   <li><a>ttEtag</a></li>
--   <li><a>ttKind</a></li>
--   <li><a>ttSelfLink</a></li>
--   <li><a>ttHidden</a></li>
--   <li><a>ttCompleted</a></li>
--   <li><a>ttId</a></li>
--   <li><a>ttDeleted</a></li>
--   <li><a>ttUpdated</a></li>
--   <li><a>ttTitle</a></li>
--   <li><a>ttLinks</a></li>
--   <li><a>ttNotes</a></li>
--   <li><a>ttPosition</a></li>
--   </ul>
task :: Task

-- | Parent task identifier. This field is omitted if it is a top-level
--   task. This field is read-only. Use the "move" method to move the task
--   under a different parent or to the top level.
ttParent :: Lens' Task (Maybe Text)

-- | Status of the task. This is either "needsAction" or "completed".
ttStatus :: Lens' Task (Maybe Text)

-- | Due date of the task (as a RFC 3339 timestamp). Optional.
ttDue :: Lens' Task (Maybe UTCTime)

-- | ETag of the resource.
ttEtag :: Lens' Task (Maybe Text)

-- | Type of the resource. This is always "tasks#task".
ttKind :: Lens' Task Text

-- | URL pointing to this task. Used to retrieve, update, or delete this
--   task.
ttSelfLink :: Lens' Task (Maybe 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.
ttHidden :: Lens' Task (Maybe Bool)

-- | Completion date of the task (as a RFC 3339 timestamp). This field is
--   omitted if the task has not been completed.
ttCompleted :: Lens' Task (Maybe UTCTime)

-- | Task identifier.
ttId :: Lens' Task (Maybe Text)

-- | Flag indicating whether the task has been deleted. The default if
--   False.
ttDeleted :: Lens' Task (Maybe Bool)

-- | Last modification time of the task (as a RFC 3339 timestamp).
ttUpdated :: Lens' Task (Maybe UTCTime)

-- | Title of the task.
ttTitle :: Lens' Task (Maybe Text)

-- | Collection of links. This collection is read-only.
ttLinks :: Lens' Task [TaskLinksItem]

-- | Notes describing the task. Optional.
ttNotes :: Lens' Task (Maybe Text)

-- | 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). This field is
--   read-only. Use the "move" method to move the task to another position.
ttPosition :: Lens' Task (Maybe Text)


-- | Deletes the authenticated user's specified task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.delete</tt>.
module Network.Google.Resource.Tasks.TaskLists.Delete

-- | A resource alias for <tt>tasks.tasklists.delete</tt> method which the
--   <a>TaskListsDelete</a> request conforms to.
type TaskListsDeleteResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (Capture "tasklist" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>TaskListsDelete</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>tldTaskList</a></li>
--   </ul>
taskListsDelete :: Text -> TaskListsDelete

-- | Deletes the authenticated user's specified task list.
--   
--   <i>See:</i> <a>taskListsDelete</a> smart constructor.
data TaskListsDelete

-- | Task list identifier.
tldTaskList :: Lens' TaskListsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.Delete.TaskListsDelete
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.Delete.TaskListsDelete
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.Delete.TaskListsDelete
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.Delete.TaskListsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.Delete.TaskListsDelete


-- | Returns the authenticated user's specified task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.get</tt>.
module Network.Google.Resource.Tasks.TaskLists.Get

-- | A resource alias for <tt>tasks.tasklists.get</tt> method which the
--   <a>TaskListsGet</a> request conforms to.
type TaskListsGetResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (Capture "tasklist" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TaskList))))))

-- | Creates a value of <a>TaskListsGet</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>tlgTaskList</a></li>
--   </ul>
taskListsGet :: Text -> TaskListsGet

-- | Returns the authenticated user's specified task list.
--   
--   <i>See:</i> <a>taskListsGet</a> smart constructor.
data TaskListsGet

-- | Task list identifier.
tlgTaskList :: Lens' TaskListsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.Get.TaskListsGet
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.Get.TaskListsGet
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.Get.TaskListsGet
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.Get.TaskListsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.Get.TaskListsGet


-- | Creates a new task list and adds it to the authenticated user's task
--   lists.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.insert</tt>.
module Network.Google.Resource.Tasks.TaskLists.Insert

-- | A resource alias for <tt>tasks.tasklists.insert</tt> method which the
--   <a>TaskListsInsert</a> request conforms to.
type TaskListsInsertResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TaskList :> Post '[JSON] TaskList))))))

-- | Creates a value of <a>TaskListsInsert</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>tliPayload</a></li>
--   </ul>
taskListsInsert :: TaskList -> TaskListsInsert

-- | Creates a new task list and adds it to the authenticated user's task
--   lists.
--   
--   <i>See:</i> <a>taskListsInsert</a> smart constructor.
data TaskListsInsert

-- | Multipart request metadata.
tliPayload :: Lens' TaskListsInsert TaskList
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.Insert.TaskListsInsert
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.Insert.TaskListsInsert
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.Insert.TaskListsInsert
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.Insert.TaskListsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.Insert.TaskListsInsert


-- | Returns all the authenticated user's task lists.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.list</tt>.
module Network.Google.Resource.Tasks.TaskLists.List

-- | A resource alias for <tt>tasks.tasklists.list</tt> method which the
--   <a>TaskListsList</a> request conforms to.
type TaskListsListResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] TaskLists)))))))

-- | Creates a value of <a>TaskListsList</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>tllPageToken</a></li>
--   <li><a>tllMaxResults</a></li>
--   </ul>
taskListsList :: TaskListsList

-- | Returns all the authenticated user's task lists.
--   
--   <i>See:</i> <a>taskListsList</a> smart constructor.
data TaskListsList

-- | Token specifying the result page to return. Optional.
tllPageToken :: Lens' TaskListsList (Maybe Text)

-- | Maximum number of task lists returned on one page. Optional. The
--   default is 100.
tllMaxResults :: Lens' TaskListsList (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.List.TaskListsList
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.List.TaskListsList
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.List.TaskListsList
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.List.TaskListsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.List.TaskListsList


-- | Updates the authenticated user's specified task list. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.patch</tt>.
module Network.Google.Resource.Tasks.TaskLists.Patch

-- | A resource alias for <tt>tasks.tasklists.patch</tt> method which the
--   <a>TaskListsPatch</a> request conforms to.
type TaskListsPatchResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (Capture "tasklist" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TaskList :> Patch '[JSON] TaskList)))))))

-- | Creates a value of <a>TaskListsPatch</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>tlpPayload</a></li>
--   <li><a>tlpTaskList</a></li>
--   </ul>
taskListsPatch :: TaskList -> Text -> TaskListsPatch

-- | Updates the authenticated user's specified task list. This method
--   supports patch semantics.
--   
--   <i>See:</i> <a>taskListsPatch</a> smart constructor.
data TaskListsPatch

-- | Multipart request metadata.
tlpPayload :: Lens' TaskListsPatch TaskList

-- | Task list identifier.
tlpTaskList :: Lens' TaskListsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.Patch.TaskListsPatch
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.Patch.TaskListsPatch
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.Patch.TaskListsPatch
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.Patch.TaskListsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.Patch.TaskListsPatch


-- | Updates the authenticated user's specified task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasklists.update</tt>.
module Network.Google.Resource.Tasks.TaskLists.Update

-- | A resource alias for <tt>tasks.tasklists.update</tt> method which the
--   <a>TaskListsUpdate</a> request conforms to.
type TaskListsUpdateResource = "tasks" :> ("v1" :> ("users" :> ("@me" :> ("lists" :> (Capture "tasklist" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TaskList :> Put '[JSON] TaskList)))))))

-- | Creates a value of <a>TaskListsUpdate</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>tluPayload</a></li>
--   <li><a>tluTaskList</a></li>
--   </ul>
taskListsUpdate :: TaskList -> Text -> TaskListsUpdate

-- | Updates the authenticated user's specified task list.
--   
--   <i>See:</i> <a>taskListsUpdate</a> smart constructor.
data TaskListsUpdate

-- | Multipart request metadata.
tluPayload :: Lens' TaskListsUpdate TaskList

-- | Task list identifier.
tluTaskList :: Lens' TaskListsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.TaskLists.Update.TaskListsUpdate
instance Data.Data.Data Network.Google.Resource.Tasks.TaskLists.Update.TaskListsUpdate
instance GHC.Show.Show Network.Google.Resource.Tasks.TaskLists.Update.TaskListsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Tasks.TaskLists.Update.TaskListsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.TaskLists.Update.TaskListsUpdate


-- | Clears all completed tasks from the specified task list. The affected
--   tasks will be marked as 'hidden' and no longer be returned by default
--   when retrieving all tasks for a task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for <tt>tasks.tasks.clear</tt>.
module Network.Google.Resource.Tasks.Tasks.Clear

-- | A resource alias for <tt>tasks.tasks.clear</tt> method which the
--   <a>TasksClear</a> request conforms to.
type TasksClearResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("clear" :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))

-- | Creates a value of <a>TasksClear</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>tcTaskList</a></li>
--   </ul>
tasksClear :: Text -> TasksClear

-- | Clears all completed tasks from the specified task list. The affected
--   tasks will be marked as 'hidden' and no longer be returned by default
--   when retrieving all tasks for a task list.
--   
--   <i>See:</i> <a>tasksClear</a> smart constructor.
data TasksClear

-- | Task list identifier.
tcTaskList :: Lens' TasksClear Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Clear.TasksClear
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Clear.TasksClear
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Clear.TasksClear
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Clear.TasksClear
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Clear.TasksClear


-- | Deletes the specified task from the task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasks.delete</tt>.
module Network.Google.Resource.Tasks.Tasks.Delete

-- | A resource alias for <tt>tasks.tasks.delete</tt> method which the
--   <a>TasksDelete</a> request conforms to.
type TasksDeleteResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (Capture "task" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>TasksDelete</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>tdTaskList</a></li>
--   <li><a>tdTask</a></li>
--   </ul>
tasksDelete :: Text -> Text -> TasksDelete

-- | Deletes the specified task from the task list.
--   
--   <i>See:</i> <a>tasksDelete</a> smart constructor.
data TasksDelete

-- | Task list identifier.
tdTaskList :: Lens' TasksDelete Text

-- | Task identifier.
tdTask :: Lens' TasksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Delete.TasksDelete
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Delete.TasksDelete
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Delete.TasksDelete
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Delete.TasksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Delete.TasksDelete


-- | Returns the specified task.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for <tt>tasks.tasks.get</tt>.
module Network.Google.Resource.Tasks.Tasks.Get

-- | A resource alias for <tt>tasks.tasks.get</tt> method which the
--   <a>TasksGet</a> request conforms to.
type TasksGetResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (Capture "task" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Task))))))

-- | Creates a value of <a>TasksGet</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>tgTaskList</a></li>
--   <li><a>tgTask</a></li>
--   </ul>
tasksGet :: Text -> Text -> TasksGet

-- | Returns the specified task.
--   
--   <i>See:</i> <a>tasksGet</a> smart constructor.
data TasksGet

-- | Task list identifier.
tgTaskList :: Lens' TasksGet Text

-- | Task identifier.
tgTask :: Lens' TasksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Get.TasksGet
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Get.TasksGet
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Get.TasksGet
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Get.TasksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Get.TasksGet


-- | Creates a new task on the specified task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasks.insert</tt>.
module Network.Google.Resource.Tasks.Tasks.Insert

-- | A resource alias for <tt>tasks.tasks.insert</tt> method which the
--   <a>TasksInsert</a> request conforms to.
type TasksInsertResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (QueryParam "parent" Text :> (QueryParam "previous" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Task :> Post '[JSON] Task))))))))

-- | Creates a value of <a>TasksInsert</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>tiParent</a></li>
--   <li><a>tiPayload</a></li>
--   <li><a>tiTaskList</a></li>
--   <li><a>tiPrevious</a></li>
--   </ul>
tasksInsert :: Task -> Text -> TasksInsert

-- | Creates a new task on the specified task list.
--   
--   <i>See:</i> <a>tasksInsert</a> smart constructor.
data TasksInsert

-- | Parent task identifier. If the task is created at the top level, this
--   parameter is omitted. Optional.
tiParent :: Lens' TasksInsert (Maybe Text)

-- | Multipart request metadata.
tiPayload :: Lens' TasksInsert Task

-- | Task list identifier.
tiTaskList :: Lens' TasksInsert Text

-- | Previous sibling task identifier. If the task is created at the first
--   position among its siblings, this parameter is omitted. Optional.
tiPrevious :: Lens' TasksInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Insert.TasksInsert
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Insert.TasksInsert
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Insert.TasksInsert
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Insert.TasksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Insert.TasksInsert


-- | Returns all tasks in the specified task list.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for <tt>tasks.tasks.list</tt>.
module Network.Google.Resource.Tasks.Tasks.List

-- | A resource alias for <tt>tasks.tasks.list</tt> method which the
--   <a>TasksList</a> request conforms to.
type TasksListResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (QueryParam "dueMax" Text :> (QueryParam "showDeleted" Bool :> (QueryParam "showCompleted" Bool :> (QueryParam "dueMin" Text :> (QueryParam "showHidden" Bool :> (QueryParam "completedMax" Text :> (QueryParam "updatedMin" Text :> (QueryParam "completedMin" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] Tasks)))))))))))))))

-- | Creates a value of <a>TasksList</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>tlDueMax</a></li>
--   <li><a>tlShowDeleted</a></li>
--   <li><a>tlShowCompleted</a></li>
--   <li><a>tlDueMin</a></li>
--   <li><a>tlShowHidden</a></li>
--   <li><a>tlCompletedMax</a></li>
--   <li><a>tlUpdatedMin</a></li>
--   <li><a>tlTaskList</a></li>
--   <li><a>tlCompletedMin</a></li>
--   <li><a>tlPageToken</a></li>
--   <li><a>tlMaxResults</a></li>
--   </ul>
tasksList :: Text -> TasksList

-- | Returns all tasks in the specified task list.
--   
--   <i>See:</i> <a>tasksList</a> smart constructor.
data TasksList

-- | Upper bound for a task's due date (as a RFC 3339 timestamp) to filter
--   by. Optional. The default is not to filter by due date.
tlDueMax :: Lens' TasksList (Maybe Text)

-- | Flag indicating whether deleted tasks are returned in the result.
--   Optional. The default is False.
tlShowDeleted :: Lens' TasksList (Maybe Bool)

-- | Flag indicating whether completed tasks are returned in the result.
--   Optional. The default is True.
tlShowCompleted :: Lens' TasksList (Maybe Bool)

-- | Lower bound for a task's due date (as a RFC 3339 timestamp) to filter
--   by. Optional. The default is not to filter by due date.
tlDueMin :: Lens' TasksList (Maybe Text)

-- | Flag indicating whether hidden tasks are returned in the result.
--   Optional. The default is False.
tlShowHidden :: Lens' TasksList (Maybe Bool)

-- | Upper bound for a task's completion date (as a RFC 3339 timestamp) to
--   filter by. Optional. The default is not to filter by completion date.
tlCompletedMax :: Lens' TasksList (Maybe Text)

-- | Lower bound for a task's last modification time (as a RFC 3339
--   timestamp) to filter by. Optional. The default is not to filter by
--   last modification time.
tlUpdatedMin :: Lens' TasksList (Maybe Text)

-- | Task list identifier.
tlTaskList :: Lens' TasksList Text

-- | Lower bound for a task's completion date (as a RFC 3339 timestamp) to
--   filter by. Optional. The default is not to filter by completion date.
tlCompletedMin :: Lens' TasksList (Maybe Text)

-- | Token specifying the result page to return. Optional.
tlPageToken :: Lens' TasksList (Maybe Text)

-- | Maximum number of task lists returned on one page. Optional. The
--   default is 100.
tlMaxResults :: Lens' TasksList (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.List.TasksList
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.List.TasksList
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.List.TasksList
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.List.TasksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.List.TasksList


-- | Moves the specified task to another position in the task list. This
--   can include putting it as a child task under a new parent and/or move
--   it to a different position among its sibling tasks.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for <tt>tasks.tasks.move</tt>.
module Network.Google.Resource.Tasks.Tasks.Move

-- | A resource alias for <tt>tasks.tasks.move</tt> method which the
--   <a>TasksMove</a> request conforms to.
type TasksMoveResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (Capture "task" Text :> ("move" :> (QueryParam "parent" Text :> (QueryParam "previous" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Task)))))))))

-- | Creates a value of <a>TasksMove</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>tmParent</a></li>
--   <li><a>tmTaskList</a></li>
--   <li><a>tmTask</a></li>
--   <li><a>tmPrevious</a></li>
--   </ul>
tasksMove :: Text -> Text -> TasksMove

-- | Moves the specified task to another position in the task list. This
--   can include putting it as a child task under a new parent and/or move
--   it to a different position among its sibling tasks.
--   
--   <i>See:</i> <a>tasksMove</a> smart constructor.
data TasksMove

-- | New parent task identifier. If the task is moved to the top level,
--   this parameter is omitted. Optional.
tmParent :: Lens' TasksMove (Maybe Text)

-- | Task list identifier.
tmTaskList :: Lens' TasksMove Text

-- | Task identifier.
tmTask :: Lens' TasksMove Text

-- | New previous sibling task identifier. If the task is moved to the
--   first position among its siblings, this parameter is omitted.
--   Optional.
tmPrevious :: Lens' TasksMove (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Move.TasksMove
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Move.TasksMove
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Move.TasksMove
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Move.TasksMove
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Move.TasksMove


-- | Updates the specified task. This method supports patch semantics.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for <tt>tasks.tasks.patch</tt>.
module Network.Google.Resource.Tasks.Tasks.Patch

-- | A resource alias for <tt>tasks.tasks.patch</tt> method which the
--   <a>TasksPatch</a> request conforms to.
type TasksPatchResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (Capture "task" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Task :> Patch '[JSON] Task)))))))

-- | Creates a value of <a>TasksPatch</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>tpPayload</a></li>
--   <li><a>tpTaskList</a></li>
--   <li><a>tpTask</a></li>
--   </ul>
tasksPatch :: Task -> Text -> Text -> TasksPatch

-- | Updates the specified task. This method supports patch semantics.
--   
--   <i>See:</i> <a>tasksPatch</a> smart constructor.
data TasksPatch

-- | Multipart request metadata.
tpPayload :: Lens' TasksPatch Task

-- | Task list identifier.
tpTaskList :: Lens' TasksPatch Text

-- | Task identifier.
tpTask :: Lens' TasksPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Patch.TasksPatch
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Patch.TasksPatch
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Patch.TasksPatch
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Patch.TasksPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Patch.TasksPatch


-- | Updates the specified task.
--   
--   <i>See:</i> <a>Tasks API Reference</a> for
--   <tt>tasks.tasks.update</tt>.
module Network.Google.Resource.Tasks.Tasks.Update

-- | A resource alias for <tt>tasks.tasks.update</tt> method which the
--   <a>TasksUpdate</a> request conforms to.
type TasksUpdateResource = "tasks" :> ("v1" :> ("lists" :> (Capture "tasklist" Text :> ("tasks" :> (Capture "task" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Task :> Put '[JSON] Task)))))))

-- | Creates a value of <a>TasksUpdate</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>tuPayload</a></li>
--   <li><a>tuTaskList</a></li>
--   <li><a>tuTask</a></li>
--   </ul>
tasksUpdate :: Task -> Text -> Text -> TasksUpdate

-- | Updates the specified task.
--   
--   <i>See:</i> <a>tasksUpdate</a> smart constructor.
data TasksUpdate

-- | Multipart request metadata.
tuPayload :: Lens' TasksUpdate Task

-- | Task list identifier.
tuTaskList :: Lens' TasksUpdate Text

-- | Task identifier.
tuTask :: Lens' TasksUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Tasks.Tasks.Update.TasksUpdate
instance Data.Data.Data Network.Google.Resource.Tasks.Tasks.Update.TasksUpdate
instance GHC.Show.Show Network.Google.Resource.Tasks.Tasks.Update.TasksUpdate
instance GHC.Classes.Eq Network.Google.Resource.Tasks.Tasks.Update.TasksUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Tasks.Tasks.Update.TasksUpdate


-- | Lets you manage your tasks and task lists.
--   
--   <i>See:</i> <a>Tasks API Reference</a>
module Network.Google.AppsTasks

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

-- | View your tasks
tasksReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/tasks.readonly"]

-- | Manage your tasks
tasksScope :: Proxy '["https://www.googleapis.com/auth/tasks"]

-- | Represents the entirety of the methods and resources available for the
--   Tasks API service.
type AppsTasksAPI = TasksInsertResource :<|> (TasksListResource :<|> (TasksPatchResource :<|> (TasksGetResource :<|> (TasksClearResource :<|> (TasksDeleteResource :<|> (TasksUpdateResource :<|> (TasksMoveResource :<|> (TaskListsInsertResource :<|> (TaskListsListResource :<|> (TaskListsPatchResource :<|> (TaskListsGetResource :<|> (TaskListsDeleteResource :<|> TaskListsUpdateResource))))))))))))
data TaskLinksItem

-- | Creates a value of <a>TaskLinksItem</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>tliLink</a></li>
--   <li><a>tliType</a></li>
--   <li><a>tliDescription</a></li>
--   </ul>
taskLinksItem :: TaskLinksItem

-- | The URL.
tliLink :: Lens' TaskLinksItem (Maybe Text)

-- | Type of the link, e.g. "email".
tliType :: Lens' TaskLinksItem (Maybe Text)

-- | The description. In HTML speak: Everything between and.
tliDescription :: Lens' TaskLinksItem (Maybe Text)
data Tasks

-- | Creates a value of <a>Tasks</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>tNextPageToken</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tasks :: Tasks

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

-- | Token used to access the next page of this result.
tNextPageToken :: Lens' Tasks (Maybe Text)

-- | Type of the resource. This is always "tasks#tasks".
tKind :: Lens' Tasks Text

-- | Collection of tasks.
tItems :: Lens' Tasks [Task]
data TaskLists

-- | Creates a value of <a>TaskLists</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>tlEtag</a></li>
--   <li><a>tlNextPageToken</a></li>
--   <li><a>tlKind</a></li>
--   <li><a>tlItems</a></li>
--   </ul>
taskLists :: TaskLists

-- | ETag of the resource.
tlEtag :: Lens' TaskLists (Maybe Text)

-- | Token that can be used to request the next page of this result.
tlNextPageToken :: Lens' TaskLists (Maybe Text)

-- | Type of the resource. This is always "tasks#taskLists".
tlKind :: Lens' TaskLists Text

-- | Collection of task lists.
tlItems :: Lens' TaskLists [TaskList]
data TaskList

-- | Creates a value of <a>TaskList</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>tasEtag</a></li>
--   <li><a>tasKind</a></li>
--   <li><a>tasSelfLink</a></li>
--   <li><a>tasId</a></li>
--   <li><a>tasUpdated</a></li>
--   <li><a>tasTitle</a></li>
--   </ul>
taskList :: TaskList

-- | ETag of the resource.
tasEtag :: Lens' TaskList (Maybe Text)

-- | Type of the resource. This is always "tasks#taskList".
tasKind :: Lens' TaskList Text

-- | URL pointing to this task list. Used to retrieve, update, or delete
--   this task list.
tasSelfLink :: Lens' TaskList (Maybe Text)

-- | Task list identifier.
tasId :: Lens' TaskList (Maybe Text)

-- | Last modification time of the task list (as a RFC 3339 timestamp).
tasUpdated :: Lens' TaskList (Maybe UTCTime)

-- | Title of the task list.
tasTitle :: Lens' TaskList (Maybe Text)
data Task

-- | Creates a value of <a>Task</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>ttParent</a></li>
--   <li><a>ttStatus</a></li>
--   <li><a>ttDue</a></li>
--   <li><a>ttEtag</a></li>
--   <li><a>ttKind</a></li>
--   <li><a>ttSelfLink</a></li>
--   <li><a>ttHidden</a></li>
--   <li><a>ttCompleted</a></li>
--   <li><a>ttId</a></li>
--   <li><a>ttDeleted</a></li>
--   <li><a>ttUpdated</a></li>
--   <li><a>ttTitle</a></li>
--   <li><a>ttLinks</a></li>
--   <li><a>ttNotes</a></li>
--   <li><a>ttPosition</a></li>
--   </ul>
task :: Task

-- | Parent task identifier. This field is omitted if it is a top-level
--   task. This field is read-only. Use the "move" method to move the task
--   under a different parent or to the top level.
ttParent :: Lens' Task (Maybe Text)

-- | Status of the task. This is either "needsAction" or "completed".
ttStatus :: Lens' Task (Maybe Text)

-- | Due date of the task (as a RFC 3339 timestamp). Optional.
ttDue :: Lens' Task (Maybe UTCTime)

-- | ETag of the resource.
ttEtag :: Lens' Task (Maybe Text)

-- | Type of the resource. This is always "tasks#task".
ttKind :: Lens' Task Text

-- | URL pointing to this task. Used to retrieve, update, or delete this
--   task.
ttSelfLink :: Lens' Task (Maybe 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.
ttHidden :: Lens' Task (Maybe Bool)

-- | Completion date of the task (as a RFC 3339 timestamp). This field is
--   omitted if the task has not been completed.
ttCompleted :: Lens' Task (Maybe UTCTime)

-- | Task identifier.
ttId :: Lens' Task (Maybe Text)

-- | Flag indicating whether the task has been deleted. The default if
--   False.
ttDeleted :: Lens' Task (Maybe Bool)

-- | Last modification time of the task (as a RFC 3339 timestamp).
ttUpdated :: Lens' Task (Maybe UTCTime)

-- | Title of the task.
ttTitle :: Lens' Task (Maybe Text)

-- | Collection of links. This collection is read-only.
ttLinks :: Lens' Task [TaskLinksItem]

-- | Notes describing the task. Optional.
ttNotes :: Lens' Task (Maybe Text)

-- | 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). This field is
--   read-only. Use the "move" method to move the task to another position.
ttPosition :: Lens' Task (Maybe Text)
