univapay-apimatic-sdk 0.0.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 (272) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +224 -0
  4. data/bin/console +15 -0
  5. data/lib/univapay_client_sdk/api_helper.rb +10 -0
  6. data/lib/univapay_client_sdk/apis/base_api.rb +67 -0
  7. data/lib/univapay_client_sdk/apis/cancels_api.rb +293 -0
  8. data/lib/univapay_client_sdk/apis/charges_api.rb +903 -0
  9. data/lib/univapay_client_sdk/apis/merchants_api.rb +57 -0
  10. data/lib/univapay_client_sdk/apis/refunds_api.rb +298 -0
  11. data/lib/univapay_client_sdk/apis/stores_api.rb +126 -0
  12. data/lib/univapay_client_sdk/apis/subscriptions_api.rb +1014 -0
  13. data/lib/univapay_client_sdk/apis/transaction_tokens_api.rb +455 -0
  14. data/lib/univapay_client_sdk/apis/webhooks_api.rb +463 -0
  15. data/lib/univapay_client_sdk/client.rb +116 -0
  16. data/lib/univapay_client_sdk/configuration.rb +178 -0
  17. data/lib/univapay_client_sdk/events/unknown_event.rb +32 -0
  18. data/lib/univapay_client_sdk/events/webhooks/bank_transfer_handler.rb +37 -0
  19. data/lib/univapay_client_sdk/events/webhooks/cancel_handler.rb +37 -0
  20. data/lib/univapay_client_sdk/events/webhooks/charge_finished_handler.rb +37 -0
  21. data/lib/univapay_client_sdk/events/webhooks/charge_updated_handler.rb +37 -0
  22. data/lib/univapay_client_sdk/events/webhooks/customs_handler.rb +37 -0
  23. data/lib/univapay_client_sdk/events/webhooks/recurring_token_deleted_handler.rb +37 -0
  24. data/lib/univapay_client_sdk/events/webhooks/refund_handler.rb +37 -0
  25. data/lib/univapay_client_sdk/events/webhooks/subscription_canceled_handler.rb +37 -0
  26. data/lib/univapay_client_sdk/events/webhooks/subscription_completed_handler.rb +37 -0
  27. data/lib/univapay_client_sdk/events/webhooks/subscription_created_handler.rb +37 -0
  28. data/lib/univapay_client_sdk/events/webhooks/subscription_failure_handler.rb +37 -0
  29. data/lib/univapay_client_sdk/events/webhooks/subscription_payment_handler.rb +37 -0
  30. data/lib/univapay_client_sdk/events/webhooks/subscription_suspended_handler.rb +37 -0
  31. data/lib/univapay_client_sdk/events/webhooks/token_created_handler.rb +37 -0
  32. data/lib/univapay_client_sdk/events/webhooks/token_cvv_auth_check_updated_handler.rb +37 -0
  33. data/lib/univapay_client_sdk/events/webhooks/token_cvv_auth_updated_handler.rb +37 -0
  34. data/lib/univapay_client_sdk/events/webhooks/token_replaced_handler.rb +37 -0
  35. data/lib/univapay_client_sdk/events/webhooks/token_three_ds_updated_handler.rb +37 -0
  36. data/lib/univapay_client_sdk/events/webhooks/token_updated_handler.rb +37 -0
  37. data/lib/univapay_client_sdk/exceptions/api_error_exception.rb +199 -0
  38. data/lib/univapay_client_sdk/exceptions/api_exception.rb +21 -0
  39. data/lib/univapay_client_sdk/http/api_response.rb +19 -0
  40. data/lib/univapay_client_sdk/http/auth/oauth_2.rb +53 -0
  41. data/lib/univapay_client_sdk/http/http_call_back.rb +10 -0
  42. data/lib/univapay_client_sdk/http/http_method_enum.rb +10 -0
  43. data/lib/univapay_client_sdk/http/http_request.rb +10 -0
  44. data/lib/univapay_client_sdk/http/http_response.rb +10 -0
  45. data/lib/univapay_client_sdk/http/proxy_settings.rb +22 -0
  46. data/lib/univapay_client_sdk/logging/configuration/api_logging_configuration.rb +186 -0
  47. data/lib/univapay_client_sdk/logging/sdk_logger.rb +17 -0
  48. data/lib/univapay_client_sdk/models/api_error_detail.rb +87 -0
  49. data/lib/univapay_client_sdk/models/api_error_status.rb +26 -0
  50. data/lib/univapay_client_sdk/models/bank_transfer_event.rb +27 -0
  51. data/lib/univapay_client_sdk/models/bank_transfer_ledger.rb +199 -0
  52. data/lib/univapay_client_sdk/models/bank_transfer_ledger_bank_ledger_type.rb +36 -0
  53. data/lib/univapay_client_sdk/models/bank_transfer_ledger_list.rb +104 -0
  54. data/lib/univapay_client_sdk/models/bank_transfer_ledger_mode.rb +36 -0
  55. data/lib/univapay_client_sdk/models/bank_transfer_payment_status.rb +44 -0
  56. data/lib/univapay_client_sdk/models/bank_transfer_status_data.rb +229 -0
  57. data/lib/univapay_client_sdk/models/bank_transfer_status_webhook_callback.rb +134 -0
  58. data/lib/univapay_client_sdk/models/bank_transfer_status_webhook_callback_extension.rb +75 -0
  59. data/lib/univapay_client_sdk/models/base_bank_transfer_data.rb +100 -0
  60. data/lib/univapay_client_sdk/models/base_konbini_data.rb +99 -0
  61. data/lib/univapay_client_sdk/models/base_konbini_data_convenience_store.rb +60 -0
  62. data/lib/univapay_client_sdk/models/base_model.rb +110 -0
  63. data/lib/univapay_client_sdk/models/base_online_data.rb +123 -0
  64. data/lib/univapay_client_sdk/models/base_online_data_brand.rb +48 -0
  65. data/lib/univapay_client_sdk/models/base_online_data_call_method.rb +52 -0
  66. data/lib/univapay_client_sdk/models/base_online_data_os_type.rb +36 -0
  67. data/lib/univapay_client_sdk/models/base_online_data_user_identifier_source.rb +36 -0
  68. data/lib/univapay_client_sdk/models/cancel.rb +183 -0
  69. data/lib/univapay_client_sdk/models/cancel_create_request.rb +77 -0
  70. data/lib/univapay_client_sdk/models/cancel_event.rb +26 -0
  71. data/lib/univapay_client_sdk/models/cancel_list.rb +94 -0
  72. data/lib/univapay_client_sdk/models/cancel_status.rb +44 -0
  73. data/lib/univapay_client_sdk/models/cancel_update_request.rb +76 -0
  74. data/lib/univapay_client_sdk/models/cancel_webhook_callback.rb +132 -0
  75. data/lib/univapay_client_sdk/models/cancel_webhook_callback_extension.rb +74 -0
  76. data/lib/univapay_client_sdk/models/card_processor_installment_config.rb +89 -0
  77. data/lib/univapay_client_sdk/models/charge.rb +411 -0
  78. data/lib/univapay_client_sdk/models/charge_capture_request.rb +84 -0
  79. data/lib/univapay_client_sdk/models/charge_create_request.rb +179 -0
  80. data/lib/univapay_client_sdk/models/charge_create_request_client_metadata.rb +76 -0
  81. data/lib/univapay_client_sdk/models/charge_create_request_redirect.rb +75 -0
  82. data/lib/univapay_client_sdk/models/charge_create_request_three_ds.rb +88 -0
  83. data/lib/univapay_client_sdk/models/charge_create_request_three_ds_mode.rb +44 -0
  84. data/lib/univapay_client_sdk/models/charge_finished_webhook_callback.rb +131 -0
  85. data/lib/univapay_client_sdk/models/charge_list.rb +104 -0
  86. data/lib/univapay_client_sdk/models/charge_mode.rb +36 -0
  87. data/lib/univapay_client_sdk/models/charge_redirect.rb +96 -0
  88. data/lib/univapay_client_sdk/models/charge_status.rb +56 -0
  89. data/lib/univapay_client_sdk/models/charge_three_ds.rb +97 -0
  90. data/lib/univapay_client_sdk/models/charge_transaction_token_type.rb +40 -0
  91. data/lib/univapay_client_sdk/models/charge_update_request.rb +75 -0
  92. data/lib/univapay_client_sdk/models/charge_updated_webhook_callback.rb +131 -0
  93. data/lib/univapay_client_sdk/models/cursor_direction_query.rb +36 -0
  94. data/lib/univapay_client_sdk/models/customs_declaration_create_request.rb +106 -0
  95. data/lib/univapay_client_sdk/models/customs_declaration_event.rb +27 -0
  96. data/lib/univapay_client_sdk/models/customs_declaration_patch_request.rb +77 -0
  97. data/lib/univapay_client_sdk/models/customs_declaration_webhook_callback.rb +135 -0
  98. data/lib/univapay_client_sdk/models/customs_declaration_webhook_callback_extension.rb +76 -0
  99. data/lib/univapay_client_sdk/models/customs_declaration_webhook_data.rb +232 -0
  100. data/lib/univapay_client_sdk/models/customs_declaration_webhook_declaration.rb +121 -0
  101. data/lib/univapay_client_sdk/models/customs_declaration_webhook_error.rb +127 -0
  102. data/lib/univapay_client_sdk/models/customs_declaration_webhook_other_error.rb +120 -0
  103. data/lib/univapay_client_sdk/models/customs_declaration_webhook_result.rb +125 -0
  104. data/lib/univapay_client_sdk/models/customs_declaration_webhook_status.rb +44 -0
  105. data/lib/univapay_client_sdk/models/generic_metadata.rb +111 -0
  106. data/lib/univapay_client_sdk/models/installment_fixed_cycles.rb +70 -0
  107. data/lib/univapay_client_sdk/models/installment_plan_type.rb +36 -0
  108. data/lib/univapay_client_sdk/models/issuer_token.rb +177 -0
  109. data/lib/univapay_client_sdk/models/issuer_token_call_method.rb +51 -0
  110. data/lib/univapay_client_sdk/models/issuer_token_payload.rb +105 -0
  111. data/lib/univapay_client_sdk/models/issuer_token_payment_type.rb +36 -0
  112. data/lib/univapay_client_sdk/models/merchant.rb +179 -0
  113. data/lib/univapay_client_sdk/models/merchant_webhook_bank_transfer_configuration.rb +342 -0
  114. data/lib/univapay_client_sdk/models/merchant_webhook_card_brand_percent_fees.rb +167 -0
  115. data/lib/univapay_client_sdk/models/merchant_webhook_card_configuration.rb +301 -0
  116. data/lib/univapay_client_sdk/models/merchant_webhook_checkout_configuration.rb +87 -0
  117. data/lib/univapay_client_sdk/models/merchant_webhook_checkout_toggle.rb +77 -0
  118. data/lib/univapay_client_sdk/models/merchant_webhook_configuration.rb +505 -0
  119. data/lib/univapay_client_sdk/models/merchant_webhook_convenience_configuration.rb +88 -0
  120. data/lib/univapay_client_sdk/models/merchant_webhook_customer_management_configuration.rb +99 -0
  121. data/lib/univapay_client_sdk/models/merchant_webhook_installment_plan_configuration.rb +139 -0
  122. data/lib/univapay_client_sdk/models/merchant_webhook_limit_charge_by_card_configuration.rb +88 -0
  123. data/lib/univapay_client_sdk/models/merchant_webhook_limit_refund_by_sales_configuration.rb +100 -0
  124. data/lib/univapay_client_sdk/models/merchant_webhook_money_amount.rb +85 -0
  125. data/lib/univapay_client_sdk/models/merchant_webhook_online_configuration.rb +77 -0
  126. data/lib/univapay_client_sdk/models/merchant_webhook_paidy_configuration.rb +77 -0
  127. data/lib/univapay_client_sdk/models/merchant_webhook_qr_merchant_configuration.rb +77 -0
  128. data/lib/univapay_client_sdk/models/merchant_webhook_qr_scan_configuration.rb +93 -0
  129. data/lib/univapay_client_sdk/models/merchant_webhook_recurring_cvv_confirmation_config.rb +97 -0
  130. data/lib/univapay_client_sdk/models/merchant_webhook_recurring_token_configuration.rb +109 -0
  131. data/lib/univapay_client_sdk/models/merchant_webhook_security_configuration.rb +234 -0
  132. data/lib/univapay_client_sdk/models/merchant_webhook_subscription_configuration.rb +138 -0
  133. data/lib/univapay_client_sdk/models/merchant_webhook_subscription_plan_configuration.rb +138 -0
  134. data/lib/univapay_client_sdk/models/merchant_webhook_transfer_schedule_configuration.rb +159 -0
  135. data/lib/univapay_client_sdk/models/merchant_webhook_user_transactions_configuration.rb +349 -0
  136. data/lib/univapay_client_sdk/models/mode_query.rb +36 -0
  137. data/lib/univapay_client_sdk/models/payment_error.rb +178 -0
  138. data/lib/univapay_client_sdk/models/plan_settings_type.rb +36 -0
  139. data/lib/univapay_client_sdk/models/recurring_token_deleted_webhook_callback.rb +132 -0
  140. data/lib/univapay_client_sdk/models/refund.rb +240 -0
  141. data/lib/univapay_client_sdk/models/refund_create_request.rb +118 -0
  142. data/lib/univapay_client_sdk/models/refund_event.rb +26 -0
  143. data/lib/univapay_client_sdk/models/refund_list.rb +104 -0
  144. data/lib/univapay_client_sdk/models/refund_reason_request.rb +42 -0
  145. data/lib/univapay_client_sdk/models/refund_reason_response.rb +62 -0
  146. data/lib/univapay_client_sdk/models/refund_status.rb +47 -0
  147. data/lib/univapay_client_sdk/models/refund_update_request.rb +99 -0
  148. data/lib/univapay_client_sdk/models/refund_webhook_callback.rb +132 -0
  149. data/lib/univapay_client_sdk/models/refund_webhook_callback_extension.rb +74 -0
  150. data/lib/univapay_client_sdk/models/restrict_ip_after_failed_charge_config.rb +99 -0
  151. data/lib/univapay_client_sdk/models/store.rb +119 -0
  152. data/lib/univapay_client_sdk/models/store_list.rb +104 -0
  153. data/lib/univapay_client_sdk/models/store_list_item.rb +114 -0
  154. data/lib/univapay_client_sdk/models/subscription.rb +310 -0
  155. data/lib/univapay_client_sdk/models/subscription_canceled_webhook_callback.rb +132 -0
  156. data/lib/univapay_client_sdk/models/subscription_completed_webhook_callback.rb +132 -0
  157. data/lib/univapay_client_sdk/models/subscription_create_request.rb +216 -0
  158. data/lib/univapay_client_sdk/models/subscription_created_webhook_callback.rb +132 -0
  159. data/lib/univapay_client_sdk/models/subscription_failure_webhook_callback.rb +132 -0
  160. data/lib/univapay_client_sdk/models/subscription_installment_plan.rb +86 -0
  161. data/lib/univapay_client_sdk/models/subscription_list.rb +104 -0
  162. data/lib/univapay_client_sdk/models/subscription_list_item.rb +352 -0
  163. data/lib/univapay_client_sdk/models/subscription_next_payment.rb +222 -0
  164. data/lib/univapay_client_sdk/models/subscription_patch_payment_request.rb +117 -0
  165. data/lib/univapay_client_sdk/models/subscription_patch_token_request.rb +79 -0
  166. data/lib/univapay_client_sdk/models/subscription_payment.rb +185 -0
  167. data/lib/univapay_client_sdk/models/subscription_payment_list.rb +94 -0
  168. data/lib/univapay_client_sdk/models/subscription_payment_webhook_callback.rb +132 -0
  169. data/lib/univapay_client_sdk/models/subscription_period.rb +56 -0
  170. data/lib/univapay_client_sdk/models/subscription_plan_settings.rb +98 -0
  171. data/lib/univapay_client_sdk/models/subscription_schedule_settings.rb +132 -0
  172. data/lib/univapay_client_sdk/models/subscription_status.rb +56 -0
  173. data/lib/univapay_client_sdk/models/subscription_suspend_request.rb +79 -0
  174. data/lib/univapay_client_sdk/models/subscription_suspended_webhook_callback.rb +132 -0
  175. data/lib/univapay_client_sdk/models/subscription_terminate_with_status.rb +36 -0
  176. data/lib/univapay_client_sdk/models/subscription_termination_mode.rb +36 -0
  177. data/lib/univapay_client_sdk/models/subscription_update_next_payment.rb +104 -0
  178. data/lib/univapay_client_sdk/models/subscription_update_request.rb +134 -0
  179. data/lib/univapay_client_sdk/models/subscription_update_schedule_settings.rb +110 -0
  180. data/lib/univapay_client_sdk/models/subscription_update_status.rb +37 -0
  181. data/lib/univapay_client_sdk/models/subscription_user_data.rb +134 -0
  182. data/lib/univapay_client_sdk/models/suspend_schedule_settings.rb +78 -0
  183. data/lib/univapay_client_sdk/models/three_ds_issuer_token.rb +116 -0
  184. data/lib/univapay_client_sdk/models/three_ds_issuer_token_call_method.rb +26 -0
  185. data/lib/univapay_client_sdk/models/three_ds_issuer_token_payment_type.rb +26 -0
  186. data/lib/univapay_client_sdk/models/token_create_bank_transfer_data.rb +122 -0
  187. data/lib/univapay_client_sdk/models/token_create_card_data.rb +231 -0
  188. data/lib/univapay_client_sdk/models/token_create_card_data_cvv_authorize.rb +95 -0
  189. data/lib/univapay_client_sdk/models/token_create_card_data_three_ds.rb +97 -0
  190. data/lib/univapay_client_sdk/models/token_create_konbini_data.rb +147 -0
  191. data/lib/univapay_client_sdk/models/token_create_online_data.rb +142 -0
  192. data/lib/univapay_client_sdk/models/token_create_phone_number.rb +104 -0
  193. data/lib/univapay_client_sdk/models/token_created_webhook_callback.rb +131 -0
  194. data/lib/univapay_client_sdk/models/token_cvv_auth_check_updated_webhook_callback.rb +132 -0
  195. data/lib/univapay_client_sdk/models/token_cvv_auth_updated_webhook_callback.rb +132 -0
  196. data/lib/univapay_client_sdk/models/token_replaced_webhook_callback.rb +131 -0
  197. data/lib/univapay_client_sdk/models/token_response_bank_transfer_data.rb +181 -0
  198. data/lib/univapay_client_sdk/models/token_response_card_data.rb +129 -0
  199. data/lib/univapay_client_sdk/models/token_response_card_data_billing.rb +153 -0
  200. data/lib/univapay_client_sdk/models/token_response_card_data_card.rb +187 -0
  201. data/lib/univapay_client_sdk/models/token_response_card_data_cvv_authorize.rb +132 -0
  202. data/lib/univapay_client_sdk/models/token_response_card_data_cvv_authorize_check.rb +118 -0
  203. data/lib/univapay_client_sdk/models/token_response_card_data_three_ds.rb +142 -0
  204. data/lib/univapay_client_sdk/models/token_response_card_data_three_ds_status.rb +48 -0
  205. data/lib/univapay_client_sdk/models/token_response_konbini_data.rb +135 -0
  206. data/lib/univapay_client_sdk/models/token_response_online_data.rb +158 -0
  207. data/lib/univapay_client_sdk/models/token_response_phone_number.rb +96 -0
  208. data/lib/univapay_client_sdk/models/token_three_ds_updated_webhook_callback.rb +132 -0
  209. data/lib/univapay_client_sdk/models/token_updated_webhook_callback.rb +131 -0
  210. data/lib/univapay_client_sdk/models/transaction_token.rb +250 -0
  211. data/lib/univapay_client_sdk/models/transaction_token_create_request.rb +161 -0
  212. data/lib/univapay_client_sdk/models/transaction_token_create_request_metadata.rb +124 -0
  213. data/lib/univapay_client_sdk/models/transaction_token_create_request_payment_type.rb +44 -0
  214. data/lib/univapay_client_sdk/models/transaction_token_create_request_type.rb +40 -0
  215. data/lib/univapay_client_sdk/models/transaction_token_list.rb +104 -0
  216. data/lib/univapay_client_sdk/models/transaction_token_list_item.rb +204 -0
  217. data/lib/univapay_client_sdk/models/transaction_token_list_item_user_data.rb +96 -0
  218. data/lib/univapay_client_sdk/models/transaction_token_mode.rb +36 -0
  219. data/lib/univapay_client_sdk/models/transaction_token_payment_type.rb +48 -0
  220. data/lib/univapay_client_sdk/models/transaction_token_type.rb +40 -0
  221. data/lib/univapay_client_sdk/models/transaction_token_update_request.rb +95 -0
  222. data/lib/univapay_client_sdk/models/transaction_token_update_request_data.rb +184 -0
  223. data/lib/univapay_client_sdk/models/transaction_token_update_request_data_phone_number.rb +86 -0
  224. data/lib/univapay_client_sdk/models/webhook.rb +191 -0
  225. data/lib/univapay_client_sdk/models/webhook_callback_envelope.rb +98 -0
  226. data/lib/univapay_client_sdk/models/webhook_create_request.rb +97 -0
  227. data/lib/univapay_client_sdk/models/webhook_event.rb +166 -0
  228. data/lib/univapay_client_sdk/models/webhook_event_list.rb +94 -0
  229. data/lib/univapay_client_sdk/models/webhook_list.rb +94 -0
  230. data/lib/univapay_client_sdk/models/webhook_trigger.rb +104 -0
  231. data/lib/univapay_client_sdk/models/webhook_update_request.rb +108 -0
  232. data/lib/univapay_client_sdk/utilities/date_time_helper.rb +11 -0
  233. data/lib/univapay_client_sdk/utilities/file_wrapper.rb +28 -0
  234. data/lib/univapay_client_sdk/utilities/union_type_lookup.rb +242 -0
  235. data/lib/univapay_client_sdk.rb +322 -0
  236. data/test/apis/api_test_base.rb +23 -0
  237. data/test/apis/test_cancels_api.rb +162 -0
  238. data/test/apis/test_charges_api.rb +564 -0
  239. data/test/apis/test_merchants_api.rb +50 -0
  240. data/test/apis/test_refunds_api.rb +172 -0
  241. data/test/apis/test_stores_api.rb +86 -0
  242. data/test/apis/test_subscriptions_api.rb +579 -0
  243. data/test/apis/test_transaction_tokens_api.rb +305 -0
  244. data/test/apis/test_webhooks_api.rb +245 -0
  245. data/test/events/webhooks/test_bank_transfer_handler.rb +95 -0
  246. data/test/events/webhooks/test_cancel_handler.rb +90 -0
  247. data/test/events/webhooks/test_charge_finished_handler.rb +95 -0
  248. data/test/events/webhooks/test_charge_updated_handler.rb +95 -0
  249. data/test/events/webhooks/test_customs_handler.rb +100 -0
  250. data/test/events/webhooks/test_recurring_token_deleted_handler.rb +92 -0
  251. data/test/events/webhooks/test_refund_handler.rb +95 -0
  252. data/test/events/webhooks/test_subscription_canceled_handler.rb +101 -0
  253. data/test/events/webhooks/test_subscription_completed_handler.rb +101 -0
  254. data/test/events/webhooks/test_subscription_created_handler.rb +101 -0
  255. data/test/events/webhooks/test_subscription_failure_handler.rb +101 -0
  256. data/test/events/webhooks/test_subscription_payment_handler.rb +101 -0
  257. data/test/events/webhooks/test_subscription_suspended_handler.rb +101 -0
  258. data/test/events/webhooks/test_token_created_handler.rb +92 -0
  259. data/test/events/webhooks/test_token_cvv_auth_check_updated_handler.rb +92 -0
  260. data/test/events/webhooks/test_token_cvv_auth_updated_handler.rb +92 -0
  261. data/test/events/webhooks/test_token_replaced_handler.rb +92 -0
  262. data/test/events/webhooks/test_token_three_ds_updated_handler.rb +92 -0
  263. data/test/events/webhooks/test_token_updated_handler.rb +92 -0
  264. data/test/framework_integrations/rails_app_test_helper.rb +14 -0
  265. data/test/framework_integrations/webhooks/apps/hanami_charge_updated_app.rb +61 -0
  266. data/test/framework_integrations/webhooks/apps/rails_charge_updated_app.rb +24 -0
  267. data/test/framework_integrations/webhooks/apps/sinatra_charge_updated_app.rb +27 -0
  268. data/test/framework_integrations/webhooks/test/test_hanami_charge_updated_app.rb +57 -0
  269. data/test/framework_integrations/webhooks/test/test_rails_charge_updated_app.rb +57 -0
  270. data/test/framework_integrations/webhooks/test/test_sinatra_charge_updated_app.rb +58 -0
  271. data/test/http_response_catcher.rb +19 -0
  272. metadata +397 -0
@@ -0,0 +1,132 @@
1
+ # univapay_client_sdk
2
+ #
3
+ # This file was automatically generated for Univapay
4
+ # by APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module UnivapayClientSdk
8
+ # Webhook envelope for the subscription_completed event.
9
+ class SubscriptionCompletedWebhookCallback < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Unique ID of this webhook delivery.
14
+ # @return [UUID | String]
15
+ attr_accessor :id
16
+
17
+ # Event type discriminator — always `subscription_completed` for this
18
+ # callback.
19
+ # @return [String]
20
+ attr_reader :event
21
+
22
+ # The Subscription object represents a recurring payment schedule.
23
+ # @return [Subscription]
24
+ attr_accessor :data
25
+
26
+ # Timestamp when the event was fired.
27
+ # @return [DateTime]
28
+ attr_accessor :created_on
29
+
30
+ # A mapping from model property names to API property names.
31
+ def self.names
32
+ @_hash = {} if @_hash.nil?
33
+ @_hash['id'] = 'id'
34
+ @_hash['event'] = 'event'
35
+ @_hash['data'] = 'data'
36
+ @_hash['created_on'] = 'created_on'
37
+ @_hash
38
+ end
39
+
40
+ # An array for optional fields
41
+ def self.optionals
42
+ %w[
43
+ data
44
+ ]
45
+ end
46
+
47
+ # An array for nullable fields
48
+ def self.nullables
49
+ []
50
+ end
51
+
52
+ def initialize(id:, created_on:, data: SKIP, additional_properties: nil)
53
+ # Add additional model properties to the instance
54
+ additional_properties = {} if additional_properties.nil?
55
+
56
+ @id = id
57
+ @event = 'subscription_completed'
58
+ @data = data unless data == SKIP
59
+ @created_on = created_on
60
+ @additional_properties = additional_properties
61
+ end
62
+
63
+ # Creates an instance of the object from a hash.
64
+ def self.from_hash(hash)
65
+ return nil unless hash
66
+
67
+ # Extract variables from the hash.
68
+ id = hash.key?('id') ? hash['id'] : nil
69
+ created_on = if hash.key?('created_on')
70
+ (DateTimeHelper.from_rfc3339(hash['created_on']) if hash['created_on'])
71
+ end
72
+ data = Subscription.from_hash(hash['data']) if hash['data']
73
+
74
+ # Create a new hash for additional properties, removing known properties.
75
+ new_hash = hash.reject { |k, _| names.value?(k) }
76
+
77
+ additional_properties = APIHelper.get_additional_properties(
78
+ new_hash, proc { |value| value }
79
+ )
80
+
81
+ # Create object from extracted values.
82
+ SubscriptionCompletedWebhookCallback.new(id: id,
83
+ created_on: created_on,
84
+ data: data,
85
+ additional_properties: additional_properties)
86
+ end
87
+
88
+ def to_custom_created_on
89
+ DateTimeHelper.to_rfc3339(created_on)
90
+ end
91
+
92
+ # Validates an instance of the object from a given value.
93
+ # @param [SubscriptionCompletedWebhookCallback | Hash] The value against the validation is performed.
94
+ def self.validate(value)
95
+ if value.instance_of? self
96
+ return (
97
+ APIHelper.valid_type?(value.id,
98
+ ->(val) { val.instance_of? String }) and
99
+ APIHelper.valid_type?(value.event,
100
+ ->(val) { val.instance_of? String }) and
101
+ APIHelper.valid_type?(value.created_on,
102
+ ->(val) { val.instance_of? DateTime })
103
+ )
104
+ end
105
+
106
+ return false unless value.instance_of? Hash
107
+
108
+ (
109
+ APIHelper.valid_type?(value['id'],
110
+ ->(val) { val.instance_of? String }) and
111
+ APIHelper.valid_type?(value['event'],
112
+ ->(val) { val.instance_of? String }) and
113
+ APIHelper.valid_type?(value['created_on'],
114
+ ->(val) { val.instance_of? String })
115
+ )
116
+ end
117
+
118
+ # Provides a human-readable string representation of the object.
119
+ def to_s
120
+ class_name = self.class.name.split('::').last
121
+ "<#{class_name} id: #{@id}, event: #{@event}, data: #{@data}, created_on: #{@created_on},"\
122
+ " additional_properties: #{@additional_properties}>"
123
+ end
124
+
125
+ # Provides a debugging-friendly string with detailed object information.
126
+ def inspect
127
+ class_name = self.class.name.split('::').last
128
+ "<#{class_name} id: #{@id.inspect}, event: #{@event.inspect}, data: #{@data.inspect},"\
129
+ " created_on: #{@created_on.inspect}, additional_properties: #{@additional_properties}>"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,216 @@
1
+ # univapay_client_sdk
2
+ #
3
+ # This file was automatically generated for Univapay
4
+ # by APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module UnivapayClientSdk
7
+ # Request payload for creating a subscription.
8
+ class SubscriptionCreateRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Transaction token ID authorized for recurring payments.
13
+ # @return [UUID | String]
14
+ attr_accessor :transaction_token_id
15
+
16
+ # Amount to be charged in each cycle.
17
+ # @return [Integer]
18
+ attr_accessor :amount
19
+
20
+ # ISO-4217 currency code.
21
+ # @return [String]
22
+ attr_accessor :currency
23
+
24
+ # Optional different amount for the first charge.
25
+ # @return [Integer]
26
+ attr_accessor :initial_amount
27
+
28
+ # Subscription Period schema.
29
+ # @return [SubscriptionPeriod]
30
+ attr_accessor :period
31
+
32
+ # ISO-8601 Duration for custom frequency (e.g., P3D, P2M). Cannot be used
33
+ # if 'period' is specified.
34
+ # @return [String]
35
+ attr_accessor :cyclical_period
36
+
37
+ # Schedule settings applied to a subscription.
38
+ # @return [SubscriptionScheduleSettings]
39
+ attr_accessor :schedule_settings
40
+
41
+ # Configuration for credit card company side installments.
42
+ # @return [SubscriptionInstallmentPlan]
43
+ attr_accessor :installment_plan
44
+
45
+ # Configuration for limited-cycle subscriptions (Univapay side).
46
+ # @return [SubscriptionPlanSettings]
47
+ attr_accessor :subscription_plan
48
+
49
+ # If true, the first charge will only be an authorization (Hold).
50
+ # @return [TrueClass | FalseClass]
51
+ attr_accessor :first_charge_authorization_only
52
+
53
+ # ISO-8601 Duration for auto-capture if authorization only is true. Allowed
54
+ # days: P1D to P6D.
55
+ # @return [String]
56
+ attr_accessor :first_charge_capture_after
57
+
58
+ # A free-form dictionary for custom metadata.
59
+ # @return [GenericMetadata]
60
+ attr_accessor :metadata
61
+
62
+ # Charge Create Request Three Ds schema.
63
+ # @return [ChargeCreateRequestThreeDs]
64
+ attr_accessor :three_ds
65
+
66
+ # A mapping from model property names to API property names.
67
+ def self.names
68
+ @_hash = {} if @_hash.nil?
69
+ @_hash['transaction_token_id'] = 'transaction_token_id'
70
+ @_hash['amount'] = 'amount'
71
+ @_hash['currency'] = 'currency'
72
+ @_hash['initial_amount'] = 'initial_amount'
73
+ @_hash['period'] = 'period'
74
+ @_hash['cyclical_period'] = 'cyclical_period'
75
+ @_hash['schedule_settings'] = 'schedule_settings'
76
+ @_hash['installment_plan'] = 'installment_plan'
77
+ @_hash['subscription_plan'] = 'subscription_plan'
78
+ @_hash['first_charge_authorization_only'] =
79
+ 'first_charge_authorization_only'
80
+ @_hash['first_charge_capture_after'] = 'first_charge_capture_after'
81
+ @_hash['metadata'] = 'metadata'
82
+ @_hash['three_ds'] = 'three_ds'
83
+ @_hash
84
+ end
85
+
86
+ # An array for optional fields
87
+ def self.optionals
88
+ %w[
89
+ initial_amount
90
+ period
91
+ cyclical_period
92
+ schedule_settings
93
+ installment_plan
94
+ subscription_plan
95
+ first_charge_authorization_only
96
+ first_charge_capture_after
97
+ metadata
98
+ three_ds
99
+ ]
100
+ end
101
+
102
+ # An array for nullable fields
103
+ def self.nullables
104
+ []
105
+ end
106
+
107
+ def initialize(transaction_token_id:, amount:, currency:,
108
+ initial_amount: SKIP, period: SKIP, cyclical_period: SKIP,
109
+ schedule_settings: SKIP, installment_plan: SKIP,
110
+ subscription_plan: SKIP,
111
+ first_charge_authorization_only: false,
112
+ first_charge_capture_after: SKIP, metadata: SKIP,
113
+ three_ds: SKIP, additional_properties: nil)
114
+ # Add additional model properties to the instance
115
+ additional_properties = {} if additional_properties.nil?
116
+
117
+ @transaction_token_id = transaction_token_id
118
+ @amount = amount
119
+ @currency = currency
120
+ @initial_amount = initial_amount unless initial_amount == SKIP
121
+ @period = period unless period == SKIP
122
+ @cyclical_period = cyclical_period unless cyclical_period == SKIP
123
+ @schedule_settings = schedule_settings unless schedule_settings == SKIP
124
+ @installment_plan = installment_plan unless installment_plan == SKIP
125
+ @subscription_plan = subscription_plan unless subscription_plan == SKIP
126
+ unless first_charge_authorization_only == SKIP
127
+ @first_charge_authorization_only =
128
+ first_charge_authorization_only
129
+ end
130
+ unless first_charge_capture_after == SKIP
131
+ @first_charge_capture_after =
132
+ first_charge_capture_after
133
+ end
134
+ @metadata = metadata unless metadata == SKIP
135
+ @three_ds = three_ds unless three_ds == SKIP
136
+ @additional_properties = additional_properties
137
+ end
138
+
139
+ # Creates an instance of the object from a hash.
140
+ def self.from_hash(hash)
141
+ return nil unless hash
142
+
143
+ # Extract variables from the hash.
144
+ transaction_token_id =
145
+ hash.key?('transaction_token_id') ? hash['transaction_token_id'] : nil
146
+ amount = hash.key?('amount') ? hash['amount'] : nil
147
+ currency = hash.key?('currency') ? hash['currency'] : nil
148
+ initial_amount =
149
+ hash.key?('initial_amount') ? hash['initial_amount'] : SKIP
150
+ period = hash.key?('period') ? hash['period'] : SKIP
151
+ cyclical_period =
152
+ hash.key?('cyclical_period') ? hash['cyclical_period'] : SKIP
153
+ schedule_settings = SubscriptionScheduleSettings.from_hash(hash['schedule_settings']) if
154
+ hash['schedule_settings']
155
+ installment_plan = SubscriptionInstallmentPlan.from_hash(hash['installment_plan']) if
156
+ hash['installment_plan']
157
+ subscription_plan = SubscriptionPlanSettings.from_hash(hash['subscription_plan']) if
158
+ hash['subscription_plan']
159
+ first_charge_authorization_only =
160
+ hash['first_charge_authorization_only'] ||= false
161
+ first_charge_capture_after =
162
+ hash.key?('first_charge_capture_after') ? hash['first_charge_capture_after'] : SKIP
163
+ metadata = GenericMetadata.from_hash(hash['metadata']) if hash['metadata']
164
+ three_ds = ChargeCreateRequestThreeDs.from_hash(hash['three_ds']) if hash['three_ds']
165
+
166
+ # Create a new hash for additional properties, removing known properties.
167
+ new_hash = hash.reject { |k, _| names.value?(k) }
168
+
169
+ additional_properties = APIHelper.get_additional_properties(
170
+ new_hash, proc { |value| value }
171
+ )
172
+
173
+ # Create object from extracted values.
174
+ SubscriptionCreateRequest.new(transaction_token_id: transaction_token_id,
175
+ amount: amount,
176
+ currency: currency,
177
+ initial_amount: initial_amount,
178
+ period: period,
179
+ cyclical_period: cyclical_period,
180
+ schedule_settings: schedule_settings,
181
+ installment_plan: installment_plan,
182
+ subscription_plan: subscription_plan,
183
+ first_charge_authorization_only: first_charge_authorization_only,
184
+ first_charge_capture_after: first_charge_capture_after,
185
+ metadata: metadata,
186
+ three_ds: three_ds,
187
+ additional_properties: additional_properties)
188
+ end
189
+
190
+ # Provides a human-readable string representation of the object.
191
+ def to_s
192
+ class_name = self.class.name.split('::').last
193
+ "<#{class_name} transaction_token_id: #{@transaction_token_id}, amount: #{@amount},"\
194
+ " currency: #{@currency}, initial_amount: #{@initial_amount}, period: #{@period},"\
195
+ " cyclical_period: #{@cyclical_period}, schedule_settings: #{@schedule_settings},"\
196
+ " installment_plan: #{@installment_plan}, subscription_plan: #{@subscription_plan},"\
197
+ " first_charge_authorization_only: #{@first_charge_authorization_only},"\
198
+ " first_charge_capture_after: #{@first_charge_capture_after}, metadata: #{@metadata},"\
199
+ " three_ds: #{@three_ds}, additional_properties: #{@additional_properties}>"
200
+ end
201
+
202
+ # Provides a debugging-friendly string with detailed object information.
203
+ def inspect
204
+ class_name = self.class.name.split('::').last
205
+ "<#{class_name} transaction_token_id: #{@transaction_token_id.inspect}, amount:"\
206
+ " #{@amount.inspect}, currency: #{@currency.inspect}, initial_amount:"\
207
+ " #{@initial_amount.inspect}, period: #{@period.inspect}, cyclical_period:"\
208
+ " #{@cyclical_period.inspect}, schedule_settings: #{@schedule_settings.inspect},"\
209
+ " installment_plan: #{@installment_plan.inspect}, subscription_plan:"\
210
+ " #{@subscription_plan.inspect}, first_charge_authorization_only:"\
211
+ " #{@first_charge_authorization_only.inspect}, first_charge_capture_after:"\
212
+ " #{@first_charge_capture_after.inspect}, metadata: #{@metadata.inspect}, three_ds:"\
213
+ " #{@three_ds.inspect}, additional_properties: #{@additional_properties}>"
214
+ end
215
+ end
216
+ end
@@ -0,0 +1,132 @@
1
+ # univapay_client_sdk
2
+ #
3
+ # This file was automatically generated for Univapay
4
+ # by APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module UnivapayClientSdk
8
+ # Webhook envelope for the subscription_created event.
9
+ class SubscriptionCreatedWebhookCallback < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Unique ID of this webhook delivery.
14
+ # @return [UUID | String]
15
+ attr_accessor :id
16
+
17
+ # Event type discriminator — always `subscription_created` for this
18
+ # callback.
19
+ # @return [String]
20
+ attr_reader :event
21
+
22
+ # The Subscription object represents a recurring payment schedule.
23
+ # @return [Subscription]
24
+ attr_accessor :data
25
+
26
+ # Timestamp when the event was fired.
27
+ # @return [DateTime]
28
+ attr_accessor :created_on
29
+
30
+ # A mapping from model property names to API property names.
31
+ def self.names
32
+ @_hash = {} if @_hash.nil?
33
+ @_hash['id'] = 'id'
34
+ @_hash['event'] = 'event'
35
+ @_hash['data'] = 'data'
36
+ @_hash['created_on'] = 'created_on'
37
+ @_hash
38
+ end
39
+
40
+ # An array for optional fields
41
+ def self.optionals
42
+ %w[
43
+ data
44
+ ]
45
+ end
46
+
47
+ # An array for nullable fields
48
+ def self.nullables
49
+ []
50
+ end
51
+
52
+ def initialize(id:, created_on:, data: SKIP, additional_properties: nil)
53
+ # Add additional model properties to the instance
54
+ additional_properties = {} if additional_properties.nil?
55
+
56
+ @id = id
57
+ @event = 'subscription_created'
58
+ @data = data unless data == SKIP
59
+ @created_on = created_on
60
+ @additional_properties = additional_properties
61
+ end
62
+
63
+ # Creates an instance of the object from a hash.
64
+ def self.from_hash(hash)
65
+ return nil unless hash
66
+
67
+ # Extract variables from the hash.
68
+ id = hash.key?('id') ? hash['id'] : nil
69
+ created_on = if hash.key?('created_on')
70
+ (DateTimeHelper.from_rfc3339(hash['created_on']) if hash['created_on'])
71
+ end
72
+ data = Subscription.from_hash(hash['data']) if hash['data']
73
+
74
+ # Create a new hash for additional properties, removing known properties.
75
+ new_hash = hash.reject { |k, _| names.value?(k) }
76
+
77
+ additional_properties = APIHelper.get_additional_properties(
78
+ new_hash, proc { |value| value }
79
+ )
80
+
81
+ # Create object from extracted values.
82
+ SubscriptionCreatedWebhookCallback.new(id: id,
83
+ created_on: created_on,
84
+ data: data,
85
+ additional_properties: additional_properties)
86
+ end
87
+
88
+ def to_custom_created_on
89
+ DateTimeHelper.to_rfc3339(created_on)
90
+ end
91
+
92
+ # Validates an instance of the object from a given value.
93
+ # @param [SubscriptionCreatedWebhookCallback | Hash] The value against the validation is performed.
94
+ def self.validate(value)
95
+ if value.instance_of? self
96
+ return (
97
+ APIHelper.valid_type?(value.id,
98
+ ->(val) { val.instance_of? String }) and
99
+ APIHelper.valid_type?(value.event,
100
+ ->(val) { val.instance_of? String }) and
101
+ APIHelper.valid_type?(value.created_on,
102
+ ->(val) { val.instance_of? DateTime })
103
+ )
104
+ end
105
+
106
+ return false unless value.instance_of? Hash
107
+
108
+ (
109
+ APIHelper.valid_type?(value['id'],
110
+ ->(val) { val.instance_of? String }) and
111
+ APIHelper.valid_type?(value['event'],
112
+ ->(val) { val.instance_of? String }) and
113
+ APIHelper.valid_type?(value['created_on'],
114
+ ->(val) { val.instance_of? String })
115
+ )
116
+ end
117
+
118
+ # Provides a human-readable string representation of the object.
119
+ def to_s
120
+ class_name = self.class.name.split('::').last
121
+ "<#{class_name} id: #{@id}, event: #{@event}, data: #{@data}, created_on: #{@created_on},"\
122
+ " additional_properties: #{@additional_properties}>"
123
+ end
124
+
125
+ # Provides a debugging-friendly string with detailed object information.
126
+ def inspect
127
+ class_name = self.class.name.split('::').last
128
+ "<#{class_name} id: #{@id.inspect}, event: #{@event.inspect}, data: #{@data.inspect},"\
129
+ " created_on: #{@created_on.inspect}, additional_properties: #{@additional_properties}>"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,132 @@
1
+ # univapay_client_sdk
2
+ #
3
+ # This file was automatically generated for Univapay
4
+ # by APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module UnivapayClientSdk
8
+ # Webhook envelope for the subscription_failure event.
9
+ class SubscriptionFailureWebhookCallback < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Unique ID of this webhook delivery.
14
+ # @return [UUID | String]
15
+ attr_accessor :id
16
+
17
+ # Event type discriminator — always `subscription_failure` for this
18
+ # callback.
19
+ # @return [String]
20
+ attr_reader :event
21
+
22
+ # The Subscription object represents a recurring payment schedule.
23
+ # @return [Subscription]
24
+ attr_accessor :data
25
+
26
+ # Timestamp when the event was fired.
27
+ # @return [DateTime]
28
+ attr_accessor :created_on
29
+
30
+ # A mapping from model property names to API property names.
31
+ def self.names
32
+ @_hash = {} if @_hash.nil?
33
+ @_hash['id'] = 'id'
34
+ @_hash['event'] = 'event'
35
+ @_hash['data'] = 'data'
36
+ @_hash['created_on'] = 'created_on'
37
+ @_hash
38
+ end
39
+
40
+ # An array for optional fields
41
+ def self.optionals
42
+ %w[
43
+ data
44
+ ]
45
+ end
46
+
47
+ # An array for nullable fields
48
+ def self.nullables
49
+ []
50
+ end
51
+
52
+ def initialize(id:, created_on:, data: SKIP, additional_properties: nil)
53
+ # Add additional model properties to the instance
54
+ additional_properties = {} if additional_properties.nil?
55
+
56
+ @id = id
57
+ @event = 'subscription_failure'
58
+ @data = data unless data == SKIP
59
+ @created_on = created_on
60
+ @additional_properties = additional_properties
61
+ end
62
+
63
+ # Creates an instance of the object from a hash.
64
+ def self.from_hash(hash)
65
+ return nil unless hash
66
+
67
+ # Extract variables from the hash.
68
+ id = hash.key?('id') ? hash['id'] : nil
69
+ created_on = if hash.key?('created_on')
70
+ (DateTimeHelper.from_rfc3339(hash['created_on']) if hash['created_on'])
71
+ end
72
+ data = Subscription.from_hash(hash['data']) if hash['data']
73
+
74
+ # Create a new hash for additional properties, removing known properties.
75
+ new_hash = hash.reject { |k, _| names.value?(k) }
76
+
77
+ additional_properties = APIHelper.get_additional_properties(
78
+ new_hash, proc { |value| value }
79
+ )
80
+
81
+ # Create object from extracted values.
82
+ SubscriptionFailureWebhookCallback.new(id: id,
83
+ created_on: created_on,
84
+ data: data,
85
+ additional_properties: additional_properties)
86
+ end
87
+
88
+ def to_custom_created_on
89
+ DateTimeHelper.to_rfc3339(created_on)
90
+ end
91
+
92
+ # Validates an instance of the object from a given value.
93
+ # @param [SubscriptionFailureWebhookCallback | Hash] The value against the validation is performed.
94
+ def self.validate(value)
95
+ if value.instance_of? self
96
+ return (
97
+ APIHelper.valid_type?(value.id,
98
+ ->(val) { val.instance_of? String }) and
99
+ APIHelper.valid_type?(value.event,
100
+ ->(val) { val.instance_of? String }) and
101
+ APIHelper.valid_type?(value.created_on,
102
+ ->(val) { val.instance_of? DateTime })
103
+ )
104
+ end
105
+
106
+ return false unless value.instance_of? Hash
107
+
108
+ (
109
+ APIHelper.valid_type?(value['id'],
110
+ ->(val) { val.instance_of? String }) and
111
+ APIHelper.valid_type?(value['event'],
112
+ ->(val) { val.instance_of? String }) and
113
+ APIHelper.valid_type?(value['created_on'],
114
+ ->(val) { val.instance_of? String })
115
+ )
116
+ end
117
+
118
+ # Provides a human-readable string representation of the object.
119
+ def to_s
120
+ class_name = self.class.name.split('::').last
121
+ "<#{class_name} id: #{@id}, event: #{@event}, data: #{@data}, created_on: #{@created_on},"\
122
+ " additional_properties: #{@additional_properties}>"
123
+ end
124
+
125
+ # Provides a debugging-friendly string with detailed object information.
126
+ def inspect
127
+ class_name = self.class.name.split('::').last
128
+ "<#{class_name} id: #{@id.inspect}, event: #{@event.inspect}, data: #{@data.inspect},"\
129
+ " created_on: #{@created_on.inspect}, additional_properties: #{@additional_properties}>"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,86 @@
1
+ # univapay_client_sdk
2
+ #
3
+ # This file was automatically generated for Univapay
4
+ # by APIMATIC v3.0 ( https://www.apimatic.io ).
5
+
6
+ module UnivapayClientSdk
7
+ # Configuration for credit card company side installments.
8
+ class SubscriptionInstallmentPlan < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Plan type selector.
13
+ # @return [InstallmentPlanType]
14
+ attr_accessor :plan_type
15
+
16
+ # Required if plan_type is fixed_cycles.
17
+ # @return [InstallmentFixedCycles]
18
+ attr_accessor :fixed_cycles
19
+
20
+ # A mapping from model property names to API property names.
21
+ def self.names
22
+ @_hash = {} if @_hash.nil?
23
+ @_hash['plan_type'] = 'plan_type'
24
+ @_hash['fixed_cycles'] = 'fixed_cycles'
25
+ @_hash
26
+ end
27
+
28
+ # An array for optional fields
29
+ def self.optionals
30
+ %w[
31
+ plan_type
32
+ fixed_cycles
33
+ ]
34
+ end
35
+
36
+ # An array for nullable fields
37
+ def self.nullables
38
+ []
39
+ end
40
+
41
+ def initialize(plan_type: SKIP, fixed_cycles: SKIP,
42
+ additional_properties: nil)
43
+ # Add additional model properties to the instance
44
+ additional_properties = {} if additional_properties.nil?
45
+
46
+ @plan_type = plan_type unless plan_type == SKIP
47
+ @fixed_cycles = fixed_cycles unless fixed_cycles == SKIP
48
+ @additional_properties = additional_properties
49
+ end
50
+
51
+ # Creates an instance of the object from a hash.
52
+ def self.from_hash(hash)
53
+ return nil unless hash
54
+
55
+ # Extract variables from the hash.
56
+ plan_type = hash.key?('plan_type') ? hash['plan_type'] : SKIP
57
+ fixed_cycles = hash.key?('fixed_cycles') ? hash['fixed_cycles'] : SKIP
58
+
59
+ # Create a new hash for additional properties, removing known properties.
60
+ new_hash = hash.reject { |k, _| names.value?(k) }
61
+
62
+ additional_properties = APIHelper.get_additional_properties(
63
+ new_hash, proc { |value| value }
64
+ )
65
+
66
+ # Create object from extracted values.
67
+ SubscriptionInstallmentPlan.new(plan_type: plan_type,
68
+ fixed_cycles: fixed_cycles,
69
+ additional_properties: additional_properties)
70
+ end
71
+
72
+ # Provides a human-readable string representation of the object.
73
+ def to_s
74
+ class_name = self.class.name.split('::').last
75
+ "<#{class_name} plan_type: #{@plan_type}, fixed_cycles: #{@fixed_cycles},"\
76
+ " additional_properties: #{@additional_properties}>"
77
+ end
78
+
79
+ # Provides a debugging-friendly string with detailed object information.
80
+ def inspect
81
+ class_name = self.class.name.split('::').last
82
+ "<#{class_name} plan_type: #{@plan_type.inspect}, fixed_cycles: #{@fixed_cycles.inspect},"\
83
+ " additional_properties: #{@additional_properties}>"
84
+ end
85
+ end
86
+ end