ApiTypeError when calling `accounts_balance_get` on version 8.0.0b12
whitneylarow opened this issue ยท 5 comments
We saw the following error on Plaid request ID ljeWFQxQDMkRoEx
:
Invalid type for variable 'current'. Required value type is float and passed type was NoneType at ['received_data']['accounts'][0]['balances']['current']
Later attempts to make the same request with the same parameters did not throw this error (request IDs: L7MxZhnHm4iqcHT
, a39w9rr6E3oPvch
, AuELH8Lzggd0LqK
).
This was thrown from the serialization code in the SDK because it doesn't seem to handle NoneType
for the indicated field. If the API isn't expected to ever return None
for that field, then this is an API bug that should be passed along to that team. If the API is expected to return None
sometimes for that field, then this a bug with the SDK.
Here's our full stack trace:
Traceback (most recent call last):
File \"/var/task/flask/app.py\", line 2447, in wsgi_app
response = self.full_dispatch_request()
File \"/var/task/flask/app.py\", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File \"/var/task/flask/app.py\", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File \"/var/task/flask/_compat.py\", line 39, in reraise
raise value
File \"/var/task/flask/app.py\", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File \"/var/task/flask/app.py\", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File \"/var/task/webargs/core.py\", line 450, in wrapper
return func(*args, **kwargs)
File \"/var/task/src/endpoints/decorators.py\", line 44, in func_wrapper
return f(*args, **kwargs, user_id=user_id)
File \"/var/task/src/endpoints/decorators.py\", line 85, in wrapper
return func(*args, **kwargs)
File \"/var/task/src/endpoints/payment_instruments.py\", line 154, in get_active_payment_instruments
payment_instruments = handlers.get_active_payment_instruments(
File \"/var/task/src/request_handlers/payment_instruments.py\", line 273, in get_active_payment_instruments
account_balance = plaid_client.get_account_balance(
File \"/var/task/src/clients/plaid.py\", line 94, in wrapper
return func(*args, **kwargs)
File \"/var/task/src/clients/plaid.py\", line 224, in get_account_balance
response = get_plaid_client().accounts_balance_get(
File \"/var/task/plaid/api_client.py\", line 769, in __call__
return self.callable(self, *args, **kwargs)
File \"/var/task/plaid/api/plaid_api.py\", line 235, in __accounts_balance_get
return self.call_with_http_info(**kwargs)
File \"/var/task/plaid/api_client.py\", line 831, in call_with_http_info
return self.api_client.call_api(
File \"/var/task/plaid/api_client.py\", line 406, in call_api
return self.__call_api(resource_path, method,
File \"/var/task/plaid/api_client.py\", line 221, in __call_api
return_data = self.deserialize(
File \"/var/task/plaid/api_client.py\", line 322, in deserialize
deserialized_data = validate_and_convert_types(
File \"/var/task/plaid/model_utils.py\", line 1392, in validate_and_convert_types
converted_instance = attempt_convert_item(
File \"/var/task/plaid/model_utils.py\", line 1288, in attempt_convert_item
raise conversion_exc
File \"/var/task/plaid/model_utils.py\", line 1279, in attempt_convert_item
return deserialize_model(input_value, valid_class,
File \"/var/task/plaid/model_utils.py\", line 1199, in deserialize_model
return model_class(**kw_args)
File \"/var/task/plaid/model_utils.py\", line 1564, in wrapped_init
return fn(self, *args, **kwargs)
File \"/var/task/plaid/model/accounts_get_response.py\", line 179, in __init__
self.accounts = accounts
File \"/var/task/plaid/model_utils.py\", line 165, in __setattr__
self[attr] = value
File \"/var/task/plaid/model_utils.py\", line 350, in __setitem__
self.set_attribute(name, value)
File \"/var/task/plaid/model_utils.py\", line 137, in set_attribute
value = validate_and_convert_types(
File \"/var/task/plaid/model_utils.py\", line 1442, in validate_and_convert_types
input_value[index] = validate_and_convert_types(
File \"/var/task/plaid/model_utils.py\", line 1392, in validate_and_convert_types
converted_instance = attempt_convert_item(
File \"/var/task/plaid/model_utils.py\", line 1288, in attempt_convert_item
raise conversion_exc
File \"/var/task/plaid/model_utils.py\", line 1279, in attempt_convert_item
return deserialize_model(input_value, valid_class,
File \"/var/task/plaid/model_utils.py\", line 1199, in deserialize_model
return model_class(**kw_args)
File \"/var/task/plaid/model_utils.py\", line 1564, in wrapped_init
return fn(self, *args, **kwargs)
File \"/var/task/plaid/model/account_base.py\", line 205, in __init__
self.balances = balances
File \"/var/task/plaid/model_utils.py\", line 165, in __setattr__
self[attr] = value
File \"/var/task/plaid/model_utils.py\", line 350, in __setitem__
self.set_attribute(name, value)
File \"/var/task/plaid/model_utils.py\", line 137, in set_attribute
value = validate_and_convert_types(
File \"/var/task/plaid/model_utils.py\", line 1392, in validate_and_convert_types
converted_instance = attempt_convert_item(
File \"/var/task/plaid/model_utils.py\", line 1288, in attempt_convert_item
raise conversion_exc
File \"/var/task/plaid/model_utils.py\", line 1279, in attempt_convert_item
return deserialize_model(input_value, valid_class,
File \"/var/task/plaid/model_utils.py\", line 1199, in deserialize_model
return model_class(**kw_args)
File \"/var/task/plaid/model_utils.py\", line 1564, in wrapped_init
return fn(self, *args, **kwargs)
File \"/var/task/plaid/model/account_balance.py\", line 180, in __init__
self.current = current
File \"/var/task/plaid/model_utils.py\", line 165, in __setattr__
self[attr] = value
File \"/var/task/plaid/model_utils.py\", line 350, in __setitem__
self.set_attribute(name, value)
File \"/var/task/plaid/model_utils.py\", line 137, in set_attribute
value = validate_and_convert_types(
File \"/var/task/plaid/model_utils.py\", line 1392, in validate_and_convert_types
converted_instance = attempt_convert_item(
File \"/var/task/plaid/model_utils.py\", line 1274, in attempt_convert_item
raise get_type_error(input_value, path_to_item, valid_classes,
plaid.exceptions.ApiTypeError: Invalid type for variable 'current'. Required value type is float and passed type was NoneType at ['received_data']['accounts'][0]['balances']['current']
@whitneylarow thanks for the report. This has been fixed in the openapi file and will be fixed in the library when the next version is generated.
@phoenixy1 any idea on when the next version still be generated? Thanks ๐
@stephenjayakar, do you happen to know when we're going to do the next version of the python beta?
@phoenixy1 I believe this should be fixed with beta 13. https://pypi.org/project/plaid-python/8.0.0b13/
This should be fixed in 8.0.0b(13) released today, please re-open if it is not.