Class: Basecamp::Services::CheckinsService

Inherits:
BaseService
  • Object
show all
Defined in:
lib/basecamp/generated/services/checkins_service.rb

Overview

Service for Checkins operations

Instance Method Summary collapse

Constructor Details

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

Instance Method Details

#answerers(question_id:, max_items: nil) ⇒ ListEnumerator<Hash>

List all people who have answered a question (answerers)

Parameters:

  • question_id (Integer)

    question id ID

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

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



123
124
125
126
127
# File 'lib/basecamp/generated/services/checkins_service.rb', line 123

def answerers(question_id:, max_items: nil)
  wrap_paginated(service: "checkins", operation: "answerers", is_mutation: false, resource_id: question_id) do
    paginate("/questions/#{question_id}/answers/by.json", operation: "ListQuestionAnswerers", max_items: max_items)
  end
end

#by_person(question_id:, person_id:, page: nil, max_items: nil) ⇒ ListEnumerator<Hash>

Get all answers from a specific person for a question

Parameters:

  • question_id (Integer)

    question id ID

  • person_id (Integer)

    person id ID

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

    Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.

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

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



135
136
137
138
139
140
# File 'lib/basecamp/generated/services/checkins_service.rb', line 135

def by_person(question_id:, person_id:, page: nil, max_items: nil)
  wrap_paginated(service: "checkins", operation: "by_person", is_mutation: false, resource_id: person_id) do
    params = compact_query_params(page: page)
    paginate("/questions/#{question_id}/answers/by/#{person_id}", params: params, operation: "GetAnswersByPerson", max_items: max_items)
  end
end

#create_answer(question_id:, content:, group_on: nil) ⇒ Hash

Create a new answer for a question

Parameters:

  • question_id (Integer)

    question id ID

  • content (String)

    content

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

    group on (YYYY-MM-DD)

Returns:

  • (Hash)

    response data



113
114
115
116
117
# File 'lib/basecamp/generated/services/checkins_service.rb', line 113

def create_answer(question_id:, content:, group_on: nil)
  with_operation(service: "checkins", operation: "create_answer", is_mutation: true, resource_id: question_id) do
    http_post("/questions/#{question_id}/answers.json", body: compact_params(content: content, group_on: group_on)).json
  end
end

#create_question(questionnaire_id:, title:, schedule:, visible_to_clients: nil) ⇒ Hash

Create a new question in a questionnaire

Parameters:

  • questionnaire_id (Integer)

    questionnaire id ID

  • title (String)

    title

  • schedule (Hash)

    schedule

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

    visible to clients

Returns:

  • (Hash)

    response data



69
70
71
72
73
# File 'lib/basecamp/generated/services/checkins_service.rb', line 69

def create_question(questionnaire_id:, title:, schedule:, visible_to_clients: nil)
  with_operation(service: "checkins", operation: "create_question", is_mutation: true, resource_id: questionnaire_id) do
    http_post("/questionnaires/#{questionnaire_id}/questions.json", body: compact_params(title: title, schedule: schedule, visible_to_clients: visible_to_clients)).json
  end
end

#get_answer(answer_id:) ⇒ Hash

Get a single answer by id

Parameters:

  • answer_id (Integer)

    answer id ID

Returns:

  • (Hash)

    response data



24
25
26
27
28
# File 'lib/basecamp/generated/services/checkins_service.rb', line 24

def get_answer(answer_id:)
  with_operation(service: "checkins", operation: "get_answer", is_mutation: false, resource_id: answer_id) do
    http_get("/question_answers/#{answer_id}", operation: "GetAnswer").json
  end
end

#get_question(question_id:) ⇒ Hash

Get a single question by id

Parameters:

  • question_id (Integer)

    question id ID

Returns:

  • (Hash)

    response data



78
79
80
81
82
# File 'lib/basecamp/generated/services/checkins_service.rb', line 78

def get_question(question_id:)
  with_operation(service: "checkins", operation: "get_question", is_mutation: false, resource_id: question_id) do
    http_get("/questions/#{question_id}", operation: "GetQuestion").json
  end
end

#get_questionnaire(questionnaire_id:) ⇒ Hash

Get a questionnaire (automatic check-ins container) by id

Parameters:

  • questionnaire_id (Integer)

    questionnaire id ID

Returns:

  • (Hash)

    response data



45
46
47
48
49
# File 'lib/basecamp/generated/services/checkins_service.rb', line 45

def get_questionnaire(questionnaire_id:)
  with_operation(service: "checkins", operation: "get_questionnaire", is_mutation: false, resource_id: questionnaire_id) do
    http_get("/questionnaires/#{questionnaire_id}", operation: "GetQuestionnaire").json
  end
end

#list_answers(question_id:, page: nil, max_items: nil) ⇒ ListEnumerator<Hash>

List all answers for a question

Parameters:

  • question_id (Integer)

    question id ID

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

    Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.

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

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



101
102
103
104
105
106
# File 'lib/basecamp/generated/services/checkins_service.rb', line 101

def list_answers(question_id:, page: nil, max_items: nil)
  wrap_paginated(service: "checkins", operation: "list_answers", is_mutation: false, resource_id: question_id) do
    params = compact_query_params(page: page)
    paginate("/questions/#{question_id}/answers.json", params: params, operation: "ListAnswers", max_items: max_items)
  end
end

#list_questions(questionnaire_id:, page: nil, max_items: nil) ⇒ ListEnumerator<Hash>

List all questions in a questionnaire

Parameters:

  • questionnaire_id (Integer)

    questionnaire id ID

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

    Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.

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

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



56
57
58
59
60
61
# File 'lib/basecamp/generated/services/checkins_service.rb', line 56

def list_questions(questionnaire_id:, page: nil, max_items: nil)
  wrap_paginated(service: "checkins", operation: "list_questions", is_mutation: false, resource_id: questionnaire_id) do
    params = compact_query_params(page: page)
    paginate("/questionnaires/#{questionnaire_id}/questions.json", params: params, operation: "ListQuestions", max_items: max_items)
  end
end

#pause(question_id:) ⇒ Hash

Pause a check-in question (stops sending reminders)

Parameters:

  • question_id (Integer)

    question id ID

Returns:

  • (Hash)

    response data



156
157
158
159
160
# File 'lib/basecamp/generated/services/checkins_service.rb', line 156

def pause(question_id:)
  with_operation(service: "checkins", operation: "pause", is_mutation: true, resource_id: question_id) do
    http_post("/questions/#{question_id}/pause.json").json
  end
end

#reminders(page: nil, max_items: nil) ⇒ ListEnumerator<Hash>

Get pending check-in reminders for the current user

Parameters:

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

    Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.

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

    cap on items yielded across pages; nil or non-positive means no cap

Returns:

  • (ListEnumerator<Hash>)

    lazily paginated results (#meta carries pagination metadata)



14
15
16
17
18
19
# File 'lib/basecamp/generated/services/checkins_service.rb', line 14

def reminders(page: nil, max_items: nil)
  wrap_paginated(service: "checkins", operation: "reminders", is_mutation: false) do
    params = compact_query_params(page: page)
    paginate("/my/question_reminders.json", params: params, operation: "GetQuestionReminders", max_items: max_items)
  end
end

#resume(question_id:) ⇒ Hash

Resume a paused check-in question (resumes sending reminders)

Parameters:

  • question_id (Integer)

    question id ID

Returns:

  • (Hash)

    response data



165
166
167
168
169
# File 'lib/basecamp/generated/services/checkins_service.rb', line 165

def resume(question_id:)
  with_operation(service: "checkins", operation: "resume", is_mutation: true, resource_id: question_id) do
    http_delete("/questions/#{question_id}/pause.json").json
  end
end

#update_answer(answer_id:, content:, group_on: nil) ⇒ void

This method returns an undefined value.

Update an existing answer

Parameters:

  • answer_id (Integer)

    answer id ID

  • content (String)

    content

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

    group on (YYYY-MM-DD)



35
36
37
38
39
40
# File 'lib/basecamp/generated/services/checkins_service.rb', line 35

def update_answer(answer_id:, content:, group_on: nil)
  with_operation(service: "checkins", operation: "update_answer", is_mutation: true, resource_id: answer_id) do
    http_put("/question_answers/#{answer_id}", body: compact_params(content: content, group_on: group_on))
    nil
  end
end

#update_notification_settings(question_id:, notify_on_answer: nil, digest_include_unanswered: nil) ⇒ Hash

Update notification settings for a check-in question

Parameters:

  • question_id (Integer)

    question id ID

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

    Notify when someone answers

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

    Include unanswered in digest

Returns:

  • (Hash)

    response data



147
148
149
150
151
# File 'lib/basecamp/generated/services/checkins_service.rb', line 147

def update_notification_settings(question_id:, notify_on_answer: nil, digest_include_unanswered: nil)
  with_operation(service: "checkins", operation: "update_notification_settings", is_mutation: true, resource_id: question_id) do
    http_put("/questions/#{question_id}/notification_settings.json", body: compact_params(notify_on_answer: notify_on_answer, digest_include_unanswered: digest_include_unanswered)).json
  end
end

#update_question(question_id:, title: nil, schedule: nil, paused: nil) ⇒ Hash

Update an existing question

Parameters:

  • question_id (Integer)

    question id ID

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

    title

  • schedule (Hash, nil) (defaults to: nil)

    schedule

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

    paused

Returns:

  • (Hash)

    response data



90
91
92
93
94
# File 'lib/basecamp/generated/services/checkins_service.rb', line 90

def update_question(question_id:, title: nil, schedule: nil, paused: nil)
  with_operation(service: "checkins", operation: "update_question", is_mutation: true, resource_id: question_id) do
    http_put("/questions/#{question_id}", body: compact_params(title: title, schedule: schedule, paused: paused)).json
  end
end