示例#1
0
    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)
示例#9
0
    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)
示例#14
0
    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)