basecamp-sdk 0.2.1

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 (116) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +14 -0
  3. data/.yardopts +6 -0
  4. data/README.md +293 -0
  5. data/Rakefile +26 -0
  6. data/basecamp-sdk.gemspec +46 -0
  7. data/lib/basecamp/auth_strategy.rb +38 -0
  8. data/lib/basecamp/chain_hooks.rb +45 -0
  9. data/lib/basecamp/client.rb +428 -0
  10. data/lib/basecamp/config.rb +143 -0
  11. data/lib/basecamp/errors.rb +289 -0
  12. data/lib/basecamp/generated/metadata.json +2281 -0
  13. data/lib/basecamp/generated/services/attachments_service.rb +24 -0
  14. data/lib/basecamp/generated/services/boosts_service.rb +70 -0
  15. data/lib/basecamp/generated/services/campfires_service.rb +122 -0
  16. data/lib/basecamp/generated/services/card_columns_service.rb +103 -0
  17. data/lib/basecamp/generated/services/card_steps_service.rb +57 -0
  18. data/lib/basecamp/generated/services/card_tables_service.rb +20 -0
  19. data/lib/basecamp/generated/services/cards_service.rb +66 -0
  20. data/lib/basecamp/generated/services/checkins_service.rb +157 -0
  21. data/lib/basecamp/generated/services/client_approvals_service.rb +28 -0
  22. data/lib/basecamp/generated/services/client_correspondences_service.rb +28 -0
  23. data/lib/basecamp/generated/services/client_replies_service.rb +30 -0
  24. data/lib/basecamp/generated/services/client_visibility_service.rb +21 -0
  25. data/lib/basecamp/generated/services/comments_service.rb +49 -0
  26. data/lib/basecamp/generated/services/documents_service.rb +52 -0
  27. data/lib/basecamp/generated/services/events_service.rb +20 -0
  28. data/lib/basecamp/generated/services/forwards_service.rb +67 -0
  29. data/lib/basecamp/generated/services/lineup_service.rb +44 -0
  30. data/lib/basecamp/generated/services/message_boards_service.rb +20 -0
  31. data/lib/basecamp/generated/services/message_types_service.rb +59 -0
  32. data/lib/basecamp/generated/services/messages_service.rb +75 -0
  33. data/lib/basecamp/generated/services/people_service.rb +73 -0
  34. data/lib/basecamp/generated/services/projects_service.rb +63 -0
  35. data/lib/basecamp/generated/services/recordings_service.rb +64 -0
  36. data/lib/basecamp/generated/services/reports_service.rb +56 -0
  37. data/lib/basecamp/generated/services/schedules_service.rb +92 -0
  38. data/lib/basecamp/generated/services/search_service.rb +31 -0
  39. data/lib/basecamp/generated/services/subscriptions_service.rb +50 -0
  40. data/lib/basecamp/generated/services/templates_service.rb +82 -0
  41. data/lib/basecamp/generated/services/timeline_service.rb +20 -0
  42. data/lib/basecamp/generated/services/timesheets_service.rb +81 -0
  43. data/lib/basecamp/generated/services/todolist_groups_service.rb +41 -0
  44. data/lib/basecamp/generated/services/todolists_service.rb +53 -0
  45. data/lib/basecamp/generated/services/todos_service.rb +106 -0
  46. data/lib/basecamp/generated/services/todosets_service.rb +20 -0
  47. data/lib/basecamp/generated/services/tools_service.rb +80 -0
  48. data/lib/basecamp/generated/services/uploads_service.rb +61 -0
  49. data/lib/basecamp/generated/services/vaults_service.rb +49 -0
  50. data/lib/basecamp/generated/services/webhooks_service.rb +63 -0
  51. data/lib/basecamp/generated/types.rb +3196 -0
  52. data/lib/basecamp/hooks.rb +70 -0
  53. data/lib/basecamp/http.rb +440 -0
  54. data/lib/basecamp/logger_hooks.rb +46 -0
  55. data/lib/basecamp/noop_hooks.rb +9 -0
  56. data/lib/basecamp/oauth/discovery.rb +123 -0
  57. data/lib/basecamp/oauth/errors.rb +35 -0
  58. data/lib/basecamp/oauth/exchange.rb +291 -0
  59. data/lib/basecamp/oauth/pkce.rb +68 -0
  60. data/lib/basecamp/oauth/types.rb +133 -0
  61. data/lib/basecamp/oauth.rb +56 -0
  62. data/lib/basecamp/oauth_token_provider.rb +108 -0
  63. data/lib/basecamp/operation_info.rb +17 -0
  64. data/lib/basecamp/request_info.rb +10 -0
  65. data/lib/basecamp/request_result.rb +14 -0
  66. data/lib/basecamp/security.rb +112 -0
  67. data/lib/basecamp/services/attachments_service.rb +33 -0
  68. data/lib/basecamp/services/authorization_service.rb +47 -0
  69. data/lib/basecamp/services/base_service.rb +146 -0
  70. data/lib/basecamp/services/campfires_service.rb +141 -0
  71. data/lib/basecamp/services/card_columns_service.rb +106 -0
  72. data/lib/basecamp/services/card_steps_service.rb +86 -0
  73. data/lib/basecamp/services/card_tables_service.rb +23 -0
  74. data/lib/basecamp/services/cards_service.rb +93 -0
  75. data/lib/basecamp/services/checkins_service.rb +127 -0
  76. data/lib/basecamp/services/client_approvals_service.rb +33 -0
  77. data/lib/basecamp/services/client_correspondences_service.rb +33 -0
  78. data/lib/basecamp/services/client_replies_service.rb +35 -0
  79. data/lib/basecamp/services/comments_service.rb +63 -0
  80. data/lib/basecamp/services/documents_service.rb +74 -0
  81. data/lib/basecamp/services/events_service.rb +27 -0
  82. data/lib/basecamp/services/forwards_service.rb +80 -0
  83. data/lib/basecamp/services/lineup_service.rb +67 -0
  84. data/lib/basecamp/services/message_boards_service.rb +24 -0
  85. data/lib/basecamp/services/message_types_service.rb +79 -0
  86. data/lib/basecamp/services/messages_service.rb +133 -0
  87. data/lib/basecamp/services/people_service.rb +73 -0
  88. data/lib/basecamp/services/projects_service.rb +67 -0
  89. data/lib/basecamp/services/recordings_service.rb +127 -0
  90. data/lib/basecamp/services/reports_service.rb +80 -0
  91. data/lib/basecamp/services/schedules_service.rb +156 -0
  92. data/lib/basecamp/services/search_service.rb +36 -0
  93. data/lib/basecamp/services/subscriptions_service.rb +67 -0
  94. data/lib/basecamp/services/templates_service.rb +96 -0
  95. data/lib/basecamp/services/timeline_service.rb +62 -0
  96. data/lib/basecamp/services/timesheet_service.rb +68 -0
  97. data/lib/basecamp/services/todolist_groups_service.rb +100 -0
  98. data/lib/basecamp/services/todolists_service.rb +104 -0
  99. data/lib/basecamp/services/todos_service.rb +156 -0
  100. data/lib/basecamp/services/todosets_service.rb +23 -0
  101. data/lib/basecamp/services/tools_service.rb +89 -0
  102. data/lib/basecamp/services/uploads_service.rb +84 -0
  103. data/lib/basecamp/services/vaults_service.rb +84 -0
  104. data/lib/basecamp/services/webhooks_service.rb +88 -0
  105. data/lib/basecamp/static_token_provider.rb +24 -0
  106. data/lib/basecamp/token_provider.rb +42 -0
  107. data/lib/basecamp/version.rb +6 -0
  108. data/lib/basecamp/webhooks/event.rb +52 -0
  109. data/lib/basecamp/webhooks/rack_middleware.rb +49 -0
  110. data/lib/basecamp/webhooks/receiver.rb +161 -0
  111. data/lib/basecamp/webhooks/verify.rb +36 -0
  112. data/lib/basecamp.rb +107 -0
  113. data/scripts/generate-metadata.rb +106 -0
  114. data/scripts/generate-services.rb +778 -0
  115. data/scripts/generate-types.rb +191 -0
  116. metadata +316 -0
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basecamp
4
+ module Services
5
+ # Service for Tools operations
6
+ #
7
+ # @generated from OpenAPI spec
8
+ class ToolsService < BaseService
9
+
10
+ # Clone an existing tool to create a new one
11
+ # @param source_recording_id [Integer] source recording id
12
+ # @return [Hash] response data
13
+ def clone(source_recording_id:)
14
+ with_operation(service: "tools", operation: "clone", is_mutation: true) do
15
+ http_post("/dock/tools.json", body: compact_params(source_recording_id: source_recording_id)).json
16
+ end
17
+ end
18
+
19
+ # Get a dock tool by id
20
+ # @param tool_id [Integer] tool id ID
21
+ # @return [Hash] response data
22
+ def get(tool_id:)
23
+ with_operation(service: "tools", operation: "get", is_mutation: false, resource_id: tool_id) do
24
+ http_get("/dock/tools/#{tool_id}").json
25
+ end
26
+ end
27
+
28
+ # Update (rename) an existing tool
29
+ # @param tool_id [Integer] tool id ID
30
+ # @param title [String] title
31
+ # @return [Hash] response data
32
+ def update(tool_id:, title:)
33
+ with_operation(service: "tools", operation: "update", is_mutation: true, resource_id: tool_id) do
34
+ http_put("/dock/tools/#{tool_id}", body: compact_params(title: title)).json
35
+ end
36
+ end
37
+
38
+ # Delete a tool (trash it)
39
+ # @param tool_id [Integer] tool id ID
40
+ # @return [void]
41
+ def delete(tool_id:)
42
+ with_operation(service: "tools", operation: "delete", is_mutation: true, resource_id: tool_id) do
43
+ http_delete("/dock/tools/#{tool_id}")
44
+ nil
45
+ end
46
+ end
47
+
48
+ # Enable a tool (show it on the project dock)
49
+ # @param tool_id [Integer] tool id ID
50
+ # @return [void]
51
+ def enable(tool_id:)
52
+ with_operation(service: "tools", operation: "enable", is_mutation: true, resource_id: tool_id) do
53
+ http_post("/recordings/#{tool_id}/position.json")
54
+ nil
55
+ end
56
+ end
57
+
58
+ # Reposition a tool on the project dock
59
+ # @param tool_id [Integer] tool id ID
60
+ # @param position [Integer] position
61
+ # @return [void]
62
+ def reposition(tool_id:, position:)
63
+ with_operation(service: "tools", operation: "reposition", is_mutation: true, resource_id: tool_id) do
64
+ http_put("/recordings/#{tool_id}/position.json", body: compact_params(position: position))
65
+ nil
66
+ end
67
+ end
68
+
69
+ # Disable a tool (hide it from the project dock)
70
+ # @param tool_id [Integer] tool id ID
71
+ # @return [void]
72
+ def disable(tool_id:)
73
+ with_operation(service: "tools", operation: "disable", is_mutation: true, resource_id: tool_id) do
74
+ http_delete("/recordings/#{tool_id}/position.json")
75
+ nil
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basecamp
4
+ module Services
5
+ # Service for Uploads operations
6
+ #
7
+ # @generated from OpenAPI spec
8
+ class UploadsService < BaseService
9
+
10
+ # Get a single upload by id
11
+ # @param upload_id [Integer] upload id ID
12
+ # @return [Hash] response data
13
+ def get(upload_id:)
14
+ with_operation(service: "uploads", operation: "get", is_mutation: false, resource_id: upload_id) do
15
+ http_get("/uploads/#{upload_id}").json
16
+ end
17
+ end
18
+
19
+ # Update an existing upload
20
+ # @param upload_id [Integer] upload id ID
21
+ # @param description [String, nil] description
22
+ # @param base_name [String, nil] base name
23
+ # @return [Hash] response data
24
+ def update(upload_id:, description: nil, base_name: nil)
25
+ with_operation(service: "uploads", operation: "update", is_mutation: true, resource_id: upload_id) do
26
+ http_put("/uploads/#{upload_id}", body: compact_params(description: description, base_name: base_name)).json
27
+ end
28
+ end
29
+
30
+ # List versions of an upload
31
+ # @param upload_id [Integer] upload id ID
32
+ # @return [Enumerator<Hash>] paginated results
33
+ def list_versions(upload_id:)
34
+ wrap_paginated(service: "uploads", operation: "list_versions", is_mutation: false, resource_id: upload_id) do
35
+ paginate("/uploads/#{upload_id}/versions.json")
36
+ end
37
+ end
38
+
39
+ # List uploads in a vault
40
+ # @param vault_id [Integer] vault id ID
41
+ # @return [Enumerator<Hash>] paginated results
42
+ def list(vault_id:)
43
+ wrap_paginated(service: "uploads", operation: "list", is_mutation: false, resource_id: vault_id) do
44
+ paginate("/vaults/#{vault_id}/uploads.json")
45
+ end
46
+ end
47
+
48
+ # Create a new upload in a vault
49
+ # @param vault_id [Integer] vault id ID
50
+ # @param attachable_sgid [String] attachable sgid
51
+ # @param description [String, nil] description
52
+ # @param base_name [String, nil] base name
53
+ # @return [Hash] response data
54
+ def create(vault_id:, attachable_sgid:, description: nil, base_name: nil)
55
+ with_operation(service: "uploads", operation: "create", is_mutation: true, resource_id: vault_id) do
56
+ http_post("/vaults/#{vault_id}/uploads.json", body: compact_params(attachable_sgid: attachable_sgid, description: description, base_name: base_name)).json
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basecamp
4
+ module Services
5
+ # Service for Vaults operations
6
+ #
7
+ # @generated from OpenAPI spec
8
+ class VaultsService < BaseService
9
+
10
+ # Get a single vault by id
11
+ # @param vault_id [Integer] vault id ID
12
+ # @return [Hash] response data
13
+ def get(vault_id:)
14
+ with_operation(service: "vaults", operation: "get", is_mutation: false, resource_id: vault_id) do
15
+ http_get("/vaults/#{vault_id}").json
16
+ end
17
+ end
18
+
19
+ # Update an existing vault
20
+ # @param vault_id [Integer] vault id ID
21
+ # @param title [String, nil] title
22
+ # @return [Hash] response data
23
+ def update(vault_id:, title: nil)
24
+ with_operation(service: "vaults", operation: "update", is_mutation: true, resource_id: vault_id) do
25
+ http_put("/vaults/#{vault_id}", body: compact_params(title: title)).json
26
+ end
27
+ end
28
+
29
+ # List vaults (subfolders) in a vault
30
+ # @param vault_id [Integer] vault id ID
31
+ # @return [Enumerator<Hash>] paginated results
32
+ def list(vault_id:)
33
+ wrap_paginated(service: "vaults", operation: "list", is_mutation: false, resource_id: vault_id) do
34
+ paginate("/vaults/#{vault_id}/vaults.json")
35
+ end
36
+ end
37
+
38
+ # Create a new vault (subfolder) in a vault
39
+ # @param vault_id [Integer] vault id ID
40
+ # @param title [String] title
41
+ # @return [Hash] response data
42
+ def create(vault_id:, title:)
43
+ with_operation(service: "vaults", operation: "create", is_mutation: true, resource_id: vault_id) do
44
+ http_post("/vaults/#{vault_id}/vaults.json", body: compact_params(title: title)).json
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Basecamp
4
+ module Services
5
+ # Service for Webhooks operations
6
+ #
7
+ # @generated from OpenAPI spec
8
+ class WebhooksService < BaseService
9
+
10
+ # List all webhooks for a project
11
+ # @param bucket_id [Integer] bucket id ID
12
+ # @return [Enumerator<Hash>] paginated results
13
+ def list(bucket_id:)
14
+ wrap_paginated(service: "webhooks", operation: "list", is_mutation: false, resource_id: bucket_id) do
15
+ paginate("/buckets/#{bucket_id}/webhooks.json")
16
+ end
17
+ end
18
+
19
+ # Create a new webhook for a project
20
+ # @param bucket_id [Integer] bucket id ID
21
+ # @param payload_url [String] payload url
22
+ # @param types [Array] types
23
+ # @param active [Boolean, nil] active
24
+ # @return [Hash] response data
25
+ def create(bucket_id:, payload_url:, types:, active: nil)
26
+ with_operation(service: "webhooks", operation: "create", is_mutation: true, resource_id: bucket_id) do
27
+ http_post("/buckets/#{bucket_id}/webhooks.json", body: compact_params(payload_url: payload_url, types: types, active: active)).json
28
+ end
29
+ end
30
+
31
+ # Get a single webhook by id
32
+ # @param webhook_id [Integer] webhook id ID
33
+ # @return [Hash] response data
34
+ def get(webhook_id:)
35
+ with_operation(service: "webhooks", operation: "get", is_mutation: false, resource_id: webhook_id) do
36
+ http_get("/webhooks/#{webhook_id}").json
37
+ end
38
+ end
39
+
40
+ # Update an existing webhook
41
+ # @param webhook_id [Integer] webhook id ID
42
+ # @param payload_url [String, nil] payload url
43
+ # @param types [Array, nil] types
44
+ # @param active [Boolean, nil] active
45
+ # @return [Hash] response data
46
+ def update(webhook_id:, payload_url: nil, types: nil, active: nil)
47
+ with_operation(service: "webhooks", operation: "update", is_mutation: true, resource_id: webhook_id) do
48
+ http_put("/webhooks/#{webhook_id}", body: compact_params(payload_url: payload_url, types: types, active: active)).json
49
+ end
50
+ end
51
+
52
+ # Delete a webhook
53
+ # @param webhook_id [Integer] webhook id ID
54
+ # @return [void]
55
+ def delete(webhook_id:)
56
+ with_operation(service: "webhooks", operation: "delete", is_mutation: true, resource_id: webhook_id) do
57
+ http_delete("/webhooks/#{webhook_id}")
58
+ nil
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end