growsurf-ruby 0.8.0 → 1.1.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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/lib/growsurf_ruby/client.rb +4 -0
  5. data/lib/growsurf_ruby/models/account.rb +90 -0
  6. data/lib/growsurf_ruby/models/account_create_params.rb +46 -0
  7. data/lib/growsurf_ruby/models/account_create_response.rb +64 -0
  8. data/lib/growsurf_ruby/models/account_resend_verification_email_response.rb +33 -0
  9. data/lib/growsurf_ruby/models/account_rotate_api_key_response.rb +17 -0
  10. data/lib/growsurf_ruby/models/account_update_params.rb +35 -0
  11. data/lib/growsurf_ruby/models/campaign/campaign_reward_list_response.rb +2 -2
  12. data/lib/growsurf_ruby/models/campaign/create.rb +5 -1
  13. data/lib/growsurf_ruby/models/campaign/participant_activity_logs_response.rb +65 -0
  14. data/lib/growsurf_ruby/models/campaign/participant_analytics_response.rb +421 -0
  15. data/lib/growsurf_ruby/models/campaign/participant_bulk_delete_params.rb +35 -0
  16. data/lib/growsurf_ruby/models/campaign/participant_bulk_delete_response.rb +151 -0
  17. data/lib/growsurf_ruby/models/campaign/participant_email_params.rb +76 -0
  18. data/lib/growsurf_ruby/models/campaign/participant_email_response.rb +38 -0
  19. data/lib/growsurf_ruby/models/campaign/participant_list_activity_logs_params.rb +46 -0
  20. data/lib/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rb +98 -0
  21. data/lib/growsurf_ruby/models/campaign/participant_update_params.rb +21 -1
  22. data/lib/growsurf_ruby/models/campaign/reward.rb +43 -5
  23. data/lib/growsurf_ruby/models/campaign/reward_create_params.rb +48 -15
  24. data/lib/growsurf_ruby/models/campaign/reward_delete_params.rb +4 -4
  25. data/lib/growsurf_ruby/models/campaign/reward_update_params.rb +51 -18
  26. data/lib/growsurf_ruby/models/campaign/webhook.rb +72 -0
  27. data/lib/growsurf_ruby/models/campaign/webhook_create_params.rb +52 -0
  28. data/lib/growsurf_ruby/models/campaign/webhook_delete_params.rb +28 -0
  29. data/lib/growsurf_ruby/models/campaign/webhook_delete_response.rb +24 -0
  30. data/lib/growsurf_ruby/models/campaign/webhook_event.rb +23 -0
  31. data/lib/growsurf_ruby/models/campaign/webhook_list_response.rb +18 -0
  32. data/lib/growsurf_ruby/models/campaign/webhook_test_params.rb +42 -0
  33. data/lib/growsurf_ruby/models/campaign/webhook_test_response.rb +50 -0
  34. data/lib/growsurf_ruby/models/campaign/webhook_update_params.rb +59 -0
  35. data/lib/growsurf_ruby/models/campaign.rb +43 -5
  36. data/lib/growsurf_ruby/models/campaign_create_params.rb +1 -15
  37. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_params.rb +36 -1
  38. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_response.rb +538 -1
  39. data/lib/growsurf_ruby/models/campaign_update_params.rb +1 -53
  40. data/lib/growsurf_ruby/models/commission_structure.rb +8 -2
  41. data/lib/growsurf_ruby/models/referral_flow_screenshots_response.rb +72 -0
  42. data/lib/growsurf_ruby/models/reward_tax_valuation.rb +35 -0
  43. data/lib/growsurf_ruby/models.rb +10 -0
  44. data/lib/growsurf_ruby/resources/account.rb +159 -0
  45. data/lib/growsurf_ruby/resources/campaign/design.rb +68 -0
  46. data/lib/growsurf_ruby/resources/campaign/emails.rb +66 -0
  47. data/lib/growsurf_ruby/resources/campaign/installation.rb +67 -0
  48. data/lib/growsurf_ruby/resources/campaign/options.rb +66 -0
  49. data/lib/growsurf_ruby/resources/campaign/participant.rb +170 -2
  50. data/lib/growsurf_ruby/resources/campaign/rewards.rb +36 -32
  51. data/lib/growsurf_ruby/resources/campaign/webhooks.rb +157 -0
  52. data/lib/growsurf_ruby/resources/campaign.rb +62 -27
  53. data/lib/growsurf_ruby/version.rb +1 -1
  54. data/lib/growsurf_ruby.rb +31 -0
  55. data/rbi/growsurf_ruby/client.rbi +3 -0
  56. data/rbi/growsurf_ruby/models/account.rbi +125 -0
  57. data/rbi/growsurf_ruby/models/account_create_params.rbi +73 -0
  58. data/rbi/growsurf_ruby/models/account_create_response.rbi +115 -0
  59. data/rbi/growsurf_ruby/models/account_resend_verification_email_response.rbi +76 -0
  60. data/rbi/growsurf_ruby/models/account_rotate_api_key_response.rbi +30 -0
  61. data/rbi/growsurf_ruby/models/account_update_params.rbi +65 -0
  62. data/rbi/growsurf_ruby/models/campaign/campaign_reward_list_response.rbi +2 -2
  63. data/rbi/growsurf_ruby/models/campaign/create.rbi +8 -0
  64. data/rbi/growsurf_ruby/models/campaign/participant_activity_logs_response.rbi +111 -0
  65. data/rbi/growsurf_ruby/models/campaign/participant_analytics_response.rbi +630 -0
  66. data/rbi/growsurf_ruby/models/campaign/participant_bulk_delete_params.rbi +56 -0
  67. data/rbi/growsurf_ruby/models/campaign/participant_bulk_delete_response.rbi +285 -0
  68. data/rbi/growsurf_ruby/models/campaign/participant_email_params.rbi +118 -0
  69. data/rbi/growsurf_ruby/models/campaign/participant_email_response.rbi +84 -0
  70. data/rbi/growsurf_ruby/models/campaign/participant_list_activity_logs_params.rbi +74 -0
  71. data/rbi/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rbi +207 -0
  72. data/rbi/growsurf_ruby/models/campaign/participant_update_params.rbi +24 -0
  73. data/rbi/growsurf_ruby/models/campaign/reward.rbi +63 -3
  74. data/rbi/growsurf_ruby/models/campaign/reward_create_params.rbi +62 -9
  75. data/rbi/growsurf_ruby/models/campaign/reward_delete_params.rbi +4 -4
  76. data/rbi/growsurf_ruby/models/campaign/reward_update_params.rbi +66 -13
  77. data/rbi/growsurf_ruby/models/campaign/webhook.rbi +93 -0
  78. data/rbi/growsurf_ruby/models/campaign/webhook_create_params.rbi +91 -0
  79. data/rbi/growsurf_ruby/models/campaign/webhook_delete_params.rbi +48 -0
  80. data/rbi/growsurf_ruby/models/campaign/webhook_delete_response.rbi +33 -0
  81. data/rbi/growsurf_ruby/models/campaign/webhook_event.rbi +60 -0
  82. data/rbi/growsurf_ruby/models/campaign/webhook_list_response.rbi +36 -0
  83. data/rbi/growsurf_ruby/models/campaign/webhook_test_params.rbi +69 -0
  84. data/rbi/growsurf_ruby/models/campaign/webhook_test_response.rbi +102 -0
  85. data/rbi/growsurf_ruby/models/campaign/webhook_update_params.rbi +98 -0
  86. data/rbi/growsurf_ruby/models/campaign.rbi +63 -3
  87. data/rbi/growsurf_ruby/models/campaign_create_params.rbi +0 -18
  88. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_params.rbi +91 -0
  89. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_response.rbi +1011 -3
  90. data/rbi/growsurf_ruby/models/campaign_update_params.rbi +0 -78
  91. data/rbi/growsurf_ruby/models/commission_structure.rbi +8 -2
  92. data/rbi/growsurf_ruby/models/referral_flow_screenshots_response.rbi +94 -0
  93. data/rbi/growsurf_ruby/models/reward_tax_valuation.rbi +56 -0
  94. data/rbi/growsurf_ruby/models.rbi +11 -0
  95. data/rbi/growsurf_ruby/resources/account.rbi +112 -0
  96. data/rbi/growsurf_ruby/resources/campaign/design.rbi +52 -0
  97. data/rbi/growsurf_ruby/resources/campaign/emails.rbi +51 -0
  98. data/rbi/growsurf_ruby/resources/campaign/installation.rbi +53 -0
  99. data/rbi/growsurf_ruby/resources/campaign/options.rbi +51 -0
  100. data/rbi/growsurf_ruby/resources/campaign/participant.rbi +160 -0
  101. data/rbi/growsurf_ruby/resources/campaign/rewards.rbi +61 -29
  102. data/rbi/growsurf_ruby/resources/campaign/webhooks.rbi +123 -0
  103. data/rbi/growsurf_ruby/resources/campaign.rbi +58 -32
  104. data/sig/growsurf_ruby/client.rbs +2 -0
  105. data/sig/growsurf_ruby/models/account.rbs +67 -0
  106. data/sig/growsurf_ruby/models/account_create_params.rbs +42 -0
  107. data/sig/growsurf_ruby/models/account_create_response.rbs +47 -0
  108. data/sig/growsurf_ruby/models/account_resend_verification_email_response.rbs +35 -0
  109. data/sig/growsurf_ruby/models/account_rotate_api_key_response.rbs +13 -0
  110. data/sig/growsurf_ruby/models/account_update_params.rbs +42 -0
  111. data/sig/growsurf_ruby/models/campaign/participant_activity_logs_response.rbs +59 -0
  112. data/sig/growsurf_ruby/models/campaign/participant_analytics_response.rbs +407 -0
  113. data/sig/growsurf_ruby/models/campaign/participant_bulk_delete_params.rbs +30 -0
  114. data/sig/growsurf_ruby/models/campaign/participant_bulk_delete_response.rbs +125 -0
  115. data/sig/growsurf_ruby/models/campaign/participant_email_params.rbs +61 -0
  116. data/sig/growsurf_ruby/models/campaign/participant_email_response.rbs +37 -0
  117. data/sig/growsurf_ruby/models/campaign/participant_list_activity_logs_params.rbs +47 -0
  118. data/sig/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rbs +90 -0
  119. data/sig/growsurf_ruby/models/campaign/participant_update_params.rbs +14 -0
  120. data/sig/growsurf_ruby/models/campaign/reward.rbs +18 -3
  121. data/sig/growsurf_ruby/models/campaign/reward_create_params.rbs +19 -8
  122. data/sig/growsurf_ruby/models/campaign/reward_delete_params.rbs +4 -4
  123. data/sig/growsurf_ruby/models/campaign/reward_update_params.rbs +23 -12
  124. data/sig/growsurf_ruby/models/campaign/webhook.rbs +52 -0
  125. data/sig/growsurf_ruby/models/campaign/webhook_create_params.rbs +51 -0
  126. data/sig/growsurf_ruby/models/campaign/webhook_delete_params.rbs +30 -0
  127. data/sig/growsurf_ruby/models/campaign/webhook_delete_response.rbs +17 -0
  128. data/sig/growsurf_ruby/models/campaign/webhook_event.rbs +28 -0
  129. data/sig/growsurf_ruby/models/campaign/webhook_list_response.rbs +18 -0
  130. data/sig/growsurf_ruby/models/campaign/webhook_test_params.rbs +42 -0
  131. data/sig/growsurf_ruby/models/campaign/webhook_test_response.rbs +54 -0
  132. data/sig/growsurf_ruby/models/campaign/webhook_update_params.rbs +63 -0
  133. data/sig/growsurf_ruby/models/campaign.rbs +18 -3
  134. data/sig/growsurf_ruby/models/campaign_create_params.rbs +0 -14
  135. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_params.rbs +35 -1
  136. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_response.rbs +533 -3
  137. data/sig/growsurf_ruby/models/campaign_update_params.rbs +1 -53
  138. data/sig/growsurf_ruby/models/commission_structure.rbs +7 -2
  139. data/sig/growsurf_ruby/models/referral_flow_screenshots_response.rbs +54 -0
  140. data/sig/growsurf_ruby/models/reward_tax_valuation.rbs +22 -0
  141. data/sig/growsurf_ruby/models.rbs +10 -0
  142. data/sig/growsurf_ruby/resources/account.rbs +38 -0
  143. data/sig/growsurf_ruby/resources/campaign/design.rbs +20 -0
  144. data/sig/growsurf_ruby/resources/campaign/emails.rbs +20 -0
  145. data/sig/growsurf_ruby/resources/campaign/installation.rbs +20 -0
  146. data/sig/growsurf_ruby/resources/campaign/options.rbs +20 -0
  147. data/sig/growsurf_ruby/resources/campaign/participant.rbs +37 -0
  148. data/sig/growsurf_ruby/resources/campaign/rewards.rbs +6 -4
  149. data/sig/growsurf_ruby/resources/campaign/webhooks.rbs +46 -0
  150. data/sig/growsurf_ruby/resources/campaign.rbs +17 -9
  151. metadata +95 -2
@@ -19,7 +19,7 @@ module GrowsurfRuby
19
19
  attr_accessor :id
20
20
 
21
21
  sig { returns(String) }
22
- attr_accessor :reward_id
22
+ attr_accessor :campaign_reward_id
23
23
 
24
24
  sig { returns(T.nilable(GrowsurfRuby::CommissionStructure)) }
25
25
  attr_reader :commission_structure
@@ -37,6 +37,9 @@ module GrowsurfRuby
37
37
  sig { params(conversions_required: Integer).void }
38
38
  attr_writer :conversions_required
39
39
 
40
+ # Legacy static coupon code shown to the referrer in the reward-won email and
41
+ # webhook. Display text only; superseded by a connected billing integration's
42
+ # issued coupon when one exists.
40
43
  sig { returns(T.nilable(String)) }
41
44
  attr_reader :coupon_code
42
45
 
@@ -55,18 +58,16 @@ module GrowsurfRuby
55
58
  sig { params(image_url: String).void }
56
59
  attr_writer :image_url
57
60
 
58
- sig { returns(T.nilable(T::Boolean)) }
59
- attr_reader :is_active
60
-
61
- sig { params(is_active: T::Boolean).void }
62
- attr_writer :is_active
63
-
61
+ # Whether the reward can be earned an unlimited number of times. Defaults to
62
+ # `true`, except `MILESTONE` rewards, which can only be earned once.
64
63
  sig { returns(T.nilable(T::Boolean)) }
65
64
  attr_reader :is_unlimited
66
65
 
67
66
  sig { params(is_unlimited: T::Boolean).void }
68
67
  attr_writer :is_unlimited
69
68
 
69
+ # Whether the reward is enabled. When `false` the reward is disabled: hidden from
70
+ # participants and no longer awarded, including those who already earned it.
70
71
  sig { returns(T.nilable(T::Boolean)) }
71
72
  attr_reader :is_visible
72
73
 
@@ -103,18 +104,25 @@ module GrowsurfRuby
103
104
  sig { params(metadata: T::Hash[Symbol, T.anything]).void }
104
105
  attr_writer :metadata
105
106
 
107
+ # Text shown before a participant's referral count in milestone-progress copy.
108
+ # Applies to `MILESTONE` rewards.
106
109
  sig { returns(T.nilable(String)) }
107
110
  attr_reader :next_milestone_prefix
108
111
 
109
112
  sig { params(next_milestone_prefix: String).void }
110
113
  attr_writer :next_milestone_prefix
111
114
 
115
+ # Text shown after a participant's referral count in milestone-progress copy.
116
+ # Applies to `MILESTONE` rewards.
112
117
  sig { returns(T.nilable(String)) }
113
118
  attr_reader :next_milestone_suffix
114
119
 
115
120
  sig { params(next_milestone_suffix: String).void }
116
121
  attr_writer :next_milestone_suffix
117
122
 
123
+ # The number of winners (`LEADERBOARD` rewards only). With `limitDuration`
124
+ # `PER_MONTH` this many win each month, otherwise this many win in total;
125
+ # omitting it defaults to `3`.
118
126
  sig { returns(T.nilable(Integer)) }
119
127
  attr_reader :number_of_winners
120
128
 
@@ -127,6 +135,9 @@ module GrowsurfRuby
127
135
  sig { params(order: Integer).void }
128
136
  attr_writer :order
129
137
 
138
+ # Legacy static coupon code shown to the referred friend (double-sided rewards)
139
+ # in the reward-won email and webhook. Display text only; superseded by a
140
+ # connected billing integration's issued coupon when one exists.
130
141
  sig { returns(T.nilable(String)) }
131
142
  attr_reader :referral_coupon_code
132
143
 
@@ -145,22 +156,39 @@ module GrowsurfRuby
145
156
  sig { params(referred_reward_upfront: T::Boolean).void }
146
157
  attr_writer :referred_reward_upfront
147
158
 
159
+ # Tax valuation for the referred friend's side of a double-sided reward.
160
+ # Defaults to not tax-reportable (a purchase rebate).
161
+ sig { returns(T.nilable(GrowsurfRuby::RewardTaxValuation)) }
162
+ attr_reader :referred_value
163
+
164
+ sig do
165
+ params(referred_value: GrowsurfRuby::RewardTaxValuation::OrHash).void
166
+ end
167
+ attr_writer :referred_value
168
+
148
169
  sig { returns(T.nilable(String)) }
149
170
  attr_reader :title
150
171
 
151
172
  sig { params(title: String).void }
152
173
  attr_writer :title
153
174
 
175
+ # Tax valuation for the reward (the referrer's side of a double-sided reward).
176
+ # Used by tax documentation / 1099 reporting.
177
+ sig { returns(T.nilable(GrowsurfRuby::RewardTaxValuation)) }
178
+ attr_reader :value
179
+
180
+ sig { params(value: GrowsurfRuby::RewardTaxValuation::OrHash).void }
181
+ attr_writer :value
182
+
154
183
  sig do
155
184
  params(
156
185
  id: String,
157
- reward_id: String,
186
+ campaign_reward_id: String,
158
187
  commission_structure: GrowsurfRuby::CommissionStructure::OrHash,
159
188
  conversions_required: Integer,
160
189
  coupon_code: String,
161
190
  description: String,
162
191
  image_url: String,
163
- is_active: T::Boolean,
164
192
  is_unlimited: T::Boolean,
165
193
  is_visible: T::Boolean,
166
194
  limit: Integer,
@@ -174,33 +202,57 @@ module GrowsurfRuby
174
202
  referral_coupon_code: String,
175
203
  referral_description: String,
176
204
  referred_reward_upfront: T::Boolean,
205
+ referred_value: GrowsurfRuby::RewardTaxValuation::OrHash,
177
206
  title: String,
207
+ value: GrowsurfRuby::RewardTaxValuation::OrHash,
178
208
  request_options: GrowsurfRuby::RequestOptions::OrHash
179
209
  ).returns(T.attached_class)
180
210
  end
181
211
  def self.new(
182
212
  id:,
183
- reward_id:,
213
+ campaign_reward_id:,
184
214
  commission_structure: nil,
185
215
  conversions_required: nil,
216
+ # Legacy static coupon code shown to the referrer in the reward-won email and
217
+ # webhook. Display text only; superseded by a connected billing integration's
218
+ # issued coupon when one exists.
186
219
  coupon_code: nil,
187
220
  description: nil,
188
221
  image_url: nil,
189
- is_active: nil,
222
+ # Whether the reward can be earned an unlimited number of times. Defaults to
223
+ # `true`, except `MILESTONE` rewards, which can only be earned once.
190
224
  is_unlimited: nil,
225
+ # Whether the reward is enabled. When `false` the reward is disabled: hidden from
226
+ # participants and no longer awarded, including those who already earned it.
191
227
  is_visible: nil,
192
228
  limit: nil,
193
229
  limit_duration: nil,
194
230
  # Custom key/value metadata (single-level; values are stored as strings).
195
231
  metadata: nil,
232
+ # Text shown before a participant's referral count in milestone-progress copy.
233
+ # Applies to `MILESTONE` rewards.
196
234
  next_milestone_prefix: nil,
235
+ # Text shown after a participant's referral count in milestone-progress copy.
236
+ # Applies to `MILESTONE` rewards.
197
237
  next_milestone_suffix: nil,
238
+ # The number of winners (`LEADERBOARD` rewards only). With `limitDuration`
239
+ # `PER_MONTH` this many win each month, otherwise this many win in total;
240
+ # omitting it defaults to `3`.
198
241
  number_of_winners: nil,
199
242
  order: nil,
243
+ # Legacy static coupon code shown to the referred friend (double-sided rewards)
244
+ # in the reward-won email and webhook. Display text only; superseded by a
245
+ # connected billing integration's issued coupon when one exists.
200
246
  referral_coupon_code: nil,
201
247
  referral_description: nil,
202
248
  referred_reward_upfront: nil,
249
+ # Tax valuation for the referred friend's side of a double-sided reward.
250
+ # Defaults to not tax-reportable (a purchase rebate).
251
+ referred_value: nil,
203
252
  title: nil,
253
+ # Tax valuation for the reward (the referrer's side of a double-sided reward).
254
+ # Used by tax documentation / 1099 reporting.
255
+ value: nil,
204
256
  request_options: {}
205
257
  )
206
258
  end
@@ -209,13 +261,12 @@ module GrowsurfRuby
209
261
  override.returns(
210
262
  {
211
263
  id: String,
212
- reward_id: String,
264
+ campaign_reward_id: String,
213
265
  commission_structure: GrowsurfRuby::CommissionStructure::OrHash,
214
266
  conversions_required: Integer,
215
267
  coupon_code: String,
216
268
  description: String,
217
269
  image_url: String,
218
- is_active: T::Boolean,
219
270
  is_unlimited: T::Boolean,
220
271
  is_visible: T::Boolean,
221
272
  limit: Integer,
@@ -229,7 +280,9 @@ module GrowsurfRuby
229
280
  referral_coupon_code: String,
230
281
  referral_description: String,
231
282
  referred_reward_upfront: T::Boolean,
283
+ referred_value: GrowsurfRuby::RewardTaxValuation::OrHash,
232
284
  title: String,
285
+ value: GrowsurfRuby::RewardTaxValuation::OrHash,
233
286
  request_options: GrowsurfRuby::RequestOptions
234
287
  }
235
288
  )
@@ -0,0 +1,93 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class Webhook < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::Webhook,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Read-only. Whether GrowSurf auto-disabled this webhook after repeated delivery
16
+ # failures.
17
+ sig { returns(T::Boolean) }
18
+ attr_accessor :auto_disabled_due_to_failures
19
+
20
+ sig do
21
+ returns(T::Array[GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol])
22
+ end
23
+ attr_accessor :events
24
+
25
+ # Read-only. Consecutive delivery failures.
26
+ sig { returns(Integer) }
27
+ attr_accessor :failure_count
28
+
29
+ # The webhook id (`primary` for the program's primary webhook).
30
+ sig { returns(String) }
31
+ attr_accessor :id
32
+
33
+ sig { returns(T::Boolean) }
34
+ attr_accessor :is_enabled
35
+
36
+ # Read-only. When the last delivery failure occurred, as a Unix timestamp in
37
+ # milliseconds.
38
+ sig { returns(T.nilable(Integer)) }
39
+ attr_accessor :last_failure_at
40
+
41
+ # The URL that receives webhook deliveries.
42
+ sig { returns(T.nilable(String)) }
43
+ attr_accessor :payload_url
44
+
45
+ sig do
46
+ params(
47
+ auto_disabled_due_to_failures: T::Boolean,
48
+ events: T::Array[GrowsurfRuby::Campaign::WebhookEvent::OrSymbol],
49
+ failure_count: Integer,
50
+ id: String,
51
+ is_enabled: T::Boolean,
52
+ last_failure_at: T.nilable(Integer),
53
+ payload_url: T.nilable(String)
54
+ ).returns(T.attached_class)
55
+ end
56
+ def self.new(
57
+ # Read-only. Whether GrowSurf auto-disabled this webhook after repeated delivery
58
+ # failures.
59
+ auto_disabled_due_to_failures:,
60
+ events:,
61
+ # Read-only. Consecutive delivery failures.
62
+ failure_count:,
63
+ # The webhook id (`primary` for the program's primary webhook).
64
+ id:,
65
+ is_enabled:,
66
+ # Read-only. When the last delivery failure occurred, as a Unix timestamp in
67
+ # milliseconds.
68
+ last_failure_at: nil,
69
+ # The URL that receives webhook deliveries.
70
+ payload_url: nil
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ auto_disabled_due_to_failures: T::Boolean,
78
+ events:
79
+ T::Array[GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol],
80
+ failure_count: Integer,
81
+ id: String,
82
+ is_enabled: T::Boolean,
83
+ last_failure_at: T.nilable(Integer),
84
+ payload_url: T.nilable(String)
85
+ }
86
+ )
87
+ end
88
+ def to_hash
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,91 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class WebhookCreateParams < GrowsurfRuby::Internal::Type::BaseModel
7
+ extend GrowsurfRuby::Internal::Type::RequestParameters::Converter
8
+ include GrowsurfRuby::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ GrowsurfRuby::Campaign::WebhookCreateParams,
14
+ GrowsurfRuby::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ # The URL that receives webhook deliveries.
19
+ sig { returns(String) }
20
+ attr_accessor :payload_url
21
+
22
+ # The events this webhook is subscribed to. When omitted, it is subscribed to no
23
+ # events.
24
+ sig do
25
+ returns(
26
+ T.nilable(T::Array[GrowsurfRuby::Campaign::WebhookEvent::OrSymbol])
27
+ )
28
+ end
29
+ attr_reader :events
30
+
31
+ sig do
32
+ params(
33
+ events: T::Array[GrowsurfRuby::Campaign::WebhookEvent::OrSymbol]
34
+ ).void
35
+ end
36
+ attr_writer :events
37
+
38
+ sig { returns(T.nilable(T::Boolean)) }
39
+ attr_reader :is_enabled
40
+
41
+ sig { params(is_enabled: T::Boolean).void }
42
+ attr_writer :is_enabled
43
+
44
+ # Write-only. Used to sign deliveries (the `GrowSurf-Signature` HMAC header). Never
45
+ # returned.
46
+ sig { returns(T.nilable(String)) }
47
+ attr_reader :secret
48
+
49
+ sig { params(secret: String).void }
50
+ attr_writer :secret
51
+
52
+ sig do
53
+ params(
54
+ payload_url: String,
55
+ events: T::Array[GrowsurfRuby::Campaign::WebhookEvent::OrSymbol],
56
+ is_enabled: T::Boolean,
57
+ secret: String,
58
+ request_options: GrowsurfRuby::RequestOptions::OrHash
59
+ ).returns(T.attached_class)
60
+ end
61
+ def self.new(
62
+ # The URL that receives webhook deliveries.
63
+ payload_url:,
64
+ # The events this webhook is subscribed to. When omitted, it is subscribed to no
65
+ # events.
66
+ events: nil,
67
+ is_enabled: nil,
68
+ # Write-only. Used to sign deliveries (the `GrowSurf-Signature` HMAC header). Never
69
+ # returned.
70
+ secret: nil,
71
+ request_options: {}
72
+ )
73
+ end
74
+
75
+ sig do
76
+ override.returns(
77
+ {
78
+ payload_url: String,
79
+ events: T::Array[GrowsurfRuby::Campaign::WebhookEvent::OrSymbol],
80
+ is_enabled: T::Boolean,
81
+ secret: String,
82
+ request_options: GrowsurfRuby::RequestOptions
83
+ }
84
+ )
85
+ end
86
+ def to_hash
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,48 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class WebhookDeleteParams < GrowsurfRuby::Internal::Type::BaseModel
7
+ extend GrowsurfRuby::Internal::Type::RequestParameters::Converter
8
+ include GrowsurfRuby::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ GrowsurfRuby::Campaign::WebhookDeleteParams,
14
+ GrowsurfRuby::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :webhook_id
23
+
24
+ sig do
25
+ params(
26
+ id: String,
27
+ webhook_id: String,
28
+ request_options: GrowsurfRuby::RequestOptions::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(id:, webhook_id:, request_options: {})
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ id: String,
38
+ webhook_id: String,
39
+ request_options: GrowsurfRuby::RequestOptions
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class WebhookDeleteResponse < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::WebhookDeleteResponse,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
18
+ sig { returns(T::Boolean) }
19
+ attr_accessor :success
20
+
21
+ sig do
22
+ params(id: String, success: T::Boolean).returns(T.attached_class)
23
+ end
24
+ def self.new(id:, success:)
25
+ end
26
+
27
+ sig { override.returns({ id: String, success: T::Boolean }) }
28
+ def to_hash
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,60 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ # A webhook event name.
7
+ module WebhookEvent
8
+ extend GrowsurfRuby::Internal::Type::Enum
9
+
10
+ TaggedSymbol =
11
+ T.type_alias { T.all(Symbol, GrowsurfRuby::Campaign::WebhookEvent) }
12
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
13
+
14
+ PARTICIPANT_REACHED_A_GOAL =
15
+ T.let(
16
+ :PARTICIPANT_REACHED_A_GOAL,
17
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
18
+ )
19
+ NEW_PARTICIPANT_ADDED =
20
+ T.let(
21
+ :NEW_PARTICIPANT_ADDED,
22
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
23
+ )
24
+ CAMPAIGN_ENDED =
25
+ T.let(
26
+ :CAMPAIGN_ENDED,
27
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
28
+ )
29
+ PARTICIPANT_FRAUD_STATUS_UPDATED =
30
+ T.let(
31
+ :PARTICIPANT_FRAUD_STATUS_UPDATED,
32
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
33
+ )
34
+ NEW_COMMISSION_ADDED =
35
+ T.let(
36
+ :NEW_COMMISSION_ADDED,
37
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
38
+ )
39
+ COMMISSION_ADJUSTED =
40
+ T.let(
41
+ :COMMISSION_ADJUSTED,
42
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
43
+ )
44
+ NEW_PAYOUT_ISSUED =
45
+ T.let(
46
+ :NEW_PAYOUT_ISSUED,
47
+ GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol
48
+ )
49
+
50
+ sig do
51
+ override.returns(
52
+ T::Array[GrowsurfRuby::Campaign::WebhookEvent::TaggedSymbol]
53
+ )
54
+ end
55
+ def self.values
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,36 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class WebhookListResponse < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::WebhookListResponse,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(T::Array[GrowsurfRuby::Models::Campaign::Webhook]) }
16
+ attr_accessor :webhooks
17
+
18
+ sig do
19
+ params(
20
+ webhooks: T::Array[GrowsurfRuby::Models::Campaign::Webhook::OrHash]
21
+ ).returns(T.attached_class)
22
+ end
23
+ def self.new(webhooks:)
24
+ end
25
+
26
+ sig do
27
+ override.returns(
28
+ { webhooks: T::Array[GrowsurfRuby::Models::Campaign::Webhook] }
29
+ )
30
+ end
31
+ def to_hash
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,69 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class WebhookTestParams < GrowsurfRuby::Internal::Type::BaseModel
7
+ extend GrowsurfRuby::Internal::Type::RequestParameters::Converter
8
+ include GrowsurfRuby::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ GrowsurfRuby::Campaign::WebhookTestParams,
14
+ GrowsurfRuby::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :id
20
+
21
+ sig { returns(String) }
22
+ attr_accessor :webhook_id
23
+
24
+ # The event to simulate. When omitted, the webhook's first enabled event is used
25
+ # (returns `400` if it has no enabled events).
26
+ sig do
27
+ returns(T.nilable(GrowsurfRuby::Campaign::WebhookEvent::OrSymbol))
28
+ end
29
+ attr_reader :event
30
+
31
+ sig do
32
+ params(event: GrowsurfRuby::Campaign::WebhookEvent::OrSymbol).void
33
+ end
34
+ attr_writer :event
35
+
36
+ sig do
37
+ params(
38
+ id: String,
39
+ webhook_id: String,
40
+ event: GrowsurfRuby::Campaign::WebhookEvent::OrSymbol,
41
+ request_options: GrowsurfRuby::RequestOptions::OrHash
42
+ ).returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+ id:,
46
+ webhook_id:,
47
+ # The event to simulate. When omitted, the webhook's first enabled event is used
48
+ # (returns `400` if it has no enabled events).
49
+ event: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ id: String,
58
+ webhook_id: String,
59
+ event: GrowsurfRuby::Campaign::WebhookEvent::OrSymbol,
60
+ request_options: GrowsurfRuby::RequestOptions
61
+ }
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end