purecloud 0.38.1 → 0.39.1

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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/config-ruby.json +1 -1
  4. data/doc_out/AuthorizationApi.html.md +0 -57
  5. data/doc_out/AvailableLanguageList.html.md +13 -0
  6. data/doc_out/BillingContact.html.md +20 -0
  7. data/doc_out/{FlowHistoryResultItemEntityListing.html.md → BillingContactListing.html.md} +3 -3
  8. data/doc_out/CallRecord.html.md +2 -2
  9. data/doc_out/CallableContactsDiagnostic.html.md +3 -3
  10. data/doc_out/CallableTimeSet.html.md +3 -3
  11. data/doc_out/Campaign.html.md +3 -3
  12. data/doc_out/CampaignDiagnostics.html.md +3 -3
  13. data/doc_out/CampaignSchedule.html.md +6 -6
  14. data/doc_out/CampaignSequence.html.md +8 -8
  15. data/doc_out/CampaignStats.html.md +4 -4
  16. data/doc_out/Condition.html.md +7 -7
  17. data/doc_out/ConnectRate.html.md +3 -3
  18. data/doc_out/ContactCallbackRequest.html.md +5 -5
  19. data/doc_out/ContactList.html.md +9 -9
  20. data/doc_out/ContactPhoneNumberColumn.html.md +3 -3
  21. data/doc_out/CreateCallbackCommand.html.md +1 -0
  22. data/doc_out/CreateUser.html.md +1 -1
  23. data/doc_out/CustomerInteractionCenter.html.md +18 -0
  24. data/doc_out/DialerAction.html.md +4 -4
  25. data/doc_out/DialerContact.html.md +5 -5
  26. data/doc_out/DialerRule.html.md +6 -6
  27. data/doc_out/DncList.html.md +6 -7
  28. data/doc_out/ExternalContact.html.md +1 -0
  29. data/doc_out/ExternalDataSource.html.md +14 -0
  30. data/doc_out/ExternalOrganization.html.md +1 -0
  31. data/doc_out/IdentityProviderApi.html.md +1011 -0
  32. data/doc_out/ImportStatus.html.md +5 -5
  33. data/doc_out/InitiateScreenRecording.html.md +15 -0
  34. data/doc_out/JsonNode.html.md +3 -3
  35. data/doc_out/Keyword.html.md +19 -0
  36. data/doc_out/KeywordSet.html.md +21 -0
  37. data/doc_out/KeywordSetEntityListing.html.md +22 -0
  38. data/doc_out/OAuthApi.html.md +45 -886
  39. data/doc_out/OAuthClient.html.md +2 -2
  40. data/doc_out/Okta.html.md +1 -1
  41. data/doc_out/OneLogin.html.md +1 -1
  42. data/doc_out/OrgMediaUtilization.html.md +1 -0
  43. data/doc_out/OutboundApi.html.md +3 -3
  44. data/doc_out/PaymentMethod.html.md +3 -0
  45. data/doc_out/PhoneNumberStatus.html.md +1 -1
  46. data/doc_out/PolicyActions.html.md +1 -0
  47. data/doc_out/PresenceApi.html.md +68 -17
  48. data/doc_out/QualityApi.html.md +361 -0
  49. data/doc_out/QueueUtilizationDiagnostic.html.md +8 -8
  50. data/doc_out/ResponseSet.html.md +3 -3
  51. data/doc_out/RoutingApi.html.md +15 -12
  52. data/doc_out/RoutingSkill.html.md +1 -2
  53. data/doc_out/RuleSet.html.md +6 -6
  54. data/doc_out/Salesforce.html.md +1 -1
  55. data/doc_out/ScheduleInterval.html.md +14 -0
  56. data/doc_out/SequenceSchedule.html.md +6 -6
  57. data/doc_out/Station.html.md +1 -0
  58. data/doc_out/StationsApi.html.md +3 -1
  59. data/doc_out/SupportCredit.html.md +16 -0
  60. data/doc_out/SupportCreditListing.html.md +22 -0
  61. data/doc_out/SystemPresence.html.md +15 -0
  62. data/doc_out/TelephonyProvidersEdgeApi.html.md +112 -1
  63. data/doc_out/TrunkRecordingEnabledCount.html.md +14 -0
  64. data/doc_out/UserImage.html.md +1 -1
  65. data/doc_out/UserMe.html.md +5 -1
  66. data/doc_out/UserRoutingSkill.html.md +2 -2
  67. data/doc_out/UsersApi.html.md +182 -0
  68. data/doc_out/WrapUpCodeMapping.html.md +5 -5
  69. data/doc_out/index.html.md +3 -3
  70. data/lib/purecloud.rb +15 -3
  71. data/lib/purecloud/api/authorization_api.rb +0 -60
  72. data/lib/purecloud/api/identity_provider_api.rb +1072 -0
  73. data/lib/purecloud/api/o_auth_api.rb +26 -906
  74. data/lib/purecloud/api/outbound_api.rb +2 -2
  75. data/lib/purecloud/api/presence_api.rb +67 -12
  76. data/lib/purecloud/api/quality_api.rb +378 -0
  77. data/lib/purecloud/api/routing_api.rb +21 -16
  78. data/lib/purecloud/api/stations_api.rb +3 -0
  79. data/lib/purecloud/api/telephony_providers_edge_api.rb +120 -0
  80. data/lib/purecloud/api/users_api.rb +189 -0
  81. data/lib/purecloud/api_client.rb +1 -1
  82. data/lib/purecloud/models/analytics_session.rb +1 -1
  83. data/lib/purecloud/models/available_language_list.rb +167 -0
  84. data/lib/purecloud/models/billing_contact.rb +237 -0
  85. data/lib/purecloud/models/{flow_history_result_item_entity_listing.rb → billing_contact_listing.rb} +2 -2
  86. data/lib/purecloud/models/call_record.rb +2 -1
  87. data/lib/purecloud/models/callable_contacts_diagnostic.rb +3 -0
  88. data/lib/purecloud/models/callable_time_set.rb +3 -3
  89. data/lib/purecloud/models/campaign.rb +3 -3
  90. data/lib/purecloud/models/campaign_diagnostics.rb +3 -0
  91. data/lib/purecloud/models/campaign_schedule.rb +7 -4
  92. data/lib/purecloud/models/campaign_sequence.rb +8 -3
  93. data/lib/purecloud/models/campaign_stats.rb +4 -0
  94. data/lib/purecloud/models/condition.rb +16 -0
  95. data/lib/purecloud/models/connect_rate.rb +3 -0
  96. data/lib/purecloud/models/contact_callback_request.rb +5 -0
  97. data/lib/purecloud/models/contact_list.rb +9 -3
  98. data/lib/purecloud/models/contact_phone_number_column.rb +3 -0
  99. data/lib/purecloud/models/create_callback_command.rb +12 -1
  100. data/lib/purecloud/models/create_user.rb +1 -0
  101. data/lib/purecloud/models/customer_interaction_center.rb +217 -0
  102. data/lib/purecloud/models/dialer_action.rb +31 -0
  103. data/lib/purecloud/models/dialer_contact.rb +5 -0
  104. data/lib/purecloud/models/dialer_rule.rb +15 -0
  105. data/lib/purecloud/models/dnc_list.rb +7 -14
  106. data/lib/purecloud/models/external_contact.rb +14 -1
  107. data/lib/purecloud/models/external_data_source.rb +176 -0
  108. data/lib/purecloud/models/external_organization.rb +14 -1
  109. data/lib/purecloud/models/import_status.rb +5 -0
  110. data/lib/purecloud/models/initiate_screen_recording.rb +187 -0
  111. data/lib/purecloud/models/json_node.rb +37 -37
  112. data/lib/purecloud/models/keyword.rb +227 -0
  113. data/lib/purecloud/models/keyword_set.rb +253 -0
  114. data/lib/purecloud/models/keyword_set_entity_listing.rb +257 -0
  115. data/lib/purecloud/models/o_auth_client.rb +3 -3
  116. data/lib/purecloud/models/okta.rb +11 -11
  117. data/lib/purecloud/models/one_login.rb +11 -11
  118. data/lib/purecloud/models/org_media_utilization.rb +17 -4
  119. data/lib/purecloud/models/organization_presence.rb +0 -9
  120. data/lib/purecloud/models/payment_method.rb +42 -1
  121. data/lib/purecloud/models/phone_number_status.rb +1 -0
  122. data/lib/purecloud/models/policy_actions.rb +14 -4
  123. data/lib/purecloud/models/queue_utilization_diagnostic.rb +8 -0
  124. data/lib/purecloud/models/response_set.rb +3 -3
  125. data/lib/purecloud/models/routing_skill.rb +2 -12
  126. data/lib/purecloud/models/routing_status.rb +1 -1
  127. data/lib/purecloud/models/rule_set.rb +6 -3
  128. data/lib/purecloud/models/salesforce.rb +11 -11
  129. data/lib/purecloud/models/{campaign_schedule_intervals.rb → schedule_interval.rb} +5 -5
  130. data/lib/purecloud/models/sequence_schedule.rb +7 -4
  131. data/lib/purecloud/models/station.rb +11 -1
  132. data/lib/purecloud/models/support_credit.rb +197 -0
  133. data/lib/purecloud/models/support_credit_listing.rb +257 -0
  134. data/lib/purecloud/models/system_presence.rb +187 -0
  135. data/lib/purecloud/models/trunk_recording_enabled_count.rb +177 -0
  136. data/lib/purecloud/models/user_image.rb +1 -0
  137. data/lib/purecloud/models/user_me.rb +50 -2
  138. data/lib/purecloud/models/user_routing_skill.rb +18 -11
  139. data/lib/purecloud/models/wrap_up_code_mapping.rb +5 -3
  140. data/lib/purecloud/version.rb +1 -1
  141. data/newVersion.md +1 -1
  142. data/swagger.json +1 -1
  143. data/version.json +1 -1
  144. metadata +32 -8
  145. data/doc_out/CampaignScheduleIntervals.html.md +0 -14
  146. data/doc_out/ObjectsApi.html.md +0 -69
  147. data/lib/purecloud/api/objects_api.rb +0 -87
@@ -33,7 +33,7 @@ module PureCloud
33
33
 
34
34
  def initialize(config = Configuration.default)
35
35
  @config = config
36
- @user_agent = "PureCloud SDK/Ruby 0.38.1"
36
+ @user_agent = "PureCloud SDK/Ruby 0.39.1"
37
37
  @default_headers = {
38
38
  'Content-Type' => "application/json",
39
39
  'User-Agent' => @user_agent
@@ -207,7 +207,7 @@ module PureCloud
207
207
 
208
208
  # Custom attribute writer method checking allowed values (enum).
209
209
  def media_type=(media_type)
210
- allowed_values = ["voice", "chat", "email"]
210
+ allowed_values = ["voice", "chat", "email", "callback"]
211
211
  if media_type && !allowed_values.include?(media_type)
212
212
  fail "invalid value for 'media_type', must be one of #{allowed_values}"
213
213
  end
@@ -0,0 +1,167 @@
1
+ =begin
2
+ PureCloud Platform API
3
+
4
+ With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
5
+
6
+ OpenAPI spec version: v2
7
+ Contact: DeveloperEvangelists@inin.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ License: ININ
11
+ http://www.inin.com
12
+
13
+ Terms of Service: https://developer.mypurecloud.com/tos
14
+
15
+ =end
16
+
17
+ require 'date'
18
+
19
+ module PureCloud
20
+ class AvailableLanguageList
21
+ attr_accessor :languages
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+
27
+ :'languages' => :'languages'
28
+
29
+ }
30
+ end
31
+
32
+ # Attribute type mapping.
33
+ def self.swagger_types
34
+ {
35
+ :'languages' => :'Array<String>'
36
+
37
+ }
38
+ end
39
+
40
+ def initialize(attributes = {})
41
+ return unless attributes.is_a?(Hash)
42
+
43
+ # convert string to symbol for hash key
44
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
45
+
46
+
47
+ if attributes[:'languages']
48
+ if (value = attributes[:'languages']).is_a?(Array)
49
+ self.languages = value
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ # Check equality by comparing each attribute.
56
+ def ==(o)
57
+ return true if self.equal?(o)
58
+ self.class == o.class &&
59
+ languages == o.languages
60
+ end
61
+
62
+ # @see the `==` method
63
+ def eql?(o)
64
+ self == o
65
+ end
66
+
67
+ # Calculate hash code according to all attributes.
68
+ def hash
69
+ [languages].hash
70
+ end
71
+
72
+ # build the object from hash
73
+ def build_from_hash(attributes)
74
+ return nil unless attributes.is_a?(Hash)
75
+ self.class.swagger_types.each_pair do |key, type|
76
+ if type =~ /^Array<(.*)>/i
77
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
78
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
79
+ else
80
+ #TODO show warning in debug mode
81
+ end
82
+ elsif !attributes[self.class.attribute_map[key]].nil?
83
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
84
+ else
85
+ # data not found in attributes(hash), not an issue as the data can be optional
86
+ end
87
+ end
88
+
89
+ self
90
+ end
91
+
92
+ def _deserialize(type, value)
93
+ case type.to_sym
94
+ when :DateTime
95
+ DateTime.parse(value)
96
+ when :Date
97
+ Date.parse(value)
98
+ when :String
99
+ value.to_s
100
+ when :Integer
101
+ value.to_i
102
+ when :Float
103
+ value.to_f
104
+ when :BOOLEAN
105
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
106
+ true
107
+ else
108
+ false
109
+ end
110
+ when :Object
111
+ # generic object (usually a Hash), return directly
112
+ value
113
+ when /\AArray<(?<inner_type>.+)>\z/
114
+ inner_type = Regexp.last_match[:inner_type]
115
+ value.map { |v| _deserialize(inner_type, v) }
116
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
117
+ k_type = Regexp.last_match[:k_type]
118
+ v_type = Regexp.last_match[:v_type]
119
+ {}.tap do |hash|
120
+ value.each do |k, v|
121
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
122
+ end
123
+ end
124
+ else # model
125
+ _model = Object.const_get("PureCloud").const_get(type).new
126
+ _model.build_from_hash(value)
127
+ end
128
+ end
129
+
130
+ def to_s
131
+ to_hash.to_s
132
+ end
133
+
134
+ # to_body is an alias to to_body (backward compatibility))
135
+ def to_body
136
+ to_hash
137
+ end
138
+
139
+ # return the object in the form of hash
140
+ def to_hash
141
+ hash = {}
142
+ self.class.attribute_map.each_pair do |attr, param|
143
+ value = self.send(attr)
144
+ next if value.nil?
145
+ hash[param] = _to_hash(value)
146
+ end
147
+ hash
148
+ end
149
+
150
+ # Method to output non-array value in the form of hash
151
+ # For object, use to_hash. Otherwise, just return the value
152
+ def _to_hash(value)
153
+ if value.is_a?(Array)
154
+ value.compact.map{ |v| _to_hash(v) }
155
+ elsif value.is_a?(Hash)
156
+ {}.tap do |hash|
157
+ value.each { |k, v| hash[k] = _to_hash(v) }
158
+ end
159
+ elsif value.respond_to? :to_hash
160
+ value.to_hash
161
+ else
162
+ value
163
+ end
164
+ end
165
+
166
+ end
167
+ end
@@ -0,0 +1,237 @@
1
+ =begin
2
+ PureCloud Platform API
3
+
4
+ With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.
5
+
6
+ OpenAPI spec version: v2
7
+ Contact: DeveloperEvangelists@inin.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+
10
+ License: ININ
11
+ http://www.inin.com
12
+
13
+ Terms of Service: https://developer.mypurecloud.com/tos
14
+
15
+ =end
16
+
17
+ require 'date'
18
+
19
+ module PureCloud
20
+ class BillingContact
21
+ # The globally unique identifier for the object.
22
+ attr_accessor :id
23
+
24
+ attr_accessor :name
25
+
26
+ attr_accessor :first_name
27
+
28
+ attr_accessor :last_name
29
+
30
+ attr_accessor :email
31
+
32
+ attr_accessor :phone
33
+
34
+ attr_accessor :ivr_code
35
+
36
+ # The URI for this object
37
+ attr_accessor :self_uri
38
+
39
+ # Attribute mapping from ruby-style variable name to JSON key.
40
+ def self.attribute_map
41
+ {
42
+
43
+ :'id' => :'id',
44
+
45
+ :'name' => :'name',
46
+
47
+ :'first_name' => :'firstName',
48
+
49
+ :'last_name' => :'lastName',
50
+
51
+ :'email' => :'email',
52
+
53
+ :'phone' => :'phone',
54
+
55
+ :'ivr_code' => :'ivrCode',
56
+
57
+ :'self_uri' => :'selfUri'
58
+
59
+ }
60
+ end
61
+
62
+ # Attribute type mapping.
63
+ def self.swagger_types
64
+ {
65
+ :'id' => :'String',
66
+ :'name' => :'String',
67
+ :'first_name' => :'String',
68
+ :'last_name' => :'String',
69
+ :'email' => :'String',
70
+ :'phone' => :'String',
71
+ :'ivr_code' => :'String',
72
+ :'self_uri' => :'String'
73
+
74
+ }
75
+ end
76
+
77
+ def initialize(attributes = {})
78
+ return unless attributes.is_a?(Hash)
79
+
80
+ # convert string to symbol for hash key
81
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
82
+
83
+
84
+ if attributes[:'id']
85
+ self.id = attributes[:'id']
86
+ end
87
+
88
+ if attributes[:'name']
89
+ self.name = attributes[:'name']
90
+ end
91
+
92
+ if attributes[:'firstName']
93
+ self.first_name = attributes[:'firstName']
94
+ end
95
+
96
+ if attributes[:'lastName']
97
+ self.last_name = attributes[:'lastName']
98
+ end
99
+
100
+ if attributes[:'email']
101
+ self.email = attributes[:'email']
102
+ end
103
+
104
+ if attributes[:'phone']
105
+ self.phone = attributes[:'phone']
106
+ end
107
+
108
+ if attributes[:'ivrCode']
109
+ self.ivr_code = attributes[:'ivrCode']
110
+ end
111
+
112
+ if attributes[:'selfUri']
113
+ self.self_uri = attributes[:'selfUri']
114
+ end
115
+
116
+ end
117
+
118
+ # Check equality by comparing each attribute.
119
+ def ==(o)
120
+ return true if self.equal?(o)
121
+ self.class == o.class &&
122
+ id == o.id &&
123
+ name == o.name &&
124
+ first_name == o.first_name &&
125
+ last_name == o.last_name &&
126
+ email == o.email &&
127
+ phone == o.phone &&
128
+ ivr_code == o.ivr_code &&
129
+ self_uri == o.self_uri
130
+ end
131
+
132
+ # @see the `==` method
133
+ def eql?(o)
134
+ self == o
135
+ end
136
+
137
+ # Calculate hash code according to all attributes.
138
+ def hash
139
+ [id, name, first_name, last_name, email, phone, ivr_code, self_uri].hash
140
+ end
141
+
142
+ # build the object from hash
143
+ def build_from_hash(attributes)
144
+ return nil unless attributes.is_a?(Hash)
145
+ self.class.swagger_types.each_pair do |key, type|
146
+ if type =~ /^Array<(.*)>/i
147
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
148
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
149
+ else
150
+ #TODO show warning in debug mode
151
+ end
152
+ elsif !attributes[self.class.attribute_map[key]].nil?
153
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
154
+ else
155
+ # data not found in attributes(hash), not an issue as the data can be optional
156
+ end
157
+ end
158
+
159
+ self
160
+ end
161
+
162
+ def _deserialize(type, value)
163
+ case type.to_sym
164
+ when :DateTime
165
+ DateTime.parse(value)
166
+ when :Date
167
+ Date.parse(value)
168
+ when :String
169
+ value.to_s
170
+ when :Integer
171
+ value.to_i
172
+ when :Float
173
+ value.to_f
174
+ when :BOOLEAN
175
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
176
+ true
177
+ else
178
+ false
179
+ end
180
+ when :Object
181
+ # generic object (usually a Hash), return directly
182
+ value
183
+ when /\AArray<(?<inner_type>.+)>\z/
184
+ inner_type = Regexp.last_match[:inner_type]
185
+ value.map { |v| _deserialize(inner_type, v) }
186
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
187
+ k_type = Regexp.last_match[:k_type]
188
+ v_type = Regexp.last_match[:v_type]
189
+ {}.tap do |hash|
190
+ value.each do |k, v|
191
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
192
+ end
193
+ end
194
+ else # model
195
+ _model = Object.const_get("PureCloud").const_get(type).new
196
+ _model.build_from_hash(value)
197
+ end
198
+ end
199
+
200
+ def to_s
201
+ to_hash.to_s
202
+ end
203
+
204
+ # to_body is an alias to to_body (backward compatibility))
205
+ def to_body
206
+ to_hash
207
+ end
208
+
209
+ # return the object in the form of hash
210
+ def to_hash
211
+ hash = {}
212
+ self.class.attribute_map.each_pair do |attr, param|
213
+ value = self.send(attr)
214
+ next if value.nil?
215
+ hash[param] = _to_hash(value)
216
+ end
217
+ hash
218
+ end
219
+
220
+ # Method to output non-array value in the form of hash
221
+ # For object, use to_hash. Otherwise, just return the value
222
+ def _to_hash(value)
223
+ if value.is_a?(Array)
224
+ value.compact.map{ |v| _to_hash(v) }
225
+ elsif value.is_a?(Hash)
226
+ {}.tap do |hash|
227
+ value.each { |k, v| hash[k] = _to_hash(v) }
228
+ end
229
+ elsif value.respond_to? :to_hash
230
+ value.to_hash
231
+ else
232
+ value
233
+ end
234
+ end
235
+
236
+ end
237
+ end
@@ -17,7 +17,7 @@ Terms of Service: https://developer.mypurecloud.com/tos
17
17
  require 'date'
18
18
 
19
19
  module PureCloud
20
- class FlowHistoryResultItemEntityListing
20
+ class BillingContactListing
21
21
  attr_accessor :page_size
22
22
 
23
23
  attr_accessor :page_number
@@ -71,7 +71,7 @@ module PureCloud
71
71
  :'page_size' => :'Integer',
72
72
  :'page_number' => :'Integer',
73
73
  :'total' => :'Integer',
74
- :'entities' => :'Array<FlowHistoryResultItem>',
74
+ :'entities' => :'Array<BillingContact>',
75
75
  :'self_uri' => :'String',
76
76
  :'first_uri' => :'String',
77
77
  :'previous_uri' => :'String',
@@ -18,9 +18,10 @@ require 'date'
18
18
 
19
19
  module PureCloud
20
20
  class CallRecord
21
- # Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ
21
+ # Timestamp of the last attempt to reach this number. Date time is represented as an ISO-8601 string. For example: yyyy-MM-ddTHH:mm:ss.SSSZ
22
22
  attr_accessor :last_attempt
23
23
 
24
+ # Result of the last attempt to reach this number
24
25
  attr_accessor :last_result
25
26
 
26
27
  # Attribute mapping from ruby-style variable name to JSON key.