basecamp-sdk 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +127 -8
  3. data/lib/basecamp/client.rb +55 -11
  4. data/lib/basecamp/config.rb +69 -0
  5. data/lib/basecamp/generated/metadata.json +443 -133
  6. data/lib/basecamp/generated/services/base_service.rb +37 -16
  7. data/lib/basecamp/generated/services/bookmarks_service.rb +50 -0
  8. data/lib/basecamp/generated/services/boosts_service.rb +12 -6
  9. data/lib/basecamp/generated/services/calendars_service.rb +30 -0
  10. data/lib/basecamp/generated/services/campfires_service.rb +54 -41
  11. data/lib/basecamp/generated/services/cards_service.rb +6 -3
  12. data/lib/basecamp/generated/services/checkins_service.rb +28 -15
  13. data/lib/basecamp/generated/services/client_approvals_service.rb +8 -5
  14. data/lib/basecamp/generated/services/client_correspondences_service.rb +8 -5
  15. data/lib/basecamp/generated/services/client_replies_service.rb +12 -7
  16. data/lib/basecamp/generated/services/cloud_files_service.rb +57 -0
  17. data/lib/basecamp/generated/services/comments_service.rb +6 -3
  18. data/lib/basecamp/generated/services/documents_service.rb +9 -6
  19. data/lib/basecamp/generated/services/drafts_service.rb +22 -0
  20. data/lib/basecamp/generated/services/events_service.rb +6 -3
  21. data/lib/basecamp/generated/services/everything_service.rb +116 -69
  22. data/lib/basecamp/generated/services/folders_service.rb +62 -0
  23. data/lib/basecamp/generated/services/forwards_service.rb +12 -17
  24. data/lib/basecamp/generated/services/gauges_service.rb +12 -7
  25. data/lib/basecamp/generated/services/google_documents_service.rb +61 -0
  26. data/lib/basecamp/generated/services/message_types_service.rb +4 -3
  27. data/lib/basecamp/generated/services/messages_service.rb +6 -4
  28. data/lib/basecamp/generated/services/my_assignments_service.rb +31 -0
  29. data/lib/basecamp/generated/services/my_notes_service.rb +28 -0
  30. data/lib/basecamp/generated/services/my_notifications_service.rb +8 -5
  31. data/lib/basecamp/generated/services/people_service.rb +17 -10
  32. data/lib/basecamp/generated/services/projects_service.rb +26 -4
  33. data/lib/basecamp/generated/services/recordings_service.rb +6 -13
  34. data/lib/basecamp/generated/services/reports_service.rb +15 -9
  35. data/lib/basecamp/generated/services/schedules_service.rb +90 -16
  36. data/lib/basecamp/generated/services/search_service.rb +6 -4
  37. data/lib/basecamp/generated/services/templates_service.rb +6 -4
  38. data/lib/basecamp/generated/services/timeline_service.rb +6 -3
  39. data/lib/basecamp/generated/services/timesheets_service.rb +22 -8
  40. data/lib/basecamp/generated/services/todolist_groups_service.rb +7 -4
  41. data/lib/basecamp/generated/services/todolists_service.rb +11 -9
  42. data/lib/basecamp/generated/services/todos_service.rb +23 -14
  43. data/lib/basecamp/generated/services/uploads_service.rb +10 -6
  44. data/lib/basecamp/generated/services/vaults_service.rb +6 -3
  45. data/lib/basecamp/generated/services/webhooks_service.rb +4 -3
  46. data/lib/basecamp/generated/types.rb +847 -147
  47. data/lib/basecamp/http.rb +346 -163
  48. data/lib/basecamp/list_enumerator.rb +29 -0
  49. data/lib/basecamp/list_meta.rb +44 -0
  50. data/lib/basecamp/services/cards_extensions.rb +35 -27
  51. data/lib/basecamp/services/documents_extensions.rb +136 -0
  52. data/lib/basecamp/services/merge_safe.rb +255 -0
  53. data/lib/basecamp/services/schedules_extensions.rb +354 -0
  54. data/lib/basecamp/services/todolists_extensions.rb +274 -0
  55. data/lib/basecamp/services/todos_extensions.rb +22 -6
  56. data/lib/basecamp/validation_error.rb +11 -1
  57. data/lib/basecamp/version.rb +2 -2
  58. data/lib/basecamp.rb +94 -4
  59. data/scripts/generate-services.rb +74 -25
  60. data/scripts/generate-types.rb +2 -1
  61. data/scripts/go_type_spellings.rb +26 -0
  62. metadata +16 -2
@@ -7,15 +7,34 @@ module Basecamp
7
7
  # @generated from OpenAPI spec
8
8
  class TodosService < BaseService
9
9
 
10
+ # Create a to-do directly under a project's to-do set, outside any to-do list.
11
+ # @param bucket_id [Integer] bucket id ID
12
+ # @param todoset_id [Integer] todoset id ID
13
+ # @param content [String] content
14
+ # @param description [String, nil] description
15
+ # @param assignee_ids [Array, nil] assignee ids
16
+ # @param completion_subscriber_ids [Array, nil] completion subscriber ids
17
+ # @param notify [Boolean, nil] notify
18
+ # @param due_on [String, nil] due on (YYYY-MM-DD)
19
+ # @param starts_on [String, nil] starts on (YYYY-MM-DD)
20
+ # @return [Hash] response data
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)
22
+ with_operation(service: "todos", operation: "create_todoset_todo", is_mutation: true, project_id: bucket_id, resource_id: todoset_id) do
23
+ 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
24
+ end
25
+ end
26
+
10
27
  # List todos in a todolist
11
28
  # @param todolist_id [Integer] todolist id ID
12
29
  # @param status [String, nil] active|archived|trashed
13
30
  # @param completed [Boolean, nil] completed
14
- # @return [Enumerator<Hash>] paginated results
15
- def list(todolist_id:, status: nil, completed: nil)
31
+ # @param page [Integer, 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.
32
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
33
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
34
+ def list(todolist_id:, status: nil, completed: nil, page: nil, max_items: nil)
16
35
  wrap_paginated(service: "todos", operation: "list", is_mutation: false, resource_id: todolist_id) do
17
- params = compact_query_params(status: status, completed: completed)
18
- paginate("/todolists/#{todolist_id}/todos.json", params: params, operation: "ListTodos")
36
+ params = compact_query_params(status: status, completed: completed, page: page)
37
+ paginate("/todolists/#{todolist_id}/todos.json", params: params, operation: "ListTodos", max_items: max_items)
19
38
  end
20
39
  end
21
40
 
@@ -60,16 +79,6 @@ module Basecamp
60
79
  end
61
80
  end
62
81
 
63
- # Trash a todo (returns 204 No Content)
64
- # @param todo_id [Integer] todo id ID
65
- # @return [void]
66
- def trash(todo_id:)
67
- with_operation(service: "todos", operation: "trash", is_mutation: true, resource_id: todo_id) do
68
- http_delete("/todos/#{todo_id}")
69
- nil
70
- end
71
- end
72
-
73
82
  # Mark a todo as complete
74
83
  # @param todo_id [Integer] todo id ID
75
84
  # @return [void]
@@ -29,19 +29,23 @@ module Basecamp
29
29
 
30
30
  # List versions of an upload
31
31
  # @param upload_id [Integer] upload id ID
32
- # @return [Enumerator<Hash>] paginated results
33
- def list_versions(upload_id:)
32
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
33
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
34
+ def list_versions(upload_id:, max_items: nil)
34
35
  wrap_paginated(service: "uploads", operation: "list_versions", is_mutation: false, resource_id: upload_id) do
35
- paginate("/uploads/#{upload_id}/versions.json", operation: "ListUploadVersions")
36
+ paginate("/uploads/#{upload_id}/versions.json", operation: "ListUploadVersions", max_items: max_items)
36
37
  end
37
38
  end
38
39
 
39
40
  # List uploads in a vault
40
41
  # @param vault_id [Integer] vault id ID
41
- # @return [Enumerator<Hash>] paginated results
42
- def list(vault_id:)
42
+ # @param page [Integer, 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.
43
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
44
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
45
+ def list(vault_id:, page: nil, max_items: nil)
43
46
  wrap_paginated(service: "uploads", operation: "list", is_mutation: false, resource_id: vault_id) do
44
- paginate("/vaults/#{vault_id}/uploads.json", operation: "ListUploads")
47
+ params = compact_query_params(page: page)
48
+ paginate("/vaults/#{vault_id}/uploads.json", params: params, operation: "ListUploads", max_items: max_items)
45
49
  end
46
50
  end
47
51
 
@@ -28,10 +28,13 @@ module Basecamp
28
28
 
29
29
  # List vaults (subfolders) in a vault
30
30
  # @param vault_id [Integer] vault id ID
31
- # @return [Enumerator<Hash>] paginated results
32
- def list(vault_id:)
31
+ # @param page [Integer, 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.
32
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
33
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
34
+ def list(vault_id:, page: nil, max_items: nil)
33
35
  wrap_paginated(service: "vaults", operation: "list", is_mutation: false, resource_id: vault_id) do
34
- paginate("/vaults/#{vault_id}/vaults.json", operation: "ListVaults")
36
+ params = compact_query_params(page: page)
37
+ paginate("/vaults/#{vault_id}/vaults.json", params: params, operation: "ListVaults", max_items: max_items)
35
38
  end
36
39
  end
37
40
 
@@ -9,10 +9,11 @@ module Basecamp
9
9
 
10
10
  # List all webhooks for a project
11
11
  # @param bucket_id [Integer] bucket id ID
12
- # @return [Enumerator<Hash>] paginated results
13
- def list(bucket_id:)
12
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
13
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
14
+ def list(bucket_id:, max_items: nil)
14
15
  wrap_paginated(service: "webhooks", operation: "list", is_mutation: false, project_id: bucket_id) do
15
- paginate("/buckets/#{bucket_id}/webhooks.json", operation: "ListWebhooks")
16
+ paginate("/buckets/#{bucket_id}/webhooks.json", operation: "ListWebhooks", max_items: max_items)
16
17
  end
17
18
  end
18
19