fizzy-sdk 0.1.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a340f5bc6074aa6d8354e6d488404cda5085487c5bef718de5b59a40fe4f588
4
- data.tar.gz: 63621ce553f1b4eee5799c2b5c8fefb6453a2b11391e33b4144167558cb59e1f
3
+ metadata.gz: 9fabd608c8ee9812080cb4ce96afbbc99c7453d63a03339edc776eeefc209191
4
+ data.tar.gz: '038e40db641720fd7049f76883e2e06a6cdb630910621706ece8cb24c77aa330'
5
5
  SHA512:
6
- metadata.gz: b7c6ff9dfd0150ce68ed5b88b4837e653a9f96ee9c9fd577746c1275a948667bc2166b8ad8f5b1d215d16f36e6bee6d05dca3db2bfd45c08919db907d31f7c40
7
- data.tar.gz: e58eedd8ba28e90114088fd656dabc9fbbdf812c5d6241e43660eb59726b78b38eb2e490460eb36c801b3abff3107e3ba5cccf82c8ba48ffd294beb846cf4325
6
+ metadata.gz: '08482c0013d7c8c7a6e952605628ce25217a5d874defbd2f5faf4dad7bd86ee91e31b2ca9601bf6d7d729706ef8f05cc6e9518e3a037b6d58585b8a424c2cb39'
7
+ data.tar.gz: ac29cc10c1a24c2b75acbaa27dbf2f9a8d4aadc2332a15b28f7c2030cbbaf79f14936f96ab91f1d819f56cf614da76d9eb38cab045e3edc0ae6c0f8ad3d7554b
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://fizzy.do/schemas/sdk-metadata.json",
3
3
  "version": "1.0.0",
4
- "generated": "2026-04-15T01:18:42Z",
4
+ "generated": "2026-04-30T17:59:20Z",
5
5
  "operations": {
6
6
  "ListAccessTokens": {
7
7
  "retry": {
@@ -31,7 +31,7 @@ module Fizzy
31
31
  slug: data["slug"],
32
32
  created_at: data["created_at"],
33
33
  url: data["url"],
34
- user: data["user"]
34
+ user: data["user"] && User.from_json(data["user"])
35
35
  )
36
36
  end
37
37
  end
@@ -72,12 +72,12 @@ module Fizzy
72
72
  action: data["action"],
73
73
  created_at: data["created_at"],
74
74
  description: data["description"],
75
- particulars: data["particulars"],
75
+ particulars: data["particulars"] && ActivityParticulars.from_json(data["particulars"]),
76
76
  url: data["url"],
77
77
  eventable_type: data["eventable_type"],
78
- eventable: data["eventable"],
79
- board: data["board"],
80
- creator: data["creator"]
78
+ eventable: data["eventable"] && ActivityEventable.from_json(data["eventable"]),
79
+ board: data["board"] && Board.from_json(data["board"]),
80
+ creator: data["creator"] && User.from_json(data["creator"])
81
81
  )
82
82
  end
83
83
  end
@@ -102,16 +102,16 @@ module Fizzy
102
102
  last_active_at: data["last_active_at"],
103
103
  created_at: data["created_at"],
104
104
  updated_at: data["updated_at"],
105
- body: data["body"],
106
- creator: data["creator"],
107
- card: data["card"],
108
- board: data["board"],
109
- column: data["column"],
110
- assignees: data["assignees"],
105
+ body: data["body"] && RichTextBody.from_json(data["body"]),
106
+ creator: data["creator"] && User.from_json(data["creator"]),
107
+ card: data["card"] && CardRef.from_json(data["card"]),
108
+ board: data["board"] && Board.from_json(data["board"]),
109
+ column: data["column"] && Column.from_json(data["column"]),
110
+ assignees: data["assignees"]&.map { |item| User.from_json(item) },
111
111
  has_more_assignees: data["has_more_assignees"],
112
112
  comments_url: data["comments_url"],
113
113
  reactions_url: data["reactions_url"],
114
- steps: data["steps"],
114
+ steps: data["steps"]&.map { |item| Step.from_json(item) },
115
115
  url: data["url"]
116
116
  )
117
117
  end
@@ -167,7 +167,7 @@ module Fizzy
167
167
  public_url: data["public_url"],
168
168
  user_ids: data["user_ids"],
169
169
  url: data["url"],
170
- creator: data["creator"]
170
+ creator: data["creator"] && User.from_json(data["creator"])
171
171
  )
172
172
  end
173
173
  end
@@ -198,7 +198,7 @@ module Fizzy
198
198
  new(
199
199
  board_id: data["board_id"],
200
200
  all_access: data["all_access"],
201
- users: data["users"]
201
+ users: data["users"]&.map { |item| BoardAccessUser.from_json(item) }
202
202
  )
203
203
  end
204
204
  end
@@ -233,14 +233,14 @@ module Fizzy
233
233
  last_active_at: data["last_active_at"],
234
234
  created_at: data["created_at"],
235
235
  url: data["url"],
236
- board: data["board"],
237
- column: data["column"],
238
- creator: data["creator"],
239
- assignees: data["assignees"],
236
+ board: data["board"] && Board.from_json(data["board"]),
237
+ column: data["column"] && Column.from_json(data["column"]),
238
+ creator: data["creator"] && User.from_json(data["creator"]),
239
+ assignees: data["assignees"]&.map { |item| User.from_json(item) },
240
240
  has_more_assignees: data["has_more_assignees"],
241
241
  comments_url: data["comments_url"],
242
242
  reactions_url: data["reactions_url"],
243
- steps: data["steps"]
243
+ steps: data["steps"]&.map { |item| Step.from_json(item) }
244
244
  )
245
245
  end
246
246
  end
@@ -256,6 +256,17 @@ module Fizzy
256
256
  end
257
257
  end
258
258
 
259
+ # @generated
260
+ Color = Data.define(:name, :value) do
261
+ # @param data [Hash] raw JSON response
262
+ def self.from_json(data)
263
+ new(
264
+ name: data["name"],
265
+ value: data["value"]
266
+ )
267
+ end
268
+ end
269
+
259
270
  # @generated
260
271
  Column = Data.define(:id, :name, :color, :created_at, :cards_url) do
261
272
  # @param data [Hash] raw JSON response
@@ -263,7 +274,7 @@ module Fizzy
263
274
  new(
264
275
  id: data["id"],
265
276
  name: data["name"],
266
- color: data["color"],
277
+ color: data["color"] && Color.from_json(data["color"]),
267
278
  created_at: data["created_at"],
268
279
  cards_url: data["cards_url"]
269
280
  )
@@ -278,9 +289,9 @@ module Fizzy
278
289
  id: data["id"],
279
290
  created_at: data["created_at"],
280
291
  updated_at: data["updated_at"],
281
- body: data["body"],
282
- creator: data["creator"],
283
- card: data["card"],
292
+ body: data["body"] && RichTextBody.from_json(data["body"]),
293
+ creator: data["creator"] && User.from_json(data["creator"]),
294
+ card: data["card"] && CardRef.from_json(data["card"]),
284
295
  reactions_url: data["reactions_url"],
285
296
  url: data["url"]
286
297
  )
@@ -512,7 +523,7 @@ module Fizzy
512
523
  content_type: data["content_type"],
513
524
  byte_size: data["byte_size"],
514
525
  checksum: data["checksum"],
515
- direct_upload: data["direct_upload"]
526
+ direct_upload: data["direct_upload"] && DirectUploadMetadata.from_json(data["direct_upload"])
516
527
  )
517
528
  end
518
529
  end
@@ -534,7 +545,7 @@ module Fizzy
534
545
  def self.from_json(data)
535
546
  new(
536
547
  url: data["url"],
537
- headers: data["headers"]
548
+ headers: data["headers"] && DirectUploadHeaders.from_json(data["headers"])
538
549
  )
539
550
  end
540
551
  end
@@ -599,7 +610,7 @@ module Fizzy
599
610
  id: data["id"],
600
611
  name: data["name"],
601
612
  email_address: data["email_address"],
602
- accounts: data["accounts"]
613
+ accounts: data["accounts"]&.map { |item| Account.from_json(item) }
603
614
  )
604
615
  end
605
616
  end
@@ -725,8 +736,8 @@ module Fizzy
725
736
  source_type: data["source_type"],
726
737
  title: data["title"],
727
738
  body: data["body"],
728
- creator: data["creator"],
729
- card: data["card"],
739
+ creator: data["creator"] && User.from_json(data["creator"]),
740
+ card: data["card"] && NotificationCard.from_json(data["card"]),
730
741
  url: data["url"]
731
742
  )
732
743
  end
@@ -745,7 +756,7 @@ module Fizzy
745
756
  closed: data["closed"],
746
757
  postponed: data["postponed"],
747
758
  url: data["url"],
748
- column: data["column"]
759
+ column: data["column"] && Column.from_json(data["column"])
749
760
  )
750
761
  end
751
762
  end
@@ -787,7 +798,7 @@ module Fizzy
787
798
  new(
788
799
  id: data["id"],
789
800
  content: data["content"],
790
- reacter: data["reacter"],
801
+ reacter: data["reacter"] && User.from_json(data["reacter"]),
791
802
  url: data["url"]
792
803
  )
793
804
  end
@@ -1132,7 +1143,7 @@ module Fizzy
1132
1143
  active: data["active"],
1133
1144
  created_at: data["created_at"],
1134
1145
  updated_at: data["updated_at"],
1135
- board: data["board"]
1146
+ board: data["board"] && Board.from_json(data["board"])
1136
1147
  )
1137
1148
  end
1138
1149
  end
@@ -1146,9 +1157,9 @@ module Fizzy
1146
1157
  state: data["state"],
1147
1158
  created_at: data["created_at"],
1148
1159
  updated_at: data["updated_at"],
1149
- request: data["request"],
1150
- response: data["response"],
1151
- event: data["event"]
1160
+ request: data["request"] && WebhookDeliveryRequest.from_json(data["request"]),
1161
+ response: data["response"] && WebhookDeliveryResponse.from_json(data["response"]),
1162
+ event: data["event"] && WebhookDeliveryEvent.from_json(data["event"])
1152
1163
  )
1153
1164
  end
1154
1165
  end
@@ -1161,8 +1172,8 @@ module Fizzy
1161
1172
  id: data["id"],
1162
1173
  action: data["action"],
1163
1174
  created_at: data["created_at"],
1164
- creator: data["creator"],
1165
- eventable: data["eventable"]
1175
+ creator: data["creator"] && WebhookDeliveryEventCreator.from_json(data["creator"]),
1176
+ eventable: data["eventable"] && WebhookDeliveryEventEventable.from_json(data["eventable"])
1166
1177
  )
1167
1178
  end
1168
1179
  end
data/lib/fizzy/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fizzy
4
- VERSION = "0.1.3"
4
+ VERSION = "0.2.1"
5
5
  API_VERSION = "2026-03-01"
6
6
  end
@@ -74,7 +74,7 @@ class TypeGenerator
74
74
  ruby_type = schema_to_ruby_type(field_schema)
75
75
  required = required_fields.include?(field_name)
76
76
  { name: ruby_name, json_name: field_name, type: ruby_type, required: required, \
77
- description: field_schema["description"] }
77
+ description: field_schema["description"], schema: field_schema }
78
78
  end
79
79
 
80
80
  if fields.empty?
@@ -92,7 +92,8 @@ class TypeGenerator
92
92
  fields.each_with_index do |f, i|
93
93
  comma = i < fields.length - 1 ? "," : ""
94
94
  accessor = "data[\"#{f[:json_name]}\"]"
95
- lines << " #{f[:name]}: #{accessor}#{comma}"
95
+ value = json_value_expression(f[:schema], accessor)
96
+ lines << " #{f[:name]}: #{value}#{comma}"
96
97
  end
97
98
 
98
99
  lines << " )"
@@ -102,13 +103,29 @@ class TypeGenerator
102
103
  lines
103
104
  end
104
105
 
106
+ def json_value_expression(schema, accessor)
107
+ ref_name = schema_ref_name(schema)
108
+ return "#{accessor} && #{ref_name}.from_json(#{accessor})" if ref_name
109
+
110
+ if schema["type"] == "array"
111
+ item_ref_name = schema_ref_name(schema["items"])
112
+ return "#{accessor}&.map { |item| #{item_ref_name}.from_json(item) }" if item_ref_name
113
+ end
114
+
115
+ accessor
116
+ end
117
+
118
+ def schema_ref_name(schema)
119
+ return nil unless schema && schema["$ref"]
120
+
121
+ schema["$ref"].split("/").last
122
+ end
123
+
105
124
  def schema_to_ruby_type(schema)
106
125
  return "Object" unless schema
107
126
 
108
- if schema["$ref"]
109
- ref_name = schema["$ref"].split("/").last
110
- return ref_name
111
- end
127
+ ref_name = schema_ref_name(schema)
128
+ return ref_name if ref_name
112
129
 
113
130
  case schema["type"]
114
131
  when "integer" then "Integer"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fizzy-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Basecamp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-16 00:00:00.000000000 Z
11
+ date: 2026-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday