moneykit 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/moneykit/api/access_token_api.rb +9 -9
  4. data/lib/moneykit/api/account_numbers_api.rb +6 -6
  5. data/lib/moneykit/api/accounts_api.rb +15 -15
  6. data/lib/moneykit/api/identity_api.rb +6 -6
  7. data/lib/moneykit/api/institutions_api.rb +7 -7
  8. data/lib/moneykit/api/link_session_api.rb +7 -7
  9. data/lib/moneykit/api/links_api.rb +76 -13
  10. data/lib/moneykit/api/products_api.rb +6 -6
  11. data/lib/moneykit/api/transactions_api.rb +28 -28
  12. data/lib/moneykit/api/users_api.rb +14 -14
  13. data/lib/moneykit/api/webhooks_api.rb +97 -0
  14. data/lib/moneykit/api_client.rb +40 -36
  15. data/lib/moneykit/api_error.rb +1 -1
  16. data/lib/moneykit/configuration.rb +20 -30
  17. data/lib/moneykit/models/account.rb +27 -54
  18. data/lib/moneykit/models/account_balances.rb +18 -27
  19. data/lib/moneykit/models/account_group.rb +23 -26
  20. data/lib/moneykit/models/account_identity.rb +34 -59
  21. data/lib/moneykit/models/account_numbers.rb +75 -51
  22. data/lib/moneykit/models/account_numbers_link_product.rb +18 -28
  23. data/lib/moneykit/models/account_numbers_product_settings.rb +16 -21
  24. data/lib/moneykit/models/account_with_account_numbers.rb +29 -56
  25. data/lib/moneykit/models/accounts_link_product.rb +17 -25
  26. data/lib/moneykit/models/ach_number.rb +19 -26
  27. data/lib/moneykit/models/address.rb +17 -28
  28. data/lib/moneykit/models/api_error_auth_expired_access_token_response.rb +17 -24
  29. data/lib/moneykit/models/api_error_auth_unauthorized_response.rb +18 -25
  30. data/lib/moneykit/models/api_error_rate_limit_exceeded_response.rb +17 -24
  31. data/lib/moneykit/models/bacs_number.rb +18 -25
  32. data/lib/moneykit/models/basic_account_details.rb +20 -29
  33. data/lib/moneykit/models/country.rb +1 -1
  34. data/lib/moneykit/models/create_link_session_request.rb +48 -45
  35. data/lib/moneykit/models/create_link_session_response.rb +17 -24
  36. data/lib/moneykit/models/currency.rb +1 -1
  37. data/lib/moneykit/models/cursor_pagination.rb +17 -24
  38. data/lib/moneykit/models/customer_app.rb +18 -25
  39. data/lib/moneykit/models/eft_number.rb +19 -26
  40. data/lib/moneykit/models/email.rb +17 -22
  41. data/lib/moneykit/models/exchange_token_request.rb +17 -24
  42. data/lib/moneykit/models/exchange_token_response.rb +19 -26
  43. data/lib/moneykit/models/generate_access_token_response.rb +19 -26
  44. data/lib/moneykit/models/get_account_numbers_response.rb +23 -26
  45. data/lib/moneykit/models/get_account_response.rb +19 -26
  46. data/lib/moneykit/models/get_accounts_response.rb +25 -31
  47. data/lib/moneykit/models/get_institutions_response.rb +25 -31
  48. data/lib/moneykit/models/get_transactions_response.rb +34 -39
  49. data/lib/moneykit/models/get_user_accounts_response.rb +24 -32
  50. data/lib/moneykit/models/get_user_links_response.rb +24 -32
  51. data/lib/moneykit/models/get_user_transactions_response.rb +32 -34
  52. data/lib/moneykit/models/http_validation_error.rb +24 -28
  53. data/lib/moneykit/models/identity_link_product.rb +18 -28
  54. data/lib/moneykit/models/identity_product_settings.rb +16 -21
  55. data/lib/moneykit/models/identity_response.rb +24 -30
  56. data/lib/moneykit/models/institution.rb +29 -38
  57. data/lib/moneykit/models/institution_error_not_found_response.rb +17 -24
  58. data/lib/moneykit/models/international_number.rb +18 -25
  59. data/lib/moneykit/models/introspect_client_response.rb +22 -29
  60. data/lib/moneykit/models/jwk_set.rb +23 -26
  61. data/lib/moneykit/models/link_common.rb +25 -39
  62. data/lib/moneykit/models/link_error_bad_config_response.rb +269 -0
  63. data/lib/moneykit/models/link_error_bad_state_response.rb +19 -28
  64. data/lib/moneykit/models/link_error_deleted_response.rb +17 -24
  65. data/lib/moneykit/models/link_error_forbidden_action_response.rb +18 -25
  66. data/lib/moneykit/models/link_error_not_found_response.rb +17 -24
  67. data/lib/moneykit/models/link_error_unauthorized_access_response.rb +17 -24
  68. data/lib/moneykit/models/link_permission_scope.rb +1 -1
  69. data/lib/moneykit/models/link_permissions.rb +23 -33
  70. data/lib/moneykit/models/link_products.rb +16 -21
  71. data/lib/moneykit/models/link_response.rb +26 -39
  72. data/lib/moneykit/models/link_session_customer_user.rb +20 -28
  73. data/lib/moneykit/models/link_session_customer_user_email.rb +18 -25
  74. data/lib/moneykit/models/link_session_customer_user_phone.rb +18 -26
  75. data/lib/moneykit/models/link_session_error_forbidden_config_response.rb +18 -25
  76. data/lib/moneykit/models/link_session_error_invalid_token_exchange.rb +18 -25
  77. data/lib/moneykit/models/link_session_setting_overrides.rb +19 -43
  78. data/lib/moneykit/models/link_state.rb +1 -1
  79. data/lib/moneykit/models/link_state_changed_webhook.rb +28 -31
  80. data/lib/moneykit/models/money_link_features.rb +27 -32
  81. data/lib/moneykit/models/owner.rb +42 -42
  82. data/lib/moneykit/models/phone_number.rb +18 -25
  83. data/lib/moneykit/models/phone_number_type.rb +1 -1
  84. data/lib/moneykit/models/product.rb +1 -1
  85. data/lib/moneykit/models/products_settings.rb +19 -24
  86. data/lib/moneykit/models/provider.rb +4 -2
  87. data/lib/moneykit/models/public_link_error.rb +43 -0
  88. data/lib/moneykit/models/refresh_products_request.rb +23 -34
  89. data/lib/moneykit/models/requested_link_permission.rb +19 -26
  90. data/lib/moneykit/models/response401_disconnect_links_id_delete.rb +75 -269
  91. data/lib/moneykit/models/response401_exchange_token_link_session_exchange_token_post.rb +74 -267
  92. data/lib/moneykit/models/response401_get_account_links_id_accounts_account_id_get.rb +75 -269
  93. data/lib/moneykit/models/response401_get_account_numbers_links_id_accounts_numbers_get.rb +75 -269
  94. data/lib/moneykit/models/response401_get_accounts_links_id_accounts_get.rb +75 -269
  95. data/lib/moneykit/models/response401_get_identities_links_id_identity_get.rb +75 -269
  96. data/lib/moneykit/models/response401_get_institution_institutions_institution_id_get.rb +74 -267
  97. data/lib/moneykit/models/response401_get_institutions_institutions_get.rb +74 -267
  98. data/lib/moneykit/models/response401_get_link_links_id_get.rb +75 -269
  99. data/lib/moneykit/models/response401_get_transactions_diff_links_id_transactions_sync_get.rb +75 -269
  100. data/lib/moneykit/models/response401_get_transactions_links_id_transactions_get.rb +75 -269
  101. data/lib/moneykit/models/response401_get_user_accounts_users_id_accounts_get.rb +74 -267
  102. data/lib/moneykit/models/response401_get_user_links_users_id_links_get.rb +74 -267
  103. data/lib/moneykit/models/response401_get_user_transactions_users_id_transactions_get.rb +74 -267
  104. data/lib/moneykit/models/response401_get_well_known_jwks_well_known_jwks_json_get.rb +74 -267
  105. data/lib/moneykit/models/response401_instrospect_client_auth_introspect_get.rb +74 -267
  106. data/lib/moneykit/models/response401_refresh_products_links_id_products_post.rb +75 -269
  107. data/lib/moneykit/models/response401_reset_login_links_id_reset_post.rb +102 -0
  108. data/lib/moneykit/models/response401_trigger_test_link_webhook_event_webhooks_test_link_id_post.rb +102 -0
  109. data/lib/moneykit/models/response401_update_link_links_id_patch.rb +75 -269
  110. data/lib/moneykit/models/transaction.rb +35 -35
  111. data/lib/moneykit/models/transaction_diff.rb +36 -37
  112. data/lib/moneykit/models/transaction_sync_response.rb +23 -30
  113. data/lib/moneykit/models/transaction_type.rb +1 -1
  114. data/lib/moneykit/models/transaction_type_filter.rb +1 -1
  115. data/lib/moneykit/models/transactions_link_product.rb +18 -28
  116. data/lib/moneykit/models/transactions_product_settings.rb +16 -21
  117. data/lib/moneykit/models/update_link_request.rb +21 -28
  118. data/lib/moneykit/models/validation_error.rb +25 -28
  119. data/lib/moneykit/models/validation_error_location_inner.rb +101 -0
  120. data/lib/moneykit/models/webhook_link_test_event.rb +40 -0
  121. data/lib/moneykit/models/webhook_test_link_request.rb +252 -0
  122. data/lib/moneykit/models/webhook_test_link_response.rb +220 -0
  123. data/lib/moneykit/version.rb +2 -2
  124. data/lib/moneykit.rb +10 -29
  125. data/lib/plaid_compatible/money_kit_plaid_compatible/api/plaid_api.rb +684 -679
  126. data/lib/plaid_compatible/money_kit_plaid_compatible/api_client.rb +330 -330
  127. data/lib/plaid_compatible/money_kit_plaid_compatible/api_error.rb +33 -33
  128. data/lib/plaid_compatible/money_kit_plaid_compatible/configuration.rb +245 -245
  129. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_balance.rb +198 -198
  130. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_base.rb +213 -213
  131. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_identity.rb +223 -223
  132. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_subtype.rb +89 -89
  133. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_type.rb +22 -22
  134. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request.rb +198 -198
  135. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request_options.rb +175 -175
  136. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_response.rb +194 -194
  137. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address.rb +183 -183
  138. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address_data.rb +209 -209
  139. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_numbers.rb +211 -209
  140. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request.rb +198 -198
  141. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request_options.rb +175 -175
  142. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_response.rb +200 -200
  143. data/lib/plaid_compatible/money_kit_plaid_compatible/models/country_code.rb +19 -19
  144. data/lib/plaid_compatible/money_kit_plaid_compatible/models/email.rb +184 -184
  145. data/lib/plaid_compatible/money_kit_plaid_compatible/models/http_validation_error.rb +171 -171
  146. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request.rb +198 -198
  147. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request_options.rb +175 -175
  148. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_response.rb +194 -194
  149. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institution.rb +216 -214
  150. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_request.rb +202 -202
  151. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_response.rb +183 -183
  152. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item.rb +246 -245
  153. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_error_webhook.rb +208 -208
  154. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_request.rb +192 -192
  155. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_response.rb +189 -189
  156. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_request.rb +192 -192
  157. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_response.rb +193 -193
  158. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_request.rb +192 -192
  159. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_response.rb +175 -175
  160. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_investments.rb +182 -182
  161. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_last_webhook.rb +182 -182
  162. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_nullable.rb +183 -183
  163. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_transactions.rb +182 -182
  164. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request.rb +268 -266
  165. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request_user.rb +212 -212
  166. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_response.rb +193 -193
  167. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_ach.rb +202 -202
  168. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_bacs.rb +193 -193
  169. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_eft.rb +202 -202
  170. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_international.rb +193 -193
  171. data/lib/plaid_compatible/money_kit_plaid_compatible/models/owner.rb +211 -209
  172. data/lib/plaid_compatible/money_kit_plaid_compatible/models/personal_finance_category.rb +184 -184
  173. data/lib/plaid_compatible/money_kit_plaid_compatible/models/phone_number.rb +193 -193
  174. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error.rb +247 -245
  175. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error_type.rb +30 -30
  176. data/lib/plaid_compatible/money_kit_plaid_compatible/models/products.rb +20 -20
  177. data/lib/plaid_compatible/money_kit_plaid_compatible/models/removed_transaction.rb +174 -174
  178. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transaction.rb +283 -283
  179. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request.rb +217 -217
  180. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request_options.rb +211 -211
  181. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_response.rb +217 -217
  182. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_request.rb +192 -192
  183. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_response.rb +175 -175
  184. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request.rb +215 -215
  185. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request_options.rb +184 -184
  186. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_response.rb +228 -228
  187. data/lib/plaid_compatible/money_kit_plaid_compatible/models/validation_error.rb +187 -187
  188. data/lib/plaid_compatible/money_kit_plaid_compatible/models/webhook_environment_values.rb +19 -19
  189. data/lib/plaid_compatible/money_kit_plaid_compatible/version.rb +1 -1
  190. data/lib/plaid_compatible/money_kit_plaid_compatible.rb +13 -13
  191. data/moneykit.gemspec +2 -1
  192. metadata +14 -5
@@ -13,319 +13,321 @@ require 'time'
13
13
 
14
14
  module MoneyKit
15
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
66
-
67
- # Returns all the JSON keys this model knows about
68
- def self.acceptable_attributes
69
- attribute_map.values
70
- end
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
71
66
 
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
67
+ # Returns all the JSON keys this model knows about
68
+ def self.acceptable_attributes
69
+ attribute_map.values
70
+ end
88
71
 
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
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
101
88
 
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'
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
+ ])
108
100
  end
109
101
 
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)
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)
113
106
  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
107
+ 'The input argument (attributes) must be a hash in `MoneyKit::PlaidCompatible::LinkTokenCreateRequest` initialize method'
115
108
  end
116
109
 
117
- h[k.to_sym] = v
118
- end
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
119
116
 
120
- self.client_id = attributes[:client_id] if attributes.key?(:client_id)
117
+ h[k.to_sym] = v
118
+ end
121
119
 
122
- self.secret = attributes[:secret] if attributes.key?(:secret)
120
+ self.client_id = attributes[:client_id] if attributes.key?(:client_id)
123
121
 
124
- self.client_name = attributes[:client_name] if attributes.key?(:client_name)
122
+ self.secret = attributes[:secret] if attributes.key?(:secret)
125
123
 
126
- self.language = attributes[:language] if attributes.key?(:language)
124
+ self.client_name = attributes[:client_name] if attributes.key?(:client_name)
127
125
 
128
- if attributes.key?(:country_codes) && (value = attributes[:country_codes]).is_a?(Array)
129
- self.country_codes = value
130
- end
126
+ self.language = attributes[:language] if attributes.key?(:language)
131
127
 
132
- self.user = attributes[:user] if attributes.key?(:user)
128
+ if attributes.key?(:country_codes) && (value = attributes[:country_codes]).is_a?(Array)
129
+ self.country_codes = value
130
+ end
133
131
 
134
- if attributes.key?(:products) && (value = attributes[:products]).is_a?(Array)
135
- self.products = value
136
- end
132
+ self.user = attributes[:user] if attributes.key?(:user)
137
133
 
138
- if attributes.key?(:additional_consented_products) && (value = attributes[:additional_consented_products]).is_a?(Array)
139
- self.additional_consented_products = value
140
- end
134
+ if attributes.key?(:products) && (value = attributes[:products]).is_a?(Array)
135
+ self.products = value
136
+ end
141
137
 
142
- self.webhook = attributes[:webhook] if attributes.key?(:webhook)
138
+ if attributes.key?(:additional_consented_products) && (value = attributes[:additional_consented_products]).is_a?(Array)
139
+ self.additional_consented_products = value
140
+ end
143
141
 
144
- self.access_token = attributes[:access_token] if attributes.key?(:access_token)
142
+ self.webhook = attributes[:webhook] if attributes.key?(:webhook)
145
143
 
146
- return unless attributes.key?(:redirect_uri)
144
+ self.access_token = attributes[:access_token] if attributes.key?(:access_token)
147
145
 
148
- self.redirect_uri = attributes[:redirect_uri]
149
- end
146
+ return unless attributes.key?(:redirect_uri)
150
147
 
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?
148
+ self.redirect_uri = attributes[:redirect_uri]
149
+ end
156
150
 
157
- invalid_properties.push('invalid value for "language", language cannot be nil.') if @language.nil?
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?
158
156
 
159
- invalid_properties.push('invalid value for "country_codes", country_codes cannot be nil.') if @country_codes.nil?
157
+ invalid_properties.push('invalid value for "language", language cannot be nil.') if @language.nil?
160
158
 
161
- invalid_properties.push('invalid value for "user", user cannot be nil.') if @user.nil?
159
+ if @country_codes.nil?
160
+ invalid_properties.push('invalid value for "country_codes", country_codes cannot be nil.')
161
+ end
162
162
 
163
- invalid_properties
164
- end
163
+ invalid_properties.push('invalid value for "user", user cannot be nil.') if @user.nil?
165
164
 
166
- # Check to see if the all the properties in the model are valid
167
- # @return true if the model is valid
168
- def valid?
169
- return false if @client_name.nil?
170
- return false if @language.nil?
171
- return false if @country_codes.nil?
172
- return false if @user.nil?
165
+ invalid_properties
166
+ end
173
167
 
174
- true
175
- 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?
176
175
 
177
- # Checks equality by comparing each attribute.
178
- # @param [Object] Object to be compared
179
- def ==(other)
180
- return true if equal?(other)
181
-
182
- self.class == other.class &&
183
- client_id == other.client_id &&
184
- secret == other.secret &&
185
- client_name == other.client_name &&
186
- language == other.language &&
187
- country_codes == other.country_codes &&
188
- user == other.user &&
189
- products == other.products &&
190
- additional_consented_products == other.additional_consented_products &&
191
- webhook == other.webhook &&
192
- access_token == other.access_token &&
193
- redirect_uri == other.redirect_uri
194
- end
176
+ true
177
+ end
195
178
 
196
- # @see the `==` method
197
- # @param [Object] Object to be compared
198
- def eql?(other)
199
- self == other
200
- end
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
196
+ end
201
197
 
202
- # Calculates hash code according to all attributes.
203
- # @return [Integer] Hash code
204
- def hash
205
- [client_id, secret, client_name, language, country_codes, user, products, additional_consented_products, webhook,
206
- access_token, redirect_uri].hash
207
- end
198
+ # @see the `==` method
199
+ # @param [Object] Object to be compared
200
+ def eql?(other)
201
+ self == other
202
+ end
208
203
 
209
- # Builds the object from hash
210
- # @param [Hash] attributes Model attributes in the form of hash
211
- # @return [Object] Returns the model itself
212
- def self.build_from_hash(attributes)
213
- new.build_from_hash(attributes)
214
- end
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
209
+ end
210
+
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)
216
+ end
215
217
 
216
- # Builds the object from hash
217
- # @param [Hash] attributes Model attributes in the form of hash
218
- # @return [Object] Returns the model itself
219
- def build_from_hash(attributes)
220
- return nil unless attributes.is_a?(Hash)
221
-
222
- self.class.openapi_types.each_pair do |key, type|
223
- if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
224
- send("#{key}=", nil)
225
- elsif type =~ /\AArray<(.*)>/i
226
- # check to ensure the input is an array given that the attribute
227
- # is documented as an array but the input is not
228
- if attributes[self.class.attribute_map[key]].is_a?(Array)
229
- send("#{key}=", attributes[self.class.attribute_map[key]].map do |v|
230
- _deserialize(::Regexp.last_match(1), v)
231
- end)
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]]))
232
237
  end
233
- elsif !attributes[self.class.attribute_map[key]].nil?
234
- send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
235
238
  end
236
- end
237
239
 
238
- self
239
- end
240
+ self
241
+ end
240
242
 
241
- # Deserializes the data based on type
242
- # @param string type Data type
243
- # @param string value Value to be deserialized
244
- # @return [Object] Deserialized data
245
- def _deserialize(type, value)
246
- case type.to_sym
247
- when :Time
248
- Time.parse(value)
249
- when :Date
250
- Date.parse(value)
251
- when :String
252
- value.to_s
253
- when :Integer
254
- value.to_i
255
- when :Float
256
- value.to_f
257
- when :Boolean
258
- if value.to_s =~ /\A(true|t|yes|y|1)\z/i
259
- true
260
- else
261
- false
262
- end
263
- when :Object
264
- # generic object (usually a Hash), return directly
265
- value
266
- when /\AArray<(?<inner_type>.+)>\z/
267
- inner_type = Regexp.last_match[:inner_type]
268
- value.map { |v| _deserialize(inner_type, v) }
269
- when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
270
- k_type = Regexp.last_match[:k_type]
271
- v_type = Regexp.last_match[:v_type]
272
- {}.tap do |hash|
273
- value.each do |k, v|
274
- 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
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
275
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)
276
283
  end
277
- else # model
278
- # models (e.g. Pet) or oneOf
279
- klass = MoneyKit::PlaidCompatible.const_get(type)
280
- klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
281
284
  end
282
- end
283
285
 
284
- # Returns the string representation of the object
285
- # @return [String] String presentation of the object
286
- def to_s
287
- to_hash.to_s
288
- 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
289
291
 
290
- # to_body is an alias to to_hash (backward compatibility)
291
- # @return [Hash] Returns the object in the form of hash
292
- def to_body
293
- to_hash
294
- 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
295
297
 
296
- # Returns the object in the form of hash
297
- # @return [Hash] Returns the object in the form of hash
298
- def to_hash
299
- hash = {}
300
- self.class.attribute_map.each_pair do |attr, param|
301
- value = send(attr)
302
- if value.nil?
303
- is_nullable = self.class.openapi_nullable.include?(attr)
304
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
305
- 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
306
308
 
307
- hash[param] = _to_hash(value)
309
+ hash[param] = _to_hash(value)
310
+ end
311
+ hash
308
312
  end
309
- hash
310
- end
311
313
 
312
- # Outputs non-array value in the form of hash
313
- # For object, use to_hash. Otherwise, just return the value
314
- # @param [Object] value Any valid value
315
- # @return [Hash] Returns the value in the form of hash
316
- def _to_hash(value)
317
- if value.is_a?(Array)
318
- value.compact.map { |v| _to_hash(v) }
319
- elsif value.is_a?(Hash)
320
- {}.tap do |hash|
321
- 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
322
329
  end
323
- elsif value.respond_to? :to_hash
324
- value.to_hash
325
- else
326
- value
327
330
  end
328
331
  end
329
332
  end
330
- end
331
333
  end