From 31cc7d1af40df1bcd3079f0e8e38f0cbc47c0b1d Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Fri, 15 Oct 2021 12:46:13 -0700 Subject: [PATCH] OpenAPI generated code at 2021-10-15T19:46:09Z --- .openapi-generator/FILES | 13 +- CHANGELOG.md | 3 + plaid/__init__.py | 2 +- plaid/api/plaid_api.py | 126 +++++++++- plaid/api_client.py | 2 +- plaid/configuration.py | 4 +- plaid/model/asset_report_create_request.py | 2 +- .../asset_report_create_request_options.py | 8 +- plaid/model/asset_report_get_request.py | 2 +- plaid/model/asset_report_refresh_request.py | 6 +- .../asset_report_refresh_request_options.py | 8 +- plaid/model/credit_card_liability.py | 6 +- plaid/model/deductions.py | 16 +- plaid/model/deductions_breakdown.py | 182 ++++++++++++++ plaid/model/deductions_total.py | 179 +++++++++++++ plaid/model/distribution_breakdown.py | 197 +++++++++++++++ plaid/model/document_metadata.py | 13 + plaid/model/earnings.py | 8 + plaid/model/earnings_breakdown.py | 202 +++++++++++++++ plaid/model/earnings_total.py | 24 +- plaid/model/employee.py | 10 +- ...d_response.py => employer_verification.py} | 15 +- plaid/model/employment_verification.py | 199 +++++++++++++++ .../employment_verification_get_request.py | 173 +++++++++++++ ...> employment_verification_get_response.py} | 40 +-- plaid/model/error.py | 1 + .../income_verification_create_request.py | 11 + ...ome_verification_create_request_options.py | 164 ++++++++++++ ...verification_documents_download_request.py | 3 + ...come_verification_paystubs_get_response.py | 6 +- .../income_verification_precheck_employer.py | 11 + ..._verification_precheck_employer_address.py | 237 ++++++++++++++++++ ...come_verification_taxforms_get_response.py | 19 +- ...oken_create_request_income_verification.py | 13 +- plaid/model/net_pay.py | 20 +- plaid/model/pay_period_details.py | 55 ++-- plaid/model/paystub.py | 38 +-- plaid/model/paystub_address.py | 20 +- plaid/model/platform_ids.py | 176 +++++++++++++ .../model/signal_decision_report_response.py | 8 +- plaid/model/signal_evaluate_request.py | 9 +- plaid/model/signal_evaluate_response.py | 5 +- plaid/model/signal_return_report_request.py | 8 +- plaid/model/taxpayer_id.py | 3 + .../transactions_recurring_get_request.py | 18 +- .../transactions_recurring_get_response.py | 9 +- plaid/models/__init__.py | 13 +- setup.py | 2 +- 48 files changed, 2132 insertions(+), 157 deletions(-) create mode 100644 plaid/model/deductions_breakdown.py create mode 100644 plaid/model/deductions_total.py create mode 100644 plaid/model/distribution_breakdown.py create mode 100644 plaid/model/earnings_breakdown.py rename plaid/model/{income_verification_documents_download_response.py => employer_verification.py} (94%) create mode 100644 plaid/model/employment_verification.py create mode 100644 plaid/model/employment_verification_get_request.py rename plaid/model/{distribution_details.py => employment_verification_get_response.py} (82%) create mode 100644 plaid/model/income_verification_create_request_options.py create mode 100644 plaid/model/income_verification_precheck_employer_address.py create mode 100644 plaid/model/platform_ids.py diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index f71106568..116e44cb2 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -114,6 +114,8 @@ plaid/model/credit_filter.py plaid/model/customer_initiated_return_risk.py plaid/model/customer_initiated_risk_tier.py plaid/model/deductions.py +plaid/model/deductions_breakdown.py +plaid/model/deductions_total.py plaid/model/default_update_webhook.py plaid/model/deposit_switch_address_data.py plaid/model/deposit_switch_alt_create_request.py @@ -129,18 +131,23 @@ plaid/model/deposit_switch_target_user.py plaid/model/deposit_switch_token_create_request.py plaid/model/deposit_switch_token_create_response.py plaid/model/depository_filter.py -plaid/model/distribution_details.py +plaid/model/distribution_breakdown.py plaid/model/document_metadata.py plaid/model/earnings.py +plaid/model/earnings_breakdown.py plaid/model/earnings_total.py plaid/model/email.py plaid/model/employee.py plaid/model/employee_income_summary_field_string.py plaid/model/employer.py plaid/model/employer_income_summary_field_string.py +plaid/model/employer_verification.py plaid/model/employers_search_request.py plaid/model/employers_search_response.py plaid/model/employment_details.py +plaid/model/employment_verification.py +plaid/model/employment_verification_get_request.py +plaid/model/employment_verification_get_response.py plaid/model/error.py plaid/model/external_payment_options.py plaid/model/external_payment_refund_details.py @@ -163,14 +170,15 @@ plaid/model/income_summary.py plaid/model/income_summary_field_number.py plaid/model/income_summary_field_string.py plaid/model/income_verification_create_request.py +plaid/model/income_verification_create_request_options.py plaid/model/income_verification_create_response.py plaid/model/income_verification_documents_download_request.py -plaid/model/income_verification_documents_download_response.py plaid/model/income_verification_paystub_get_request.py plaid/model/income_verification_paystub_get_response.py plaid/model/income_verification_paystubs_get_request.py plaid/model/income_verification_paystubs_get_response.py plaid/model/income_verification_precheck_employer.py +plaid/model/income_verification_precheck_employer_address.py plaid/model/income_verification_precheck_military_info.py plaid/model/income_verification_precheck_request.py plaid/model/income_verification_precheck_response.py @@ -325,6 +333,7 @@ plaid/model/paystub_ytd_details.py plaid/model/pending_expiration_webhook.py plaid/model/personal_finance_category.py plaid/model/phone_number.py +plaid/model/platform_ids.py plaid/model/processor_apex_processor_token_create_request.py plaid/model/processor_auth_get_request.py plaid/model/processor_auth_get_response.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b34f98e..fb0517480 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ See full changelog for the OpenAPI Schema (OAS) [here](https://github.com/plaid/plaid-openapi/blob/master/CHANGELOG.md). +## 8.4.0 +- Updating to OAS 2020-09-14_1.36.1 + ## 8.3.0 - Updating to OAS 2020-09-14_1.34.1. - Fixed an issue with enums in this library. The library is supposed to be able to gracefully handle diff --git a/plaid/__init__.py b/plaid/__init__.py index d396cec7c..fb1d783f3 100644 --- a/plaid/__init__.py +++ b/plaid/__init__.py @@ -8,7 +8,7 @@ """ -__version__ = "8.3.0" +__version__ = "8.4.0" # import ApiClient from plaid.api_client import ApiClient diff --git a/plaid/api/plaid_api.py b/plaid/api/plaid_api.py index 55f5ce3b8..0d0ebdbb5 100644 --- a/plaid/api/plaid_api.py +++ b/plaid/api/plaid_api.py @@ -73,6 +73,8 @@ from plaid.model.deposit_switch_token_create_response import DepositSwitchTokenCreateResponse from plaid.model.employers_search_request import EmployersSearchRequest from plaid.model.employers_search_response import EmployersSearchResponse +from plaid.model.employment_verification_get_request import EmploymentVerificationGetRequest +from plaid.model.employment_verification_get_response import EmploymentVerificationGetResponse from plaid.model.error import Error from plaid.model.identity_get_request import IdentityGetRequest from plaid.model.identity_get_response import IdentityGetResponse @@ -3871,6 +3873,128 @@ def __employers_search( callable=__employers_search ) + def __employment_verification_get( + self, + employment_verification_get_request, + **kwargs + ): + """Retrieve a summary of an individual's employment information. # noqa: E501 + + `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.employment_verification_get(employment_verification_get_request, async_req=True) + >>> result = thread.get() + + Args: + employment_verification_get_request (EmploymentVerificationGetRequest): + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (float/tuple): timeout setting for this request. If one + number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + async_req (bool): execute request asynchronously + + Returns: + EmploymentVerificationGetResponse + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['employment_verification_get_request'] = \ + employment_verification_get_request + return self.call_with_http_info(**kwargs) + + self.employment_verification_get = _Endpoint( + settings={ + 'response_type': (EmploymentVerificationGetResponse,), + 'auth': [ + 'clientId', + 'plaidVersion', + 'secret' + ], + 'endpoint_path': '/employment/verification/get', + 'operation_id': 'employment_verification_get', + 'http_method': 'POST', + 'servers': None, + }, + params_map={ + 'all': [ + 'employment_verification_get_request', + ], + 'required': [ + 'employment_verification_get_request', + ], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'employment_verification_get_request': + (EmploymentVerificationGetRequest,), + }, + 'attribute_map': { + }, + 'location_map': { + 'employment_verification_get_request': 'body', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [ + 'application/json' + ] + }, + api_client=api_client, + callable=__employment_verification_get + ) + def __identity_get( self, identity_get_request, @@ -4122,7 +4246,7 @@ def __income_verification_documents_download( ): """Download the original documents used for income verification # noqa: E501 - `/income/verification/documents/download` provides the ability to download the source paystub PDF that the end user uploaded via Paystub Import. The response to `/income/verification/documents/download` is a ZIP file in binary data. The `request_id` is returned in the `Plaid-Request-ID` header. For Payroll Income, the most recent file available for download with the payroll provider will also be available from this endpoint. # noqa: E501 + `/income/verification/documents/download` provides the ability to download the source documents associated with the verification. If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint. The response to `/income/verification/documents/download` is ZIP file in binary data. If a document_id is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification. The `request_id` is returned in the `Plaid-Request-ID` header. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True diff --git a/plaid/api_client.py b/plaid/api_client.py index 2d5683a11..9dd58049f 100644 --- a/plaid/api_client.py +++ b/plaid/api_client.py @@ -74,7 +74,7 @@ def __init__(self, configuration=None, header_name=None, header_value=None, self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'Plaid Python v8.3.0' + self.user_agent = 'Plaid Python v8.4.0' def __enter__(self): return self diff --git a/plaid/configuration.py b/plaid/configuration.py index 69b339cde..9d03796e7 100644 --- a/plaid/configuration.py +++ b/plaid/configuration.py @@ -427,8 +427,8 @@ def to_debug_report(self): return "Python SDK Debug Report:\n"\ "OS: {env}\n"\ "Python Version: {pyversion}\n"\ - "Version of the API: 2020-09-14_1.34.1\n"\ - "SDK Package Version: 8.3.0".\ + "Version of the API: 2020-09-14_1.39.0\n"\ + "SDK Package Version: 8.4.0".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self): diff --git a/plaid/model/asset_report_create_request.py b/plaid/model/asset_report_create_request.py index fd14d6c24..0ed504917 100644 --- a/plaid/model/asset_report_create_request.py +++ b/plaid/model/asset_report_create_request.py @@ -62,7 +62,7 @@ class AssetReportCreateRequest(ModelNormal): 'min_items': 1, }, ('days_requested',): { - 'inclusive_maximum': 730, + 'inclusive_maximum': 731, 'inclusive_minimum': 0, }, } diff --git a/plaid/model/asset_report_create_request_options.py b/plaid/model/asset_report_create_request_options.py index cbae7854f..372b5c5af 100644 --- a/plaid/model/asset_report_create_request_options.py +++ b/plaid/model/asset_report_create_request_options.py @@ -75,8 +75,8 @@ def openapi_types(): """ lazy_import() return { - 'client_report_id': (str,), # noqa: E501 - 'webhook': (str,), # noqa: E501 + 'client_report_id': (str, none_type,), # noqa: E501 + 'webhook': (str, none_type,), # noqa: E501 'user': (AssetReportUser,), # noqa: E501 } @@ -137,8 +137,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - client_report_id (str): Client-generated identifier, which can be used by lenders to track loan applications.. [optional] # noqa: E501 - webhook (str): URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.. [optional] # noqa: E501 + client_report_id (str, none_type): Client-generated identifier, which can be used by lenders to track loan applications.. [optional] # noqa: E501 + webhook (str, none_type): URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.. [optional] # noqa: E501 user (AssetReportUser): [optional] # noqa: E501 """ diff --git a/plaid/model/asset_report_get_request.py b/plaid/model/asset_report_get_request.py index 91f738079..03494c770 100644 --- a/plaid/model/asset_report_get_request.py +++ b/plaid/model/asset_report_get_request.py @@ -139,7 +139,7 @@ def __init__(self, asset_report_token, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) client_id (str): 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.. [optional] # noqa: E501 secret (str): 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.. [optional] # noqa: E501 - include_insights (bool): `true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.. [optional] # noqa: E501 + include_insights (bool): `true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.. [optional] if omitted the server will use the default value of False # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/asset_report_refresh_request.py b/plaid/model/asset_report_refresh_request.py index 5dc576589..63e608f32 100644 --- a/plaid/model/asset_report_refresh_request.py +++ b/plaid/model/asset_report_refresh_request.py @@ -58,7 +58,7 @@ class AssetReportRefreshRequest(ModelNormal): validations = { ('days_requested',): { - 'inclusive_maximum': 730, + 'inclusive_maximum': 731, 'inclusive_minimum': 0, }, } @@ -82,7 +82,7 @@ def openapi_types(): 'asset_report_token': (str,), # noqa: E501 'client_id': (str,), # noqa: E501 'secret': (str,), # noqa: E501 - 'days_requested': (int,), # noqa: E501 + 'days_requested': (int, none_type,), # noqa: E501 'options': (AssetReportRefreshRequestOptions,), # noqa: E501 } @@ -150,7 +150,7 @@ def __init__(self, asset_report_token, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) client_id (str): 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.. [optional] # noqa: E501 secret (str): 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.. [optional] # noqa: E501 - days_requested (int): The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the value from the original call to `/asset_report/create` will be used.. [optional] # noqa: E501 + days_requested (int, none_type): The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the value from the original call to `/asset_report/create` will be used.. [optional] # noqa: E501 options (AssetReportRefreshRequestOptions): [optional] # noqa: E501 """ diff --git a/plaid/model/asset_report_refresh_request_options.py b/plaid/model/asset_report_refresh_request_options.py index 1d837ebb0..c1bf26f30 100644 --- a/plaid/model/asset_report_refresh_request_options.py +++ b/plaid/model/asset_report_refresh_request_options.py @@ -75,8 +75,8 @@ def openapi_types(): """ lazy_import() return { - 'client_report_id': (str,), # noqa: E501 - 'webhook': (str,), # noqa: E501 + 'client_report_id': (str, none_type,), # noqa: E501 + 'webhook': (str, none_type,), # noqa: E501 'user': (AssetReportUser,), # noqa: E501 } @@ -137,8 +137,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - client_report_id (str): Client-generated identifier, which can be used by lenders to track loan applications.. [optional] # noqa: E501 - webhook (str): URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.. [optional] # noqa: E501 + client_report_id (str, none_type): Client-generated identifier, which can be used by lenders to track loan applications.. [optional] # noqa: E501 + webhook (str, none_type): URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.. [optional] # noqa: E501 user (AssetReportUser): [optional] # noqa: E501 """ diff --git a/plaid/model/credit_card_liability.py b/plaid/model/credit_card_liability.py index 376be665f..fb987aa7c 100644 --- a/plaid/model/credit_card_liability.py +++ b/plaid/model/credit_card_liability.py @@ -88,6 +88,7 @@ def openapi_types(): 'last_payment_amount': (float,), # noqa: E501 'last_payment_date': (date,), # noqa: E501 'last_statement_issue_date': (date,), # noqa: E501 + 'last_statement_balance': (float,), # noqa: E501 'minimum_payment_amount': (float,), # noqa: E501 'next_payment_due_date': (date, none_type,), # noqa: E501 } @@ -104,6 +105,7 @@ def discriminator(): 'last_payment_amount': 'last_payment_amount', # noqa: E501 'last_payment_date': 'last_payment_date', # noqa: E501 'last_statement_issue_date': 'last_statement_issue_date', # noqa: E501 + 'last_statement_balance': 'last_statement_balance', # noqa: E501 'minimum_payment_amount': 'minimum_payment_amount', # noqa: E501 'next_payment_due_date': 'next_payment_due_date', # noqa: E501 } @@ -120,7 +122,7 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, account_id, aprs, is_overdue, last_payment_amount, last_payment_date, last_statement_issue_date, minimum_payment_amount, next_payment_due_date, *args, **kwargs): # noqa: E501 + def __init__(self, account_id, aprs, is_overdue, last_payment_amount, last_payment_date, last_statement_issue_date, last_statement_balance, minimum_payment_amount, next_payment_due_date, *args, **kwargs): # noqa: E501 """CreditCardLiability - a model defined in OpenAPI Args: @@ -130,6 +132,7 @@ def __init__(self, account_id, aprs, is_overdue, last_payment_amount, last_payme last_payment_amount (float): The amount of the last payment. last_payment_date (date): The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Availability for this field is limited. last_statement_issue_date (date): The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). + last_statement_balance (float): The total amount owed as of the last statement issued minimum_payment_amount (float): The minimum payment due for the next billing cycle. next_payment_due_date (date, none_type): The due date for the next payment. The due date is `null` if a payment is not expected. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). @@ -195,6 +198,7 @@ def __init__(self, account_id, aprs, is_overdue, last_payment_amount, last_payme self.last_payment_amount = last_payment_amount self.last_payment_date = last_payment_date self.last_statement_issue_date = last_statement_issue_date + self.last_statement_balance = last_statement_balance self.minimum_payment_amount = minimum_payment_amount self.next_payment_due_date = next_payment_due_date for var_name, var_value in kwargs.items(): diff --git a/plaid/model/deductions.py b/plaid/model/deductions.py index 3c6f062ca..99dc970ca 100644 --- a/plaid/model/deductions.py +++ b/plaid/model/deductions.py @@ -25,7 +25,11 @@ ) def lazy_import(): + from plaid.model.deductions_breakdown import DeductionsBreakdown + from plaid.model.deductions_total import DeductionsTotal from plaid.model.total import Total + globals()['DeductionsBreakdown'] = DeductionsBreakdown + globals()['DeductionsTotal'] = DeductionsTotal globals()['Total'] = Total @@ -82,6 +86,8 @@ def openapi_types(): """ lazy_import() return { + 'breakdown': ([DeductionsBreakdown],), # noqa: E501 + 'total': (DeductionsTotal,), # noqa: E501 'subtotals': ([Total],), # noqa: E501 'totals': ([Total],), # noqa: E501 } @@ -92,6 +98,8 @@ def discriminator(): attribute_map = { + 'breakdown': 'breakdown', # noqa: E501 + 'total': 'total', # noqa: E501 'subtotals': 'subtotals', # noqa: E501 'totals': 'totals', # noqa: E501 } @@ -108,9 +116,13 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, breakdown, total, *args, **kwargs): # noqa: E501 """Deductions - a model defined in OpenAPI + Args: + breakdown ([DeductionsBreakdown]): + total (DeductionsTotal): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -169,6 +181,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.breakdown = breakdown + self.total = total for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/deductions_breakdown.py b/plaid/model/deductions_breakdown.py new file mode 100644 index 000000000..f2d9b8e6c --- /dev/null +++ b/plaid/model/deductions_breakdown.py @@ -0,0 +1,182 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class DeductionsBreakdown(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'current_amount': (float, none_type,), # noqa: E501 + 'description': (str, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'ytd_amount': (float, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'current_amount': 'current_amount', # noqa: E501 + 'description': 'description', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'ytd_amount': 'ytd_amount', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """DeductionsBreakdown - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + current_amount (float, none_type): Raw amount of the deduction. [optional] # noqa: E501 + description (str, none_type): Description of the deduction line item. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + ytd_amount (float, none_type): The year-to-date amount of the deduction. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/deductions_total.py b/plaid/model/deductions_total.py new file mode 100644 index 000000000..804505362 --- /dev/null +++ b/plaid/model/deductions_total.py @@ -0,0 +1,179 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class DeductionsTotal(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'current_amount': (float, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'ytd_amount': (float, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'current_amount': 'current_amount', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'ytd_amount': 'ytd_amount', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """DeductionsTotal - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + current_amount (float, none_type): Raw amount of the deduction. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + ytd_amount (float, none_type): The year-to-date total amount of the deductions. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/distribution_breakdown.py b/plaid/model/distribution_breakdown.py new file mode 100644 index 000000000..cfbff06ef --- /dev/null +++ b/plaid/model/distribution_breakdown.py @@ -0,0 +1,197 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + +def lazy_import(): + from plaid.model.pay import Pay + globals()['Pay'] = Pay + + +class DistributionBreakdown(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'account_name': (str, none_type,), # noqa: E501 + 'bank_name': (str, none_type,), # noqa: E501 + 'current_amount': (float, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'mask': (str, none_type,), # noqa: E501 + 'type': (str, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'current_pay': (Pay,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'account_name': 'account_name', # noqa: E501 + 'bank_name': 'bank_name', # noqa: E501 + 'current_amount': 'current_amount', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'mask': 'mask', # noqa: E501 + 'type': 'type', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'current_pay': 'current_pay', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """DistributionBreakdown - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + account_name (str, none_type): Name of the account for the given distribution.. [optional] # noqa: E501 + bank_name (str, none_type): The name of the bank that the payment is being deposited to.. [optional] # noqa: E501 + current_amount (float, none_type): The amount distributed to this account.. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + mask (str, none_type): The last 2-4 alphanumeric characters of an account's official account number.. [optional] # noqa: E501 + type (str, none_type): Type of the account that the paystub was sent to (e.g. 'checking').. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + current_pay (Pay): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/document_metadata.py b/plaid/model/document_metadata.py index 2173b682f..c691da699 100644 --- a/plaid/model/document_metadata.py +++ b/plaid/model/document_metadata.py @@ -50,6 +50,16 @@ class DocumentMetadata(ModelNormal): """ allowed_values = { + ('doc_type',): { + 'UNKNOWN': "UNKNOWN", + 'DOCUMENT_TYPE_PAYSTUB': "DOCUMENT_TYPE_PAYSTUB", + 'DOCUMENT_TYPE_BANK_STATEMENT': "DOCUMENT_TYPE_BANK_STATEMENT", + 'DOCUMENT_TYPE_US_TAX_W2': "DOCUMENT_TYPE_US_TAX_W2", + 'DOCUMENT_TYPE_US_MILITARY_ERAS': "DOCUMENT_TYPE_US_MILITARY_ERAS", + 'DOCUMENT_TYPE_US_MILITARY_LES': "DOCUMENT_TYPE_US_MILITARY_LES", + 'DOCUMENT_TYPE_US_MILITARY_CLES': "DOCUMENT_TYPE_US_MILITARY_CLES", + 'DOCUMENT_TYPE_GIG': "DOCUMENT_TYPE_GIG", + }, } validations = { @@ -79,6 +89,7 @@ def openapi_types(): 'name': (str,), # noqa: E501 'status': (str,), # noqa: E501 'doc_id': (str,), # noqa: E501 + 'doc_type': (str,), # noqa: E501 } @cached_property @@ -90,6 +101,7 @@ def discriminator(): 'name': 'name', # noqa: E501 'status': 'status', # noqa: E501 'doc_id': 'doc_id', # noqa: E501 + 'doc_type': 'doc_type', # noqa: E501 } _composed_schemas = {} @@ -141,6 +153,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 name (str): The name of the document.. [optional] # noqa: E501 status (str): The processing status of the document.. [optional] # noqa: E501 doc_id (str): An identifier of the document that is also present in the paystub response.. [optional] # noqa: E501 + doc_type (str): The type of document. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/earnings.py b/plaid/model/earnings.py index 490ed5964..f107a7d2a 100644 --- a/plaid/model/earnings.py +++ b/plaid/model/earnings.py @@ -25,7 +25,9 @@ ) def lazy_import(): + from plaid.model.earnings_breakdown import EarningsBreakdown from plaid.model.earnings_total import EarningsTotal + globals()['EarningsBreakdown'] = EarningsBreakdown globals()['EarningsTotal'] = EarningsTotal @@ -84,6 +86,8 @@ def openapi_types(): return { 'subtotals': ([EarningsTotal],), # noqa: E501 'totals': ([EarningsTotal],), # noqa: E501 + 'breakdown': ([EarningsBreakdown],), # noqa: E501 + 'total': (EarningsTotal,), # noqa: E501 } @cached_property @@ -94,6 +98,8 @@ def discriminator(): attribute_map = { 'subtotals': 'subtotals', # noqa: E501 'totals': 'totals', # noqa: E501 + 'breakdown': 'breakdown', # noqa: E501 + 'total': 'total', # noqa: E501 } _composed_schemas = {} @@ -144,6 +150,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) subtotals ([EarningsTotal]): [optional] # noqa: E501 totals ([EarningsTotal]): [optional] # noqa: E501 + breakdown ([EarningsBreakdown]): [optional] # noqa: E501 + total (EarningsTotal): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/earnings_breakdown.py b/plaid/model/earnings_breakdown.py new file mode 100644 index 000000000..98dd57b6f --- /dev/null +++ b/plaid/model/earnings_breakdown.py @@ -0,0 +1,202 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class EarningsBreakdown(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + ('canonical_description',): { + 'None': None, + 'BONUS': "BONUS", + 'COMMISSION': "COMMISSION", + 'OVERTIME': "OVERTIME", + 'PAID_TIME_OFF': "PAID TIME OFF", + 'REGULAR_PAY': "REGULAR PAY", + 'VACATION': "VACATION", + 'OTHER': "OTHER", + 'NULL': "null", + }, + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'canonical_description': (str, none_type,), # noqa: E501 + 'current_amount': (float, none_type,), # noqa: E501 + 'description': (str, none_type,), # noqa: E501 + 'hours': (float, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'rate': (float, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'ytd_amount': (float, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'canonical_description': 'canonical_description', # noqa: E501 + 'current_amount': 'current_amount', # noqa: E501 + 'description': 'description', # noqa: E501 + 'hours': 'hours', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'rate': 'rate', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'ytd_amount': 'ytd_amount', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """EarningsBreakdown - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + canonical_description (str, none_type): Commonly used term to describe the earning line item.. [optional] # noqa: E501 + current_amount (float, none_type): Raw amount of the earning line item.. [optional] # noqa: E501 + description (str, none_type): Description of the earning line item.. [optional] # noqa: E501 + hours (float, none_type): Number of hours applicable for this earning.. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + rate (float, none_type): Hourly rate applicable for this earning.. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + ytd_amount (float, none_type): The year-to-date amount of the deduction.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/earnings_total.py b/plaid/model/earnings_total.py index eea9db00f..1b8d21939 100644 --- a/plaid/model/earnings_total.py +++ b/plaid/model/earnings_total.py @@ -102,11 +102,13 @@ def openapi_types(): lazy_import() return { 'canonical_description': (str, none_type,), # noqa: E501 - 'description': (str, none_type,), # noqa: E501 + 'current_amount': (float, none_type,), # noqa: E501 'current_pay': (Pay,), # noqa: E501 'ytd_pay': (Pay,), # noqa: E501 - 'current_hours': (str, none_type,), # noqa: E501 - 'current_rate': (str, none_type,), # noqa: E501 + 'hours': (float, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'ytd_amount': (float, none_type,), # noqa: E501 } @cached_property @@ -116,11 +118,13 @@ def discriminator(): attribute_map = { 'canonical_description': 'canonical_description', # noqa: E501 - 'description': 'description', # noqa: E501 + 'current_amount': 'current_amount', # noqa: E501 'current_pay': 'current_pay', # noqa: E501 'ytd_pay': 'ytd_pay', # noqa: E501 - 'current_hours': 'current_hours', # noqa: E501 - 'current_rate': 'current_rate', # noqa: E501 + 'hours': 'hours', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'ytd_amount': 'ytd_amount', # noqa: E501 } _composed_schemas = {} @@ -170,11 +174,13 @@ def __init__(self, *args, **kwargs): # noqa: E501 through its discriminator because we passed in _visited_composed_classes = (Animal,) canonical_description (str, none_type): Commonly used term to describe the line item.. [optional] # noqa: E501 - description (str, none_type): Text of the line item as printed on the paystub.. [optional] # noqa: E501 + current_amount (float, none_type): Total amount of the earnings for this pay period. [optional] # noqa: E501 current_pay (Pay): [optional] # noqa: E501 ytd_pay (Pay): [optional] # noqa: E501 - current_hours (str, none_type): [optional] # noqa: E501 - current_rate (str, none_type): [optional] # noqa: E501 + hours (float, none_type): Total number of hours worked for this pay period. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + ytd_amount (float, none_type): The total year-to-date amount of the earnings. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/employee.py b/plaid/model/employee.py index cfe6734ad..e5751edde 100644 --- a/plaid/model/employee.py +++ b/plaid/model/employee.py @@ -84,8 +84,8 @@ def openapi_types(): """ lazy_import() return { - 'name': (str, none_type,), # noqa: E501 'address': (PaystubAddress,), # noqa: E501 + 'name': (str, none_type,), # noqa: E501 'marital_status': (str, none_type,), # noqa: E501 'taxpayer_id': (TaxpayerID,), # noqa: E501 } @@ -96,8 +96,8 @@ def discriminator(): attribute_map = { - 'name': 'name', # noqa: E501 'address': 'address', # noqa: E501 + 'name': 'name', # noqa: E501 'marital_status': 'marital_status', # noqa: E501 'taxpayer_id': 'taxpayer_id', # noqa: E501 } @@ -114,12 +114,12 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, name, address, *args, **kwargs): # noqa: E501 + def __init__(self, address, name, *args, **kwargs): # noqa: E501 """Employee - a model defined in OpenAPI Args: - name (str, none_type): The name of the employee. address (PaystubAddress): + name (str, none_type): The name of the employee. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -179,8 +179,8 @@ def __init__(self, name, address, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.name = name self.address = address + self.name = name for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/income_verification_documents_download_response.py b/plaid/model/employer_verification.py similarity index 94% rename from plaid/model/income_verification_documents_download_response.py rename to plaid/model/employer_verification.py index 51cc8c8aa..1795f72ad 100644 --- a/plaid/model/income_verification_documents_download_response.py +++ b/plaid/model/employer_verification.py @@ -25,7 +25,7 @@ ) -class IncomeVerificationDocumentsDownloadResponse(ModelNormal): +class EmployerVerification(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -76,7 +76,7 @@ def openapi_types(): and the value is attribute type. """ return { - 'id': (str,), # noqa: E501 + 'name': (str, none_type,), # noqa: E501 } @cached_property @@ -85,7 +85,7 @@ def discriminator(): attribute_map = { - 'id': 'id', # noqa: E501 + 'name': 'name', # noqa: E501 } _composed_schemas = {} @@ -100,11 +100,8 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, id, *args, **kwargs): # noqa: E501 - """IncomeVerificationDocumentsDownloadResponse - a model defined in OpenAPI - - Args: - id (str): + def __init__(self, *args, **kwargs): # noqa: E501 + """EmployerVerification - a model defined in OpenAPI Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -137,6 +134,7 @@ def __init__(self, id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + name (str, none_type): Name of employer.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -162,7 +160,6 @@ def __init__(self, id, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.id = id for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/employment_verification.py b/plaid/model/employment_verification.py new file mode 100644 index 000000000..ec1b93cd3 --- /dev/null +++ b/plaid/model/employment_verification.py @@ -0,0 +1,199 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + +def lazy_import(): + from plaid.model.employer_verification import EmployerVerification + from plaid.model.platform_ids import PlatformIds + globals()['EmployerVerification'] = EmployerVerification + globals()['PlatformIds'] = PlatformIds + + +class EmploymentVerification(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + ('status',): { + 'None': None, + 'EMPLOYMENT_STATUS_ACTIVE': "EMPLOYMENT_STATUS_ACTIVE", + 'EMPLOYMENT_STATUS_INACTIVE': "EMPLOYMENT_STATUS_INACTIVE", + 'NULL': "null", + }, + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'status': (str, none_type,), # noqa: E501 + 'start_date': (date, none_type,), # noqa: E501 + 'end_date': (date, none_type,), # noqa: E501 + 'employer': (EmployerVerification,), # noqa: E501 + 'title': (str, none_type,), # noqa: E501 + 'platform_ids': (PlatformIds,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'status': 'status', # noqa: E501 + 'start_date': 'start_date', # noqa: E501 + 'end_date': 'end_date', # noqa: E501 + 'employer': 'employer', # noqa: E501 + 'title': 'title', # noqa: E501 + 'platform_ids': 'platform_ids', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """EmploymentVerification - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + status (str, none_type): Current employment status.. [optional] # noqa: E501 + start_date (date, none_type): Start of employment in ISO_8601 format (YYYY-MM-DD).. [optional] # noqa: E501 + end_date (date, none_type): End of employment, if applicable. In ISO_8601 format (YYY-MM-DD).. [optional] # noqa: E501 + employer (EmployerVerification): [optional] # noqa: E501 + title (str, none_type): Current title of employee.. [optional] # noqa: E501 + platform_ids (PlatformIds): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/employment_verification_get_request.py b/plaid/model/employment_verification_get_request.py new file mode 100644 index 000000000..dc38c6c4b --- /dev/null +++ b/plaid/model/employment_verification_get_request.py @@ -0,0 +1,173 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class EmploymentVerificationGetRequest(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + additional_properties_type = None + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'access_token': (str,), # noqa: E501 + 'client_id': (str,), # noqa: E501 + 'secret': (str,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'access_token': 'access_token', # noqa: E501 + 'client_id': 'client_id', # noqa: E501 + 'secret': 'secret', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, access_token, *args, **kwargs): # noqa: E501 + """EmploymentVerificationGetRequest - a model defined in OpenAPI + + Args: + access_token (str): The access token associated with the Item data is being requested for. + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + client_id (str): 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.. [optional] # noqa: E501 + secret (str): 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.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.access_token = access_token + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/distribution_details.py b/plaid/model/employment_verification_get_response.py similarity index 82% rename from plaid/model/distribution_details.py rename to plaid/model/employment_verification_get_response.py index 7b3a42c54..88ed538f8 100644 --- a/plaid/model/distribution_details.py +++ b/plaid/model/employment_verification_get_response.py @@ -25,11 +25,13 @@ ) def lazy_import(): - from plaid.model.pay import Pay - globals()['Pay'] = Pay + from plaid.model.employment_verification import EmploymentVerification + from plaid.model.error import Error + globals()['EmploymentVerification'] = EmploymentVerification + globals()['Error'] = Error -class DistributionDetails(ModelNormal): +class EmploymentVerificationGetResponse(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -82,11 +84,9 @@ def openapi_types(): """ lazy_import() return { - 'account_number': (str, none_type,), # noqa: E501 - 'bank_account_type': (str, none_type,), # noqa: E501 - 'bank_name': (str, none_type,), # noqa: E501 - 'current_pay': (Pay,), # noqa: E501 - 'description': (str, none_type,), # noqa: E501 + 'employments': ([EmploymentVerification],), # noqa: E501 + 'request_id': (str,), # noqa: E501 + 'error': (Error,), # noqa: E501 } @cached_property @@ -95,11 +95,9 @@ def discriminator(): attribute_map = { - 'account_number': 'account_number', # noqa: E501 - 'bank_account_type': 'bank_account_type', # noqa: E501 - 'bank_name': 'bank_name', # noqa: E501 - 'current_pay': 'current_pay', # noqa: E501 - 'description': 'description', # noqa: E501 + 'employments': 'employments', # noqa: E501 + 'request_id': 'request_id', # noqa: E501 + 'error': 'error', # noqa: E501 } _composed_schemas = {} @@ -114,8 +112,12 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 - """DistributionDetails - a model defined in OpenAPI + def __init__(self, employments, request_id, *args, **kwargs): # noqa: E501 + """EmploymentVerificationGetResponse - a model defined in OpenAPI + + Args: + employments ([EmploymentVerification]): A list of employment verification summaries. + request_id (str): A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -148,11 +150,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - account_number (str, none_type): The account number of the account being deposited to.. [optional] # noqa: E501 - bank_account_type (str, none_type): The type of bank account (e.g. Checking or Savings). [optional] # noqa: E501 - bank_name (str, none_type): The name of the bank that the payment is being deposited to.. [optional] # noqa: E501 - current_pay (Pay): [optional] # noqa: E501 - description (str, none_type): A description of the distribution type.. [optional] # noqa: E501 + error (Error): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -178,6 +176,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.employments = employments + self.request_id = request_id for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/error.py b/plaid/model/error.py index 7555fc692..996728dd8 100644 --- a/plaid/model/error.py +++ b/plaid/model/error.py @@ -63,6 +63,7 @@ class Error(ModelNormal): 'OAUTH_ERROR': "OAUTH_ERROR", 'PAYMENT_ERROR': "PAYMENT_ERROR", 'BANK_TRANSFER_ERROR': "BANK_TRANSFER_ERROR", + 'INCOME_VERIFICATION_ERROR': "INCOME_VERIFICATION_ERROR", }, } diff --git a/plaid/model/income_verification_create_request.py b/plaid/model/income_verification_create_request.py index b9c8bc17c..418d77d63 100644 --- a/plaid/model/income_verification_create_request.py +++ b/plaid/model/income_verification_create_request.py @@ -24,6 +24,10 @@ validate_get_composed_info, ) +def lazy_import(): + from plaid.model.income_verification_create_request_options import IncomeVerificationCreateRequestOptions + globals()['IncomeVerificationCreateRequestOptions'] = IncomeVerificationCreateRequestOptions + class IncomeVerificationCreateRequest(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -69,10 +73,13 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'webhook': (str,), # noqa: E501 'client_id': (str,), # noqa: E501 'secret': (str,), # noqa: E501 + 'precheck_id': (str,), # noqa: E501 + 'options': (IncomeVerificationCreateRequestOptions,), # noqa: E501 } @cached_property @@ -84,6 +91,8 @@ def discriminator(): 'webhook': 'webhook', # noqa: E501 'client_id': 'client_id', # noqa: E501 'secret': 'secret', # noqa: E501 + 'precheck_id': 'precheck_id', # noqa: E501 + 'options': 'options', # noqa: E501 } _composed_schemas = {} @@ -137,6 +146,8 @@ def __init__(self, webhook, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) client_id (str): 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.. [optional] # noqa: E501 secret (str): 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.. [optional] # noqa: E501 + precheck_id (str): The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow.. [optional] # noqa: E501 + options (IncomeVerificationCreateRequestOptions): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/income_verification_create_request_options.py b/plaid/model/income_verification_create_request_options.py new file mode 100644 index 000000000..ee33cf75a --- /dev/null +++ b/plaid/model/income_verification_create_request_options.py @@ -0,0 +1,164 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class IncomeVerificationCreateRequestOptions(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + additional_properties_type = None + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'access_tokens': ([str],), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'access_tokens': 'access_tokens', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """IncomeVerificationCreateRequestOptions - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + access_tokens ([str]): An array of access tokens corresponding to the Items that will be cross-referenced with the product data. If the `transactions` product was not initialized for the Items during link, it will be initialized after this Link session.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/income_verification_documents_download_request.py b/plaid/model/income_verification_documents_download_request.py index f61010cf6..e34971a5f 100644 --- a/plaid/model/income_verification_documents_download_request.py +++ b/plaid/model/income_verification_documents_download_request.py @@ -74,6 +74,7 @@ def openapi_types(): 'secret': (str,), # noqa: E501 'income_verification_id': (str, none_type,), # noqa: E501 'access_token': (str, none_type,), # noqa: E501 + 'document_id': (str, none_type,), # noqa: E501 } @cached_property @@ -86,6 +87,7 @@ def discriminator(): 'secret': 'secret', # noqa: E501 'income_verification_id': 'income_verification_id', # noqa: E501 'access_token': 'access_token', # noqa: E501 + 'document_id': 'document_id', # noqa: E501 } _composed_schemas = {} @@ -138,6 +140,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 secret (str): 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.. [optional] # noqa: E501 income_verification_id (str, none_type): The ID of the verification.. [optional] # noqa: E501 access_token (str, none_type): The access token associated with the Item data is being requested for.. [optional] # noqa: E501 + document_id (str, none_type): The document ID to download. If passed, a single document will be returned in the resulting zip file, rather than all document. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/income_verification_paystubs_get_response.py b/plaid/model/income_verification_paystubs_get_response.py index d2b090bff..faa8e0dbd 100644 --- a/plaid/model/income_verification_paystubs_get_response.py +++ b/plaid/model/income_verification_paystubs_get_response.py @@ -88,8 +88,8 @@ def openapi_types(): return { 'paystubs': ([Paystub],), # noqa: E501 'request_id': (str,), # noqa: E501 - 'error': (Error,), # noqa: E501 'document_metadata': ([DocumentMetadata],), # noqa: E501 + 'error': (Error,), # noqa: E501 } @cached_property @@ -100,8 +100,8 @@ def discriminator(): attribute_map = { 'paystubs': 'paystubs', # noqa: E501 'request_id': 'request_id', # noqa: E501 - 'error': 'error', # noqa: E501 'document_metadata': 'document_metadata', # noqa: E501 + 'error': 'error', # noqa: E501 } _composed_schemas = {} @@ -154,8 +154,8 @@ def __init__(self, paystubs, request_id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - error (Error): [optional] # noqa: E501 document_metadata ([DocumentMetadata]): [optional] # noqa: E501 + error (Error): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/income_verification_precheck_employer.py b/plaid/model/income_verification_precheck_employer.py index ab9647328..fa96baaa4 100644 --- a/plaid/model/income_verification_precheck_employer.py +++ b/plaid/model/income_verification_precheck_employer.py @@ -24,6 +24,10 @@ validate_get_composed_info, ) +def lazy_import(): + from plaid.model.income_verification_precheck_employer_address import IncomeVerificationPrecheckEmployerAddress + globals()['IncomeVerificationPrecheckEmployerAddress'] = IncomeVerificationPrecheckEmployerAddress + class IncomeVerificationPrecheckEmployer(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -69,9 +73,12 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'name': (str, none_type,), # noqa: E501 + 'address': (IncomeVerificationPrecheckEmployerAddress,), # noqa: E501 'tax_id': (str, none_type,), # noqa: E501 + 'url': (str, none_type,), # noqa: E501 } @cached_property @@ -81,7 +88,9 @@ def discriminator(): attribute_map = { 'name': 'name', # noqa: E501 + 'address': 'address', # noqa: E501 'tax_id': 'tax_id', # noqa: E501 + 'url': 'url', # noqa: E501 } _composed_schemas = {} @@ -131,7 +140,9 @@ def __init__(self, *args, **kwargs): # noqa: E501 through its discriminator because we passed in _visited_composed_classes = (Animal,) name (str, none_type): The employer's name. [optional] # noqa: E501 + address (IncomeVerificationPrecheckEmployerAddress): [optional] # noqa: E501 tax_id (str, none_type): The employer's tax id. [optional] # noqa: E501 + url (str, none_type): The URL for the employer's public website. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/income_verification_precheck_employer_address.py b/plaid/model/income_verification_precheck_employer_address.py new file mode 100644 index 000000000..00801a6e0 --- /dev/null +++ b/plaid/model/income_verification_precheck_employer_address.py @@ -0,0 +1,237 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + +def lazy_import(): + from plaid.model.address_data import AddressData + globals()['AddressData'] = AddressData + + +class IncomeVerificationPrecheckEmployerAddress(ModelComposed): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = True + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'city': (str,), # noqa: E501 + 'region': (str, none_type,), # noqa: E501 + 'street': (str,), # noqa: E501 + 'postal_code': (str, none_type,), # noqa: E501 + 'country': (str, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'city': 'city', # noqa: E501 + 'region': 'region', # noqa: E501 + 'street': 'street', # noqa: E501 + 'postal_code': 'postal_code', # noqa: E501 + 'country': 'country', # noqa: E501 + } + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + '_composed_instances', + '_var_name_to_model_instances', + '_additional_properties_model_instances', + ]) + + @convert_js_args_to_python_args + def __init__(self, city, region, street, postal_code, country, *args, **kwargs): # noqa: E501 + """IncomeVerificationPrecheckEmployerAddress - a model defined in OpenAPI + + Args: + city (str): The full city name + region (str, none_type): The region or state Example: `\"NC\"` + street (str): The full street address Example: `\"564 Main Street, APT 15\"` + postal_code (str, none_type): The postal code + country (str, none_type): The ISO 3166-1 alpha-2 country code + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + constant_args = { + '_check_type': _check_type, + '_path_to_item': _path_to_item, + '_spec_property_naming': _spec_property_naming, + '_configuration': _configuration, + '_visited_composed_classes': self._visited_composed_classes, + } + required_args = { + 'city': city, + 'region': region, + 'street': street, + 'postal_code': postal_code, + 'country': country, + } + model_args = {} + model_args.update(required_args) + model_args.update(kwargs) + composed_info = validate_get_composed_info( + constant_args, model_args, self) + self._composed_instances = composed_info[0] + self._var_name_to_model_instances = composed_info[1] + self._additional_properties_model_instances = composed_info[2] + unused_args = composed_info[3] + + for var_name, var_value in required_args.items(): + setattr(self, var_name, var_value) + for var_name, var_value in kwargs.items(): + if var_name in unused_args and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + not self._additional_properties_model_instances: + # discard variable. + continue + setattr(self, var_name, var_value) + + @cached_property + def _composed_schemas(): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error beause the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + lazy_import() + return { + 'anyOf': [ + ], + 'allOf': [ + AddressData, + ], + 'oneOf': [ + ], + } diff --git a/plaid/model/income_verification_taxforms_get_response.py b/plaid/model/income_verification_taxforms_get_response.py index ccf7b0715..18b45aa44 100644 --- a/plaid/model/income_verification_taxforms_get_response.py +++ b/plaid/model/income_verification_taxforms_get_response.py @@ -63,7 +63,14 @@ class IncomeVerificationTaxformsGetResponse(ModelNormal): validations = { } - additional_properties_type = None + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -79,8 +86,8 @@ def openapi_types(): """ lazy_import() return { - 'taxforms': ([Taxform],), # noqa: E501 'document_metadata': ([DocumentMetadata],), # noqa: E501 + 'taxforms': ([Taxform],), # noqa: E501 'request_id': (str,), # noqa: E501 'error': (Error,), # noqa: E501 } @@ -91,8 +98,8 @@ def discriminator(): attribute_map = { - 'taxforms': 'taxforms', # noqa: E501 'document_metadata': 'document_metadata', # noqa: E501 + 'taxforms': 'taxforms', # noqa: E501 'request_id': 'request_id', # noqa: E501 'error': 'error', # noqa: E501 } @@ -109,12 +116,12 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, taxforms, document_metadata, *args, **kwargs): # noqa: E501 + def __init__(self, document_metadata, taxforms, *args, **kwargs): # noqa: E501 """IncomeVerificationTaxformsGetResponse - a model defined in OpenAPI Args: - taxforms ([Taxform]): A list of taxforms. document_metadata ([DocumentMetadata]): + taxforms ([Taxform]): A list of taxforms. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -174,8 +181,8 @@ def __init__(self, taxforms, document_metadata, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.taxforms = taxforms self.document_metadata = document_metadata + self.taxforms = taxforms for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/link_token_create_request_income_verification.py b/plaid/model/link_token_create_request_income_verification.py index 9e4d00ca3..574dca03e 100644 --- a/plaid/model/link_token_create_request_income_verification.py +++ b/plaid/model/link_token_create_request_income_verification.py @@ -72,6 +72,8 @@ def openapi_types(): return { 'income_verification_id': (str,), # noqa: E501 'asset_report_id': (str,), # noqa: E501 + 'precheck_id': (str,), # noqa: E501 + 'access_tokens': ([str],), # noqa: E501 } @cached_property @@ -82,6 +84,8 @@ def discriminator(): attribute_map = { 'income_verification_id': 'income_verification_id', # noqa: E501 'asset_report_id': 'asset_report_id', # noqa: E501 + 'precheck_id': 'precheck_id', # noqa: E501 + 'access_tokens': 'access_tokens', # noqa: E501 } _composed_schemas = {} @@ -96,12 +100,9 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, income_verification_id, *args, **kwargs): # noqa: E501 + def __init__(self, *args, **kwargs): # noqa: E501 """LinkTokenCreateRequestIncomeVerification - a model defined in OpenAPI - Args: - income_verification_id (str): The `income_verification_id` of the verification instance, as provided by `/income/verification/create`. - Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -133,7 +134,10 @@ def __init__(self, income_verification_id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + income_verification_id (str): The `income_verification_id` of the verification instance, as provided by `/income/verification/create`.. [optional] # noqa: E501 asset_report_id (str): The `asset_report_id` of an asset report associated with the user, as provided by `/asset_report/create`. Providing an `asset_report_id` is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped.. [optional] # noqa: E501 + precheck_id (str): The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow.. [optional] # noqa: E501 + access_tokens ([str]): An array of access tokens corresponding to the Items that will be cross-referenced with the product data. If the `transactions` product was not initialized for the Items during link, it will be initialized after this Link session.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -159,7 +163,6 @@ def __init__(self, income_verification_id, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.income_verification_id = income_verification_id for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/net_pay.py b/plaid/model/net_pay.py index 887b4bf27..212ae1b87 100644 --- a/plaid/model/net_pay.py +++ b/plaid/model/net_pay.py @@ -25,9 +25,7 @@ ) def lazy_import(): - from plaid.model.distribution_details import DistributionDetails from plaid.model.total import Total - globals()['DistributionDetails'] = DistributionDetails globals()['Total'] = Total @@ -84,7 +82,11 @@ def openapi_types(): """ lazy_import() return { - 'distribution_details': ([DistributionDetails],), # noqa: E501 + 'current_amount': (float, none_type,), # noqa: E501 + 'description': (str, none_type,), # noqa: E501 + 'iso_currency_code': (str, none_type,), # noqa: E501 + 'unofficial_currency_code': (str, none_type,), # noqa: E501 + 'ytd_amount': (float, none_type,), # noqa: E501 'total': (Total,), # noqa: E501 } @@ -94,7 +96,11 @@ def discriminator(): attribute_map = { - 'distribution_details': 'distribution_details', # noqa: E501 + 'current_amount': 'current_amount', # noqa: E501 + 'description': 'description', # noqa: E501 + 'iso_currency_code': 'iso_currency_code', # noqa: E501 + 'unofficial_currency_code': 'unofficial_currency_code', # noqa: E501 + 'ytd_amount': 'ytd_amount', # noqa: E501 'total': 'total', # noqa: E501 } @@ -144,7 +150,11 @@ def __init__(self, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - distribution_details ([DistributionDetails]): [optional] # noqa: E501 + current_amount (float, none_type): Raw amount of the net pay for the pay period. [optional] # noqa: E501 + description (str, none_type): Description of the net pay. [optional] # noqa: E501 + iso_currency_code (str, none_type): The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.. [optional] # noqa: E501 + unofficial_currency_code (str, none_type): The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.. [optional] # noqa: E501 + ytd_amount (float, none_type): The year-to-date amount of the net pay. [optional] # noqa: E501 total (Total): [optional] # noqa: E501 """ diff --git a/plaid/model/pay_period_details.py b/plaid/model/pay_period_details.py index 4efb4bd6f..0ec3dec0b 100644 --- a/plaid/model/pay_period_details.py +++ b/plaid/model/pay_period_details.py @@ -24,6 +24,10 @@ validate_get_composed_info, ) +def lazy_import(): + from plaid.model.distribution_breakdown import DistributionBreakdown + globals()['DistributionBreakdown'] = DistributionBreakdown + class PayPeriodDetails(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -50,6 +54,15 @@ class PayPeriodDetails(ModelNormal): """ allowed_values = { + ('pay_frequency',): { + 'None': None, + 'PAY_FREQUENCY_UNKNOWN': "PAY_FREQUENCY_UNKNOWN", + 'PAY_FREQUENCY_WEEKLY': "PAY_FREQUENCY_WEEKLY", + 'PAY_FREQUENCY_BIWEEKLY': "PAY_FREQUENCY_BIWEEKLY", + 'PAY_FREQUENCY_SEMIMONTHLY': "PAY_FREQUENCY_SEMIMONTHLY", + 'PAY_FREQUENCY_MONTHLY': "PAY_FREQUENCY_MONTHLY", + 'NULL': "null", + }, } validations = { @@ -61,6 +74,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -75,12 +89,16 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { - 'start_date': (date, none_type,), # noqa: E501 + 'check_amount': (float, none_type,), # noqa: E501 + 'distribution_breakdown': ([DistributionBreakdown],), # noqa: E501 'end_date': (date, none_type,), # noqa: E501 - 'pay_day': (date, none_type,), # noqa: E501 'gross_earnings': (float, none_type,), # noqa: E501 - 'check_amount': (float, none_type,), # noqa: E501 + 'pay_date': (date, none_type,), # noqa: E501 + 'pay_frequency': (str, none_type,), # noqa: E501 + 'pay_day': (date, none_type,), # noqa: E501 + 'start_date': (date, none_type,), # noqa: E501 } @cached_property @@ -89,11 +107,14 @@ def discriminator(): attribute_map = { - 'start_date': 'start_date', # noqa: E501 + 'check_amount': 'check_amount', # noqa: E501 + 'distribution_breakdown': 'distribution_breakdown', # noqa: E501 'end_date': 'end_date', # noqa: E501 - 'pay_day': 'pay_day', # noqa: E501 'gross_earnings': 'gross_earnings', # noqa: E501 - 'check_amount': 'check_amount', # noqa: E501 + 'pay_date': 'pay_date', # noqa: E501 + 'pay_frequency': 'pay_frequency', # noqa: E501 + 'pay_day': 'pay_day', # noqa: E501 + 'start_date': 'start_date', # noqa: E501 } _composed_schemas = {} @@ -108,16 +129,9 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, start_date, end_date, pay_day, gross_earnings, check_amount, *args, **kwargs): # noqa: E501 + def __init__(self, *args, **kwargs): # noqa: E501 """PayPeriodDetails - a model defined in OpenAPI - Args: - start_date (date, none_type): The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\". - end_date (date, none_type): The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\". - pay_day (date, none_type): The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\"). - gross_earnings (float, none_type): Total earnings before tax. - check_amount (float, none_type): The net amount of the paycheck. - Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -149,6 +163,14 @@ def __init__(self, start_date, end_date, pay_day, gross_earnings, check_amount, Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + check_amount (float, none_type): The amount of the paycheck.. [optional] # noqa: E501 + distribution_breakdown ([DistributionBreakdown]): [optional] # noqa: E501 + end_date (date, none_type): The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".. [optional] # noqa: E501 + gross_earnings (float, none_type): Total earnings before tax/deductions.. [optional] # noqa: E501 + pay_date (date, none_type): The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").. [optional] # noqa: E501 + pay_frequency (str, none_type): The frequency at which an individual is paid.. [optional] # noqa: E501 + pay_day (date, none_type): The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").. [optional] # noqa: E501 + start_date (date, none_type): The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -174,11 +196,6 @@ def __init__(self, start_date, end_date, pay_day, gross_earnings, check_amount, self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.start_date = start_date - self.end_date = end_date - self.pay_day = pay_day - self.gross_earnings = gross_earnings - self.check_amount = check_amount for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/paystub.py b/plaid/model/paystub.py index 7df4085cb..619beddaa 100644 --- a/plaid/model/paystub.py +++ b/plaid/model/paystub.py @@ -100,16 +100,16 @@ def openapi_types(): """ lazy_import() return { - 'employer': (PaystubEmployer,), # noqa: E501 + 'deductions': (Deductions,), # noqa: E501 + 'doc_id': (str,), # noqa: E501 + 'earnings': (Earnings,), # noqa: E501 'employee': (Employee,), # noqa: E501 + 'employer': (PaystubEmployer,), # noqa: E501 + 'net_pay': (NetPay,), # noqa: E501 'pay_period_details': (PayPeriodDetails,), # noqa: E501 'income_breakdown': ([IncomeBreakdown],), # noqa: E501 'ytd_earnings': (PaystubYTDDetails,), # noqa: E501 - 'deductions': (Deductions,), # noqa: E501 - 'doc_id': (str,), # noqa: E501 - 'earnings': (Earnings,), # noqa: E501 'employment_details': (EmploymentDetails,), # noqa: E501 - 'net_pay': (NetPay,), # noqa: E501 'paystub_details': (PaystubDetails,), # noqa: E501 } @@ -119,16 +119,16 @@ def discriminator(): attribute_map = { - 'employer': 'employer', # noqa: E501 + 'deductions': 'deductions', # noqa: E501 + 'doc_id': 'doc_id', # noqa: E501 + 'earnings': 'earnings', # noqa: E501 'employee': 'employee', # noqa: E501 + 'employer': 'employer', # noqa: E501 + 'net_pay': 'net_pay', # noqa: E501 'pay_period_details': 'pay_period_details', # noqa: E501 'income_breakdown': 'income_breakdown', # noqa: E501 'ytd_earnings': 'ytd_earnings', # noqa: E501 - 'deductions': 'deductions', # noqa: E501 - 'doc_id': 'doc_id', # noqa: E501 - 'earnings': 'earnings', # noqa: E501 'employment_details': 'employment_details', # noqa: E501 - 'net_pay': 'net_pay', # noqa: E501 'paystub_details': 'paystub_details', # noqa: E501 } @@ -144,12 +144,16 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, employer, employee, pay_period_details, income_breakdown, ytd_earnings, *args, **kwargs): # noqa: E501 + def __init__(self, deductions, doc_id, earnings, employee, employer, net_pay, pay_period_details, income_breakdown, ytd_earnings, *args, **kwargs): # noqa: E501 """Paystub - a model defined in OpenAPI Args: - employer (PaystubEmployer): + deductions (Deductions): + doc_id (str): An identifier of the document referenced by the document metadata. + earnings (Earnings): employee (Employee): + employer (PaystubEmployer): + net_pay (NetPay): pay_period_details (PayPeriodDetails): income_breakdown ([IncomeBreakdown]): ytd_earnings (PaystubYTDDetails): @@ -185,11 +189,7 @@ def __init__(self, employer, employee, pay_period_details, income_breakdown, ytd Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - deductions (Deductions): [optional] # noqa: E501 - doc_id (str): An identifier of the document referenced by the document metadata.. [optional] # noqa: E501 - earnings (Earnings): [optional] # noqa: E501 employment_details (EmploymentDetails): [optional] # noqa: E501 - net_pay (NetPay): [optional] # noqa: E501 paystub_details (PaystubDetails): [optional] # noqa: E501 """ @@ -216,8 +216,12 @@ def __init__(self, employer, employee, pay_period_details, income_breakdown, ytd self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.employer = employer + self.deductions = deductions + self.doc_id = doc_id + self.earnings = earnings self.employee = employee + self.employer = employer + self.net_pay = net_pay self.pay_period_details = pay_period_details self.income_breakdown = income_breakdown self.ytd_earnings = ytd_earnings diff --git a/plaid/model/paystub_address.py b/plaid/model/paystub_address.py index bb0dee9fc..ed5088279 100644 --- a/plaid/model/paystub_address.py +++ b/plaid/model/paystub_address.py @@ -77,13 +77,13 @@ def openapi_types(): """ return { 'city': (str, none_type,), # noqa: E501 + 'country': (str, none_type,), # noqa: E501 + 'postal_code': (str, none_type,), # noqa: E501 + 'region': (str, none_type,), # noqa: E501 'street': (str, none_type,), # noqa: E501 'line1': (str, none_type,), # noqa: E501 'line2': (str, none_type,), # noqa: E501 - 'postal_code': (str, none_type,), # noqa: E501 - 'region': (str, none_type,), # noqa: E501 'state_code': (str, none_type,), # noqa: E501 - 'country': (str, none_type,), # noqa: E501 } @cached_property @@ -93,13 +93,13 @@ def discriminator(): attribute_map = { 'city': 'city', # noqa: E501 + 'country': 'country', # noqa: E501 + 'postal_code': 'postal_code', # noqa: E501 + 'region': 'region', # noqa: E501 'street': 'street', # noqa: E501 'line1': 'line1', # noqa: E501 'line2': 'line2', # noqa: E501 - 'postal_code': 'postal_code', # noqa: E501 - 'region': 'region', # noqa: E501 'state_code': 'state_code', # noqa: E501 - 'country': 'country', # noqa: E501 } _composed_schemas = {} @@ -149,13 +149,13 @@ def __init__(self, *args, **kwargs): # noqa: E501 through its discriminator because we passed in _visited_composed_classes = (Animal,) city (str, none_type): The full city name.. [optional] # noqa: E501 - street (str, none_type): The listed street address.. [optional] # noqa: E501 + country (str, none_type): The ISO 3166-1 alpha-2 country code.. [optional] # noqa: E501 + postal_code (str, none_type): The postal code of the address.. [optional] # noqa: E501 + region (str, none_type): The region or state Example: `\"NC\"`. [optional] # noqa: E501 + street (str, none_type): The full street address.. [optional] # noqa: E501 line1 (str, none_type): Street address line 1.. [optional] # noqa: E501 line2 (str, none_type): Street address line 2.. [optional] # noqa: E501 - postal_code (str, none_type): 5 digit postal code.. [optional] # noqa: E501 - region (str, none_type): The region or state Example: `\"NC\"`. [optional] # noqa: E501 state_code (str, none_type): The region or state Example: `\"NC\"`. [optional] # noqa: E501 - country (str, none_type): The country of the address.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/plaid/model/platform_ids.py b/plaid/model/platform_ids.py new file mode 100644 index 000000000..7a7ce0175 --- /dev/null +++ b/plaid/model/platform_ids.py @@ -0,0 +1,176 @@ +""" + The Plaid API + + The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from plaid.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, +) + + +class PlatformIds(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'employee_id': (str, none_type,), # noqa: E501 + 'payroll_id': (str, none_type,), # noqa: E501 + 'position_id': (str, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'employee_id': 'employee_id', # noqa: E501 + 'payroll_id': 'payroll_id', # noqa: E501 + 'position_id': 'position_id', # noqa: E501 + } + + _composed_schemas = {} + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """PlatformIds - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + employee_id (str, none_type): The ID of an employee as given by their employer. [optional] # noqa: E501 + payroll_id (str, none_type): The ID of an employee as given by their payroll. [optional] # noqa: E501 + position_id (str, none_type): The ID of the position of the employee. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) diff --git a/plaid/model/signal_decision_report_response.py b/plaid/model/signal_decision_report_response.py index 1666f3896..dad26ef5b 100644 --- a/plaid/model/signal_decision_report_response.py +++ b/plaid/model/signal_decision_report_response.py @@ -55,7 +55,13 @@ class SignalDecisionReportResponse(ModelNormal): validations = { } - additional_properties_type = None + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False diff --git a/plaid/model/signal_evaluate_request.py b/plaid/model/signal_evaluate_request.py index eed9d27f5..349a17fd4 100644 --- a/plaid/model/signal_evaluate_request.py +++ b/plaid/model/signal_evaluate_request.py @@ -67,14 +67,7 @@ class SignalEvaluateRequest(ModelNormal): }, } - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - lazy_import() - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + additional_properties_type = None _nullable = False diff --git a/plaid/model/signal_evaluate_response.py b/plaid/model/signal_evaluate_response.py index 35e1e8449..2ba49cad8 100644 --- a/plaid/model/signal_evaluate_response.py +++ b/plaid/model/signal_evaluate_response.py @@ -112,13 +112,12 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, request_id, scores, core_attributes, *args, **kwargs): # noqa: E501 + def __init__(self, request_id, scores, *args, **kwargs): # noqa: E501 """SignalEvaluateResponse - a model defined in OpenAPI Args: request_id (str): A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. scores (SignalScores): - core_attributes (SignalEvaluateCoreAttributes): Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -151,6 +150,7 @@ def __init__(self, request_id, scores, core_attributes, *args, **kwargs): # noq Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + core_attributes (SignalEvaluateCoreAttributes): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -178,7 +178,6 @@ def __init__(self, request_id, scores, core_attributes, *args, **kwargs): # noq self.request_id = request_id self.scores = scores - self.core_attributes = core_attributes for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/signal_return_report_request.py b/plaid/model/signal_return_report_request.py index 853dfbb24..5330fd68e 100644 --- a/plaid/model/signal_return_report_request.py +++ b/plaid/model/signal_return_report_request.py @@ -55,7 +55,13 @@ class SignalReturnReportRequest(ModelNormal): validations = { } - additional_properties_type = None + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False diff --git a/plaid/model/taxpayer_id.py b/plaid/model/taxpayer_id.py index c788f29de..ef5b57c7e 100644 --- a/plaid/model/taxpayer_id.py +++ b/plaid/model/taxpayer_id.py @@ -81,6 +81,7 @@ def openapi_types(): """ return { 'id_type': (str, none_type,), # noqa: E501 + 'id_mask': (str, none_type,), # noqa: E501 'last_4_digits': (str, none_type,), # noqa: E501 } @@ -91,6 +92,7 @@ def discriminator(): attribute_map = { 'id_type': 'id_type', # noqa: E501 + 'id_mask': 'id_mask', # noqa: E501 'last_4_digits': 'last_4_digits', # noqa: E501 } @@ -141,6 +143,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 through its discriminator because we passed in _visited_composed_classes = (Animal,) id_type (str, none_type): Type of ID, e.g. 'SSN'. [optional] # noqa: E501 + id_mask (str, none_type): ID mask; i.e. last 4 digits of the taxpayer ID. [optional] # noqa: E501 last_4_digits (str, none_type): Last 4 digits of unique number of ID.. [optional] # noqa: E501 """ diff --git a/plaid/model/transactions_recurring_get_request.py b/plaid/model/transactions_recurring_get_request.py index 559817906..293d0e47b 100644 --- a/plaid/model/transactions_recurring_get_request.py +++ b/plaid/model/transactions_recurring_get_request.py @@ -70,10 +70,10 @@ def openapi_types(): and the value is attribute type. """ return { - 'client_id': (str,), # noqa: E501 'access_token': (str,), # noqa: E501 - 'secret': (str,), # noqa: E501 'account_ids': ([str],), # noqa: E501 + 'client_id': (str,), # noqa: E501 + 'secret': (str,), # noqa: E501 } @cached_property @@ -82,10 +82,10 @@ def discriminator(): attribute_map = { - 'client_id': 'client_id', # noqa: E501 'access_token': 'access_token', # noqa: E501 - 'secret': 'secret', # noqa: E501 'account_ids': 'account_ids', # noqa: E501 + 'client_id': 'client_id', # noqa: E501 + 'secret': 'secret', # noqa: E501 } _composed_schemas = {} @@ -100,9 +100,13 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, access_token, account_ids, *args, **kwargs): # noqa: E501 """TransactionsRecurringGetRequest - a model defined in OpenAPI + Args: + access_token (str): The access token associated with the Item data is being requested for. + account_ids ([str]): A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item. + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -135,9 +139,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 through its discriminator because we passed in _visited_composed_classes = (Animal,) client_id (str): 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.. [optional] # noqa: E501 - access_token (str): The access token associated with the Item data is being requested for.. [optional] # noqa: E501 secret (str): 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.. [optional] # noqa: E501 - account_ids ([str]): A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -163,6 +165,8 @@ def __init__(self, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.access_token = access_token + self.account_ids = account_ids for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/plaid/model/transactions_recurring_get_response.py b/plaid/model/transactions_recurring_get_response.py index 6536ced78..688261580 100644 --- a/plaid/model/transactions_recurring_get_response.py +++ b/plaid/model/transactions_recurring_get_response.py @@ -82,9 +82,9 @@ def openapi_types(): """ lazy_import() return { + 'inflow_streams': ([TransactionStream],), # noqa: E501 'outflow_streams': ([TransactionStream],), # noqa: E501 'request_id': (str,), # noqa: E501 - 'inflow_streams': ([TransactionStream],), # noqa: E501 } @cached_property @@ -93,9 +93,9 @@ def discriminator(): attribute_map = { + 'inflow_streams': 'inflow_streams', # noqa: E501 'outflow_streams': 'outflow_streams', # noqa: E501 'request_id': 'request_id', # noqa: E501 - 'inflow_streams': 'inflow_streams', # noqa: E501 } _composed_schemas = {} @@ -110,10 +110,11 @@ def discriminator(): ]) @convert_js_args_to_python_args - def __init__(self, outflow_streams, request_id, *args, **kwargs): # noqa: E501 + def __init__(self, inflow_streams, outflow_streams, request_id, *args, **kwargs): # noqa: E501 """TransactionsRecurringGetResponse - a model defined in OpenAPI Args: + inflow_streams ([TransactionStream]): An array of depository transaction streams. outflow_streams ([TransactionStream]): An array of expense transaction streams. request_id (str): A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. @@ -148,7 +149,6 @@ def __init__(self, outflow_streams, request_id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - inflow_streams ([TransactionStream]): An array of depository transaction streams.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -174,6 +174,7 @@ def __init__(self, outflow_streams, request_id, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.inflow_streams = inflow_streams self.outflow_streams = outflow_streams self.request_id = request_id for var_name, var_value in kwargs.items(): diff --git a/plaid/models/__init__.py b/plaid/models/__init__.py index 2b2bc20ef..a852cc437 100644 --- a/plaid/models/__init__.py +++ b/plaid/models/__init__.py @@ -117,6 +117,8 @@ from plaid.model.customer_initiated_return_risk import CustomerInitiatedReturnRisk from plaid.model.customer_initiated_risk_tier import CustomerInitiatedRiskTier from plaid.model.deductions import Deductions +from plaid.model.deductions_breakdown import DeductionsBreakdown +from plaid.model.deductions_total import DeductionsTotal from plaid.model.default_update_webhook import DefaultUpdateWebhook from plaid.model.deposit_switch_address_data import DepositSwitchAddressData from plaid.model.deposit_switch_alt_create_request import DepositSwitchAltCreateRequest @@ -132,18 +134,23 @@ from plaid.model.deposit_switch_token_create_request import DepositSwitchTokenCreateRequest from plaid.model.deposit_switch_token_create_response import DepositSwitchTokenCreateResponse from plaid.model.depository_filter import DepositoryFilter -from plaid.model.distribution_details import DistributionDetails +from plaid.model.distribution_breakdown import DistributionBreakdown from plaid.model.document_metadata import DocumentMetadata from plaid.model.earnings import Earnings +from plaid.model.earnings_breakdown import EarningsBreakdown from plaid.model.earnings_total import EarningsTotal from plaid.model.email import Email from plaid.model.employee import Employee from plaid.model.employee_income_summary_field_string import EmployeeIncomeSummaryFieldString from plaid.model.employer import Employer from plaid.model.employer_income_summary_field_string import EmployerIncomeSummaryFieldString +from plaid.model.employer_verification import EmployerVerification from plaid.model.employers_search_request import EmployersSearchRequest from plaid.model.employers_search_response import EmployersSearchResponse from plaid.model.employment_details import EmploymentDetails +from plaid.model.employment_verification import EmploymentVerification +from plaid.model.employment_verification_get_request import EmploymentVerificationGetRequest +from plaid.model.employment_verification_get_response import EmploymentVerificationGetResponse from plaid.model.error import Error from plaid.model.external_payment_options import ExternalPaymentOptions from plaid.model.external_payment_refund_details import ExternalPaymentRefundDetails @@ -166,14 +173,15 @@ from plaid.model.income_summary_field_number import IncomeSummaryFieldNumber from plaid.model.income_summary_field_string import IncomeSummaryFieldString from plaid.model.income_verification_create_request import IncomeVerificationCreateRequest +from plaid.model.income_verification_create_request_options import IncomeVerificationCreateRequestOptions from plaid.model.income_verification_create_response import IncomeVerificationCreateResponse from plaid.model.income_verification_documents_download_request import IncomeVerificationDocumentsDownloadRequest -from plaid.model.income_verification_documents_download_response import IncomeVerificationDocumentsDownloadResponse from plaid.model.income_verification_paystub_get_request import IncomeVerificationPaystubGetRequest from plaid.model.income_verification_paystub_get_response import IncomeVerificationPaystubGetResponse from plaid.model.income_verification_paystubs_get_request import IncomeVerificationPaystubsGetRequest from plaid.model.income_verification_paystubs_get_response import IncomeVerificationPaystubsGetResponse from plaid.model.income_verification_precheck_employer import IncomeVerificationPrecheckEmployer +from plaid.model.income_verification_precheck_employer_address import IncomeVerificationPrecheckEmployerAddress from plaid.model.income_verification_precheck_military_info import IncomeVerificationPrecheckMilitaryInfo from plaid.model.income_verification_precheck_request import IncomeVerificationPrecheckRequest from plaid.model.income_verification_precheck_response import IncomeVerificationPrecheckResponse @@ -329,6 +337,7 @@ from plaid.model.pending_expiration_webhook import PendingExpirationWebhook from plaid.model.personal_finance_category import PersonalFinanceCategory from plaid.model.phone_number import PhoneNumber +from plaid.model.platform_ids import PlatformIds from plaid.model.processor_apex_processor_token_create_request import ProcessorApexProcessorTokenCreateRequest from plaid.model.processor_auth_get_request import ProcessorAuthGetRequest from plaid.model.processor_auth_get_response import ProcessorAuthGetResponse diff --git a/setup.py b/setup.py index 46ef37148..ffef4bb99 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -VERSION = '8.3.0' +VERSION = '8.4.0' url = 'https://github.com/plaid/plaid-python' REQUIRES = [