Class: Basecamp::Services::TodosService

Inherits:
BaseService show all
Defined in:
lib/basecamp/generated/services/todos_service.rb

Overview

Service for Todos operations

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from Basecamp::Services::BaseService

Instance Method Details

#complete(todo_id:) ⇒ void

This method returns an undefined value.

Mark a todo as complete

Parameters:

  • todo_id (Integer)

    todo id ID



93
94
95
96
97
98
# File 'lib/basecamp/generated/services/todos_service.rb', line 93

def complete(todo_id:)
  with_operation(service: "todos", operation: "complete", is_mutation: true, resource_id: todo_id) do
    http_post("/todos/#{todo_id}/completion.json")
    nil
  end
end

#create(todolist_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil) ⇒ Hash

Create a new todo in a todolist

Parameters:

  • todolist_id (Integer)

    todolist id ID

  • content (String)

    content

  • description (String, nil) (defaults to: nil)

    description

  • assignee_ids (Array, nil) (defaults to: nil)

    assignee ids

  • completion_subscriber_ids (Array, nil) (defaults to: nil)

    completion subscriber ids

  • notify (Boolean, nil) (defaults to: nil)

    notify

  • due_on (String, nil) (defaults to: nil)

    due on (YYYY-MM-DD)

  • starts_on (String, nil) (defaults to: nil)

    starts on (YYYY-MM-DD)

Returns:

  • (Hash)

    response data



49
50
51
52
53
# File 'lib/basecamp/generated/services/todos_service.rb', line 49

def create(todolist_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil)
  with_operation(service: "todos", operation: "create", is_mutation: true, resource_id: todolist_id) do
    http_post("/todolists/#{todolist_id}/todos.json", body: compact_params(content: content, description: description, assignee_ids: assignee_ids, completion_subscriber_ids: completion_subscriber_ids, notify: notify, due_on: due_on, starts_on: starts_on)).json
  end
end

#create_todoset_todo(bucket_id:, todoset_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil) ⇒ Hash

Create a to-do directly under a project's to-do set, outside any to-do list.

Parameters:

  • bucket_id (Integer)

    bucket id ID

  • todoset_id (Integer)

    todoset id ID

  • content (String)

    content

  • description (String, nil) (defaults to: nil)

    description

  • assignee_ids (Array, nil) (defaults to: nil)

    assignee ids

  • completion_subscriber_ids (Array, nil) (defaults to: nil)

    completion subscriber ids

  • notify (Boolean, nil) (defaults to: nil)

    notify

  • due_on (String, nil) (defaults to: nil)

    due on (YYYY-MM-DD)

  • starts_on (String, nil) (defaults to: nil)

    starts on (YYYY-MM-DD)

Returns:

  • (Hash)

    response data



21
22
23
24
25
# File 'lib/basecamp/generated/services/todos_service.rb', line 21

def create_todoset_todo(bucket_id:, todoset_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil)
  with_operation(service: "todos", operation: "create_todoset_todo", is_mutation: true, project_id: bucket_id, resource_id: todoset_id) do
    http_post("/buckets/#{bucket_id}/todosets/#{todoset_id}/todos.json", body: compact_params(content: content, description: description, assignee_ids: assignee_ids, completion_subscriber_ids: completion_subscriber_ids, notify: notify, due_on: due_on, starts_on: starts_on)).json
  end
end

#get(todo_id:) ⇒ Hash

Get a single todo by id

Parameters:

  • todo_id (Integer)

    todo id ID

Returns:

  • (Hash)

    response data



58
59
60
61
62
# File 'lib/basecamp/generated/services/todos_service.rb', line 58

def get(todo_id:)
  with_operation(service: "todos", operation: "get", is_mutation: false, resource_id: todo_id) do
    http_get("/todos/#{todo_id}", operation: "GetTodo").json
  end
end

#list(todolist_id:, status: nil, completed: nil) ⇒ Enumerator<Hash>

List todos in a todolist

Parameters:

  • todolist_id (Integer)

    todolist id ID

  • status (String, nil) (defaults to: nil)

    active|archived|trashed

  • completed (Boolean, nil) (defaults to: nil)

    completed

Returns:

  • (Enumerator<Hash>)

    paginated results



32
33
34
35
36
37
# File 'lib/basecamp/generated/services/todos_service.rb', line 32

def list(todolist_id:, status: nil, completed: nil)
  wrap_paginated(service: "todos", operation: "list", is_mutation: false, resource_id: todolist_id) do
    params = compact_query_params(status: status, completed: completed)
    paginate("/todolists/#{todolist_id}/todos.json", params: params, operation: "ListTodos")
  end
end

#replace(todo_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil) ⇒ Hash

Replace a todo with a new complete representation.

Parameters:

  • todo_id (Integer)

    todo id ID

  • content (String)

    content

  • description (String, nil) (defaults to: nil)

    description

  • assignee_ids (Array, nil) (defaults to: nil)

    assignee ids

  • completion_subscriber_ids (Array, nil) (defaults to: nil)

    completion subscriber ids

  • notify (Boolean, nil) (defaults to: nil)

    notify

  • due_on (String, nil) (defaults to: nil)

    due on (YYYY-MM-DD)

  • starts_on (String, nil) (defaults to: nil)

    starts on (YYYY-MM-DD)

Returns:

  • (Hash)

    response data



74
75
76
77
78
# File 'lib/basecamp/generated/services/todos_service.rb', line 74

def replace(todo_id:, content:, description: nil, assignee_ids: nil, completion_subscriber_ids: nil, notify: nil, due_on: nil, starts_on: nil)
  with_operation(service: "todos", operation: "replace", is_mutation: true, resource_id: todo_id) do
    http_put("/todos/#{todo_id}", body: compact_params(content: content, description: description, assignee_ids: assignee_ids, completion_subscriber_ids: completion_subscriber_ids, notify: notify, due_on: due_on, starts_on: starts_on)).json
  end
end

#reposition(todo_id:, position:, parent_id: nil) ⇒ void

This method returns an undefined value.

Reposition a todo within its todolist

Parameters:

  • todo_id (Integer)

    todo id ID

  • position (Integer)

    position

  • parent_id (Integer, nil) (defaults to: nil)

    Optional todolist ID to move the todo to a different parent



115
116
117
118
119
120
# File 'lib/basecamp/generated/services/todos_service.rb', line 115

def reposition(todo_id:, position:, parent_id: nil)
  with_operation(service: "todos", operation: "reposition", is_mutation: true, resource_id: todo_id) do
    http_put("/todos/#{todo_id}/position.json", body: compact_params(position: position, parent_id: parent_id))
    nil
  end
end

#trash(todo_id:) ⇒ void

This method returns an undefined value.

Trash a todo (returns 204 No Content)

Parameters:

  • todo_id (Integer)

    todo id ID



83
84
85
86
87
88
# File 'lib/basecamp/generated/services/todos_service.rb', line 83

def trash(todo_id:)
  with_operation(service: "todos", operation: "trash", is_mutation: true, resource_id: todo_id) do
    http_delete("/todos/#{todo_id}")
    nil
  end
end

#uncomplete(todo_id:) ⇒ void

This method returns an undefined value.

Mark a todo as incomplete

Parameters:

  • todo_id (Integer)

    todo id ID



103
104
105
106
107
108
# File 'lib/basecamp/generated/services/todos_service.rb', line 103

def uncomplete(todo_id:)
  with_operation(service: "todos", operation: "uncomplete", is_mutation: true, resource_id: todo_id) do
    http_delete("/todos/#{todo_id}/completion.json")
    nil
  end
end