freeclimb 4.5.2 → 4.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +15 -7
  5. data/docs/AddToConference.md +0 -2
  6. data/docs/AddToConferenceAllOf.md +0 -2
  7. data/docs/CreateWebRTCToken.md +22 -0
  8. data/docs/DefaultApi.md +303 -7
  9. data/docs/GetDigits.md +1 -1
  10. data/docs/GetDigitsAllOf.md +1 -1
  11. data/docs/IncomingNumberResult.md +3 -1
  12. data/docs/IncomingNumberResultAllOf.md +3 -1
  13. data/docs/MessageRequest.md +2 -2
  14. data/docs/MessageRequestAllOf.md +2 -2
  15. data/docs/MessageResult.md +3 -1
  16. data/docs/MessageResultAllOf.md +3 -1
  17. data/docs/Play.md +0 -2
  18. data/docs/PlayAllOf.md +0 -2
  19. data/docs/RemoveFromConference.md +1 -4
  20. data/docs/SMSTenDLCCampaign.md +10 -0
  21. data/docs/SMSTollFreeCampaign.md +30 -0
  22. data/docs/SMSTollFreeCampaignsListResult.md +32 -0
  23. data/docs/SMSTollFreeCampaignsListResultAllOf.md +18 -0
  24. data/docs/Say.md +0 -2
  25. data/docs/SayAllOf.md +0 -2
  26. data/docs/SetListen.md +0 -2
  27. data/docs/SetListenAllOf.md +0 -2
  28. data/docs/SetTalk.md +0 -2
  29. data/docs/SetTalkAllOf.md +0 -2
  30. data/docs/TFN.md +18 -0
  31. data/docs/TerminateConference.md +1 -4
  32. data/docs/TranscribeUtterance.md +1 -1
  33. data/docs/TranscribeUtteranceAllOf.md +28 -0
  34. data/docs/TranscribeUtteranceAllOfRecord.md +22 -0
  35. data/lib/freeclimb/api/default_api.rb +262 -7
  36. data/lib/freeclimb/models/account_request.rb +0 -2
  37. data/lib/freeclimb/models/account_result.rb +0 -6
  38. data/lib/freeclimb/models/add_to_conference.rb +1 -29
  39. data/lib/freeclimb/models/add_to_conference_all_of.rb +1 -29
  40. data/lib/freeclimb/models/application_result.rb +0 -6
  41. data/lib/freeclimb/models/buy_incoming_number_request.rb +0 -4
  42. data/lib/freeclimb/models/call_result.rb +0 -6
  43. data/lib/freeclimb/models/conference_participant_result.rb +0 -6
  44. data/lib/freeclimb/models/conference_result.rb +0 -6
  45. data/lib/freeclimb/models/create_conference.rb +0 -8
  46. data/lib/freeclimb/models/create_conference_all_of.rb +0 -8
  47. data/lib/freeclimb/models/create_conference_request.rb +0 -6
  48. data/lib/freeclimb/models/create_web_rtc_token.rb +274 -0
  49. data/lib/freeclimb/models/dequeue.rb +1 -0
  50. data/lib/freeclimb/models/enqueue.rb +0 -6
  51. data/lib/freeclimb/models/enqueue_all_of.rb +0 -6
  52. data/lib/freeclimb/models/get_digits.rb +1 -17
  53. data/lib/freeclimb/models/get_digits_all_of.rb +1 -17
  54. data/lib/freeclimb/models/get_speech.rb +0 -22
  55. data/lib/freeclimb/models/get_speech_all_of.rb +0 -22
  56. data/lib/freeclimb/models/incoming_number_request.rb +0 -2
  57. data/lib/freeclimb/models/incoming_number_result.rb +14 -13
  58. data/lib/freeclimb/models/incoming_number_result_all_of.rb +14 -5
  59. data/lib/freeclimb/models/make_call_request.rb +0 -18
  60. data/lib/freeclimb/models/message_request.rb +10 -24
  61. data/lib/freeclimb/models/message_request_all_of.rb +10 -16
  62. data/lib/freeclimb/models/message_result.rb +17 -11
  63. data/lib/freeclimb/models/message_result_all_of.rb +17 -5
  64. data/lib/freeclimb/models/mutable_resource_model.rb +0 -6
  65. data/lib/freeclimb/models/out_dial.rb +0 -18
  66. data/lib/freeclimb/models/out_dial_all_of.rb +0 -18
  67. data/lib/freeclimb/models/park.rb +0 -4
  68. data/lib/freeclimb/models/park_all_of.rb +0 -4
  69. data/lib/freeclimb/models/play.rb +1 -17
  70. data/lib/freeclimb/models/play_all_of.rb +1 -17
  71. data/lib/freeclimb/models/queue_request.rb +0 -2
  72. data/lib/freeclimb/models/queue_result.rb +0 -6
  73. data/lib/freeclimb/models/record_utterance.rb +0 -12
  74. data/lib/freeclimb/models/record_utterance_all_of.rb +0 -12
  75. data/lib/freeclimb/models/recording_result.rb +0 -6
  76. data/lib/freeclimb/models/remove_from_conference.rb +4 -23
  77. data/lib/freeclimb/models/say.rb +1 -19
  78. data/lib/freeclimb/models/say_all_of.rb +1 -19
  79. data/lib/freeclimb/models/send_digits.rb +0 -4
  80. data/lib/freeclimb/models/send_digits_all_of.rb +0 -4
  81. data/lib/freeclimb/models/set_listen.rb +2 -18
  82. data/lib/freeclimb/models/set_listen_all_of.rb +2 -18
  83. data/lib/freeclimb/models/set_talk.rb +2 -18
  84. data/lib/freeclimb/models/set_talk_all_of.rb +2 -18
  85. data/lib/freeclimb/models/sms.rb +0 -6
  86. data/lib/freeclimb/models/sms_all_of.rb +0 -6
  87. data/lib/freeclimb/models/sms_ten_dlc_brand.rb +0 -60
  88. data/lib/freeclimb/models/sms_ten_dlc_campaign.rb +121 -41
  89. data/lib/freeclimb/models/sms_ten_dlc_partner_campaign.rb +0 -44
  90. data/lib/freeclimb/models/sms_ten_dlc_partner_campaign_brand.rb +0 -20
  91. data/lib/freeclimb/models/sms_toll_free_campaign.rb +337 -0
  92. data/lib/freeclimb/models/sms_toll_free_campaigns_list_result.rb +311 -0
  93. data/lib/freeclimb/models/{remove_from_conference_all_of.rb → sms_toll_free_campaigns_list_result_all_of.rb} +14 -16
  94. data/lib/freeclimb/models/start_record_call.rb +1 -0
  95. data/lib/freeclimb/models/terminate_conference.rb +4 -23
  96. data/lib/freeclimb/models/{terminate_conference_all_of.rb → tfn.rb} +15 -14
  97. data/lib/freeclimb/models/transcribe_utterance.rb +11 -16
  98. data/lib/freeclimb/models/transcribe_utterance_all_of.rb +281 -0
  99. data/lib/freeclimb/models/{transcribe_utterance_record.rb → transcribe_utterance_all_of_record.rb} +3 -7
  100. data/lib/freeclimb/models/unpark.rb +1 -0
  101. data/lib/freeclimb/models/update_conference_participant_request.rb +0 -2
  102. data/lib/freeclimb/models/update_conference_request.rb +0 -2
  103. data/lib/freeclimb/version.rb +1 -1
  104. data/lib/freeclimb.rb +8 -4
  105. data/openapi.json +407 -88
  106. data/package.json +8 -0
  107. data/spec/api/default_api_spec.rb +215 -55
  108. data/spec/models/account_request_spec.rb +8 -6
  109. data/spec/models/account_result_spec.rb +28 -9
  110. data/spec/models/add_to_conference_spec.rb +21 -37
  111. data/spec/models/application_list_spec.rb +46 -22
  112. data/spec/models/application_request_spec.rb +13 -6
  113. data/spec/models/application_result_spec.rb +24 -9
  114. data/spec/models/available_number_list_spec.rb +46 -22
  115. data/spec/models/available_number_spec.rb +23 -10
  116. data/spec/models/buy_incoming_number_request_spec.rb +11 -7
  117. data/spec/models/call_list_spec.rb +46 -22
  118. data/spec/models/call_result_spec.rb +49 -15
  119. data/spec/models/capabilities_spec.rb +26 -11
  120. data/spec/models/conference_list_spec.rb +46 -22
  121. data/spec/models/conference_participant_list_spec.rb +46 -22
  122. data/spec/models/conference_participant_result_spec.rb +24 -9
  123. data/spec/models/conference_result_spec.rb +32 -9
  124. data/spec/models/create_conference_request_spec.rb +15 -6
  125. data/spec/models/create_conference_spec.rb +19 -7
  126. data/spec/models/create_web_rtc_token_spec.rb +231 -0
  127. data/spec/models/enqueue_spec.rb +16 -9
  128. data/spec/models/filter_logs_request_spec.rb +9 -7
  129. data/spec/models/get_digits_spec.rb +59 -35
  130. data/spec/models/get_speech_spec.rb +60 -24
  131. data/spec/models/hangup_spec.rb +7 -6
  132. data/spec/models/incoming_number_list_spec.rb +46 -22
  133. data/spec/models/incoming_number_request_spec.rb +9 -6
  134. data/spec/models/incoming_number_result_spec.rb +68 -13
  135. data/spec/models/log_list_spec.rb +46 -22
  136. data/spec/models/log_result_spec.rb +21 -9
  137. data/spec/models/make_call_request_spec.rb +26 -11
  138. data/spec/models/message_request_spec.rb +49 -35
  139. data/spec/models/message_result_spec.rb +64 -11
  140. data/spec/models/messages_list_spec.rb +46 -22
  141. data/spec/models/mutable_resource_model_spec.rb +15 -9
  142. data/spec/models/out_dial_spec.rb +33 -13
  143. data/spec/models/pagination_model_spec.rb +40 -21
  144. data/spec/models/park_spec.rb +13 -8
  145. data/spec/models/pause_spec.rb +14 -10
  146. data/spec/models/percl_command_spec.rb +6 -6
  147. data/spec/models/percl_script_spec.rb +11 -6
  148. data/spec/models/play_early_media_spec.rb +9 -7
  149. data/spec/models/play_spec.rb +17 -40
  150. data/spec/models/queue_list_spec.rb +46 -22
  151. data/spec/models/queue_member_list_spec.rb +46 -22
  152. data/spec/models/queue_member_spec.rb +21 -12
  153. data/spec/models/queue_request_spec.rb +13 -9
  154. data/spec/models/queue_result_spec.rb +37 -18
  155. data/spec/models/record_utterance_spec.rb +28 -13
  156. data/spec/models/recording_list_spec.rb +46 -22
  157. data/spec/models/recording_result_spec.rb +25 -12
  158. data/spec/models/redirect_spec.rb +9 -7
  159. data/spec/models/reject_spec.rb +7 -6
  160. data/spec/models/remove_from_conference_spec.rb +0 -133
  161. data/spec/models/say_spec.rb +18 -40
  162. data/spec/models/send_digits_spec.rb +17 -10
  163. data/spec/models/set_listen_spec.rb +8 -37
  164. data/spec/models/set_talk_spec.rb +8 -37
  165. data/spec/models/sms_spec.rb +16 -9
  166. data/spec/models/sms_ten_dlc_brand_spec.rb +38 -4
  167. data/spec/models/sms_ten_dlc_brands_list_result_spec.rb +46 -22
  168. data/spec/models/sms_ten_dlc_campaign_spec.rb +228 -4
  169. data/spec/models/sms_ten_dlc_campaigns_list_result_spec.rb +46 -22
  170. data/spec/models/sms_ten_dlc_partner_campaign_brand_spec.rb +25 -7
  171. data/spec/models/sms_ten_dlc_partner_campaign_spec.rb +56 -8
  172. data/spec/models/sms_ten_dlc_partner_campaigns_list_result_spec.rb +46 -22
  173. data/spec/models/sms_toll_free_campaign_spec.rb +382 -0
  174. data/spec/models/sms_toll_free_campaigns_list_result_spec.rb +395 -0
  175. data/spec/models/terminate_conference_spec.rb +0 -133
  176. data/spec/models/tfn_spec.rb +164 -0
  177. data/spec/models/{transcribe_utterance_record_spec.rb → transcribe_utterance_all_of_record_spec.rb} +78 -67
  178. data/spec/models/transcribe_utterance_spec.rb +37 -96
  179. data/spec/models/update_call_request_spec.rb +12 -7
  180. data/spec/models/update_conference_participant_request_spec.rb +10 -6
  181. data/spec/models/update_conference_request_spec.rb +15 -6
  182. data/yarn.lock +1292 -0
  183. metadata +105 -84
@@ -443,50 +443,6 @@ module Freeclimb
443
443
 
444
444
  if @account_id.nil?
445
445
  false
446
- elsif @campaign_id.nil?
447
- false
448
- elsif @status.nil?
449
- false
450
- elsif @create_date.nil?
451
- false
452
- elsif @brand_id.nil?
453
- false
454
- elsif @usecase.nil?
455
- false
456
- elsif @description.nil?
457
- false
458
- elsif @embedded_link.nil?
459
- false
460
- elsif @embedded_phone.nil?
461
- false
462
- elsif @affiliate_marketing.nil?
463
- false
464
- elsif @number_pool.nil?
465
- false
466
- elsif @age_gated.nil?
467
- false
468
- elsif @direct_lending.nil?
469
- false
470
- elsif @subscriber_optin.nil?
471
- false
472
- elsif @subscriber_optout.nil?
473
- false
474
- elsif @subscriber_help.nil?
475
- false
476
- elsif @sample1.nil?
477
- false
478
- elsif @optin_keywords.nil?
479
- false
480
- elsif @optout_keywords.nil?
481
- false
482
- elsif @help_keywords.nil?
483
- false
484
- elsif @optin_message.nil?
485
- false
486
- elsif @optout_message.nil?
487
- false
488
- elsif @brand.nil?
489
- false
490
446
  else
491
447
  list_invalid_properties.length() == 0
492
448
  end
@@ -205,26 +205,6 @@ module Freeclimb
205
205
 
206
206
  if @account_id.nil?
207
207
  false
208
- elsif @brand_id.nil?
209
- false
210
- elsif @first_name.nil?
211
- false
212
- elsif @last_name.nil?
213
- false
214
- elsif @display_name.nil?
215
- false
216
- elsif @company_name.nil?
217
- false
218
- elsif @phone.nil?
219
- false
220
- elsif @email.nil?
221
- false
222
- elsif @website.nil?
223
- false
224
- elsif @optional_attributes.nil?
225
- false
226
- elsif @evp_vetting_score.nil?
227
- false
228
208
  else
229
209
  list_invalid_properties.length() == 0
230
210
  end
@@ -0,0 +1,337 @@
1
+ =begin
2
+ #FreeClimb API
3
+
4
+ #FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@freeclimb.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.4.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Freeclimb
17
+ class SMSTollFreeCampaign
18
+ # ID of the account that created this toll-free campaign
19
+ attr_accessor :account_id
20
+
21
+ # Alphanumeric identifier used by the platform to identify this toll-free campaign
22
+ attr_accessor :campaign_id
23
+
24
+ attr_accessor :use_case
25
+
26
+ # Current toll-free campaign registration status.Possible values: UNREGISTERED,INITIATED,PENDING,DECLINED,REGISTERED. A newly created campaign defaults to INITIATED status.
27
+ attr_accessor :registration_status
28
+
29
+ attr_accessor :date_created
30
+
31
+ attr_accessor :date_updated
32
+
33
+ attr_accessor :revision
34
+
35
+ class EnumAttributeValidator
36
+ attr_reader :datatype
37
+ attr_reader :allowable_values
38
+
39
+ def initialize(datatype, allowable_values)
40
+ @allowable_values = allowable_values.map do |value|
41
+ case datatype.to_s
42
+ when /Integer/i
43
+ value.to_i
44
+ when /Float/i
45
+ value.to_f
46
+ else
47
+ value
48
+ end
49
+ end
50
+ end
51
+
52
+ def valid?(value)
53
+ !value || allowable_values.include?(value)
54
+ end
55
+ end
56
+
57
+ # Attribute mapping from ruby-style variable name to JSON key.
58
+ def self.attribute_map
59
+ {
60
+ :'account_id' => :'accountId',
61
+ :'campaign_id' => :'campaignId',
62
+ :'use_case' => :'useCase',
63
+ :'registration_status' => :'registrationStatus',
64
+ :'date_created' => :'dateCreated',
65
+ :'date_updated' => :'dateUpdated',
66
+ :'revision' => :'revision'
67
+ }
68
+ end
69
+
70
+ # Returns all the JSON keys this model knows about
71
+ def self.acceptable_attributes
72
+ attribute_map.values
73
+ end
74
+
75
+ # Attribute type mapping.
76
+ def self.openapi_types
77
+ {
78
+ :'account_id' => :'String',
79
+ :'campaign_id' => :'String',
80
+ :'use_case' => :'String',
81
+ :'registration_status' => :'String',
82
+ :'date_created' => :'String',
83
+ :'date_updated' => :'String',
84
+ :'revision' => :'Integer'
85
+ }
86
+ end
87
+
88
+ # List of attributes with nullable: true
89
+ def self.openapi_nullable
90
+ Set.new([
91
+ :'account_id',
92
+ ])
93
+ end
94
+
95
+ # Initializes the object
96
+ # @param [Hash] attributes Model attributes in the form of hash
97
+ def initialize(attributes = {})
98
+ if (!attributes.is_a?(Hash))
99
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Freeclimb::SMSTollFreeCampaign` initialize method"
100
+ end
101
+
102
+ # check to see if the attribute exists and convert string to symbol for hash key
103
+ attributes = attributes.each_with_object({}) { |(k, v), h|
104
+ if (!self.class.attribute_map.key?(k.to_sym))
105
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Freeclimb::SMSTollFreeCampaign`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
106
+ end
107
+ h[k.to_sym] = v
108
+ }
109
+
110
+ if attributes.key?(:'account_id')
111
+ self.account_id = attributes[:'account_id']
112
+ end
113
+
114
+ if attributes.key?(:'campaign_id')
115
+ self.campaign_id = attributes[:'campaign_id']
116
+ end
117
+
118
+ if attributes.key?(:'use_case')
119
+ self.use_case = attributes[:'use_case']
120
+ end
121
+
122
+ if attributes.key?(:'registration_status')
123
+ self.registration_status = attributes[:'registration_status']
124
+ end
125
+
126
+ if attributes.key?(:'date_created')
127
+ self.date_created = attributes[:'date_created']
128
+ end
129
+
130
+ if attributes.key?(:'date_updated')
131
+ self.date_updated = attributes[:'date_updated']
132
+ end
133
+
134
+ if attributes.key?(:'revision')
135
+ self.revision = attributes[:'revision']
136
+ end
137
+ end
138
+
139
+ # Show invalid properties with the reasons. Usually used together with valid?
140
+ # @return Array for valid properties with the reasons
141
+ def list_invalid_properties
142
+ invalid_properties = Array.new
143
+ if @campaign_id.nil?
144
+ invalid_properties.push('invalid value for "campaign_id", campaign_id cannot be nil.')
145
+ end
146
+
147
+ if @use_case.nil?
148
+ invalid_properties.push('invalid value for "use_case", use_case cannot be nil.')
149
+ end
150
+
151
+ if @registration_status.nil?
152
+ invalid_properties.push('invalid value for "registration_status", registration_status cannot be nil.')
153
+ end
154
+
155
+ if @date_created.nil?
156
+ invalid_properties.push('invalid value for "date_created", date_created cannot be nil.')
157
+ end
158
+
159
+ if @date_updated.nil?
160
+ invalid_properties.push('invalid value for "date_updated", date_updated cannot be nil.')
161
+ end
162
+
163
+ if @revision.nil?
164
+ invalid_properties.push('invalid value for "revision", revision cannot be nil.')
165
+ end
166
+
167
+ invalid_properties
168
+ end
169
+
170
+ # Check to see if the all the properties in the model are valid
171
+ # @return true if the model is valid
172
+ def valid?
173
+
174
+ if @account_id.nil?
175
+ false
176
+ else
177
+ list_invalid_properties.length() == 0
178
+ end
179
+ end
180
+
181
+ # Custom attribute writer method checking allowed values (enum).
182
+ # @param [Object] registration_status Object to be assigned
183
+ def registration_status=(registration_status)
184
+ validator = EnumAttributeValidator.new('String', ["UNREGISTERED", "INITIATED", "PENDING", "DECLINED", "REGISTERED"])
185
+ unless validator.valid?(registration_status)
186
+ fail ArgumentError, "invalid value for \"registration_status\", must be one of #{validator.allowable_values}."
187
+ end
188
+ @registration_status = registration_status
189
+ end
190
+
191
+ # Checks equality by comparing each attribute.
192
+ # @param [Object] Object to be compared
193
+ def ==(o)
194
+ return true if self.equal?(o)
195
+ self.class == o.class &&
196
+ account_id == o.account_id &&
197
+ campaign_id == o.campaign_id &&
198
+ use_case == o.use_case &&
199
+ registration_status == o.registration_status &&
200
+ date_created == o.date_created &&
201
+ date_updated == o.date_updated &&
202
+ revision == o.revision
203
+ end
204
+
205
+ # @see the `==` method
206
+ # @param [Object] Object to be compared
207
+ def eql?(o)
208
+ self == o
209
+ end
210
+
211
+ # Calculates hash code according to all attributes.
212
+ # @return [Integer] Hash code
213
+ def hash
214
+ [account_id, campaign_id, use_case, registration_status, date_created, date_updated, revision].hash
215
+ end
216
+
217
+ # Builds the object from hash
218
+ # @param [Hash] attributes Model attributes in the form of hash
219
+ # @return [Object] Returns the model itself
220
+ def self.build_from_hash(attributes)
221
+ new.build_from_hash(attributes)
222
+ end
223
+
224
+ # Builds the object from hash
225
+ # @param [Hash] attributes Model attributes in the form of hash
226
+ # @return [Object] Returns the model itself
227
+ def build_from_hash(attributes)
228
+ return nil unless attributes.is_a?(Hash)
229
+ self.class.openapi_types.each_pair do |key, type|
230
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
231
+ self.send("#{key}=", nil)
232
+ elsif type =~ /\AArray<(.*)>/i
233
+ # check to ensure the input is an array given that the attribute
234
+ # is documented as an array but the input is not
235
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
236
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
237
+ end
238
+ elsif !attributes[self.class.attribute_map[key]].nil?
239
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
240
+ end
241
+ end
242
+
243
+ self
244
+ end
245
+
246
+ # Deserializes the data based on type
247
+ # @param string type Data type
248
+ # @param string value Value to be deserialized
249
+ # @return [Object] Deserialized data
250
+ def _deserialize(type, value)
251
+ case type.to_sym
252
+ when :Time
253
+ Time.parse(value)
254
+ when :Date
255
+ Date.parse(value)
256
+ when :String
257
+ value.to_s
258
+ when :Integer
259
+ value.to_i
260
+ when :Float
261
+ value.to_f
262
+ when :Boolean
263
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
264
+ true
265
+ else
266
+ false
267
+ end
268
+ when :Object
269
+ # generic object (usually a Hash), return directly
270
+ value
271
+ when /\AArray<(?<inner_type>.+)>\z/
272
+ inner_type = Regexp.last_match[:inner_type]
273
+ value.map { |v| _deserialize(inner_type, v) }
274
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
275
+ k_type = Regexp.last_match[:k_type]
276
+ v_type = Regexp.last_match[:v_type]
277
+ {}.tap do |hash|
278
+ value.each do |k, v|
279
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
280
+ end
281
+ end
282
+ else # model
283
+ # models (e.g. Pet) or oneOf
284
+ klass = Freeclimb.const_get(type)
285
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
286
+ end
287
+ end
288
+
289
+ # Returns the string representation of the object
290
+ # @return [String] String presentation of the object
291
+ def to_s
292
+ to_hash.to_s
293
+ end
294
+
295
+ # to_body is an alias to to_hash (backward compatibility)
296
+ # @return [Hash] Returns the object in the form of hash
297
+ def to_body
298
+ to_hash
299
+ end
300
+
301
+ # Returns the object in the form of hash
302
+ # @return [Hash] Returns the object in the form of hash
303
+ def to_hash
304
+ hash = {}
305
+ self.class.attribute_map.each_pair do |attr, param|
306
+ value = self.send(attr)
307
+ if value.nil?
308
+ is_nullable = self.class.openapi_nullable.include?(attr)
309
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
310
+ end
311
+
312
+ hash[param] = _to_hash(value)
313
+ end
314
+ hash
315
+ end
316
+
317
+ # Outputs non-array value in the form of hash
318
+ # For object, use to_hash. Otherwise, just return the value
319
+ # @param [Object] value Any valid value
320
+ # @return [Hash] Returns the value in the form of hash
321
+ def _to_hash(value)
322
+ if value.is_a?(Array)
323
+ value.compact.map { |v| _to_hash(v) }
324
+ elsif value.is_a?(Hash)
325
+ {}.tap do |hash|
326
+ value.each { |k, v| hash[k] = _to_hash(v) }
327
+ end
328
+ elsif value.respond_to? :to_hash
329
+ value.to_hash
330
+ else
331
+ value
332
+ end
333
+ end
334
+
335
+ end
336
+
337
+ end