moneykit 0.0.2 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/moneykit/api/access_token_api.rb +53 -55
  4. data/lib/moneykit/api/account_numbers_api.rb +26 -26
  5. data/lib/moneykit/api/accounts_api.rb +88 -82
  6. data/lib/moneykit/api/identity_api.rb +31 -30
  7. data/lib/moneykit/api/institutions_api.rb +50 -48
  8. data/lib/moneykit/api/link_session_api.rb +47 -50
  9. data/lib/moneykit/api/links_api.rb +137 -81
  10. data/lib/moneykit/api/products_api.rb +33 -35
  11. data/lib/moneykit/api/transactions_api.rb +126 -101
  12. data/lib/moneykit/api/users_api.rb +100 -83
  13. data/lib/moneykit/api/webhooks_api.rb +97 -0
  14. data/lib/moneykit/api_client.rb +100 -103
  15. data/lib/moneykit/api_error.rb +14 -16
  16. data/lib/moneykit/configuration.rb +52 -65
  17. data/lib/moneykit/models/account.rb +69 -112
  18. data/lib/moneykit/models/account_balances.rb +64 -78
  19. data/lib/moneykit/models/account_group.rb +58 -61
  20. data/lib/moneykit/models/account_identity.rb +79 -124
  21. data/lib/moneykit/models/account_numbers.rb +96 -71
  22. data/lib/moneykit/models/account_numbers_link_product.rb +57 -69
  23. data/lib/moneykit/models/account_numbers_product_settings.rb +59 -63
  24. data/lib/moneykit/models/account_type.rb +23 -23
  25. data/lib/moneykit/models/account_with_account_numbers.rb +76 -124
  26. data/lib/moneykit/models/accounts_link_product.rb +53 -61
  27. data/lib/moneykit/models/ach_number.rb +57 -65
  28. data/lib/moneykit/models/address.rb +70 -90
  29. data/lib/moneykit/models/api_error_auth_expired_access_token_response.rb +72 -78
  30. data/lib/moneykit/models/api_error_auth_unauthorized_response.rb +69 -78
  31. data/lib/moneykit/models/api_error_rate_limit_exceeded_response.rb +72 -78
  32. data/lib/moneykit/models/app.rb +46 -50
  33. data/lib/moneykit/models/bacs_number.rb +53 -61
  34. data/lib/moneykit/models/balances.rb +58 -64
  35. data/lib/moneykit/models/basic_account_details.rb +62 -77
  36. data/lib/moneykit/models/country.rb +13 -14
  37. data/lib/moneykit/models/create_link_session_request.rb +109 -119
  38. data/lib/moneykit/models/create_link_session_response.rb +48 -52
  39. data/lib/moneykit/models/currency.rb +193 -193
  40. data/lib/moneykit/models/cursor.rb +40 -39
  41. data/lib/moneykit/models/cursor_pagination.rb +49 -54
  42. data/lib/moneykit/models/cursors.rb +40 -39
  43. data/lib/moneykit/models/customer_app.rb +54 -64
  44. data/lib/moneykit/models/customer_user.rb +59 -69
  45. data/lib/moneykit/models/eft_number.rb +56 -67
  46. data/lib/moneykit/models/email.rb +56 -63
  47. data/lib/moneykit/models/email1.rb +50 -53
  48. data/lib/moneykit/models/exchange_token_request.rb +48 -52
  49. data/lib/moneykit/models/exchange_token_response.rb +54 -64
  50. data/lib/moneykit/models/generate_access_token_response.rb +59 -73
  51. data/lib/moneykit/models/get_account_numbers_response.rb +58 -66
  52. data/lib/moneykit/models/get_account_response.rb +55 -67
  53. data/lib/moneykit/models/get_accounts_response.rb +58 -67
  54. data/lib/moneykit/models/get_institutions_response.rb +58 -67
  55. data/lib/moneykit/models/get_transactions_response.rb +81 -105
  56. data/lib/moneykit/models/get_user_accounts_response.rb +50 -58
  57. data/lib/moneykit/models/get_user_links_response.rb +50 -58
  58. data/lib/moneykit/models/get_user_transactions_response.rb +75 -95
  59. data/lib/moneykit/models/http_validation_error.rb +77 -84
  60. data/lib/moneykit/models/identity.rb +49 -49
  61. data/lib/moneykit/models/identity_link_product.rb +57 -69
  62. data/lib/moneykit/models/identity_product_settings.rb +59 -63
  63. data/lib/moneykit/models/identity_response.rb +58 -67
  64. data/lib/moneykit/models/institution.rb +85 -113
  65. data/lib/moneykit/models/institution_error_not_found_response.rb +72 -80
  66. data/lib/moneykit/models/institution_styling_response.rb +77 -93
  67. data/lib/moneykit/models/international_number.rb +54 -64
  68. data/lib/moneykit/models/introspect_client_response.rb +70 -89
  69. data/lib/moneykit/models/jwk_set.rb +51 -55
  70. data/lib/moneykit/models/link.rb +78 -100
  71. data/lib/moneykit/models/link1.rb +78 -100
  72. data/lib/moneykit/models/link2.rb +78 -100
  73. data/lib/moneykit/models/link3.rb +78 -100
  74. data/lib/moneykit/models/link4.rb +78 -100
  75. data/lib/moneykit/models/link_common.rb +82 -117
  76. data/lib/moneykit/models/link_error.rb +19 -19
  77. data/lib/moneykit/models/link_error_bad_config_response.rb +269 -0
  78. data/lib/moneykit/models/link_error_bad_state_response.rb +71 -88
  79. data/lib/moneykit/models/link_error_deleted_response.rb +72 -80
  80. data/lib/moneykit/models/link_error_forbidden_action_response.rb +69 -78
  81. data/lib/moneykit/models/link_error_not_found_response.rb +72 -80
  82. data/lib/moneykit/models/link_error_unauthorized_access_response.rb +72 -80
  83. data/lib/moneykit/models/link_permission_scope.rb +14 -15
  84. data/lib/moneykit/models/link_permissions.rb +52 -62
  85. data/lib/moneykit/models/link_products.rb +62 -78
  86. data/lib/moneykit/models/link_response.rb +95 -136
  87. data/lib/moneykit/models/link_session_customer_user.rb +65 -83
  88. data/lib/moneykit/models/link_session_customer_user_email.rb +59 -68
  89. data/lib/moneykit/models/link_session_customer_user_phone.rb +67 -82
  90. data/lib/moneykit/models/link_session_error_forbidden_config_response.rb +69 -78
  91. data/lib/moneykit/models/link_session_error_invalid_token_exchange.rb +69 -78
  92. data/lib/moneykit/models/link_session_setting_overrides.rb +64 -99
  93. data/lib/moneykit/models/link_state.rb +15 -16
  94. data/lib/moneykit/models/link_state_changed_webhook.rb +121 -148
  95. data/lib/moneykit/models/location_inner.rb +41 -46
  96. data/lib/moneykit/models/money_kit_env.rb +12 -13
  97. data/lib/moneykit/models/money_link_features.rb +62 -66
  98. data/lib/moneykit/models/moneylink_features.rb +50 -49
  99. data/lib/moneykit/models/numbers.rb +60 -73
  100. data/lib/moneykit/models/owner.rb +76 -89
  101. data/lib/moneykit/models/phone.rb +60 -68
  102. data/lib/moneykit/models/phone_number.rb +63 -74
  103. data/lib/moneykit/models/phone_number_type.rb +14 -15
  104. data/lib/moneykit/models/product.rb +14 -15
  105. data/lib/moneykit/models/products.rb +52 -64
  106. data/lib/moneykit/models/products1.rb +48 -56
  107. data/lib/moneykit/models/products_settings.rb +58 -70
  108. data/lib/moneykit/models/provider.rb +18 -17
  109. data/lib/moneykit/models/public_link_error.rb +43 -0
  110. data/lib/moneykit/models/refresh_products_request.rb +52 -65
  111. data/lib/moneykit/models/requested_link_permission.rb +60 -75
  112. data/lib/moneykit/models/response401_disconnect_links_id_delete.rb +83 -283
  113. data/lib/moneykit/models/response401_exchange_token_link_session_exchange_token_post.rb +82 -281
  114. data/lib/moneykit/models/response401_get_account_links_id_accounts_account_id_get.rb +83 -283
  115. data/lib/moneykit/models/response401_get_account_numbers_links_id_accounts_numbers_get.rb +83 -283
  116. data/lib/moneykit/models/response401_get_accounts_links_id_accounts_get.rb +83 -283
  117. data/lib/moneykit/models/response401_get_identities_links_id_identity_get.rb +83 -283
  118. data/lib/moneykit/models/response401_get_institution_institutions_institution_id_get.rb +82 -281
  119. data/lib/moneykit/models/response401_get_institution_styling_institutions_institution_id_styling_get.rb +66 -72
  120. data/lib/moneykit/models/response401_get_institutions_institutions_get.rb +82 -281
  121. data/lib/moneykit/models/response401_get_link_links_id_get.rb +83 -283
  122. data/lib/moneykit/models/response401_get_transactions_diff_links_id_transactions_sync_get.rb +83 -283
  123. data/lib/moneykit/models/response401_get_transactions_links_id_transactions_get.rb +83 -283
  124. data/lib/moneykit/models/response401_get_user_accounts_users_id_accounts_get.rb +82 -281
  125. data/lib/moneykit/models/response401_get_user_links_users_id_links_get.rb +82 -281
  126. data/lib/moneykit/models/response401_get_user_transactions_users_id_transactions_get.rb +82 -281
  127. data/lib/moneykit/models/response401_get_well_known_jwks_well_known_jwks_json_get.rb +82 -281
  128. data/lib/moneykit/models/response401_instrospect_client_auth_introspect_get.rb +82 -281
  129. data/lib/moneykit/models/response401_refresh_products_links_id_products_post.rb +83 -283
  130. data/lib/moneykit/models/response401_reset_login_links_id_reset_post.rb +102 -0
  131. data/lib/moneykit/models/response401_trigger_test_link_webhook_event_webhooks_test_link_id_post.rb +102 -0
  132. data/lib/moneykit/models/response401_update_link_links_id_patch.rb +83 -283
  133. data/lib/moneykit/models/settings.rb +61 -73
  134. data/lib/moneykit/models/supported_version.rb +11 -12
  135. data/lib/moneykit/models/transaction.rb +104 -131
  136. data/lib/moneykit/models/transaction_diff.rb +69 -78
  137. data/lib/moneykit/models/transaction_sync_response.rb +65 -87
  138. data/lib/moneykit/models/transaction_type.rb +12 -13
  139. data/lib/moneykit/models/transaction_type_filter.rb +12 -13
  140. data/lib/moneykit/models/transactions.rb +58 -57
  141. data/lib/moneykit/models/transactions1.rb +55 -63
  142. data/lib/moneykit/models/transactions_link_product.rb +57 -69
  143. data/lib/moneykit/models/transactions_product_settings.rb +67 -71
  144. data/lib/moneykit/models/update_link_request.rb +63 -69
  145. data/lib/moneykit/models/user_accounts_out.rb +40 -40
  146. data/lib/moneykit/models/user_links_out.rb +40 -40
  147. data/lib/moneykit/models/user_transactions_paged_response.rb +40 -40
  148. data/lib/moneykit/models/validation_error.rb +63 -77
  149. data/lib/moneykit/models/validation_error_location_inner.rb +101 -0
  150. data/lib/moneykit/models/webhook_link_test_event.rb +40 -0
  151. data/lib/moneykit/models/webhook_test_link_request.rb +252 -0
  152. data/lib/moneykit/models/webhook_test_link_response.rb +220 -0
  153. data/lib/moneykit/version.rb +10 -12
  154. data/lib/moneykit.rb +18 -39
  155. data/lib/plaid_compatible/money_kit_plaid_compatible/api/plaid_api.rb +738 -737
  156. data/lib/plaid_compatible/money_kit_plaid_compatible/api_client.rb +339 -340
  157. data/lib/plaid_compatible/money_kit_plaid_compatible/api_error.rb +47 -47
  158. data/lib/plaid_compatible/money_kit_plaid_compatible/configuration.rb +258 -260
  159. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_balance.rb +210 -212
  160. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_base.rb +221 -237
  161. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_identity.rb +231 -252
  162. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_subtype.rb +100 -101
  163. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_type.rb +35 -36
  164. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request.rb +209 -211
  165. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request_options.rb +188 -185
  166. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_response.rb +205 -210
  167. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address.rb +195 -193
  168. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address_data.rb +222 -226
  169. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_numbers.rb +218 -226
  170. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request.rb +209 -211
  171. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request_options.rb +188 -185
  172. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_response.rb +211 -222
  173. data/lib/plaid_compatible/money_kit_plaid_compatible/models/country_code.rb +32 -33
  174. data/lib/plaid_compatible/money_kit_plaid_compatible/models/email.rb +197 -198
  175. data/lib/plaid_compatible/money_kit_plaid_compatible/models/http_validation_error.rb +183 -181
  176. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request.rb +209 -211
  177. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request_options.rb +188 -185
  178. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_response.rb +205 -210
  179. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institution.rb +228 -232
  180. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_request.rb +216 -217
  181. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_response.rb +195 -196
  182. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item.rb +251 -261
  183. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_error_webhook.rb +217 -229
  184. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_request.rb +205 -205
  185. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_response.rb +201 -205
  186. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_request.rb +205 -205
  187. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_response.rb +206 -211
  188. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_request.rb +205 -205
  189. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_response.rb +188 -185
  190. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_investments.rb +195 -193
  191. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_last_webhook.rb +195 -193
  192. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_nullable.rb +194 -198
  193. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_transactions.rb +195 -193
  194. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request.rb +272 -291
  195. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request_user.rb +225 -225
  196. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_response.rb +206 -211
  197. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_ach.rb +215 -221
  198. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_bacs.rb +206 -211
  199. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_eft.rb +215 -224
  200. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_international.rb +206 -211
  201. data/lib/plaid_compatible/money_kit_plaid_compatible/models/owner.rb +218 -226
  202. data/lib/plaid_compatible/money_kit_plaid_compatible/models/personal_finance_category.rb +197 -198
  203. data/lib/plaid_compatible/money_kit_plaid_compatible/models/phone_number.rb +206 -211
  204. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error.rb +253 -266
  205. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error_type.rb +43 -44
  206. data/lib/plaid_compatible/money_kit_plaid_compatible/models/products.rb +33 -34
  207. data/lib/plaid_compatible/money_kit_plaid_compatible/models/removed_transaction.rb +187 -183
  208. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transaction.rb +288 -315
  209. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request.rb +225 -235
  210. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request_options.rb +222 -224
  211. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_response.rb +225 -236
  212. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_request.rb +205 -205
  213. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_response.rb +188 -185
  214. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request.rb +223 -229
  215. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request_options.rb +197 -193
  216. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_response.rb +235 -252
  217. data/lib/plaid_compatible/money_kit_plaid_compatible/models/validation_error.rb +198 -207
  218. data/lib/plaid_compatible/money_kit_plaid_compatible/models/webhook_environment_values.rb +32 -33
  219. data/lib/plaid_compatible/money_kit_plaid_compatible/version.rb +14 -14
  220. data/lib/plaid_compatible/money_kit_plaid_compatible.rb +24 -24
  221. data/moneykit.gemspec +22 -25
  222. metadata +14 -5
@@ -1,352 +1,333 @@
1
- =begin
2
- #Plaid Compatibility Layer
3
-
4
- #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
-
6
- The version of the OpenAPI document: 0.1.0
7
-
8
- Generated by: https://openapi-generator.tech
9
- OpenAPI Generator version: 5.1.1
10
-
11
- =end
1
+ # #Plaid Compatibility Layer
2
+ #
3
+ # No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
4
+ #
5
+ # The version of the OpenAPI document: 0.1.0
6
+ #
7
+ # Generated by: https://openapi-generator.tech
8
+ # OpenAPI Generator version: 5.1.1
9
+ #
12
10
 
13
11
  require 'date'
14
12
  require 'time'
15
13
 
16
- module MoneyKit::PlaidCompatible
17
- # LinkTokenCreateRequest defines the request schema for `/link/token/create`
18
- class LinkTokenCreateRequest
19
- # Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
20
- attr_accessor :client_id
21
-
22
- # Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
23
- attr_accessor :secret
24
-
25
- # The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display \"This Application\" instead.
26
- attr_accessor :client_name
14
+ module MoneyKit
15
+ module PlaidCompatible
16
+ # LinkTokenCreateRequest defines the request schema for `/link/token/create`
17
+ class LinkTokenCreateRequest
18
+ # Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
19
+ attr_accessor :client_id
20
+
21
+ # Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
22
+ attr_accessor :secret
23
+
24
+ # The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display \"This Application\" instead.
25
+ attr_accessor :client_name
26
+
27
+ # The language that Link should be displayed in. When initializing with Identity Verification, this field is not used; for more details, see [Identity Verification supported languages](https://www.plaid.com/docs/identity-verification/#supported-languages). Supported languages are: - Danish (`'da'`) - Dutch (`'nl'`) - English (`'en'`) - Estonian (`'et'`) - French (`'fr'`) - German (`'de'`) - Italian (`'it'`) - Latvian (`'lv'`) - Lithuanian (`'lt'`) - Norwegian (`'no'`) - Polish (`'pl'`) - Portuguese (`'pt'`) - Romanian (`'ro'`) - Spanish (`'es'`) - Swedish (`'se'`) When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
28
+ attr_accessor :language
29
+
30
+ # Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. Access to European institutions requires additional compliance steps. To request access to European institutions in the Production environment, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow. If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`, or the customization may not be applied. If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, `country_codes` must be set to `['US']`.
31
+ attr_accessor :country_codes
32
+
33
+ attr_accessor :user
34
+
35
+ # List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted (unless you are using update mode to add Income or Assets to an Item); required otherwise. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically be initialized when any other product is initialized. The products specified here will determine which institutions will be available to your users in Link. Only institutions that support *all* requested products can be selected; a if a user attempts to select an institution that does not support a listed product, a \"Connectivity not supported\" error message will appear in Link. To maximize the number of institutions available, initialize Link with the minimal product set required for your use case. Additional products can be added after Link initialization by calling the relevant endpoints. For details and exceptions, see [Choosing when to initialize products](https://plaid.com/docs/link/initializing-products/). Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array. In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`.
36
+ attr_accessor :products
37
+
38
+ # (Beta) This field has no effect unless you are participating in the Product Scope Transparency beta program. List of additional Plaid product(s) you wish to collect consent for. These products will not be billed until you start using them by calling the relevant endpoints. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically have consent collected. Institutions that do not support these products will still be shown in Link
39
+ attr_accessor :additional_consented_products
40
+
41
+ # The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet transactions only), Transfer, Bank Transfer (including Auth micro-deposit notification webhooks) and Identity Verification are configured via the Dashboard instead.
42
+ attr_accessor :webhook
43
+
44
+ # The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow.
45
+ attr_accessor :access_token
46
+
47
+ # A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The `redirect_uri` should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use `*` as a wildcard character, e.g. `https://*.example.com/oauth.html`. Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api). If initializing on Android, `android_package_name` must be specified instead and `redirect_uri` should be left blank.
48
+ attr_accessor :redirect_uri
49
+
50
+ # Attribute mapping from ruby-style variable name to JSON key.
51
+ def self.attribute_map
52
+ {
53
+ 'client_id': :client_id,
54
+ 'secret': :secret,
55
+ 'client_name': :client_name,
56
+ 'language': :language,
57
+ 'country_codes': :country_codes,
58
+ 'user': :user,
59
+ 'products': :products,
60
+ 'additional_consented_products': :additional_consented_products,
61
+ 'webhook': :webhook,
62
+ 'access_token': :access_token,
63
+ 'redirect_uri': :redirect_uri
64
+ }
65
+ end
27
66
 
28
- # The language that Link should be displayed in. When initializing with Identity Verification, this field is not used; for more details, see [Identity Verification supported languages](https://www.plaid.com/docs/identity-verification/#supported-languages). Supported languages are: - Danish (`'da'`) - Dutch (`'nl'`) - English (`'en'`) - Estonian (`'et'`) - French (`'fr'`) - German (`'de'`) - Italian (`'it'`) - Latvian (`'lv'`) - Lithuanian (`'lt'`) - Norwegian (`'no'`) - Polish (`'pl'`) - Portuguese (`'pt'`) - Romanian (`'ro'`) - Spanish (`'es'`) - Swedish (`'se'`) When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
29
- attr_accessor :language
67
+ # Returns all the JSON keys this model knows about
68
+ def self.acceptable_attributes
69
+ attribute_map.values
70
+ end
30
71
 
31
- # Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. Access to European institutions requires additional compliance steps. To request access to European institutions in the Production environment, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow. If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`, or the customization may not be applied. If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, `country_codes` must be set to `['US']`.
32
- attr_accessor :country_codes
72
+ # Attribute type mapping.
73
+ def self.openapi_types
74
+ {
75
+ 'client_id': :String,
76
+ 'secret': :String,
77
+ 'client_name': :String,
78
+ 'language': :String,
79
+ 'country_codes': :'Array<CountryCode>',
80
+ 'user': :LinkTokenCreateRequestUser,
81
+ 'products': :'Array<Products>',
82
+ 'additional_consented_products': :'Array<Products>',
83
+ 'webhook': :String,
84
+ 'access_token': :String,
85
+ 'redirect_uri': :String
86
+ }
87
+ end
33
88
 
34
- attr_accessor :user
89
+ # List of attributes with nullable: true
90
+ def self.openapi_nullable
91
+ Set.new(%i[
92
+ client_id
93
+ secret
94
+ products
95
+ additional_consented_products
96
+ webhook
97
+ access_token
98
+ redirect_uri
99
+ ])
100
+ end
35
101
 
36
- # List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted (unless you are using update mode to add Income or Assets to an Item); required otherwise. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically be initialized when any other product is initialized. The products specified here will determine which institutions will be available to your users in Link. Only institutions that support *all* requested products can be selected; a if a user attempts to select an institution that does not support a listed product, a \"Connectivity not supported\" error message will appear in Link. To maximize the number of institutions available, initialize Link with the minimal product set required for your use case. Additional products can be added after Link initialization by calling the relevant endpoints. For details and exceptions, see [Choosing when to initialize products](https://plaid.com/docs/link/initializing-products/). Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array. In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`.
37
- attr_accessor :products
102
+ # Initializes the object
103
+ # @param [Hash] attributes Model attributes in the form of hash
104
+ def initialize(attributes = {})
105
+ unless attributes.is_a?(Hash)
106
+ raise ArgumentError,
107
+ 'The input argument (attributes) must be a hash in `MoneyKit::PlaidCompatible::LinkTokenCreateRequest` initialize method'
108
+ end
38
109
 
39
- # (Beta) This field has no effect unless you are participating in the Product Scope Transparency beta program. List of additional Plaid product(s) you wish to collect consent for. These products will not be billed until you start using them by calling the relevant endpoints. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically have consent collected. Institutions that do not support these products will still be shown in Link
40
- attr_accessor :additional_consented_products
110
+ # check to see if the attribute exists and convert string to symbol for hash key
111
+ attributes = attributes.each_with_object({}) do |(k, v), h|
112
+ unless self.class.attribute_map.key?(k.to_sym)
113
+ raise ArgumentError,
114
+ "`#{k}` is not a valid attribute in `MoneyKit::PlaidCompatible::LinkTokenCreateRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
115
+ end
41
116
 
42
- # The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet transactions only), Transfer, Bank Transfer (including Auth micro-deposit notification webhooks) and Identity Verification are configured via the Dashboard instead.
43
- attr_accessor :webhook
117
+ h[k.to_sym] = v
118
+ end
44
119
 
45
- # The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow.
46
- attr_accessor :access_token
120
+ self.client_id = attributes[:client_id] if attributes.key?(:client_id)
47
121
 
48
- # A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The `redirect_uri` should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use `*` as a wildcard character, e.g. `https://*.example.com/oauth.html`. Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api). If initializing on Android, `android_package_name` must be specified instead and `redirect_uri` should be left blank.
49
- attr_accessor :redirect_uri
122
+ self.secret = attributes[:secret] if attributes.key?(:secret)
50
123
 
51
- # Attribute mapping from ruby-style variable name to JSON key.
52
- def self.attribute_map
53
- {
54
- :'client_id' => :'client_id',
55
- :'secret' => :'secret',
56
- :'client_name' => :'client_name',
57
- :'language' => :'language',
58
- :'country_codes' => :'country_codes',
59
- :'user' => :'user',
60
- :'products' => :'products',
61
- :'additional_consented_products' => :'additional_consented_products',
62
- :'webhook' => :'webhook',
63
- :'access_token' => :'access_token',
64
- :'redirect_uri' => :'redirect_uri'
65
- }
66
- end
124
+ self.client_name = attributes[:client_name] if attributes.key?(:client_name)
67
125
 
68
- # Returns all the JSON keys this model knows about
69
- def self.acceptable_attributes
70
- attribute_map.values
71
- end
126
+ self.language = attributes[:language] if attributes.key?(:language)
72
127
 
73
- # Attribute type mapping.
74
- def self.openapi_types
75
- {
76
- :'client_id' => :'String',
77
- :'secret' => :'String',
78
- :'client_name' => :'String',
79
- :'language' => :'String',
80
- :'country_codes' => :'Array<CountryCode>',
81
- :'user' => :'LinkTokenCreateRequestUser',
82
- :'products' => :'Array<Products>',
83
- :'additional_consented_products' => :'Array<Products>',
84
- :'webhook' => :'String',
85
- :'access_token' => :'String',
86
- :'redirect_uri' => :'String'
87
- }
88
- end
128
+ if attributes.key?(:country_codes) && (value = attributes[:country_codes]).is_a?(Array)
129
+ self.country_codes = value
130
+ end
89
131
 
90
- # List of attributes with nullable: true
91
- def self.openapi_nullable
92
- Set.new([
93
- :'client_id',
94
- :'secret',
95
- :'products',
96
- :'additional_consented_products',
97
- :'webhook',
98
- :'access_token',
99
- :'redirect_uri'
100
- ])
101
- end
132
+ self.user = attributes[:user] if attributes.key?(:user)
102
133
 
103
- # Initializes the object
104
- # @param [Hash] attributes Model attributes in the form of hash
105
- def initialize(attributes = {})
106
- if (!attributes.is_a?(Hash))
107
- fail ArgumentError, "The input argument (attributes) must be a hash in `MoneyKit::PlaidCompatible::LinkTokenCreateRequest` initialize method"
108
- end
134
+ if attributes.key?(:products) && (value = attributes[:products]).is_a?(Array)
135
+ self.products = value
136
+ end
109
137
 
110
- # check to see if the attribute exists and convert string to symbol for hash key
111
- attributes = attributes.each_with_object({}) { |(k, v), h|
112
- if (!self.class.attribute_map.key?(k.to_sym))
113
- fail ArgumentError, "`#{k}` is not a valid attribute in `MoneyKit::PlaidCompatible::LinkTokenCreateRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
138
+ if attributes.key?(:additional_consented_products) && (value = attributes[:additional_consented_products]).is_a?(Array)
139
+ self.additional_consented_products = value
114
140
  end
115
- h[k.to_sym] = v
116
- }
117
141
 
118
- if attributes.key?(:'client_id')
119
- self.client_id = attributes[:'client_id']
120
- end
142
+ self.webhook = attributes[:webhook] if attributes.key?(:webhook)
121
143
 
122
- if attributes.key?(:'secret')
123
- self.secret = attributes[:'secret']
124
- end
144
+ self.access_token = attributes[:access_token] if attributes.key?(:access_token)
125
145
 
126
- if attributes.key?(:'client_name')
127
- self.client_name = attributes[:'client_name']
128
- end
146
+ return unless attributes.key?(:redirect_uri)
129
147
 
130
- if attributes.key?(:'language')
131
- self.language = attributes[:'language']
148
+ self.redirect_uri = attributes[:redirect_uri]
132
149
  end
133
150
 
134
- if attributes.key?(:'country_codes')
135
- if (value = attributes[:'country_codes']).is_a?(Array)
136
- self.country_codes = value
137
- end
138
- end
151
+ # Show invalid properties with the reasons. Usually used together with valid?
152
+ # @return Array for valid properties with the reasons
153
+ def list_invalid_properties
154
+ invalid_properties = []
155
+ invalid_properties.push('invalid value for "client_name", client_name cannot be nil.') if @client_name.nil?
139
156
 
140
- if attributes.key?(:'user')
141
- self.user = attributes[:'user']
142
- end
157
+ invalid_properties.push('invalid value for "language", language cannot be nil.') if @language.nil?
143
158
 
144
- if attributes.key?(:'products')
145
- if (value = attributes[:'products']).is_a?(Array)
146
- self.products = value
159
+ if @country_codes.nil?
160
+ invalid_properties.push('invalid value for "country_codes", country_codes cannot be nil.')
147
161
  end
148
- end
149
162
 
150
- if attributes.key?(:'additional_consented_products')
151
- if (value = attributes[:'additional_consented_products']).is_a?(Array)
152
- self.additional_consented_products = value
153
- end
154
- end
163
+ invalid_properties.push('invalid value for "user", user cannot be nil.') if @user.nil?
155
164
 
156
- if attributes.key?(:'webhook')
157
- self.webhook = attributes[:'webhook']
165
+ invalid_properties
158
166
  end
159
167
 
160
- if attributes.key?(:'access_token')
161
- self.access_token = attributes[:'access_token']
162
- end
168
+ # Check to see if the all the properties in the model are valid
169
+ # @return true if the model is valid
170
+ def valid?
171
+ return false if @client_name.nil?
172
+ return false if @language.nil?
173
+ return false if @country_codes.nil?
174
+ return false if @user.nil?
163
175
 
164
- if attributes.key?(:'redirect_uri')
165
- self.redirect_uri = attributes[:'redirect_uri']
176
+ true
166
177
  end
167
- end
168
178
 
169
- # Show invalid properties with the reasons. Usually used together with valid?
170
- # @return Array for valid properties with the reasons
171
- def list_invalid_properties
172
- invalid_properties = Array.new
173
- if @client_name.nil?
174
- invalid_properties.push('invalid value for "client_name", client_name cannot be nil.')
179
+ # Checks equality by comparing each attribute.
180
+ # @param [Object] Object to be compared
181
+ def ==(other)
182
+ return true if equal?(other)
183
+
184
+ self.class == other.class &&
185
+ client_id == other.client_id &&
186
+ secret == other.secret &&
187
+ client_name == other.client_name &&
188
+ language == other.language &&
189
+ country_codes == other.country_codes &&
190
+ user == other.user &&
191
+ products == other.products &&
192
+ additional_consented_products == other.additional_consented_products &&
193
+ webhook == other.webhook &&
194
+ access_token == other.access_token &&
195
+ redirect_uri == other.redirect_uri
175
196
  end
176
197
 
177
- if @language.nil?
178
- invalid_properties.push('invalid value for "language", language cannot be nil.')
198
+ # @see the `==` method
199
+ # @param [Object] Object to be compared
200
+ def eql?(other)
201
+ self == other
179
202
  end
180
203
 
181
- if @country_codes.nil?
182
- invalid_properties.push('invalid value for "country_codes", country_codes cannot be nil.')
204
+ # Calculates hash code according to all attributes.
205
+ # @return [Integer] Hash code
206
+ def hash
207
+ [client_id, secret, client_name, language, country_codes, user, products, additional_consented_products, webhook,
208
+ access_token, redirect_uri].hash
183
209
  end
184
210
 
185
- if @user.nil?
186
- invalid_properties.push('invalid value for "user", user cannot be nil.')
211
+ # Builds the object from hash
212
+ # @param [Hash] attributes Model attributes in the form of hash
213
+ # @return [Object] Returns the model itself
214
+ def self.build_from_hash(attributes)
215
+ new.build_from_hash(attributes)
187
216
  end
188
217
 
189
- invalid_properties
190
- end
191
-
192
- # Check to see if the all the properties in the model are valid
193
- # @return true if the model is valid
194
- def valid?
195
- return false if @client_name.nil?
196
- return false if @language.nil?
197
- return false if @country_codes.nil?
198
- return false if @user.nil?
199
- true
200
- end
201
-
202
- # Checks equality by comparing each attribute.
203
- # @param [Object] Object to be compared
204
- def ==(o)
205
- return true if self.equal?(o)
206
- self.class == o.class &&
207
- client_id == o.client_id &&
208
- secret == o.secret &&
209
- client_name == o.client_name &&
210
- language == o.language &&
211
- country_codes == o.country_codes &&
212
- user == o.user &&
213
- products == o.products &&
214
- additional_consented_products == o.additional_consented_products &&
215
- webhook == o.webhook &&
216
- access_token == o.access_token &&
217
- redirect_uri == o.redirect_uri
218
- end
219
-
220
- # @see the `==` method
221
- # @param [Object] Object to be compared
222
- def eql?(o)
223
- self == o
224
- end
225
-
226
- # Calculates hash code according to all attributes.
227
- # @return [Integer] Hash code
228
- def hash
229
- [client_id, secret, client_name, language, country_codes, user, products, additional_consented_products, webhook, access_token, redirect_uri].hash
230
- end
231
-
232
- # Builds the object from hash
233
- # @param [Hash] attributes Model attributes in the form of hash
234
- # @return [Object] Returns the model itself
235
- def self.build_from_hash(attributes)
236
- new.build_from_hash(attributes)
237
- end
238
-
239
- # Builds the object from hash
240
- # @param [Hash] attributes Model attributes in the form of hash
241
- # @return [Object] Returns the model itself
242
- def build_from_hash(attributes)
243
- return nil unless attributes.is_a?(Hash)
244
- self.class.openapi_types.each_pair do |key, type|
245
- if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
246
- self.send("#{key}=", nil)
247
- elsif type =~ /\AArray<(.*)>/i
248
- # check to ensure the input is an array given that the attribute
249
- # is documented as an array but the input is not
250
- if attributes[self.class.attribute_map[key]].is_a?(Array)
251
- self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
218
+ # Builds the object from hash
219
+ # @param [Hash] attributes Model attributes in the form of hash
220
+ # @return [Object] Returns the model itself
221
+ def build_from_hash(attributes)
222
+ return nil unless attributes.is_a?(Hash)
223
+
224
+ self.class.openapi_types.each_pair do |key, type|
225
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
226
+ send("#{key}=", nil)
227
+ elsif type =~ /\AArray<(.*)>/i
228
+ # check to ensure the input is an array given that the attribute
229
+ # is documented as an array but the input is not
230
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
231
+ send("#{key}=", attributes[self.class.attribute_map[key]].map do |v|
232
+ _deserialize(::Regexp.last_match(1), v)
233
+ end)
234
+ end
235
+ elsif !attributes[self.class.attribute_map[key]].nil?
236
+ send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
252
237
  end
253
- elsif !attributes[self.class.attribute_map[key]].nil?
254
- self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
255
238
  end
256
- end
257
239
 
258
- self
259
- end
240
+ self
241
+ end
260
242
 
261
- # Deserializes the data based on type
262
- # @param string type Data type
263
- # @param string value Value to be deserialized
264
- # @return [Object] Deserialized data
265
- def _deserialize(type, value)
266
- case type.to_sym
267
- when :Time
268
- Time.parse(value)
269
- when :Date
270
- Date.parse(value)
271
- when :String
272
- value.to_s
273
- when :Integer
274
- value.to_i
275
- when :Float
276
- value.to_f
277
- when :Boolean
278
- if value.to_s =~ /\A(true|t|yes|y|1)\z/i
279
- true
280
- else
281
- false
282
- end
283
- when :Object
284
- # generic object (usually a Hash), return directly
285
- value
286
- when /\AArray<(?<inner_type>.+)>\z/
287
- inner_type = Regexp.last_match[:inner_type]
288
- value.map { |v| _deserialize(inner_type, v) }
289
- when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
290
- k_type = Regexp.last_match[:k_type]
291
- v_type = Regexp.last_match[:v_type]
292
- {}.tap do |hash|
293
- value.each do |k, v|
294
- hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
243
+ # Deserializes the data based on type
244
+ # @param string type Data type
245
+ # @param string value Value to be deserialized
246
+ # @return [Object] Deserialized data
247
+ def _deserialize(type, value)
248
+ case type.to_sym
249
+ when :Time
250
+ Time.parse(value)
251
+ when :Date
252
+ Date.parse(value)
253
+ when :String
254
+ value.to_s
255
+ when :Integer
256
+ value.to_i
257
+ when :Float
258
+ value.to_f
259
+ when :Boolean
260
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
261
+ true
262
+ else
263
+ false
295
264
  end
265
+ when :Object
266
+ # generic object (usually a Hash), return directly
267
+ value
268
+ when /\AArray<(?<inner_type>.+)>\z/
269
+ inner_type = Regexp.last_match[:inner_type]
270
+ value.map { |v| _deserialize(inner_type, v) }
271
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
272
+ k_type = Regexp.last_match[:k_type]
273
+ v_type = Regexp.last_match[:v_type]
274
+ {}.tap do |hash|
275
+ value.each do |k, v|
276
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
277
+ end
278
+ end
279
+ else # model
280
+ # models (e.g. Pet) or oneOf
281
+ klass = MoneyKit::PlaidCompatible.const_get(type)
282
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
296
283
  end
297
- else # model
298
- # models (e.g. Pet) or oneOf
299
- klass = MoneyKit::PlaidCompatible.const_get(type)
300
- klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
301
284
  end
302
- end
303
285
 
304
- # Returns the string representation of the object
305
- # @return [String] String presentation of the object
306
- def to_s
307
- to_hash.to_s
308
- end
286
+ # Returns the string representation of the object
287
+ # @return [String] String presentation of the object
288
+ def to_s
289
+ to_hash.to_s
290
+ end
309
291
 
310
- # to_body is an alias to to_hash (backward compatibility)
311
- # @return [Hash] Returns the object in the form of hash
312
- def to_body
313
- to_hash
314
- end
292
+ # to_body is an alias to to_hash (backward compatibility)
293
+ # @return [Hash] Returns the object in the form of hash
294
+ def to_body
295
+ to_hash
296
+ end
315
297
 
316
- # Returns the object in the form of hash
317
- # @return [Hash] Returns the object in the form of hash
318
- def to_hash
319
- hash = {}
320
- self.class.attribute_map.each_pair do |attr, param|
321
- value = self.send(attr)
322
- if value.nil?
323
- is_nullable = self.class.openapi_nullable.include?(attr)
324
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
325
- end
298
+ # Returns the object in the form of hash
299
+ # @return [Hash] Returns the object in the form of hash
300
+ def to_hash
301
+ hash = {}
302
+ self.class.attribute_map.each_pair do |attr, param|
303
+ value = send(attr)
304
+ if value.nil?
305
+ is_nullable = self.class.openapi_nullable.include?(attr)
306
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
307
+ end
326
308
 
327
- hash[param] = _to_hash(value)
309
+ hash[param] = _to_hash(value)
310
+ end
311
+ hash
328
312
  end
329
- hash
330
- end
331
313
 
332
- # Outputs non-array value in the form of hash
333
- # For object, use to_hash. Otherwise, just return the value
334
- # @param [Object] value Any valid value
335
- # @return [Hash] Returns the value in the form of hash
336
- def _to_hash(value)
337
- if value.is_a?(Array)
338
- value.compact.map { |v| _to_hash(v) }
339
- elsif value.is_a?(Hash)
340
- {}.tap do |hash|
341
- value.each { |k, v| hash[k] = _to_hash(v) }
314
+ # Outputs non-array value in the form of hash
315
+ # For object, use to_hash. Otherwise, just return the value
316
+ # @param [Object] value Any valid value
317
+ # @return [Hash] Returns the value in the form of hash
318
+ def _to_hash(value)
319
+ if value.is_a?(Array)
320
+ value.compact.map { |v| _to_hash(v) }
321
+ elsif value.is_a?(Hash)
322
+ {}.tap do |hash|
323
+ value.each { |k, v| hash[k] = _to_hash(v) }
324
+ end
325
+ elsif value.respond_to? :to_hash
326
+ value.to_hash
327
+ else
328
+ value
342
329
  end
343
- elsif value.respond_to? :to_hash
344
- value.to_hash
345
- else
346
- value
347
330
  end
348
331
  end
349
-
350
332
  end
351
-
352
333
  end