knockapi 1.38.0 → 1.40.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 +48 -0
- data/README.md +1 -1
- data/lib/knockapi/models/audience_add_members_params.rb +3 -30
- data/lib/knockapi/models/audience_member_request.rb +32 -0
- data/lib/knockapi/models/audience_remove_members_params.rb +3 -30
- data/lib/knockapi/models/list_messages_response.rb +26 -0
- data/lib/knockapi/models/list_schedules_response.rb +26 -0
- data/lib/knockapi/models/list_subscriptions_response.rb +26 -0
- data/lib/knockapi/models/message.rb +37 -11
- data/lib/knockapi/models/{message_get_content_response.rb → message_contents.rb} +30 -156
- data/lib/knockapi/models/message_event.rb +3 -3
- data/lib/knockapi/models/message_in_app_feed_button_set_block.rb +76 -0
- data/lib/knockapi/models/message_in_app_feed_content_block.rb +55 -0
- data/lib/knockapi/models/messages/batch_archive_params.rb +2 -10
- data/lib/knockapi/models/messages/batch_get_content_response.rb +1 -495
- data/lib/knockapi/models/messages/batch_mark_as_read_params.rb +2 -10
- data/lib/knockapi/models/messages/batch_mark_as_seen_params.rb +2 -10
- data/lib/knockapi/models/messages/batch_mark_as_unread_params.rb +2 -10
- data/lib/knockapi/models/messages/batch_mark_as_unseen_params.rb +2 -10
- data/lib/knockapi/models/messages/batch_messages_status_request.rb +20 -0
- data/lib/knockapi/models/messages/batch_unarchive_params.rb +2 -10
- data/lib/knockapi/models/preference_set_commercial_subscribed_setting.rb +19 -0
- data/lib/knockapi/models/recipients/preference_set.rb +26 -4
- data/lib/knockapi/models/recipients/preference_set_request.rb +26 -4
- data/lib/knockapi/models/recipients/slack_channel_data.rb +9 -1
- data/lib/knockapi/models/users/bulk_set_preferences_params.rb +26 -4
- data/lib/knockapi/models/users/feed_list_items_response.rb +5 -128
- data/lib/knockapi/models/users/{guide_mark_message_as_archived_response.rb → guide_action_response.rb} +1 -1
- data/lib/knockapi/models/users/guide_archived_request.rb +72 -0
- data/lib/knockapi/models/users/guide_interacted_request.rb +60 -0
- data/lib/knockapi/models/users/guide_mark_message_as_archived_params.rb +2 -82
- data/lib/knockapi/models/users/guide_mark_message_as_interacted_params.rb +2 -82
- data/lib/knockapi/models/users/guide_mark_message_as_seen_params.rb +2 -82
- data/lib/knockapi/models/users/guide_reset_guide_engagements_params.rb +39 -0
- data/lib/knockapi/models/users/guide_seen_request.rb +68 -0
- data/lib/knockapi/models/users/guide_unarchive_guide_message_params.rb +39 -0
- data/lib/knockapi/models/users/preference_center_branding_config.rb +50 -0
- data/lib/knockapi/models/users/preference_center_generate_signed_url_params.rb +22 -0
- data/lib/knockapi/models/users/preference_center_generate_signed_url_response.rb +34 -0
- data/lib/knockapi/models/users/preference_center_get_config_params.rb +22 -0
- data/lib/knockapi/models/users/preference_center_get_config_response.rb +221 -0
- data/lib/knockapi/models.rb +16 -0
- data/lib/knockapi/resources/audiences.rb +2 -2
- data/lib/knockapi/resources/messages/batch.rb +2 -2
- data/lib/knockapi/resources/messages.rb +2 -2
- data/lib/knockapi/resources/objects.rb +1 -1
- data/lib/knockapi/resources/users/guides.rb +79 -42
- data/lib/knockapi/resources/users/preference_center.rb +60 -0
- data/lib/knockapi/resources/users.rb +7 -1
- data/lib/knockapi/version.rb +1 -1
- data/lib/knockapi.rb +21 -4
- data/rbi/knockapi/models/audience_add_members_params.rbi +3 -56
- data/rbi/knockapi/models/audience_member_request.rbi +55 -0
- data/rbi/knockapi/models/audience_remove_members_params.rbi +3 -57
- data/rbi/knockapi/models/list_messages_response.rbi +46 -0
- data/rbi/knockapi/models/list_schedules_response.rbi +49 -0
- data/rbi/knockapi/models/list_subscriptions_response.rbi +52 -0
- data/rbi/knockapi/models/message.rbi +50 -18
- data/rbi/knockapi/models/{message_get_content_response.rbi → message_contents.rbi} +43 -299
- data/rbi/knockapi/models/message_event.rbi +9 -9
- data/rbi/knockapi/models/message_in_app_feed_button_set_block.rbi +133 -0
- data/rbi/knockapi/models/message_in_app_feed_content_block.rbi +97 -0
- data/rbi/knockapi/models/messages/batch_archive_params.rbi +6 -22
- data/rbi/knockapi/models/messages/batch_get_content_response.rbi +1 -879
- data/rbi/knockapi/models/messages/batch_mark_as_read_params.rbi +6 -22
- data/rbi/knockapi/models/messages/batch_mark_as_seen_params.rbi +6 -22
- data/rbi/knockapi/models/messages/batch_mark_as_unread_params.rbi +6 -22
- data/rbi/knockapi/models/messages/batch_mark_as_unseen_params.rbi +6 -22
- data/rbi/knockapi/models/messages/batch_messages_status_request.rbi +33 -0
- data/rbi/knockapi/models/messages/batch_unarchive_params.rbi +6 -22
- data/rbi/knockapi/models/preference_set_commercial_subscribed_setting.rbi +36 -0
- data/rbi/knockapi/models/recipients/preference_set.rbi +50 -5
- data/rbi/knockapi/models/recipients/preference_set_request.rbi +56 -5
- data/rbi/knockapi/models/recipients/slack_channel_data.rbi +8 -0
- data/rbi/knockapi/models/users/bulk_set_preferences_params.rbi +56 -5
- data/rbi/knockapi/models/users/feed_list_items_response.rbi +4 -251
- data/rbi/knockapi/models/users/{guide_mark_message_as_seen_response.rbi → guide_action_response.rbi} +2 -2
- data/rbi/knockapi/models/users/guide_archived_request.rbi +102 -0
- data/rbi/knockapi/models/users/guide_interacted_request.rbi +89 -0
- data/rbi/knockapi/models/users/guide_mark_message_as_archived_params.rbi +3 -99
- data/rbi/knockapi/models/users/guide_mark_message_as_interacted_params.rbi +3 -99
- data/rbi/knockapi/models/users/guide_mark_message_as_seen_params.rbi +3 -99
- data/rbi/knockapi/models/users/guide_reset_guide_engagements_params.rbi +65 -0
- data/rbi/knockapi/models/users/guide_seen_request.rbi +97 -0
- data/rbi/knockapi/models/users/guide_unarchive_guide_message_params.rbi +65 -0
- data/rbi/knockapi/models/users/preference_center_branding_config.rbi +72 -0
- data/rbi/knockapi/models/users/preference_center_generate_signed_url_params.rbi +40 -0
- data/rbi/knockapi/models/users/preference_center_generate_signed_url_response.rbi +41 -0
- data/rbi/knockapi/models/users/preference_center_get_config_params.rbi +40 -0
- data/rbi/knockapi/models/users/preference_center_get_config_response.rbi +476 -0
- data/rbi/knockapi/models.rbi +18 -0
- data/rbi/knockapi/resources/audiences.rbi +2 -3
- data/rbi/knockapi/resources/messages/batch.rbi +1 -3
- data/rbi/knockapi/resources/messages.rbi +1 -1
- data/rbi/knockapi/resources/objects.rbi +10 -2
- data/rbi/knockapi/resources/users/guides.rbi +56 -42
- data/rbi/knockapi/resources/users/preference_center.rbi +48 -0
- data/rbi/knockapi/resources/users.rbi +15 -2
- data/sig/knockapi/models/audience_add_members_params.rbs +4 -23
- data/sig/knockapi/models/audience_member_request.rbs +22 -0
- data/sig/knockapi/models/audience_remove_members_params.rbs +4 -26
- data/sig/knockapi/models/list_messages_response.rbs +22 -0
- data/sig/knockapi/models/list_schedules_response.rbs +22 -0
- data/sig/knockapi/models/list_subscriptions_response.rbs +25 -0
- data/sig/knockapi/models/message.rbs +28 -5
- data/sig/knockapi/models/message_contents.rbs +286 -0
- data/sig/knockapi/models/message_event.rbs +6 -6
- data/sig/knockapi/models/message_in_app_feed_button_set_block.rbs +54 -0
- data/sig/knockapi/models/message_in_app_feed_content_block.rbs +46 -0
- data/sig/knockapi/models/messages/batch_archive_params.rbs +4 -13
- data/sig/knockapi/models/messages/batch_get_content_response.rbs +1 -391
- data/sig/knockapi/models/messages/batch_mark_as_read_params.rbs +4 -13
- data/sig/knockapi/models/messages/batch_mark_as_seen_params.rbs +4 -13
- data/sig/knockapi/models/messages/batch_mark_as_unread_params.rbs +4 -13
- data/sig/knockapi/models/messages/batch_mark_as_unseen_params.rbs +4 -13
- data/sig/knockapi/models/messages/batch_messages_status_request.rbs +15 -0
- data/sig/knockapi/models/messages/batch_unarchive_params.rbs +4 -13
- data/sig/knockapi/models/preference_set_commercial_subscribed_setting.rbs +14 -0
- data/sig/knockapi/models/recipients/preference_set.rbs +13 -4
- data/sig/knockapi/models/recipients/preference_set_request.rbs +13 -4
- data/sig/knockapi/models/recipients/slack_channel_data.rbs +10 -1
- data/sig/knockapi/models/users/bulk_set_preferences_params.rbs +13 -4
- data/sig/knockapi/models/users/feed_list_items_response.rbs +2 -100
- data/sig/knockapi/models/users/{guide_mark_message_as_seen_response.rbs → guide_action_response.rbs} +2 -2
- data/sig/knockapi/models/users/guide_archived_request.rbs +58 -0
- data/sig/knockapi/models/users/guide_interacted_request.rbs +51 -0
- data/sig/knockapi/models/users/guide_mark_message_as_archived_params.rbs +4 -63
- data/sig/knockapi/models/users/guide_mark_message_as_interacted_params.rbs +4 -63
- data/sig/knockapi/models/users/guide_mark_message_as_seen_params.rbs +4 -63
- data/sig/knockapi/models/users/guide_reset_guide_engagements_params.rbs +36 -0
- data/sig/knockapi/models/users/guide_seen_request.rbs +56 -0
- data/sig/knockapi/models/users/guide_unarchive_guide_message_params.rbs +36 -0
- data/sig/knockapi/models/users/preference_center_branding_config.rbs +37 -0
- data/sig/knockapi/models/users/preference_center_generate_signed_url_params.rbs +25 -0
- data/sig/knockapi/models/users/preference_center_generate_signed_url_response.rbs +18 -0
- data/sig/knockapi/models/users/preference_center_get_config_params.rbs +25 -0
- data/sig/knockapi/models/users/preference_center_get_config_response.rbs +189 -0
- data/sig/knockapi/models.rbs +16 -0
- data/sig/knockapi/resources/audiences.rbs +2 -2
- data/sig/knockapi/resources/messages.rbs +1 -1
- data/sig/knockapi/resources/objects.rbs +1 -1
- data/sig/knockapi/resources/users/guides.rbs +22 -18
- data/sig/knockapi/resources/users/preference_center.rbs +19 -0
- data/sig/knockapi/resources/users.rbs +3 -1
- metadata +65 -14
- data/lib/knockapi/models/users/guide_mark_message_as_interacted_response.rb +0 -21
- data/lib/knockapi/models/users/guide_mark_message_as_seen_response.rb +0 -21
- data/rbi/knockapi/models/users/guide_mark_message_as_archived_response.rbi +0 -33
- data/rbi/knockapi/models/users/guide_mark_message_as_interacted_response.rbi +0 -33
- data/sig/knockapi/models/message_get_content_response.rbs +0 -384
- data/sig/knockapi/models/users/guide_mark_message_as_archived_response.rbs +0 -15
- data/sig/knockapi/models/users/guide_mark_message_as_interacted_response.rbs +0 -15
|
@@ -111,14 +111,14 @@ module Knockapi
|
|
|
111
111
|
#
|
|
112
112
|
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
113
113
|
#
|
|
114
|
-
# @return [Knockapi::Models::
|
|
114
|
+
# @return [Knockapi::Models::MessageContents]
|
|
115
115
|
#
|
|
116
116
|
# @see Knockapi::Models::MessageGetContentParams
|
|
117
117
|
def get_content(message_id, params = {})
|
|
118
118
|
@client.request(
|
|
119
119
|
method: :get,
|
|
120
120
|
path: ["v1/messages/%1$s/content", message_id],
|
|
121
|
-
model: Knockapi::
|
|
121
|
+
model: Knockapi::MessageContents,
|
|
122
122
|
options: params[:request_options]
|
|
123
123
|
)
|
|
124
124
|
end
|
|
@@ -459,7 +459,7 @@ module Knockapi
|
|
|
459
459
|
#
|
|
460
460
|
# @param channels [Hash{Symbol=>Boolean, Knockapi::Models::Recipients::PreferenceSetChannelSetting}, nil] Channel preferences.
|
|
461
461
|
#
|
|
462
|
-
# @param commercial_subscribed [Boolean, nil] Whether the recipient is subscribed to commercial communications. When false, th
|
|
462
|
+
# @param commercial_subscribed [Boolean, Knockapi::Models::PreferenceSetCommercialSubscribedSetting, nil] Whether the recipient is subscribed to commercial communications. When false, th
|
|
463
463
|
#
|
|
464
464
|
# @param workflows [Hash{Symbol=>Boolean, Knockapi::Models::Recipients::PreferenceSetRequest::Workflow::PreferenceSetWorkflowCategorySettingObject}, nil] An object where the key is the workflow key and the values are the preference se
|
|
465
465
|
#
|
|
@@ -37,15 +37,16 @@ module Knockapi
|
|
|
37
37
|
)
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
# Some parameter documentations has been truncated, see
|
|
41
|
+
# {Knockapi::Models::Users::GuideMarkMessageAsArchivedParams} for more details.
|
|
42
|
+
#
|
|
40
43
|
# Records that a guide has been archived by a user, triggering any associated
|
|
41
44
|
# archived events.
|
|
42
45
|
#
|
|
43
|
-
# @overload mark_message_as_archived(user_id,
|
|
46
|
+
# @overload mark_message_as_archived(user_id, channel_id:, guide_id:, guide_key:, guide_step_ref:, is_final: nil, tenant: nil, unthrottled: nil, request_options: {})
|
|
44
47
|
#
|
|
45
48
|
# @param user_id [String] The unique identifier of the user.
|
|
46
49
|
#
|
|
47
|
-
# @param message_id [String]
|
|
48
|
-
#
|
|
49
50
|
# @param channel_id [String] The unique identifier for the channel.
|
|
50
51
|
#
|
|
51
52
|
# @param guide_id [String] The unique identifier for the guide.
|
|
@@ -54,28 +55,24 @@ module Knockapi
|
|
|
54
55
|
#
|
|
55
56
|
# @param guide_step_ref [String] The step reference of the guide.
|
|
56
57
|
#
|
|
57
|
-
# @param content [Hash{Symbol=>Object}] The content of the guide.
|
|
58
|
-
#
|
|
59
|
-
# @param data [Hash{Symbol=>Object}] The data of the guide.
|
|
60
|
-
#
|
|
61
58
|
# @param is_final [Boolean] Whether the guide is final.
|
|
62
59
|
#
|
|
63
|
-
# @param
|
|
60
|
+
# @param tenant [String] The tenant ID of the guide.
|
|
64
61
|
#
|
|
65
|
-
# @param
|
|
62
|
+
# @param unthrottled [Boolean] Whether the guide bypasses its guide group's throttle settings. When true, archi
|
|
66
63
|
#
|
|
67
64
|
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
68
65
|
#
|
|
69
|
-
# @return [Knockapi::Models::Users::
|
|
66
|
+
# @return [Knockapi::Models::Users::GuideActionResponse]
|
|
70
67
|
#
|
|
71
68
|
# @see Knockapi::Models::Users::GuideMarkMessageAsArchivedParams
|
|
72
|
-
def mark_message_as_archived(user_id,
|
|
69
|
+
def mark_message_as_archived(user_id, params)
|
|
73
70
|
parsed, options = Knockapi::Users::GuideMarkMessageAsArchivedParams.dump_request(params)
|
|
74
71
|
@client.request(
|
|
75
72
|
method: :put,
|
|
76
|
-
path: ["v1/users/%1$s/guides/messages
|
|
73
|
+
path: ["v1/users/%1$s/guides/messages/archived", user_id],
|
|
77
74
|
body: parsed,
|
|
78
|
-
model: Knockapi::
|
|
75
|
+
model: Knockapi::Users::GuideActionResponse,
|
|
79
76
|
options: options
|
|
80
77
|
)
|
|
81
78
|
end
|
|
@@ -83,12 +80,10 @@ module Knockapi
|
|
|
83
80
|
# Records that a user has interacted with a guide, triggering any associated
|
|
84
81
|
# interacted events.
|
|
85
82
|
#
|
|
86
|
-
# @overload mark_message_as_interacted(user_id,
|
|
83
|
+
# @overload mark_message_as_interacted(user_id, channel_id:, guide_id:, guide_key:, guide_step_ref:, metadata: nil, tenant: nil, request_options: {})
|
|
87
84
|
#
|
|
88
85
|
# @param user_id [String] The unique identifier of the user.
|
|
89
86
|
#
|
|
90
|
-
# @param message_id [String]
|
|
91
|
-
#
|
|
92
87
|
# @param channel_id [String] The unique identifier for the channel.
|
|
93
88
|
#
|
|
94
89
|
# @param guide_id [String] The unique identifier for the guide.
|
|
@@ -97,28 +92,22 @@ module Knockapi
|
|
|
97
92
|
#
|
|
98
93
|
# @param guide_step_ref [String] The step reference of the guide.
|
|
99
94
|
#
|
|
100
|
-
# @param
|
|
101
|
-
#
|
|
102
|
-
# @param data [Hash{Symbol=>Object}] The data of the guide.
|
|
95
|
+
# @param metadata [Hash{Symbol=>Object}] Metadata about the interaction.
|
|
103
96
|
#
|
|
104
|
-
# @param
|
|
105
|
-
#
|
|
106
|
-
# @param metadata [Hash{Symbol=>Object}] The metadata of the guide.
|
|
107
|
-
#
|
|
108
|
-
# @param tenant [String, nil] The tenant ID of the guide.
|
|
97
|
+
# @param tenant [String] The tenant ID of the guide.
|
|
109
98
|
#
|
|
110
99
|
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
111
100
|
#
|
|
112
|
-
# @return [Knockapi::Models::Users::
|
|
101
|
+
# @return [Knockapi::Models::Users::GuideActionResponse]
|
|
113
102
|
#
|
|
114
103
|
# @see Knockapi::Models::Users::GuideMarkMessageAsInteractedParams
|
|
115
|
-
def mark_message_as_interacted(user_id,
|
|
104
|
+
def mark_message_as_interacted(user_id, params)
|
|
116
105
|
parsed, options = Knockapi::Users::GuideMarkMessageAsInteractedParams.dump_request(params)
|
|
117
106
|
@client.request(
|
|
118
107
|
method: :put,
|
|
119
|
-
path: ["v1/users/%1$s/guides/messages
|
|
108
|
+
path: ["v1/users/%1$s/guides/messages/interacted", user_id],
|
|
120
109
|
body: parsed,
|
|
121
|
-
model: Knockapi::
|
|
110
|
+
model: Knockapi::Users::GuideActionResponse,
|
|
122
111
|
options: options
|
|
123
112
|
)
|
|
124
113
|
end
|
|
@@ -126,42 +115,90 @@ module Knockapi
|
|
|
126
115
|
# Records that a guide has been seen by a user, triggering any associated seen
|
|
127
116
|
# events.
|
|
128
117
|
#
|
|
129
|
-
# @overload mark_message_as_seen(user_id,
|
|
118
|
+
# @overload mark_message_as_seen(user_id, channel_id:, content:, guide_id:, guide_key:, guide_step_ref:, data: nil, tenant: nil, request_options: {})
|
|
130
119
|
#
|
|
131
120
|
# @param user_id [String] The unique identifier of the user.
|
|
132
121
|
#
|
|
133
|
-
# @param message_id [String]
|
|
134
|
-
#
|
|
135
122
|
# @param channel_id [String] The unique identifier for the channel.
|
|
136
123
|
#
|
|
124
|
+
# @param content [Hash{Symbol=>Object}] The content of the guide.
|
|
125
|
+
#
|
|
137
126
|
# @param guide_id [String] The unique identifier for the guide.
|
|
138
127
|
#
|
|
139
128
|
# @param guide_key [String] The key of the guide.
|
|
140
129
|
#
|
|
141
130
|
# @param guide_step_ref [String] The step reference of the guide.
|
|
142
131
|
#
|
|
143
|
-
# @param content [Hash{Symbol=>Object}] The content of the guide.
|
|
144
|
-
#
|
|
145
132
|
# @param data [Hash{Symbol=>Object}] The data of the guide.
|
|
146
133
|
#
|
|
147
|
-
# @param
|
|
148
|
-
#
|
|
149
|
-
# @param metadata [Hash{Symbol=>Object}] The metadata of the guide.
|
|
150
|
-
#
|
|
151
|
-
# @param tenant [String, nil] The tenant ID of the guide.
|
|
134
|
+
# @param tenant [String] The tenant ID of the guide.
|
|
152
135
|
#
|
|
153
136
|
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
154
137
|
#
|
|
155
|
-
# @return [Knockapi::Models::Users::
|
|
138
|
+
# @return [Knockapi::Models::Users::GuideActionResponse]
|
|
156
139
|
#
|
|
157
140
|
# @see Knockapi::Models::Users::GuideMarkMessageAsSeenParams
|
|
158
|
-
def mark_message_as_seen(user_id,
|
|
141
|
+
def mark_message_as_seen(user_id, params)
|
|
159
142
|
parsed, options = Knockapi::Users::GuideMarkMessageAsSeenParams.dump_request(params)
|
|
160
143
|
@client.request(
|
|
161
144
|
method: :put,
|
|
162
|
-
path: ["v1/users/%1$s/guides/messages
|
|
145
|
+
path: ["v1/users/%1$s/guides/messages/seen", user_id],
|
|
146
|
+
body: parsed,
|
|
147
|
+
model: Knockapi::Users::GuideActionResponse,
|
|
148
|
+
options: options
|
|
149
|
+
)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Resets the engagement state of a guide for a user, removing the guide's
|
|
153
|
+
# engagement log entry so the next interaction creates a fresh engagement.
|
|
154
|
+
#
|
|
155
|
+
# @overload reset_guide_engagements(user_id, guide_key:, tenant: nil, request_options: {})
|
|
156
|
+
#
|
|
157
|
+
# @param user_id [String] The unique identifier of the user.
|
|
158
|
+
#
|
|
159
|
+
# @param guide_key [String] The key of the guide.
|
|
160
|
+
#
|
|
161
|
+
# @param tenant [String] The tenant ID of the guide.
|
|
162
|
+
#
|
|
163
|
+
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
164
|
+
#
|
|
165
|
+
# @return [Knockapi::Models::Users::GuideActionResponse]
|
|
166
|
+
#
|
|
167
|
+
# @see Knockapi::Models::Users::GuideResetGuideEngagementsParams
|
|
168
|
+
def reset_guide_engagements(user_id, params)
|
|
169
|
+
parsed, options = Knockapi::Users::GuideResetGuideEngagementsParams.dump_request(params)
|
|
170
|
+
@client.request(
|
|
171
|
+
method: :put,
|
|
172
|
+
path: ["v1/users/%1$s/guides/engagements/reset", user_id],
|
|
173
|
+
body: parsed,
|
|
174
|
+
model: Knockapi::Users::GuideActionResponse,
|
|
175
|
+
options: options
|
|
176
|
+
)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Records that a guide has been unarchived, triggering any associated unarchived
|
|
180
|
+
# events.
|
|
181
|
+
#
|
|
182
|
+
# @overload unarchive_guide_message(user_id, guide_key:, tenant: nil, request_options: {})
|
|
183
|
+
#
|
|
184
|
+
# @param user_id [String] The unique identifier of the user.
|
|
185
|
+
#
|
|
186
|
+
# @param guide_key [String] The key of the guide.
|
|
187
|
+
#
|
|
188
|
+
# @param tenant [String] The tenant ID of the guide.
|
|
189
|
+
#
|
|
190
|
+
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
191
|
+
#
|
|
192
|
+
# @return [Knockapi::Models::Users::GuideActionResponse]
|
|
193
|
+
#
|
|
194
|
+
# @see Knockapi::Models::Users::GuideUnarchiveGuideMessageParams
|
|
195
|
+
def unarchive_guide_message(user_id, params)
|
|
196
|
+
parsed, options = Knockapi::Users::GuideUnarchiveGuideMessageParams.dump_request(params)
|
|
197
|
+
@client.request(
|
|
198
|
+
method: :delete,
|
|
199
|
+
path: ["v1/users/%1$s/guides/messages/archived", user_id],
|
|
163
200
|
body: parsed,
|
|
164
|
-
model: Knockapi::
|
|
201
|
+
model: Knockapi::Users::GuideActionResponse,
|
|
165
202
|
options: options
|
|
166
203
|
)
|
|
167
204
|
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Knockapi
|
|
4
|
+
module Resources
|
|
5
|
+
class Users
|
|
6
|
+
# The preference center is a hosted page where users can manage their notification
|
|
7
|
+
# preferences.
|
|
8
|
+
class PreferenceCenter
|
|
9
|
+
# Generates a signed preference center URL and token for the given user in the
|
|
10
|
+
# current environment.
|
|
11
|
+
#
|
|
12
|
+
# @overload generate_signed_url(user_id, request_options: {})
|
|
13
|
+
#
|
|
14
|
+
# @param user_id [String] The unique identifier of the user.
|
|
15
|
+
#
|
|
16
|
+
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
17
|
+
#
|
|
18
|
+
# @return [Knockapi::Models::Users::PreferenceCenterGenerateSignedURLResponse]
|
|
19
|
+
#
|
|
20
|
+
# @see Knockapi::Models::Users::PreferenceCenterGenerateSignedURLParams
|
|
21
|
+
def generate_signed_url(user_id, params = {})
|
|
22
|
+
@client.request(
|
|
23
|
+
method: :post,
|
|
24
|
+
path: ["v1/users/%1$s/preference_center/signed_url", user_id],
|
|
25
|
+
model: Knockapi::Models::Users::PreferenceCenterGenerateSignedURLResponse,
|
|
26
|
+
options: params[:request_options]
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns the preference center config with environment metadata for the given
|
|
31
|
+
# user.
|
|
32
|
+
#
|
|
33
|
+
# @overload get_config(user_id, request_options: {})
|
|
34
|
+
#
|
|
35
|
+
# @param user_id [String] The unique identifier of the user.
|
|
36
|
+
#
|
|
37
|
+
# @param request_options [Knockapi::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
38
|
+
#
|
|
39
|
+
# @return [Knockapi::Models::Users::PreferenceCenterGetConfigResponse]
|
|
40
|
+
#
|
|
41
|
+
# @see Knockapi::Models::Users::PreferenceCenterGetConfigParams
|
|
42
|
+
def get_config(user_id, params = {})
|
|
43
|
+
@client.request(
|
|
44
|
+
method: :get,
|
|
45
|
+
path: ["v1/users/%1$s/preference_center/config", user_id],
|
|
46
|
+
model: Knockapi::Models::Users::PreferenceCenterGetConfigResponse,
|
|
47
|
+
options: params[:request_options]
|
|
48
|
+
)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @api private
|
|
52
|
+
#
|
|
53
|
+
# @param client [Knockapi::Client]
|
|
54
|
+
def initialize(client:)
|
|
55
|
+
@client = client
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -20,6 +20,11 @@ module Knockapi
|
|
|
20
20
|
# @return [Knockapi::Resources::Users::Bulk]
|
|
21
21
|
attr_reader :bulk
|
|
22
22
|
|
|
23
|
+
# The preference center is a hosted page where users can manage their notification
|
|
24
|
+
# preferences.
|
|
25
|
+
# @return [Knockapi::Resources::Users::PreferenceCenter]
|
|
26
|
+
attr_reader :preference_center
|
|
27
|
+
|
|
23
28
|
# Some parameter documentations has been truncated, see
|
|
24
29
|
# {Knockapi::Models::UserUpdateParams} for more details.
|
|
25
30
|
#
|
|
@@ -407,7 +412,7 @@ module Knockapi
|
|
|
407
412
|
#
|
|
408
413
|
# @param channels [Hash{Symbol=>Boolean, Knockapi::Models::Recipients::PreferenceSetChannelSetting}, nil] Channel preferences.
|
|
409
414
|
#
|
|
410
|
-
# @param commercial_subscribed [Boolean, nil] Whether the recipient is subscribed to commercial communications. When false, th
|
|
415
|
+
# @param commercial_subscribed [Boolean, Knockapi::Models::PreferenceSetCommercialSubscribedSetting, nil] Whether the recipient is subscribed to commercial communications. When false, th
|
|
411
416
|
#
|
|
412
417
|
# @param workflows [Hash{Symbol=>Boolean, Knockapi::Models::Recipients::PreferenceSetRequest::Workflow::PreferenceSetWorkflowCategorySettingObject}, nil] An object where the key is the workflow key and the values are the preference se
|
|
413
418
|
#
|
|
@@ -479,6 +484,7 @@ module Knockapi
|
|
|
479
484
|
@feeds = Knockapi::Resources::Users::Feeds.new(client: client)
|
|
480
485
|
@guides = Knockapi::Resources::Users::Guides.new(client: client)
|
|
481
486
|
@bulk = Knockapi::Resources::Users::Bulk.new(client: client)
|
|
487
|
+
@preference_center = Knockapi::Resources::Users::PreferenceCenter.new(client: client)
|
|
482
488
|
end
|
|
483
489
|
end
|
|
484
490
|
end
|
data/lib/knockapi/version.rb
CHANGED
data/lib/knockapi.rb
CHANGED
|
@@ -56,8 +56,13 @@ require_relative "knockapi/internal/entries_cursor"
|
|
|
56
56
|
require_relative "knockapi/internal/items_cursor"
|
|
57
57
|
require_relative "knockapi/internal/ms_teams_pagination"
|
|
58
58
|
require_relative "knockapi/internal/slack_channels_cursor"
|
|
59
|
+
require_relative "knockapi/models/messages/batch_messages_status_request"
|
|
59
60
|
require_relative "knockapi/models/recipients/channel_data_request"
|
|
60
61
|
require_relative "knockapi/models/recipients/preference_set_request"
|
|
62
|
+
require_relative "knockapi/models/users/guide_archived_request"
|
|
63
|
+
require_relative "knockapi/models/users/guide_interacted_request"
|
|
64
|
+
require_relative "knockapi/models/users/guide_seen_request"
|
|
65
|
+
require_relative "knockapi/models/users/preference_center_branding_config"
|
|
61
66
|
require_relative "knockapi/models/identify_user_request"
|
|
62
67
|
require_relative "knockapi/models/workflow_recipient_run"
|
|
63
68
|
require_relative "knockapi/models/activity"
|
|
@@ -65,6 +70,7 @@ require_relative "knockapi/models/audience_add_members_params"
|
|
|
65
70
|
require_relative "knockapi/models/audience_list_members_params"
|
|
66
71
|
require_relative "knockapi/models/audience_list_members_response"
|
|
67
72
|
require_relative "knockapi/models/audience_member"
|
|
73
|
+
require_relative "knockapi/models/audience_member_request"
|
|
68
74
|
require_relative "knockapi/models/audience_remove_members_params"
|
|
69
75
|
require_relative "knockapi/models/bulk_operation"
|
|
70
76
|
require_relative "knockapi/models/bulk_operation_get_params"
|
|
@@ -77,13 +83,18 @@ require_relative "knockapi/models/integrations/census_custom_destination_params"
|
|
|
77
83
|
require_relative "knockapi/models/integrations/census_custom_destination_response"
|
|
78
84
|
require_relative "knockapi/models/integrations/hightouch_embedded_destination_params"
|
|
79
85
|
require_relative "knockapi/models/integrations/hightouch_embedded_destination_response"
|
|
86
|
+
require_relative "knockapi/models/list_messages_response"
|
|
87
|
+
require_relative "knockapi/models/list_schedules_response"
|
|
88
|
+
require_relative "knockapi/models/list_subscriptions_response"
|
|
80
89
|
require_relative "knockapi/models/message"
|
|
81
90
|
require_relative "knockapi/models/message_archive_params"
|
|
91
|
+
require_relative "knockapi/models/message_contents"
|
|
82
92
|
require_relative "knockapi/models/message_delivery_log"
|
|
83
93
|
require_relative "knockapi/models/message_event"
|
|
84
94
|
require_relative "knockapi/models/message_get_content_params"
|
|
85
|
-
require_relative "knockapi/models/message_get_content_response"
|
|
86
95
|
require_relative "knockapi/models/message_get_params"
|
|
96
|
+
require_relative "knockapi/models/message_in_app_feed_button_set_block"
|
|
97
|
+
require_relative "knockapi/models/message_in_app_feed_content_block"
|
|
87
98
|
require_relative "knockapi/models/message_list_activities_params"
|
|
88
99
|
require_relative "knockapi/models/message_list_delivery_logs_params"
|
|
89
100
|
require_relative "knockapi/models/message_list_events_params"
|
|
@@ -135,6 +146,7 @@ require_relative "knockapi/models/object_set_preferences_params"
|
|
|
135
146
|
require_relative "knockapi/models/object_unset_channel_data_params"
|
|
136
147
|
require_relative "knockapi/models/object_unset_preferences_params"
|
|
137
148
|
require_relative "knockapi/models/page_info"
|
|
149
|
+
require_relative "knockapi/models/preference_set_commercial_subscribed_setting"
|
|
138
150
|
require_relative "knockapi/models/providers/ms_team_check_auth_params"
|
|
139
151
|
require_relative "knockapi/models/providers/ms_team_check_auth_response"
|
|
140
152
|
require_relative "knockapi/models/providers/ms_team_list_channels_params"
|
|
@@ -205,14 +217,18 @@ require_relative "knockapi/models/users/feed_get_settings_params"
|
|
|
205
217
|
require_relative "knockapi/models/users/feed_get_settings_response"
|
|
206
218
|
require_relative "knockapi/models/users/feed_list_items_params"
|
|
207
219
|
require_relative "knockapi/models/users/feed_list_items_response"
|
|
220
|
+
require_relative "knockapi/models/users/guide_action_response"
|
|
208
221
|
require_relative "knockapi/models/users/guide_get_channel_params"
|
|
209
222
|
require_relative "knockapi/models/users/guide_get_channel_response"
|
|
210
223
|
require_relative "knockapi/models/users/guide_mark_message_as_archived_params"
|
|
211
|
-
require_relative "knockapi/models/users/guide_mark_message_as_archived_response"
|
|
212
224
|
require_relative "knockapi/models/users/guide_mark_message_as_interacted_params"
|
|
213
|
-
require_relative "knockapi/models/users/guide_mark_message_as_interacted_response"
|
|
214
225
|
require_relative "knockapi/models/users/guide_mark_message_as_seen_params"
|
|
215
|
-
require_relative "knockapi/models/users/
|
|
226
|
+
require_relative "knockapi/models/users/guide_reset_guide_engagements_params"
|
|
227
|
+
require_relative "knockapi/models/users/guide_unarchive_guide_message_params"
|
|
228
|
+
require_relative "knockapi/models/users/preference_center_generate_signed_url_params"
|
|
229
|
+
require_relative "knockapi/models/users/preference_center_generate_signed_url_response"
|
|
230
|
+
require_relative "knockapi/models/users/preference_center_get_config_params"
|
|
231
|
+
require_relative "knockapi/models/users/preference_center_get_config_response"
|
|
216
232
|
require_relative "knockapi/models/user_set_channel_data_params"
|
|
217
233
|
require_relative "knockapi/models/user_set_preferences_params"
|
|
218
234
|
require_relative "knockapi/models/user_unset_channel_data_params"
|
|
@@ -252,5 +268,6 @@ require_relative "knockapi/resources/users"
|
|
|
252
268
|
require_relative "knockapi/resources/users/bulk"
|
|
253
269
|
require_relative "knockapi/resources/users/feeds"
|
|
254
270
|
require_relative "knockapi/resources/users/guides"
|
|
271
|
+
require_relative "knockapi/resources/users/preference_center"
|
|
255
272
|
require_relative "knockapi/resources/workflow_recipient_runs"
|
|
256
273
|
require_relative "knockapi/resources/workflows"
|
|
@@ -15,7 +15,7 @@ module Knockapi
|
|
|
15
15
|
attr_accessor :key
|
|
16
16
|
|
|
17
17
|
# A list of audience members to add. You can add up to 1,000 members per request.
|
|
18
|
-
sig { returns(T::Array[Knockapi::
|
|
18
|
+
sig { returns(T::Array[Knockapi::AudienceMemberRequest]) }
|
|
19
19
|
attr_accessor :members
|
|
20
20
|
|
|
21
21
|
# Create the audience if it does not exist.
|
|
@@ -28,7 +28,7 @@ module Knockapi
|
|
|
28
28
|
sig do
|
|
29
29
|
params(
|
|
30
30
|
key: String,
|
|
31
|
-
members: T::Array[Knockapi::
|
|
31
|
+
members: T::Array[Knockapi::AudienceMemberRequest::OrHash],
|
|
32
32
|
create_audience: T::Boolean,
|
|
33
33
|
request_options: Knockapi::RequestOptions::OrHash
|
|
34
34
|
).returns(T.attached_class)
|
|
@@ -47,7 +47,7 @@ module Knockapi
|
|
|
47
47
|
override.returns(
|
|
48
48
|
{
|
|
49
49
|
key: String,
|
|
50
|
-
members: T::Array[Knockapi::
|
|
50
|
+
members: T::Array[Knockapi::AudienceMemberRequest],
|
|
51
51
|
create_audience: T::Boolean,
|
|
52
52
|
request_options: Knockapi::RequestOptions
|
|
53
53
|
}
|
|
@@ -55,59 +55,6 @@ module Knockapi
|
|
|
55
55
|
end
|
|
56
56
|
def to_hash
|
|
57
57
|
end
|
|
58
|
-
|
|
59
|
-
class Member < Knockapi::Internal::Type::BaseModel
|
|
60
|
-
OrHash =
|
|
61
|
-
T.type_alias do
|
|
62
|
-
T.any(
|
|
63
|
-
Knockapi::AudienceAddMembersParams::Member,
|
|
64
|
-
Knockapi::Internal::AnyHash
|
|
65
|
-
)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
69
|
-
# will ensure that the user is available before the request is executed in Knock.
|
|
70
|
-
# It will perform an upsert for the user you're supplying, replacing any
|
|
71
|
-
# properties specified.
|
|
72
|
-
sig { returns(Knockapi::InlineIdentifyUserRequest) }
|
|
73
|
-
attr_reader :user
|
|
74
|
-
|
|
75
|
-
sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void }
|
|
76
|
-
attr_writer :user
|
|
77
|
-
|
|
78
|
-
# The unique identifier for the tenant.
|
|
79
|
-
sig { returns(T.nilable(String)) }
|
|
80
|
-
attr_accessor :tenant
|
|
81
|
-
|
|
82
|
-
# An audience member.
|
|
83
|
-
sig do
|
|
84
|
-
params(
|
|
85
|
-
user: Knockapi::InlineIdentifyUserRequest::OrHash,
|
|
86
|
-
tenant: T.nilable(String)
|
|
87
|
-
).returns(T.attached_class)
|
|
88
|
-
end
|
|
89
|
-
def self.new(
|
|
90
|
-
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
91
|
-
# will ensure that the user is available before the request is executed in Knock.
|
|
92
|
-
# It will perform an upsert for the user you're supplying, replacing any
|
|
93
|
-
# properties specified.
|
|
94
|
-
user:,
|
|
95
|
-
# The unique identifier for the tenant.
|
|
96
|
-
tenant: nil
|
|
97
|
-
)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
sig do
|
|
101
|
-
override.returns(
|
|
102
|
-
{
|
|
103
|
-
user: Knockapi::InlineIdentifyUserRequest,
|
|
104
|
-
tenant: T.nilable(String)
|
|
105
|
-
}
|
|
106
|
-
)
|
|
107
|
-
end
|
|
108
|
-
def to_hash
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
58
|
end
|
|
112
59
|
end
|
|
113
60
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Knockapi
|
|
4
|
+
module Models
|
|
5
|
+
class AudienceMemberRequest < Knockapi::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(Knockapi::AudienceMemberRequest, Knockapi::Internal::AnyHash)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
12
|
+
# will ensure that the user is available before the request is executed in Knock.
|
|
13
|
+
# It will perform an upsert for the user you're supplying, replacing any
|
|
14
|
+
# properties specified.
|
|
15
|
+
sig { returns(Knockapi::InlineIdentifyUserRequest) }
|
|
16
|
+
attr_reader :user
|
|
17
|
+
|
|
18
|
+
sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void }
|
|
19
|
+
attr_writer :user
|
|
20
|
+
|
|
21
|
+
# The unique identifier for the tenant.
|
|
22
|
+
sig { returns(T.nilable(String)) }
|
|
23
|
+
attr_accessor :tenant
|
|
24
|
+
|
|
25
|
+
# An audience member.
|
|
26
|
+
sig do
|
|
27
|
+
params(
|
|
28
|
+
user: Knockapi::InlineIdentifyUserRequest::OrHash,
|
|
29
|
+
tenant: T.nilable(String)
|
|
30
|
+
).returns(T.attached_class)
|
|
31
|
+
end
|
|
32
|
+
def self.new(
|
|
33
|
+
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
34
|
+
# will ensure that the user is available before the request is executed in Knock.
|
|
35
|
+
# It will perform an upsert for the user you're supplying, replacing any
|
|
36
|
+
# properties specified.
|
|
37
|
+
user:,
|
|
38
|
+
# The unique identifier for the tenant.
|
|
39
|
+
tenant: nil
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
sig do
|
|
44
|
+
override.returns(
|
|
45
|
+
{
|
|
46
|
+
user: Knockapi::InlineIdentifyUserRequest,
|
|
47
|
+
tenant: T.nilable(String)
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
def to_hash
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -19,14 +19,13 @@ module Knockapi
|
|
|
19
19
|
|
|
20
20
|
# A list of audience members to remove. You can remove up to 1,000 members per
|
|
21
21
|
# request.
|
|
22
|
-
sig { returns(T::Array[Knockapi::
|
|
22
|
+
sig { returns(T::Array[Knockapi::AudienceMemberRequest]) }
|
|
23
23
|
attr_accessor :members
|
|
24
24
|
|
|
25
25
|
sig do
|
|
26
26
|
params(
|
|
27
27
|
key: String,
|
|
28
|
-
members:
|
|
29
|
-
T::Array[Knockapi::AudienceRemoveMembersParams::Member::OrHash],
|
|
28
|
+
members: T::Array[Knockapi::AudienceMemberRequest::OrHash],
|
|
30
29
|
request_options: Knockapi::RequestOptions::OrHash
|
|
31
30
|
).returns(T.attached_class)
|
|
32
31
|
end
|
|
@@ -43,66 +42,13 @@ module Knockapi
|
|
|
43
42
|
override.returns(
|
|
44
43
|
{
|
|
45
44
|
key: String,
|
|
46
|
-
members: T::Array[Knockapi::
|
|
45
|
+
members: T::Array[Knockapi::AudienceMemberRequest],
|
|
47
46
|
request_options: Knockapi::RequestOptions
|
|
48
47
|
}
|
|
49
48
|
)
|
|
50
49
|
end
|
|
51
50
|
def to_hash
|
|
52
51
|
end
|
|
53
|
-
|
|
54
|
-
class Member < Knockapi::Internal::Type::BaseModel
|
|
55
|
-
OrHash =
|
|
56
|
-
T.type_alias do
|
|
57
|
-
T.any(
|
|
58
|
-
Knockapi::AudienceRemoveMembersParams::Member,
|
|
59
|
-
Knockapi::Internal::AnyHash
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
64
|
-
# will ensure that the user is available before the request is executed in Knock.
|
|
65
|
-
# It will perform an upsert for the user you're supplying, replacing any
|
|
66
|
-
# properties specified.
|
|
67
|
-
sig { returns(Knockapi::InlineIdentifyUserRequest) }
|
|
68
|
-
attr_reader :user
|
|
69
|
-
|
|
70
|
-
sig { params(user: Knockapi::InlineIdentifyUserRequest::OrHash).void }
|
|
71
|
-
attr_writer :user
|
|
72
|
-
|
|
73
|
-
# The unique identifier for the tenant.
|
|
74
|
-
sig { returns(T.nilable(String)) }
|
|
75
|
-
attr_accessor :tenant
|
|
76
|
-
|
|
77
|
-
# An audience member.
|
|
78
|
-
sig do
|
|
79
|
-
params(
|
|
80
|
-
user: Knockapi::InlineIdentifyUserRequest::OrHash,
|
|
81
|
-
tenant: T.nilable(String)
|
|
82
|
-
).returns(T.attached_class)
|
|
83
|
-
end
|
|
84
|
-
def self.new(
|
|
85
|
-
# A set of parameters to inline-identify a user with. Inline identifying the user
|
|
86
|
-
# will ensure that the user is available before the request is executed in Knock.
|
|
87
|
-
# It will perform an upsert for the user you're supplying, replacing any
|
|
88
|
-
# properties specified.
|
|
89
|
-
user:,
|
|
90
|
-
# The unique identifier for the tenant.
|
|
91
|
-
tenant: nil
|
|
92
|
-
)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
sig do
|
|
96
|
-
override.returns(
|
|
97
|
-
{
|
|
98
|
-
user: Knockapi::InlineIdentifyUserRequest,
|
|
99
|
-
tenant: T.nilable(String)
|
|
100
|
-
}
|
|
101
|
-
)
|
|
102
|
-
end
|
|
103
|
-
def to_hash
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
52
|
end
|
|
107
53
|
end
|
|
108
54
|
end
|