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,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for ClientCorrespondences operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class ClientCorrespondencesService < BaseService
|
|
9
|
+
|
|
10
|
+
# List all client correspondences in a project
|
|
11
|
+
# @return [Enumerator<Hash>] paginated results
|
|
12
|
+
def list()
|
|
13
|
+
wrap_paginated(service: "clientcorrespondences", operation: "list", is_mutation: false) do
|
|
14
|
+
paginate("/client/correspondences.json")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Get a single client correspondence by id
|
|
19
|
+
# @param correspondence_id [Integer] correspondence id ID
|
|
20
|
+
# @return [Hash] response data
|
|
21
|
+
def get(correspondence_id:)
|
|
22
|
+
with_operation(service: "clientcorrespondences", operation: "get", is_mutation: false, resource_id: correspondence_id) do
|
|
23
|
+
http_get("/client/correspondences/#{correspondence_id}").json
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for ClientReplies operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class ClientRepliesService < BaseService
|
|
9
|
+
|
|
10
|
+
# List all client replies for a recording (correspondence or approval)
|
|
11
|
+
# @param recording_id [Integer] recording id ID
|
|
12
|
+
# @return [Enumerator<Hash>] paginated results
|
|
13
|
+
def list(recording_id:)
|
|
14
|
+
wrap_paginated(service: "clientreplies", operation: "list", is_mutation: false, resource_id: recording_id) do
|
|
15
|
+
paginate("/client/recordings/#{recording_id}/replies.json")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Get a single client reply by id
|
|
20
|
+
# @param recording_id [Integer] recording id ID
|
|
21
|
+
# @param reply_id [Integer] reply id ID
|
|
22
|
+
# @return [Hash] response data
|
|
23
|
+
def get(recording_id:, reply_id:)
|
|
24
|
+
with_operation(service: "clientreplies", operation: "get", is_mutation: false, resource_id: reply_id) do
|
|
25
|
+
http_get("/client/recordings/#{recording_id}/replies/#{reply_id}").json
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for ClientVisibility operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class ClientVisibilityService < BaseService
|
|
9
|
+
|
|
10
|
+
# Set client visibility for a recording
|
|
11
|
+
# @param recording_id [Integer] recording id ID
|
|
12
|
+
# @param visible_to_clients [Boolean] visible to clients
|
|
13
|
+
# @return [Hash] response data
|
|
14
|
+
def set_visibility(recording_id:, visible_to_clients:)
|
|
15
|
+
with_operation(service: "clientvisibility", operation: "set_visibility", is_mutation: true, resource_id: recording_id) do
|
|
16
|
+
http_put("/recordings/#{recording_id}/client_visibility.json", body: compact_params(visible_to_clients: visible_to_clients)).json
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Comments operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class CommentsService < BaseService
|
|
9
|
+
|
|
10
|
+
# Get a single comment by id
|
|
11
|
+
# @param comment_id [Integer] comment id ID
|
|
12
|
+
# @return [Hash] response data
|
|
13
|
+
def get(comment_id:)
|
|
14
|
+
with_operation(service: "comments", operation: "get", is_mutation: false, resource_id: comment_id) do
|
|
15
|
+
http_get("/comments/#{comment_id}").json
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Update an existing comment
|
|
20
|
+
# @param comment_id [Integer] comment id ID
|
|
21
|
+
# @param content [String] content
|
|
22
|
+
# @return [Hash] response data
|
|
23
|
+
def update(comment_id:, content:)
|
|
24
|
+
with_operation(service: "comments", operation: "update", is_mutation: true, resource_id: comment_id) do
|
|
25
|
+
http_put("/comments/#{comment_id}", body: compact_params(content: content)).json
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# List comments on a recording
|
|
30
|
+
# @param recording_id [Integer] recording id ID
|
|
31
|
+
# @return [Enumerator<Hash>] paginated results
|
|
32
|
+
def list(recording_id:)
|
|
33
|
+
wrap_paginated(service: "comments", operation: "list", is_mutation: false, resource_id: recording_id) do
|
|
34
|
+
paginate("/recordings/#{recording_id}/comments.json")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Create a new comment on a recording
|
|
39
|
+
# @param recording_id [Integer] recording id ID
|
|
40
|
+
# @param content [String] content
|
|
41
|
+
# @return [Hash] response data
|
|
42
|
+
def create(recording_id:, content:)
|
|
43
|
+
with_operation(service: "comments", operation: "create", is_mutation: true, resource_id: recording_id) do
|
|
44
|
+
http_post("/recordings/#{recording_id}/comments.json", body: compact_params(content: content)).json
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Documents operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class DocumentsService < BaseService
|
|
9
|
+
|
|
10
|
+
# Get a single document by id
|
|
11
|
+
# @param document_id [Integer] document id ID
|
|
12
|
+
# @return [Hash] response data
|
|
13
|
+
def get(document_id:)
|
|
14
|
+
with_operation(service: "documents", operation: "get", is_mutation: false, resource_id: document_id) do
|
|
15
|
+
http_get("/documents/#{document_id}").json
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Update an existing document
|
|
20
|
+
# @param document_id [Integer] document id ID
|
|
21
|
+
# @param title [String, nil] title
|
|
22
|
+
# @param content [String, nil] content
|
|
23
|
+
# @return [Hash] response data
|
|
24
|
+
def update(document_id:, title: nil, content: nil)
|
|
25
|
+
with_operation(service: "documents", operation: "update", is_mutation: true, resource_id: document_id) do
|
|
26
|
+
http_put("/documents/#{document_id}", body: compact_params(title: title, content: content)).json
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# List documents in a vault
|
|
31
|
+
# @param vault_id [Integer] vault id ID
|
|
32
|
+
# @return [Enumerator<Hash>] paginated results
|
|
33
|
+
def list(vault_id:)
|
|
34
|
+
wrap_paginated(service: "documents", operation: "list", is_mutation: false, resource_id: vault_id) do
|
|
35
|
+
paginate("/vaults/#{vault_id}/documents.json")
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Create a new document in a vault
|
|
40
|
+
# @param vault_id [Integer] vault id ID
|
|
41
|
+
# @param title [String] title
|
|
42
|
+
# @param content [String, nil] content
|
|
43
|
+
# @param status [String, nil] active|drafted
|
|
44
|
+
# @return [Hash] response data
|
|
45
|
+
def create(vault_id:, title:, content: nil, status: nil)
|
|
46
|
+
with_operation(service: "documents", operation: "create", is_mutation: true, resource_id: vault_id) do
|
|
47
|
+
http_post("/vaults/#{vault_id}/documents.json", body: compact_params(title: title, content: content, status: status)).json
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Events operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class EventsService < BaseService
|
|
9
|
+
|
|
10
|
+
# List all events for a recording
|
|
11
|
+
# @param recording_id [Integer] recording id ID
|
|
12
|
+
# @return [Enumerator<Hash>] paginated results
|
|
13
|
+
def list(recording_id:)
|
|
14
|
+
wrap_paginated(service: "events", operation: "list", is_mutation: false, resource_id: recording_id) do
|
|
15
|
+
paginate("/recordings/#{recording_id}/events.json")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Forwards operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class ForwardsService < BaseService
|
|
9
|
+
|
|
10
|
+
# Get a forward by ID
|
|
11
|
+
# @param forward_id [Integer] forward id ID
|
|
12
|
+
# @return [Hash] response data
|
|
13
|
+
def get(forward_id:)
|
|
14
|
+
with_operation(service: "forwards", operation: "get", is_mutation: false, resource_id: forward_id) do
|
|
15
|
+
http_get("/inbox_forwards/#{forward_id}").json
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# List all replies to a forward
|
|
20
|
+
# @param forward_id [Integer] forward id ID
|
|
21
|
+
# @return [Enumerator<Hash>] paginated results
|
|
22
|
+
def list_replies(forward_id:)
|
|
23
|
+
wrap_paginated(service: "forwards", operation: "list_replies", is_mutation: false, resource_id: forward_id) do
|
|
24
|
+
paginate("/inbox_forwards/#{forward_id}/replies.json")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Create a reply to a forward
|
|
29
|
+
# @param forward_id [Integer] forward id ID
|
|
30
|
+
# @param content [String] content
|
|
31
|
+
# @return [Hash] response data
|
|
32
|
+
def create_reply(forward_id:, content:)
|
|
33
|
+
with_operation(service: "forwards", operation: "create_reply", is_mutation: true, resource_id: forward_id) do
|
|
34
|
+
http_post("/inbox_forwards/#{forward_id}/replies.json", body: compact_params(content: content)).json
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Get a forward reply by ID
|
|
39
|
+
# @param forward_id [Integer] forward id ID
|
|
40
|
+
# @param reply_id [Integer] reply id ID
|
|
41
|
+
# @return [Hash] response data
|
|
42
|
+
def get_reply(forward_id:, reply_id:)
|
|
43
|
+
with_operation(service: "forwards", operation: "get_reply", is_mutation: false, resource_id: reply_id) do
|
|
44
|
+
http_get("/inbox_forwards/#{forward_id}/replies/#{reply_id}").json
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Get an inbox by ID
|
|
49
|
+
# @param inbox_id [Integer] inbox id ID
|
|
50
|
+
# @return [Hash] response data
|
|
51
|
+
def get_inbox(inbox_id:)
|
|
52
|
+
with_operation(service: "forwards", operation: "get_inbox", is_mutation: false, resource_id: inbox_id) do
|
|
53
|
+
http_get("/inboxes/#{inbox_id}").json
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# List all forwards in an inbox
|
|
58
|
+
# @param inbox_id [Integer] inbox id ID
|
|
59
|
+
# @return [Enumerator<Hash>] paginated results
|
|
60
|
+
def list(inbox_id:)
|
|
61
|
+
wrap_paginated(service: "forwards", operation: "list", is_mutation: false, resource_id: inbox_id) do
|
|
62
|
+
paginate("/inboxes/#{inbox_id}/forwards.json")
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Lineup operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class LineupService < BaseService
|
|
9
|
+
|
|
10
|
+
# Create a new lineup marker
|
|
11
|
+
# @param name [String] name
|
|
12
|
+
# @param date [String] date
|
|
13
|
+
# @return [void]
|
|
14
|
+
def create(name:, date:)
|
|
15
|
+
with_operation(service: "lineup", operation: "create", is_mutation: true) do
|
|
16
|
+
http_post("/lineup/markers.json", body: compact_params(name: name, date: date))
|
|
17
|
+
nil
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Update an existing lineup marker
|
|
22
|
+
# @param marker_id [Integer] marker id ID
|
|
23
|
+
# @param name [String, nil] name
|
|
24
|
+
# @param date [String, nil] date
|
|
25
|
+
# @return [void]
|
|
26
|
+
def update(marker_id:, name: nil, date: nil)
|
|
27
|
+
with_operation(service: "lineup", operation: "update", is_mutation: true, resource_id: marker_id) do
|
|
28
|
+
http_put("/lineup/markers/#{marker_id}", body: compact_params(name: name, date: date))
|
|
29
|
+
nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Delete a lineup marker
|
|
34
|
+
# @param marker_id [Integer] marker id ID
|
|
35
|
+
# @return [void]
|
|
36
|
+
def delete(marker_id:)
|
|
37
|
+
with_operation(service: "lineup", operation: "delete", is_mutation: true, resource_id: marker_id) do
|
|
38
|
+
http_delete("/lineup/markers/#{marker_id}")
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for MessageBoards operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class MessageBoardsService < BaseService
|
|
9
|
+
|
|
10
|
+
# Get a message board
|
|
11
|
+
# @param board_id [Integer] board id ID
|
|
12
|
+
# @return [Hash] response data
|
|
13
|
+
def get(board_id:)
|
|
14
|
+
with_operation(service: "messageboards", operation: "get", is_mutation: false, resource_id: board_id) do
|
|
15
|
+
http_get("/message_boards/#{board_id}").json
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for MessageTypes operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class MessageTypesService < BaseService
|
|
9
|
+
|
|
10
|
+
# List message types in a project
|
|
11
|
+
# @return [Enumerator<Hash>] paginated results
|
|
12
|
+
def list()
|
|
13
|
+
wrap_paginated(service: "messagetypes", operation: "list", is_mutation: false) do
|
|
14
|
+
paginate("/categories.json")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Create a new message type in a project
|
|
19
|
+
# @param name [String] name
|
|
20
|
+
# @param icon [String] icon
|
|
21
|
+
# @return [Hash] response data
|
|
22
|
+
def create(name:, icon:)
|
|
23
|
+
with_operation(service: "messagetypes", operation: "create", is_mutation: true) do
|
|
24
|
+
http_post("/categories.json", body: compact_params(name: name, icon: icon)).json
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Get a single message type by id
|
|
29
|
+
# @param type_id [Integer] type id ID
|
|
30
|
+
# @return [Hash] response data
|
|
31
|
+
def get(type_id:)
|
|
32
|
+
with_operation(service: "messagetypes", operation: "get", is_mutation: false, resource_id: type_id) do
|
|
33
|
+
http_get("/categories/#{type_id}").json
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Update an existing message type
|
|
38
|
+
# @param type_id [Integer] type id ID
|
|
39
|
+
# @param name [String, nil] name
|
|
40
|
+
# @param icon [String, nil] icon
|
|
41
|
+
# @return [Hash] response data
|
|
42
|
+
def update(type_id:, name: nil, icon: nil)
|
|
43
|
+
with_operation(service: "messagetypes", operation: "update", is_mutation: true, resource_id: type_id) do
|
|
44
|
+
http_put("/categories/#{type_id}", body: compact_params(name: name, icon: icon)).json
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Delete a message type
|
|
49
|
+
# @param type_id [Integer] type id ID
|
|
50
|
+
# @return [void]
|
|
51
|
+
def delete(type_id:)
|
|
52
|
+
with_operation(service: "messagetypes", operation: "delete", is_mutation: true, resource_id: type_id) do
|
|
53
|
+
http_delete("/categories/#{type_id}")
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Messages operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class MessagesService < BaseService
|
|
9
|
+
|
|
10
|
+
# List messages on a message board
|
|
11
|
+
# @param board_id [Integer] board id ID
|
|
12
|
+
# @return [Enumerator<Hash>] paginated results
|
|
13
|
+
def list(board_id:)
|
|
14
|
+
wrap_paginated(service: "messages", operation: "list", is_mutation: false, resource_id: board_id) do
|
|
15
|
+
paginate("/message_boards/#{board_id}/messages.json")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Create a new message on a message board
|
|
20
|
+
# @param board_id [Integer] board id ID
|
|
21
|
+
# @param subject [String] subject
|
|
22
|
+
# @param content [String, nil] content
|
|
23
|
+
# @param status [String, nil] active|drafted
|
|
24
|
+
# @param category_id [Integer, nil] category id
|
|
25
|
+
# @return [Hash] response data
|
|
26
|
+
def create(board_id:, subject:, content: nil, status: nil, category_id: nil)
|
|
27
|
+
with_operation(service: "messages", operation: "create", is_mutation: true, resource_id: board_id) do
|
|
28
|
+
http_post("/message_boards/#{board_id}/messages.json", body: compact_params(subject: subject, content: content, status: status, category_id: category_id)).json
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Get a single message by id
|
|
33
|
+
# @param message_id [Integer] message id ID
|
|
34
|
+
# @return [Hash] response data
|
|
35
|
+
def get(message_id:)
|
|
36
|
+
with_operation(service: "messages", operation: "get", is_mutation: false, resource_id: message_id) do
|
|
37
|
+
http_get("/messages/#{message_id}").json
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Update an existing message
|
|
42
|
+
# @param message_id [Integer] message id ID
|
|
43
|
+
# @param subject [String, nil] subject
|
|
44
|
+
# @param content [String, nil] content
|
|
45
|
+
# @param status [String, nil] active|drafted
|
|
46
|
+
# @param category_id [Integer, nil] category id
|
|
47
|
+
# @return [Hash] response data
|
|
48
|
+
def update(message_id:, subject: nil, content: nil, status: nil, category_id: nil)
|
|
49
|
+
with_operation(service: "messages", operation: "update", is_mutation: true, resource_id: message_id) do
|
|
50
|
+
http_put("/messages/#{message_id}", body: compact_params(subject: subject, content: content, status: status, category_id: category_id)).json
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Pin a message to the top of the message board
|
|
55
|
+
# @param message_id [Integer] message id ID
|
|
56
|
+
# @return [void]
|
|
57
|
+
def pin(message_id:)
|
|
58
|
+
with_operation(service: "messages", operation: "pin", is_mutation: true, resource_id: message_id) do
|
|
59
|
+
http_post("/recordings/#{message_id}/pin.json")
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Unpin a message from the message board
|
|
65
|
+
# @param message_id [Integer] message id ID
|
|
66
|
+
# @return [void]
|
|
67
|
+
def unpin(message_id:)
|
|
68
|
+
with_operation(service: "messages", operation: "unpin", is_mutation: true, resource_id: message_id) do
|
|
69
|
+
http_delete("/recordings/#{message_id}/pin.json")
|
|
70
|
+
nil
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for People operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class PeopleService < BaseService
|
|
9
|
+
|
|
10
|
+
# List all account users who can be pinged
|
|
11
|
+
# @return [Enumerator<Hash>] paginated results
|
|
12
|
+
def list_pingable()
|
|
13
|
+
wrap_paginated(service: "people", operation: "list_pingable", is_mutation: false) do
|
|
14
|
+
paginate("/circles/people.json")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Get the current authenticated user's profile
|
|
19
|
+
# @return [Hash] response data
|
|
20
|
+
def my_profile()
|
|
21
|
+
with_operation(service: "people", operation: "my_profile", is_mutation: false) do
|
|
22
|
+
http_get("/my/profile.json").json
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# List all people visible to the current user
|
|
27
|
+
# @return [Enumerator<Hash>] paginated results
|
|
28
|
+
def list()
|
|
29
|
+
wrap_paginated(service: "people", operation: "list", is_mutation: false) do
|
|
30
|
+
paginate("/people.json")
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Get a person by ID
|
|
35
|
+
# @param person_id [Integer] person id ID
|
|
36
|
+
# @return [Hash] response data
|
|
37
|
+
def get(person_id:)
|
|
38
|
+
with_operation(service: "people", operation: "get", is_mutation: false, resource_id: person_id) do
|
|
39
|
+
http_get("/people/#{person_id}").json
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# List all active people on a project
|
|
44
|
+
# @param project_id [Integer] project id ID
|
|
45
|
+
# @return [Enumerator<Hash>] paginated results
|
|
46
|
+
def list_for_project(project_id:)
|
|
47
|
+
wrap_paginated(service: "people", operation: "list_for_project", is_mutation: false, project_id: project_id) do
|
|
48
|
+
paginate("/projects/#{project_id}/people.json")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Update project access (grant/revoke/create people)
|
|
53
|
+
# @param project_id [Integer] project id ID
|
|
54
|
+
# @param grant [Array, nil] grant
|
|
55
|
+
# @param revoke [Array, nil] revoke
|
|
56
|
+
# @param create [Array, nil] create
|
|
57
|
+
# @return [Hash] response data
|
|
58
|
+
def update_project_access(project_id:, grant: nil, revoke: nil, create: nil)
|
|
59
|
+
with_operation(service: "people", operation: "update_project_access", is_mutation: true, project_id: project_id) do
|
|
60
|
+
http_put("/projects/#{project_id}/people/users.json", body: compact_params(grant: grant, revoke: revoke, create: create)).json
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# List people who can be assigned todos
|
|
65
|
+
# @return [Hash] response data
|
|
66
|
+
def list_assignable()
|
|
67
|
+
with_operation(service: "people", operation: "list_assignable", is_mutation: false) do
|
|
68
|
+
http_get("/reports/todos/assigned.json").json
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Projects operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class ProjectsService < BaseService
|
|
9
|
+
|
|
10
|
+
# List projects (active by default; optionally archived/trashed)
|
|
11
|
+
# @param status [String, nil] active|archived|trashed
|
|
12
|
+
# @return [Enumerator<Hash>] paginated results
|
|
13
|
+
def list(status: nil)
|
|
14
|
+
wrap_paginated(service: "projects", operation: "list", is_mutation: false) do
|
|
15
|
+
params = compact_params(status: status)
|
|
16
|
+
paginate("/projects.json", params: params)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Create a new project
|
|
21
|
+
# @param name [String] name
|
|
22
|
+
# @param description [String, nil] description
|
|
23
|
+
# @return [Hash] response data
|
|
24
|
+
def create(name:, description: nil)
|
|
25
|
+
with_operation(service: "projects", operation: "create", is_mutation: true) do
|
|
26
|
+
http_post("/projects.json", body: compact_params(name: name, description: description)).json
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Get a single project by id
|
|
31
|
+
# @param project_id [Integer] project id ID
|
|
32
|
+
# @return [Hash] response data
|
|
33
|
+
def get(project_id:)
|
|
34
|
+
with_operation(service: "projects", operation: "get", is_mutation: false, project_id: project_id) do
|
|
35
|
+
http_get("/projects/#{project_id}").json
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Update an existing project
|
|
40
|
+
# @param project_id [Integer] project id ID
|
|
41
|
+
# @param name [String] name
|
|
42
|
+
# @param description [String, nil] description
|
|
43
|
+
# @param admissions [String, nil] invite|employee|team
|
|
44
|
+
# @param schedule_attributes [String, nil] schedule attributes
|
|
45
|
+
# @return [Hash] response data
|
|
46
|
+
def update(project_id:, name:, description: nil, admissions: nil, schedule_attributes: nil)
|
|
47
|
+
with_operation(service: "projects", operation: "update", is_mutation: true, project_id: project_id) do
|
|
48
|
+
http_put("/projects/#{project_id}", body: compact_params(name: name, description: description, admissions: admissions, schedule_attributes: schedule_attributes)).json
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Trash a project (returns 204 No Content)
|
|
53
|
+
# @param project_id [Integer] project id ID
|
|
54
|
+
# @return [void]
|
|
55
|
+
def trash(project_id:)
|
|
56
|
+
with_operation(service: "projects", operation: "trash", is_mutation: true, project_id: project_id) do
|
|
57
|
+
http_delete("/projects/#{project_id}")
|
|
58
|
+
nil
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Basecamp
|
|
4
|
+
module Services
|
|
5
|
+
# Service for Recordings operations
|
|
6
|
+
#
|
|
7
|
+
# @generated from OpenAPI spec
|
|
8
|
+
class RecordingsService < BaseService
|
|
9
|
+
|
|
10
|
+
# List recordings of a given type across projects
|
|
11
|
+
# @param type [String] Comment|Document|Kanban::Card|Kanban::Step|Message|Question::Answer|Schedule::Entry|Todo|Todolist|Upload|Vault
|
|
12
|
+
# @param bucket [String, nil] bucket
|
|
13
|
+
# @param status [String, nil] active|archived|trashed
|
|
14
|
+
# @param sort [String, nil] created_at|updated_at
|
|
15
|
+
# @param direction [String, nil] asc|desc
|
|
16
|
+
# @return [Enumerator<Hash>] paginated results
|
|
17
|
+
def list(type:, bucket: nil, status: nil, sort: nil, direction: nil)
|
|
18
|
+
wrap_paginated(service: "recordings", operation: "list", is_mutation: false) do
|
|
19
|
+
params = compact_params(type: type, bucket: bucket, status: status, sort: sort, direction: direction)
|
|
20
|
+
paginate("/projects/recordings.json", params: params)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Get a single recording by id
|
|
25
|
+
# @param recording_id [Integer] recording id ID
|
|
26
|
+
# @return [Hash] response data
|
|
27
|
+
def get(recording_id:)
|
|
28
|
+
with_operation(service: "recordings", operation: "get", is_mutation: false, resource_id: recording_id) do
|
|
29
|
+
http_get("/recordings/#{recording_id}").json
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Unarchive a recording (restore to active status)
|
|
34
|
+
# @param recording_id [Integer] recording id ID
|
|
35
|
+
# @return [void]
|
|
36
|
+
def unarchive(recording_id:)
|
|
37
|
+
with_operation(service: "recordings", operation: "unarchive", is_mutation: true, resource_id: recording_id) do
|
|
38
|
+
http_put("/recordings/#{recording_id}/status/active.json")
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Archive a recording
|
|
44
|
+
# @param recording_id [Integer] recording id ID
|
|
45
|
+
# @return [void]
|
|
46
|
+
def archive(recording_id:)
|
|
47
|
+
with_operation(service: "recordings", operation: "archive", is_mutation: true, resource_id: recording_id) do
|
|
48
|
+
http_put("/recordings/#{recording_id}/status/archived.json")
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Trash a recording
|
|
54
|
+
# @param recording_id [Integer] recording id ID
|
|
55
|
+
# @return [void]
|
|
56
|
+
def trash(recording_id:)
|
|
57
|
+
with_operation(service: "recordings", operation: "trash", is_mutation: true, resource_id: recording_id) do
|
|
58
|
+
http_put("/recordings/#{recording_id}/status/trashed.json")
|
|
59
|
+
nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|