first_data_gateway 1.0.3 → 1.1.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 (387) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/README.md +144 -65
  4. data/Rakefile +2 -0
  5. data/docs/AVSResponse.md +9 -0
  6. data/docs/AccessTokenResponse.md +2 -3
  7. data/docs/AdditionalAmountRate.md +9 -0
  8. data/docs/AdditionalTransactionDetails.md +10 -0
  9. data/docs/Address.md +5 -5
  10. data/docs/Airline.md +14 -14
  11. data/docs/AirlineAncillaryServiceCategory.md +2 -2
  12. data/docs/AirlineTravelRoute.md +8 -8
  13. data/docs/AliPay.md +11 -0
  14. data/docs/Amount.md +2 -2
  15. data/docs/AmountComponents.md +8 -8
  16. data/docs/AuthenticationApi.md +19 -24
  17. data/docs/AuthenticationRequest.md +9 -0
  18. data/docs/AuthenticationResponseVerification.md +5 -4
  19. data/docs/AuthenticationResponseVerificationRequest.md +11 -0
  20. data/docs/BasicResponse.md +10 -0
  21. data/docs/BasketItem.md +2 -2
  22. data/docs/Billing.md +6 -5
  23. data/docs/BillingAddress.md +17 -0
  24. data/docs/BillingAddressPhone.md +9 -0
  25. data/docs/CarRental.md +9 -9
  26. data/docs/CarRentalExtraCharges.md +2 -2
  27. data/docs/Card.md +15 -0
  28. data/docs/CardInfo.md +13 -0
  29. data/docs/CardInfoLookupApi.md +68 -0
  30. data/docs/CardInfoLookupRequest.md +9 -0
  31. data/docs/CardInfoLookupResponse.md +12 -0
  32. data/docs/CardVerificationApi.md +68 -0
  33. data/docs/CardVerificationRequest.md +9 -0
  34. data/docs/CardVerificationsTransaction.md +2 -2
  35. data/docs/ChinaDomestic.md +15 -0
  36. data/docs/ClientLocale.md +3 -3
  37. data/docs/Contact.md +5 -5
  38. data/docs/CurrencyConversionApi.md +68 -0
  39. data/docs/Customer.md +19 -0
  40. data/docs/CustomerAddress.md +14 -0
  41. data/docs/CustomerAddressPhone.md +9 -0
  42. data/docs/Dcc.md +9 -0
  43. data/docs/Device.md +19 -0
  44. data/docs/DeviceNetworks.md +21 -0
  45. data/docs/Document.md +9 -0
  46. data/docs/Error.md +1 -1
  47. data/docs/ErrorDetails.md +1 -1
  48. data/docs/ErrorResponse.md +4 -4
  49. data/docs/ExchangeRateRequest.md +12 -0
  50. data/docs/ExchangeRateResponse.md +21 -0
  51. data/docs/Expiration.md +3 -3
  52. data/docs/FraudDetectApi.md +68 -0
  53. data/docs/FraudOrder.md +10 -0
  54. data/docs/FraudOrderItems.md +15 -0
  55. data/docs/FraudOrderShipToAddress.md +14 -0
  56. data/docs/Frequency.md +3 -3
  57. data/docs/IndustrySpecificExtensions.md +1 -1
  58. data/docs/InstallmentOptions.md +1 -1
  59. data/docs/Lodging.md +3 -3
  60. data/docs/LodgingExtraCharges.md +1 -1
  61. data/docs/Loyalty.md +10 -0
  62. data/docs/Merchant.md +11 -0
  63. data/docs/MerchantLocation.md +12 -0
  64. data/docs/MerchantLocationMerchantAddress.md +13 -0
  65. data/docs/Order.md +2 -2
  66. data/docs/OrderApi.md +107 -55
  67. data/docs/OrderErrorResponse.md +19 -0
  68. data/docs/OrderResponse.md +18 -0
  69. data/docs/PayPal.md +1 -1
  70. data/docs/Payment.md +18 -0
  71. data/docs/PaymentApi.md +164 -124
  72. data/docs/PaymentCard.md +10 -6
  73. data/docs/PaymentCardAuthenticationResult.md +1 -1
  74. data/docs/PaymentFacilitator.md +12 -0
  75. data/docs/PaymentIssuerResponse.md +10 -0
  76. data/docs/PaymentMethod.md +5 -2
  77. data/docs/PaymentPayMethod.md +13 -0
  78. data/docs/PaymentSchedulesApi.md +256 -0
  79. data/docs/PaymentSchedulesErrorResponse.md +14 -0
  80. data/docs/PaymentSchedulesRequest.md +10 -7
  81. data/docs/PaymentSchedulesResponse.md +7 -5
  82. data/docs/PaymentTokenApi.md +134 -0
  83. data/docs/PaymentTokenization.md +16 -0
  84. data/docs/PaymentTokenizationErrorResponse.md +19 -0
  85. data/docs/PaymentTokenizationRequest.md +11 -0
  86. data/docs/PaymentTokenizationResponse.md +18 -0
  87. data/docs/PaymentURLApi.md +68 -0
  88. data/docs/PaymentUrlErrorResponse.md +15 -0
  89. data/docs/PaymentUrlRequest.md +13 -3
  90. data/docs/PaymentUrlResponse.md +6 -5
  91. data/docs/PaymentVerification3ds.md +10 -0
  92. data/docs/PaymentVerificationAvs.md +10 -0
  93. data/docs/PaymentVerificationCvv.md +10 -0
  94. data/docs/PrimaryTransaction.md +7 -3
  95. data/docs/PrimaryTransactionAdditionalDetails.md +7 -5
  96. data/docs/ProcessorData.md +8 -4
  97. data/docs/PurchaseCards.md +9 -0
  98. data/docs/PurchaseCardsLevel2.md +12 -0
  99. data/docs/PurchaseCardsLevel3.md +8 -0
  100. data/docs/PurchaseCardsLevel3LineItems.md +16 -0
  101. data/docs/RecurringPaymentDetails.md +20 -0
  102. data/docs/RecurringPaymentDetailsResponse.md +19 -0
  103. data/docs/ReferencedOrder.md +9 -0
  104. data/docs/ResponseType.md +1 -1
  105. data/docs/ScoreOnlyRequest.md +21 -0
  106. data/docs/ScoreOnlyResponse.md +13 -0
  107. data/docs/ScoreOnlyResponseFraudScore.md +10 -0
  108. data/docs/ScoreOnlyResponseFraudScoreExplanations.md +10 -0
  109. data/docs/SecondaryTransaction.md +4 -1
  110. data/docs/SecondaryTransactionAdditionalDetails.md +8 -0
  111. data/docs/Secure3dResponse.md +8 -0
  112. data/docs/Sepa.md +1 -1
  113. data/docs/SepaMandate.md +3 -3
  114. data/docs/Shipping.md +1 -1
  115. data/docs/SoftDescriptor.md +9 -0
  116. data/docs/SplitShipment.md +3 -3
  117. data/docs/StoredCredential.md +4 -4
  118. data/docs/SubMerchantData.md +13 -0
  119. data/docs/Transaction.md +19 -0
  120. data/docs/TransactionErrorResponse.md +13 -11
  121. data/docs/TransactionOrigin.md +7 -0
  122. data/docs/TransactionResponse.md +13 -11
  123. data/docs/TransactionType.md +1 -1
  124. data/first_data_gateway.gemspec +9 -9
  125. data/git_push.sh +2 -2
  126. data/lib/openapi_client/.DS_Store +0 -0
  127. data/lib/{swagger_client → openapi_client}/api/authentication_api.rb +22 -27
  128. data/lib/openapi_client/api/card_info_lookup_api.rb +117 -0
  129. data/lib/openapi_client/api/card_verification_api.rb +117 -0
  130. data/lib/openapi_client/api/currency_conversion_api.rb +117 -0
  131. data/lib/openapi_client/api/fraud_detect_api.rb +122 -0
  132. data/lib/openapi_client/api/order_api.rb +327 -0
  133. data/lib/{swagger_client → openapi_client}/api/payment_api.rb +212 -111
  134. data/lib/openapi_client/api/payment_schedules_api.rb +411 -0
  135. data/lib/openapi_client/api/payment_token_api.rb +218 -0
  136. data/lib/openapi_client/api/payment_url_api.rb +117 -0
  137. data/lib/{swagger_client → openapi_client}/api_client.rb +50 -38
  138. data/lib/{swagger_client → openapi_client}/api_error.rb +6 -6
  139. data/lib/{swagger_client → openapi_client}/configuration.rb +49 -7
  140. data/lib/openapi_client/models/.DS_Store +0 -0
  141. data/lib/{swagger_client → openapi_client}/models/access_token_response.rb +20 -33
  142. data/lib/{swagger_client/models/secondary_transaction.rb → openapi_client/models/additional_amount_rate.rb} +25 -28
  143. data/lib/{swagger_client/models/primary_transaction_additional_details.rb → openapi_client/models/additional_transaction_details.rb} +68 -62
  144. data/lib/{swagger_client → openapi_client}/models/address.rb +33 -44
  145. data/lib/{swagger_client → openapi_client}/models/airline.rb +48 -47
  146. data/lib/{swagger_client → openapi_client}/models/airline_ancillary_service_category.rb +18 -21
  147. data/lib/{swagger_client → openapi_client}/models/airline_travel_route.rb +39 -42
  148. data/lib/openapi_client/models/ali_pay.rb +326 -0
  149. data/lib/{swagger_client → openapi_client}/models/amount.rb +18 -21
  150. data/lib/{swagger_client → openapi_client}/models/amount_components.rb +22 -19
  151. data/lib/{swagger_client/models/transaction_response_authentication_redirect.rb → openapi_client/models/authentication_request.rb} +33 -38
  152. data/lib/{swagger_client → openapi_client}/models/authentication_response_verification.rb +43 -30
  153. data/lib/{swagger_client/models/payment_url_request.rb → openapi_client/models/authentication_response_verification_request.rb} +35 -56
  154. data/lib/openapi_client/models/avs_response.rb +239 -0
  155. data/lib/openapi_client/models/basic_response.rb +209 -0
  156. data/lib/{swagger_client → openapi_client}/models/basket_item.rb +16 -20
  157. data/lib/{swagger_client → openapi_client}/models/billing.rb +65 -25
  158. data/lib/openapi_client/models/billing_address.rb +279 -0
  159. data/lib/{swagger_client/models/transaction_response_authentication_redirect_params.rb → openapi_client/models/billing_address_phone.rb} +31 -42
  160. data/lib/{swagger_client → openapi_client}/models/car_rental.rb +31 -31
  161. data/lib/{swagger_client → openapi_client}/models/car_rental_extra_charges.rb +18 -21
  162. data/lib/openapi_client/models/card.rb +254 -0
  163. data/lib/{swagger_client/models/payment_card.rb → openapi_client/models/card_info.rb} +68 -81
  164. data/lib/openapi_client/models/card_info_lookup_request.rb +214 -0
  165. data/lib/openapi_client/models/card_info_lookup_response.rb +265 -0
  166. data/lib/openapi_client/models/card_verification_request.rb +198 -0
  167. data/lib/{swagger_client → openapi_client}/models/card_verifications_transaction.rb +31 -20
  168. data/lib/openapi_client/models/china_domestic.rb +386 -0
  169. data/lib/{swagger_client → openapi_client}/models/client_locale.rb +19 -23
  170. data/lib/{swagger_client → openapi_client}/models/contact.rb +26 -31
  171. data/lib/openapi_client/models/customer.rb +333 -0
  172. data/lib/openapi_client/models/customer_address.rb +259 -0
  173. data/lib/openapi_client/models/customer_address_phone.rb +195 -0
  174. data/lib/openapi_client/models/dcc.rb +200 -0
  175. data/lib/openapi_client/models/device.rb +340 -0
  176. data/lib/openapi_client/models/device_networks.rb +353 -0
  177. data/lib/{swagger_client/models/payment_card_authentication_request.rb → openapi_client/models/document.rb} +62 -26
  178. data/lib/{swagger_client → openapi_client}/models/error.rb +14 -18
  179. data/lib/{swagger_client → openapi_client}/models/error_details.rb +14 -19
  180. data/lib/{swagger_client → openapi_client}/models/error_response.rb +22 -22
  181. data/lib/openapi_client/models/exchange_rate_request.rb +307 -0
  182. data/lib/openapi_client/models/exchange_rate_response.rb +319 -0
  183. data/lib/{swagger_client → openapi_client}/models/expiration.rb +18 -20
  184. data/lib/openapi_client/models/fraud_order.rb +206 -0
  185. data/lib/openapi_client/models/fraud_order_items.rb +253 -0
  186. data/lib/openapi_client/models/fraud_order_ship_to_address.rb +245 -0
  187. data/lib/{swagger_client → openapi_client}/models/frequency.rb +27 -30
  188. data/lib/{swagger_client → openapi_client}/models/industry_specific_extensions.rb +15 -19
  189. data/lib/{swagger_client → openapi_client}/models/installment_options.rb +22 -28
  190. data/lib/{swagger_client → openapi_client}/models/lodging.rb +19 -22
  191. data/lib/{swagger_client → openapi_client}/models/lodging_extra_charges.rb +17 -21
  192. data/lib/openapi_client/models/loyalty.rb +205 -0
  193. data/lib/openapi_client/models/merchant.rb +219 -0
  194. data/lib/openapi_client/models/merchant_location.rb +224 -0
  195. data/lib/openapi_client/models/merchant_location_merchant_address.rb +250 -0
  196. data/lib/{swagger_client/models/processor_data.rb → openapi_client/models/order.rb} +49 -47
  197. data/lib/openapi_client/models/order_error_response.rb +296 -0
  198. data/lib/openapi_client/models/order_response.rb +287 -0
  199. data/lib/{swagger_client → openapi_client}/models/pay_pal.rb +19 -23
  200. data/lib/openapi_client/models/payment.rb +346 -0
  201. data/lib/openapi_client/models/payment_card.rb +363 -0
  202. data/lib/{swagger_client → openapi_client}/models/payment_card_authentication_result.rb +32 -37
  203. data/lib/openapi_client/models/payment_facilitator.rb +292 -0
  204. data/lib/openapi_client/models/payment_issuer_response.rb +249 -0
  205. data/lib/openapi_client/models/payment_method.rb +278 -0
  206. data/lib/openapi_client/models/payment_pay_method.rb +278 -0
  207. data/lib/openapi_client/models/payment_schedules_error_response.rb +281 -0
  208. data/lib/{swagger_client → openapi_client}/models/payment_schedules_request.rb +83 -80
  209. data/lib/openapi_client/models/payment_schedules_response.rb +272 -0
  210. data/lib/openapi_client/models/payment_tokenization.rb +327 -0
  211. data/lib/openapi_client/models/payment_tokenization_error_response.rb +329 -0
  212. data/lib/{swagger_client/models/payment_method.rb → openapi_client/models/payment_tokenization_request.rb} +34 -37
  213. data/lib/openapi_client/models/payment_tokenization_response.rb +319 -0
  214. data/lib/openapi_client/models/payment_url_error_response.rb +292 -0
  215. data/lib/openapi_client/models/payment_url_request.rb +335 -0
  216. data/lib/{swagger_client → openapi_client}/models/payment_url_response.rb +35 -38
  217. data/lib/openapi_client/models/payment_verification3ds.rb +215 -0
  218. data/lib/openapi_client/models/payment_verification_avs.rb +215 -0
  219. data/lib/openapi_client/models/payment_verification_cvv.rb +215 -0
  220. data/lib/{swagger_client → openapi_client}/models/primary_transaction.rb +93 -31
  221. data/lib/openapi_client/models/primary_transaction_additional_details.rb +352 -0
  222. data/lib/openapi_client/models/processor_data.rb +272 -0
  223. data/lib/openapi_client/models/purchase_cards.rb +192 -0
  224. data/lib/openapi_client/models/purchase_cards_level2.rb +267 -0
  225. data/lib/openapi_client/models/purchase_cards_level3.rb +186 -0
  226. data/lib/openapi_client/models/purchase_cards_level3_line_items.rb +337 -0
  227. data/lib/openapi_client/models/recurring_payment_details.rb +399 -0
  228. data/lib/openapi_client/models/recurring_payment_details_response.rb +296 -0
  229. data/lib/{swagger_client/models/order.rb → openapi_client/models/referenced_order.rb} +23 -36
  230. data/lib/openapi_client/models/response_type.rb +37 -0
  231. data/lib/openapi_client/models/score_only_request.rb +389 -0
  232. data/lib/{swagger_client/models/payment_schedules_response.rb → openapi_client/models/score_only_response.rb} +56 -56
  233. data/lib/openapi_client/models/score_only_response_fraud_score.rb +208 -0
  234. data/lib/openapi_client/models/score_only_response_fraud_score_explanations.rb +201 -0
  235. data/lib/openapi_client/models/secondary_transaction.rb +220 -0
  236. data/lib/openapi_client/models/secondary_transaction_additional_details.rb +183 -0
  237. data/lib/openapi_client/models/secure3d_response.rb +184 -0
  238. data/lib/{swagger_client → openapi_client}/models/sepa.rb +30 -35
  239. data/lib/{swagger_client → openapi_client}/models/sepa_mandate.rb +32 -35
  240. data/lib/{swagger_client → openapi_client}/models/shipping.rb +17 -22
  241. data/lib/openapi_client/models/soft_descriptor.rb +215 -0
  242. data/lib/{swagger_client → openapi_client}/models/split_shipment.rb +17 -21
  243. data/lib/{swagger_client → openapi_client}/models/stored_credential.rb +28 -32
  244. data/lib/openapi_client/models/sub_merchant_data.rb +302 -0
  245. data/lib/openapi_client/models/transaction.rb +337 -0
  246. data/lib/{swagger_client → openapi_client}/models/transaction_error_response.rb +110 -80
  247. data/lib/openapi_client/models/transaction_origin.rb +32 -0
  248. data/lib/{swagger_client → openapi_client}/models/transaction_response.rb +112 -82
  249. data/lib/openapi_client/models/transaction_type.rb +36 -0
  250. data/lib/openapi_client/version.rb +15 -0
  251. data/lib/openapi_client.rb +158 -0
  252. data/lib/simple/client_context.rb +2 -2
  253. data/lib/simple/gateway.rb +274 -37
  254. data/spec/api/authentication_api_spec.rb +12 -12
  255. data/spec/api/card_info_lookup_api_spec.rb +53 -0
  256. data/spec/api/card_verification_api_spec.rb +53 -0
  257. data/spec/api/currency_conversion_api_spec.rb +53 -0
  258. data/spec/api/fraud_detect_api_spec.rb +53 -0
  259. data/spec/api/order_api_spec.rb +44 -23
  260. data/spec/api/payment_api_spec.rb +50 -26
  261. data/spec/api/payment_schedules_api_spec.rb +111 -0
  262. data/spec/api/payment_token_api_spec.rb +74 -0
  263. data/spec/api/payment_url_api_spec.rb +53 -0
  264. data/spec/api_client_spec.rb +66 -66
  265. data/spec/configuration_spec.rb +15 -15
  266. data/spec/models/access_token_response_spec.rb +16 -23
  267. data/spec/models/additional_amount_rate_spec.rb +47 -0
  268. data/spec/models/additional_transaction_details_spec.rb +53 -0
  269. data/spec/models/address_spec.rb +16 -17
  270. data/spec/models/airline_ancillary_service_category_spec.rb +14 -15
  271. data/spec/models/airline_spec.rb +27 -28
  272. data/spec/models/airline_travel_route_spec.rb +22 -23
  273. data/spec/models/ali_pay_spec.rb +63 -0
  274. data/spec/models/amount_components_spec.rb +16 -17
  275. data/spec/models/amount_spec.rb +12 -13
  276. data/spec/models/authentication_request_spec.rb +51 -0
  277. data/spec/models/authentication_response_verification_request_spec.rb +59 -0
  278. data/spec/models/authentication_response_verification_spec.rb +23 -18
  279. data/spec/models/avs_response_spec.rb +55 -0
  280. data/spec/models/basic_response_spec.rb +53 -0
  281. data/spec/models/basket_item_spec.rb +13 -14
  282. data/spec/models/billing_address_phone_spec.rb +47 -0
  283. data/spec/models/billing_address_spec.rb +95 -0
  284. data/spec/models/billing_spec.rb +25 -20
  285. data/spec/models/car_rental_extra_charges_spec.rb +14 -15
  286. data/spec/models/car_rental_spec.rb +17 -18
  287. data/spec/models/card_info_lookup_request_spec.rb +47 -0
  288. data/spec/models/card_info_lookup_response_spec.rb +69 -0
  289. data/spec/models/card_info_spec.rb +79 -0
  290. data/spec/models/card_spec.rb +83 -0
  291. data/spec/models/card_verification_request_spec.rb +47 -0
  292. data/spec/models/card_verifications_transaction_spec.rb +11 -12
  293. data/spec/models/china_domestic_spec.rb +83 -0
  294. data/spec/models/client_locale_spec.rb +11 -12
  295. data/spec/models/contact_spec.rb +13 -14
  296. data/spec/models/customer_address_phone_spec.rb +47 -0
  297. data/spec/models/customer_address_spec.rb +77 -0
  298. data/spec/models/customer_spec.rb +111 -0
  299. data/spec/models/dcc_spec.rb +47 -0
  300. data/spec/models/device_networks_spec.rb +123 -0
  301. data/spec/models/device_spec.rb +111 -0
  302. data/spec/models/document_spec.rb +51 -0
  303. data/spec/models/error_details_spec.rb +11 -12
  304. data/spec/models/error_response_spec.rb +13 -14
  305. data/spec/models/error_spec.rb +12 -13
  306. data/spec/models/exchange_rate_request_spec.rb +69 -0
  307. data/spec/models/exchange_rate_response_spec.rb +119 -0
  308. data/spec/models/expiration_spec.rb +11 -12
  309. data/spec/models/fraud_order_items_spec.rb +83 -0
  310. data/spec/models/fraud_order_ship_to_address_spec.rb +77 -0
  311. data/spec/models/fraud_order_spec.rb +53 -0
  312. data/spec/models/frequency_spec.rb +15 -16
  313. data/spec/models/industry_specific_extensions_spec.rb +12 -13
  314. data/spec/models/installment_options_spec.rb +12 -13
  315. data/spec/models/lodging_extra_charges_spec.rb +14 -15
  316. data/spec/models/lodging_spec.rb +14 -15
  317. data/spec/models/loyalty_spec.rb +53 -0
  318. data/spec/models/merchant_location_merchant_address_spec.rb +71 -0
  319. data/spec/models/merchant_location_spec.rb +65 -0
  320. data/spec/models/merchant_spec.rb +59 -0
  321. data/spec/models/order_error_response_spec.rb +107 -0
  322. data/spec/models/order_response_spec.rb +101 -0
  323. data/spec/models/order_spec.rb +12 -13
  324. data/spec/models/pay_pal_spec.rb +10 -11
  325. data/spec/models/payment_card_authentication_result_spec.rb +26 -27
  326. data/spec/models/payment_card_spec.rb +41 -22
  327. data/spec/models/payment_facilitator_spec.rb +65 -0
  328. data/spec/models/payment_issuer_response_spec.rb +57 -0
  329. data/spec/models/payment_method_spec.rb +35 -18
  330. data/spec/models/payment_pay_method_spec.rb +75 -0
  331. data/spec/models/payment_schedules_error_response_spec.rb +81 -0
  332. data/spec/models/payment_schedules_request_spec.rb +43 -30
  333. data/spec/models/payment_schedules_response_spec.rb +30 -19
  334. data/spec/models/payment_spec.rb +109 -0
  335. data/spec/models/payment_tokenization_error_response_spec.rb +111 -0
  336. data/spec/models/payment_tokenization_request_spec.rb +63 -0
  337. data/spec/models/payment_tokenization_response_spec.rb +105 -0
  338. data/spec/models/payment_tokenization_spec.rb +93 -0
  339. data/spec/models/payment_url_error_response_spec.rb +87 -0
  340. data/spec/models/payment_url_request_spec.rb +73 -14
  341. data/spec/models/payment_url_response_spec.rb +25 -20
  342. data/spec/models/payment_verification3ds_spec.rb +53 -0
  343. data/spec/models/payment_verification_avs_spec.rb +53 -0
  344. data/spec/models/payment_verification_cvv_spec.rb +53 -0
  345. data/spec/models/primary_transaction_additional_details_spec.rb +28 -17
  346. data/spec/models/primary_transaction_spec.rb +45 -22
  347. data/spec/models/processor_data_spec.rb +41 -14
  348. data/spec/models/purchase_cards_level2_spec.rb +65 -0
  349. data/spec/models/purchase_cards_level3_line_items_spec.rb +89 -0
  350. data/spec/models/purchase_cards_level3_spec.rb +41 -0
  351. data/spec/models/purchase_cards_spec.rb +47 -0
  352. data/spec/models/recurring_payment_details_response_spec.rb +107 -0
  353. data/spec/models/recurring_payment_details_spec.rb +117 -0
  354. data/spec/models/referenced_order_spec.rb +47 -0
  355. data/spec/models/response_type_spec.rb +9 -10
  356. data/spec/models/score_only_request_spec.rb +127 -0
  357. data/spec/models/score_only_response_fraud_score_explanations_spec.rb +53 -0
  358. data/spec/models/score_only_response_fraud_score_spec.rb +53 -0
  359. data/spec/models/score_only_response_spec.rb +75 -0
  360. data/spec/models/secondary_transaction_additional_details_spec.rb +41 -0
  361. data/spec/models/secondary_transaction_spec.rb +29 -12
  362. data/spec/models/secure3d_response_spec.rb +41 -0
  363. data/spec/models/sepa_mandate_spec.rb +17 -18
  364. data/spec/models/sepa_spec.rb +14 -15
  365. data/spec/models/shipping_spec.rb +12 -13
  366. data/spec/models/soft_descriptor_spec.rb +47 -0
  367. data/spec/models/split_shipment_spec.rb +11 -12
  368. data/spec/models/stored_credential_spec.rb +21 -22
  369. data/spec/models/sub_merchant_data_spec.rb +71 -0
  370. data/spec/models/transaction_error_response_spec.rb +62 -51
  371. data/spec/models/transaction_origin_spec.rb +35 -0
  372. data/spec/models/transaction_response_spec.rb +61 -50
  373. data/spec/models/transaction_spec.rb +115 -0
  374. data/spec/models/transaction_type_spec.rb +9 -10
  375. data/spec/spec_helper.rb +6 -6
  376. metadata +339 -69
  377. data/docs/PaymentCardAuthenticationRequest.md +0 -8
  378. data/docs/TransactionResponseAuthenticationRedirect.md +0 -10
  379. data/docs/TransactionResponseAuthenticationRedirectParams.md +0 -10
  380. data/lib/swagger_client/api/order_api.rb +0 -229
  381. data/lib/swagger_client/models/response_type.rb +0 -37
  382. data/lib/swagger_client/models/transaction_type.rb +0 -36
  383. data/lib/swagger_client/version.rb +0 -15
  384. data/lib/swagger_client.rb +0 -91
  385. data/spec/models/payment_card_authentication_request_spec.rb +0 -46
  386. data/spec/models/transaction_response_authentication_redirect_params_spec.rb +0 -54
  387. data/spec/models/transaction_response_authentication_redirect_spec.rb +0 -58
@@ -0,0 +1,307 @@
1
+ =begin
2
+ #Payment Gateway API Specification.
3
+
4
+ #Payment Gateway API for payment processing. Version 6.4.0.20181018.001
5
+
6
+ OpenAPI spec version: 6.4.0.20181018.001
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: unset
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ class ExchangeRateRequest
17
+ # Type of exchange rate inquiry. Valid values are 'DCC' and 'DYNAMIC_PRICING'.
18
+ attr_accessor :type
19
+
20
+ # An optional Outlet ID for clients that support multiple stores in the same app.
21
+ attr_accessor :store_id
22
+
23
+ # A bank identification number (BIN) of the card to be used for DCC.
24
+ attr_accessor :bin
25
+
26
+ # The original amount of the merchant currency for calculation.
27
+ attr_accessor :base_amount
28
+
29
+ # The currency code to convert for Dynamic Pricing.
30
+ attr_accessor :foreign_currency
31
+
32
+ class EnumAttributeValidator
33
+ attr_reader :datatype
34
+ attr_reader :allowable_values
35
+
36
+ def initialize(datatype, allowable_values)
37
+ @allowable_values = allowable_values.map do |value|
38
+ case datatype.to_s
39
+ when /Integer/i
40
+ value.to_i
41
+ when /Float/i
42
+ value.to_f
43
+ else
44
+ value
45
+ end
46
+ end
47
+ end
48
+
49
+ def valid?(value)
50
+ !value || allowable_values.include?(value)
51
+ end
52
+ end
53
+
54
+ # Attribute mapping from ruby-style variable name to JSON key.
55
+ def self.attribute_map
56
+ {
57
+ :'type' => :'type',
58
+ :'store_id' => :'storeId',
59
+ :'bin' => :'bin',
60
+ :'base_amount' => :'baseAmount',
61
+ :'foreign_currency' => :'foreignCurrency'
62
+ }
63
+ end
64
+
65
+ # Attribute type mapping.
66
+ def self.openapi_types
67
+ {
68
+ :'type' => :'String',
69
+ :'store_id' => :'String',
70
+ :'bin' => :'String',
71
+ :'base_amount' => :'Float',
72
+ :'foreign_currency' => :'String'
73
+ }
74
+ end
75
+
76
+ # Initializes the object
77
+ # @param [Hash] attributes Model attributes in the form of hash
78
+ def initialize(attributes = {})
79
+ return unless attributes.is_a?(Hash)
80
+
81
+ # convert string to symbol for hash key
82
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
83
+
84
+ if attributes.has_key?(:'type')
85
+ self.type = attributes[:'type']
86
+ end
87
+
88
+ if attributes.has_key?(:'storeId')
89
+ self.store_id = attributes[:'storeId']
90
+ end
91
+
92
+ if attributes.has_key?(:'bin')
93
+ self.bin = attributes[:'bin']
94
+ end
95
+
96
+ if attributes.has_key?(:'baseAmount')
97
+ self.base_amount = attributes[:'baseAmount']
98
+ end
99
+
100
+ if attributes.has_key?(:'foreignCurrency')
101
+ self.foreign_currency = attributes[:'foreignCurrency']
102
+ end
103
+ end
104
+
105
+ # Show invalid properties with the reasons. Usually used together with valid?
106
+ # @return Array for valid properties with the reasons
107
+ def list_invalid_properties
108
+ invalid_properties = Array.new
109
+ if @type.nil?
110
+ invalid_properties.push('invalid value for "type", type cannot be nil.')
111
+ end
112
+
113
+ if !@store_id.nil? && @store_id.to_s.length > 20
114
+ invalid_properties.push('invalid value for "store_id", the character length must be smaller than or equal to 20.')
115
+ end
116
+
117
+ if !@bin.nil? && @bin.to_s.length > 6
118
+ invalid_properties.push('invalid value for "bin", the character length must be smaller than or equal to 6.')
119
+ end
120
+
121
+ if !@bin.nil? && @bin !~ Regexp.new(/[0-9]{6}/)
122
+ invalid_properties.push('invalid value for "bin", must conform to the pattern /[0-9]{6}/.')
123
+ end
124
+
125
+ if @base_amount.nil?
126
+ invalid_properties.push('invalid value for "base_amount", base_amount cannot be nil.')
127
+ end
128
+
129
+ invalid_properties
130
+ end
131
+
132
+ # Check to see if the all the properties in the model are valid
133
+ # @return true if the model is valid
134
+ def valid?
135
+ return false if @type.nil?
136
+ type_validator = EnumAttributeValidator.new('String', ['DCC', 'DYNAMIC_PRICING'])
137
+ return false unless type_validator.valid?(@type)
138
+ return false if !@store_id.nil? && @store_id.to_s.length > 20
139
+ return false if !@bin.nil? && @bin.to_s.length > 6
140
+ return false if !@bin.nil? && @bin !~ Regexp.new(/[0-9]{6}/)
141
+ return false if @base_amount.nil?
142
+ true
143
+ end
144
+
145
+ # Custom attribute writer method checking allowed values (enum).
146
+ # @param [Object] type Object to be assigned
147
+ def type=(type)
148
+ validator = EnumAttributeValidator.new('String', ['DCC', 'DYNAMIC_PRICING'])
149
+ unless validator.valid?(type)
150
+ fail ArgumentError, 'invalid value for "type", must be one of #{validator.allowable_values}.'
151
+ end
152
+ @type = type
153
+ end
154
+
155
+ # Custom attribute writer method with validation
156
+ # @param [Object] store_id Value to be assigned
157
+ def store_id=(store_id)
158
+ if !store_id.nil? && store_id.to_s.length > 20
159
+ fail ArgumentError, 'invalid value for "store_id", the character length must be smaller than or equal to 20.'
160
+ end
161
+
162
+ @store_id = store_id
163
+ end
164
+
165
+ # Custom attribute writer method with validation
166
+ # @param [Object] bin Value to be assigned
167
+ def bin=(bin)
168
+ if !bin.nil? && bin.to_s.length > 6
169
+ fail ArgumentError, 'invalid value for "bin", the character length must be smaller than or equal to 6.'
170
+ end
171
+
172
+ if !bin.nil? && bin !~ Regexp.new(/[0-9]{6}/)
173
+ fail ArgumentError, 'invalid value for "bin", must conform to the pattern /[0-9]{6}/.'
174
+ end
175
+
176
+ @bin = bin
177
+ end
178
+
179
+ # Checks equality by comparing each attribute.
180
+ # @param [Object] Object to be compared
181
+ def ==(o)
182
+ return true if self.equal?(o)
183
+ self.class == o.class &&
184
+ type == o.type &&
185
+ store_id == o.store_id &&
186
+ bin == o.bin &&
187
+ base_amount == o.base_amount &&
188
+ foreign_currency == o.foreign_currency
189
+ end
190
+
191
+ # @see the `==` method
192
+ # @param [Object] Object to be compared
193
+ def eql?(o)
194
+ self == o
195
+ end
196
+
197
+ # Calculates hash code according to all attributes.
198
+ # @return [Fixnum] Hash code
199
+ def hash
200
+ [type, store_id, bin, base_amount, foreign_currency].hash
201
+ end
202
+
203
+ # Builds the object from hash
204
+ # @param [Hash] attributes Model attributes in the form of hash
205
+ # @return [Object] Returns the model itself
206
+ def build_from_hash(attributes)
207
+ return nil unless attributes.is_a?(Hash)
208
+ self.class.openapi_types.each_pair do |key, type|
209
+ if type =~ /\AArray<(.*)>/i
210
+ # check to ensure the input is an array given that the the attribute
211
+ # is documented as an array but the input is not
212
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
213
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
214
+ end
215
+ elsif !attributes[self.class.attribute_map[key]].nil?
216
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
217
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
218
+ end
219
+
220
+ self
221
+ end
222
+
223
+ # Deserializes the data based on type
224
+ # @param string type Data type
225
+ # @param string value Value to be deserialized
226
+ # @return [Object] Deserialized data
227
+ def _deserialize(type, value)
228
+ case type.to_sym
229
+ when :DateTime
230
+ DateTime.parse(value)
231
+ when :Date
232
+ Date.parse(value)
233
+ when :String
234
+ value.to_s
235
+ when :Integer
236
+ value.to_i
237
+ when :Float
238
+ value.to_f
239
+ when :BOOLEAN
240
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
241
+ true
242
+ else
243
+ false
244
+ end
245
+ when :Object
246
+ # generic object (usually a Hash), return directly
247
+ value
248
+ when /\AArray<(?<inner_type>.+)>\z/
249
+ inner_type = Regexp.last_match[:inner_type]
250
+ value.map { |v| _deserialize(inner_type, v) }
251
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
252
+ k_type = Regexp.last_match[:k_type]
253
+ v_type = Regexp.last_match[:v_type]
254
+ {}.tap do |hash|
255
+ value.each do |k, v|
256
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
257
+ end
258
+ end
259
+ else # model
260
+ temp_model = OpenapiClient.const_get(type).new
261
+ temp_model.build_from_hash(value)
262
+ end
263
+ end
264
+
265
+ # Returns the string representation of the object
266
+ # @return [String] String presentation of the object
267
+ def to_s
268
+ to_hash.to_s
269
+ end
270
+
271
+ # to_body is an alias to to_hash (backward compatibility)
272
+ # @return [Hash] Returns the object in the form of hash
273
+ def to_body
274
+ to_hash
275
+ end
276
+
277
+ # Returns the object in the form of hash
278
+ # @return [Hash] Returns the object in the form of hash
279
+ def to_hash
280
+ hash = {}
281
+ self.class.attribute_map.each_pair do |attr, param|
282
+ value = self.send(attr)
283
+ next if value.nil?
284
+ hash[param] = _to_hash(value)
285
+ end
286
+ hash
287
+ end
288
+
289
+ # Outputs non-array value in the form of hash
290
+ # For object, use to_hash. Otherwise, just return the value
291
+ # @param [Object] value Any valid value
292
+ # @return [Hash] Returns the value in the form of hash
293
+ def _to_hash(value)
294
+ if value.is_a?(Array)
295
+ value.compact.map { |v| _to_hash(v) }
296
+ elsif value.is_a?(Hash)
297
+ {}.tap do |hash|
298
+ value.each { |k, v| hash[k] = _to_hash(v) }
299
+ end
300
+ elsif value.respond_to? :to_hash
301
+ value.to_hash
302
+ else
303
+ value
304
+ end
305
+ end
306
+ end
307
+ end
@@ -0,0 +1,319 @@
1
+ =begin
2
+ #Payment Gateway API Specification.
3
+
4
+ #Payment Gateway API for payment processing. Version 6.4.0.20181018.001
5
+
6
+ OpenAPI spec version: 6.4.0.20181018.001
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: unset
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ # Exchange rate response
17
+ class ExchangeRateResponse
18
+ # Echoes back the value in the request header
19
+ attr_accessor :client_request_id
20
+
21
+ # Echoes back the value in the request header
22
+ attr_accessor :api_trace_id
23
+
24
+ attr_accessor :response_type
25
+
26
+ # The response transaction ID
27
+ attr_accessor :ipg_transaction_id
28
+
29
+ # Time of the request
30
+ attr_accessor :request_time
31
+
32
+ # Inquiry rate ID.
33
+ attr_accessor :inquiry_rate_id
34
+
35
+ # Foreign currency code
36
+ attr_accessor :foreign_currency_code
37
+
38
+ # Foreign amount
39
+ attr_accessor :foreign_amount
40
+
41
+ # Exchange rate
42
+ attr_accessor :exchange_rate
43
+
44
+ # Dcc offered.
45
+ attr_accessor :dcc_offered
46
+
47
+ # Exchange rate source timestamp
48
+ attr_accessor :exchange_rate_source_timestamp
49
+
50
+ # Expiration timestamp
51
+ attr_accessor :expiration_timestamp
52
+
53
+ # Margin rate percentage.
54
+ attr_accessor :margin_rate_percentage
55
+
56
+ # Exchange rate source name
57
+ attr_accessor :exchange_rate_source_name
58
+
59
+ # Attribute mapping from ruby-style variable name to JSON key.
60
+ def self.attribute_map
61
+ {
62
+ :'client_request_id' => :'clientRequestId',
63
+ :'api_trace_id' => :'apiTraceId',
64
+ :'response_type' => :'responseType',
65
+ :'ipg_transaction_id' => :'ipgTransactionId',
66
+ :'request_time' => :'requestTime',
67
+ :'inquiry_rate_id' => :'inquiryRateId',
68
+ :'foreign_currency_code' => :'foreignCurrencyCode',
69
+ :'foreign_amount' => :'foreignAmount',
70
+ :'exchange_rate' => :'exchangeRate',
71
+ :'dcc_offered' => :'dccOffered',
72
+ :'exchange_rate_source_timestamp' => :'exchangeRateSourceTimestamp',
73
+ :'expiration_timestamp' => :'expirationTimestamp',
74
+ :'margin_rate_percentage' => :'marginRatePercentage',
75
+ :'exchange_rate_source_name' => :'exchangeRateSourceName'
76
+ }
77
+ end
78
+
79
+ # Attribute type mapping.
80
+ def self.openapi_types
81
+ {
82
+ :'client_request_id' => :'String',
83
+ :'api_trace_id' => :'String',
84
+ :'response_type' => :'ResponseType',
85
+ :'ipg_transaction_id' => :'String',
86
+ :'request_time' => :'String',
87
+ :'inquiry_rate_id' => :'String',
88
+ :'foreign_currency_code' => :'String',
89
+ :'foreign_amount' => :'String',
90
+ :'exchange_rate' => :'String',
91
+ :'dcc_offered' => :'String',
92
+ :'exchange_rate_source_timestamp' => :'String',
93
+ :'expiration_timestamp' => :'String',
94
+ :'margin_rate_percentage' => :'String',
95
+ :'exchange_rate_source_name' => :'String'
96
+ }
97
+ end
98
+
99
+ # Initializes the object
100
+ # @param [Hash] attributes Model attributes in the form of hash
101
+ def initialize(attributes = {})
102
+ return unless attributes.is_a?(Hash)
103
+
104
+ # convert string to symbol for hash key
105
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
106
+
107
+ if attributes.has_key?(:'clientRequestId')
108
+ self.client_request_id = attributes[:'clientRequestId']
109
+ end
110
+
111
+ if attributes.has_key?(:'apiTraceId')
112
+ self.api_trace_id = attributes[:'apiTraceId']
113
+ end
114
+
115
+ if attributes.has_key?(:'responseType')
116
+ self.response_type = attributes[:'responseType']
117
+ end
118
+
119
+ if attributes.has_key?(:'ipgTransactionId')
120
+ self.ipg_transaction_id = attributes[:'ipgTransactionId']
121
+ end
122
+
123
+ if attributes.has_key?(:'requestTime')
124
+ self.request_time = attributes[:'requestTime']
125
+ end
126
+
127
+ if attributes.has_key?(:'inquiryRateId')
128
+ self.inquiry_rate_id = attributes[:'inquiryRateId']
129
+ end
130
+
131
+ if attributes.has_key?(:'foreignCurrencyCode')
132
+ self.foreign_currency_code = attributes[:'foreignCurrencyCode']
133
+ end
134
+
135
+ if attributes.has_key?(:'foreignAmount')
136
+ self.foreign_amount = attributes[:'foreignAmount']
137
+ end
138
+
139
+ if attributes.has_key?(:'exchangeRate')
140
+ self.exchange_rate = attributes[:'exchangeRate']
141
+ end
142
+
143
+ if attributes.has_key?(:'dccOffered')
144
+ self.dcc_offered = attributes[:'dccOffered']
145
+ end
146
+
147
+ if attributes.has_key?(:'exchangeRateSourceTimestamp')
148
+ self.exchange_rate_source_timestamp = attributes[:'exchangeRateSourceTimestamp']
149
+ end
150
+
151
+ if attributes.has_key?(:'expirationTimestamp')
152
+ self.expiration_timestamp = attributes[:'expirationTimestamp']
153
+ end
154
+
155
+ if attributes.has_key?(:'marginRatePercentage')
156
+ self.margin_rate_percentage = attributes[:'marginRatePercentage']
157
+ end
158
+
159
+ if attributes.has_key?(:'exchangeRateSourceName')
160
+ self.exchange_rate_source_name = attributes[:'exchangeRateSourceName']
161
+ end
162
+ end
163
+
164
+ # Show invalid properties with the reasons. Usually used together with valid?
165
+ # @return Array for valid properties with the reasons
166
+ def list_invalid_properties
167
+ invalid_properties = Array.new
168
+ if @response_type.nil?
169
+ invalid_properties.push('invalid value for "response_type", response_type cannot be nil.')
170
+ end
171
+
172
+ invalid_properties
173
+ end
174
+
175
+ # Check to see if the all the properties in the model are valid
176
+ # @return true if the model is valid
177
+ def valid?
178
+ return false if @response_type.nil?
179
+ true
180
+ end
181
+
182
+ # Checks equality by comparing each attribute.
183
+ # @param [Object] Object to be compared
184
+ def ==(o)
185
+ return true if self.equal?(o)
186
+ self.class == o.class &&
187
+ client_request_id == o.client_request_id &&
188
+ api_trace_id == o.api_trace_id &&
189
+ response_type == o.response_type &&
190
+ ipg_transaction_id == o.ipg_transaction_id &&
191
+ request_time == o.request_time &&
192
+ inquiry_rate_id == o.inquiry_rate_id &&
193
+ foreign_currency_code == o.foreign_currency_code &&
194
+ foreign_amount == o.foreign_amount &&
195
+ exchange_rate == o.exchange_rate &&
196
+ dcc_offered == o.dcc_offered &&
197
+ exchange_rate_source_timestamp == o.exchange_rate_source_timestamp &&
198
+ expiration_timestamp == o.expiration_timestamp &&
199
+ margin_rate_percentage == o.margin_rate_percentage &&
200
+ exchange_rate_source_name == o.exchange_rate_source_name
201
+ end
202
+
203
+ # @see the `==` method
204
+ # @param [Object] Object to be compared
205
+ def eql?(o)
206
+ self == o
207
+ end
208
+
209
+ # Calculates hash code according to all attributes.
210
+ # @return [Fixnum] Hash code
211
+ def hash
212
+ [client_request_id, api_trace_id, response_type, ipg_transaction_id, request_time, inquiry_rate_id, foreign_currency_code, foreign_amount, exchange_rate, dcc_offered, exchange_rate_source_timestamp, expiration_timestamp, margin_rate_percentage, exchange_rate_source_name].hash
213
+ end
214
+
215
+ # Builds the object from hash
216
+ # @param [Hash] attributes Model attributes in the form of hash
217
+ # @return [Object] Returns the model itself
218
+ def build_from_hash(attributes)
219
+ return nil unless attributes.is_a?(Hash)
220
+ self.class.openapi_types.each_pair do |key, type|
221
+ if type =~ /\AArray<(.*)>/i
222
+ # check to ensure the input is an array given that the the attribute
223
+ # is documented as an array but the input is not
224
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
225
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
226
+ end
227
+ elsif !attributes[self.class.attribute_map[key]].nil?
228
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
229
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
230
+ end
231
+
232
+ self
233
+ end
234
+
235
+ # Deserializes the data based on type
236
+ # @param string type Data type
237
+ # @param string value Value to be deserialized
238
+ # @return [Object] Deserialized data
239
+ def _deserialize(type, value)
240
+ case type.to_sym
241
+ when :DateTime
242
+ DateTime.parse(value)
243
+ when :Date
244
+ Date.parse(value)
245
+ when :String
246
+ value.to_s
247
+ when :Integer
248
+ value.to_i
249
+ when :Float
250
+ value.to_f
251
+ when :BOOLEAN
252
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
253
+ true
254
+ else
255
+ false
256
+ end
257
+ when :Object
258
+ # generic object (usually a Hash), return directly
259
+ value
260
+ when /\AArray<(?<inner_type>.+)>\z/
261
+ inner_type = Regexp.last_match[:inner_type]
262
+ value.map { |v| _deserialize(inner_type, v) }
263
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
264
+ k_type = Regexp.last_match[:k_type]
265
+ v_type = Regexp.last_match[:v_type]
266
+ {}.tap do |hash|
267
+ value.each do |k, v|
268
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
269
+ end
270
+ end
271
+ else # model
272
+ temp_model = OpenapiClient.const_get(type).new
273
+ temp_model.build_from_hash(value)
274
+ end
275
+ end
276
+
277
+ # Returns the string representation of the object
278
+ # @return [String] String presentation of the object
279
+ def to_s
280
+ to_hash.to_s
281
+ end
282
+
283
+ # to_body is an alias to to_hash (backward compatibility)
284
+ # @return [Hash] Returns the object in the form of hash
285
+ def to_body
286
+ to_hash
287
+ end
288
+
289
+ # Returns the object in the form of hash
290
+ # @return [Hash] Returns the object in the form of hash
291
+ def to_hash
292
+ hash = {}
293
+ self.class.attribute_map.each_pair do |attr, param|
294
+ value = self.send(attr)
295
+ next if value.nil?
296
+ hash[param] = _to_hash(value)
297
+ end
298
+ hash
299
+ end
300
+
301
+ # Outputs non-array value in the form of hash
302
+ # For object, use to_hash. Otherwise, just return the value
303
+ # @param [Object] value Any valid value
304
+ # @return [Hash] Returns the value in the form of hash
305
+ def _to_hash(value)
306
+ if value.is_a?(Array)
307
+ value.compact.map { |v| _to_hash(v) }
308
+ elsif value.is_a?(Hash)
309
+ {}.tap do |hash|
310
+ value.each { |k, v| hash[k] = _to_hash(v) }
311
+ end
312
+ elsif value.respond_to? :to_hash
313
+ value.to_hash
314
+ else
315
+ value
316
+ end
317
+ end
318
+ end
319
+ end