Class: Basecamp::Services::ReportsService

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

Overview

Service for Reports operations

Instance Method Summary collapse

Constructor Details

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

Instance Method Details

#assigned(person_id:, group_by: nil) ⇒ Hash

Get todos assigned to a specific person

Parameters:

  • person_id (Integer)

    person id ID

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

    Group by "bucket" or "date"

Returns:

  • (Hash)

    response data



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

def assigned(person_id:, group_by: nil)
  with_operation(service: "reports", operation: "assigned", is_mutation: false, resource_id: person_id) do
    http_get("/reports/todos/assigned/#{person_id}", params: compact_query_params(group_by: group_by), operation: "GetAssignedTodos").json
  end
end

#overdueHash

Get overdue todos grouped by lateness

Returns:

  • (Hash)

    response data



43
44
45
46
47
# File 'lib/basecamp/generated/services/reports_service.rb', line 43

def overdue()
  with_operation(service: "reports", operation: "overdue", is_mutation: false) do
    http_get("/reports/todos/overdue.json", operation: "GetOverdueTodos").json
  end
end

#person_progress(person_id:, page: nil, max_items: nil) ⇒ Hash

Get a person's activity timeline

Parameters:

  • 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:

  • (Hash)

    wrapper fields merged with a ListEnumerator of the paginated items



54
55
56
57
58
59
# File 'lib/basecamp/generated/services/reports_service.rb', line 54

def person_progress(person_id:, page: nil, max_items: nil)
  wrap_paginated_wrapped(key: "events", service: "reports", operation: "person_progress", is_mutation: false, resource_id: person_id) do
    params = compact_query_params(page: page)
    paginate_wrapped("/reports/users/progress/#{person_id}.json", key: "events", params: params, operation: "GetPersonProgress", max_items: max_items)
  end
end

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

Get account-wide activity feed (progress report)

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/reports_service.rb', line 14

def progress(page: nil, max_items: nil)
  wrap_paginated(service: "reports", operation: "progress", is_mutation: false) do
    params = compact_query_params(page: page)
    paginate("/reports/progress.json", params: params, operation: "GetProgressReport", max_items: max_items)
  end
end

#upcoming(window_starts_on:, window_ends_on:) ⇒ Hash

Get upcoming schedule entries and assignable items within a date window.

Parameters:

  • window_starts_on (String)

    Inclusive first day of the window, YYYY-MM-DD. Required — BC3 answers 400 without it.

  • window_ends_on (String)

    Inclusive last day of the window, YYYY-MM-DD. Required — BC3 answers 400 without it.

Returns:

  • (Hash)

    response data



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

def upcoming(window_starts_on:, window_ends_on:)
  with_operation(service: "reports", operation: "upcoming", is_mutation: false) do
    http_get("/reports/schedules/upcoming.json", params: compact_query_params(window_starts_on: window_starts_on, window_ends_on: window_ends_on), operation: "GetUpcomingSchedule").json
  end
end