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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -0
- data/README.md +10 -7
- data/lib/growsurf_ruby/internal/transport/base_client.rb +6 -1
- data/lib/growsurf_ruby/internal/type/base_model.rb +26 -0
- data/lib/growsurf_ruby/internal/type/base_page.rb +6 -0
- data/lib/growsurf_ruby/models/account_create_response.rb +3 -3
- data/lib/growsurf_ruby/models/analytics_availability.rb +16 -0
- data/lib/growsurf_ruby/models/analytics_unavailable_reason.rb +20 -0
- data/lib/growsurf_ruby/models/campaign/delete_program_resource_response.rb +12 -0
- data/lib/growsurf_ruby/models/campaign/integration.rb +69 -0
- data/lib/growsurf_ruby/models/campaign/integration_list_response.rb +24 -0
- data/lib/growsurf_ruby/models/campaign/participant_activation_analytics.rb +75 -0
- data/lib/growsurf_ruby/models/campaign/participant_analytics_response.rb +11 -0
- data/lib/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rb +17 -17
- data/lib/growsurf_ruby/models/campaign/participant_record_transaction_params.rb +9 -1
- data/lib/growsurf_ruby/models/campaign/participant_refund_transaction_params.rb +17 -1
- data/lib/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rb +8 -8
- data/lib/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rb +15 -11
- data/lib/growsurf_ruby/models/campaign/participant_reward.rb +16 -3
- data/lib/growsurf_ruby/models/campaign/program_resource.rb +51 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_create_params.rb +32 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_delete_params.rb +14 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_list_response.rb +12 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_update_params.rb +35 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_upload_result.rb +33 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_upload_ticket.rb +26 -0
- data/lib/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rb +17 -0
- data/lib/growsurf_ruby/models/campaign/reward.rb +22 -1
- data/lib/growsurf_ruby/models/campaign/reward_create_params.rb +32 -9
- data/lib/growsurf_ruby/models/campaign/reward_update_params.rb +32 -9
- data/lib/growsurf_ruby/models/campaign.rb +25 -2
- data/lib/growsurf_ruby/models/campaign_activation_analytics_response.rb +186 -0
- data/lib/growsurf_ruby/models/campaign_create_params.rb +37 -1
- data/lib/growsurf_ruby/models/campaign_engagement_analytics.rb +174 -0
- data/lib/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rb +35 -0
- data/lib/growsurf_ruby/models/campaign_retrieve_analytics_params.rb +37 -4
- data/lib/growsurf_ruby/models/campaign_retrieve_analytics_response.rb +3 -0
- data/lib/growsurf_ruby/models/commission_structure.rb +19 -3
- data/lib/growsurf_ruby/models/participant_commission_list.rb +24 -6
- data/lib/growsurf_ruby/models/participant_payout_list.rb +5 -5
- data/lib/growsurf_ruby/models.rb +7 -0
- data/lib/growsurf_ruby/resources/account.rb +17 -11
- data/lib/growsurf_ruby/resources/campaign/design.rb +11 -5
- data/lib/growsurf_ruby/resources/campaign/emails.rb +2 -1
- data/lib/growsurf_ruby/resources/campaign/integrations.rb +41 -0
- data/lib/growsurf_ruby/resources/campaign/participant.rb +28 -25
- data/lib/growsurf_ruby/resources/campaign/program_resources.rb +112 -0
- data/lib/growsurf_ruby/resources/campaign/rewards.rb +12 -6
- data/lib/growsurf_ruby/resources/campaign.rb +53 -7
- data/lib/growsurf_ruby/resources/team.rb +7 -5
- data/lib/growsurf_ruby/version.rb +1 -1
- data/lib/growsurf_ruby.rb +19 -0
- data/rbi/growsurf_ruby/internal/type/base_model.rbi +10 -0
- data/rbi/growsurf_ruby/internal/type/base_page.rbi +3 -0
- data/rbi/growsurf_ruby/models/analytics_availability.rbi +19 -0
- data/rbi/growsurf_ruby/models/analytics_unavailable_reason.rbi +23 -0
- data/rbi/growsurf_ruby/models/campaign/delete_program_resource_response.rbi +33 -0
- data/rbi/growsurf_ruby/models/campaign/integration.rbi +93 -0
- data/rbi/growsurf_ruby/models/campaign/integration_list_response.rbi +46 -0
- data/rbi/growsurf_ruby/models/campaign/participant_activation_analytics.rbi +133 -0
- data/rbi/growsurf_ruby/models/campaign/participant_analytics_response.rbi +35 -0
- data/rbi/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rbi +17 -23
- data/rbi/growsurf_ruby/models/campaign/participant_record_transaction_params.rbi +18 -0
- data/rbi/growsurf_ruby/models/campaign/participant_refund_transaction_params.rbi +18 -0
- data/rbi/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rbi +7 -9
- data/rbi/growsurf_ruby/models/campaign/participant_retrieve_analytics_params.rbi +16 -10
- data/rbi/growsurf_ruby/models/campaign/participant_reward.rbi +29 -6
- data/rbi/growsurf_ruby/models/campaign/program_resource.rbi +186 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_create_params.rbi +95 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_delete_params.rbi +37 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_list_response.rbi +29 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_update_params.rbi +105 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_upload_result.rbi +94 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_upload_ticket.rbi +57 -0
- data/rbi/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rbi +53 -0
- data/rbi/growsurf_ruby/models/campaign/reward.rbi +55 -0
- data/rbi/growsurf_ruby/models/campaign/reward_create_params.rbi +97 -24
- data/rbi/growsurf_ruby/models/campaign/reward_update_params.rbi +97 -24
- data/rbi/growsurf_ruby/models/campaign.rbi +52 -3
- data/rbi/growsurf_ruby/models/campaign_activation_analytics_response.rbi +325 -0
- data/rbi/growsurf_ruby/models/campaign_create_params.rbi +91 -0
- data/rbi/growsurf_ruby/models/campaign_engagement_analytics.rbi +369 -0
- data/rbi/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rbi +59 -0
- data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_params.rbi +56 -3
- data/rbi/growsurf_ruby/models/campaign_retrieve_analytics_response.rbi +27 -7
- data/rbi/growsurf_ruby/models/commission_structure.rbi +36 -3
- data/rbi/growsurf_ruby/models/participant_commission_list.rbi +63 -15
- data/rbi/growsurf_ruby/models/participant_payout_list.rbi +15 -15
- data/rbi/growsurf_ruby/models.rbi +7 -0
- data/rbi/growsurf_ruby/resources/account.rbi +9 -6
- data/rbi/growsurf_ruby/resources/campaign/design.rbi +32 -4
- data/rbi/growsurf_ruby/resources/campaign/emails.rbi +2 -1
- data/rbi/growsurf_ruby/resources/campaign/integrations.rbi +35 -0
- data/rbi/growsurf_ruby/resources/campaign/participant.rbi +38 -24
- data/rbi/growsurf_ruby/resources/campaign/program_resources.rbi +116 -0
- data/rbi/growsurf_ruby/resources/campaign/rewards.rbi +35 -16
- data/rbi/growsurf_ruby/resources/campaign.rbi +53 -5
- data/rbi/growsurf_ruby/resources/team.rbi +7 -5
- data/sig/growsurf_ruby/internal/type/base_model.rbs +6 -0
- data/sig/growsurf_ruby/internal/type/base_page.rbs +2 -0
- data/sig/growsurf_ruby/models/analytics_availability.rbs +15 -0
- data/sig/growsurf_ruby/models/analytics_unavailable_reason.rbs +26 -0
- data/sig/growsurf_ruby/models/campaign/delete_program_resource_response.rbs +14 -0
- data/sig/growsurf_ruby/models/campaign/integration.rbs +47 -0
- data/sig/growsurf_ruby/models/campaign/integration_list_response.rbs +20 -0
- data/sig/growsurf_ruby/models/campaign/participant_activation_analytics.rbs +96 -0
- data/sig/growsurf_ruby/models/campaign/participant_analytics_response.rbs +22 -1
- data/sig/growsurf_ruby/models/campaign/participant_get_payout_destination_response.rbs +17 -22
- data/sig/growsurf_ruby/models/campaign/participant_record_transaction_params.rbs +15 -1
- data/sig/growsurf_ruby/models/campaign/participant_refund_transaction_params.rbs +15 -1
- data/sig/growsurf_ruby/models/campaign/participant_request_payout_destination_confirmation_response.rbs +8 -10
- data/sig/growsurf_ruby/models/campaign/participant_reward.rbs +24 -9
- data/sig/growsurf_ruby/models/campaign/program_resource.rbs +94 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_create_params.rbs +45 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_delete_params.rbs +22 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_list_response.rbs +14 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_update_params.rbs +48 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_upload_result.rbs +58 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_upload_ticket.rbs +29 -0
- data/sig/growsurf_ruby/models/campaign/program_resource_upload_ticket_params.rbs +29 -0
- data/sig/growsurf_ruby/models/campaign/reward.rbs +16 -0
- data/sig/growsurf_ruby/models/campaign/reward_create_params.rbs +54 -34
- data/sig/growsurf_ruby/models/campaign/reward_update_params.rbs +54 -34
- data/sig/growsurf_ruby/models/campaign.rbs +23 -5
- data/sig/growsurf_ruby/models/campaign_activation_analytics_response.rbs +202 -0
- data/sig/growsurf_ruby/models/campaign_create_params.rbs +29 -0
- data/sig/growsurf_ruby/models/campaign_engagement_analytics.rbs +186 -0
- data/sig/growsurf_ruby/models/campaign_retrieve_activation_analytics_params.rbs +45 -0
- data/sig/growsurf_ruby/models/campaign_retrieve_analytics_params.rbs +30 -1
- data/sig/growsurf_ruby/models/campaign_retrieve_analytics_response.rbs +21 -3
- data/sig/growsurf_ruby/models/commission_structure.rbs +16 -4
- data/sig/growsurf_ruby/models/participant_commission_list.rbs +36 -20
- data/sig/growsurf_ruby/models/participant_payout_list.rbs +20 -20
- data/sig/growsurf_ruby/models.rbs +6 -0
- data/sig/growsurf_ruby/resources/campaign/design.rbs +19 -0
- data/sig/growsurf_ruby/resources/campaign/integrations.rbs +14 -0
- data/sig/growsurf_ruby/resources/campaign/participant.rbs +4 -0
- data/sig/growsurf_ruby/resources/campaign/program_resources.rbs +58 -0
- data/sig/growsurf_ruby/resources/campaign/rewards.rbs +14 -12
- data/sig/growsurf_ruby/resources/campaign.rbs +17 -0
- metadata +59 -2
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module GrowsurfRuby
|
|
4
|
+
module Models
|
|
5
|
+
class CampaignEngagementAnalytics < GrowsurfRuby::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(
|
|
9
|
+
GrowsurfRuby::Models::CampaignEngagementAnalytics,
|
|
10
|
+
GrowsurfRuby::Internal::AnyHash
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig { returns(T.nilable(Integer)) }
|
|
15
|
+
attr_accessor :coverage_start_at
|
|
16
|
+
|
|
17
|
+
sig { returns(Integer) }
|
|
18
|
+
attr_accessor :metric_contract_version
|
|
19
|
+
|
|
20
|
+
sig { returns(ProgramType::OrSymbol) }
|
|
21
|
+
attr_accessor :program_type
|
|
22
|
+
|
|
23
|
+
sig { returns(String) }
|
|
24
|
+
attr_accessor :timezone
|
|
25
|
+
|
|
26
|
+
sig { returns(Interval::OrSymbol) }
|
|
27
|
+
attr_accessor :interval
|
|
28
|
+
|
|
29
|
+
sig { returns(PlatformFilter) }
|
|
30
|
+
attr_accessor :platform
|
|
31
|
+
|
|
32
|
+
sig { returns(Period) }
|
|
33
|
+
attr_accessor :period
|
|
34
|
+
|
|
35
|
+
sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
|
|
36
|
+
attr_accessor :state
|
|
37
|
+
|
|
38
|
+
sig do
|
|
39
|
+
returns(
|
|
40
|
+
T.nilable(GrowsurfRuby::Models::AnalyticsUnavailableReason::OrSymbol)
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
attr_accessor :reason
|
|
44
|
+
|
|
45
|
+
sig { returns(Totals) }
|
|
46
|
+
attr_accessor :totals
|
|
47
|
+
|
|
48
|
+
sig { returns(PreviousPeriod) }
|
|
49
|
+
attr_accessor :previous_period
|
|
50
|
+
|
|
51
|
+
sig { returns(Comparison) }
|
|
52
|
+
attr_accessor :comparison
|
|
53
|
+
|
|
54
|
+
sig { returns(T::Array[SeriesPoint]) }
|
|
55
|
+
attr_accessor :series
|
|
56
|
+
|
|
57
|
+
sig { returns(Breakdowns) }
|
|
58
|
+
attr_accessor :breakdowns
|
|
59
|
+
|
|
60
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
61
|
+
def self.new(**kwargs)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
module ProgramType
|
|
65
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
66
|
+
|
|
67
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
68
|
+
REFERRAL = T.let(:REFERRAL, Symbol)
|
|
69
|
+
AFFILIATE = T.let(:AFFILIATE, Symbol)
|
|
70
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
71
|
+
def self.values
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
module Interval
|
|
76
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
77
|
+
|
|
78
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
79
|
+
DAY = T.let(:day, Symbol)
|
|
80
|
+
WEEK = T.let(:week, Symbol)
|
|
81
|
+
MONTH = T.let(:month, Symbol)
|
|
82
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
83
|
+
def self.values
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
module Platform
|
|
88
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
89
|
+
|
|
90
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
91
|
+
ALL = T.let(:ALL, Symbol)
|
|
92
|
+
WEB = T.let(:WEB, Symbol)
|
|
93
|
+
IOS = T.let(:IOS, Symbol)
|
|
94
|
+
ANDROID = T.let(:ANDROID, Symbol)
|
|
95
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
96
|
+
def self.values
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
module BreakdownPlatform
|
|
101
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
102
|
+
|
|
103
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
104
|
+
WEB = T.let(:WEB, Symbol)
|
|
105
|
+
IOS = T.let(:IOS, Symbol)
|
|
106
|
+
ANDROID = T.let(:ANDROID, Symbol)
|
|
107
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
108
|
+
def self.values
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
module PortalSource
|
|
113
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
114
|
+
|
|
115
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
116
|
+
DEFAULT_LAUNCHER = T.let(:DEFAULT_LAUNCHER, Symbol)
|
|
117
|
+
SDK_OPEN = T.let(:SDK_OPEN, Symbol)
|
|
118
|
+
CSS_CLASS = T.let(:CSS_CLASS, Symbol)
|
|
119
|
+
EMBEDDABLE_ELEMENT = T.let(:EMBEDDABLE_ELEMENT, Symbol)
|
|
120
|
+
HOSTED_PORTAL = T.let(:HOSTED_PORTAL, Symbol)
|
|
121
|
+
NATIVE_WINDOW = T.let(:NATIVE_WINDOW, Symbol)
|
|
122
|
+
UNKNOWN = T.let(:UNKNOWN, Symbol)
|
|
123
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
124
|
+
def self.values
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
class Metric < GrowsurfRuby::Internal::Type::BaseModel
|
|
129
|
+
OrHash = T.type_alias { T.any(Metric, GrowsurfRuby::Internal::AnyHash) }
|
|
130
|
+
sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
|
|
131
|
+
attr_accessor :state
|
|
132
|
+
|
|
133
|
+
sig { returns(T.nilable(Float)) }
|
|
134
|
+
attr_accessor :value
|
|
135
|
+
|
|
136
|
+
sig do
|
|
137
|
+
returns(
|
|
138
|
+
T.nilable(
|
|
139
|
+
GrowsurfRuby::Models::AnalyticsUnavailableReason::OrSymbol
|
|
140
|
+
)
|
|
141
|
+
)
|
|
142
|
+
end
|
|
143
|
+
attr_accessor :reason
|
|
144
|
+
|
|
145
|
+
sig { returns(T.nilable(Float)) }
|
|
146
|
+
attr_accessor :delta
|
|
147
|
+
|
|
148
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
149
|
+
def self.new(**kwargs)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
class Totals < GrowsurfRuby::Internal::Type::BaseModel
|
|
154
|
+
OrHash = T.type_alias { T.any(Totals, GrowsurfRuby::Internal::AnyHash) }
|
|
155
|
+
sig { returns(Metric) }
|
|
156
|
+
attr_accessor :active_participants,
|
|
157
|
+
:sharing_participants,
|
|
158
|
+
:sharing_rate,
|
|
159
|
+
:repeat_active_participants,
|
|
160
|
+
:repeat_sharing_participants,
|
|
161
|
+
:retained_active_participants,
|
|
162
|
+
:portal_views,
|
|
163
|
+
:share_actions
|
|
164
|
+
|
|
165
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
166
|
+
def self.new(**kwargs)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
class Period < GrowsurfRuby::Internal::Type::BaseModel
|
|
171
|
+
OrHash = T.type_alias { T.any(Period, GrowsurfRuby::Internal::AnyHash) }
|
|
172
|
+
sig { returns(Integer) }
|
|
173
|
+
attr_accessor :from, :to, :previous_from, :previous_to
|
|
174
|
+
|
|
175
|
+
sig { returns(T.nilable(Integer)) }
|
|
176
|
+
attr_accessor :effective_from
|
|
177
|
+
|
|
178
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
179
|
+
def self.new(**kwargs)
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
class PlatformFilter < GrowsurfRuby::Internal::Type::BaseModel
|
|
184
|
+
OrHash =
|
|
185
|
+
T.type_alias do
|
|
186
|
+
T.any(PlatformFilter, GrowsurfRuby::Internal::AnyHash)
|
|
187
|
+
end
|
|
188
|
+
sig { returns(Platform::OrSymbol) }
|
|
189
|
+
attr_accessor :requested, :applied
|
|
190
|
+
|
|
191
|
+
sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
|
|
192
|
+
attr_accessor :state
|
|
193
|
+
|
|
194
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
195
|
+
def self.new(**kwargs)
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
class PreviousPeriod < GrowsurfRuby::Internal::Type::BaseModel
|
|
200
|
+
OrHash =
|
|
201
|
+
T.type_alias do
|
|
202
|
+
T.any(PreviousPeriod, GrowsurfRuby::Internal::AnyHash)
|
|
203
|
+
end
|
|
204
|
+
sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
|
|
205
|
+
attr_accessor :state
|
|
206
|
+
|
|
207
|
+
sig do
|
|
208
|
+
returns(
|
|
209
|
+
T.nilable(
|
|
210
|
+
GrowsurfRuby::Models::AnalyticsUnavailableReason::OrSymbol
|
|
211
|
+
)
|
|
212
|
+
)
|
|
213
|
+
end
|
|
214
|
+
attr_accessor :reason
|
|
215
|
+
|
|
216
|
+
sig { returns(T.nilable(Totals)) }
|
|
217
|
+
attr_accessor :totals
|
|
218
|
+
|
|
219
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
220
|
+
def self.new(**kwargs)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
class ComparisonMetrics < GrowsurfRuby::Internal::Type::BaseModel
|
|
225
|
+
OrHash =
|
|
226
|
+
T.type_alias do
|
|
227
|
+
T.any(ComparisonMetrics, GrowsurfRuby::Internal::AnyHash)
|
|
228
|
+
end
|
|
229
|
+
sig { returns(T.nilable(Metric)) }
|
|
230
|
+
attr_accessor :active_participants,
|
|
231
|
+
:sharing_participants,
|
|
232
|
+
:repeat_active_participants,
|
|
233
|
+
:repeat_sharing_participants,
|
|
234
|
+
:portal_views,
|
|
235
|
+
:share_actions
|
|
236
|
+
|
|
237
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
238
|
+
def self.new(**kwargs)
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
class Comparison < GrowsurfRuby::Internal::Type::BaseModel
|
|
243
|
+
OrHash =
|
|
244
|
+
T.type_alias { T.any(Comparison, GrowsurfRuby::Internal::AnyHash) }
|
|
245
|
+
sig { returns(GrowsurfRuby::Models::AnalyticsAvailability::OrSymbol) }
|
|
246
|
+
attr_accessor :state
|
|
247
|
+
|
|
248
|
+
sig do
|
|
249
|
+
returns(
|
|
250
|
+
T.nilable(
|
|
251
|
+
GrowsurfRuby::Models::AnalyticsUnavailableReason::OrSymbol
|
|
252
|
+
)
|
|
253
|
+
)
|
|
254
|
+
end
|
|
255
|
+
attr_accessor :reason
|
|
256
|
+
|
|
257
|
+
sig { returns(T.nilable(ComparisonMetrics)) }
|
|
258
|
+
attr_accessor :metrics
|
|
259
|
+
|
|
260
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
261
|
+
def self.new(**kwargs)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
class SeriesPoint < GrowsurfRuby::Internal::Type::BaseModel
|
|
266
|
+
OrHash =
|
|
267
|
+
T.type_alias { T.any(SeriesPoint, GrowsurfRuby::Internal::AnyHash) }
|
|
268
|
+
sig { returns(Integer) }
|
|
269
|
+
attr_accessor :from,
|
|
270
|
+
:to,
|
|
271
|
+
:active_participants,
|
|
272
|
+
:sharing_participants,
|
|
273
|
+
:portal_views,
|
|
274
|
+
:share_actions
|
|
275
|
+
|
|
276
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
277
|
+
def self.new(**kwargs)
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
class PlatformBreakdown < GrowsurfRuby::Internal::Type::BaseModel
|
|
282
|
+
OrHash =
|
|
283
|
+
T.type_alias do
|
|
284
|
+
T.any(PlatformBreakdown, GrowsurfRuby::Internal::AnyHash)
|
|
285
|
+
end
|
|
286
|
+
sig { returns(BreakdownPlatform::OrSymbol) }
|
|
287
|
+
attr_accessor :key
|
|
288
|
+
|
|
289
|
+
sig { returns(Integer) }
|
|
290
|
+
attr_accessor :active_participants,
|
|
291
|
+
:sharing_participants,
|
|
292
|
+
:portal_views,
|
|
293
|
+
:share_actions
|
|
294
|
+
|
|
295
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
296
|
+
def self.new(**kwargs)
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
class PortalSourceBreakdown < GrowsurfRuby::Internal::Type::BaseModel
|
|
301
|
+
OrHash =
|
|
302
|
+
T.type_alias do
|
|
303
|
+
T.any(PortalSourceBreakdown, GrowsurfRuby::Internal::AnyHash)
|
|
304
|
+
end
|
|
305
|
+
sig { returns(PortalSource::OrSymbol) }
|
|
306
|
+
attr_accessor :key
|
|
307
|
+
|
|
308
|
+
sig { returns(Integer) }
|
|
309
|
+
attr_accessor :active_participants, :portal_views
|
|
310
|
+
|
|
311
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
312
|
+
def self.new(**kwargs)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
class ShareChannelBreakdown < GrowsurfRuby::Internal::Type::BaseModel
|
|
317
|
+
OrHash =
|
|
318
|
+
T.type_alias do
|
|
319
|
+
T.any(ShareChannelBreakdown, GrowsurfRuby::Internal::AnyHash)
|
|
320
|
+
end
|
|
321
|
+
sig { returns(String) }
|
|
322
|
+
attr_accessor :key
|
|
323
|
+
|
|
324
|
+
sig { returns(Integer) }
|
|
325
|
+
attr_accessor :sharing_participants, :share_actions
|
|
326
|
+
|
|
327
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
328
|
+
def self.new(**kwargs)
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
class FirstShareChannelBreakdown < GrowsurfRuby::Internal::Type::BaseModel
|
|
333
|
+
OrHash =
|
|
334
|
+
T.type_alias do
|
|
335
|
+
T.any(FirstShareChannelBreakdown, GrowsurfRuby::Internal::AnyHash)
|
|
336
|
+
end
|
|
337
|
+
sig { returns(String) }
|
|
338
|
+
attr_accessor :key
|
|
339
|
+
|
|
340
|
+
sig { returns(Integer) }
|
|
341
|
+
attr_accessor :sharing_participants
|
|
342
|
+
|
|
343
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
344
|
+
def self.new(**kwargs)
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
class Breakdowns < GrowsurfRuby::Internal::Type::BaseModel
|
|
349
|
+
OrHash =
|
|
350
|
+
T.type_alias { T.any(Breakdowns, GrowsurfRuby::Internal::AnyHash) }
|
|
351
|
+
sig { returns(T::Array[PlatformBreakdown]) }
|
|
352
|
+
attr_accessor :platforms
|
|
353
|
+
|
|
354
|
+
sig { returns(T::Array[PortalSourceBreakdown]) }
|
|
355
|
+
attr_accessor :portal_view_sources
|
|
356
|
+
|
|
357
|
+
sig { returns(T::Array[ShareChannelBreakdown]) }
|
|
358
|
+
attr_accessor :share_channels
|
|
359
|
+
|
|
360
|
+
sig { returns(T::Array[FirstShareChannelBreakdown]) }
|
|
361
|
+
attr_accessor :first_share_channels
|
|
362
|
+
|
|
363
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
364
|
+
def self.new(**kwargs)
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module GrowsurfRuby
|
|
4
|
+
module Models
|
|
5
|
+
class CampaignRetrieveActivationAnalyticsParams < GrowsurfRuby::Internal::Type::BaseModel
|
|
6
|
+
extend GrowsurfRuby::Internal::Type::RequestParameters::Converter
|
|
7
|
+
include GrowsurfRuby::Internal::Type::RequestParameters
|
|
8
|
+
|
|
9
|
+
OrHash =
|
|
10
|
+
T.type_alias do
|
|
11
|
+
T.any(
|
|
12
|
+
GrowsurfRuby::CampaignRetrieveActivationAnalyticsParams,
|
|
13
|
+
GrowsurfRuby::Internal::AnyHash
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
sig { returns(String) }
|
|
17
|
+
attr_accessor :id
|
|
18
|
+
|
|
19
|
+
sig { returns(T.nilable(Integer)) }
|
|
20
|
+
attr_accessor :cohort_from, :cohort_to
|
|
21
|
+
|
|
22
|
+
sig { returns(T.nilable(CohortInterval::OrSymbol)) }
|
|
23
|
+
attr_accessor :cohort_interval
|
|
24
|
+
|
|
25
|
+
sig { returns(T.nilable(ObservationWindowDays::OrInteger)) }
|
|
26
|
+
attr_accessor :observation_window_days
|
|
27
|
+
|
|
28
|
+
sig { returns(T.nilable(String)) }
|
|
29
|
+
attr_accessor :timezone
|
|
30
|
+
|
|
31
|
+
sig { params(kwargs: T.untyped).returns(T.attached_class) }
|
|
32
|
+
def self.new(**kwargs)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
module CohortInterval
|
|
36
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
37
|
+
|
|
38
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
39
|
+
DAY = T.let(:day, Symbol)
|
|
40
|
+
WEEK = T.let(:week, Symbol)
|
|
41
|
+
MONTH = T.let(:month, Symbol)
|
|
42
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
43
|
+
def self.values
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
module ObservationWindowDays
|
|
48
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
49
|
+
|
|
50
|
+
OrInteger = T.type_alias { Integer }
|
|
51
|
+
SEVEN = T.let(7, Integer)
|
|
52
|
+
THIRTY = T.let(30, Integer)
|
|
53
|
+
sig { override.returns(T::Array[Integer]) }
|
|
54
|
+
def self.values
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -46,7 +46,9 @@ module GrowsurfRuby
|
|
|
46
46
|
attr_writer :include
|
|
47
47
|
|
|
48
48
|
# When set to `day`, `week`, or `month`, the response also includes a `series` array
|
|
49
|
-
# with per-period totals
|
|
49
|
+
# with per-period totals and uses the same bucket size for `engagement.series`.
|
|
50
|
+
# Defaults to `total` (no legacy series); `engagement.series` uses daily buckets when
|
|
51
|
+
# `interval` is `total` or omitted.
|
|
50
52
|
sig do
|
|
51
53
|
returns(
|
|
52
54
|
T.nilable(
|
|
@@ -64,6 +66,23 @@ module GrowsurfRuby
|
|
|
64
66
|
end
|
|
65
67
|
attr_writer :interval
|
|
66
68
|
|
|
69
|
+
sig do
|
|
70
|
+
returns(
|
|
71
|
+
T.nilable(
|
|
72
|
+
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Platform::OrSymbol
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
attr_reader :platform
|
|
77
|
+
|
|
78
|
+
sig do
|
|
79
|
+
params(
|
|
80
|
+
platform:
|
|
81
|
+
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Platform::OrSymbol
|
|
82
|
+
).void
|
|
83
|
+
end
|
|
84
|
+
attr_writer :platform
|
|
85
|
+
|
|
67
86
|
# Start date of the analytics timeframe as a Unix timestamp in milliseconds.
|
|
68
87
|
# Required if `days` is not set.
|
|
69
88
|
sig { returns(T.nilable(Integer)) }
|
|
@@ -72,6 +91,12 @@ module GrowsurfRuby
|
|
|
72
91
|
sig { params(start_date: Integer).void }
|
|
73
92
|
attr_writer :start_date
|
|
74
93
|
|
|
94
|
+
sig { returns(T.nilable(String)) }
|
|
95
|
+
attr_reader :timezone
|
|
96
|
+
|
|
97
|
+
sig { params(timezone: String).void }
|
|
98
|
+
attr_writer :timezone
|
|
99
|
+
|
|
75
100
|
sig do
|
|
76
101
|
params(
|
|
77
102
|
id: String,
|
|
@@ -80,7 +105,10 @@ module GrowsurfRuby
|
|
|
80
105
|
include: String,
|
|
81
106
|
interval:
|
|
82
107
|
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Interval::OrSymbol,
|
|
108
|
+
platform:
|
|
109
|
+
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Platform::OrSymbol,
|
|
83
110
|
start_date: Integer,
|
|
111
|
+
timezone: String,
|
|
84
112
|
request_options: GrowsurfRuby::RequestOptions::OrHash
|
|
85
113
|
).returns(T.attached_class)
|
|
86
114
|
end
|
|
@@ -101,11 +129,17 @@ module GrowsurfRuby
|
|
|
101
129
|
# windows.
|
|
102
130
|
include: nil,
|
|
103
131
|
# When set to `day`, `week`, or `month`, the response also includes a `series` array
|
|
104
|
-
# with per-period totals
|
|
132
|
+
# with per-period totals and uses the same bucket size for `engagement.series`.
|
|
133
|
+
# Defaults to `total` (no legacy series); `engagement.series` uses daily buckets when
|
|
134
|
+
# `interval` is `total` or omitted.
|
|
105
135
|
interval: nil,
|
|
136
|
+
# Participant platform used for `engagement`. Defaults to `ALL`.
|
|
137
|
+
platform: nil,
|
|
106
138
|
# Start date of the analytics timeframe as a Unix timestamp in milliseconds.
|
|
107
139
|
# Required if `days` is not set.
|
|
108
140
|
start_date: nil,
|
|
141
|
+
# IANA timezone used for engagement periods and buckets. Defaults to `UTC`.
|
|
142
|
+
timezone: nil,
|
|
109
143
|
request_options: {}
|
|
110
144
|
)
|
|
111
145
|
end
|
|
@@ -119,7 +153,10 @@ module GrowsurfRuby
|
|
|
119
153
|
include: String,
|
|
120
154
|
interval:
|
|
121
155
|
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Interval::OrSymbol,
|
|
156
|
+
platform:
|
|
157
|
+
GrowsurfRuby::CampaignRetrieveAnalyticsParams::Platform::OrSymbol,
|
|
122
158
|
start_date: Integer,
|
|
159
|
+
timezone: String,
|
|
123
160
|
request_options: GrowsurfRuby::RequestOptions
|
|
124
161
|
}
|
|
125
162
|
)
|
|
@@ -128,7 +165,9 @@ module GrowsurfRuby
|
|
|
128
165
|
end
|
|
129
166
|
|
|
130
167
|
# When set to `day`, `week`, or `month`, the response also includes a `series` array
|
|
131
|
-
# with per-period totals
|
|
168
|
+
# with per-period totals and uses the same bucket size for `engagement.series`.
|
|
169
|
+
# Defaults to `total` (no legacy series); `engagement.series` uses daily buckets when
|
|
170
|
+
# `interval` is `total` or omitted.
|
|
132
171
|
module Interval
|
|
133
172
|
extend GrowsurfRuby::Internal::Type::Enum
|
|
134
173
|
|
|
@@ -172,6 +211,20 @@ module GrowsurfRuby
|
|
|
172
211
|
def self.values
|
|
173
212
|
end
|
|
174
213
|
end
|
|
214
|
+
|
|
215
|
+
module Platform
|
|
216
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
217
|
+
|
|
218
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
219
|
+
ALL = T.let(:ALL, Symbol)
|
|
220
|
+
WEB = T.let(:WEB, Symbol)
|
|
221
|
+
IOS = T.let(:IOS, Symbol)
|
|
222
|
+
ANDROID = T.let(:ANDROID, Symbol)
|
|
223
|
+
|
|
224
|
+
sig { override.returns(T::Array[Symbol]) }
|
|
225
|
+
def self.values
|
|
226
|
+
end
|
|
227
|
+
end
|
|
175
228
|
end
|
|
176
229
|
end
|
|
177
230
|
end
|
|
@@ -32,6 +32,18 @@ module GrowsurfRuby
|
|
|
32
32
|
sig { returns(Integer) }
|
|
33
33
|
attr_accessor :start_date
|
|
34
34
|
|
|
35
|
+
sig do
|
|
36
|
+
returns(T.nilable(GrowsurfRuby::Models::CampaignEngagementAnalytics))
|
|
37
|
+
end
|
|
38
|
+
attr_reader :engagement
|
|
39
|
+
|
|
40
|
+
sig do
|
|
41
|
+
params(
|
|
42
|
+
engagement: GrowsurfRuby::Models::CampaignEngagementAnalytics::OrHash
|
|
43
|
+
).void
|
|
44
|
+
end
|
|
45
|
+
attr_writer :engagement
|
|
46
|
+
|
|
35
47
|
# Present only when `include` contains `previousPeriod`.
|
|
36
48
|
sig do
|
|
37
49
|
returns(
|
|
@@ -115,6 +127,7 @@ module GrowsurfRuby
|
|
|
115
127
|
GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse::Analytics::OrHash,
|
|
116
128
|
end_date: Integer,
|
|
117
129
|
start_date: Integer,
|
|
130
|
+
engagement: GrowsurfRuby::Models::CampaignEngagementAnalytics::OrHash,
|
|
118
131
|
previous_period:
|
|
119
132
|
GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse::PreviousPeriod::OrHash,
|
|
120
133
|
rates:
|
|
@@ -131,6 +144,8 @@ module GrowsurfRuby
|
|
|
131
144
|
analytics:,
|
|
132
145
|
end_date:,
|
|
133
146
|
start_date:,
|
|
147
|
+
# Present only when `include` contains `engagement`.
|
|
148
|
+
engagement: nil,
|
|
134
149
|
# Present only when `include` contains `previousPeriod`.
|
|
135
150
|
previous_period: nil,
|
|
136
151
|
# Present only when `include` contains `rates`.
|
|
@@ -150,6 +165,7 @@ module GrowsurfRuby
|
|
|
150
165
|
GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse::Analytics,
|
|
151
166
|
end_date: Integer,
|
|
152
167
|
start_date: Integer,
|
|
168
|
+
engagement: GrowsurfRuby::Models::CampaignEngagementAnalytics,
|
|
153
169
|
previous_period:
|
|
154
170
|
GrowsurfRuby::Models::CampaignRetrieveAnalyticsResponse::PreviousPeriod,
|
|
155
171
|
rates:
|
|
@@ -1386,16 +1402,20 @@ module GrowsurfRuby
|
|
|
1386
1402
|
|
|
1387
1403
|
# Reward counts grouped by review and fulfillment status.
|
|
1388
1404
|
sig do
|
|
1389
|
-
params(
|
|
1405
|
+
params(
|
|
1406
|
+
completed: Integer,
|
|
1407
|
+
unapproved: Integer,
|
|
1408
|
+
unfulfilled: Integer
|
|
1409
|
+
).returns(T.attached_class)
|
|
1390
1410
|
end
|
|
1391
|
-
def self.new(
|
|
1392
|
-
completed: nil,
|
|
1393
|
-
unapproved: nil,
|
|
1394
|
-
unfulfilled: nil
|
|
1395
|
-
)
|
|
1411
|
+
def self.new(completed: nil, unapproved: nil, unfulfilled: nil)
|
|
1396
1412
|
end
|
|
1397
1413
|
|
|
1398
|
-
sig
|
|
1414
|
+
sig do
|
|
1415
|
+
override.returns(
|
|
1416
|
+
{ completed: Integer, unapproved: Integer, unfulfilled: Integer }
|
|
1417
|
+
)
|
|
1418
|
+
end
|
|
1399
1419
|
def to_hash
|
|
1400
1420
|
end
|
|
1401
1421
|
end
|
|
@@ -26,7 +26,14 @@ module GrowsurfRuby
|
|
|
26
26
|
sig { returns(T.nilable(Integer)) }
|
|
27
27
|
attr_accessor :duration_in_months
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
# The event that generates a commission. `CLICK` and `LEAD` require `FIXED` with
|
|
30
|
+
# a positive `amount`; `amountISO` defaults to the program currency when omitted.
|
|
31
|
+
# `SALE` supports `FIXED` or `PERCENT`. Missing legacy values read as `SALE`.
|
|
32
|
+
sig do
|
|
33
|
+
returns(
|
|
34
|
+
T.nilable(GrowsurfRuby::CommissionStructure::Event::TaggedSymbol)
|
|
35
|
+
)
|
|
36
|
+
end
|
|
30
37
|
attr_accessor :event
|
|
31
38
|
|
|
32
39
|
sig { returns(T.nilable(T::Boolean)) }
|
|
@@ -82,7 +89,7 @@ module GrowsurfRuby
|
|
|
82
89
|
approval_required: T.nilable(T::Boolean),
|
|
83
90
|
duration: T.nilable(String),
|
|
84
91
|
duration_in_months: T.nilable(Integer),
|
|
85
|
-
event: T.nilable(
|
|
92
|
+
event: T.nilable(GrowsurfRuby::CommissionStructure::Event::OrSymbol),
|
|
86
93
|
has_intro: T.nilable(T::Boolean),
|
|
87
94
|
has_max_amount: T.nilable(T::Boolean),
|
|
88
95
|
hold_duration: T.nilable(Integer),
|
|
@@ -131,7 +138,8 @@ module GrowsurfRuby
|
|
|
131
138
|
approval_required: T.nilable(T::Boolean),
|
|
132
139
|
duration: T.nilable(String),
|
|
133
140
|
duration_in_months: T.nilable(Integer),
|
|
134
|
-
event:
|
|
141
|
+
event:
|
|
142
|
+
T.nilable(GrowsurfRuby::CommissionStructure::Event::TaggedSymbol),
|
|
135
143
|
has_intro: T.nilable(T::Boolean),
|
|
136
144
|
has_max_amount: T.nilable(T::Boolean),
|
|
137
145
|
hold_duration: T.nilable(Integer),
|
|
@@ -153,6 +161,31 @@ module GrowsurfRuby
|
|
|
153
161
|
def to_hash
|
|
154
162
|
end
|
|
155
163
|
|
|
164
|
+
module Event
|
|
165
|
+
extend GrowsurfRuby::Internal::Type::Enum
|
|
166
|
+
|
|
167
|
+
TaggedSymbol =
|
|
168
|
+
T.type_alias do
|
|
169
|
+
T.all(Symbol, GrowsurfRuby::CommissionStructure::Event)
|
|
170
|
+
end
|
|
171
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
172
|
+
|
|
173
|
+
CLICK =
|
|
174
|
+
T.let(:CLICK, GrowsurfRuby::CommissionStructure::Event::TaggedSymbol)
|
|
175
|
+
LEAD =
|
|
176
|
+
T.let(:LEAD, GrowsurfRuby::CommissionStructure::Event::TaggedSymbol)
|
|
177
|
+
SALE =
|
|
178
|
+
T.let(:SALE, GrowsurfRuby::CommissionStructure::Event::TaggedSymbol)
|
|
179
|
+
|
|
180
|
+
sig do
|
|
181
|
+
override.returns(
|
|
182
|
+
T::Array[GrowsurfRuby::CommissionStructure::Event::TaggedSymbol]
|
|
183
|
+
)
|
|
184
|
+
end
|
|
185
|
+
def self.values
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
156
189
|
module Type
|
|
157
190
|
extend GrowsurfRuby::Internal::Type::Enum
|
|
158
191
|
|