growsurf-ruby 1.8.1 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cc9cb8240076dada54cb5c6791f162c599eb3963e13e2baec3d2f7e2afcf66e
4
- data.tar.gz: a631c70f08428385f1bb0afaf6c218b88354804e1a6908ad95a081d87745100d
3
+ metadata.gz: 639861d0b1e6d0a9d32dad41ddc207c776a71eaa84b5f8455c549bd4f0962ea2
4
+ data.tar.gz: 8f050dc64bc242a26af0eaf48b04fd8e3986a830d07e65ca7f06b4b072a83007
5
5
  SHA512:
6
- metadata.gz: 1d5b8aa05bdd8fdf3fbf6822a696c5d76a041e29af11d7e5b7b469067d80c25074bb6324e4fc6f2e756f479917fac70f4dcd6b032a92891734bfaca5f0ba951b
7
- data.tar.gz: ce692094a359a416f1441881afbd73880fa1a73abf7f74c722e6832f02c210c211d3658a4c5d6bec94ad60df3d98a7c295060229277069c15900b7086c8bc87f
6
+ metadata.gz: 5f9ca0a45ec5c4ffd1093e73936986fad8eb7dad5088bc99e1030f3d80a04780cd62f16e0cdf58f1594a8a490d62d87ba4db3d9c14157a083a9a8a62394ab8a4
7
+ data.tar.gz: 349179a199d646fa5de5626a06f2c0cf11b45ca6e5510191816ecd817c2305ee38e0a68eac3aa8e7aaad7f3d368d34995e4f3441c28151a844703c27e3f02484
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.10.0](https://github.com/growsurf/growsurf-ruby/compare/v1.9.0...v1.10.0) (2026-09-23)
4
+
5
+
6
+ ### Features
7
+
8
+ * **api:** update SDK campaign contracts and request handling ([86574eb](https://github.com/growsurf/growsurf-ruby/commit/86574ebcadd9997ea10e202cb6e2abe5a58e9f39))
9
+
10
+ ## [1.9.0](https://github.com/growsurf/growsurf-ruby/compare/v1.8.1...v1.9.0) (2026-09-21)
11
+
12
+
13
+ ### Features
14
+
15
+ * **api:** add referral-flow screenshot capture and participant leadCount ([5063d8e](https://github.com/growsurf/growsurf-ruby/commit/5063d8ec000bcab673eb783af42dd670cc0d475c))
16
+
17
+
18
+ ### Chores
19
+
20
+ * merge origin/main ([10f605f](https://github.com/growsurf/growsurf-ruby/commit/10f605fee31fc665e2fc17a1f930231d840d34be))
21
+
3
22
  ## [1.8.1](https://github.com/growsurf/growsurf-ruby/compare/v1.8.0...v1.8.1) (2026-09-19)
4
23
 
5
24
 
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "growsurf-ruby", "~> 1.8.1"
20
+ gem "growsurf-ruby", "~> 1.10.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -135,6 +135,13 @@ module GrowsurfRuby
135
135
  # @return [String, nil]
136
136
  optional :last_name, String, api_name: :lastName, nil?: true
137
137
 
138
+ # @!attribute lead_count
139
+ # The number of pending referrals the participant made that have not converted
140
+ # into successful referrals yet.
141
+ #
142
+ # @return [Integer, nil]
143
+ optional :lead_count, Integer, api_name: :leadCount
144
+
138
145
  # @!attribute metadata
139
146
  # Shallow custom metadata object.
140
147
  #
@@ -249,7 +256,7 @@ module GrowsurfRuby
249
256
  # @return [Array<String>, nil]
250
257
  optional :vanity_keys, GrowsurfRuby::Internal::Type::ArrayOf[String], api_name: :vanityKeys
251
258
 
252
- # @!method initialize(id:, email:, monthly_rank:, monthly_referral_count:, rank:, referral_count:, rewards:, share_url: nil, affiliate_enrollment_source: nil, affiliate_status: nil, all_matching_fraudsters: nil, created_at: nil, fingerprint: nil, first_name: nil, fraud_reason_code: nil, fraud_risk_level: nil, impression_count: nil, invite_count: nil, ip_address: nil, is_affiliate: nil, is_new: nil, is_winner: nil, last_name: nil, metadata: nil, mobile_instance_id: nil, monthly_referrals: nil, notes: nil, payout_settings: nil, paypal_email_address: nil, prev_monthly_rank: nil, prev_monthly_referral_count: nil, referrals: nil, referral_source: nil, referral_status: nil, referred_by: nil, referrer: nil, share_count: nil, unique_impression_count: nil, unread_commissions_count: nil, unread_payouts_count: nil, unsubscribed: nil, vanity_keys: nil)
259
+ # @!method initialize(id:, email:, monthly_rank:, monthly_referral_count:, rank:, referral_count:, rewards:, share_url: nil, affiliate_enrollment_source: nil, affiliate_status: nil, all_matching_fraudsters: nil, created_at: nil, fingerprint: nil, first_name: nil, fraud_reason_code: nil, fraud_risk_level: nil, impression_count: nil, invite_count: nil, ip_address: nil, is_affiliate: nil, is_new: nil, is_winner: nil, last_name: nil, lead_count: nil, metadata: nil, mobile_instance_id: nil, monthly_referrals: nil, notes: nil, payout_settings: nil, paypal_email_address: nil, prev_monthly_rank: nil, prev_monthly_referral_count: nil, referrals: nil, referral_source: nil, referral_status: nil, referred_by: nil, referrer: nil, share_count: nil, unique_impression_count: nil, unread_commissions_count: nil, unread_payouts_count: nil, unsubscribed: nil, vanity_keys: nil)
253
260
  # Some parameter documentations has been truncated, see
254
261
  # {GrowsurfRuby::Models::Campaign::CampaignParticipant} for more details.
255
262
  #
@@ -300,6 +307,8 @@ module GrowsurfRuby
300
307
  #
301
308
  # @param last_name [String, nil]
302
309
  #
310
+ # @param lead_count [Integer] The number of pending referrals the participant made that have not converted
311
+ #
303
312
  # @param metadata [Hash{Symbol=>Object}] Shallow custom metadata object.
304
313
  #
305
314
  # @param mobile_instance_id [String, nil] App-install scoped mobile identifier used for anti-fraud matching when provided
@@ -436,6 +445,13 @@ module GrowsurfRuby
436
445
  # @return [String, nil]
437
446
  optional :last_name, String, api_name: :lastName, nil?: true
438
447
 
448
+ # @!attribute lead_count
449
+ # The number of pending referrals the participant made that have not converted
450
+ # into successful referrals yet.
451
+ #
452
+ # @return [Integer, nil]
453
+ optional :lead_count, Integer, api_name: :leadCount
454
+
439
455
  # @!attribute metadata
440
456
  # Shallow custom metadata object.
441
457
  #
@@ -522,7 +538,7 @@ module GrowsurfRuby
522
538
  # @return [Boolean, nil]
523
539
  optional :unsubscribed, GrowsurfRuby::Internal::Type::Boolean
524
540
 
525
- # @!method initialize(id: nil, created_at: nil, email: nil, fingerprint: nil, first_name: nil, fraud_reason_code: nil, fraud_risk_level: nil, impression_count: nil, invite_count: nil, ip_address: nil, is_winner: nil, last_name: nil, metadata: nil, monthly_rank: nil, monthly_referral_count: nil, monthly_referrals: nil, prev_monthly_rank: nil, prev_monthly_referral_count: nil, rank: nil, referral_count: nil, referrals: nil, referral_source: nil, referral_status: nil, share_count: nil, share_url: nil, unique_impression_count: nil, unsubscribed: nil)
541
+ # @!method initialize(id: nil, created_at: nil, email: nil, fingerprint: nil, first_name: nil, fraud_reason_code: nil, fraud_risk_level: nil, impression_count: nil, invite_count: nil, ip_address: nil, is_winner: nil, last_name: nil, lead_count: nil, metadata: nil, monthly_rank: nil, monthly_referral_count: nil, monthly_referrals: nil, prev_monthly_rank: nil, prev_monthly_referral_count: nil, rank: nil, referral_count: nil, referrals: nil, referral_source: nil, referral_status: nil, share_count: nil, share_url: nil, unique_impression_count: nil, unsubscribed: nil)
526
542
  # @param id [String]
527
543
  #
528
544
  # @param created_at [Integer]
@@ -547,6 +563,8 @@ module GrowsurfRuby
547
563
  #
548
564
  # @param last_name [String, nil]
549
565
  #
566
+ # @param lead_count [Integer] The number of pending referrals the participant made that have not converted
567
+ #
550
568
  # @param metadata [Hash{Symbol=>Object}] Shallow custom metadata object.
551
569
  #
552
570
  # @param monthly_rank [Integer]
@@ -0,0 +1,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ # @see GrowsurfRuby::Resources::Campaign#capture_referral_flow_screenshots
6
+ class CampaignCaptureReferralFlowScreenshotsResponse < GrowsurfRuby::Internal::Type::BaseModel
7
+ # @!attribute expires_at
8
+ # When every screenshot URL in this response stops working. Capture again after
9
+ # this time for a fresh view.
10
+ #
11
+ # @return [Time]
12
+ required :expires_at, Time, api_name: :expiresAt
13
+
14
+ # @!attribute generated_at
15
+ # When these screenshots were rendered.
16
+ #
17
+ # @return [Time]
18
+ required :generated_at, Time, api_name: :generatedAt
19
+
20
+ # @!attribute screenshots
21
+ # One preview image per view: the referrer window a participant sees, and the
22
+ # referred-friend experience.
23
+ #
24
+ # @return [Array<GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot>]
25
+ required :screenshots,
26
+ -> {
27
+ GrowsurfRuby::Internal::Type::ArrayOf[
28
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot
29
+ ]
30
+ }
31
+
32
+ # @!method initialize(expires_at:, generated_at:, screenshots:)
33
+ # Some parameter documentations has been truncated, see
34
+ # {GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse} for more
35
+ # details.
36
+ #
37
+ # @param expires_at [Time] When every screenshot URL in this response stops working. Capture again after th
38
+ #
39
+ # @param generated_at [Time] When these screenshots were rendered.
40
+ #
41
+ # @param screenshots [Array<GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot>] One preview image per view: the referrer window a participant sees, and the refe
42
+
43
+ class Screenshot < GrowsurfRuby::Internal::Type::BaseModel
44
+ # @!attribute content_type
45
+ # Media type of the image, such as `image/png`.
46
+ #
47
+ # @return [String]
48
+ required :content_type, String, api_name: :contentType
49
+
50
+ # @!attribute expires_at
51
+ # When this screenshot URL stops working.
52
+ #
53
+ # @return [Time]
54
+ required :expires_at, Time, api_name: :expiresAt
55
+
56
+ # @!attribute height
57
+ # Image height in pixels.
58
+ #
59
+ # @return [Integer]
60
+ required :height, Integer
61
+
62
+ # @!attribute label
63
+ # Human-readable name for the view, suitable for a caption.
64
+ #
65
+ # @return [String]
66
+ required :label, String
67
+
68
+ # @!attribute url
69
+ # Private URL of the image. It expires at `expiresAt`; do not store it.
70
+ #
71
+ # @return [String]
72
+ required :url, String
73
+
74
+ # @!attribute view
75
+ # Which part of the referral flow the image shows. `referrer` is the window a
76
+ # participant sees; `referredFriend` is the experience their referred friend sees.
77
+ #
78
+ # @return [Symbol, GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View]
79
+ required :view, enum: -> { GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View }
80
+
81
+ # @!attribute width
82
+ # Image width in pixels.
83
+ #
84
+ # @return [Integer]
85
+ required :width, Integer
86
+
87
+ # @!method initialize(content_type:, expires_at:, height:, label:, url:, view:, width:)
88
+ # Some parameter documentations has been truncated, see
89
+ # {GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot}
90
+ # for more details.
91
+ #
92
+ # @param content_type [String] Media type of the image, such as `image/png`.
93
+ #
94
+ # @param expires_at [Time] When this screenshot URL stops working.
95
+ #
96
+ # @param height [Integer] Image height in pixels.
97
+ #
98
+ # @param label [String] Human-readable name for the view, suitable for a caption.
99
+ #
100
+ # @param url [String] Private URL of the image. It expires at `expiresAt`; do not store it.
101
+ #
102
+ # @param view [Symbol, GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View] Which part of the referral flow the image shows. `referrer` is the window a parti
103
+ #
104
+ # @param width [Integer] Image width in pixels.
105
+
106
+ # Which part of the referral flow the image shows. `referrer` is the window a
107
+ # participant sees; `referredFriend` is the experience their referred friend sees.
108
+ #
109
+ # @see GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot#view
110
+ module View
111
+ extend GrowsurfRuby::Internal::Type::Enum
112
+
113
+ REFERRER = :referrer
114
+ REFERRED_FRIEND = :referredFriend
115
+
116
+ # @!method self.values
117
+ # @return [Array<Symbol>]
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -12,7 +12,9 @@ module GrowsurfRuby
12
12
  # types, with its colors under `theme.referredExperienceOfferPopup`. `widget` is the website
13
13
  # widget shown in a corner of your own site, with its colors under `theme.widget`;
14
14
  # both of its audience switches start off, so a program shows nothing until you turn one
15
- # on.
15
+ # on. `trafficInsights` is the participant Traffic report; it starts on for new affiliate
16
+ # programs and hidden for referral programs, and `GET` returns every setting with its
17
+ # default copy.
16
18
  # `participantAvatarStyle` is `CHARACTERS`, `INITIALS`, `ANIMALS`, or `GRADIENT`; missing or
17
19
  # unknown values mean `INITIALS`.
18
20
  # `payoutDestinationConfirmation` is omitted when no confirmation fields are stored. Stored
@@ -35,8 +37,9 @@ module GrowsurfRuby
35
37
  end
36
38
 
37
39
  # Updates a program's design configuration, including the payout-destination confirmation
38
- # page copy, the Claim Offer Popup under `referredExperience`, and the website widget under
39
- # `widget`. Only the fields you send
40
+ # page copy, the Claim Offer Popup under `referredExperience`, the website widget under
41
+ # `widget`, and the participant Traffic report under `trafficInsights` (its labels cannot be
42
+ # blank). Only the fields you send
40
43
  # are changed;
41
44
  # anything you leave out is untouched (arrays such as `signup.fields` replace wholesale).
42
45
  # Unknown fields, fields not available for the program type, and invalid values return a
@@ -4,9 +4,9 @@ module GrowsurfRuby
4
4
  module Resources
5
5
  class Campaign
6
6
  class Rewards
7
- # Retrieves the list of a program's configured rewards (`CampaignReward`s) — the
8
- # same set embedded in the `rewards` array of the campaign response. Delete a
9
- # reward with `DELETE /campaign/{id}/reward-configs/{campaignRewardId}`.
7
+ # Retrieves configured Campaign Rewards, including switched-off rewards and rewards
8
+ # whose group is not selected. Deleted rewards are excluded. The campaign response's
9
+ # embedded rewards array includes only enabled, visible rewards.
10
10
  #
11
11
  # @overload list(id, request_options: {})
12
12
  #
@@ -172,6 +172,30 @@ module GrowsurfRuby
172
172
  )
173
173
  end
174
174
 
175
+ # Renders the program's current saved configuration into two preview images: the
176
+ # referrer window a participant sees, and the referred-friend experience. Use them
177
+ # to show a person what the draft looks like before anything launches. The images
178
+ # render GrowSurf's own preview, not the program's installed website, so they do
179
+ # not prove an installation. Each URL is private and expires; capture again when
180
+ # you need a fresh view. Only the account owner's credential can capture
181
+ # screenshots, and the endpoint takes no request body.
182
+ #
183
+ # @overload capture_referral_flow_screenshots(id, request_options: {})
184
+ #
185
+ # @param id [String] GrowSurf program ID.
186
+ #
187
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
188
+ #
189
+ # @return [GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse]
190
+ def capture_referral_flow_screenshots(id, params = {})
191
+ @client.request(
192
+ method: :post,
193
+ path: ["campaign/%1$s/referral-flow-screenshots", id],
194
+ model: GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse,
195
+ options: params[:request_options]
196
+ )
197
+ end
198
+
175
199
  # Invites someone to join the affiliate program. GrowSurf emails them a single-use
176
200
  # accept link; accepting it enrolls them as an approved affiliate without going
177
201
  # through the public application. One active invite can exist per email address.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrowsurfRuby
4
- VERSION = "1.8.1"
4
+ VERSION = "1.10.0"
5
5
  end
data/lib/growsurf_ruby.rb CHANGED
@@ -143,6 +143,7 @@ require_relative "growsurf_ruby/models/team_resend_owner_verification_email_resp
143
143
  require_relative "growsurf_ruby/models/team_rotate_api_key_response"
144
144
  require_relative "growsurf_ruby/models/team_update_params"
145
145
  require_relative "growsurf_ruby/models/campaign"
146
+ require_relative "growsurf_ruby/models/campaign_capture_referral_flow_screenshots_response"
146
147
  require_relative "growsurf_ruby/models/campaign_create_affiliate_invite_params"
147
148
  require_relative "growsurf_ruby/models/campaign_create_mobile_participant_token_params"
148
149
  require_relative "growsurf_ruby/models/campaign_create_mobile_participant_token_response"
@@ -132,6 +132,14 @@ module GrowsurfRuby
132
132
  sig { returns(T.nilable(String)) }
133
133
  attr_accessor :last_name
134
134
 
135
+ # The number of pending referrals the participant made that have not converted
136
+ # into successful referrals yet.
137
+ sig { returns(T.nilable(Integer)) }
138
+ attr_reader :lead_count
139
+
140
+ sig { params(lead_count: Integer).void }
141
+ attr_writer :lead_count
142
+
135
143
  # Shallow custom metadata object.
136
144
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
137
145
  attr_reader :metadata
@@ -311,6 +319,7 @@ module GrowsurfRuby
311
319
  is_new: T::Boolean,
312
320
  is_winner: T::Boolean,
313
321
  last_name: T.nilable(String),
322
+ lead_count: Integer,
314
323
  metadata: T::Hash[Symbol, T.anything],
315
324
  mobile_instance_id: T.nilable(String),
316
325
  monthly_referrals: T::Array[String],
@@ -369,6 +378,9 @@ module GrowsurfRuby
369
378
  is_new: nil,
370
379
  is_winner: nil,
371
380
  last_name: nil,
381
+ # The number of pending referrals the participant made that have not converted
382
+ # into successful referrals yet.
383
+ lead_count: nil,
372
384
  # Shallow custom metadata object.
373
385
  metadata: nil,
374
386
  # App-install scoped mobile identifier used for anti-fraud matching when provided
@@ -425,6 +437,7 @@ module GrowsurfRuby
425
437
  is_new: T::Boolean,
426
438
  is_winner: T::Boolean,
427
439
  last_name: T.nilable(String),
440
+ lead_count: Integer,
428
441
  metadata: T::Hash[Symbol, T.anything],
429
442
  mobile_instance_id: T.nilable(String),
430
443
  monthly_referrals: T::Array[String],
@@ -629,6 +642,14 @@ module GrowsurfRuby
629
642
  sig { returns(T.nilable(String)) }
630
643
  attr_accessor :last_name
631
644
 
645
+ # The number of pending referrals the participant made that have not converted
646
+ # into successful referrals yet.
647
+ sig { returns(T.nilable(Integer)) }
648
+ attr_reader :lead_count
649
+
650
+ sig { params(lead_count: Integer).void }
651
+ attr_writer :lead_count
652
+
632
653
  # Shallow custom metadata object.
633
654
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
634
655
  attr_reader :metadata
@@ -751,6 +772,7 @@ module GrowsurfRuby
751
772
  ip_address: T.nilable(String),
752
773
  is_winner: T::Boolean,
753
774
  last_name: T.nilable(String),
775
+ lead_count: Integer,
754
776
  metadata: T::Hash[Symbol, T.anything],
755
777
  monthly_rank: Integer,
756
778
  monthly_referral_count: Integer,
@@ -781,6 +803,9 @@ module GrowsurfRuby
781
803
  ip_address: nil,
782
804
  is_winner: nil,
783
805
  last_name: nil,
806
+ # The number of pending referrals the participant made that have not converted
807
+ # into successful referrals yet.
808
+ lead_count: nil,
784
809
  # Shallow custom metadata object.
785
810
  metadata: nil,
786
811
  monthly_rank: nil,
@@ -816,6 +841,7 @@ module GrowsurfRuby
816
841
  ip_address: T.nilable(String),
817
842
  is_winner: T::Boolean,
818
843
  last_name: T.nilable(String),
844
+ lead_count: Integer,
819
845
  metadata: T::Hash[Symbol, T.anything],
820
846
  monthly_rank: Integer,
821
847
  monthly_referral_count: Integer,
@@ -0,0 +1,199 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ class CampaignCaptureReferralFlowScreenshotsResponse < GrowsurfRuby::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse,
10
+ GrowsurfRuby::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # When every screenshot URL in this response stops working. Capture again after
15
+ # this time for a fresh view.
16
+ sig { returns(Time) }
17
+ attr_accessor :expires_at
18
+
19
+ # When these screenshots were rendered.
20
+ sig { returns(Time) }
21
+ attr_accessor :generated_at
22
+
23
+ # One preview image per view: the referrer window a participant sees, and the
24
+ # referred-friend experience.
25
+ sig do
26
+ returns(
27
+ T::Array[
28
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot
29
+ ]
30
+ )
31
+ end
32
+ attr_accessor :screenshots
33
+
34
+ sig do
35
+ params(
36
+ expires_at: Time,
37
+ generated_at: Time,
38
+ screenshots:
39
+ T::Array[
40
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::OrHash
41
+ ]
42
+ ).returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+ # When every screenshot URL in this response stops working. Capture again after
46
+ # this time for a fresh view.
47
+ expires_at:,
48
+ # When these screenshots were rendered.
49
+ generated_at:,
50
+ # One preview image per view: the referrer window a participant sees, and the
51
+ # referred-friend experience.
52
+ screenshots:
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ expires_at: Time,
60
+ generated_at: Time,
61
+ screenshots:
62
+ T::Array[
63
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot
64
+ ]
65
+ }
66
+ )
67
+ end
68
+ def to_hash
69
+ end
70
+
71
+ class Screenshot < GrowsurfRuby::Internal::Type::BaseModel
72
+ OrHash =
73
+ T.type_alias do
74
+ T.any(
75
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot,
76
+ GrowsurfRuby::Internal::AnyHash
77
+ )
78
+ end
79
+
80
+ # Media type of the image, such as `image/png`.
81
+ sig { returns(String) }
82
+ attr_accessor :content_type
83
+
84
+ # When this screenshot URL stops working.
85
+ sig { returns(Time) }
86
+ attr_accessor :expires_at
87
+
88
+ # Image height in pixels.
89
+ sig { returns(Integer) }
90
+ attr_accessor :height
91
+
92
+ # Human-readable name for the view, suitable for a caption.
93
+ sig { returns(String) }
94
+ attr_accessor :label
95
+
96
+ # Private URL of the image. It expires at `expiresAt`; do not store it.
97
+ sig { returns(String) }
98
+ attr_accessor :url
99
+
100
+ # Which part of the referral flow the image shows. `referrer` is the window a
101
+ # participant sees; `referredFriend` is the experience their referred friend sees.
102
+ sig do
103
+ returns(
104
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::TaggedSymbol
105
+ )
106
+ end
107
+ attr_accessor :view
108
+
109
+ # Image width in pixels.
110
+ sig { returns(Integer) }
111
+ attr_accessor :width
112
+
113
+ sig do
114
+ params(
115
+ content_type: String,
116
+ expires_at: Time,
117
+ height: Integer,
118
+ label: String,
119
+ url: String,
120
+ view:
121
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::OrSymbol,
122
+ width: Integer
123
+ ).returns(T.attached_class)
124
+ end
125
+ def self.new(
126
+ # Media type of the image, such as `image/png`.
127
+ content_type:,
128
+ # When this screenshot URL stops working.
129
+ expires_at:,
130
+ # Image height in pixels.
131
+ height:,
132
+ # Human-readable name for the view, suitable for a caption.
133
+ label:,
134
+ # Private URL of the image. It expires at `expiresAt`; do not store it.
135
+ url:,
136
+ # Which part of the referral flow the image shows. `referrer` is the window a
137
+ # participant sees; `referredFriend` is the experience their referred friend sees.
138
+ view:,
139
+ # Image width in pixels.
140
+ width:
141
+ )
142
+ end
143
+
144
+ sig do
145
+ override.returns(
146
+ {
147
+ content_type: String,
148
+ expires_at: Time,
149
+ height: Integer,
150
+ label: String,
151
+ url: String,
152
+ view:
153
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::TaggedSymbol,
154
+ width: Integer
155
+ }
156
+ )
157
+ end
158
+ def to_hash
159
+ end
160
+
161
+ # Which part of the referral flow the image shows. `referrer` is the window a
162
+ # participant sees; `referredFriend` is the experience their referred friend sees.
163
+ module View
164
+ extend GrowsurfRuby::Internal::Type::Enum
165
+
166
+ TaggedSymbol =
167
+ T.type_alias do
168
+ T.all(
169
+ Symbol,
170
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View
171
+ )
172
+ end
173
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
174
+
175
+ REFERRER =
176
+ T.let(
177
+ :referrer,
178
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::TaggedSymbol
179
+ )
180
+ REFERRED_FRIEND =
181
+ T.let(
182
+ :referredFriend,
183
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::TaggedSymbol
184
+ )
185
+
186
+ sig do
187
+ override.returns(
188
+ T::Array[
189
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::View::TaggedSymbol
190
+ ]
191
+ )
192
+ end
193
+ def self.values
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end
@@ -35,6 +35,9 @@ module GrowsurfRuby
35
35
  # `theme.referredExperienceOfferPopup`. `widget` is the website widget shown in a
36
36
  # corner of your own site, with its colors under `theme.widget`; both of its audience
37
37
  # switches start off, so a program shows nothing until you turn one on.
38
+ # `trafficInsights` is the participant Traffic report; it starts on for new affiliate
39
+ # programs and hidden for referral programs, and `GET` returns every setting with its
40
+ # default copy.
38
41
  # `participantAvatarStyle` is `CHARACTERS`, `INITIALS`, `ANIMALS`, or `GRADIENT`; missing or
39
42
  # unknown values mean `INITIALS`.
40
43
  # `payoutDestinationConfirmation` is omitted when no confirmation fields are stored. Stored
@@ -53,8 +56,9 @@ module GrowsurfRuby
53
56
  end
54
57
 
55
58
  # Updates a program's design configuration, including the payout-destination confirmation
56
- # page copy, the Claim Offer Popup under `referredExperience`, and the website widget under
57
- # `widget`. Only the fields you send are
59
+ # page copy, the Claim Offer Popup under `referredExperience`, the website widget under
60
+ # `widget`, and the participant Traffic report under `trafficInsights` (its labels cannot be
61
+ # blank). Only the fields you send are
58
62
  # changed; anything you leave out is untouched (arrays such as `signup.fields` replace
59
63
  # wholesale). Unknown fields, fields not available for the program type, and invalid
60
64
  # values return a `400`. Landing-page custom code and JavaScript are not editable via the
@@ -4,9 +4,9 @@ module GrowsurfRuby
4
4
  module Resources
5
5
  class Campaign
6
6
  class Rewards
7
- # Retrieves the list of a program's configured rewards (`CampaignReward`s) — the
8
- # same set embedded in the `rewards` array of the campaign response. Delete a
9
- # reward with `DELETE /campaign/{id}/reward-configs/{campaignRewardId}`.
7
+ # Retrieves configured Campaign Rewards, including switched-off rewards and rewards
8
+ # whose group is not selected. Deleted rewards are excluded. The campaign response's
9
+ # embedded rewards array includes only enabled, visible rewards.
10
10
  sig do
11
11
  params(
12
12
  id: String,
@@ -151,6 +151,28 @@ module GrowsurfRuby
151
151
  )
152
152
  end
153
153
 
154
+ # Renders the program's current saved configuration into two preview images: the
155
+ # referrer window a participant sees, and the referred-friend experience. Use them
156
+ # to show a person what the draft looks like before anything launches. The images
157
+ # render GrowSurf's own preview, not the program's installed website, so they do
158
+ # not prove an installation. Each URL is private and expires; capture again when
159
+ # you need a fresh view. Only the account owner's credential can capture
160
+ # screenshots, and the endpoint takes no request body.
161
+ sig do
162
+ params(
163
+ id: String,
164
+ request_options: GrowsurfRuby::RequestOptions::OrHash
165
+ ).returns(
166
+ GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse
167
+ )
168
+ end
169
+ def capture_referral_flow_screenshots(
170
+ # GrowSurf program ID.
171
+ id,
172
+ request_options: {}
173
+ )
174
+ end
175
+
154
176
  # Invites someone to join the affiliate program. GrowSurf emails them a single-use
155
177
  # accept link; accepting it enrolls them as an approved affiliate without going
156
178
  # through the public application. One active invite can exist per email address.
@@ -26,6 +26,7 @@ module GrowsurfRuby
26
26
  is_new: bool,
27
27
  is_winner: bool,
28
28
  last_name: String?,
29
+ lead_count: Integer,
29
30
  metadata: ::Hash[Symbol, top],
30
31
  mobile_instance_id: String?,
31
32
  monthly_referrals: ::Array[String],
@@ -118,6 +119,12 @@ module GrowsurfRuby
118
119
 
119
120
  attr_accessor last_name: String?
120
121
 
122
+
123
+ attr_reader lead_count: Integer?
124
+
125
+
126
+ def lead_count=: (Integer) -> Integer
127
+
121
128
  attr_reader metadata: ::Hash[Symbol, top]?
122
129
 
123
130
  def metadata=: (::Hash[Symbol, top]) -> ::Hash[Symbol, top]
@@ -218,6 +225,7 @@ module GrowsurfRuby
218
225
  ?is_new: bool,
219
226
  ?is_winner: bool,
220
227
  ?last_name: String?,
228
+ ?lead_count: Integer,
221
229
  ?metadata: ::Hash[Symbol, top],
222
230
  ?mobile_instance_id: String?,
223
231
  ?monthly_referrals: ::Array[String],
@@ -263,6 +271,7 @@ module GrowsurfRuby
263
271
  is_new: bool,
264
272
  is_winner: bool,
265
273
  last_name: String?,
274
+ lead_count: Integer,
266
275
  metadata: ::Hash[Symbol, top],
267
276
  mobile_instance_id: String?,
268
277
  monthly_referrals: ::Array[String],
@@ -330,6 +339,7 @@ module GrowsurfRuby
330
339
  ip_address: String?,
331
340
  is_winner: bool,
332
341
  last_name: String?,
342
+ lead_count: Integer,
333
343
  metadata: ::Hash[Symbol, top],
334
344
  monthly_rank: Integer,
335
345
  monthly_referral_count: Integer,
@@ -390,6 +400,12 @@ module GrowsurfRuby
390
400
 
391
401
  attr_accessor last_name: String?
392
402
 
403
+
404
+ attr_reader lead_count: Integer?
405
+
406
+
407
+ def lead_count=: (Integer) -> Integer
408
+
393
409
  attr_reader metadata: ::Hash[Symbol, top]?
394
410
 
395
411
  def metadata=: (::Hash[Symbol, top]) -> ::Hash[Symbol, top]
@@ -467,6 +483,7 @@ module GrowsurfRuby
467
483
  ?ip_address: String?,
468
484
  ?is_winner: bool,
469
485
  ?last_name: String?,
486
+ ?lead_count: Integer,
470
487
  ?metadata: ::Hash[Symbol, top],
471
488
  ?monthly_rank: Integer,
472
489
  ?monthly_referral_count: Integer,
@@ -497,6 +514,7 @@ module GrowsurfRuby
497
514
  ip_address: String?,
498
515
  is_winner: bool,
499
516
  last_name: String?,
517
+ lead_count: Integer,
500
518
  metadata: ::Hash[Symbol, top],
501
519
  monthly_rank: Integer,
502
520
  monthly_referral_count: Integer,
@@ -0,0 +1,88 @@
1
+ module GrowsurfRuby
2
+ module Models
3
+ type campaign_capture_referral_flow_screenshots_response =
4
+ {
5
+ expires_at: Time,
6
+ generated_at: Time,
7
+ screenshots: ::Array[GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot]
8
+ }
9
+
10
+ class CampaignCaptureReferralFlowScreenshotsResponse < GrowsurfRuby::Internal::Type::BaseModel
11
+ attr_accessor expires_at: Time
12
+
13
+ attr_accessor generated_at: Time
14
+
15
+ attr_accessor screenshots: ::Array[GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot]
16
+
17
+ def initialize: (
18
+ expires_at: Time,
19
+ generated_at: Time,
20
+ screenshots: ::Array[GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot]
21
+ ) -> void
22
+
23
+ def to_hash: -> {
24
+ expires_at: Time,
25
+ generated_at: Time,
26
+ screenshots: ::Array[GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot]
27
+ }
28
+
29
+ type screenshot =
30
+ {
31
+ content_type: String,
32
+ expires_at: Time,
33
+ height: Integer,
34
+ label: String,
35
+ url: String,
36
+ view: GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::view,
37
+ width: Integer
38
+ }
39
+
40
+ class Screenshot < GrowsurfRuby::Internal::Type::BaseModel
41
+ attr_accessor content_type: String
42
+
43
+ attr_accessor expires_at: Time
44
+
45
+ attr_accessor height: Integer
46
+
47
+ attr_accessor label: String
48
+
49
+ attr_accessor url: String
50
+
51
+ attr_accessor view: GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::view
52
+
53
+ attr_accessor width: Integer
54
+
55
+ def initialize: (
56
+ content_type: String,
57
+ expires_at: Time,
58
+ height: Integer,
59
+ label: String,
60
+ url: String,
61
+ view: GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::view,
62
+ width: Integer
63
+ ) -> void
64
+
65
+ def to_hash: -> {
66
+ content_type: String,
67
+ expires_at: Time,
68
+ height: Integer,
69
+ label: String,
70
+ url: String,
71
+ view: GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::view,
72
+ width: Integer
73
+ }
74
+
75
+ type view = :referrer | :referredFriend
76
+
77
+ module View
78
+ extend GrowsurfRuby::Internal::Type::Enum
79
+
80
+ REFERRER: :referrer
81
+ REFERRED_FRIEND: :referredFriend
82
+
83
+ def self?.values: -> ::Array[GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse::Screenshot::view]
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -57,6 +57,11 @@ module GrowsurfRuby
57
57
  ?request_options: GrowsurfRuby::request_opts
58
58
  ) -> GrowsurfRuby::CampaignAPI
59
59
 
60
+ def capture_referral_flow_screenshots: (
61
+ String id,
62
+ ?request_options: GrowsurfRuby::request_opts
63
+ ) -> GrowsurfRuby::Models::CampaignCaptureReferralFlowScreenshotsResponse
64
+
60
65
  def create_affiliate_invite: (
61
66
  String id,
62
67
  email: String,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growsurf-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Growsurf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-19 00:00:00.000000000 Z
11
+ date: 2026-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi
@@ -156,6 +156,7 @@ files:
156
156
  - lib/growsurf_ruby/models/campaign/webhook_test_response.rb
157
157
  - lib/growsurf_ruby/models/campaign/webhook_update_params.rb
158
158
  - lib/growsurf_ruby/models/campaign_activation_analytics_response.rb
159
+ - lib/growsurf_ruby/models/campaign_capture_referral_flow_screenshots_response.rb
159
160
  - lib/growsurf_ruby/models/campaign_create_affiliate_invite_params.rb
160
161
  - lib/growsurf_ruby/models/campaign_create_mobile_participant_token_params.rb
161
162
  - lib/growsurf_ruby/models/campaign_create_mobile_participant_token_response.rb
@@ -311,6 +312,7 @@ files:
311
312
  - rbi/growsurf_ruby/models/campaign/webhook_test_response.rbi
312
313
  - rbi/growsurf_ruby/models/campaign/webhook_update_params.rbi
313
314
  - rbi/growsurf_ruby/models/campaign_activation_analytics_response.rbi
315
+ - rbi/growsurf_ruby/models/campaign_capture_referral_flow_screenshots_response.rbi
314
316
  - rbi/growsurf_ruby/models/campaign_create_affiliate_invite_params.rbi
315
317
  - rbi/growsurf_ruby/models/campaign_create_mobile_participant_token_params.rbi
316
318
  - rbi/growsurf_ruby/models/campaign_create_mobile_participant_token_response.rbi
@@ -465,6 +467,7 @@ files:
465
467
  - sig/growsurf_ruby/models/campaign/webhook_test_response.rbs
466
468
  - sig/growsurf_ruby/models/campaign/webhook_update_params.rbs
467
469
  - sig/growsurf_ruby/models/campaign_activation_analytics_response.rbs
470
+ - sig/growsurf_ruby/models/campaign_capture_referral_flow_screenshots_response.rbs
468
471
  - sig/growsurf_ruby/models/campaign_create_affiliate_invite_params.rbs
469
472
  - sig/growsurf_ruby/models/campaign_create_mobile_participant_token_params.rbs
470
473
  - sig/growsurf_ruby/models/campaign_create_mobile_participant_token_response.rbs