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.
- checksums.yaml +7 -0
- data/.rubocop.yml +14 -0
- data/.yardopts +6 -0
- data/README.md +293 -0
- data/Rakefile +26 -0
- data/basecamp-sdk.gemspec +46 -0
- data/lib/basecamp/auth_strategy.rb +38 -0
- data/lib/basecamp/chain_hooks.rb +45 -0
- data/lib/basecamp/client.rb +428 -0
- data/lib/basecamp/config.rb +143 -0
- data/lib/basecamp/errors.rb +289 -0
- data/lib/basecamp/generated/metadata.json +2281 -0
- data/lib/basecamp/generated/services/attachments_service.rb +24 -0
- data/lib/basecamp/generated/services/boosts_service.rb +70 -0
- data/lib/basecamp/generated/services/campfires_service.rb +122 -0
- data/lib/basecamp/generated/services/card_columns_service.rb +103 -0
- data/lib/basecamp/generated/services/card_steps_service.rb +57 -0
- data/lib/basecamp/generated/services/card_tables_service.rb +20 -0
- data/lib/basecamp/generated/services/cards_service.rb +66 -0
- data/lib/basecamp/generated/services/checkins_service.rb +157 -0
- data/lib/basecamp/generated/services/client_approvals_service.rb +28 -0
- data/lib/basecamp/generated/services/client_correspondences_service.rb +28 -0
- data/lib/basecamp/generated/services/client_replies_service.rb +30 -0
- data/lib/basecamp/generated/services/client_visibility_service.rb +21 -0
- data/lib/basecamp/generated/services/comments_service.rb +49 -0
- data/lib/basecamp/generated/services/documents_service.rb +52 -0
- data/lib/basecamp/generated/services/events_service.rb +20 -0
- data/lib/basecamp/generated/services/forwards_service.rb +67 -0
- data/lib/basecamp/generated/services/lineup_service.rb +44 -0
- data/lib/basecamp/generated/services/message_boards_service.rb +20 -0
- data/lib/basecamp/generated/services/message_types_service.rb +59 -0
- data/lib/basecamp/generated/services/messages_service.rb +75 -0
- data/lib/basecamp/generated/services/people_service.rb +73 -0
- data/lib/basecamp/generated/services/projects_service.rb +63 -0
- data/lib/basecamp/generated/services/recordings_service.rb +64 -0
- data/lib/basecamp/generated/services/reports_service.rb +56 -0
- data/lib/basecamp/generated/services/schedules_service.rb +92 -0
- data/lib/basecamp/generated/services/search_service.rb +31 -0
- data/lib/basecamp/generated/services/subscriptions_service.rb +50 -0
- data/lib/basecamp/generated/services/templates_service.rb +82 -0
- data/lib/basecamp/generated/services/timeline_service.rb +20 -0
- data/lib/basecamp/generated/services/timesheets_service.rb +81 -0
- data/lib/basecamp/generated/services/todolist_groups_service.rb +41 -0
- data/lib/basecamp/generated/services/todolists_service.rb +53 -0
- data/lib/basecamp/generated/services/todos_service.rb +106 -0
- data/lib/basecamp/generated/services/todosets_service.rb +20 -0
- data/lib/basecamp/generated/services/tools_service.rb +80 -0
- data/lib/basecamp/generated/services/uploads_service.rb +61 -0
- data/lib/basecamp/generated/services/vaults_service.rb +49 -0
- data/lib/basecamp/generated/services/webhooks_service.rb +63 -0
- data/lib/basecamp/generated/types.rb +3196 -0
- data/lib/basecamp/hooks.rb +70 -0
- data/lib/basecamp/http.rb +440 -0
- data/lib/basecamp/logger_hooks.rb +46 -0
- data/lib/basecamp/noop_hooks.rb +9 -0
- data/lib/basecamp/oauth/discovery.rb +123 -0
- data/lib/basecamp/oauth/errors.rb +35 -0
- data/lib/basecamp/oauth/exchange.rb +291 -0
- data/lib/basecamp/oauth/pkce.rb +68 -0
- data/lib/basecamp/oauth/types.rb +133 -0
- data/lib/basecamp/oauth.rb +56 -0
- data/lib/basecamp/oauth_token_provider.rb +108 -0
- data/lib/basecamp/operation_info.rb +17 -0
- data/lib/basecamp/request_info.rb +10 -0
- data/lib/basecamp/request_result.rb +14 -0
- data/lib/basecamp/security.rb +112 -0
- data/lib/basecamp/services/attachments_service.rb +33 -0
- data/lib/basecamp/services/authorization_service.rb +47 -0
- data/lib/basecamp/services/base_service.rb +146 -0
- data/lib/basecamp/services/campfires_service.rb +141 -0
- data/lib/basecamp/services/card_columns_service.rb +106 -0
- data/lib/basecamp/services/card_steps_service.rb +86 -0
- data/lib/basecamp/services/card_tables_service.rb +23 -0
- data/lib/basecamp/services/cards_service.rb +93 -0
- data/lib/basecamp/services/checkins_service.rb +127 -0
- data/lib/basecamp/services/client_approvals_service.rb +33 -0
- data/lib/basecamp/services/client_correspondences_service.rb +33 -0
- data/lib/basecamp/services/client_replies_service.rb +35 -0
- data/lib/basecamp/services/comments_service.rb +63 -0
- data/lib/basecamp/services/documents_service.rb +74 -0
- data/lib/basecamp/services/events_service.rb +27 -0
- data/lib/basecamp/services/forwards_service.rb +80 -0
- data/lib/basecamp/services/lineup_service.rb +67 -0
- data/lib/basecamp/services/message_boards_service.rb +24 -0
- data/lib/basecamp/services/message_types_service.rb +79 -0
- data/lib/basecamp/services/messages_service.rb +133 -0
- data/lib/basecamp/services/people_service.rb +73 -0
- data/lib/basecamp/services/projects_service.rb +67 -0
- data/lib/basecamp/services/recordings_service.rb +127 -0
- data/lib/basecamp/services/reports_service.rb +80 -0
- data/lib/basecamp/services/schedules_service.rb +156 -0
- data/lib/basecamp/services/search_service.rb +36 -0
- data/lib/basecamp/services/subscriptions_service.rb +67 -0
- data/lib/basecamp/services/templates_service.rb +96 -0
- data/lib/basecamp/services/timeline_service.rb +62 -0
- data/lib/basecamp/services/timesheet_service.rb +68 -0
- data/lib/basecamp/services/todolist_groups_service.rb +100 -0
- data/lib/basecamp/services/todolists_service.rb +104 -0
- data/lib/basecamp/services/todos_service.rb +156 -0
- data/lib/basecamp/services/todosets_service.rb +23 -0
- data/lib/basecamp/services/tools_service.rb +89 -0
- data/lib/basecamp/services/uploads_service.rb +84 -0
- data/lib/basecamp/services/vaults_service.rb +84 -0
- data/lib/basecamp/services/webhooks_service.rb +88 -0
- data/lib/basecamp/static_token_provider.rb +24 -0
- data/lib/basecamp/token_provider.rb +42 -0
- data/lib/basecamp/version.rb +6 -0
- data/lib/basecamp/webhooks/event.rb +52 -0
- data/lib/basecamp/webhooks/rack_middleware.rb +49 -0
- data/lib/basecamp/webhooks/receiver.rb +161 -0
- data/lib/basecamp/webhooks/verify.rb +36 -0
- data/lib/basecamp.rb +107 -0
- data/scripts/generate-metadata.rb +106 -0
- data/scripts/generate-services.rb +778 -0
- data/scripts/generate-types.rb +191 -0
- 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
|