wallee-ruby-sdk 0.0.0 → 1.0.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.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +31 -0
  3. data/lib/wallee-ruby-sdk/version.rb +1 -1
  4. data/lib/wallee.rb +332 -0
  5. data/lib/wallee/api_client.rb +403 -0
  6. data/lib/wallee/api_error.rb +47 -0
  7. data/lib/wallee/configuration.rb +144 -0
  8. data/lib/wallee/models/account.rb +298 -0
  9. data/lib/wallee/models/account_create.rb +308 -0
  10. data/lib/wallee/models/account_state.rb +47 -0
  11. data/lib/wallee/models/account_type.rb +44 -0
  12. data/lib/wallee/models/account_update.rb +308 -0
  13. data/lib/wallee/models/address.rb +388 -0
  14. data/lib/wallee/models/address_create.rb +388 -0
  15. data/lib/wallee/models/application_user.rb +268 -0
  16. data/lib/wallee/models/application_user_create.rb +283 -0
  17. data/lib/wallee/models/application_user_create_with_mac_key.rb +278 -0
  18. data/lib/wallee/models/application_user_update.rb +278 -0
  19. data/lib/wallee/models/attachment_resource.rb +210 -0
  20. data/lib/wallee/models/charge.rb +318 -0
  21. data/lib/wallee/models/charge_attempt.rb +420 -0
  22. data/lib/wallee/models/charge_attempt_environment.rb +43 -0
  23. data/lib/wallee/models/charge_attempt_state.rb +44 -0
  24. data/lib/wallee/models/charge_flow.rb +270 -0
  25. data/lib/wallee/models/charge_flow_level.rb +318 -0
  26. data/lib/wallee/models/charge_flow_level_configuration.rb +288 -0
  27. data/lib/wallee/models/charge_flow_level_configuration_type.rb +222 -0
  28. data/lib/wallee/models/charge_flow_level_state.rb +44 -0
  29. data/lib/wallee/models/charge_state.rb +44 -0
  30. data/lib/wallee/models/charge_type.rb +44 -0
  31. data/lib/wallee/models/client_error.rb +238 -0
  32. data/lib/wallee/models/client_error_type.rb +44 -0
  33. data/lib/wallee/models/condition.rb +258 -0
  34. data/lib/wallee/models/condition_type.rb +222 -0
  35. data/lib/wallee/models/connector_invocation.rb +278 -0
  36. data/lib/wallee/models/connector_invocation_stage.rb +45 -0
  37. data/lib/wallee/models/creation_entity_state.rb +46 -0
  38. data/lib/wallee/models/criteria_operator.rb +50 -0
  39. data/lib/wallee/models/customers_presence.rb +44 -0
  40. data/lib/wallee/models/data_collection_type.rb +43 -0
  41. data/lib/wallee/models/database_translated_string.rb +222 -0
  42. data/lib/wallee/models/database_translated_string_create.rb +222 -0
  43. data/lib/wallee/models/database_translated_string_item.rb +218 -0
  44. data/lib/wallee/models/database_translated_string_item_create.rb +223 -0
  45. data/lib/wallee/models/delivery_indication.rb +318 -0
  46. data/lib/wallee/models/delivery_indication_decision_reason.rb +222 -0
  47. data/lib/wallee/models/delivery_indication_state.rb +45 -0
  48. data/lib/wallee/models/document_template.rb +278 -0
  49. data/lib/wallee/models/document_template_type.rb +242 -0
  50. data/lib/wallee/models/email_sender.rb +278 -0
  51. data/lib/wallee/models/email_sender_type.rb +232 -0
  52. data/lib/wallee/models/email_template.rb +324 -0
  53. data/lib/wallee/models/email_template_type.rb +288 -0
  54. data/lib/wallee/models/entity_query.rb +240 -0
  55. data/lib/wallee/models/entity_query_filter.rb +245 -0
  56. data/lib/wallee/models/entity_query_filter_type.rb +44 -0
  57. data/lib/wallee/models/entity_query_order_by.rb +208 -0
  58. data/lib/wallee/models/entity_query_order_by_type.rb +43 -0
  59. data/lib/wallee/models/entity_reference.rb +188 -0
  60. data/lib/wallee/models/failure_category.rb +46 -0
  61. data/lib/wallee/models/failure_reason.rb +244 -0
  62. data/lib/wallee/models/feature.rb +274 -0
  63. data/lib/wallee/models/gender.rb +43 -0
  64. data/lib/wallee/models/human_user.rb +318 -0
  65. data/lib/wallee/models/human_user_create.rb +328 -0
  66. data/lib/wallee/models/human_user_update.rb +328 -0
  67. data/lib/wallee/models/installment_calculated_plan.rb +242 -0
  68. data/lib/wallee/models/installment_calculated_slice.rb +220 -0
  69. data/lib/wallee/models/installment_payment.rb +280 -0
  70. data/lib/wallee/models/installment_payment_slice.rb +300 -0
  71. data/lib/wallee/models/installment_payment_slice_state.rb +48 -0
  72. data/lib/wallee/models/installment_payment_state.rb +49 -0
  73. data/lib/wallee/models/installment_plan_configuration.rb +362 -0
  74. data/lib/wallee/models/installment_plan_slice_configuration.rb +288 -0
  75. data/lib/wallee/models/label.rb +238 -0
  76. data/lib/wallee/models/label_descriptor.rb +274 -0
  77. data/lib/wallee/models/label_descriptor_category.rb +43 -0
  78. data/lib/wallee/models/label_descriptor_group.rb +232 -0
  79. data/lib/wallee/models/label_descriptor_type.rb +222 -0
  80. data/lib/wallee/models/legal_organization_form.rb +242 -0
  81. data/lib/wallee/models/line_item.rb +342 -0
  82. data/lib/wallee/models/line_item_attribute.rb +208 -0
  83. data/lib/wallee/models/line_item_attribute_create.rb +208 -0
  84. data/lib/wallee/models/line_item_create.rb +367 -0
  85. data/lib/wallee/models/line_item_reduction.rb +218 -0
  86. data/lib/wallee/models/line_item_reduction_create.rb +233 -0
  87. data/lib/wallee/models/line_item_type.rb +45 -0
  88. data/lib/wallee/models/localized_string.rb +218 -0
  89. data/lib/wallee/models/manual_task.rb +290 -0
  90. data/lib/wallee/models/manual_task_action.rb +230 -0
  91. data/lib/wallee/models/manual_task_action_style.rb +44 -0
  92. data/lib/wallee/models/manual_task_state.rb +44 -0
  93. data/lib/wallee/models/manual_task_type.rb +234 -0
  94. data/lib/wallee/models/one_click_payment_mode.rb +44 -0
  95. data/lib/wallee/models/payment_connector.rb +306 -0
  96. data/lib/wallee/models/payment_connector_configuration.rb +322 -0
  97. data/lib/wallee/models/payment_connector_feature.rb +218 -0
  98. data/lib/wallee/models/payment_method.rb +256 -0
  99. data/lib/wallee/models/payment_method_brand.rb +252 -0
  100. data/lib/wallee/models/payment_method_configuration.rb +328 -0
  101. data/lib/wallee/models/payment_primary_risk_taker.rb +44 -0
  102. data/lib/wallee/models/payment_processor.rb +278 -0
  103. data/lib/wallee/models/payment_processor_configuration.rb +258 -0
  104. data/lib/wallee/models/permission.rb +286 -0
  105. data/lib/wallee/models/persistable_currency_amount.rb +208 -0
  106. data/lib/wallee/models/persistable_currency_amount_update.rb +208 -0
  107. data/lib/wallee/models/product_fee_type.rb +44 -0
  108. data/lib/wallee/models/product_metered_fee.rb +278 -0
  109. data/lib/wallee/models/product_metered_fee_update.rb +288 -0
  110. data/lib/wallee/models/product_metered_tier_fee.rb +240 -0
  111. data/lib/wallee/models/product_metered_tier_fee_update.rb +250 -0
  112. data/lib/wallee/models/product_metered_tier_pricing.rb +43 -0
  113. data/lib/wallee/models/product_period_fee.rb +280 -0
  114. data/lib/wallee/models/product_period_fee_update.rb +290 -0
  115. data/lib/wallee/models/product_setup_fee.rb +294 -0
  116. data/lib/wallee/models/product_setup_fee_update.rb +304 -0
  117. data/lib/wallee/models/refund.rb +450 -0
  118. data/lib/wallee/models/refund_create.rb +470 -0
  119. data/lib/wallee/models/refund_state.rb +46 -0
  120. data/lib/wallee/models/refund_type.rb +45 -0
  121. data/lib/wallee/models/rendered_document.rb +230 -0
  122. data/lib/wallee/models/resource_path.rb +258 -0
  123. data/lib/wallee/models/resource_state.rb +44 -0
  124. data/lib/wallee/models/rest_country.rb +240 -0
  125. data/lib/wallee/models/rest_country_state.rb +228 -0
  126. data/lib/wallee/models/rest_currency.rb +218 -0
  127. data/lib/wallee/models/rest_language.rb +248 -0
  128. data/lib/wallee/models/scope.rb +302 -0
  129. data/lib/wallee/models/server_error.rb +218 -0
  130. data/lib/wallee/models/space.rb +330 -0
  131. data/lib/wallee/models/space_address.rb +318 -0
  132. data/lib/wallee/models/space_address_setter.rb +318 -0
  133. data/lib/wallee/models/space_create.rb +350 -0
  134. data/lib/wallee/models/space_reference.rb +258 -0
  135. data/lib/wallee/models/space_reference_state.rb +46 -0
  136. data/lib/wallee/models/space_update.rb +340 -0
  137. data/lib/wallee/models/space_view.rb +258 -0
  138. data/lib/wallee/models/static_value.rb +234 -0
  139. data/lib/wallee/models/subscriber.rb +332 -0
  140. data/lib/wallee/models/subscriber_active.rb +342 -0
  141. data/lib/wallee/models/subscriber_create.rb +347 -0
  142. data/lib/wallee/models/subscriber_update.rb +342 -0
  143. data/lib/wallee/models/subscription.rb +338 -0
  144. data/lib/wallee/models/subscription_change_request.rb +250 -0
  145. data/lib/wallee/models/subscription_charge.rb +390 -0
  146. data/lib/wallee/models/subscription_charge_create.rb +405 -0
  147. data/lib/wallee/models/subscription_charge_processing_type.rb +43 -0
  148. data/lib/wallee/models/subscription_charge_state.rb +46 -0
  149. data/lib/wallee/models/subscription_charge_type.rb +43 -0
  150. data/lib/wallee/models/subscription_create_request.rb +245 -0
  151. data/lib/wallee/models/subscription_ledger_entry.rb +350 -0
  152. data/lib/wallee/models/subscription_ledger_entry_create.rb +375 -0
  153. data/lib/wallee/models/subscription_ledger_entry_state.rb +44 -0
  154. data/lib/wallee/models/subscription_metric.rb +268 -0
  155. data/lib/wallee/models/subscription_metric_active.rb +278 -0
  156. data/lib/wallee/models/subscription_metric_create.rb +288 -0
  157. data/lib/wallee/models/subscription_metric_type.rb +232 -0
  158. data/lib/wallee/models/subscription_metric_update.rb +278 -0
  159. data/lib/wallee/models/subscription_metric_usage_report.rb +298 -0
  160. data/lib/wallee/models/subscription_metric_usage_report_create.rb +318 -0
  161. data/lib/wallee/models/subscription_pending.rb +348 -0
  162. data/lib/wallee/models/subscription_period_bill.rb +298 -0
  163. data/lib/wallee/models/subscription_period_bill_state.rb +43 -0
  164. data/lib/wallee/models/subscription_product.rb +300 -0
  165. data/lib/wallee/models/subscription_product_active.rb +310 -0
  166. data/lib/wallee/models/subscription_product_component.rb +298 -0
  167. data/lib/wallee/models/subscription_product_component_group.rb +258 -0
  168. data/lib/wallee/models/subscription_product_component_group_update.rb +268 -0
  169. data/lib/wallee/models/subscription_product_component_reference.rb +258 -0
  170. data/lib/wallee/models/subscription_product_component_reference_state.rb +45 -0
  171. data/lib/wallee/models/subscription_product_component_update.rb +308 -0
  172. data/lib/wallee/models/subscription_product_create.rb +315 -0
  173. data/lib/wallee/models/subscription_product_retirement.rb +258 -0
  174. data/lib/wallee/models/subscription_product_retirement_create.rb +263 -0
  175. data/lib/wallee/models/subscription_product_state.rb +46 -0
  176. data/lib/wallee/models/subscription_product_version.rb +390 -0
  177. data/lib/wallee/models/subscription_product_version_pending.rb +310 -0
  178. data/lib/wallee/models/subscription_product_version_retirement.rb +258 -0
  179. data/lib/wallee/models/subscription_product_version_retirement_create.rb +263 -0
  180. data/lib/wallee/models/subscription_product_version_state.rb +46 -0
  181. data/lib/wallee/models/subscription_state.rb +48 -0
  182. data/lib/wallee/models/subscription_suspension.rb +328 -0
  183. data/lib/wallee/models/subscription_suspension_action.rb +43 -0
  184. data/lib/wallee/models/subscription_suspension_create.rb +343 -0
  185. data/lib/wallee/models/subscription_suspension_reason.rb +44 -0
  186. data/lib/wallee/models/subscription_suspension_running.rb +328 -0
  187. data/lib/wallee/models/subscription_suspension_state.rb +43 -0
  188. data/lib/wallee/models/subscription_update.rb +348 -0
  189. data/lib/wallee/models/subscription_version.rb +370 -0
  190. data/lib/wallee/models/subscription_version_state.rb +47 -0
  191. data/lib/wallee/models/tax.rb +208 -0
  192. data/lib/wallee/models/tax_class.rb +258 -0
  193. data/lib/wallee/models/tax_create.rb +218 -0
  194. data/lib/wallee/models/tenant_database.rb +218 -0
  195. data/lib/wallee/models/token.rb +308 -0
  196. data/lib/wallee/models/token_create.rb +323 -0
  197. data/lib/wallee/models/token_update.rb +318 -0
  198. data/lib/wallee/models/token_version.rb +360 -0
  199. data/lib/wallee/models/token_version_state.rb +44 -0
  200. data/lib/wallee/models/transaction.rb +626 -0
  201. data/lib/wallee/models/transaction_aware_entity.rb +218 -0
  202. data/lib/wallee/models/transaction_completion.rb +390 -0
  203. data/lib/wallee/models/transaction_completion_mode.rb +44 -0
  204. data/lib/wallee/models/transaction_completion_state.rb +45 -0
  205. data/lib/wallee/models/transaction_create.rb +646 -0
  206. data/lib/wallee/models/transaction_group.rb +268 -0
  207. data/lib/wallee/models/transaction_group_state.rb +44 -0
  208. data/lib/wallee/models/transaction_invoice.rb +380 -0
  209. data/lib/wallee/models/transaction_invoice_replacement.rb +250 -0
  210. data/lib/wallee/models/transaction_invoice_state.rb +48 -0
  211. data/lib/wallee/models/transaction_line_item_update_request.rb +215 -0
  212. data/lib/wallee/models/transaction_line_item_version.rb +320 -0
  213. data/lib/wallee/models/transaction_pending.rb +636 -0
  214. data/lib/wallee/models/transaction_state.rb +51 -0
  215. data/lib/wallee/models/transaction_user_interface_type.rb +44 -0
  216. data/lib/wallee/models/transaction_void.rb +380 -0
  217. data/lib/wallee/models/transaction_void_mode.rb +43 -0
  218. data/lib/wallee/models/transaction_void_state.rb +45 -0
  219. data/lib/wallee/models/user.rb +248 -0
  220. data/lib/wallee/models/user_type.rb +45 -0
  221. data/lib/wallee/models/webhook_identity.rb +248 -0
  222. data/lib/wallee/models/webhook_listener.rb +300 -0
  223. data/lib/wallee/models/webhook_listener_create.rb +330 -0
  224. data/lib/wallee/models/webhook_listener_entity.rb +220 -0
  225. data/lib/wallee/models/webhook_listener_update.rb +310 -0
  226. data/lib/wallee/models/webhook_url.rb +258 -0
  227. data/lib/wallee/models/webhook_url_create.rb +273 -0
  228. data/lib/wallee/models/webhook_url_update.rb +268 -0
  229. data/lib/wallee/services/account_service_api.rb +372 -0
  230. data/lib/wallee/services/application_user_service_api.rb +372 -0
  231. data/lib/wallee/services/charge_attempt_service_api.rb +217 -0
  232. data/lib/wallee/services/charge_flow_level_service_api.rb +280 -0
  233. data/lib/wallee/services/charge_flow_service_api.rb +352 -0
  234. data/lib/wallee/services/condition_type_service_api.rb +143 -0
  235. data/lib/wallee/services/country_service_api.rb +85 -0
  236. data/lib/wallee/services/country_state_service_api.rb +143 -0
  237. data/lib/wallee/services/currency_service_api.rb +85 -0
  238. data/lib/wallee/services/delivery_indication_service_api.rb +341 -0
  239. data/lib/wallee/services/document_template_service_api.rb +217 -0
  240. data/lib/wallee/services/document_template_type_service_api.rb +143 -0
  241. data/lib/wallee/services/email_sender_service_api.rb +219 -0
  242. data/lib/wallee/services/email_sender_type_service_api.rb +143 -0
  243. data/lib/wallee/services/email_template_service_api.rb +217 -0
  244. data/lib/wallee/services/email_template_type_service_api.rb +143 -0
  245. data/lib/wallee/services/human_user_service_api.rb +372 -0
  246. data/lib/wallee/services/installment_payment_service_api.rb +287 -0
  247. data/lib/wallee/services/installment_payment_slice_service_api.rb +219 -0
  248. data/lib/wallee/services/installment_plan_calculation_service_api.rb +95 -0
  249. data/lib/wallee/services/installment_plan_configuration_service_api.rb +219 -0
  250. data/lib/wallee/services/installment_plan_slice_configuration_service_api.rb +219 -0
  251. data/lib/wallee/services/label_description_group_service_api.rb +143 -0
  252. data/lib/wallee/services/label_description_service_api.rb +143 -0
  253. data/lib/wallee/services/language_service_api.rb +85 -0
  254. data/lib/wallee/services/manual_task_service_api.rb +217 -0
  255. data/lib/wallee/services/payment_connector_configuration_service_api.rb +217 -0
  256. data/lib/wallee/services/payment_connector_service_api.rb +143 -0
  257. data/lib/wallee/services/payment_method_configuration_service_api.rb +217 -0
  258. data/lib/wallee/services/payment_method_service_api.rb +143 -0
  259. data/lib/wallee/services/payment_processor_configuration_service_api.rb +217 -0
  260. data/lib/wallee/services/payment_processor_service_api.rb +143 -0
  261. data/lib/wallee/services/permission_service_api.rb +143 -0
  262. data/lib/wallee/services/refund_service_api.rb +468 -0
  263. data/lib/wallee/services/space_service_api.rb +372 -0
  264. data/lib/wallee/services/static_value_service_api.rb +143 -0
  265. data/lib/wallee/services/subscriber_service_api.rb +402 -0
  266. data/lib/wallee/services/subscription_charge_service_api.rb +342 -0
  267. data/lib/wallee/services/subscription_ledger_entry_service_api.rb +279 -0
  268. data/lib/wallee/services/subscription_metric_service_api.rb +402 -0
  269. data/lib/wallee/services/subscription_metric_usage_service_api.rb +279 -0
  270. data/lib/wallee/services/subscription_period_bill_service_api.rb +217 -0
  271. data/lib/wallee/services/subscription_product_component_group_service_api.rb +402 -0
  272. data/lib/wallee/services/subscription_product_component_service_api.rb +402 -0
  273. data/lib/wallee/services/subscription_product_fee_tier_service_api.rb +402 -0
  274. data/lib/wallee/services/subscription_product_metered_fee_service_api.rb +402 -0
  275. data/lib/wallee/services/subscription_product_period_fee_service_api.rb +402 -0
  276. data/lib/wallee/services/subscription_product_retirement_service_api.rb +279 -0
  277. data/lib/wallee/services/subscription_product_service_api.rb +341 -0
  278. data/lib/wallee/services/subscription_product_setup_fee_service_api.rb +402 -0
  279. data/lib/wallee/services/subscription_product_version_retirement_service_api.rb +279 -0
  280. data/lib/wallee/services/subscription_product_version_service_api.rb +404 -0
  281. data/lib/wallee/services/subscription_service_api.rb +608 -0
  282. data/lib/wallee/services/subscription_suspension_service_api.rb +342 -0
  283. data/lib/wallee/services/subscription_version_service_api.rb +217 -0
  284. data/lib/wallee/services/token_service_api.rb +402 -0
  285. data/lib/wallee/services/token_version_service_api.rb +280 -0
  286. data/lib/wallee/services/transaction_completion_service_api.rb +343 -0
  287. data/lib/wallee/services/transaction_invoice_service_api.rb +473 -0
  288. data/lib/wallee/services/transaction_service_api.rb +1263 -0
  289. data/lib/wallee/services/transaction_void_service_api.rb +343 -0
  290. data/lib/wallee/services/webhook_listener_service_api.rb +402 -0
  291. data/lib/wallee/services/webhook_url_service_api.rb +402 -0
  292. data/lib/wallee/version.rb +24 -0
  293. metadata +292 -2
@@ -0,0 +1,390 @@
1
+ =begin
2
+ Wallee API: 1.0.0
3
+
4
+ The wallee API allows an easy interaction with the wallee web service.
5
+
6
+
7
+
8
+ Licensed under the Apache License, Version 2.0 (the "License");
9
+ you may not use this file except in compliance with the License.
10
+ You may obtain a copy of the License at
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ Unless required by applicable law or agreed to in writing, software
15
+ distributed under the License is distributed on an "AS IS" BASIS,
16
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ See the License for the specific language governing permissions and
18
+ limitations under the License.
19
+
20
+ =end
21
+
22
+ require 'date'
23
+
24
+ module Wallee
25
+ # The subscription charge represents a single charge carried out for a particular subscription.
26
+ class SubscriptionCharge
27
+ #
28
+ attr_accessor :created_on
29
+
30
+ #
31
+ attr_accessor :discarded_by
32
+
33
+ #
34
+ attr_accessor :discarded_on
35
+
36
+ # The external id helps to identify the entity and a subsequent creation of an entity with the same ID will not create a new entity.
37
+ attr_accessor :external_id
38
+
39
+ #
40
+ attr_accessor :failed_on
41
+
42
+ # The user will be redirected to failed URL when the transaction could not be authorized or completed. In case no failed URL is specified a default failed page will be displayed.
43
+ attr_accessor :failed_url
44
+
45
+ # The ID is the primary key of the entity. The ID identifies the entity uniquely.
46
+ attr_accessor :id
47
+
48
+ #
49
+ attr_accessor :ledger_entries
50
+
51
+ # The linked space id holds the ID of the space to which the entity belongs to.
52
+ attr_accessor :linked_space_id
53
+
54
+ #
55
+ attr_accessor :planned_execution_date
56
+
57
+ # The planned purge date indicates when the entity is permanently removed. When the date is null the entity is not planned to be removed.
58
+ attr_accessor :planned_purge_date
59
+
60
+ #
61
+ attr_accessor :processing_type
62
+
63
+ #
64
+ attr_accessor :reference
65
+
66
+ #
67
+ attr_accessor :state
68
+
69
+ # The field subscription indicates the subscription to which the charge belongs to.
70
+ attr_accessor :subscription
71
+
72
+ #
73
+ attr_accessor :succeed_on
74
+
75
+ # The user will be redirected to success URL when the transaction could be authorized or completed. In case no success URL is specified a default success page will be displayed.
76
+ attr_accessor :success_url
77
+
78
+ #
79
+ attr_accessor :transaction
80
+
81
+ #
82
+ attr_accessor :type
83
+
84
+ # The version number indicates the version of the entity. The version is incremented whenever the entity is changed.
85
+ attr_accessor :version
86
+
87
+
88
+ # Attribute mapping from ruby-style variable name to JSON key.
89
+ def self.attribute_map
90
+ {
91
+ :'created_on' => :'createdOn',
92
+ :'discarded_by' => :'discardedBy',
93
+ :'discarded_on' => :'discardedOn',
94
+ :'external_id' => :'externalId',
95
+ :'failed_on' => :'failedOn',
96
+ :'failed_url' => :'failedUrl',
97
+ :'id' => :'id',
98
+ :'ledger_entries' => :'ledgerEntries',
99
+ :'linked_space_id' => :'linkedSpaceId',
100
+ :'planned_execution_date' => :'plannedExecutionDate',
101
+ :'planned_purge_date' => :'plannedPurgeDate',
102
+ :'processing_type' => :'processingType',
103
+ :'reference' => :'reference',
104
+ :'state' => :'state',
105
+ :'subscription' => :'subscription',
106
+ :'succeed_on' => :'succeedOn',
107
+ :'success_url' => :'successUrl',
108
+ :'transaction' => :'transaction',
109
+ :'type' => :'type',
110
+ :'version' => :'version'
111
+ }
112
+ end
113
+
114
+ # Attribute type mapping.
115
+ def self.swagger_types
116
+ {
117
+ :'created_on' => :'DateTime',
118
+ :'discarded_by' => :'Integer',
119
+ :'discarded_on' => :'DateTime',
120
+ :'external_id' => :'String',
121
+ :'failed_on' => :'DateTime',
122
+ :'failed_url' => :'String',
123
+ :'id' => :'Integer',
124
+ :'ledger_entries' => :'Array<SubscriptionLedgerEntry>',
125
+ :'linked_space_id' => :'Integer',
126
+ :'planned_execution_date' => :'DateTime',
127
+ :'planned_purge_date' => :'DateTime',
128
+ :'processing_type' => :'SubscriptionChargeProcessingType',
129
+ :'reference' => :'String',
130
+ :'state' => :'SubscriptionChargeState',
131
+ :'subscription' => :'Subscription',
132
+ :'succeed_on' => :'DateTime',
133
+ :'success_url' => :'String',
134
+ :'transaction' => :'Transaction',
135
+ :'type' => :'SubscriptionChargeType',
136
+ :'version' => :'Integer'
137
+ }
138
+ end
139
+
140
+ # Initializes the object
141
+ # @param [Hash] attributes Model attributes in the form of hash
142
+ def initialize(attributes = {})
143
+ return unless attributes.is_a?(Hash)
144
+
145
+ # convert string to symbol for hash key
146
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
147
+
148
+ if attributes.has_key?(:'createdOn')
149
+ self.created_on = attributes[:'createdOn']
150
+ end
151
+
152
+ if attributes.has_key?(:'discardedBy')
153
+ self.discarded_by = attributes[:'discardedBy']
154
+ end
155
+
156
+ if attributes.has_key?(:'discardedOn')
157
+ self.discarded_on = attributes[:'discardedOn']
158
+ end
159
+
160
+ if attributes.has_key?(:'externalId')
161
+ self.external_id = attributes[:'externalId']
162
+ end
163
+
164
+ if attributes.has_key?(:'failedOn')
165
+ self.failed_on = attributes[:'failedOn']
166
+ end
167
+
168
+ if attributes.has_key?(:'failedUrl')
169
+ self.failed_url = attributes[:'failedUrl']
170
+ end
171
+
172
+ if attributes.has_key?(:'id')
173
+ self.id = attributes[:'id']
174
+ end
175
+
176
+ if attributes.has_key?(:'ledgerEntries')
177
+ if (value = attributes[:'ledgerEntries']).is_a?(Array)
178
+ self.ledger_entries = value
179
+ end
180
+ end
181
+
182
+ if attributes.has_key?(:'linkedSpaceId')
183
+ self.linked_space_id = attributes[:'linkedSpaceId']
184
+ end
185
+
186
+ if attributes.has_key?(:'plannedExecutionDate')
187
+ self.planned_execution_date = attributes[:'plannedExecutionDate']
188
+ end
189
+
190
+ if attributes.has_key?(:'plannedPurgeDate')
191
+ self.planned_purge_date = attributes[:'plannedPurgeDate']
192
+ end
193
+
194
+ if attributes.has_key?(:'processingType')
195
+ self.processing_type = attributes[:'processingType']
196
+ end
197
+
198
+ if attributes.has_key?(:'reference')
199
+ self.reference = attributes[:'reference']
200
+ end
201
+
202
+ if attributes.has_key?(:'state')
203
+ self.state = attributes[:'state']
204
+ end
205
+
206
+ if attributes.has_key?(:'subscription')
207
+ self.subscription = attributes[:'subscription']
208
+ end
209
+
210
+ if attributes.has_key?(:'succeedOn')
211
+ self.succeed_on = attributes[:'succeedOn']
212
+ end
213
+
214
+ if attributes.has_key?(:'successUrl')
215
+ self.success_url = attributes[:'successUrl']
216
+ end
217
+
218
+ if attributes.has_key?(:'transaction')
219
+ self.transaction = attributes[:'transaction']
220
+ end
221
+
222
+ if attributes.has_key?(:'type')
223
+ self.type = attributes[:'type']
224
+ end
225
+
226
+ if attributes.has_key?(:'version')
227
+ self.version = attributes[:'version']
228
+ end
229
+
230
+ end
231
+
232
+ # Show invalid properties with the reasons. Usually used together with valid?
233
+ # @return Array for valid properies with the reasons
234
+ def list_invalid_properties
235
+ invalid_properties = Array.new
236
+ return invalid_properties
237
+ end
238
+
239
+ # Check to see if the all the properties in the model are valid
240
+ # @return true if the model is valid
241
+ def valid?
242
+ return true
243
+ end
244
+
245
+ # Checks equality by comparing each attribute.
246
+ # @param [Object] Object to be compared
247
+ def ==(o)
248
+ return true if self.equal?(o)
249
+ self.class == o.class &&
250
+ created_on == o.created_on &&
251
+ discarded_by == o.discarded_by &&
252
+ discarded_on == o.discarded_on &&
253
+ external_id == o.external_id &&
254
+ failed_on == o.failed_on &&
255
+ failed_url == o.failed_url &&
256
+ id == o.id &&
257
+ ledger_entries == o.ledger_entries &&
258
+ linked_space_id == o.linked_space_id &&
259
+ planned_execution_date == o.planned_execution_date &&
260
+ planned_purge_date == o.planned_purge_date &&
261
+ processing_type == o.processing_type &&
262
+ reference == o.reference &&
263
+ state == o.state &&
264
+ subscription == o.subscription &&
265
+ succeed_on == o.succeed_on &&
266
+ success_url == o.success_url &&
267
+ transaction == o.transaction &&
268
+ type == o.type &&
269
+ version == o.version
270
+ end
271
+
272
+ # @see the `==` method
273
+ # @param [Object] Object to be compared
274
+ def eql?(o)
275
+ self == o
276
+ end
277
+
278
+ # Calculates hash code according to all attributes.
279
+ # @return [Fixnum] Hash code
280
+ def hash
281
+ [created_on, discarded_by, discarded_on, external_id, failed_on, failed_url, id, ledger_entries, linked_space_id, planned_execution_date, planned_purge_date, processing_type, reference, state, subscription, succeed_on, success_url, transaction, type, version].hash
282
+ end
283
+
284
+ # Builds the object from hash
285
+ # @param [Hash] attributes Model attributes in the form of hash
286
+ # @return [Object] Returns the model itself
287
+ def build_from_hash(attributes)
288
+ return nil unless attributes.is_a?(Hash)
289
+ self.class.swagger_types.each_pair do |key, type|
290
+ if type =~ /\AArray<(.*)>/i
291
+ # check to ensure the input is an array given that the the attribute
292
+ # is documented as an array but the input is not
293
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
294
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
295
+ end
296
+ elsif !attributes[self.class.attribute_map[key]].nil?
297
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
298
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
299
+ end
300
+
301
+ self
302
+ end
303
+
304
+ # Deserializes the data based on type
305
+ # @param string type Data type
306
+ # @param string value Value to be deserialized
307
+ # @return [Object] Deserialized data
308
+ def _deserialize(type, value)
309
+ case type.to_sym
310
+ when :DateTime
311
+ DateTime.parse(value)
312
+ when :Date
313
+ Date.parse(value)
314
+ when :String
315
+ value.to_s
316
+ when :Integer
317
+ value.to_i
318
+ when :Float
319
+ value.to_f
320
+ when :BOOLEAN
321
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
322
+ true
323
+ else
324
+ false
325
+ end
326
+ when :Object
327
+ # generic object (usually a Hash), return directly
328
+ value
329
+ when /\AArray<(?<inner_type>.+)>\z/
330
+ inner_type = Regexp.last_match[:inner_type]
331
+ value.map { |v| _deserialize(inner_type, v) }
332
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
333
+ k_type = Regexp.last_match[:k_type]
334
+ v_type = Regexp.last_match[:v_type]
335
+ {}.tap do |hash|
336
+ value.each do |k, v|
337
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
338
+ end
339
+ end
340
+ else # model
341
+ temp_model = Wallee.const_get(type).new
342
+ temp_model.build_from_hash(value)
343
+ end
344
+ end
345
+
346
+ # Returns the string representation of the object
347
+ # @return [String] String presentation of the object
348
+ def to_s
349
+ to_hash.to_s
350
+ end
351
+
352
+ # to_body is an alias to to_hash (backward compatibility)
353
+ # @return [Hash] Returns the object in the form of hash
354
+ def to_body
355
+ to_hash
356
+ end
357
+
358
+ # Returns the object in the form of hash
359
+ # @return [Hash] Returns the object in the form of hash
360
+ def to_hash
361
+ hash = {}
362
+ self.class.attribute_map.each_pair do |attr, param|
363
+ value = self.send(attr)
364
+ next if value.nil?
365
+ hash[param] = _to_hash(value)
366
+ end
367
+ hash
368
+ end
369
+
370
+ # Outputs non-array value in the form of hash
371
+ # For object, use to_hash. Otherwise, just return the value
372
+ # @param [Object] value Any valid value
373
+ # @return [Hash] Returns the value in the form of hash
374
+ def _to_hash(value)
375
+ if value.is_a?(Array)
376
+ value.compact.map{ |v| _to_hash(v) }
377
+ elsif value.is_a?(Hash)
378
+ {}.tap do |hash|
379
+ value.each { |k, v| hash[k] = _to_hash(v) }
380
+ end
381
+ elsif value.respond_to? :to_hash
382
+ value.to_hash
383
+ else
384
+ value
385
+ end
386
+ end
387
+
388
+ end
389
+
390
+ end
@@ -0,0 +1,405 @@
1
+ =begin
2
+ Wallee API: 1.0.0
3
+
4
+ The wallee API allows an easy interaction with the wallee web service.
5
+
6
+
7
+
8
+ Licensed under the Apache License, Version 2.0 (the "License");
9
+ you may not use this file except in compliance with the License.
10
+ You may obtain a copy of the License at
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ Unless required by applicable law or agreed to in writing, software
15
+ distributed under the License is distributed on an "AS IS" BASIS,
16
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ See the License for the specific language governing permissions and
18
+ limitations under the License.
19
+
20
+ =end
21
+
22
+ require 'date'
23
+
24
+ module Wallee
25
+ # The subscription charge represents a single charge carried out for a particular subscription.
26
+ class SubscriptionChargeCreate
27
+ #
28
+ attr_accessor :created_on
29
+
30
+ #
31
+ attr_accessor :discarded_by
32
+
33
+ #
34
+ attr_accessor :discarded_on
35
+
36
+ # The external id helps to identify the entity and a subsequent creation of an entity with the same ID will not create a new entity.
37
+ attr_accessor :external_id
38
+
39
+ #
40
+ attr_accessor :failed_on
41
+
42
+ # The user will be redirected to failed URL when the transaction could not be authorized or completed. In case no failed URL is specified a default failed page will be displayed.
43
+ attr_accessor :failed_url
44
+
45
+ # The ID is the primary key of the entity. The ID identifies the entity uniquely.
46
+ attr_accessor :id
47
+
48
+ #
49
+ attr_accessor :ledger_entries
50
+
51
+ # The linked space id holds the ID of the space to which the entity belongs to.
52
+ attr_accessor :linked_space_id
53
+
54
+ #
55
+ attr_accessor :planned_execution_date
56
+
57
+ # The planned purge date indicates when the entity is permanently removed. When the date is null the entity is not planned to be removed.
58
+ attr_accessor :planned_purge_date
59
+
60
+ #
61
+ attr_accessor :processing_type
62
+
63
+ #
64
+ attr_accessor :reference
65
+
66
+ #
67
+ attr_accessor :state
68
+
69
+ # The field subscription indicates the subscription to which the charge belongs to.
70
+ attr_accessor :subscription
71
+
72
+ #
73
+ attr_accessor :succeed_on
74
+
75
+ # The user will be redirected to success URL when the transaction could be authorized or completed. In case no success URL is specified a default success page will be displayed.
76
+ attr_accessor :success_url
77
+
78
+ #
79
+ attr_accessor :transaction
80
+
81
+ #
82
+ attr_accessor :type
83
+
84
+ # The version number indicates the version of the entity. The version is incremented whenever the entity is changed.
85
+ attr_accessor :version
86
+
87
+
88
+ # Attribute mapping from ruby-style variable name to JSON key.
89
+ def self.attribute_map
90
+ {
91
+ :'created_on' => :'createdOn',
92
+ :'discarded_by' => :'discardedBy',
93
+ :'discarded_on' => :'discardedOn',
94
+ :'external_id' => :'externalId',
95
+ :'failed_on' => :'failedOn',
96
+ :'failed_url' => :'failedUrl',
97
+ :'id' => :'id',
98
+ :'ledger_entries' => :'ledgerEntries',
99
+ :'linked_space_id' => :'linkedSpaceId',
100
+ :'planned_execution_date' => :'plannedExecutionDate',
101
+ :'planned_purge_date' => :'plannedPurgeDate',
102
+ :'processing_type' => :'processingType',
103
+ :'reference' => :'reference',
104
+ :'state' => :'state',
105
+ :'subscription' => :'subscription',
106
+ :'succeed_on' => :'succeedOn',
107
+ :'success_url' => :'successUrl',
108
+ :'transaction' => :'transaction',
109
+ :'type' => :'type',
110
+ :'version' => :'version'
111
+ }
112
+ end
113
+
114
+ # Attribute type mapping.
115
+ def self.swagger_types
116
+ {
117
+ :'created_on' => :'DateTime',
118
+ :'discarded_by' => :'Integer',
119
+ :'discarded_on' => :'DateTime',
120
+ :'external_id' => :'String',
121
+ :'failed_on' => :'DateTime',
122
+ :'failed_url' => :'String',
123
+ :'id' => :'Integer',
124
+ :'ledger_entries' => :'Array<SubscriptionLedgerEntry>',
125
+ :'linked_space_id' => :'Integer',
126
+ :'planned_execution_date' => :'DateTime',
127
+ :'planned_purge_date' => :'DateTime',
128
+ :'processing_type' => :'SubscriptionChargeProcessingType',
129
+ :'reference' => :'String',
130
+ :'state' => :'SubscriptionChargeState',
131
+ :'subscription' => :'Integer',
132
+ :'succeed_on' => :'DateTime',
133
+ :'success_url' => :'String',
134
+ :'transaction' => :'Transaction',
135
+ :'type' => :'SubscriptionChargeType',
136
+ :'version' => :'Integer'
137
+ }
138
+ end
139
+
140
+ # Initializes the object
141
+ # @param [Hash] attributes Model attributes in the form of hash
142
+ def initialize(attributes = {})
143
+ return unless attributes.is_a?(Hash)
144
+
145
+ # convert string to symbol for hash key
146
+ attributes = attributes.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
147
+
148
+ if attributes.has_key?(:'createdOn')
149
+ self.created_on = attributes[:'createdOn']
150
+ end
151
+
152
+ if attributes.has_key?(:'discardedBy')
153
+ self.discarded_by = attributes[:'discardedBy']
154
+ end
155
+
156
+ if attributes.has_key?(:'discardedOn')
157
+ self.discarded_on = attributes[:'discardedOn']
158
+ end
159
+
160
+ if attributes.has_key?(:'externalId')
161
+ self.external_id = attributes[:'externalId']
162
+ end
163
+
164
+ if attributes.has_key?(:'failedOn')
165
+ self.failed_on = attributes[:'failedOn']
166
+ end
167
+
168
+ if attributes.has_key?(:'failedUrl')
169
+ self.failed_url = attributes[:'failedUrl']
170
+ end
171
+
172
+ if attributes.has_key?(:'id')
173
+ self.id = attributes[:'id']
174
+ end
175
+
176
+ if attributes.has_key?(:'ledgerEntries')
177
+ if (value = attributes[:'ledgerEntries']).is_a?(Array)
178
+ self.ledger_entries = value
179
+ end
180
+ end
181
+
182
+ if attributes.has_key?(:'linkedSpaceId')
183
+ self.linked_space_id = attributes[:'linkedSpaceId']
184
+ end
185
+
186
+ if attributes.has_key?(:'plannedExecutionDate')
187
+ self.planned_execution_date = attributes[:'plannedExecutionDate']
188
+ end
189
+
190
+ if attributes.has_key?(:'plannedPurgeDate')
191
+ self.planned_purge_date = attributes[:'plannedPurgeDate']
192
+ end
193
+
194
+ if attributes.has_key?(:'processingType')
195
+ self.processing_type = attributes[:'processingType']
196
+ end
197
+
198
+ if attributes.has_key?(:'reference')
199
+ self.reference = attributes[:'reference']
200
+ end
201
+
202
+ if attributes.has_key?(:'state')
203
+ self.state = attributes[:'state']
204
+ end
205
+
206
+ if attributes.has_key?(:'subscription')
207
+ self.subscription = attributes[:'subscription']
208
+ end
209
+
210
+ if attributes.has_key?(:'succeedOn')
211
+ self.succeed_on = attributes[:'succeedOn']
212
+ end
213
+
214
+ if attributes.has_key?(:'successUrl')
215
+ self.success_url = attributes[:'successUrl']
216
+ end
217
+
218
+ if attributes.has_key?(:'transaction')
219
+ self.transaction = attributes[:'transaction']
220
+ end
221
+
222
+ if attributes.has_key?(:'type')
223
+ self.type = attributes[:'type']
224
+ end
225
+
226
+ if attributes.has_key?(:'version')
227
+ self.version = attributes[:'version']
228
+ end
229
+
230
+ end
231
+
232
+ # Show invalid properties with the reasons. Usually used together with valid?
233
+ # @return Array for valid properies with the reasons
234
+ def list_invalid_properties
235
+ invalid_properties = Array.new
236
+ if @external_id.nil?
237
+ invalid_properties.push("invalid value for 'external_id', external_id cannot be nil.")
238
+ end
239
+
240
+ if @processing_type.nil?
241
+ invalid_properties.push("invalid value for 'processing_type', processing_type cannot be nil.")
242
+ end
243
+
244
+ if @subscription.nil?
245
+ invalid_properties.push("invalid value for 'subscription', subscription cannot be nil.")
246
+ end
247
+
248
+ return invalid_properties
249
+ end
250
+
251
+ # Check to see if the all the properties in the model are valid
252
+ # @return true if the model is valid
253
+ def valid?
254
+ return false if @external_id.nil?
255
+ return false if @processing_type.nil?
256
+ return false if @subscription.nil?
257
+ return true
258
+ end
259
+
260
+ # Checks equality by comparing each attribute.
261
+ # @param [Object] Object to be compared
262
+ def ==(o)
263
+ return true if self.equal?(o)
264
+ self.class == o.class &&
265
+ created_on == o.created_on &&
266
+ discarded_by == o.discarded_by &&
267
+ discarded_on == o.discarded_on &&
268
+ external_id == o.external_id &&
269
+ failed_on == o.failed_on &&
270
+ failed_url == o.failed_url &&
271
+ id == o.id &&
272
+ ledger_entries == o.ledger_entries &&
273
+ linked_space_id == o.linked_space_id &&
274
+ planned_execution_date == o.planned_execution_date &&
275
+ planned_purge_date == o.planned_purge_date &&
276
+ processing_type == o.processing_type &&
277
+ reference == o.reference &&
278
+ state == o.state &&
279
+ subscription == o.subscription &&
280
+ succeed_on == o.succeed_on &&
281
+ success_url == o.success_url &&
282
+ transaction == o.transaction &&
283
+ type == o.type &&
284
+ version == o.version
285
+ end
286
+
287
+ # @see the `==` method
288
+ # @param [Object] Object to be compared
289
+ def eql?(o)
290
+ self == o
291
+ end
292
+
293
+ # Calculates hash code according to all attributes.
294
+ # @return [Fixnum] Hash code
295
+ def hash
296
+ [created_on, discarded_by, discarded_on, external_id, failed_on, failed_url, id, ledger_entries, linked_space_id, planned_execution_date, planned_purge_date, processing_type, reference, state, subscription, succeed_on, success_url, transaction, type, version].hash
297
+ end
298
+
299
+ # Builds the object from hash
300
+ # @param [Hash] attributes Model attributes in the form of hash
301
+ # @return [Object] Returns the model itself
302
+ def build_from_hash(attributes)
303
+ return nil unless attributes.is_a?(Hash)
304
+ self.class.swagger_types.each_pair do |key, type|
305
+ if type =~ /\AArray<(.*)>/i
306
+ # check to ensure the input is an array given that the the attribute
307
+ # is documented as an array but the input is not
308
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
309
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
310
+ end
311
+ elsif !attributes[self.class.attribute_map[key]].nil?
312
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
313
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
314
+ end
315
+
316
+ self
317
+ end
318
+
319
+ # Deserializes the data based on type
320
+ # @param string type Data type
321
+ # @param string value Value to be deserialized
322
+ # @return [Object] Deserialized data
323
+ def _deserialize(type, value)
324
+ case type.to_sym
325
+ when :DateTime
326
+ DateTime.parse(value)
327
+ when :Date
328
+ Date.parse(value)
329
+ when :String
330
+ value.to_s
331
+ when :Integer
332
+ value.to_i
333
+ when :Float
334
+ value.to_f
335
+ when :BOOLEAN
336
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
337
+ true
338
+ else
339
+ false
340
+ end
341
+ when :Object
342
+ # generic object (usually a Hash), return directly
343
+ value
344
+ when /\AArray<(?<inner_type>.+)>\z/
345
+ inner_type = Regexp.last_match[:inner_type]
346
+ value.map { |v| _deserialize(inner_type, v) }
347
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
348
+ k_type = Regexp.last_match[:k_type]
349
+ v_type = Regexp.last_match[:v_type]
350
+ {}.tap do |hash|
351
+ value.each do |k, v|
352
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
353
+ end
354
+ end
355
+ else # model
356
+ temp_model = Wallee.const_get(type).new
357
+ temp_model.build_from_hash(value)
358
+ end
359
+ end
360
+
361
+ # Returns the string representation of the object
362
+ # @return [String] String presentation of the object
363
+ def to_s
364
+ to_hash.to_s
365
+ end
366
+
367
+ # to_body is an alias to to_hash (backward compatibility)
368
+ # @return [Hash] Returns the object in the form of hash
369
+ def to_body
370
+ to_hash
371
+ end
372
+
373
+ # Returns the object in the form of hash
374
+ # @return [Hash] Returns the object in the form of hash
375
+ def to_hash
376
+ hash = {}
377
+ self.class.attribute_map.each_pair do |attr, param|
378
+ value = self.send(attr)
379
+ next if value.nil?
380
+ hash[param] = _to_hash(value)
381
+ end
382
+ hash
383
+ end
384
+
385
+ # Outputs non-array value in the form of hash
386
+ # For object, use to_hash. Otherwise, just return the value
387
+ # @param [Object] value Any valid value
388
+ # @return [Hash] Returns the value in the form of hash
389
+ def _to_hash(value)
390
+ if value.is_a?(Array)
391
+ value.compact.map{ |v| _to_hash(v) }
392
+ elsif value.is_a?(Hash)
393
+ {}.tap do |hash|
394
+ value.each { |k, v| hash[k] = _to_hash(v) }
395
+ end
396
+ elsif value.respond_to? :to_hash
397
+ value.to_hash
398
+ else
399
+ value
400
+ end
401
+ end
402
+
403
+ end
404
+
405
+ end