def send_v_2_connect_email_joint_borrower(self, accept, body): """Does a POST request to /connect/v2/send/email/jointBorrower. Send a Connect email to at least one of the joint borrower’s email addresses. Use the `experience` parameter to call the MVS application module in the body of the request. When the consumer opens the email, MVS prompts for both of the borrowers to enter all their financial, payroll, and paystub information. The primary and joint borrower’s experience is all done in one session. You can prepopulate the consumer’s SSN (only the last 4 digits appear) and DOB to display on the Find employment records page at the beginning of the MVS payroll module. Pass the SSN and DOB values for the consumer in the body of the request call. Args: accept (string): application/json body (V2ConnectEmailRequestJointBorrower): Expected body to be sent with the request Returns: GenerateV2ConnectEmailResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, body=body) # Prepare query URL _url_path = '/connect/v2/send/email/jointBorrower' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'content-type': 'application/json; charset=utf-8', 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, GenerateV2ConnectEmailResponse.from_dictionary)
def delete_institutions_certification_subscription(self): """Does a DELETE request to /institution/v2/institutions/subscription. Delete subscription to a webhook services for certification status changes Returns: void: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _url_path = '/institution/v2/institutions/subscription' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def get_reports_by_consumer(self, consumer_id, accept, content_type): """Does a GET request to /decisioning/v1/consumers/{consumerId}/reports. Get a list of reports that have been generated for the given consumer. The status fields in the returned list will contain inProgress, failure, or success. If a status shows inProgress, wait 20 seconds and then call again. Args: consumer_id (string): Finicity’s ID of the consumer (UUID with max length 32 characters) accept (string): Replace 'json' with 'xml' if preferred content_type (string): Replace 'json' with 'xml' if preferred Returns: ReportSummaries: Response from the API. OK Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(consumer_id=consumer_id, accept=accept, content_type=content_type) # Prepare query URL _url_path = '/decisioning/v1/consumers/{consumerId}/reports' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'consumerId': consumer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept, 'Content-Type': content_type } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) # Endpoint and global error handling using HTTP status codes. if _context.response.status_code == 400: raise Error1ErrorException('Bad Request', _context) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, ReportSummaries.from_dictionary)
def migrate_institution_login_accounts_v_2(self, customer_id, institution_login_id): """Does a PUT request to /aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/migration. The institutionLoginId parameter uses Finicity’s internal FI mapping to move accounts from the current FI legacy connection to the new OAuth FI connection. The API returns a list of accounts for the institution login id specified with an HTTP status code 200. Args: customer_id (long|int): The target customer for the account migration institution_login_id (long|int): The institutionLoginId for the set of accounts to be migrated from the legacy FI ID to the new OAuth FI ID Returns: CustomerAccounts: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, institution_login_id=institution_login_id) # Prepare query URL _url_path = '/aggregation/v2/customers/{customerId}/institutionLogins/{institutionLoginId}/migration' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'institutionLoginId': institution_login_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/json', 'Finicity-App-Key': Configuration.finicity_app_key } # Prepare and execute request _request = self.http_client.put(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, CustomerAccounts.from_dictionary)
def add_customer(self, accept, content_type, body): """Does a POST request to /aggregation/v2/customers/active. This is a version 2 service that replaces version 1. The new version supports passing an applicationId for assigning applicationId's to customers if a partner has more than one registered app. Enroll an active customer, which is the actual owner of one or more real-world accounts. This is a billable customer. This service is not available from the Test Drive. Calls to this service before enrolling in a paid plan will return HTTP 429 (Too Many Requests). Args: accept (string): application/json, application/xml content_type (string): application/json, application/xml body (AddCustomerRequest): The Fields For The New Customer Returns: AddCustomerResponse: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, content_type=content_type, body=body) # Prepare query URL _url_path = '/aggregation/v2/customers/active' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept, 'Content-Type': content_type } # Prepare and execute request _request = self.http_client.post( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, AddCustomerResponse.from_dictionary)
def get_consumer(self, consumer_id, accept, content_type): """Does a GET request to /decisioning/v1/consumers/{consumerId}. Get the details of a consumer record. If the service successfully retrieves the consumer record, HTTP 200 will be returned. If the consumer does not exist, the service will return HTTP 404. Args: consumer_id (string): Finicity’s ID of the consumer (UUID with max length 32 characters) accept (string): Replace 'json' with 'xml' if preferred content_type (string): Replace 'json' with 'xml' if preferred Returns: Consumer: Response from the API. Success Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(consumer_id=consumer_id, accept=accept, content_type=content_type) # Prepare query URL _url_path = '/decisioning/v1/consumers/{consumerId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'consumerId': consumer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept, 'Content-Type': content_type } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) # Endpoint and global error handling using HTTP status codes. if _context.response.status_code == 404: raise Error1ErrorException('Bad Request', _context) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, Consumer.from_dictionary)
def get_customer_accounts_by_institution_login(self, accept, customer_id, institution_login_id): """Does a GET request to /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts. Get details for all accounts associated with the given institution login. All accounts returned are accessible by a single set of credentials on a single institution. Args: accept (string): application/json, application/xml customer_id (long|int): Finicity ID for the customer whose accounts are to be retrieved institution_login_id (long|int): The institution login ID (from the account record) Returns: CustomerAccounts: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, customer_id=customer_id, institution_login_id=institution_login_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}/accounts' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'institutionLoginId': institution_login_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, CustomerAccounts.from_dictionary)
def get_customer_accounts(self, accept, customer_id, status=None): """Does a GET request to /aggregation/v1/customers/{customerId}/accounts. Get details for all accounts owned by the specified customer. Args: accept (string): application/json, application/xml customer_id (long|int): The ID of the customer whose accounts are to be retrieved status (string, optional): append, ?status=pending, to return accounts in active and pending status. Pending accounts were discovered but not activated and will not have transactions or have balance updates Returns: CustomerAccounts: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, customer_id=customer_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'customerId': customer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_parameters = {'status': status} _query_builder = APIHelper.append_url_with_query_parameters( _query_builder, _query_parameters, Configuration.array_serialization) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, CustomerAccounts.from_dictionary)
def generate_v_2_lite_connect_url(self, accept, body): """Does a POST request to /connect/v2/generate/lite. Connect Lite allows as much control of the customer experience as possible. Lite includes just the essential pages needed for handling credentials and multi-factor authentication that must be handled by Finicity. You would be providing the financial institution search and the account management pages. Connect Lite features: * Sign in, user’s credentials and Multi-Factor Authentication (MFA) * No user account management Args: accept (string): application/json, application/xml body (GenerateConnectURLRequestLiteV2): Expected body to be sent with the request Returns: GenerateConnectURLResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, body=body) # Prepare query URL _url_path = '/connect/v2/generate/lite' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'content-type': 'application/json; charset=utf-8', 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, GenerateConnectURLResponse.from_dictionary)
def modify_app_registration(self, pre_app_id, body): """Does a PUT request to /aggregation/v1/partners/applications/{preAppId}. Update the field values you want to change for the registered applications accessing financial institutions using OAuth connections. Args: pre_app_id (long|int): The preAppId from the App Registration and Get App Registration Status endpoints body (ModifyAppRegistrationRequest): The values for the app registration modification Returns: AppRegistrationResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(pre_app_id=pre_app_id, body=body) # Prepare query URL _url_path = '/aggregation/v1/partners/applications/{preAppId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'preAppId': pre_app_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'Finicity-App-Key': Configuration.finicity_app_key } # Prepare and execute request _request = self.http_client.put( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, AppRegistrationResponse.from_dictionary)
def get_customer_account(self, accept, customer_id, account_id): """Does a GET request to /aggregation/v1/customers/{customerId}/accounts/{accountId}. Get details for the specified account. Args: accept (string): application/json, application/xml customer_id (long|int): The ID of the customer who owns the account account_id (long|int): Finicity’s ID of the account to be retrieved Returns: CustomerAccount: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, customer_id=customer_id, account_id=account_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts/{accountId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'accountId': account_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, CustomerAccount.from_dictionary)
def get_institution_branding(self, accept, id): """Does a GET request to /institution/v2/institutions/{id}/branding. This endpoint returns the branding information for an Institution given the `id` Args: accept (string): Replace 'json' with 'xml' if preferred id (int): ID of the institution Returns: InstitutionBrandingResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, id=id) # Prepare query URL _url_path = '/institution/v2/institutions/{id}/branding' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'id': id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) # Endpoint and global error handling using HTTP status codes. if _context.response.status_code == 404: raise APIException('The requested entity was not found', _context) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, InstitutionBrandingResponse.from_dictionary)
def get_customer(self, content_length, accept, customer_id): """Does a GET request to /aggregation/v1/customers/{customerId}. Get the details for the specified customer. The service will return HTTP 200 upon a successful call. If the customer does not exist, the service will return HTTP 404. Args: content_length (string): Must be 0 (this request has no body) accept (string): application/json, application/xml customer_id (long|int): Finicity’s ID of the customer Returns: Customer: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(content_length=content_length, accept=accept, customer_id=customer_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'customerId': customer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Content-Length': content_length, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, Customer.from_dictionary)
def generate_v_2_fix_connect_url(self, accept, body): """Does a POST request to /connect/v2/generate/fix. Fix provides a flow for customers to re-authenticate to their accounts, when the connection to the user’s financial institution is lost. The connection to their accounts can stop working if the account password has changed, the MFA challenge has expired, or the token provided by the financial institution has been revoked. Args: accept (string): application/json, application/xml body (GenerateConnectURLRequestFixV2): Expected body to be sent with the request Returns: GenerateConnectURLResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, body=body) # Prepare query URL _url_path = '/connect/v2/generate/fix' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'content-type': 'application/json; charset=utf-8', 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, GenerateConnectURLResponse.from_dictionary)
def modify_customer(self, content_type, customer_id, body): """Does a PUT request to /aggregation/v1/customers/{customerId}. Modify the details for an enrolled customer. You must specify either the first name, the last name, or both in the request. If the service is successful, HTTP 204 (No Content) will be returned. Args: content_type (string): application/json, application/xml customer_id (long|int): Finicity ‘s ID of the customer to modify body (ModifyCustomerRequest): The information to be modified for the customer Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(content_type=content_type, customer_id=customer_id, body=body) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'customerId': customer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Content-Type': content_type } # Prepare and execute request _request = self.http_client.put( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def app_registration(self, body): """Does a POST request to /aggregation/v1/partners/applications. Register new applications to access financial institutions using OAuth connections. Args: body (AppRegistrationRequest): The values for the new app registration Returns: AppRegistrationResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(body=body) # Prepare query URL _url_path = '/aggregation/v1/partners/applications' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'Finicity-App-Key': Configuration.finicity_app_key } # Prepare and execute request _request = self.http_client.post( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, AppRegistrationResponse.from_dictionary)
def set_customer_application_id(self, customer_id, application_id): """Does a PUT request to /aggregation/v1/customers/{customerId}/applications/{applicationId}. If you have multiple applications for a single client, and you want to register their applications to access financial institutions using OAuth connections, then use this API to assign all applications to an existing customer. Args: customer_id (long|int): The customer's ID for the customer you want to assign the app for. application_id (long|int): Application ID you want to assign the customer to. This is the "applicationId" value returned from the Get App Registration Status endpoint Returns: void: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, application_id=application_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/applications/{applicationId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'applicationId': application_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.put(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def delete_customer_accounts_by_institution_login(self, customer_id, institution_login_id): """Does a DELETE request to /aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}. Remove the specified set of accounts by institution login id from the Finicity system. (Note that the request and response are the same for JSON and XML clients.) Args: customer_id (long|int): The ID of the customer whose accounts are to be deleted institution_login_id (long|int): The Finicity ID of the Institution Login for the set of accounts to be deleted Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, institution_login_id=institution_login_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/institutionLogins/{institutionLoginId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'institutionLoginId': institution_login_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def delete_txpush_subscription(self, customer_id, subscription_id): """Does a DELETE request to /aggregation/v1/customers/{customerId}/subscriptions/{subscriptionId}. Delete a specific subscription to TxPush notifications for the indicated account. This could be individual deleting the account or transactions events. No more events will be sent for that specific subscription. Args: customer_id (long|int): The ID of the customer who owns the account subscription_id (long|int): The ID of the specific subscription to be deleted, returned from Enable TxPUSH Notifications Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, subscription_id=subscription_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/subscriptions/{subscriptionId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'subscriptionId': subscription_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def disable_txpush_notifications(self, customer_id, account_id): """Does a DELETE request to /aggregation/v1/customers/{customerId}/accounts/{accountId}/txpush. Delete all TxPush subscriptions with their notifications for the indicated account. No more notifications will be sent for account or transaction events. Args: customer_id (long|int): The ID of the customer who owns the account account_id (long|int): The Finicity ID of the account whose events will be sent to the TxPUSH Listener Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, account_id=account_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts/{accountId}/txpush' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'accountId': account_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def get_asset_by_customer_id(self, customer_id, asset_id): """Does a GET request to //aggregation/v1/customers/{customerId}/assets/{assetId}. Retrieve a binary file with the given assetId. The returned content type is always application/octet-stream. If the service successfully retrieves the asset, HTTP 200 (OK) will be returned. If the asset doesn’t exist, HTTP 404 (Not Found) will be returned. If you would like to see an error message on the return, include application/json or application/xml in your desired format for the Accept header. Args: customer_id (string): TODO: type description here. Example: asset_id (string): TODO: type description here. Example: Returns: void: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, asset_id=asset_id) # Prepare query URL _url_path = '//aggregation/v1/customers/{customerId}/assets/{assetId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'assetId': asset_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def delete_customer_account(self, customer_id, account_id): """Does a DELETE request to /aggregation/v1/customers/{customerId}/accounts/{accountId}. Remove the specified account from Finicity Aggregation. Args: customer_id (long|int): The ID of the customer who owns the account account_id (long|int): Finicity’s ID of the account to be deleted Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id, account_id=account_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts/{accountId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'accountId': account_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def get_institutions_certification_subscription(self, accept): """Does a GET request to /institution/v2/institutions/subscription. Service to retrieve Institutions Certification Subscription details Args: accept (string): application/json, application/xml Returns: InstitutionsCertificationSubscription: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept) # Prepare query URL _url_path = '/institution/v2/institutions/subscription' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, InstitutionsCertificationSubscription.from_dictionary)
def delete_customer(self, customer_id): """Does a DELETE request to /aggregation/v1/customers/{customerId}. Completely remove a customer from the system. This will remove the customer and all associated accounts and transactions. (Note that the request and response is the same for JSON or XML clients.) Use this service carefully! It will not pause for confirmation before performing the operation! Success: HTTP 204 (No Content) Args: customer_id (long|int): Finicity’s ID of the customer to delete Returns: void: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(customer_id=customer_id) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}' _url_path = APIHelper.append_url_with_template_parameters( _url_path, {'customerId': customer_id}) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = {'Finicity-App-Key': Configuration.finicity_app_key} # Prepare and execute request _request = self.http_client.delete(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context)
def subscribe_to_txpush_notifications(self, content_type, accept, customer_id, account_id, body): """Does a POST request to /aggregation/v1/customers/{customerId}/accounts/{accountId}/txpush. Register a client app’s TxPUSH Listener to receive TxPUSH notifications related to the given account. Each call to this service will return two records, one with class account and one with class transaction. Account events are sent when values change in the account’s fields (such as balance or interestRate). Transaction events are sent whenever a new transaction is posted for the account. For institutions that do not provide TxPUSH services, notifications are sent as soon as Finicity finds a new transaction or new account data through regular aggregation processes. The listener’s URL must be secure (https) for any real-world account. In addition, the client’sTxPUSH Listener will need to be verified. HTTP and HTTPS connections are only allowed on the standard ports 80 (HTTP) and 443 (HTTPS). The use of other ports will result with the call failing. For additional details on this process please see, TxPUSH Listener Service. Args: content_type (string): application/json, application/xml accept (string): application/json, application/xml customer_id (long|int): The Finicity ID of the customer who owns the account account_id (long|int): The Finicity ID of the account whose events will be sent to the TxPUSH Listener body (TxpushSubscriptionRequest): TODO: type description here. Example: Returns: TxpushSubscriptions: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(content_type=content_type, accept=accept, customer_id=customer_id, account_id=account_id, body=body) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts/{accountId}/txpush' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'accountId': account_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Content-Type': content_type, 'Accept': accept } # Prepare and execute request _request = self.http_client.post( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize(_context.response.raw_body, TxpushSubscriptions.from_dictionary)
def create_txpush_test_transaction(self, content_type, accept, customer_id, account_id, body): """Does a POST request to /aggregation/v1/customers/{customerId}/accounts/{accountId}/transactions. Inject a transaction into the transaction list for a testing account. This allows an app to trigger TxPush notifications for the account in order to test the app’s TxPush Listener service. This causes the platform to send one transaction event and one account event (showing that the account balance has changed). This service is only supported for testing accounts (accounts on institution 101732). Args: content_type (string): application/json, application/xml accept (string): application/json, application/xml customer_id (long|int): The ID of the customer who owns the account account_id (long|int): The Finicity ID of the account whose events will be sent to the TxPUSH Listener body (CreateTxpushTestTransactionRequest): TODO: type description here. Example: Returns: CreateTxpushTestTransactionResponse: Response from the API. default response Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(content_type=content_type, accept=accept, customer_id=customer_id, account_id=account_id, body=body) # Prepare query URL _url_path = '/aggregation/v1/customers/{customerId}/accounts/{accountId}/transactions' _url_path = APIHelper.append_url_with_template_parameters( _url_path, { 'customerId': customer_id, 'accountId': account_id }) _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Content-Type': content_type, 'Accept': accept } # Prepare and execute request _request = self.http_client.post( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, CreateTxpushTestTransactionResponse.from_dictionary)
def get_institutions(self, accept, search=None, start=1, limit=25): """Does a GET request to /institution/v2/institutions. Use this call to search all Financial Institutions (FI) the Finicity has connections with and supports. Return all financial institutions that contain the search text in the institution’s name, urlHomeApp, or urlLogonApp fields. To get a list of all FI’s, leave the search parameter out of the call. If the search query is left blank, the API will return an error. If the value of moreAvailable in the response is true, you can retrieve the next page of results by increasing the value of the start parameter in your next request: 1st Request …….start=1&limit=25 (First 25 from list 1-25) 2nd Request …….start=2&limit=25 (Next 25 from list 26-50) Args: accept (string): application/json, application/xml search (string, optional): Text to match, or omit the search parameter. Must be URL-encoded (see Handling Spaces in Queries) start (int, optional): Starting index for this page of results. This defaults to 1. limit (int, optional): Maximum number of entries for this page of results. This defaults to 25. Limits the number of results returned to 1000. Returns: GetInstitutionsResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept) # Prepare query URL _url_path = '/institution/v2/institutions' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_parameters = {'search': search, 'start': start, 'limit': limit} _query_builder = APIHelper.append_url_with_query_parameters( _query_builder, _query_parameters, Configuration.array_serialization) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, GetInstitutionsResponse.from_dictionary)
def enable_institutions_certification_subscription(self, accept, content_type, body): """Does a PUT request to /institution/v2/institutions/subscription. Subscription to a webhook service to return changes in certification status for financial institutions as they happen. Webhook example....... { "name": "FinBank", "id": 101722, "changes": { "voi": true, "voa": false } } Args: accept (string): application/json, application/xml content_type (string): application/json, application/xml body (InstitutionsCertificationSubscriptionRequest): TODO: type description here. Example: Returns: InstitutionsCertificationSubscriptionResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, content_type=content_type, body=body) # Prepare query URL _url_path = '/institution/v2/institutions/subscription' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept, 'Content-Type': content_type } # Prepare and execute request _request = self.http_client.put( _query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, InstitutionsCertificationSubscriptionResponse.from_dictionary)
def get_certified_institutions_with_rssd(self, accept, search, start, limit, mtype): """Does a GET request to /institution/v2/certifiedInstitutions/rssd. Get Certified Institution List w/RSSD Args: accept (string): application/json, application/xml search (string): Search term, * returns all institutions start (int): Page (Default: 1) limit (int): Limits the number of results returned (max: 1000) mtype (string): product types trans_agg, voa, voi, state_agg, ach, aha Returns: GetCertifiedInstitutionsResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, search=search, start=start, limit=limit, mtype=mtype) # Prepare query URL _url_path = '/institution/v2/certifiedInstitutions/rssd' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_parameters = { 'search': search, 'start': start, 'limit': limit, 'type': mtype } _query_builder = APIHelper.append_url_with_query_parameters( _query_builder, _query_parameters, Configuration.array_serialization) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, GetCertifiedInstitutionsResponse.from_dictionary)
def get_certified_institutions(self, accept, search, start=1, limit=25, mtype=None): """Does a GET request to /institution/v2/certifiedInstitutions. Search for institutions by certified product Args: accept (string): application/json, application/xml search (string): Text to match, or * to return all supported institutions. start (int, optional): Starting index for this page of results (ignored if returning all institutions). This will default to 1. limit (int, optional): Maximum number of entries for this page of results (ignored if returning all institutions). This will default to 25. Limits the number of results returned to 1000. mtype (string, optional): Allowed types: voa, voi, state_agg, ach, aha Returns: GetCertifiedInstitutionsResponse: Response from the API. Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Validate required parameters self.validate_parameters(accept=accept, search=search) # Prepare query URL _url_path = '/institution/v2/certifiedInstitutions' _query_builder = Configuration.get_base_uri() _query_builder += _url_path _query_parameters = { 'search': search, 'start': start, 'limit': limit, 'type': mtype } _query_builder = APIHelper.append_url_with_query_parameters( _query_builder, _query_parameters, Configuration.array_serialization) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'Finicity-App-Key': Configuration.finicity_app_key, 'Accept': accept } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) CustomHeaderAuth.apply(_request) _context = self.execute_request(_request) self.validate_response(_context) # Return appropriate type return APIHelper.json_deserialize( _context.response.raw_body, GetCertifiedInstitutionsResponse.from_dictionary)