growsurf-ruby 1.3.0 → 1.5.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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +10 -7
  4. data/lib/growsurf_ruby/internal/transport/base_client.rb +6 -1
  5. data/lib/growsurf_ruby/internal/type/base_model.rb +26 -0
  6. data/lib/growsurf_ruby/internal/type/base_page.rb +6 -0
  7. data/lib/growsurf_ruby/models/account_create_response.rb +3 -3
  8. data/lib/growsurf_ruby/models/analytics_availability.rb +16 -0
  9. data/lib/growsurf_ruby/models/analytics_unavailable_reason.rb +20 -0
  10. data/lib/growsurf_ruby/models/campaign/delete_program_resource_response.rb +12 -0
  11. data/lib/growsurf_ruby/models/campaign/integration.rb +69 -0
  12. data/lib/growsurf_ruby/models/campaign/integration_list_response.rb +24 -0
  13. data/lib/growsurf_ruby/models/campaign/participant_activation_analytics.rb +75 -0
  14. data/lib/growsurf_ruby/models/campaign/participant_analytics_response.rb +11 -0
  15. data/lib/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rb +17 -17
  16. data/lib/growsurf_ruby/models/campaign/participant_record_transaction_params.rb +9 -1
  17. data/lib/growsurf_ruby/models/campaign/participant_refund_transaction_params.rb +17 -1
  18. data/lib/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rb +8 -8
  19. data/lib/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rb +15 -11
  20. data/lib/growsurf_ruby/models/campaign/participant_reward.rb +16 -3
  21. data/lib/growsurf_ruby/models/campaign/program_resource.rb +51 -0
  22. data/lib/growsurf_ruby/models/campaign/program_resource_create_params.rb +32 -0
  23. data/lib/growsurf_ruby/models/campaign/program_resource_delete_params.rb +14 -0
  24. data/lib/growsurf_ruby/models/campaign/program_resource_list_response.rb +12 -0
  25. data/lib/growsurf_ruby/models/campaign/program_resource_update_params.rb +35 -0
  26. data/lib/growsurf_ruby/models/campaign/program_resource_upload_result.rb +33 -0
  27. data/lib/growsurf_ruby/models/campaign/program_resource_upload_ticket.rb +26 -0
  28. data/lib/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rb +17 -0
  29. data/lib/growsurf_ruby/models/campaign/reward.rb +22 -1
  30. data/lib/growsurf_ruby/models/campaign/reward_create_params.rb +32 -9
  31. data/lib/growsurf_ruby/models/campaign/reward_update_params.rb +32 -9
  32. data/lib/growsurf_ruby/models/campaign.rb +25 -2
  33. data/lib/growsurf_ruby/models/campaign_activation_analytics_response.rb +186 -0
  34. data/lib/growsurf_ruby/models/campaign_create_params.rb +37 -1
  35. data/lib/growsurf_ruby/models/campaign_engagement_analytics.rb +174 -0
  36. data/lib/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rb +35 -0
  37. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_params.rb +37 -4
  38. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_response.rb +3 -0
  39. data/lib/growsurf_ruby/models/commission_structure.rb +19 -3
  40. data/lib/growsurf_ruby/models/participant_commission_list.rb +24 -6
  41. data/lib/growsurf_ruby/models/participant_payout_list.rb +5 -5
  42. data/lib/growsurf_ruby/models.rb +7 -0
  43. data/lib/growsurf_ruby/resources/account.rb +17 -11
  44. data/lib/growsurf_ruby/resources/campaign/design.rb +11 -5
  45. data/lib/growsurf_ruby/resources/campaign/emails.rb +2 -1
  46. data/lib/growsurf_ruby/resources/campaign/integrations.rb +41 -0
  47. data/lib/growsurf_ruby/resources/campaign/participant.rb +28 -25
  48. data/lib/growsurf_ruby/resources/campaign/program_resources.rb +112 -0
  49. data/lib/growsurf_ruby/resources/campaign/rewards.rb +12 -6
  50. data/lib/growsurf_ruby/resources/campaign.rb +53 -7
  51. data/lib/growsurf_ruby/resources/team.rb +7 -5
  52. data/lib/growsurf_ruby/version.rb +1 -1
  53. data/lib/growsurf_ruby.rb +19 -0
  54. data/rbi/growsurf_ruby/internal/type/base_model.rbi +10 -0
  55. data/rbi/growsurf_ruby/internal/type/base_page.rbi +3 -0
  56. data/rbi/growsurf_ruby/models/analytics_availability.rbi +19 -0
  57. data/rbi/growsurf_ruby/models/analytics_unavailable_reason.rbi +23 -0
  58. data/rbi/growsurf_ruby/models/campaign/delete_program_resource_response.rbi +33 -0
  59. data/rbi/growsurf_ruby/models/campaign/integration.rbi +93 -0
  60. data/rbi/growsurf_ruby/models/campaign/integration_list_response.rbi +46 -0
  61. data/rbi/growsurf_ruby/models/campaign/participant_activation_analytics.rbi +133 -0
  62. data/rbi/growsurf_ruby/models/campaign/participant_analytics_response.rbi +35 -0
  63. data/rbi/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rbi +17 -23
  64. data/rbi/growsurf_ruby/models/campaign/participant_record_transaction_params.rbi +18 -0
  65. data/rbi/growsurf_ruby/models/campaign/participant_refund_transaction_params.rbi +18 -0
  66. data/rbi/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rbi +7 -9
  67. data/rbi/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rbi +16 -10
  68. data/rbi/growsurf_ruby/models/campaign/participant_reward.rbi +29 -6
  69. data/rbi/growsurf_ruby/models/campaign/program_resource.rbi +186 -0
  70. data/rbi/growsurf_ruby/models/campaign/program_resource_create_params.rbi +95 -0
  71. data/rbi/growsurf_ruby/models/campaign/program_resource_delete_params.rbi +37 -0
  72. data/rbi/growsurf_ruby/models/campaign/program_resource_list_response.rbi +29 -0
  73. data/rbi/growsurf_ruby/models/campaign/program_resource_update_params.rbi +105 -0
  74. data/rbi/growsurf_ruby/models/campaign/program_resource_upload_result.rbi +94 -0
  75. data/rbi/growsurf_ruby/models/campaign/program_resource_upload_ticket.rbi +57 -0
  76. data/rbi/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rbi +53 -0
  77. data/rbi/growsurf_ruby/models/campaign/reward.rbi +55 -0
  78. data/rbi/growsurf_ruby/models/campaign/reward_create_params.rbi +97 -24
  79. data/rbi/growsurf_ruby/models/campaign/reward_update_params.rbi +97 -24
  80. data/rbi/growsurf_ruby/models/campaign.rbi +52 -3
  81. data/rbi/growsurf_ruby/models/campaign_activation_analytics_response.rbi +325 -0
  82. data/rbi/growsurf_ruby/models/campaign_create_params.rbi +91 -0
  83. data/rbi/growsurf_ruby/models/campaign_engagement_analytics.rbi +369 -0
  84. data/rbi/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rbi +59 -0
  85. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_params.rbi +56 -3
  86. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_response.rbi +27 -7
  87. data/rbi/growsurf_ruby/models/commission_structure.rbi +36 -3
  88. data/rbi/growsurf_ruby/models/participant_commission_list.rbi +63 -15
  89. data/rbi/growsurf_ruby/models/participant_payout_list.rbi +15 -15
  90. data/rbi/growsurf_ruby/models.rbi +7 -0
  91. data/rbi/growsurf_ruby/resources/account.rbi +9 -6
  92. data/rbi/growsurf_ruby/resources/campaign/design.rbi +32 -4
  93. data/rbi/growsurf_ruby/resources/campaign/emails.rbi +2 -1
  94. data/rbi/growsurf_ruby/resources/campaign/integrations.rbi +35 -0
  95. data/rbi/growsurf_ruby/resources/campaign/participant.rbi +38 -24
  96. data/rbi/growsurf_ruby/resources/campaign/program_resources.rbi +116 -0
  97. data/rbi/growsurf_ruby/resources/campaign/rewards.rbi +35 -16
  98. data/rbi/growsurf_ruby/resources/campaign.rbi +53 -5
  99. data/rbi/growsurf_ruby/resources/team.rbi +7 -5
  100. data/sig/growsurf_ruby/internal/type/base_model.rbs +6 -0
  101. data/sig/growsurf_ruby/internal/type/base_page.rbs +2 -0
  102. data/sig/growsurf_ruby/models/analytics_availability.rbs +15 -0
  103. data/sig/growsurf_ruby/models/analytics_unavailable_reason.rbs +26 -0
  104. data/sig/growsurf_ruby/models/campaign/delete_program_resource_response.rbs +14 -0
  105. data/sig/growsurf_ruby/models/campaign/integration.rbs +47 -0
  106. data/sig/growsurf_ruby/models/campaign/integration_list_response.rbs +20 -0
  107. data/sig/growsurf_ruby/models/campaign/participant_activation_analytics.rbs +96 -0
  108. data/sig/growsurf_ruby/models/campaign/participant_analytics_response.rbs +22 -1
  109. data/sig/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rbs +17 -22
  110. data/sig/growsurf_ruby/models/campaign/participant_record_transaction_params.rbs +15 -1
  111. data/sig/growsurf_ruby/models/campaign/participant_refund_transaction_params.rbs +15 -1
  112. data/sig/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rbs +8 -10
  113. data/sig/growsurf_ruby/models/campaign/participant_reward.rbs +24 -9
  114. data/sig/growsurf_ruby/models/campaign/program_resource.rbs +94 -0
  115. data/sig/growsurf_ruby/models/campaign/program_resource_create_params.rbs +45 -0
  116. data/sig/growsurf_ruby/models/campaign/program_resource_delete_params.rbs +22 -0
  117. data/sig/growsurf_ruby/models/campaign/program_resource_list_response.rbs +14 -0
  118. data/sig/growsurf_ruby/models/campaign/program_resource_update_params.rbs +48 -0
  119. data/sig/growsurf_ruby/models/campaign/program_resource_upload_result.rbs +58 -0
  120. data/sig/growsurf_ruby/models/campaign/program_resource_upload_ticket.rbs +29 -0
  121. data/sig/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rbs +29 -0
  122. data/sig/growsurf_ruby/models/campaign/reward.rbs +16 -0
  123. data/sig/growsurf_ruby/models/campaign/reward_create_params.rbs +54 -34
  124. data/sig/growsurf_ruby/models/campaign/reward_update_params.rbs +54 -34
  125. data/sig/growsurf_ruby/models/campaign.rbs +23 -5
  126. data/sig/growsurf_ruby/models/campaign_activation_analytics_response.rbs +202 -0
  127. data/sig/growsurf_ruby/models/campaign_create_params.rbs +29 -0
  128. data/sig/growsurf_ruby/models/campaign_engagement_analytics.rbs +186 -0
  129. data/sig/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rbs +45 -0
  130. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_params.rbs +30 -1
  131. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_response.rbs +21 -3
  132. data/sig/growsurf_ruby/models/commission_structure.rbs +16 -4
  133. data/sig/growsurf_ruby/models/participant_commission_list.rbs +36 -20
  134. data/sig/growsurf_ruby/models/participant_payout_list.rbs +20 -20
  135. data/sig/growsurf_ruby/models.rbs +6 -0
  136. data/sig/growsurf_ruby/resources/campaign/design.rbs +19 -0
  137. data/sig/growsurf_ruby/resources/campaign/integrations.rbs +14 -0
  138. data/sig/growsurf_ruby/resources/campaign/participant.rbs +4 -0
  139. data/sig/growsurf_ruby/resources/campaign/program_resources.rbs +58 -0
  140. data/sig/growsurf_ruby/resources/campaign/rewards.rbs +14 -12
  141. data/sig/growsurf_ruby/resources/campaign.rbs +17 -0
  142. metadata +59 -2
@@ -18,6 +18,10 @@ module GrowsurfRuby
18
18
  # @return [GrowsurfRuby::Resources::Campaign::Rewards]
19
19
  attr_reader :rewards
20
20
 
21
+ # Program Resource management and secure FILE upload operations.
22
+ # @return [GrowsurfRuby::Resources::Campaign::ProgramResources]
23
+ attr_reader :resources
24
+
21
25
  # Program Editor "Design" tab configuration operations.
22
26
  # @return [GrowsurfRuby::Resources::Campaign::Design]
23
27
  attr_reader :design
@@ -34,6 +38,10 @@ module GrowsurfRuby
34
38
  # @return [GrowsurfRuby::Resources::Campaign::Installation]
35
39
  attr_reader :installation
36
40
 
41
+ # Integration status operations.
42
+ # @return [GrowsurfRuby::Resources::Campaign::Integrations]
43
+ attr_reader :integrations
44
+
37
45
  # Program webhook configuration operations.
38
46
  # @return [GrowsurfRuby::Resources::Campaign::Webhooks]
39
47
  attr_reader :webhooks
@@ -79,7 +87,7 @@ module GrowsurfRuby
79
87
  # Creates a new program, plus any optional campaign rewards. The new program is
80
88
  # created in `DRAFT` status and owned by the API key's bound team.
81
89
  #
82
- # @overload create(type:, company_logo_image_url: nil, company_name: nil, currency_iso: nil, name: nil, rewards: nil, request_options: {})
90
+ # @overload create(type:, company_logo_image_url: nil, company_name: nil, currency_iso: nil, goal: nil, name: nil, rewards: nil, request_options: {})
83
91
  #
84
92
  # @param type [Symbol, GrowsurfRuby::Models::CampaignCreateParams::Type] The program type. Immutable after creation.
85
93
  #
@@ -89,6 +97,8 @@ module GrowsurfRuby
89
97
  #
90
98
  # @param currency_iso [String] ISO 4217 currency code. Defaults to USD. Chosen when the program is created and immutable afterward — it cannot be changed on update.
91
99
  #
100
+ # @param goal [Symbol, GrowsurfRuby::Models::CampaignCreateParams::Goal] What the program is for, which seeds share settings that suit that audience. Programs selling to businesses start with the LinkedIn share button visible; consumer, financial, education, insurance, newsletter, and waitlist programs start with it hidden. Set only when the program is created.
101
+ #
92
102
  # @param name [String] The program name. Defaults to a generated friendly label plus the creation date.
93
103
  #
94
104
  # @param rewards [Array<GrowsurfRuby::Models::Campaign::RewardCreateParams>] Optional inline rewards to create with the program.
@@ -531,13 +541,11 @@ module GrowsurfRuby
531
541
  #
532
542
  # Retrieves analytics for a program. Pass `interval` to also get a time-series
533
543
  # (`series`) alongside the totals, and `include` to add previous-period totals,
534
- # status breakdowns, derived rates, or email performance. Add `email` to `include`
535
- # for `sent` (accepted for delivery), `delivered`, `opened`, `clicked`, `bounced`,
536
- # and `spamComplaints` metrics plus per-email-type breakdowns. Email rates are
537
- # ratios from `0` to `1`, and `isPartial` identifies windows that begin before
538
- # complete coverage.
544
+ # status breakdowns, derived rates, email performance, or participant engagement.
545
+ # Add `engagement` for covered activity totals, comparisons, series, and breakdowns.
546
+ # Unknown coverage returns explicit unavailable states rather than zeroes.
539
547
  #
540
- # @overload retrieve_analytics(id, days: nil, end_date: nil, include: nil, interval: nil, start_date: nil, request_options: {})
548
+ # @overload retrieve_analytics(id, days: nil, end_date: nil, include: nil, interval: nil, platform: nil, start_date: nil, timezone: nil, request_options: {})
541
549
  #
542
550
  # @param id [String] GrowSurf program ID.
543
551
  #
@@ -549,8 +557,12 @@ module GrowsurfRuby
549
557
  #
550
558
  # @param interval [Symbol, GrowsurfRuby::Models::CampaignRetrieveAnalyticsParams::Interval] When set to `day`, `week`, or `month`, the response also includes a `series` array
551
559
  #
560
+ # @param platform [Symbol, GrowsurfRuby::Models::CampaignRetrieveAnalyticsParams::Platform] Limits engagement events to one client platform.
561
+ #
552
562
  # @param start_date [Integer] Start date of the analytics timeframe as a Unix timestamp in milliseconds. Requi
553
563
  #
564
+ # @param timezone [String] IANA timezone used for engagement interval boundaries and distinct-day calculations.
565
+ #
554
566
  # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
555
567
  #
556
568
  # @return [GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse]
@@ -568,6 +580,38 @@ module GrowsurfRuby
568
580
  )
569
581
  end
570
582
 
583
+ # Retrieves activation cohorts for a program. Each cohort follows eligible
584
+ # participants through portal views, sharing, referral visits, leads, and credited
585
+ # referrals. Coverage states distinguish unknown values from zeroes.
586
+ #
587
+ # @overload retrieve_activation_analytics(id, cohort_from: nil, cohort_to: nil, cohort_interval: nil, observation_window_days: nil, timezone: nil, request_options: {})
588
+ #
589
+ # @param id [String] GrowSurf program ID.
590
+ # @param cohort_from [Integer] Inclusive cohort enrollment start, as a Unix timestamp in milliseconds.
591
+ # @param cohort_to [Integer] Exclusive cohort enrollment end, as a Unix timestamp in milliseconds.
592
+ # @param cohort_interval [Symbol, GrowsurfRuby::Models::CampaignRetrieveActivationAnalyticsParams::CohortInterval] Cohort bucket size. Defaults to `day`.
593
+ # @param observation_window_days [Integer] Days after enrollment allowed for each participant to reach a stage. Use `7` or `30`.
594
+ # @param timezone [String] IANA timezone used for cohort bounds. Defaults to `UTC`.
595
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
596
+ # @return [GrowsurfRuby::Models::CampaignActivationAnalyticsResponse]
597
+ # @see GrowsurfRuby::Models::CampaignRetrieveActivationAnalyticsParams
598
+ def retrieve_activation_analytics(id, params = {})
599
+ parsed, options = GrowsurfRuby::CampaignRetrieveActivationAnalyticsParams.dump_request(params)
600
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
601
+ @client.request(
602
+ method: :get,
603
+ path: ["campaign/%1$s/analytics/activation", id],
604
+ query: query.transform_keys(
605
+ cohort_from: "cohortFrom",
606
+ cohort_to: "cohortTo",
607
+ cohort_interval: "cohortInterval",
608
+ observation_window_days: "observationWindowDays"
609
+ ),
610
+ model: GrowsurfRuby::Models::CampaignActivationAnalyticsResponse,
611
+ options: options
612
+ )
613
+ end
614
+
571
615
  # Some parameter documentations has been truncated, see
572
616
  # {GrowsurfRuby::Models::CampaignReviewAffiliateApplicationParams} for more
573
617
  # details.
@@ -653,10 +697,12 @@ module GrowsurfRuby
653
697
  @reward = GrowsurfRuby::Resources::Campaign::Reward.new(client: client)
654
698
  @commission = GrowsurfRuby::Resources::Campaign::Commission.new(client: client)
655
699
  @rewards = GrowsurfRuby::Resources::Campaign::Rewards.new(client: client)
700
+ @resources = GrowsurfRuby::Resources::Campaign::ProgramResources.new(client: client)
656
701
  @design = GrowsurfRuby::Resources::Campaign::Design.new(client: client)
657
702
  @emails = GrowsurfRuby::Resources::Campaign::Emails.new(client: client)
658
703
  @options = GrowsurfRuby::Resources::Campaign::Options.new(client: client)
659
704
  @installation = GrowsurfRuby::Resources::Campaign::Installation.new(client: client)
705
+ @integrations = GrowsurfRuby::Resources::Campaign::Integrations.new(client: client)
660
706
  @webhooks = GrowsurfRuby::Resources::Campaign::Webhooks.new(client: client)
661
707
  end
662
708
  end
@@ -87,11 +87,13 @@ module GrowsurfRuby
87
87
  )
88
88
  end
89
89
 
90
- # Resends the email-verification message to the bound team's owner. The response
91
- # never reveals the owner's email address. A `200` with `status: SENT` is returned
92
- # only when an email was actually dispatched. Returns `400` if the email is
93
- # already verified, and `429` if a verification email was sent too recently wait
94
- # a moment, then retry.
90
+ # Resends the email-verification message to the owner of the account the API key
91
+ # belongs to. This is the recovery path for a `403` with error code
92
+ # `EMAIL_NOT_VERIFIED_ERROR`, so it stays callable with any GrowSurf API key while the
93
+ # rest of the API is locked. The response never reveals the owner's email address. A
94
+ # `200` with `status: SENT` is returned only when an email was actually dispatched.
95
+ # Returns `400` if the email is already verified, and `429` if a verification email was
96
+ # sent too recently — wait a moment, then retry.
95
97
  #
96
98
  # @overload resend_owner_verification_email(request_options: {})
97
99
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrowsurfRuby
4
- VERSION = "1.3.0"
4
+ VERSION = "1.5.0"
5
5
  end
data/lib/growsurf_ruby.rb CHANGED
@@ -52,6 +52,10 @@ require_relative "growsurf_ruby/errors"
52
52
  require_relative "growsurf_ruby/internal/transport/base_client"
53
53
  require_relative "growsurf_ruby/internal/transport/pooled_net_requester"
54
54
  require_relative "growsurf_ruby/client"
55
+ require_relative "growsurf_ruby/models/analytics_availability"
56
+ require_relative "growsurf_ruby/models/analytics_unavailable_reason"
57
+ require_relative "growsurf_ruby/models/campaign_activation_analytics_response"
58
+ require_relative "growsurf_ruby/models/campaign_engagement_analytics"
55
59
  require_relative "growsurf_ruby/models/campaign/create"
56
60
  require_relative "growsurf_ruby/models/campaign/participant"
57
61
  require_relative "growsurf_ruby/models/campaign/campaign_reward_list_response"
@@ -63,6 +67,7 @@ require_relative "growsurf_ruby/models/campaign/delete_reward_response"
63
67
  require_relative "growsurf_ruby/models/campaign/fraud_risk_level"
64
68
  require_relative "growsurf_ruby/models/campaign/participant_activity_logs_response"
65
69
  require_relative "growsurf_ruby/models/campaign/participant_add_params"
70
+ require_relative "growsurf_ruby/models/campaign/participant_activation_analytics"
66
71
  require_relative "growsurf_ruby/models/email_analytics"
67
72
  require_relative "growsurf_ruby/models/campaign/participant_analytics_response"
68
73
  require_relative "growsurf_ruby/models/campaign/participant_bulk_delete_params"
@@ -95,6 +100,15 @@ require_relative "growsurf_ruby/models/campaign/participant_send_invites_respons
95
100
  require_relative "growsurf_ruby/models/campaign/participant_trigger_referral_params"
96
101
  require_relative "growsurf_ruby/models/campaign/participant_trigger_referral_response"
97
102
  require_relative "growsurf_ruby/models/campaign/participant_update_params"
103
+ require_relative "growsurf_ruby/models/campaign/program_resource"
104
+ require_relative "growsurf_ruby/models/campaign/program_resource_upload_result"
105
+ require_relative "growsurf_ruby/models/campaign/program_resource_create_params"
106
+ require_relative "growsurf_ruby/models/campaign/program_resource_delete_params"
107
+ require_relative "growsurf_ruby/models/campaign/program_resource_list_response"
108
+ require_relative "growsurf_ruby/models/campaign/program_resource_update_params"
109
+ require_relative "growsurf_ruby/models/campaign/program_resource_upload_ticket"
110
+ require_relative "growsurf_ruby/models/campaign/program_resource_upload_ticket_params"
111
+ require_relative "growsurf_ruby/models/campaign/delete_program_resource_response"
98
112
  require_relative "growsurf_ruby/models/campaign/referral_source"
99
113
  require_relative "growsurf_ruby/models/campaign/referral_status"
100
114
  require_relative "growsurf_ruby/models/campaign/reward"
@@ -106,6 +120,8 @@ require_relative "growsurf_ruby/models/campaign/reward_delete_response"
106
120
  require_relative "growsurf_ruby/models/campaign/reward_fulfill_params"
107
121
  require_relative "growsurf_ruby/models/campaign/reward_fulfill_response"
108
122
  require_relative "growsurf_ruby/models/campaign/reward_update_params"
123
+ require_relative "growsurf_ruby/models/campaign/integration"
124
+ require_relative "growsurf_ruby/models/campaign/integration_list_response"
109
125
  require_relative "growsurf_ruby/models/campaign/webhook"
110
126
  require_relative "growsurf_ruby/models/campaign/webhook_create_params"
111
127
  require_relative "growsurf_ruby/models/campaign/webhook_delete_params"
@@ -141,6 +157,7 @@ require_relative "growsurf_ruby/models/campaign_list_referrals_params"
141
157
  require_relative "growsurf_ruby/models/campaign_list_response"
142
158
  require_relative "growsurf_ruby/models/campaign_resend_affiliate_invite_params"
143
159
  require_relative "growsurf_ruby/models/campaign_retrieve_affiliate_application_params"
160
+ require_relative "growsurf_ruby/models/campaign_retrieve_activation_analytics_params"
144
161
  require_relative "growsurf_ruby/models/campaign_retrieve_analytics_params"
145
162
  require_relative "growsurf_ruby/models/campaign_retrieve_analytics_response"
146
163
  require_relative "growsurf_ruby/models/campaign_retrieve_params"
@@ -165,4 +182,6 @@ require_relative "growsurf_ruby/resources/campaign/options"
165
182
  require_relative "growsurf_ruby/resources/campaign/participant"
166
183
  require_relative "growsurf_ruby/resources/campaign/reward"
167
184
  require_relative "growsurf_ruby/resources/campaign/rewards"
185
+ require_relative "growsurf_ruby/resources/campaign/program_resources"
186
+ require_relative "growsurf_ruby/resources/campaign/integrations"
168
187
  require_relative "growsurf_ruby/resources/campaign/webhooks"
@@ -264,6 +264,16 @@ module GrowsurfRuby
264
264
  def deep_to_h
265
265
  end
266
266
 
267
+ sig { returns(T::Hash[String, String]) }
268
+ attr_reader :response_headers
269
+
270
+ # @api private
271
+ sig do
272
+ params(headers: T::Hash[String, String]).returns(T.self_type)
273
+ end
274
+ def attach_response_headers(headers)
275
+ end
276
+
267
277
  sig do
268
278
  params(keys: T.nilable(T::Array[Symbol])).returns(
269
279
  GrowsurfRuby::Internal::AnyHash
@@ -25,6 +25,9 @@ module GrowsurfRuby
25
25
  def to_enum
26
26
  end
27
27
 
28
+ sig { returns(T::Hash[String, String]) }
29
+ attr_reader :response_headers
30
+
28
31
  # @api private
29
32
  sig do
30
33
  params(
@@ -0,0 +1,19 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module AnalyticsAvailability
6
+ extend GrowsurfRuby::Internal::Type::Enum
7
+
8
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
9
+
10
+ AVAILABLE = T.let(:AVAILABLE, Symbol)
11
+ PARTIAL = T.let(:PARTIAL, Symbol)
12
+ UNAVAILABLE = T.let(:UNAVAILABLE, Symbol)
13
+
14
+ sig { override.returns(T::Array[Symbol]) }
15
+ def self.values
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module AnalyticsUnavailableReason
6
+ extend GrowsurfRuby::Internal::Type::Enum
7
+
8
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
9
+
10
+ COVERAGE_UNAVAILABLE = T.let(:COVERAGE_UNAVAILABLE, Symbol)
11
+ PRE_COVERAGE = T.let(:PRE_COVERAGE, Symbol)
12
+ PARTIAL_COVERAGE = T.let(:PARTIAL_COVERAGE, Symbol)
13
+ INSUFFICIENT_COVERAGE = T.let(:INSUFFICIENT_COVERAGE, Symbol)
14
+ EMPTY_DENOMINATOR = T.let(:EMPTY_DENOMINATOR, Symbol)
15
+ QUERY_LIMIT_EXCEEDED = T.let(:QUERY_LIMIT_EXCEEDED, Symbol)
16
+ PARTICIPANT_NOT_ELIGIBLE = T.let(:PARTICIPANT_NOT_ELIGIBLE, Symbol)
17
+
18
+ sig { override.returns(T::Array[Symbol]) }
19
+ def self.values
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class DeleteProgramResourceResponse < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ DeleteProgramResourceResponse,
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,93 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class Integration < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::Integration,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Stable integration key, the same value the GrowSurf dashboard uses for this
16
+ # integration.
17
+ sig { returns(String) }
18
+ attr_accessor :id
19
+
20
+ # Whether GrowSurf switched the integration off after repeated delivery failures.
21
+ # Its credentials are still stored, but it delivers nothing until it is
22
+ # reconnected in the GrowSurf dashboard.
23
+ sig { returns(T::Boolean) }
24
+ attr_accessor :auto_disabled
25
+
26
+ # Dashboard link that opens this integration's connect panel in the GrowSurf Program
27
+ # Editor. Give it to the person running the program: connecting an account is a step
28
+ # they complete in the dashboard, and the API cannot do it for them.
29
+ sig { returns(String) }
30
+ attr_accessor :connect_url
31
+
32
+ # Whether the program has stored credentials for this integration.
33
+ sig { returns(T::Boolean) }
34
+ attr_accessor :connected
35
+
36
+ # Whether the integration is switched on and currently working.
37
+ sig { returns(T::Boolean) }
38
+ attr_accessor :enabled
39
+
40
+ # Display name, matching what the GrowSurf dashboard calls this integration.
41
+ sig { returns(String) }
42
+ attr_accessor :name
43
+
44
+ # One integration a program can connect, with its current state.
45
+ sig do
46
+ params(
47
+ id: String,
48
+ auto_disabled: T::Boolean,
49
+ connect_url: String,
50
+ connected: T::Boolean,
51
+ enabled: T::Boolean,
52
+ name: String
53
+ ).returns(T.attached_class)
54
+ end
55
+ def self.new(
56
+ # Stable integration key, the same value the GrowSurf dashboard uses for this
57
+ # integration.
58
+ id:,
59
+ # Whether GrowSurf switched the integration off after repeated delivery failures.
60
+ # Its credentials are still stored, but it delivers nothing until it is
61
+ # reconnected in the GrowSurf dashboard.
62
+ auto_disabled:,
63
+ # Dashboard link that opens this integration's connect panel in the GrowSurf Program
64
+ # Editor. Give it to the person running the program: connecting an account is a step
65
+ # they complete in the dashboard, and the API cannot do it for them.
66
+ connect_url:,
67
+ # Whether the program has stored credentials for this integration.
68
+ connected:,
69
+ # Whether the integration is switched on and currently working.
70
+ enabled:,
71
+ # Display name, matching what the GrowSurf dashboard calls this integration.
72
+ name:
73
+ )
74
+ end
75
+
76
+ sig do
77
+ override.returns(
78
+ {
79
+ id: String,
80
+ auto_disabled: T::Boolean,
81
+ connect_url: String,
82
+ connected: T::Boolean,
83
+ enabled: T::Boolean,
84
+ name: String
85
+ }
86
+ )
87
+ end
88
+ def to_hash
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class IntegrationListResponse < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::IntegrationListResponse,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Every integration this program can connect, in the order the GrowSurf dashboard
16
+ # lists them.
17
+ sig { returns(T::Array[GrowsurfRuby::Models::Campaign::Integration]) }
18
+ attr_accessor :integrations
19
+
20
+ sig do
21
+ params(
22
+ integrations:
23
+ T::Array[GrowsurfRuby::Models::Campaign::Integration::OrHash]
24
+ ).returns(T.attached_class)
25
+ end
26
+ def self.new(
27
+ # Every integration this program can connect, in the order the GrowSurf dashboard
28
+ # lists them.
29
+ integrations:
30
+ )
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ integrations:
37
+ T::Array[GrowsurfRuby::Models::Campaign::Integration]
38
+ }
39
+ )
40
+ end
41
+ def to_hash
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,133 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Models
5
+ module Campaign
6
+ class ParticipantActivationAnalytics < GrowsurfRuby::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ GrowsurfRuby::Models::Campaign::ParticipantActivationAnalytics,
11
+ GrowsurfRuby::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(T.nilable(Integer)) }
16
+ attr_accessor :coverage_start_at, :enrolled_as_advocate_at
17
+
18
+ sig { returns(Integer) }
19
+ attr_accessor :metric_contract_version
20
+
21
+ sig { returns(ProgramType::OrSymbol) }
22
+ attr_accessor :program_type
23
+
24
+ sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
25
+ attr_accessor :state
26
+
27
+ sig do
28
+ returns(
29
+ T.nilable(
30
+ GrowsurfRuby::Models::AnalyticsUnavailableReason::OrSymbol
31
+ )
32
+ )
33
+ end
34
+ attr_accessor :reason
35
+
36
+ sig { returns(Cohort) }
37
+ attr_accessor :cohort
38
+
39
+ sig { returns(Milestones) }
40
+ attr_accessor :milestones
41
+
42
+ sig { params(kwargs: T.untyped).returns(T.attached_class) }
43
+ def self.new(**kwargs)
44
+ end
45
+
46
+ module ProgramType
47
+ extend GrowsurfRuby::Internal::Type::Enum
48
+
49
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
50
+ REFERRAL = T.let(:REFERRAL, Symbol)
51
+ AFFILIATE = T.let(:AFFILIATE, Symbol)
52
+ sig { override.returns(T::Array[Symbol]) }
53
+ def self.values
54
+ end
55
+ end
56
+
57
+ module AnchorField
58
+ extend GrowsurfRuby::Internal::Type::Enum
59
+
60
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
61
+ ENROLLED_AS_ADVOCATE_AT = T.let(:enrolledAsAdvocateAt, Symbol)
62
+ APPROVED_AS_AFFILIATE_AT = T.let(:approvedAsAffiliateAt, Symbol)
63
+ sig { override.returns(T::Array[Symbol]) }
64
+ def self.values
65
+ end
66
+ end
67
+
68
+ module ShareChannel
69
+ extend GrowsurfRuby::Internal::Type::Enum
70
+
71
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
72
+ EMAIL = T.let(:email, Symbol)
73
+ FACEBOOK = T.let(:facebook, Symbol)
74
+ TWITTER = T.let(:twitter, Symbol)
75
+ LINKEDIN = T.let(:linkedin, Symbol)
76
+ PINTEREST = T.let(:pinterest, Symbol)
77
+ THREADS = T.let(:threads, Symbol)
78
+ BLUESKY = T.let(:bluesky, Symbol)
79
+ SMS = T.let(:sms, Symbol)
80
+ MESSENGER = T.let(:messenger, Symbol)
81
+ WHATSAPP = T.let(:whatsapp, Symbol)
82
+ WECHAT = T.let(:wechat, Symbol)
83
+ TELEGRAM = T.let(:telegram, Symbol)
84
+ REDDIT = T.let(:reddit, Symbol)
85
+ TUMBLR = T.let(:tumblr, Symbol)
86
+ QRCODE = T.let(:qrcode, Symbol)
87
+ COPY_REF_LINK = T.let(:copyRefLink, Symbol)
88
+ IOS_NATIVE_SHARE = T.let(:iosNativeShare, Symbol)
89
+ ANDROID_NATIVE_SHARE = T.let(:androidNativeShare, Symbol)
90
+ sig { override.returns(T::Array[Symbol]) }
91
+ def self.values
92
+ end
93
+ end
94
+
95
+ class Cohort < GrowsurfRuby::Internal::Type::BaseModel
96
+ OrHash =
97
+ T.type_alias { T.any(Cohort, GrowsurfRuby::Internal::AnyHash) }
98
+ sig { returns(AnchorField::OrSymbol) }
99
+ attr_accessor :anchor_field
100
+
101
+ sig { returns(T.nilable(Integer)) }
102
+ attr_accessor :anchor_at
103
+
104
+ sig { params(kwargs: T.untyped).returns(T.attached_class) }
105
+ def self.new(**kwargs)
106
+ end
107
+ end
108
+
109
+ class Milestones < GrowsurfRuby::Internal::Type::BaseModel
110
+ OrHash =
111
+ T.type_alias { T.any(Milestones, GrowsurfRuby::Internal::AnyHash) }
112
+ sig { returns(T.nilable(Integer)) }
113
+ attr_accessor :first_portal_viewed_at,
114
+ :first_referral_link_copied_at,
115
+ :first_share_at,
116
+ :first_unique_click_at,
117
+ :first_lead_at,
118
+ :first_referral_at,
119
+ :first_reward_at,
120
+ :first_commission_at,
121
+ :payout_setup_completed_at
122
+
123
+ sig { returns(T.nilable(ShareChannel::OrSymbol)) }
124
+ attr_accessor :first_share_channel
125
+
126
+ sig { params(kwargs: T.untyped).returns(T.attached_class) }
127
+ def self.new(**kwargs)
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end