growsurf-ruby 0.0.2

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 (224) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +11 -0
  4. data/README.md +234 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/growsurf_ruby/client.rb +90 -0
  7. data/lib/growsurf_ruby/errors.rb +228 -0
  8. data/lib/growsurf_ruby/file_part.rb +58 -0
  9. data/lib/growsurf_ruby/internal/transport/base_client.rb +573 -0
  10. data/lib/growsurf_ruby/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/growsurf_ruby/internal/type/array_of.rb +168 -0
  12. data/lib/growsurf_ruby/internal/type/base_model.rb +531 -0
  13. data/lib/growsurf_ruby/internal/type/base_page.rb +55 -0
  14. data/lib/growsurf_ruby/internal/type/boolean.rb +77 -0
  15. data/lib/growsurf_ruby/internal/type/converter.rb +327 -0
  16. data/lib/growsurf_ruby/internal/type/enum.rb +156 -0
  17. data/lib/growsurf_ruby/internal/type/file_input.rb +111 -0
  18. data/lib/growsurf_ruby/internal/type/hash_of.rb +188 -0
  19. data/lib/growsurf_ruby/internal/type/request_parameters.rb +42 -0
  20. data/lib/growsurf_ruby/internal/type/union.rb +254 -0
  21. data/lib/growsurf_ruby/internal/type/unknown.rb +81 -0
  22. data/lib/growsurf_ruby/internal/util.rb +966 -0
  23. data/lib/growsurf_ruby/internal.rb +20 -0
  24. data/lib/growsurf_ruby/models/campaign/commission_approve_params.rb +28 -0
  25. data/lib/growsurf_ruby/models/campaign/commission_approve_response.rb +18 -0
  26. data/lib/growsurf_ruby/models/campaign/commission_delete_params.rb +28 -0
  27. data/lib/growsurf_ruby/models/campaign/commission_delete_response.rb +18 -0
  28. data/lib/growsurf_ruby/models/campaign/fraud_risk_level.rb +18 -0
  29. data/lib/growsurf_ruby/models/campaign/participant.rb +495 -0
  30. data/lib/growsurf_ruby/models/campaign/participant_add_params.rb +93 -0
  31. data/lib/growsurf_ruby/models/campaign/participant_delete_params.rb +28 -0
  32. data/lib/growsurf_ruby/models/campaign/participant_delete_response.rb +18 -0
  33. data/lib/growsurf_ruby/models/campaign/participant_list_commissions_params.rb +68 -0
  34. data/lib/growsurf_ruby/models/campaign/participant_list_payouts_params.rb +67 -0
  35. data/lib/growsurf_ruby/models/campaign/participant_list_referrals_params.rb +117 -0
  36. data/lib/growsurf_ruby/models/campaign/participant_list_rewards_params.rb +46 -0
  37. data/lib/growsurf_ruby/models/campaign/participant_list_rewards_response.rb +30 -0
  38. data/lib/growsurf_ruby/models/campaign/participant_record_transaction_params.rb +170 -0
  39. data/lib/growsurf_ruby/models/campaign/participant_record_transaction_response.rb +91 -0
  40. data/lib/growsurf_ruby/models/campaign/participant_retrieve_params.rb +28 -0
  41. data/lib/growsurf_ruby/models/campaign/participant_reward.rb +103 -0
  42. data/lib/growsurf_ruby/models/campaign/participant_send_invites_params.rb +46 -0
  43. data/lib/growsurf_ruby/models/campaign/participant_send_invites_response.rb +30 -0
  44. data/lib/growsurf_ruby/models/campaign/participant_trigger_referral_params.rb +28 -0
  45. data/lib/growsurf_ruby/models/campaign/participant_trigger_referral_response.rb +24 -0
  46. data/lib/growsurf_ruby/models/campaign/participant_update_params.rb +100 -0
  47. data/lib/growsurf_ruby/models/campaign/referral_source.rb +17 -0
  48. data/lib/growsurf_ruby/models/campaign/referral_status.rb +19 -0
  49. data/lib/growsurf_ruby/models/campaign/reward_approve_params.rb +38 -0
  50. data/lib/growsurf_ruby/models/campaign/reward_approve_response.rb +18 -0
  51. data/lib/growsurf_ruby/models/campaign/reward_delete_params.rb +28 -0
  52. data/lib/growsurf_ruby/models/campaign/reward_delete_response.rb +18 -0
  53. data/lib/growsurf_ruby/models/campaign/reward_fulfill_params.rb +28 -0
  54. data/lib/growsurf_ruby/models/campaign/reward_fulfill_response.rb +18 -0
  55. data/lib/growsurf_ruby/models/campaign.rb +257 -0
  56. data/lib/growsurf_ruby/models/campaign_list_commissions_params.rb +59 -0
  57. data/lib/growsurf_ruby/models/campaign_list_leaderboard_params.rb +71 -0
  58. data/lib/growsurf_ruby/models/campaign_list_params.rb +14 -0
  59. data/lib/growsurf_ruby/models/campaign_list_participants_params.rb +37 -0
  60. data/lib/growsurf_ruby/models/campaign_list_payouts_params.rb +58 -0
  61. data/lib/growsurf_ruby/models/campaign_list_referrals_params.rb +108 -0
  62. data/lib/growsurf_ruby/models/campaign_list_response.rb +16 -0
  63. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_params.rb +50 -0
  64. data/lib/growsurf_ruby/models/campaign_retrieve_analytics_response.rb +215 -0
  65. data/lib/growsurf_ruby/models/campaign_retrieve_params.rb +20 -0
  66. data/lib/growsurf_ruby/models/commission_structure.rb +137 -0
  67. data/lib/growsurf_ruby/models/participant_commission_list.rb +170 -0
  68. data/lib/growsurf_ruby/models/participant_list.rb +29 -0
  69. data/lib/growsurf_ruby/models/participant_payout_list.rb +136 -0
  70. data/lib/growsurf_ruby/models/referral_list.rb +96 -0
  71. data/lib/growsurf_ruby/models.rb +71 -0
  72. data/lib/growsurf_ruby/request_options.rb +77 -0
  73. data/lib/growsurf_ruby/resources/campaign/commission.rb +71 -0
  74. data/lib/growsurf_ruby/resources/campaign/participant.rb +446 -0
  75. data/lib/growsurf_ruby/resources/campaign/reward.rb +102 -0
  76. data/lib/growsurf_ruby/resources/campaign.rb +266 -0
  77. data/lib/growsurf_ruby/version.rb +5 -0
  78. data/lib/growsurf_ruby.rb +106 -0
  79. data/manifest.yaml +17 -0
  80. data/rbi/growsurf_ruby/client.rbi +51 -0
  81. data/rbi/growsurf_ruby/errors.rbi +205 -0
  82. data/rbi/growsurf_ruby/file_part.rbi +37 -0
  83. data/rbi/growsurf_ruby/internal/transport/base_client.rbi +305 -0
  84. data/rbi/growsurf_ruby/internal/transport/pooled_net_requester.rbi +84 -0
  85. data/rbi/growsurf_ruby/internal/type/array_of.rbi +104 -0
  86. data/rbi/growsurf_ruby/internal/type/base_model.rbi +314 -0
  87. data/rbi/growsurf_ruby/internal/type/base_page.rbi +43 -0
  88. data/rbi/growsurf_ruby/internal/type/boolean.rbi +58 -0
  89. data/rbi/growsurf_ruby/internal/type/converter.rbi +222 -0
  90. data/rbi/growsurf_ruby/internal/type/enum.rbi +82 -0
  91. data/rbi/growsurf_ruby/internal/type/file_input.rbi +59 -0
  92. data/rbi/growsurf_ruby/internal/type/hash_of.rbi +104 -0
  93. data/rbi/growsurf_ruby/internal/type/request_parameters.rbi +31 -0
  94. data/rbi/growsurf_ruby/internal/type/union.rbi +128 -0
  95. data/rbi/growsurf_ruby/internal/type/unknown.rbi +58 -0
  96. data/rbi/growsurf_ruby/internal/util.rbi +515 -0
  97. data/rbi/growsurf_ruby/internal.rbi +18 -0
  98. data/rbi/growsurf_ruby/models/campaign/commission_approve_params.rbi +48 -0
  99. data/rbi/growsurf_ruby/models/campaign/commission_approve_response.rbi +28 -0
  100. data/rbi/growsurf_ruby/models/campaign/commission_delete_params.rbi +48 -0
  101. data/rbi/growsurf_ruby/models/campaign/commission_delete_response.rbi +28 -0
  102. data/rbi/growsurf_ruby/models/campaign/fraud_risk_level.rbi +29 -0
  103. data/rbi/growsurf_ruby/models/campaign/participant.rbi +667 -0
  104. data/rbi/growsurf_ruby/models/campaign/participant_add_params.rbi +166 -0
  105. data/rbi/growsurf_ruby/models/campaign/participant_delete_params.rbi +48 -0
  106. data/rbi/growsurf_ruby/models/campaign/participant_delete_response.rbi +28 -0
  107. data/rbi/growsurf_ruby/models/campaign/participant_list_commissions_params.rbi +148 -0
  108. data/rbi/growsurf_ruby/models/campaign/participant_list_payouts_params.rbi +143 -0
  109. data/rbi/growsurf_ruby/models/campaign/participant_list_referrals_params.rbi +228 -0
  110. data/rbi/growsurf_ruby/models/campaign/participant_list_rewards_params.rbi +74 -0
  111. data/rbi/growsurf_ruby/models/campaign/participant_list_rewards_response.rbi +48 -0
  112. data/rbi/growsurf_ruby/models/campaign/participant_record_transaction_params.rbi +255 -0
  113. data/rbi/growsurf_ruby/models/campaign/participant_record_transaction_response.rbi +138 -0
  114. data/rbi/growsurf_ruby/models/campaign/participant_retrieve_params.rbi +48 -0
  115. data/rbi/growsurf_ruby/models/campaign/participant_reward.rbi +185 -0
  116. data/rbi/growsurf_ruby/models/campaign/participant_send_invites_params.rbi +70 -0
  117. data/rbi/growsurf_ruby/models/campaign/participant_send_invites_response.rbi +44 -0
  118. data/rbi/growsurf_ruby/models/campaign/participant_trigger_referral_params.rbi +48 -0
  119. data/rbi/growsurf_ruby/models/campaign/participant_trigger_referral_response.rbi +36 -0
  120. data/rbi/growsurf_ruby/models/campaign/participant_update_params.rbi +178 -0
  121. data/rbi/growsurf_ruby/models/campaign/referral_source.rbi +31 -0
  122. data/rbi/growsurf_ruby/models/campaign/referral_status.rbi +44 -0
  123. data/rbi/growsurf_ruby/models/campaign/reward_approve_params.rbi +63 -0
  124. data/rbi/growsurf_ruby/models/campaign/reward_approve_response.rbi +28 -0
  125. data/rbi/growsurf_ruby/models/campaign/reward_delete_params.rbi +48 -0
  126. data/rbi/growsurf_ruby/models/campaign/reward_delete_response.rbi +28 -0
  127. data/rbi/growsurf_ruby/models/campaign/reward_fulfill_params.rbi +48 -0
  128. data/rbi/growsurf_ruby/models/campaign/reward_fulfill_response.rbi +28 -0
  129. data/rbi/growsurf_ruby/models/campaign.rbi +376 -0
  130. data/rbi/growsurf_ruby/models/campaign_list_commissions_params.rbi +135 -0
  131. data/rbi/growsurf_ruby/models/campaign_list_leaderboard_params.rbi +171 -0
  132. data/rbi/growsurf_ruby/models/campaign_list_params.rbi +32 -0
  133. data/rbi/growsurf_ruby/models/campaign_list_participants_params.rbi +66 -0
  134. data/rbi/growsurf_ruby/models/campaign_list_payouts_params.rbi +127 -0
  135. data/rbi/growsurf_ruby/models/campaign_list_referrals_params.rbi +213 -0
  136. data/rbi/growsurf_ruby/models/campaign_list_response.rbi +32 -0
  137. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_params.rbi +81 -0
  138. data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_response.rbi +320 -0
  139. data/rbi/growsurf_ruby/models/campaign_retrieve_params.rbi +38 -0
  140. data/rbi/growsurf_ruby/models/commission_structure.rbi +174 -0
  141. data/rbi/growsurf_ruby/models/participant_commission_list.rbi +269 -0
  142. data/rbi/growsurf_ruby/models/participant_list.rbi +44 -0
  143. data/rbi/growsurf_ruby/models/participant_payout_list.rbi +219 -0
  144. data/rbi/growsurf_ruby/models/referral_list.rbi +129 -0
  145. data/rbi/growsurf_ruby/models.rbi +38 -0
  146. data/rbi/growsurf_ruby/request_options.rbi +59 -0
  147. data/rbi/growsurf_ruby/resources/campaign/commission.rbi +49 -0
  148. data/rbi/growsurf_ruby/resources/campaign/participant.rbi +385 -0
  149. data/rbi/growsurf_ruby/resources/campaign/reward.rbi +70 -0
  150. data/rbi/growsurf_ruby/resources/campaign.rbi +205 -0
  151. data/rbi/growsurf_ruby/version.rbi +5 -0
  152. data/sig/growsurf_ruby/client.rbs +26 -0
  153. data/sig/growsurf_ruby/errors.rbs +117 -0
  154. data/sig/growsurf_ruby/file_part.rbs +21 -0
  155. data/sig/growsurf_ruby/internal/transport/base_client.rbs +133 -0
  156. data/sig/growsurf_ruby/internal/transport/pooled_net_requester.rbs +48 -0
  157. data/sig/growsurf_ruby/internal/type/array_of.rbs +48 -0
  158. data/sig/growsurf_ruby/internal/type/base_model.rbs +104 -0
  159. data/sig/growsurf_ruby/internal/type/base_page.rbs +24 -0
  160. data/sig/growsurf_ruby/internal/type/boolean.rbs +26 -0
  161. data/sig/growsurf_ruby/internal/type/converter.rbs +79 -0
  162. data/sig/growsurf_ruby/internal/type/enum.rbs +32 -0
  163. data/sig/growsurf_ruby/internal/type/file_input.rbs +25 -0
  164. data/sig/growsurf_ruby/internal/type/hash_of.rbs +48 -0
  165. data/sig/growsurf_ruby/internal/type/request_parameters.rbs +19 -0
  166. data/sig/growsurf_ruby/internal/type/union.rbs +52 -0
  167. data/sig/growsurf_ruby/internal/type/unknown.rbs +26 -0
  168. data/sig/growsurf_ruby/internal/util.rbs +199 -0
  169. data/sig/growsurf_ruby/internal.rbs +9 -0
  170. data/sig/growsurf_ruby/models/campaign/commission_approve_params.rbs +30 -0
  171. data/sig/growsurf_ruby/models/campaign/commission_approve_response.rbs +15 -0
  172. data/sig/growsurf_ruby/models/campaign/commission_delete_params.rbs +30 -0
  173. data/sig/growsurf_ruby/models/campaign/commission_delete_response.rbs +15 -0
  174. data/sig/growsurf_ruby/models/campaign/fraud_risk_level.rbs +17 -0
  175. data/sig/growsurf_ruby/models/campaign/participant.rbs +455 -0
  176. data/sig/growsurf_ruby/models/campaign/participant_add_params.rbs +95 -0
  177. data/sig/growsurf_ruby/models/campaign/participant_delete_params.rbs +30 -0
  178. data/sig/growsurf_ruby/models/campaign/participant_delete_response.rbs +15 -0
  179. data/sig/growsurf_ruby/models/campaign/participant_list_commissions_params.rbs +70 -0
  180. data/sig/growsurf_ruby/models/campaign/participant_list_payouts_params.rbs +69 -0
  181. data/sig/growsurf_ruby/models/campaign/participant_list_referrals_params.rbs +123 -0
  182. data/sig/growsurf_ruby/models/campaign/participant_list_rewards_params.rbs +47 -0
  183. data/sig/growsurf_ruby/models/campaign/participant_list_rewards_response.rbs +32 -0
  184. data/sig/growsurf_ruby/models/campaign/participant_record_transaction_params.rbs +194 -0
  185. data/sig/growsurf_ruby/models/campaign/participant_record_transaction_response.rbs +84 -0
  186. data/sig/growsurf_ruby/models/campaign/participant_retrieve_params.rbs +30 -0
  187. data/sig/growsurf_ruby/models/campaign/participant_reward.rbs +111 -0
  188. data/sig/growsurf_ruby/models/campaign/participant_send_invites_params.rbs +48 -0
  189. data/sig/growsurf_ruby/models/campaign/participant_send_invites_response.rbs +28 -0
  190. data/sig/growsurf_ruby/models/campaign/participant_trigger_referral_params.rbs +30 -0
  191. data/sig/growsurf_ruby/models/campaign/participant_trigger_referral_response.rbs +20 -0
  192. data/sig/growsurf_ruby/models/campaign/participant_update_params.rbs +104 -0
  193. data/sig/growsurf_ruby/models/campaign/referral_source.rbs +16 -0
  194. data/sig/growsurf_ruby/models/campaign/referral_status.rbs +19 -0
  195. data/sig/growsurf_ruby/models/campaign/reward_approve_params.rbs +36 -0
  196. data/sig/growsurf_ruby/models/campaign/reward_approve_response.rbs +15 -0
  197. data/sig/growsurf_ruby/models/campaign/reward_delete_params.rbs +30 -0
  198. data/sig/growsurf_ruby/models/campaign/reward_delete_response.rbs +15 -0
  199. data/sig/growsurf_ruby/models/campaign/reward_fulfill_params.rbs +30 -0
  200. data/sig/growsurf_ruby/models/campaign/reward_fulfill_response.rbs +15 -0
  201. data/sig/growsurf_ruby/models/campaign.rbs +221 -0
  202. data/sig/growsurf_ruby/models/campaign_list_commissions_params.rbs +63 -0
  203. data/sig/growsurf_ruby/models/campaign_list_leaderboard_params.rbs +83 -0
  204. data/sig/growsurf_ruby/models/campaign_list_params.rbs +15 -0
  205. data/sig/growsurf_ruby/models/campaign_list_participants_params.rbs +36 -0
  206. data/sig/growsurf_ruby/models/campaign_list_payouts_params.rbs +62 -0
  207. data/sig/growsurf_ruby/models/campaign_list_referrals_params.rbs +116 -0
  208. data/sig/growsurf_ruby/models/campaign_list_response.rbs +14 -0
  209. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_params.rbs +42 -0
  210. data/sig/growsurf_ruby/models/campaign_retrieve_analytics_response.rbs +217 -0
  211. data/sig/growsurf_ruby/models/campaign_retrieve_params.rbs +23 -0
  212. data/sig/growsurf_ruby/models/commission_structure.rbs +121 -0
  213. data/sig/growsurf_ruby/models/participant_commission_list.rbs +166 -0
  214. data/sig/growsurf_ruby/models/participant_list.rbs +30 -0
  215. data/sig/growsurf_ruby/models/participant_payout_list.rbs +136 -0
  216. data/sig/growsurf_ruby/models/referral_list.rbs +92 -0
  217. data/sig/growsurf_ruby/models.rbs +31 -0
  218. data/sig/growsurf_ruby/request_options.rbs +36 -0
  219. data/sig/growsurf_ruby/resources/campaign/commission.rbs +21 -0
  220. data/sig/growsurf_ruby/resources/campaign/participant.rbs +133 -0
  221. data/sig/growsurf_ruby/resources/campaign/reward.rbs +28 -0
  222. data/sig/growsurf_ruby/resources/campaign.rbs +76 -0
  223. data/sig/growsurf_ruby/version.rbs +3 -0
  224. metadata +295 -0
@@ -0,0 +1,266 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GrowsurfRuby
4
+ module Resources
5
+ class Campaign
6
+ # @return [GrowsurfRuby::Resources::Campaign::Participant]
7
+ attr_reader :participant
8
+
9
+ # Participant reward retrieval and manual reward operations.
10
+ # @return [GrowsurfRuby::Resources::Campaign::Reward]
11
+ attr_reader :reward
12
+
13
+ # Affiliate transaction, commission, and payout operations.
14
+ # @return [GrowsurfRuby::Resources::Campaign::Commission]
15
+ attr_reader :commission
16
+
17
+ # Retrieves a program for the given program ID.
18
+ #
19
+ # @overload retrieve(id, request_options: {})
20
+ #
21
+ # @param id [String] GrowSurf program ID.
22
+ #
23
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
24
+ #
25
+ # @return [GrowsurfRuby::Models::CampaignAPI]
26
+ #
27
+ # @see GrowsurfRuby::Models::CampaignRetrieveParams
28
+ def retrieve(id, params = {})
29
+ @client.request(
30
+ method: :get,
31
+ path: ["campaign/%1$s", id],
32
+ model: GrowsurfRuby::CampaignAPI,
33
+ options: params[:request_options]
34
+ )
35
+ end
36
+
37
+ # Retrieves a list of your programs. Deleted programs are not returned.
38
+ #
39
+ # @overload list(request_options: {})
40
+ #
41
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
42
+ #
43
+ # @return [GrowsurfRuby::Models::CampaignListResponse]
44
+ #
45
+ # @see GrowsurfRuby::Models::CampaignListParams
46
+ def list(params = {})
47
+ @client.request(
48
+ method: :get,
49
+ path: "campaigns",
50
+ model: GrowsurfRuby::Models::CampaignListResponse,
51
+ options: params[:request_options]
52
+ )
53
+ end
54
+
55
+ # Retrieves a paged list of all participant commissions in an affiliate program.
56
+ #
57
+ # @overload list_commissions(id, limit: nil, next_id: nil, status: nil, request_options: {})
58
+ #
59
+ # @param id [String] GrowSurf program ID.
60
+ #
61
+ # @param limit [Integer] Number of results to return. Maximum 100.
62
+ #
63
+ # @param next_id [String] ID to start the next paged result set with.
64
+ #
65
+ # @param status [Symbol, GrowsurfRuby::Models::CampaignListCommissionsParams::Status] Participant commission status.
66
+ #
67
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
68
+ #
69
+ # @return [GrowsurfRuby::Models::ParticipantCommissionList]
70
+ #
71
+ # @see GrowsurfRuby::Models::CampaignListCommissionsParams
72
+ def list_commissions(id, params = {})
73
+ parsed, options = GrowsurfRuby::CampaignListCommissionsParams.dump_request(params)
74
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
75
+ @client.request(
76
+ method: :get,
77
+ path: ["campaign/%1$s/commissions", id],
78
+ query: query.transform_keys(next_id: "nextId"),
79
+ model: GrowsurfRuby::ParticipantCommissionList,
80
+ options: options
81
+ )
82
+ end
83
+
84
+ # Retrieves participants in leaderboard order for the specified leaderboard type.
85
+ #
86
+ # @overload list_leaderboard(id, is_monthly: nil, leaderboard_type: nil, limit: nil, next_id: nil, request_options: {})
87
+ #
88
+ # @param id [String] GrowSurf program ID.
89
+ #
90
+ # @param is_monthly [Boolean] Deprecated. Use `leaderboardType=CURRENT_MONTH` instead.
91
+ #
92
+ # @param leaderboard_type [Symbol, GrowsurfRuby::Models::CampaignListLeaderboardParams::LeaderboardType] Leaderboard ordering mode.
93
+ #
94
+ # @param limit [Integer] Number of results to return. Maximum 100.
95
+ #
96
+ # @param next_id [String] ID to start the next paged result set with.
97
+ #
98
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
99
+ #
100
+ # @return [GrowsurfRuby::Models::ParticipantList]
101
+ #
102
+ # @see GrowsurfRuby::Models::CampaignListLeaderboardParams
103
+ def list_leaderboard(id, params = {})
104
+ parsed, options = GrowsurfRuby::CampaignListLeaderboardParams.dump_request(params)
105
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
106
+ @client.request(
107
+ method: :get,
108
+ path: ["campaign/%1$s/leaderboard", id],
109
+ query: query.transform_keys(
110
+ is_monthly: "isMonthly",
111
+ leaderboard_type: "leaderboardType",
112
+ next_id: "nextId"
113
+ ),
114
+ model: GrowsurfRuby::ParticipantList,
115
+ options: options
116
+ )
117
+ end
118
+
119
+ # Retrieves a paged list of participants in a program.
120
+ #
121
+ # @overload list_participants(id, limit: nil, next_id: nil, request_options: {})
122
+ #
123
+ # @param id [String] GrowSurf program ID.
124
+ #
125
+ # @param limit [Integer] Number of results to return. Maximum 100.
126
+ #
127
+ # @param next_id [String] ID to start the next paged result set with.
128
+ #
129
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
130
+ #
131
+ # @return [GrowsurfRuby::Models::ParticipantList]
132
+ #
133
+ # @see GrowsurfRuby::Models::CampaignListParticipantsParams
134
+ def list_participants(id, params = {})
135
+ parsed, options = GrowsurfRuby::CampaignListParticipantsParams.dump_request(params)
136
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
137
+ @client.request(
138
+ method: :get,
139
+ path: ["campaign/%1$s/participants", id],
140
+ query: query.transform_keys(next_id: "nextId"),
141
+ model: GrowsurfRuby::ParticipantList,
142
+ options: options
143
+ )
144
+ end
145
+
146
+ # Retrieves a paged list of all participant payouts in an affiliate program.
147
+ #
148
+ # @overload list_payouts(id, limit: nil, next_id: nil, status: nil, request_options: {})
149
+ #
150
+ # @param id [String] GrowSurf program ID.
151
+ #
152
+ # @param limit [Integer] Number of results to return. Maximum 100.
153
+ #
154
+ # @param next_id [String] ID to start the next paged result set with.
155
+ #
156
+ # @param status [Symbol, GrowsurfRuby::Models::CampaignListPayoutsParams::Status] Participant payout status.
157
+ #
158
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
159
+ #
160
+ # @return [GrowsurfRuby::Models::ParticipantPayoutList]
161
+ #
162
+ # @see GrowsurfRuby::Models::CampaignListPayoutsParams
163
+ def list_payouts(id, params = {})
164
+ parsed, options = GrowsurfRuby::CampaignListPayoutsParams.dump_request(params)
165
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
166
+ @client.request(
167
+ method: :get,
168
+ path: ["campaign/%1$s/payouts", id],
169
+ query: query.transform_keys(next_id: "nextId"),
170
+ model: GrowsurfRuby::ParticipantPayoutList,
171
+ options: options
172
+ )
173
+ end
174
+
175
+ # Retrieves a list of all referrals and email invites made by participants in a
176
+ # program.
177
+ #
178
+ # @overload list_referrals(id, desc: nil, email: nil, first_name: nil, last_name: nil, limit: nil, next_id: nil, offset: nil, referral_status: nil, sort_by: nil, request_options: {})
179
+ #
180
+ # @param id [String] GrowSurf program ID.
181
+ #
182
+ # @param desc [Boolean] Return results in descending order when true.
183
+ #
184
+ # @param email [String] URL-encoded email value to filter referral results.
185
+ #
186
+ # @param first_name [String] First name value to filter results.
187
+ #
188
+ # @param last_name [String] Last name value to filter results.
189
+ #
190
+ # @param limit [Integer] Number of results to return. Maximum 100.
191
+ #
192
+ # @param next_id [String] ID to start the next paged result set with.
193
+ #
194
+ # @param offset [Integer] Offset number used to skip through a result set.
195
+ #
196
+ # @param referral_status [Symbol, GrowsurfRuby::Models::Campaign::ReferralStatus]
197
+ #
198
+ # @param sort_by [Symbol, GrowsurfRuby::Models::CampaignListReferralsParams::SortBy] Field used to sort referral results.
199
+ #
200
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
201
+ #
202
+ # @return [GrowsurfRuby::Models::ReferralList]
203
+ #
204
+ # @see GrowsurfRuby::Models::CampaignListReferralsParams
205
+ def list_referrals(id, params = {})
206
+ parsed, options = GrowsurfRuby::CampaignListReferralsParams.dump_request(params)
207
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
208
+ @client.request(
209
+ method: :get,
210
+ path: ["campaign/%1$s/referrals", id],
211
+ query: query.transform_keys(
212
+ first_name: "firstName",
213
+ last_name: "lastName",
214
+ next_id: "nextId",
215
+ referral_status: "referralStatus",
216
+ sort_by: "sortBy"
217
+ ),
218
+ model: GrowsurfRuby::ReferralList,
219
+ options: options
220
+ )
221
+ end
222
+
223
+ # Some parameter documentations has been truncated, see
224
+ # {GrowsurfRuby::Models::CampaignRetrieveAnalyticsParams} for more details.
225
+ #
226
+ # Retrieves analytics for a program.
227
+ #
228
+ # @overload retrieve_analytics(id, days: nil, end_date: nil, start_date: nil, request_options: {})
229
+ #
230
+ # @param id [String] GrowSurf program ID.
231
+ #
232
+ # @param days [Integer] Last number of days to retrieve analytics for. Defaults to 365. Maximum 1825.
233
+ #
234
+ # @param end_date [Integer] End date of the analytics timeframe as a Unix timestamp in milliseconds. Require
235
+ #
236
+ # @param start_date [Integer] Start date of the analytics timeframe as a Unix timestamp in milliseconds. Requi
237
+ #
238
+ # @param request_options [GrowsurfRuby::RequestOptions, Hash{Symbol=>Object}, nil]
239
+ #
240
+ # @return [GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse]
241
+ #
242
+ # @see GrowsurfRuby::Models::CampaignRetrieveAnalyticsParams
243
+ def retrieve_analytics(id, params = {})
244
+ parsed, options = GrowsurfRuby::CampaignRetrieveAnalyticsParams.dump_request(params)
245
+ query = GrowsurfRuby::Internal::Util.encode_query_params(parsed)
246
+ @client.request(
247
+ method: :get,
248
+ path: ["campaign/%1$s/analytics", id],
249
+ query: query.transform_keys(end_date: "endDate", start_date: "startDate"),
250
+ model: GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse,
251
+ options: options
252
+ )
253
+ end
254
+
255
+ # @api private
256
+ #
257
+ # @param client [GrowsurfRuby::Client]
258
+ def initialize(client:)
259
+ @client = client
260
+ @participant = GrowsurfRuby::Resources::Campaign::Participant.new(client: client)
261
+ @reward = GrowsurfRuby::Resources::Campaign::Reward.new(client: client)
262
+ @commission = GrowsurfRuby::Resources::Campaign::Commission.new(client: client)
263
+ end
264
+ end
265
+ end
266
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GrowsurfRuby
4
+ VERSION = "0.0.2"
5
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "base64"
7
+ require "cgi"
8
+ require "date"
9
+ require "erb"
10
+ require "etc"
11
+ require "json"
12
+ require "net/http"
13
+ require "openssl"
14
+ require "pathname"
15
+ require "rbconfig"
16
+ require "securerandom"
17
+ require "set"
18
+ require "stringio"
19
+ require "time"
20
+ require "uri"
21
+ # rubocop:enable Lint/RedundantRequireStatement
22
+
23
+ # We already ship the preferred sorbet manifests in the package itself.
24
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
25
+ if Object.const_defined?(:Tapioca) &&
26
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
27
+ ARGV.none?(/dsl/)
28
+ return
29
+ end
30
+
31
+ # Gems.
32
+ require "connection_pool"
33
+
34
+ # Package files.
35
+ require_relative "growsurf_ruby/version"
36
+ require_relative "growsurf_ruby/internal/util"
37
+ require_relative "growsurf_ruby/internal/type/converter"
38
+ require_relative "growsurf_ruby/internal/type/unknown"
39
+ require_relative "growsurf_ruby/internal/type/boolean"
40
+ require_relative "growsurf_ruby/internal/type/file_input"
41
+ require_relative "growsurf_ruby/internal/type/enum"
42
+ require_relative "growsurf_ruby/internal/type/union"
43
+ require_relative "growsurf_ruby/internal/type/array_of"
44
+ require_relative "growsurf_ruby/internal/type/hash_of"
45
+ require_relative "growsurf_ruby/internal/type/base_model"
46
+ require_relative "growsurf_ruby/internal/type/base_page"
47
+ require_relative "growsurf_ruby/internal/type/request_parameters"
48
+ require_relative "growsurf_ruby/internal"
49
+ require_relative "growsurf_ruby/request_options"
50
+ require_relative "growsurf_ruby/file_part"
51
+ require_relative "growsurf_ruby/errors"
52
+ require_relative "growsurf_ruby/internal/transport/base_client"
53
+ require_relative "growsurf_ruby/internal/transport/pooled_net_requester"
54
+ require_relative "growsurf_ruby/client"
55
+ require_relative "growsurf_ruby/models/campaign/participant"
56
+ require_relative "growsurf_ruby/models/campaign/commission_approve_params"
57
+ require_relative "growsurf_ruby/models/campaign/commission_approve_response"
58
+ require_relative "growsurf_ruby/models/campaign/commission_delete_params"
59
+ require_relative "growsurf_ruby/models/campaign/commission_delete_response"
60
+ require_relative "growsurf_ruby/models/campaign/fraud_risk_level"
61
+ require_relative "growsurf_ruby/models/campaign/participant_add_params"
62
+ require_relative "growsurf_ruby/models/campaign/participant_delete_params"
63
+ require_relative "growsurf_ruby/models/campaign/participant_delete_response"
64
+ require_relative "growsurf_ruby/models/campaign/participant_list_commissions_params"
65
+ require_relative "growsurf_ruby/models/campaign/participant_list_payouts_params"
66
+ require_relative "growsurf_ruby/models/campaign/participant_list_referrals_params"
67
+ require_relative "growsurf_ruby/models/campaign/participant_list_rewards_params"
68
+ require_relative "growsurf_ruby/models/campaign/participant_list_rewards_response"
69
+ require_relative "growsurf_ruby/models/campaign/participant_record_transaction_params"
70
+ require_relative "growsurf_ruby/models/campaign/participant_record_transaction_response"
71
+ require_relative "growsurf_ruby/models/campaign/participant_retrieve_params"
72
+ require_relative "growsurf_ruby/models/campaign/participant_reward"
73
+ require_relative "growsurf_ruby/models/campaign/participant_send_invites_params"
74
+ require_relative "growsurf_ruby/models/campaign/participant_send_invites_response"
75
+ require_relative "growsurf_ruby/models/campaign/participant_trigger_referral_params"
76
+ require_relative "growsurf_ruby/models/campaign/participant_trigger_referral_response"
77
+ require_relative "growsurf_ruby/models/campaign/participant_update_params"
78
+ require_relative "growsurf_ruby/models/campaign/referral_source"
79
+ require_relative "growsurf_ruby/models/campaign/referral_status"
80
+ require_relative "growsurf_ruby/models/campaign/reward_approve_params"
81
+ require_relative "growsurf_ruby/models/campaign/reward_approve_response"
82
+ require_relative "growsurf_ruby/models/campaign/reward_delete_params"
83
+ require_relative "growsurf_ruby/models/campaign/reward_delete_response"
84
+ require_relative "growsurf_ruby/models/campaign/reward_fulfill_params"
85
+ require_relative "growsurf_ruby/models/campaign/reward_fulfill_response"
86
+ require_relative "growsurf_ruby/models/campaign"
87
+ require_relative "growsurf_ruby/models/campaign_list_commissions_params"
88
+ require_relative "growsurf_ruby/models/campaign_list_leaderboard_params"
89
+ require_relative "growsurf_ruby/models/campaign_list_params"
90
+ require_relative "growsurf_ruby/models/campaign_list_participants_params"
91
+ require_relative "growsurf_ruby/models/campaign_list_payouts_params"
92
+ require_relative "growsurf_ruby/models/campaign_list_referrals_params"
93
+ require_relative "growsurf_ruby/models/campaign_list_response"
94
+ require_relative "growsurf_ruby/models/campaign_retrieve_analytics_params"
95
+ require_relative "growsurf_ruby/models/campaign_retrieve_analytics_response"
96
+ require_relative "growsurf_ruby/models/campaign_retrieve_params"
97
+ require_relative "growsurf_ruby/models/commission_structure"
98
+ require_relative "growsurf_ruby/models/participant_commission_list"
99
+ require_relative "growsurf_ruby/models/participant_list"
100
+ require_relative "growsurf_ruby/models/participant_payout_list"
101
+ require_relative "growsurf_ruby/models/referral_list"
102
+ require_relative "growsurf_ruby/models"
103
+ require_relative "growsurf_ruby/resources/campaign"
104
+ require_relative "growsurf_ruby/resources/campaign/commission"
105
+ require_relative "growsurf_ruby/resources/campaign/participant"
106
+ require_relative "growsurf_ruby/resources/campaign/reward"
data/manifest.yaml ADDED
@@ -0,0 +1,17 @@
1
+ dependencies:
2
+ - English
3
+ - base64
4
+ - cgi
5
+ - date
6
+ - erb
7
+ - etc
8
+ - json
9
+ - net/http
10
+ - openssl
11
+ - pathname
12
+ - rbconfig
13
+ - securerandom
14
+ - set
15
+ - stringio
16
+ - time
17
+ - uri
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ class Client < GrowsurfRuby::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ # GrowSurf REST API key supplied as `Authorization: Bearer <api_key>`.
14
+ sig { returns(String) }
15
+ attr_reader :api_key
16
+
17
+ sig { returns(GrowsurfRuby::Resources::Campaign) }
18
+ attr_reader :campaign
19
+
20
+ # @api private
21
+ sig { override.returns(T::Hash[String, String]) }
22
+ private def auth_headers
23
+ end
24
+
25
+ # Creates and returns a new client for interacting with the API.
26
+ sig do
27
+ params(
28
+ api_key: T.nilable(String),
29
+ base_url: T.nilable(String),
30
+ max_retries: Integer,
31
+ timeout: Float,
32
+ initial_retry_delay: Float,
33
+ max_retry_delay: Float
34
+ ).returns(T.attached_class)
35
+ end
36
+ def self.new(
37
+ # GrowSurf REST API key supplied as `Authorization: Bearer <api_key>`. Defaults to
38
+ # `ENV["GROWSURF_API_KEY"]`
39
+ api_key: ENV["GROWSURF_API_KEY"],
40
+ # Override the default base URL for the API, e.g.,
41
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["GROWSURF_BASE_URL"]`
42
+ base_url: ENV["GROWSURF_BASE_URL"],
43
+ # Max number of retries to attempt after a failed retryable request.
44
+ max_retries: GrowsurfRuby::Client::DEFAULT_MAX_RETRIES,
45
+ timeout: GrowsurfRuby::Client::DEFAULT_TIMEOUT_IN_SECONDS,
46
+ initial_retry_delay: GrowsurfRuby::Client::DEFAULT_INITIAL_RETRY_DELAY,
47
+ max_retry_delay: GrowsurfRuby::Client::DEFAULT_MAX_RETRY_DELAY
48
+ )
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,205 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ module Errors
5
+ class Error < StandardError
6
+ sig { returns(T.nilable(StandardError)) }
7
+ attr_accessor :cause
8
+ end
9
+
10
+ class ConversionError < GrowsurfRuby::Errors::Error
11
+ sig { returns(T.nilable(StandardError)) }
12
+ def cause
13
+ end
14
+
15
+ # @api private
16
+ sig do
17
+ params(
18
+ on: T::Class[StandardError],
19
+ method: Symbol,
20
+ target: T.anything,
21
+ value: T.anything,
22
+ cause: T.nilable(StandardError)
23
+ ).returns(T.attached_class)
24
+ end
25
+ def self.new(on:, method:, target:, value:, cause: nil)
26
+ end
27
+ end
28
+
29
+ class APIError < GrowsurfRuby::Errors::Error
30
+ sig { returns(URI::Generic) }
31
+ attr_accessor :url
32
+
33
+ sig { returns(T.nilable(Integer)) }
34
+ attr_accessor :status
35
+
36
+ sig { returns(T.nilable(T::Hash[String, String])) }
37
+ attr_accessor :headers
38
+
39
+ sig { returns(T.nilable(T.anything)) }
40
+ attr_accessor :body
41
+
42
+ # @api private
43
+ sig do
44
+ params(
45
+ url: URI::Generic,
46
+ status: T.nilable(Integer),
47
+ headers: T.nilable(T::Hash[String, String]),
48
+ body: T.nilable(Object),
49
+ request: NilClass,
50
+ response: NilClass,
51
+ message: T.nilable(String)
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ url:,
56
+ status: nil,
57
+ headers: nil,
58
+ body: nil,
59
+ request: nil,
60
+ response: nil,
61
+ message: nil
62
+ )
63
+ end
64
+ end
65
+
66
+ class APIConnectionError < GrowsurfRuby::Errors::APIError
67
+ sig { returns(NilClass) }
68
+ attr_accessor :status
69
+
70
+ sig { returns(NilClass) }
71
+ attr_accessor :body
72
+
73
+ # @api private
74
+ sig do
75
+ params(
76
+ url: URI::Generic,
77
+ status: NilClass,
78
+ headers: T.nilable(T::Hash[String, String]),
79
+ body: NilClass,
80
+ request: NilClass,
81
+ response: NilClass,
82
+ message: T.nilable(String)
83
+ ).returns(T.attached_class)
84
+ end
85
+ def self.new(
86
+ url:,
87
+ status: nil,
88
+ headers: nil,
89
+ body: nil,
90
+ request: nil,
91
+ response: nil,
92
+ message: "Connection error."
93
+ )
94
+ end
95
+ end
96
+
97
+ class APITimeoutError < GrowsurfRuby::Errors::APIConnectionError
98
+ # @api private
99
+ sig do
100
+ params(
101
+ url: URI::Generic,
102
+ status: NilClass,
103
+ headers: T.nilable(T::Hash[String, String]),
104
+ body: NilClass,
105
+ request: NilClass,
106
+ response: NilClass,
107
+ message: T.nilable(String)
108
+ ).returns(T.attached_class)
109
+ end
110
+ def self.new(
111
+ url:,
112
+ status: nil,
113
+ headers: nil,
114
+ body: nil,
115
+ request: nil,
116
+ response: nil,
117
+ message: "Request timed out."
118
+ )
119
+ end
120
+ end
121
+
122
+ class APIStatusError < GrowsurfRuby::Errors::APIError
123
+ # @api private
124
+ sig do
125
+ params(
126
+ url: URI::Generic,
127
+ status: Integer,
128
+ headers: T.nilable(T::Hash[String, String]),
129
+ body: T.nilable(Object),
130
+ request: NilClass,
131
+ response: NilClass,
132
+ message: T.nilable(String)
133
+ ).returns(T.attached_class)
134
+ end
135
+ def self.for(
136
+ url:,
137
+ status:,
138
+ headers:,
139
+ body:,
140
+ request:,
141
+ response:,
142
+ message: nil
143
+ )
144
+ end
145
+
146
+ sig { returns(Integer) }
147
+ attr_accessor :status
148
+
149
+ # @api private
150
+ sig do
151
+ params(
152
+ url: URI::Generic,
153
+ status: Integer,
154
+ headers: T.nilable(T::Hash[String, String]),
155
+ body: T.nilable(Object),
156
+ request: NilClass,
157
+ response: NilClass,
158
+ message: T.nilable(String)
159
+ ).returns(T.attached_class)
160
+ end
161
+ def self.new(
162
+ url:,
163
+ status:,
164
+ headers:,
165
+ body:,
166
+ request:,
167
+ response:,
168
+ message: nil
169
+ )
170
+ end
171
+ end
172
+
173
+ class BadRequestError < GrowsurfRuby::Errors::APIStatusError
174
+ HTTP_STATUS = 400
175
+ end
176
+
177
+ class AuthenticationError < GrowsurfRuby::Errors::APIStatusError
178
+ HTTP_STATUS = 401
179
+ end
180
+
181
+ class PermissionDeniedError < GrowsurfRuby::Errors::APIStatusError
182
+ HTTP_STATUS = 403
183
+ end
184
+
185
+ class NotFoundError < GrowsurfRuby::Errors::APIStatusError
186
+ HTTP_STATUS = 404
187
+ end
188
+
189
+ class ConflictError < GrowsurfRuby::Errors::APIStatusError
190
+ HTTP_STATUS = 409
191
+ end
192
+
193
+ class UnprocessableEntityError < GrowsurfRuby::Errors::APIStatusError
194
+ HTTP_STATUS = 422
195
+ end
196
+
197
+ class RateLimitError < GrowsurfRuby::Errors::APIStatusError
198
+ HTTP_STATUS = 429
199
+ end
200
+
201
+ class InternalServerError < GrowsurfRuby::Errors::APIStatusError
202
+ HTTP_STATUS = T.let((500..), T::Range[Integer])
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,37 @@
1
+ # typed: strong
2
+
3
+ module GrowsurfRuby
4
+ class FilePart
5
+ sig { returns(T.any(Pathname, StringIO, IO, String)) }
6
+ attr_reader :content
7
+
8
+ sig { returns(T.nilable(String)) }
9
+ attr_reader :content_type
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :filename
13
+
14
+ # @api private
15
+ sig { returns(String) }
16
+ private def read
17
+ end
18
+
19
+ sig { params(a: T.anything).returns(String) }
20
+ def to_json(*a)
21
+ end
22
+
23
+ sig { params(a: T.anything).returns(String) }
24
+ def to_yaml(*a)
25
+ end
26
+
27
+ sig do
28
+ params(
29
+ content: T.any(Pathname, StringIO, IO, String),
30
+ filename: T.nilable(T.any(Pathname, String)),
31
+ content_type: T.nilable(String)
32
+ ).returns(T.attached_class)
33
+ end
34
+ def self.new(content, filename: nil, content_type: nil)
35
+ end
36
+ end
37
+ end