basecamp-sdk 0.8.0 → 0.10.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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/basecamp/client.rb +10 -0
- data/lib/basecamp/generated/metadata.json +343 -12
- data/lib/basecamp/generated/services/automation_service.rb +1 -1
- data/lib/basecamp/generated/services/base_service.rb +13 -0
- data/lib/basecamp/generated/services/campfires_service.rb +2 -2
- data/lib/basecamp/generated/services/card_columns_service.rb +3 -3
- data/lib/basecamp/generated/services/cards_service.rb +2 -2
- data/lib/basecamp/generated/services/checkins_service.rb +5 -4
- data/lib/basecamp/generated/services/client_approvals_service.rb +1 -1
- data/lib/basecamp/generated/services/client_correspondences_service.rb +1 -1
- data/lib/basecamp/generated/services/documents_service.rb +3 -2
- data/lib/basecamp/generated/services/everything_service.rb +179 -0
- data/lib/basecamp/generated/services/forwards_service.rb +1 -1
- data/lib/basecamp/generated/services/gauges_service.rb +4 -4
- data/lib/basecamp/generated/services/message_types_service.rb +20 -15
- data/lib/basecamp/generated/services/messages_service.rb +4 -3
- data/lib/basecamp/generated/services/my_assignments_service.rb +3 -3
- data/lib/basecamp/generated/services/my_notifications_service.rb +16 -2
- data/lib/basecamp/generated/services/people_service.rb +3 -3
- data/lib/basecamp/generated/services/projects_service.rb +2 -2
- data/lib/basecamp/generated/services/recordings_service.rb +2 -2
- data/lib/basecamp/generated/services/reports_service.rb +2 -2
- data/lib/basecamp/generated/services/schedules_service.rb +14 -5
- data/lib/basecamp/generated/services/search_service.rb +14 -3
- data/lib/basecamp/generated/services/templates_service.rb +4 -5
- data/lib/basecamp/generated/services/timesheets_service.rb +4 -4
- data/lib/basecamp/generated/services/todolists_service.rb +15 -3
- data/lib/basecamp/generated/services/todos_service.rb +1 -1
- data/lib/basecamp/generated/services/tools_service.rb +4 -3
- data/lib/basecamp/generated/services/uploads_service.rb +3 -2
- data/lib/basecamp/generated/services/webhooks_service.rb +2 -2
- data/lib/basecamp/generated/services/wormholes_service.rb +44 -0
- data/lib/basecamp/generated/types.rb +656 -71
- data/lib/basecamp/http.rb +2 -1
- data/lib/basecamp/services/cards_extensions.rb +67 -0
- data/lib/basecamp/version.rb +2 -2
- data/lib/basecamp.rb +5 -0
- data/scripts/generate-services.rb +39 -10
- data/scripts/generate-types.rb +60 -1
- metadata +5 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
# Auto-generated from OpenAPI spec. Do not edit manually.
|
|
4
|
-
# Generated: 2026-07-
|
|
4
|
+
# Generated: 2026-07-28T21:34:14Z
|
|
5
5
|
|
|
6
6
|
require "json"
|
|
7
7
|
require "time"
|
|
@@ -288,6 +288,60 @@ module Basecamp
|
|
|
288
288
|
end
|
|
289
289
|
end
|
|
290
290
|
|
|
291
|
+
# BucketCardsGroup
|
|
292
|
+
class BucketCardsGroup
|
|
293
|
+
include TypeHelpers
|
|
294
|
+
attr_accessor :bucket, :cards
|
|
295
|
+
|
|
296
|
+
# @return [Array<Symbol>]
|
|
297
|
+
def self.required_fields
|
|
298
|
+
%i[bucket cards].freeze
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def initialize(data = {})
|
|
302
|
+
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
303
|
+
@cards = parse_array(data["cards"], "Card")
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def to_h
|
|
307
|
+
{
|
|
308
|
+
"bucket" => @bucket,
|
|
309
|
+
"cards" => @cards,
|
|
310
|
+
}.compact
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def to_json(*args)
|
|
314
|
+
to_h.to_json(*args)
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# BucketTodosGroup
|
|
319
|
+
class BucketTodosGroup
|
|
320
|
+
include TypeHelpers
|
|
321
|
+
attr_accessor :bucket, :todos
|
|
322
|
+
|
|
323
|
+
# @return [Array<Symbol>]
|
|
324
|
+
def self.required_fields
|
|
325
|
+
%i[bucket todos].freeze
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def initialize(data = {})
|
|
329
|
+
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
330
|
+
@todos = parse_array(data["todos"], "Todo")
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
def to_h
|
|
334
|
+
{
|
|
335
|
+
"bucket" => @bucket,
|
|
336
|
+
"todos" => @todos,
|
|
337
|
+
}.compact
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def to_json(*args)
|
|
341
|
+
to_h.to_json(*args)
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
291
345
|
# Campfire
|
|
292
346
|
class Campfire
|
|
293
347
|
include TypeHelpers
|
|
@@ -439,11 +493,11 @@ module Basecamp
|
|
|
439
493
|
# Card
|
|
440
494
|
class Card
|
|
441
495
|
include TypeHelpers
|
|
442
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :assignees, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completed_at, :completer, :completion_subscribers, :completion_url, :content, :description, :due_on, :position, :steps, :subscription_url
|
|
496
|
+
attr_accessor :app_url, :bucket, :created_at, :creator, :description_attachments, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :assignees, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completed_at, :completer, :completion_subscribers, :completion_url, :content, :description, :due_on, :position, :steps, :subscription_url
|
|
443
497
|
|
|
444
498
|
# @return [Array<Symbol>]
|
|
445
499
|
def self.required_fields
|
|
446
|
-
%i[app_url bucket created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
500
|
+
%i[app_url bucket created_at creator description_attachments id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
447
501
|
end
|
|
448
502
|
|
|
449
503
|
def initialize(data = {})
|
|
@@ -451,6 +505,7 @@ module Basecamp
|
|
|
451
505
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
452
506
|
@created_at = parse_datetime(data["created_at"])
|
|
453
507
|
@creator = parse_type(data["creator"], "Person")
|
|
508
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
454
509
|
@id = parse_integer(data["id"])
|
|
455
510
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
456
511
|
@parent = parse_type(data["parent"], "RecordingParent")
|
|
@@ -485,6 +540,7 @@ module Basecamp
|
|
|
485
540
|
"bucket" => @bucket,
|
|
486
541
|
"created_at" => @created_at,
|
|
487
542
|
"creator" => @creator,
|
|
543
|
+
"description_attachments" => @description_attachments,
|
|
488
544
|
"id" => @id,
|
|
489
545
|
"inherits_status" => @inherits_status,
|
|
490
546
|
"parent" => @parent,
|
|
@@ -693,7 +749,7 @@ module Basecamp
|
|
|
693
749
|
# CardTable
|
|
694
750
|
class CardTable
|
|
695
751
|
include TypeHelpers
|
|
696
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :lists, :subscribers, :subscription_url
|
|
752
|
+
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :lists, :subscribers, :subscription_url, :wormholes
|
|
697
753
|
|
|
698
754
|
# @return [Array<Symbol>]
|
|
699
755
|
def self.required_fields
|
|
@@ -717,6 +773,7 @@ module Basecamp
|
|
|
717
773
|
@lists = parse_array(data["lists"], "CardColumn")
|
|
718
774
|
@subscribers = parse_array(data["subscribers"], "Person")
|
|
719
775
|
@subscription_url = data["subscription_url"]
|
|
776
|
+
@wormholes = parse_array(data["wormholes"], "Wormhole")
|
|
720
777
|
end
|
|
721
778
|
|
|
722
779
|
def to_h
|
|
@@ -737,6 +794,7 @@ module Basecamp
|
|
|
737
794
|
"lists" => @lists,
|
|
738
795
|
"subscribers" => @subscribers,
|
|
739
796
|
"subscription_url" => @subscription_url,
|
|
797
|
+
"wormholes" => @wormholes,
|
|
740
798
|
}.compact
|
|
741
799
|
end
|
|
742
800
|
|
|
@@ -787,16 +845,17 @@ module Basecamp
|
|
|
787
845
|
# ClientApproval
|
|
788
846
|
class ClientApproval
|
|
789
847
|
include TypeHelpers
|
|
790
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :approval_status, :approver, :bookmark_url, :content, :due_on, :replies_count, :replies_url, :responses, :subject, :subscription_url
|
|
848
|
+
attr_accessor :app_url, :bucket, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :approval_status, :approver, :bookmark_url, :content, :due_on, :replies_count, :replies_url, :responses, :subject, :subscription_url
|
|
791
849
|
|
|
792
850
|
# @return [Array<Symbol>]
|
|
793
851
|
def self.required_fields
|
|
794
|
-
%i[app_url bucket created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
852
|
+
%i[app_url bucket content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
795
853
|
end
|
|
796
854
|
|
|
797
855
|
def initialize(data = {})
|
|
798
856
|
@app_url = data["app_url"]
|
|
799
857
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
858
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
800
859
|
@created_at = parse_datetime(data["created_at"])
|
|
801
860
|
@creator = parse_type(data["creator"], "Person")
|
|
802
861
|
@id = parse_integer(data["id"])
|
|
@@ -824,6 +883,7 @@ module Basecamp
|
|
|
824
883
|
{
|
|
825
884
|
"app_url" => @app_url,
|
|
826
885
|
"bucket" => @bucket,
|
|
886
|
+
"content_attachments" => @content_attachments,
|
|
827
887
|
"created_at" => @created_at,
|
|
828
888
|
"creator" => @creator,
|
|
829
889
|
"id" => @id,
|
|
@@ -931,16 +991,17 @@ module Basecamp
|
|
|
931
991
|
# ClientCorrespondence
|
|
932
992
|
class ClientCorrespondence
|
|
933
993
|
include TypeHelpers
|
|
934
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :content, :replies_count, :replies_url, :subscription_url
|
|
994
|
+
attr_accessor :app_url, :bucket, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :content, :replies_count, :replies_url, :subscription_url
|
|
935
995
|
|
|
936
996
|
# @return [Array<Symbol>]
|
|
937
997
|
def self.required_fields
|
|
938
|
-
%i[app_url bucket created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
998
|
+
%i[app_url bucket content_attachments created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
939
999
|
end
|
|
940
1000
|
|
|
941
1001
|
def initialize(data = {})
|
|
942
1002
|
@app_url = data["app_url"]
|
|
943
1003
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
1004
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
944
1005
|
@created_at = parse_datetime(data["created_at"])
|
|
945
1006
|
@creator = parse_type(data["creator"], "Person")
|
|
946
1007
|
@id = parse_integer(data["id"])
|
|
@@ -964,6 +1025,7 @@ module Basecamp
|
|
|
964
1025
|
{
|
|
965
1026
|
"app_url" => @app_url,
|
|
966
1027
|
"bucket" => @bucket,
|
|
1028
|
+
"content_attachments" => @content_attachments,
|
|
967
1029
|
"created_at" => @created_at,
|
|
968
1030
|
"creator" => @creator,
|
|
969
1031
|
"id" => @id,
|
|
@@ -992,17 +1054,18 @@ module Basecamp
|
|
|
992
1054
|
# ClientReply
|
|
993
1055
|
class ClientReply
|
|
994
1056
|
include TypeHelpers
|
|
995
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url
|
|
1057
|
+
attr_accessor :app_url, :bucket, :content, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url
|
|
996
1058
|
|
|
997
1059
|
# @return [Array<Symbol>]
|
|
998
1060
|
def self.required_fields
|
|
999
|
-
%i[app_url bucket content created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1061
|
+
%i[app_url bucket content content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1000
1062
|
end
|
|
1001
1063
|
|
|
1002
1064
|
def initialize(data = {})
|
|
1003
1065
|
@app_url = data["app_url"]
|
|
1004
1066
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
1005
1067
|
@content = data["content"]
|
|
1068
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1006
1069
|
@created_at = parse_datetime(data["created_at"])
|
|
1007
1070
|
@creator = parse_type(data["creator"], "Person")
|
|
1008
1071
|
@id = parse_integer(data["id"])
|
|
@@ -1022,6 +1085,7 @@ module Basecamp
|
|
|
1022
1085
|
"app_url" => @app_url,
|
|
1023
1086
|
"bucket" => @bucket,
|
|
1024
1087
|
"content" => @content,
|
|
1088
|
+
"content_attachments" => @content_attachments,
|
|
1025
1089
|
"created_at" => @created_at,
|
|
1026
1090
|
"creator" => @creator,
|
|
1027
1091
|
"id" => @id,
|
|
@@ -1043,6 +1107,7 @@ module Basecamp
|
|
|
1043
1107
|
end
|
|
1044
1108
|
|
|
1045
1109
|
# ClientSide
|
|
1110
|
+
# @deprecated This shape is deprecated since 2024-01: Use Client Visibility feature instead
|
|
1046
1111
|
class ClientSide
|
|
1047
1112
|
include TypeHelpers
|
|
1048
1113
|
attr_accessor :app_url, :url
|
|
@@ -1067,17 +1132,18 @@ module Basecamp
|
|
|
1067
1132
|
# Comment
|
|
1068
1133
|
class Comment
|
|
1069
1134
|
include TypeHelpers
|
|
1070
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url
|
|
1135
|
+
attr_accessor :app_url, :bucket, :content, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url
|
|
1071
1136
|
|
|
1072
1137
|
# @return [Array<Symbol>]
|
|
1073
1138
|
def self.required_fields
|
|
1074
|
-
%i[app_url bucket content created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1139
|
+
%i[app_url bucket content content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1075
1140
|
end
|
|
1076
1141
|
|
|
1077
1142
|
def initialize(data = {})
|
|
1078
1143
|
@app_url = data["app_url"]
|
|
1079
1144
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
1080
1145
|
@content = data["content"]
|
|
1146
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1081
1147
|
@created_at = parse_datetime(data["created_at"])
|
|
1082
1148
|
@creator = parse_type(data["creator"], "Person")
|
|
1083
1149
|
@id = parse_integer(data["id"])
|
|
@@ -1099,6 +1165,7 @@ module Basecamp
|
|
|
1099
1165
|
"app_url" => @app_url,
|
|
1100
1166
|
"bucket" => @bucket,
|
|
1101
1167
|
"content" => @content,
|
|
1168
|
+
"content_attachments" => @content_attachments,
|
|
1102
1169
|
"created_at" => @created_at,
|
|
1103
1170
|
"creator" => @creator,
|
|
1104
1171
|
"id" => @id,
|
|
@@ -1192,16 +1259,17 @@ module Basecamp
|
|
|
1192
1259
|
# Document
|
|
1193
1260
|
class Document
|
|
1194
1261
|
include TypeHelpers
|
|
1195
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :content, :position, :subscription_url
|
|
1262
|
+
attr_accessor :app_url, :bucket, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :content, :position, :subscription_url
|
|
1196
1263
|
|
|
1197
1264
|
# @return [Array<Symbol>]
|
|
1198
1265
|
def self.required_fields
|
|
1199
|
-
%i[app_url bucket created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1266
|
+
%i[app_url bucket content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1200
1267
|
end
|
|
1201
1268
|
|
|
1202
1269
|
def initialize(data = {})
|
|
1203
1270
|
@app_url = data["app_url"]
|
|
1204
1271
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
1272
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1205
1273
|
@created_at = parse_datetime(data["created_at"])
|
|
1206
1274
|
@creator = parse_type(data["creator"], "Person")
|
|
1207
1275
|
@id = parse_integer(data["id"])
|
|
@@ -1227,6 +1295,7 @@ module Basecamp
|
|
|
1227
1295
|
{
|
|
1228
1296
|
"app_url" => @app_url,
|
|
1229
1297
|
"bucket" => @bucket,
|
|
1298
|
+
"content_attachments" => @content_attachments,
|
|
1230
1299
|
"created_at" => @created_at,
|
|
1231
1300
|
"creator" => @creator,
|
|
1232
1301
|
"id" => @id,
|
|
@@ -1254,6 +1323,34 @@ module Basecamp
|
|
|
1254
1323
|
end
|
|
1255
1324
|
end
|
|
1256
1325
|
|
|
1326
|
+
# DoorService
|
|
1327
|
+
class DoorService
|
|
1328
|
+
include TypeHelpers
|
|
1329
|
+
attr_accessor :code, :example_url, :name, :supporting_text, :valid_patterns
|
|
1330
|
+
|
|
1331
|
+
def initialize(data = {})
|
|
1332
|
+
@code = data["code"]
|
|
1333
|
+
@example_url = data["example_url"]
|
|
1334
|
+
@name = data["name"]
|
|
1335
|
+
@supporting_text = data["supporting_text"]
|
|
1336
|
+
@valid_patterns = data["valid_patterns"]
|
|
1337
|
+
end
|
|
1338
|
+
|
|
1339
|
+
def to_h
|
|
1340
|
+
{
|
|
1341
|
+
"code" => @code,
|
|
1342
|
+
"example_url" => @example_url,
|
|
1343
|
+
"name" => @name,
|
|
1344
|
+
"supporting_text" => @supporting_text,
|
|
1345
|
+
"valid_patterns" => @valid_patterns,
|
|
1346
|
+
}.compact
|
|
1347
|
+
end
|
|
1348
|
+
|
|
1349
|
+
def to_json(*args)
|
|
1350
|
+
to_h.to_json(*args)
|
|
1351
|
+
end
|
|
1352
|
+
end
|
|
1353
|
+
|
|
1257
1354
|
# Event
|
|
1258
1355
|
class Event
|
|
1259
1356
|
include TypeHelpers
|
|
@@ -1317,19 +1414,135 @@ module Basecamp
|
|
|
1317
1414
|
end
|
|
1318
1415
|
end
|
|
1319
1416
|
|
|
1417
|
+
# EverythingBoost
|
|
1418
|
+
class EverythingBoost
|
|
1419
|
+
include TypeHelpers
|
|
1420
|
+
attr_accessor :booster, :content, :created_at, :id, :recording
|
|
1421
|
+
|
|
1422
|
+
# @return [Array<Symbol>]
|
|
1423
|
+
def self.required_fields
|
|
1424
|
+
%i[booster content created_at id recording].freeze
|
|
1425
|
+
end
|
|
1426
|
+
|
|
1427
|
+
def initialize(data = {})
|
|
1428
|
+
@booster = parse_type(data["booster"], "Person")
|
|
1429
|
+
@content = data["content"]
|
|
1430
|
+
@created_at = parse_datetime(data["created_at"])
|
|
1431
|
+
@id = parse_integer(data["id"])
|
|
1432
|
+
@recording = parse_type(data["recording"], "Recording")
|
|
1433
|
+
end
|
|
1434
|
+
|
|
1435
|
+
def to_h
|
|
1436
|
+
{
|
|
1437
|
+
"booster" => @booster,
|
|
1438
|
+
"content" => @content,
|
|
1439
|
+
"created_at" => @created_at,
|
|
1440
|
+
"id" => @id,
|
|
1441
|
+
"recording" => @recording,
|
|
1442
|
+
}.compact
|
|
1443
|
+
end
|
|
1444
|
+
|
|
1445
|
+
def to_json(*args)
|
|
1446
|
+
to_h.to_json(*args)
|
|
1447
|
+
end
|
|
1448
|
+
end
|
|
1449
|
+
|
|
1450
|
+
# EverythingFile
|
|
1451
|
+
class EverythingFile
|
|
1452
|
+
include TypeHelpers
|
|
1453
|
+
attr_accessor :app_download_url, :app_url, :attachable_sgid, :bookmark_url, :boosts_count, :boosts_url, :bucket, :byte_size, :comments_count, :comments_url, :content, :content_attachments, :content_type, :created_at, :creator, :description, :description_attachments, :download_url, :filename, :height, :id, :inherits_status, :parent, :position, :status, :subscription_url, :title, :type, :updated_at, :url, :visible_to_clients, :width
|
|
1454
|
+
|
|
1455
|
+
def initialize(data = {})
|
|
1456
|
+
@app_download_url = data["app_download_url"]
|
|
1457
|
+
@app_url = data["app_url"]
|
|
1458
|
+
@attachable_sgid = data["attachable_sgid"]
|
|
1459
|
+
@bookmark_url = data["bookmark_url"]
|
|
1460
|
+
@boosts_count = parse_integer(data["boosts_count"])
|
|
1461
|
+
@boosts_url = data["boosts_url"]
|
|
1462
|
+
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
1463
|
+
@byte_size = parse_integer(data["byte_size"])
|
|
1464
|
+
@comments_count = parse_integer(data["comments_count"])
|
|
1465
|
+
@comments_url = data["comments_url"]
|
|
1466
|
+
@content = data["content"]
|
|
1467
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1468
|
+
@content_type = data["content_type"]
|
|
1469
|
+
@created_at = parse_datetime(data["created_at"])
|
|
1470
|
+
@creator = parse_type(data["creator"], "Person")
|
|
1471
|
+
@description = data["description"]
|
|
1472
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
1473
|
+
@download_url = data["download_url"]
|
|
1474
|
+
@filename = data["filename"]
|
|
1475
|
+
@height = parse_integer(data["height"])
|
|
1476
|
+
@id = parse_integer(data["id"])
|
|
1477
|
+
@inherits_status = parse_boolean(data["inherits_status"])
|
|
1478
|
+
@parent = parse_type(data["parent"], "RecordingParent")
|
|
1479
|
+
@position = parse_integer(data["position"])
|
|
1480
|
+
@status = data["status"]
|
|
1481
|
+
@subscription_url = data["subscription_url"]
|
|
1482
|
+
@title = data["title"]
|
|
1483
|
+
@type = data["type"]
|
|
1484
|
+
@updated_at = parse_datetime(data["updated_at"])
|
|
1485
|
+
@url = data["url"]
|
|
1486
|
+
@visible_to_clients = parse_boolean(data["visible_to_clients"])
|
|
1487
|
+
@width = parse_integer(data["width"])
|
|
1488
|
+
end
|
|
1489
|
+
|
|
1490
|
+
def to_h
|
|
1491
|
+
{
|
|
1492
|
+
"app_download_url" => @app_download_url,
|
|
1493
|
+
"app_url" => @app_url,
|
|
1494
|
+
"attachable_sgid" => @attachable_sgid,
|
|
1495
|
+
"bookmark_url" => @bookmark_url,
|
|
1496
|
+
"boosts_count" => @boosts_count,
|
|
1497
|
+
"boosts_url" => @boosts_url,
|
|
1498
|
+
"bucket" => @bucket,
|
|
1499
|
+
"byte_size" => @byte_size,
|
|
1500
|
+
"comments_count" => @comments_count,
|
|
1501
|
+
"comments_url" => @comments_url,
|
|
1502
|
+
"content" => @content,
|
|
1503
|
+
"content_attachments" => @content_attachments,
|
|
1504
|
+
"content_type" => @content_type,
|
|
1505
|
+
"created_at" => @created_at,
|
|
1506
|
+
"creator" => @creator,
|
|
1507
|
+
"description" => @description,
|
|
1508
|
+
"description_attachments" => @description_attachments,
|
|
1509
|
+
"download_url" => @download_url,
|
|
1510
|
+
"filename" => @filename,
|
|
1511
|
+
"height" => @height,
|
|
1512
|
+
"id" => @id,
|
|
1513
|
+
"inherits_status" => @inherits_status,
|
|
1514
|
+
"parent" => @parent,
|
|
1515
|
+
"position" => @position,
|
|
1516
|
+
"status" => @status,
|
|
1517
|
+
"subscription_url" => @subscription_url,
|
|
1518
|
+
"title" => @title,
|
|
1519
|
+
"type" => @type,
|
|
1520
|
+
"updated_at" => @updated_at,
|
|
1521
|
+
"url" => @url,
|
|
1522
|
+
"visible_to_clients" => @visible_to_clients,
|
|
1523
|
+
"width" => @width,
|
|
1524
|
+
}.compact
|
|
1525
|
+
end
|
|
1526
|
+
|
|
1527
|
+
def to_json(*args)
|
|
1528
|
+
to_h.to_json(*args)
|
|
1529
|
+
end
|
|
1530
|
+
end
|
|
1531
|
+
|
|
1320
1532
|
# Forward
|
|
1321
1533
|
class Forward
|
|
1322
1534
|
include TypeHelpers
|
|
1323
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :content, :from, :replies_count, :replies_url, :subscription_url
|
|
1535
|
+
attr_accessor :app_url, :bucket, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :content, :from, :replies_count, :replies_url, :subscription_url
|
|
1324
1536
|
|
|
1325
1537
|
# @return [Array<Symbol>]
|
|
1326
1538
|
def self.required_fields
|
|
1327
|
-
%i[app_url bucket created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
1539
|
+
%i[app_url bucket content_attachments created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
1328
1540
|
end
|
|
1329
1541
|
|
|
1330
1542
|
def initialize(data = {})
|
|
1331
1543
|
@app_url = data["app_url"]
|
|
1332
1544
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
1545
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1333
1546
|
@created_at = parse_datetime(data["created_at"])
|
|
1334
1547
|
@creator = parse_type(data["creator"], "Person")
|
|
1335
1548
|
@id = parse_integer(data["id"])
|
|
@@ -1354,6 +1567,7 @@ module Basecamp
|
|
|
1354
1567
|
{
|
|
1355
1568
|
"app_url" => @app_url,
|
|
1356
1569
|
"bucket" => @bucket,
|
|
1570
|
+
"content_attachments" => @content_attachments,
|
|
1357
1571
|
"created_at" => @created_at,
|
|
1358
1572
|
"creator" => @creator,
|
|
1359
1573
|
"id" => @id,
|
|
@@ -1383,17 +1597,18 @@ module Basecamp
|
|
|
1383
1597
|
# ForwardReply
|
|
1384
1598
|
class ForwardReply
|
|
1385
1599
|
include TypeHelpers
|
|
1386
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url
|
|
1600
|
+
attr_accessor :app_url, :bucket, :content, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url
|
|
1387
1601
|
|
|
1388
1602
|
# @return [Array<Symbol>]
|
|
1389
1603
|
def self.required_fields
|
|
1390
|
-
%i[app_url bucket content created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1604
|
+
%i[app_url bucket content content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
1391
1605
|
end
|
|
1392
1606
|
|
|
1393
1607
|
def initialize(data = {})
|
|
1394
1608
|
@app_url = data["app_url"]
|
|
1395
1609
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
1396
1610
|
@content = data["content"]
|
|
1611
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1397
1612
|
@created_at = parse_datetime(data["created_at"])
|
|
1398
1613
|
@creator = parse_type(data["creator"], "Person")
|
|
1399
1614
|
@id = parse_integer(data["id"])
|
|
@@ -1415,6 +1630,7 @@ module Basecamp
|
|
|
1415
1630
|
"app_url" => @app_url,
|
|
1416
1631
|
"bucket" => @bucket,
|
|
1417
1632
|
"content" => @content,
|
|
1633
|
+
"content_attachments" => @content_attachments,
|
|
1418
1634
|
"created_at" => @created_at,
|
|
1419
1635
|
"creator" => @creator,
|
|
1420
1636
|
"id" => @id,
|
|
@@ -1440,7 +1656,7 @@ module Basecamp
|
|
|
1440
1656
|
# Gauge
|
|
1441
1657
|
class Gauge
|
|
1442
1658
|
include TypeHelpers
|
|
1443
|
-
attr_accessor :created_at, :id, :updated_at, :app_url, :bookmark_url, :bucket, :creator, :description, :enabled, :inherits_status, :last_needle_color, :last_needle_position, :previous_needle_position, :status, :title, :type, :url, :visible_to_clients
|
|
1659
|
+
attr_accessor :created_at, :id, :updated_at, :app_url, :bookmark_url, :bucket, :creator, :description, :description_attachments, :enabled, :inherits_status, :last_needle_color, :last_needle_position, :previous_needle_position, :status, :title, :type, :url, :visible_to_clients
|
|
1444
1660
|
|
|
1445
1661
|
# @return [Array<Symbol>]
|
|
1446
1662
|
def self.required_fields
|
|
@@ -1456,6 +1672,7 @@ module Basecamp
|
|
|
1456
1672
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
1457
1673
|
@creator = parse_type(data["creator"], "Person")
|
|
1458
1674
|
@description = data["description"]
|
|
1675
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
1459
1676
|
@enabled = parse_boolean(data["enabled"])
|
|
1460
1677
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
1461
1678
|
@last_needle_color = data["last_needle_color"]
|
|
@@ -1478,6 +1695,7 @@ module Basecamp
|
|
|
1478
1695
|
"bucket" => @bucket,
|
|
1479
1696
|
"creator" => @creator,
|
|
1480
1697
|
"description" => @description,
|
|
1698
|
+
"description_attachments" => @description_attachments,
|
|
1481
1699
|
"enabled" => @enabled,
|
|
1482
1700
|
"inherits_status" => @inherits_status,
|
|
1483
1701
|
"last_needle_color" => @last_needle_color,
|
|
@@ -1499,15 +1717,16 @@ module Basecamp
|
|
|
1499
1717
|
# GaugeNeedle
|
|
1500
1718
|
class GaugeNeedle
|
|
1501
1719
|
include TypeHelpers
|
|
1502
|
-
attr_accessor :created_at, :id, :updated_at, :app_url, :bookmark_url, :boosts_count, :boosts_url, :bucket, :color, :comments_count, :comments_url, :creator, :description, :inherits_status, :parent, :position, :status, :subscription_url, :title, :type, :url, :visible_to_clients
|
|
1720
|
+
attr_accessor :created_at, :description_attachments, :id, :updated_at, :app_url, :bookmark_url, :boosts_count, :boosts_url, :bucket, :color, :comments_count, :comments_url, :creator, :description, :inherits_status, :parent, :position, :status, :subscription_url, :title, :type, :url, :visible_to_clients
|
|
1503
1721
|
|
|
1504
1722
|
# @return [Array<Symbol>]
|
|
1505
1723
|
def self.required_fields
|
|
1506
|
-
%i[created_at id updated_at].freeze
|
|
1724
|
+
%i[created_at description_attachments id updated_at].freeze
|
|
1507
1725
|
end
|
|
1508
1726
|
|
|
1509
1727
|
def initialize(data = {})
|
|
1510
1728
|
@created_at = parse_datetime(data["created_at"])
|
|
1729
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
1511
1730
|
@id = parse_integer(data["id"])
|
|
1512
1731
|
@updated_at = parse_datetime(data["updated_at"])
|
|
1513
1732
|
@app_url = data["app_url"]
|
|
@@ -1534,6 +1753,7 @@ module Basecamp
|
|
|
1534
1753
|
def to_h
|
|
1535
1754
|
{
|
|
1536
1755
|
"created_at" => @created_at,
|
|
1756
|
+
"description_attachments" => @description_attachments,
|
|
1537
1757
|
"id" => @id,
|
|
1538
1758
|
"updated_at" => @updated_at,
|
|
1539
1759
|
"app_url" => @app_url,
|
|
@@ -1798,17 +2018,18 @@ module Basecamp
|
|
|
1798
2018
|
# Message
|
|
1799
2019
|
class Message
|
|
1800
2020
|
include TypeHelpers
|
|
1801
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :category, :comments_count, :comments_url, :subscription_url
|
|
2021
|
+
attr_accessor :app_url, :bucket, :content, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :subject, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :category, :comments_count, :comments_url, :subscription_url
|
|
1802
2022
|
|
|
1803
2023
|
# @return [Array<Symbol>]
|
|
1804
2024
|
def self.required_fields
|
|
1805
|
-
%i[app_url bucket content created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
2025
|
+
%i[app_url bucket content content_attachments created_at creator id inherits_status parent status subject title type updated_at url visible_to_clients].freeze
|
|
1806
2026
|
end
|
|
1807
2027
|
|
|
1808
2028
|
def initialize(data = {})
|
|
1809
2029
|
@app_url = data["app_url"]
|
|
1810
2030
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
1811
2031
|
@content = data["content"]
|
|
2032
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
1812
2033
|
@created_at = parse_datetime(data["created_at"])
|
|
1813
2034
|
@creator = parse_type(data["creator"], "Person")
|
|
1814
2035
|
@id = parse_integer(data["id"])
|
|
@@ -1835,6 +2056,7 @@ module Basecamp
|
|
|
1835
2056
|
"app_url" => @app_url,
|
|
1836
2057
|
"bucket" => @bucket,
|
|
1837
2058
|
"content" => @content,
|
|
2059
|
+
"content_attachments" => @content_attachments,
|
|
1838
2060
|
"created_at" => @created_at,
|
|
1839
2061
|
"creator" => @creator,
|
|
1840
2062
|
"id" => @id,
|
|
@@ -2437,6 +2659,8 @@ module Basecamp
|
|
|
2437
2659
|
# Project
|
|
2438
2660
|
class Project
|
|
2439
2661
|
include TypeHelpers
|
|
2662
|
+
# @!attribute [rw] clientside
|
|
2663
|
+
# @deprecated This shape is deprecated since 2024-01: Use Client Visibility feature instead
|
|
2440
2664
|
attr_accessor :app_url, :created_at, :id, :name, :status, :updated_at, :url, :bookmark_url, :bookmarked, :client_company, :clients_enabled, :clientside, :description, :dock, :end_date, :purpose, :start_date
|
|
2441
2665
|
|
|
2442
2666
|
# @return [Array<Symbol>]
|
|
@@ -2544,6 +2768,33 @@ module Basecamp
|
|
|
2544
2768
|
end
|
|
2545
2769
|
end
|
|
2546
2770
|
|
|
2771
|
+
# ProjectConstructionAttributes
|
|
2772
|
+
class ProjectConstructionAttributes
|
|
2773
|
+
include TypeHelpers
|
|
2774
|
+
attr_accessor :name, :description
|
|
2775
|
+
|
|
2776
|
+
# @return [Array<Symbol>]
|
|
2777
|
+
def self.required_fields
|
|
2778
|
+
%i[name].freeze
|
|
2779
|
+
end
|
|
2780
|
+
|
|
2781
|
+
def initialize(data = {})
|
|
2782
|
+
@name = data["name"]
|
|
2783
|
+
@description = data["description"]
|
|
2784
|
+
end
|
|
2785
|
+
|
|
2786
|
+
def to_h
|
|
2787
|
+
{
|
|
2788
|
+
"name" => @name,
|
|
2789
|
+
"description" => @description,
|
|
2790
|
+
}.compact
|
|
2791
|
+
end
|
|
2792
|
+
|
|
2793
|
+
def to_json(*args)
|
|
2794
|
+
to_h.to_json(*args)
|
|
2795
|
+
end
|
|
2796
|
+
end
|
|
2797
|
+
|
|
2547
2798
|
# Question
|
|
2548
2799
|
class Question
|
|
2549
2800
|
include TypeHelpers
|
|
@@ -2608,17 +2859,18 @@ module Basecamp
|
|
|
2608
2859
|
# QuestionAnswer
|
|
2609
2860
|
class QuestionAnswer
|
|
2610
2861
|
include TypeHelpers
|
|
2611
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :group_on, :subscription_url
|
|
2862
|
+
attr_accessor :app_url, :bucket, :content, :content_attachments, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :group_on, :subscription_url
|
|
2612
2863
|
|
|
2613
2864
|
# @return [Array<Symbol>]
|
|
2614
2865
|
def self.required_fields
|
|
2615
|
-
%i[app_url bucket content created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
2866
|
+
%i[app_url bucket content content_attachments created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
2616
2867
|
end
|
|
2617
2868
|
|
|
2618
2869
|
def initialize(data = {})
|
|
2619
2870
|
@app_url = data["app_url"]
|
|
2620
2871
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
2621
2872
|
@content = data["content"]
|
|
2873
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
2622
2874
|
@created_at = parse_datetime(data["created_at"])
|
|
2623
2875
|
@creator = parse_type(data["creator"], "Person")
|
|
2624
2876
|
@id = parse_integer(data["id"])
|
|
@@ -2644,6 +2896,7 @@ module Basecamp
|
|
|
2644
2896
|
"app_url" => @app_url,
|
|
2645
2897
|
"bucket" => @bucket,
|
|
2646
2898
|
"content" => @content,
|
|
2899
|
+
"content_attachments" => @content_attachments,
|
|
2647
2900
|
"created_at" => @created_at,
|
|
2648
2901
|
"creator" => @creator,
|
|
2649
2902
|
"id" => @id,
|
|
@@ -2844,11 +3097,11 @@ module Basecamp
|
|
|
2844
3097
|
# Recording
|
|
2845
3098
|
class Recording
|
|
2846
3099
|
include TypeHelpers
|
|
2847
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :
|
|
3100
|
+
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :bubble_up_url, :category, :comments_count, :comments_url, :content, :content_attachments, :description, :description_attachments, :from, :group_on, :parent, :position, :replies_count, :replies_url, :service, :subject, :subscription_url
|
|
2848
3101
|
|
|
2849
3102
|
# @return [Array<Symbol>]
|
|
2850
3103
|
def self.required_fields
|
|
2851
|
-
%i[app_url bucket created_at creator id inherits_status
|
|
3104
|
+
%i[app_url bucket created_at creator id inherits_status status title type updated_at url visible_to_clients].freeze
|
|
2852
3105
|
end
|
|
2853
3106
|
|
|
2854
3107
|
def initialize(data = {})
|
|
@@ -2858,7 +3111,6 @@ module Basecamp
|
|
|
2858
3111
|
@creator = parse_type(data["creator"], "Person")
|
|
2859
3112
|
@id = parse_integer(data["id"])
|
|
2860
3113
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
2861
|
-
@parent = parse_type(data["parent"], "RecordingParent")
|
|
2862
3114
|
@status = data["status"]
|
|
2863
3115
|
@title = data["title"]
|
|
2864
3116
|
@type = data["type"]
|
|
@@ -2866,9 +3118,24 @@ module Basecamp
|
|
|
2866
3118
|
@url = data["url"]
|
|
2867
3119
|
@visible_to_clients = parse_boolean(data["visible_to_clients"])
|
|
2868
3120
|
@bookmark_url = data["bookmark_url"]
|
|
3121
|
+
@boosts_count = parse_integer(data["boosts_count"])
|
|
3122
|
+
@boosts_url = data["boosts_url"]
|
|
3123
|
+
@bubble_up_url = data["bubble_up_url"]
|
|
3124
|
+
@category = parse_type(data["category"], "RecordingCategory")
|
|
2869
3125
|
@comments_count = parse_integer(data["comments_count"])
|
|
2870
3126
|
@comments_url = data["comments_url"]
|
|
2871
3127
|
@content = data["content"]
|
|
3128
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
3129
|
+
@description = data["description"]
|
|
3130
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3131
|
+
@from = data["from"]
|
|
3132
|
+
@group_on = data["group_on"]
|
|
3133
|
+
@parent = parse_type(data["parent"], "RecordingParent")
|
|
3134
|
+
@position = parse_integer(data["position"])
|
|
3135
|
+
@replies_count = parse_integer(data["replies_count"])
|
|
3136
|
+
@replies_url = data["replies_url"]
|
|
3137
|
+
@service = parse_type(data["service"], "DoorService")
|
|
3138
|
+
@subject = data["subject"]
|
|
2872
3139
|
@subscription_url = data["subscription_url"]
|
|
2873
3140
|
end
|
|
2874
3141
|
|
|
@@ -2880,7 +3147,6 @@ module Basecamp
|
|
|
2880
3147
|
"creator" => @creator,
|
|
2881
3148
|
"id" => @id,
|
|
2882
3149
|
"inherits_status" => @inherits_status,
|
|
2883
|
-
"parent" => @parent,
|
|
2884
3150
|
"status" => @status,
|
|
2885
3151
|
"title" => @title,
|
|
2886
3152
|
"type" => @type,
|
|
@@ -2888,9 +3154,24 @@ module Basecamp
|
|
|
2888
3154
|
"url" => @url,
|
|
2889
3155
|
"visible_to_clients" => @visible_to_clients,
|
|
2890
3156
|
"bookmark_url" => @bookmark_url,
|
|
3157
|
+
"boosts_count" => @boosts_count,
|
|
3158
|
+
"boosts_url" => @boosts_url,
|
|
3159
|
+
"bubble_up_url" => @bubble_up_url,
|
|
3160
|
+
"category" => @category,
|
|
2891
3161
|
"comments_count" => @comments_count,
|
|
2892
3162
|
"comments_url" => @comments_url,
|
|
2893
3163
|
"content" => @content,
|
|
3164
|
+
"content_attachments" => @content_attachments,
|
|
3165
|
+
"description" => @description,
|
|
3166
|
+
"description_attachments" => @description_attachments,
|
|
3167
|
+
"from" => @from,
|
|
3168
|
+
"group_on" => @group_on,
|
|
3169
|
+
"parent" => @parent,
|
|
3170
|
+
"position" => @position,
|
|
3171
|
+
"replies_count" => @replies_count,
|
|
3172
|
+
"replies_url" => @replies_url,
|
|
3173
|
+
"service" => @service,
|
|
3174
|
+
"subject" => @subject,
|
|
2894
3175
|
"subscription_url" => @subscription_url,
|
|
2895
3176
|
}.compact
|
|
2896
3177
|
end
|
|
@@ -2929,10 +3210,39 @@ module Basecamp
|
|
|
2929
3210
|
end
|
|
2930
3211
|
end
|
|
2931
3212
|
|
|
3213
|
+
# RecordingCategory
|
|
3214
|
+
class RecordingCategory
|
|
3215
|
+
include TypeHelpers
|
|
3216
|
+
attr_accessor :id, :name, :icon
|
|
3217
|
+
|
|
3218
|
+
# @return [Array<Symbol>]
|
|
3219
|
+
def self.required_fields
|
|
3220
|
+
%i[id name].freeze
|
|
3221
|
+
end
|
|
3222
|
+
|
|
3223
|
+
def initialize(data = {})
|
|
3224
|
+
@id = parse_integer(data["id"])
|
|
3225
|
+
@name = data["name"]
|
|
3226
|
+
@icon = data["icon"]
|
|
3227
|
+
end
|
|
3228
|
+
|
|
3229
|
+
def to_h
|
|
3230
|
+
{
|
|
3231
|
+
"id" => @id,
|
|
3232
|
+
"name" => @name,
|
|
3233
|
+
"icon" => @icon,
|
|
3234
|
+
}.compact
|
|
3235
|
+
end
|
|
3236
|
+
|
|
3237
|
+
def to_json(*args)
|
|
3238
|
+
to_h.to_json(*args)
|
|
3239
|
+
end
|
|
3240
|
+
end
|
|
3241
|
+
|
|
2932
3242
|
# RecordingParent
|
|
2933
3243
|
class RecordingParent
|
|
2934
3244
|
include TypeHelpers
|
|
2935
|
-
attr_accessor :app_url, :id, :title, :type, :url
|
|
3245
|
+
attr_accessor :app_url, :id, :title, :type, :url, :bucket
|
|
2936
3246
|
|
|
2937
3247
|
# @return [Array<Symbol>]
|
|
2938
3248
|
def self.required_fields
|
|
@@ -2945,6 +3255,7 @@ module Basecamp
|
|
|
2945
3255
|
@title = data["title"]
|
|
2946
3256
|
@type = data["type"]
|
|
2947
3257
|
@url = data["url"]
|
|
3258
|
+
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
2948
3259
|
end
|
|
2949
3260
|
|
|
2950
3261
|
def to_h
|
|
@@ -2954,6 +3265,52 @@ module Basecamp
|
|
|
2954
3265
|
"title" => @title,
|
|
2955
3266
|
"type" => @type,
|
|
2956
3267
|
"url" => @url,
|
|
3268
|
+
"bucket" => @bucket,
|
|
3269
|
+
}.compact
|
|
3270
|
+
end
|
|
3271
|
+
|
|
3272
|
+
def to_json(*args)
|
|
3273
|
+
to_h.to_json(*args)
|
|
3274
|
+
end
|
|
3275
|
+
end
|
|
3276
|
+
|
|
3277
|
+
# RichTextAttachment
|
|
3278
|
+
class RichTextAttachment
|
|
3279
|
+
include TypeHelpers
|
|
3280
|
+
attr_accessor :byte_size, :content_type, :download_url, :filename, :id, :preview_url, :previewable, :sgid, :thumbnail_url, :height, :width
|
|
3281
|
+
|
|
3282
|
+
# @return [Array<Symbol>]
|
|
3283
|
+
def self.required_fields
|
|
3284
|
+
%i[byte_size content_type download_url filename id preview_url previewable sgid thumbnail_url].freeze
|
|
3285
|
+
end
|
|
3286
|
+
|
|
3287
|
+
def initialize(data = {})
|
|
3288
|
+
@byte_size = parse_integer(data["byte_size"])
|
|
3289
|
+
@content_type = data["content_type"]
|
|
3290
|
+
@download_url = data["download_url"]
|
|
3291
|
+
@filename = data["filename"]
|
|
3292
|
+
@id = parse_integer(data["id"])
|
|
3293
|
+
@preview_url = data["preview_url"]
|
|
3294
|
+
@previewable = parse_boolean(data["previewable"])
|
|
3295
|
+
@sgid = data["sgid"]
|
|
3296
|
+
@thumbnail_url = data["thumbnail_url"]
|
|
3297
|
+
@height = parse_integer(data["height"])
|
|
3298
|
+
@width = parse_integer(data["width"])
|
|
3299
|
+
end
|
|
3300
|
+
|
|
3301
|
+
def to_h
|
|
3302
|
+
{
|
|
3303
|
+
"byte_size" => @byte_size,
|
|
3304
|
+
"content_type" => @content_type,
|
|
3305
|
+
"download_url" => @download_url,
|
|
3306
|
+
"filename" => @filename,
|
|
3307
|
+
"id" => @id,
|
|
3308
|
+
"preview_url" => @preview_url,
|
|
3309
|
+
"previewable" => @previewable,
|
|
3310
|
+
"sgid" => @sgid,
|
|
3311
|
+
"thumbnail_url" => @thumbnail_url,
|
|
3312
|
+
"height" => @height,
|
|
3313
|
+
"width" => @width,
|
|
2957
3314
|
}.compact
|
|
2958
3315
|
end
|
|
2959
3316
|
|
|
@@ -3044,11 +3401,11 @@ module Basecamp
|
|
|
3044
3401
|
# ScheduleEntry
|
|
3045
3402
|
class ScheduleEntry
|
|
3046
3403
|
include TypeHelpers
|
|
3047
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :summary, :title, :type, :updated_at, :url, :visible_to_clients, :all_day, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :description, :ends_at, :participants, :starts_at, :subscription_url
|
|
3404
|
+
attr_accessor :app_url, :bucket, :created_at, :creator, :description_attachments, :id, :inherits_status, :parent, :status, :summary, :title, :type, :updated_at, :url, :visible_to_clients, :all_day, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :description, :ends_at, :participants, :starts_at, :subscription_url
|
|
3048
3405
|
|
|
3049
3406
|
# @return [Array<Symbol>]
|
|
3050
3407
|
def self.required_fields
|
|
3051
|
-
%i[app_url bucket created_at creator id inherits_status parent status summary title type updated_at url visible_to_clients].freeze
|
|
3408
|
+
%i[app_url bucket created_at creator description_attachments id inherits_status parent status summary title type updated_at url visible_to_clients].freeze
|
|
3052
3409
|
end
|
|
3053
3410
|
|
|
3054
3411
|
def initialize(data = {})
|
|
@@ -3056,6 +3413,7 @@ module Basecamp
|
|
|
3056
3413
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3057
3414
|
@created_at = parse_datetime(data["created_at"])
|
|
3058
3415
|
@creator = parse_type(data["creator"], "Person")
|
|
3416
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3059
3417
|
@id = parse_integer(data["id"])
|
|
3060
3418
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3061
3419
|
@parent = parse_type(data["parent"], "RecordingParent")
|
|
@@ -3085,6 +3443,7 @@ module Basecamp
|
|
|
3085
3443
|
"bucket" => @bucket,
|
|
3086
3444
|
"created_at" => @created_at,
|
|
3087
3445
|
"creator" => @creator,
|
|
3446
|
+
"description_attachments" => @description_attachments,
|
|
3088
3447
|
"id" => @id,
|
|
3089
3448
|
"inherits_status" => @inherits_status,
|
|
3090
3449
|
"parent" => @parent,
|
|
@@ -3117,37 +3476,32 @@ module Basecamp
|
|
|
3117
3476
|
# SearchMetadata
|
|
3118
3477
|
class SearchMetadata
|
|
3119
3478
|
include TypeHelpers
|
|
3120
|
-
attr_accessor :
|
|
3121
|
-
|
|
3122
|
-
def initialize(data = {})
|
|
3123
|
-
@projects = parse_array(data["projects"], "SearchProject")
|
|
3124
|
-
end
|
|
3125
|
-
|
|
3126
|
-
def to_h
|
|
3127
|
-
{
|
|
3128
|
-
"projects" => @projects,
|
|
3129
|
-
}.compact
|
|
3130
|
-
end
|
|
3479
|
+
attr_accessor :default_bucket_label, :default_circle_label, :default_creator_label, :default_file_type_label, :default_type_label, :file_search_types, :recording_search_types
|
|
3131
3480
|
|
|
3132
|
-
|
|
3133
|
-
|
|
3481
|
+
# @return [Array<Symbol>]
|
|
3482
|
+
def self.required_fields
|
|
3483
|
+
%i[default_bucket_label default_circle_label default_creator_label default_file_type_label default_type_label file_search_types recording_search_types].freeze
|
|
3134
3484
|
end
|
|
3135
|
-
end
|
|
3136
|
-
|
|
3137
|
-
# SearchProject
|
|
3138
|
-
class SearchProject
|
|
3139
|
-
include TypeHelpers
|
|
3140
|
-
attr_accessor :id, :name
|
|
3141
3485
|
|
|
3142
3486
|
def initialize(data = {})
|
|
3143
|
-
@
|
|
3144
|
-
@
|
|
3487
|
+
@default_bucket_label = data["default_bucket_label"]
|
|
3488
|
+
@default_circle_label = data["default_circle_label"]
|
|
3489
|
+
@default_creator_label = data["default_creator_label"]
|
|
3490
|
+
@default_file_type_label = data["default_file_type_label"]
|
|
3491
|
+
@default_type_label = data["default_type_label"]
|
|
3492
|
+
@file_search_types = parse_array(data["file_search_types"], "SearchType")
|
|
3493
|
+
@recording_search_types = parse_array(data["recording_search_types"], "SearchType")
|
|
3145
3494
|
end
|
|
3146
3495
|
|
|
3147
3496
|
def to_h
|
|
3148
3497
|
{
|
|
3149
|
-
"
|
|
3150
|
-
"
|
|
3498
|
+
"default_bucket_label" => @default_bucket_label,
|
|
3499
|
+
"default_circle_label" => @default_circle_label,
|
|
3500
|
+
"default_creator_label" => @default_creator_label,
|
|
3501
|
+
"default_file_type_label" => @default_file_type_label,
|
|
3502
|
+
"default_type_label" => @default_type_label,
|
|
3503
|
+
"file_search_types" => @file_search_types,
|
|
3504
|
+
"recording_search_types" => @recording_search_types,
|
|
3151
3505
|
}.compact
|
|
3152
3506
|
end
|
|
3153
3507
|
|
|
@@ -3159,27 +3513,32 @@ module Basecamp
|
|
|
3159
3513
|
# SearchResult
|
|
3160
3514
|
class SearchResult
|
|
3161
3515
|
include TypeHelpers
|
|
3162
|
-
attr_accessor :app_url, :id, :title, :type, :url, :bookmark_url, :bucket, :
|
|
3516
|
+
attr_accessor :app_url, :content, :description, :id, :title, :type, :url, :bookmark_url, :bubble_up_url, :bucket, :content_attachments, :created_at, :creator, :description_attachments, :inherits_status, :parent, :plain_text_content, :plain_text_description, :status, :subject, :updated_at, :visible_to_clients
|
|
3163
3517
|
|
|
3164
3518
|
# @return [Array<Symbol>]
|
|
3165
3519
|
def self.required_fields
|
|
3166
|
-
%i[app_url id title type url].freeze
|
|
3520
|
+
%i[app_url content description id title type url].freeze
|
|
3167
3521
|
end
|
|
3168
3522
|
|
|
3169
3523
|
def initialize(data = {})
|
|
3170
3524
|
@app_url = data["app_url"]
|
|
3525
|
+
@content = data["content"]
|
|
3526
|
+
@description = data["description"]
|
|
3171
3527
|
@id = parse_integer(data["id"])
|
|
3172
3528
|
@title = data["title"]
|
|
3173
3529
|
@type = data["type"]
|
|
3174
3530
|
@url = data["url"]
|
|
3175
3531
|
@bookmark_url = data["bookmark_url"]
|
|
3532
|
+
@bubble_up_url = data["bubble_up_url"]
|
|
3176
3533
|
@bucket = parse_type(data["bucket"], "RecordingBucket")
|
|
3177
|
-
@
|
|
3534
|
+
@content_attachments = parse_array(data["content_attachments"], "RichTextAttachment")
|
|
3178
3535
|
@created_at = parse_datetime(data["created_at"])
|
|
3179
3536
|
@creator = parse_type(data["creator"], "Person")
|
|
3180
|
-
@
|
|
3537
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3181
3538
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3182
3539
|
@parent = parse_type(data["parent"], "RecordingParent")
|
|
3540
|
+
@plain_text_content = data["plain_text_content"]
|
|
3541
|
+
@plain_text_description = data["plain_text_description"]
|
|
3183
3542
|
@status = data["status"]
|
|
3184
3543
|
@subject = data["subject"]
|
|
3185
3544
|
@updated_at = parse_datetime(data["updated_at"])
|
|
@@ -3189,23 +3548,55 @@ module Basecamp
|
|
|
3189
3548
|
def to_h
|
|
3190
3549
|
{
|
|
3191
3550
|
"app_url" => @app_url,
|
|
3551
|
+
"content" => @content,
|
|
3552
|
+
"description" => @description,
|
|
3192
3553
|
"id" => @id,
|
|
3193
3554
|
"title" => @title,
|
|
3194
3555
|
"type" => @type,
|
|
3195
3556
|
"url" => @url,
|
|
3196
3557
|
"bookmark_url" => @bookmark_url,
|
|
3558
|
+
"bubble_up_url" => @bubble_up_url,
|
|
3197
3559
|
"bucket" => @bucket,
|
|
3198
|
-
"
|
|
3560
|
+
"content_attachments" => @content_attachments,
|
|
3199
3561
|
"created_at" => @created_at,
|
|
3200
3562
|
"creator" => @creator,
|
|
3201
|
-
"
|
|
3563
|
+
"description_attachments" => @description_attachments,
|
|
3202
3564
|
"inherits_status" => @inherits_status,
|
|
3203
3565
|
"parent" => @parent,
|
|
3566
|
+
"plain_text_content" => @plain_text_content,
|
|
3567
|
+
"plain_text_description" => @plain_text_description,
|
|
3204
3568
|
"status" => @status,
|
|
3205
3569
|
"subject" => @subject,
|
|
3206
3570
|
"updated_at" => @updated_at,
|
|
3207
3571
|
"visible_to_clients" => @visible_to_clients,
|
|
3208
|
-
}.
|
|
3572
|
+
}.reject { |k, v| v.nil? && !["content", "description"].include?(k) }
|
|
3573
|
+
end
|
|
3574
|
+
|
|
3575
|
+
def to_json(*args)
|
|
3576
|
+
to_h.to_json(*args)
|
|
3577
|
+
end
|
|
3578
|
+
end
|
|
3579
|
+
|
|
3580
|
+
# SearchType
|
|
3581
|
+
class SearchType
|
|
3582
|
+
include TypeHelpers
|
|
3583
|
+
attr_accessor :key, :value
|
|
3584
|
+
|
|
3585
|
+
# @return [Array<Symbol>]
|
|
3586
|
+
def self.required_fields
|
|
3587
|
+
%i[key value].freeze
|
|
3588
|
+
end
|
|
3589
|
+
|
|
3590
|
+
def initialize(data = {})
|
|
3591
|
+
@key = data["key"]
|
|
3592
|
+
@value = data["value"]
|
|
3593
|
+
end
|
|
3594
|
+
|
|
3595
|
+
def to_h
|
|
3596
|
+
{
|
|
3597
|
+
"key" => @key,
|
|
3598
|
+
"value" => @value,
|
|
3599
|
+
}.reject { |k, v| v.nil? && !["key"].include?(k) }
|
|
3209
3600
|
end
|
|
3210
3601
|
|
|
3211
3602
|
def to_json(*args)
|
|
@@ -3285,17 +3676,112 @@ module Basecamp
|
|
|
3285
3676
|
end
|
|
3286
3677
|
end
|
|
3287
3678
|
|
|
3679
|
+
# TimelineAttachment
|
|
3680
|
+
class TimelineAttachment
|
|
3681
|
+
include TypeHelpers
|
|
3682
|
+
attr_accessor :app_download_url, :app_url, :attachable_sgid, :bookmark_url, :boosts_count, :boosts_url, :bucket, :byte_size, :caption, :comments_count, :comments_url, :content_type, :created_at, :creator, :description, :description_attachments, :download_url, :filename, :height, :id, :inherits_status, :key, :parent, :position, :preview_url, :previewable, :sgid, :status, :status_url, :subscription_url, :thumbnail_url, :title, :type, :updated_at, :url, :visible_to_clients, :width
|
|
3683
|
+
|
|
3684
|
+
def initialize(data = {})
|
|
3685
|
+
@app_download_url = data["app_download_url"]
|
|
3686
|
+
@app_url = data["app_url"]
|
|
3687
|
+
@attachable_sgid = data["attachable_sgid"]
|
|
3688
|
+
@bookmark_url = data["bookmark_url"]
|
|
3689
|
+
@boosts_count = parse_integer(data["boosts_count"])
|
|
3690
|
+
@boosts_url = data["boosts_url"]
|
|
3691
|
+
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3692
|
+
@byte_size = parse_integer(data["byte_size"])
|
|
3693
|
+
@caption = data["caption"]
|
|
3694
|
+
@comments_count = parse_integer(data["comments_count"])
|
|
3695
|
+
@comments_url = data["comments_url"]
|
|
3696
|
+
@content_type = data["content_type"]
|
|
3697
|
+
@created_at = parse_datetime(data["created_at"])
|
|
3698
|
+
@creator = parse_type(data["creator"], "Person")
|
|
3699
|
+
@description = data["description"]
|
|
3700
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3701
|
+
@download_url = data["download_url"]
|
|
3702
|
+
@filename = data["filename"]
|
|
3703
|
+
@height = parse_integer(data["height"])
|
|
3704
|
+
@id = parse_integer(data["id"])
|
|
3705
|
+
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3706
|
+
@key = data["key"]
|
|
3707
|
+
@parent = parse_type(data["parent"], "RecordingParent")
|
|
3708
|
+
@position = parse_integer(data["position"])
|
|
3709
|
+
@preview_url = data["preview_url"]
|
|
3710
|
+
@previewable = parse_boolean(data["previewable"])
|
|
3711
|
+
@sgid = data["sgid"]
|
|
3712
|
+
@status = data["status"]
|
|
3713
|
+
@status_url = data["status_url"]
|
|
3714
|
+
@subscription_url = data["subscription_url"]
|
|
3715
|
+
@thumbnail_url = data["thumbnail_url"]
|
|
3716
|
+
@title = data["title"]
|
|
3717
|
+
@type = data["type"]
|
|
3718
|
+
@updated_at = parse_datetime(data["updated_at"])
|
|
3719
|
+
@url = data["url"]
|
|
3720
|
+
@visible_to_clients = parse_boolean(data["visible_to_clients"])
|
|
3721
|
+
@width = parse_integer(data["width"])
|
|
3722
|
+
end
|
|
3723
|
+
|
|
3724
|
+
def to_h
|
|
3725
|
+
{
|
|
3726
|
+
"app_download_url" => @app_download_url,
|
|
3727
|
+
"app_url" => @app_url,
|
|
3728
|
+
"attachable_sgid" => @attachable_sgid,
|
|
3729
|
+
"bookmark_url" => @bookmark_url,
|
|
3730
|
+
"boosts_count" => @boosts_count,
|
|
3731
|
+
"boosts_url" => @boosts_url,
|
|
3732
|
+
"bucket" => @bucket,
|
|
3733
|
+
"byte_size" => @byte_size,
|
|
3734
|
+
"caption" => @caption,
|
|
3735
|
+
"comments_count" => @comments_count,
|
|
3736
|
+
"comments_url" => @comments_url,
|
|
3737
|
+
"content_type" => @content_type,
|
|
3738
|
+
"created_at" => @created_at,
|
|
3739
|
+
"creator" => @creator,
|
|
3740
|
+
"description" => @description,
|
|
3741
|
+
"description_attachments" => @description_attachments,
|
|
3742
|
+
"download_url" => @download_url,
|
|
3743
|
+
"filename" => @filename,
|
|
3744
|
+
"height" => @height,
|
|
3745
|
+
"id" => @id,
|
|
3746
|
+
"inherits_status" => @inherits_status,
|
|
3747
|
+
"key" => @key,
|
|
3748
|
+
"parent" => @parent,
|
|
3749
|
+
"position" => @position,
|
|
3750
|
+
"preview_url" => @preview_url,
|
|
3751
|
+
"previewable" => @previewable,
|
|
3752
|
+
"sgid" => @sgid,
|
|
3753
|
+
"status" => @status,
|
|
3754
|
+
"status_url" => @status_url,
|
|
3755
|
+
"subscription_url" => @subscription_url,
|
|
3756
|
+
"thumbnail_url" => @thumbnail_url,
|
|
3757
|
+
"title" => @title,
|
|
3758
|
+
"type" => @type,
|
|
3759
|
+
"updated_at" => @updated_at,
|
|
3760
|
+
"url" => @url,
|
|
3761
|
+
"visible_to_clients" => @visible_to_clients,
|
|
3762
|
+
"width" => @width,
|
|
3763
|
+
}.compact
|
|
3764
|
+
end
|
|
3765
|
+
|
|
3766
|
+
def to_json(*args)
|
|
3767
|
+
to_h.to_json(*args)
|
|
3768
|
+
end
|
|
3769
|
+
end
|
|
3770
|
+
|
|
3288
3771
|
# TimelineEvent
|
|
3289
3772
|
class TimelineEvent
|
|
3290
3773
|
include TypeHelpers
|
|
3291
|
-
attr_accessor :action, :app_url, :bucket, :created_at, :creator, :id, :kind, :parent_recording_id, :summary_excerpt, :target, :title, :url
|
|
3774
|
+
attr_accessor :action, :app_url, :attachments, :avatars_sample, :bucket, :created_at, :creator, :data, :id, :kind, :parent_recording_id, :summary_excerpt, :target, :title, :url
|
|
3292
3775
|
|
|
3293
3776
|
def initialize(data = {})
|
|
3294
3777
|
@action = data["action"]
|
|
3295
3778
|
@app_url = data["app_url"]
|
|
3779
|
+
@attachments = parse_array(data["attachments"], "TimelineAttachment")
|
|
3780
|
+
@avatars_sample = data["avatars_sample"]
|
|
3296
3781
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3297
3782
|
@created_at = parse_datetime(data["created_at"])
|
|
3298
3783
|
@creator = parse_type(data["creator"], "Person")
|
|
3784
|
+
@data = parse_type(data["data"], "TimelineEventData")
|
|
3299
3785
|
@id = parse_integer(data["id"])
|
|
3300
3786
|
@kind = data["kind"]
|
|
3301
3787
|
@parent_recording_id = parse_integer(data["parent_recording_id"])
|
|
@@ -3309,9 +3795,12 @@ module Basecamp
|
|
|
3309
3795
|
{
|
|
3310
3796
|
"action" => @action,
|
|
3311
3797
|
"app_url" => @app_url,
|
|
3798
|
+
"attachments" => @attachments,
|
|
3799
|
+
"avatars_sample" => @avatars_sample,
|
|
3312
3800
|
"bucket" => @bucket,
|
|
3313
3801
|
"created_at" => @created_at,
|
|
3314
3802
|
"creator" => @creator,
|
|
3803
|
+
"data" => @data,
|
|
3315
3804
|
"id" => @id,
|
|
3316
3805
|
"kind" => @kind,
|
|
3317
3806
|
"parent_recording_id" => @parent_recording_id,
|
|
@@ -3327,6 +3816,35 @@ module Basecamp
|
|
|
3327
3816
|
end
|
|
3328
3817
|
end
|
|
3329
3818
|
|
|
3819
|
+
# TimelineEventData
|
|
3820
|
+
class TimelineEventData
|
|
3821
|
+
include TypeHelpers
|
|
3822
|
+
attr_accessor :all_day, :ends_at, :starts_at
|
|
3823
|
+
|
|
3824
|
+
# @return [Array<Symbol>]
|
|
3825
|
+
def self.required_fields
|
|
3826
|
+
%i[all_day ends_at starts_at].freeze
|
|
3827
|
+
end
|
|
3828
|
+
|
|
3829
|
+
def initialize(data = {})
|
|
3830
|
+
@all_day = parse_boolean(data["all_day"])
|
|
3831
|
+
@ends_at = data["ends_at"]
|
|
3832
|
+
@starts_at = data["starts_at"]
|
|
3833
|
+
end
|
|
3834
|
+
|
|
3835
|
+
def to_h
|
|
3836
|
+
{
|
|
3837
|
+
"all_day" => @all_day,
|
|
3838
|
+
"ends_at" => @ends_at,
|
|
3839
|
+
"starts_at" => @starts_at,
|
|
3840
|
+
}.reject { |k, v| v.nil? && !["ends_at", "starts_at"].include?(k) }
|
|
3841
|
+
end
|
|
3842
|
+
|
|
3843
|
+
def to_json(*args)
|
|
3844
|
+
to_h.to_json(*args)
|
|
3845
|
+
end
|
|
3846
|
+
end
|
|
3847
|
+
|
|
3330
3848
|
# TimesheetEntry
|
|
3331
3849
|
class TimesheetEntry
|
|
3332
3850
|
include TypeHelpers
|
|
@@ -3389,11 +3907,11 @@ module Basecamp
|
|
|
3389
3907
|
# Todo
|
|
3390
3908
|
class Todo
|
|
3391
3909
|
include TypeHelpers
|
|
3392
|
-
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :assignees, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completion_subscribers, :completion_url, :description, :due_on, :position, :starts_on, :steps, :subscription_url
|
|
3910
|
+
attr_accessor :app_url, :bucket, :content, :created_at, :creator, :description_attachments, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :assignees, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completion_subscribers, :completion_url, :description, :due_on, :position, :starts_on, :steps, :subscription_url
|
|
3393
3911
|
|
|
3394
3912
|
# @return [Array<Symbol>]
|
|
3395
3913
|
def self.required_fields
|
|
3396
|
-
%i[app_url bucket content created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
3914
|
+
%i[app_url bucket content created_at creator description_attachments id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
3397
3915
|
end
|
|
3398
3916
|
|
|
3399
3917
|
def initialize(data = {})
|
|
@@ -3402,6 +3920,7 @@ module Basecamp
|
|
|
3402
3920
|
@content = data["content"]
|
|
3403
3921
|
@created_at = parse_datetime(data["created_at"])
|
|
3404
3922
|
@creator = parse_type(data["creator"], "Person")
|
|
3923
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3405
3924
|
@id = parse_integer(data["id"])
|
|
3406
3925
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3407
3926
|
@parent = parse_type(data["parent"], "TodoParent")
|
|
@@ -3435,6 +3954,7 @@ module Basecamp
|
|
|
3435
3954
|
"content" => @content,
|
|
3436
3955
|
"created_at" => @created_at,
|
|
3437
3956
|
"creator" => @creator,
|
|
3957
|
+
"description_attachments" => @description_attachments,
|
|
3438
3958
|
"id" => @id,
|
|
3439
3959
|
"inherits_status" => @inherits_status,
|
|
3440
3960
|
"parent" => @parent,
|
|
@@ -3532,18 +4052,20 @@ module Basecamp
|
|
|
3532
4052
|
# Todolist
|
|
3533
4053
|
class Todolist
|
|
3534
4054
|
include TypeHelpers
|
|
3535
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :name, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :app_todos_url, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completed_ratio, :description, :groups_url, :position, :subscription_url, :todos_url
|
|
4055
|
+
attr_accessor :app_url, :bubble_up_url, :bucket, :created_at, :creator, :description_attachments, :id, :inherits_status, :name, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :app_todos_url, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :completed, :completed_ratio, :description, :groups_url, :position, :subscription_url, :todos_url
|
|
3536
4056
|
|
|
3537
4057
|
# @return [Array<Symbol>]
|
|
3538
4058
|
def self.required_fields
|
|
3539
|
-
%i[app_url bucket created_at creator id inherits_status name parent status title type updated_at url visible_to_clients].freeze
|
|
4059
|
+
%i[app_url bubble_up_url bucket created_at creator description_attachments id inherits_status name parent status title type updated_at url visible_to_clients].freeze
|
|
3540
4060
|
end
|
|
3541
4061
|
|
|
3542
4062
|
def initialize(data = {})
|
|
3543
4063
|
@app_url = data["app_url"]
|
|
4064
|
+
@bubble_up_url = data["bubble_up_url"]
|
|
3544
4065
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3545
4066
|
@created_at = parse_datetime(data["created_at"])
|
|
3546
4067
|
@creator = parse_type(data["creator"], "Person")
|
|
4068
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3547
4069
|
@id = parse_integer(data["id"])
|
|
3548
4070
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3549
4071
|
@name = data["name"]
|
|
@@ -3572,9 +4094,11 @@ module Basecamp
|
|
|
3572
4094
|
def to_h
|
|
3573
4095
|
{
|
|
3574
4096
|
"app_url" => @app_url,
|
|
4097
|
+
"bubble_up_url" => @bubble_up_url,
|
|
3575
4098
|
"bucket" => @bucket,
|
|
3576
4099
|
"created_at" => @created_at,
|
|
3577
4100
|
"creator" => @creator,
|
|
4101
|
+
"description_attachments" => @description_attachments,
|
|
3578
4102
|
"id" => @id,
|
|
3579
4103
|
"inherits_status" => @inherits_status,
|
|
3580
4104
|
"name" => @name,
|
|
@@ -3609,15 +4133,16 @@ module Basecamp
|
|
|
3609
4133
|
# TodolistGroup
|
|
3610
4134
|
class TodolistGroup
|
|
3611
4135
|
include TypeHelpers
|
|
3612
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :name, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :app_todos_url, :bookmark_url, :comments_count, :comments_url, :completed, :completed_ratio, :position, :subscription_url, :todos_url
|
|
4136
|
+
attr_accessor :app_url, :bubble_up_url, :bucket, :created_at, :creator, :id, :inherits_status, :name, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :app_todos_url, :bookmark_url, :comments_count, :comments_url, :completed, :completed_ratio, :position, :subscription_url, :todos_url
|
|
3613
4137
|
|
|
3614
4138
|
# @return [Array<Symbol>]
|
|
3615
4139
|
def self.required_fields
|
|
3616
|
-
%i[app_url bucket created_at creator id inherits_status name parent status title type updated_at url visible_to_clients].freeze
|
|
4140
|
+
%i[app_url bubble_up_url bucket created_at creator id inherits_status name parent status title type updated_at url visible_to_clients].freeze
|
|
3617
4141
|
end
|
|
3618
4142
|
|
|
3619
4143
|
def initialize(data = {})
|
|
3620
4144
|
@app_url = data["app_url"]
|
|
4145
|
+
@bubble_up_url = data["bubble_up_url"]
|
|
3621
4146
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3622
4147
|
@created_at = parse_datetime(data["created_at"])
|
|
3623
4148
|
@creator = parse_type(data["creator"], "Person")
|
|
@@ -3645,6 +4170,7 @@ module Basecamp
|
|
|
3645
4170
|
def to_h
|
|
3646
4171
|
{
|
|
3647
4172
|
"app_url" => @app_url,
|
|
4173
|
+
"bubble_up_url" => @bubble_up_url,
|
|
3648
4174
|
"bucket" => @bucket,
|
|
3649
4175
|
"created_at" => @created_at,
|
|
3650
4176
|
"creator" => @creator,
|
|
@@ -3794,11 +4320,11 @@ module Basecamp
|
|
|
3794
4320
|
# Upload
|
|
3795
4321
|
class Upload
|
|
3796
4322
|
include TypeHelpers
|
|
3797
|
-
attr_accessor :app_url, :bucket, :created_at, :creator, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :byte_size, :comments_count, :comments_url, :content_type, :description, :download_url, :filename, :height, :position, :subscription_url, :width
|
|
4323
|
+
attr_accessor :app_url, :bucket, :created_at, :creator, :description_attachments, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :byte_size, :comments_count, :comments_url, :content_type, :description, :download_url, :filename, :height, :position, :subscription_url, :width
|
|
3798
4324
|
|
|
3799
4325
|
# @return [Array<Symbol>]
|
|
3800
4326
|
def self.required_fields
|
|
3801
|
-
%i[app_url bucket created_at creator id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
4327
|
+
%i[app_url bucket created_at creator description_attachments id inherits_status parent status title type updated_at url visible_to_clients].freeze
|
|
3802
4328
|
end
|
|
3803
4329
|
|
|
3804
4330
|
def initialize(data = {})
|
|
@@ -3806,6 +4332,7 @@ module Basecamp
|
|
|
3806
4332
|
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
3807
4333
|
@created_at = parse_datetime(data["created_at"])
|
|
3808
4334
|
@creator = parse_type(data["creator"], "Person")
|
|
4335
|
+
@description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
|
|
3809
4336
|
@id = parse_integer(data["id"])
|
|
3810
4337
|
@inherits_status = parse_boolean(data["inherits_status"])
|
|
3811
4338
|
@parent = parse_type(data["parent"], "RecordingParent")
|
|
@@ -3837,6 +4364,7 @@ module Basecamp
|
|
|
3837
4364
|
"bucket" => @bucket,
|
|
3838
4365
|
"created_at" => @created_at,
|
|
3839
4366
|
"creator" => @creator,
|
|
4367
|
+
"description_attachments" => @description_attachments,
|
|
3840
4368
|
"id" => @id,
|
|
3841
4369
|
"inherits_status" => @inherits_status,
|
|
3842
4370
|
"parent" => @parent,
|
|
@@ -4123,5 +4651,62 @@ module Basecamp
|
|
|
4123
4651
|
to_h.to_json(*args)
|
|
4124
4652
|
end
|
|
4125
4653
|
end
|
|
4654
|
+
|
|
4655
|
+
# Wormhole
|
|
4656
|
+
class Wormhole
|
|
4657
|
+
include TypeHelpers
|
|
4658
|
+
attr_accessor :app_url, :bucket, :color, :created_at, :creator, :destination_url, :id, :inherits_status, :linked, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url
|
|
4659
|
+
|
|
4660
|
+
# @return [Array<Symbol>]
|
|
4661
|
+
def self.required_fields
|
|
4662
|
+
%i[app_url bucket color created_at creator destination_url id inherits_status linked parent status title type updated_at url visible_to_clients].freeze
|
|
4663
|
+
end
|
|
4664
|
+
|
|
4665
|
+
def initialize(data = {})
|
|
4666
|
+
@app_url = data["app_url"]
|
|
4667
|
+
@bucket = parse_type(data["bucket"], "TodoBucket")
|
|
4668
|
+
@color = data["color"]
|
|
4669
|
+
@created_at = parse_datetime(data["created_at"])
|
|
4670
|
+
@creator = parse_type(data["creator"], "Person")
|
|
4671
|
+
@destination_url = data["destination_url"]
|
|
4672
|
+
@id = parse_integer(data["id"])
|
|
4673
|
+
@inherits_status = parse_boolean(data["inherits_status"])
|
|
4674
|
+
@linked = parse_boolean(data["linked"])
|
|
4675
|
+
@parent = parse_type(data["parent"], "RecordingParent")
|
|
4676
|
+
@status = data["status"]
|
|
4677
|
+
@title = data["title"]
|
|
4678
|
+
@type = data["type"]
|
|
4679
|
+
@updated_at = parse_datetime(data["updated_at"])
|
|
4680
|
+
@url = data["url"]
|
|
4681
|
+
@visible_to_clients = parse_boolean(data["visible_to_clients"])
|
|
4682
|
+
@bookmark_url = data["bookmark_url"]
|
|
4683
|
+
end
|
|
4684
|
+
|
|
4685
|
+
def to_h
|
|
4686
|
+
{
|
|
4687
|
+
"app_url" => @app_url,
|
|
4688
|
+
"bucket" => @bucket,
|
|
4689
|
+
"color" => @color,
|
|
4690
|
+
"created_at" => @created_at,
|
|
4691
|
+
"creator" => @creator,
|
|
4692
|
+
"destination_url" => @destination_url,
|
|
4693
|
+
"id" => @id,
|
|
4694
|
+
"inherits_status" => @inherits_status,
|
|
4695
|
+
"linked" => @linked,
|
|
4696
|
+
"parent" => @parent,
|
|
4697
|
+
"status" => @status,
|
|
4698
|
+
"title" => @title,
|
|
4699
|
+
"type" => @type,
|
|
4700
|
+
"updated_at" => @updated_at,
|
|
4701
|
+
"url" => @url,
|
|
4702
|
+
"visible_to_clients" => @visible_to_clients,
|
|
4703
|
+
"bookmark_url" => @bookmark_url,
|
|
4704
|
+
}.reject { |k, v| v.nil? && !["color", "destination_url"].include?(k) }
|
|
4705
|
+
end
|
|
4706
|
+
|
|
4707
|
+
def to_json(*args)
|
|
4708
|
+
to_h.to_json(*args)
|
|
4709
|
+
end
|
|
4710
|
+
end
|
|
4126
4711
|
end
|
|
4127
4712
|
end
|