=begin #MoneyKit API #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) The version of the OpenAPI document: 2023-02-18 Generated by: https://openapi-generator.tech OpenAPI Generator version: 7.1.0 =end require 'cgi' module MoneyKit class InvestmentsApi attr_accessor :api_client def initialize(api_client = ApiClient.default) @api_client = api_client end # /links/{id}/investments/holdings # Returns holdings for the investment accounts associated with a link.

**Note** that this endpoint does **not** trigger a fetch of holdings from the institution; it merely returns holdings that have already been fetched. **To force a check for new/updated owner information, you must use the /products endpoint.**

If you have requested prefetch or an on-demand update, you should check the `refreshed_at` date for this product in the returned response, and compare that against the previous `refreshed_at` date, which you can get from any previous response for this or any other account or link request. If the refreshed_at date has not increased, then updated data is not yet available. # @param id [String] The unique ID for this link. # @param [Hash] opts the optional parameters # @option opts [Array] :account_ids An optional list of account IDs to filter the results. # @return [GetHoldingsResponse] def get_holdings(id, opts = {}) data, _status_code, _headers = get_holdings_with_http_info(id, opts) data end # /links/{id}/investments/holdings # Returns holdings for the investment accounts associated with a <a href=#tag/Links>link</a>. <p>**Note** that this endpoint does **not** trigger a fetch of holdings from the institution; it merely returns holdings that have already been fetched. **To force a check for new/updated owner information, you must use the <a href=#operation/refresh_products>/products</a> endpoint.** <p>If you have requested prefetch or an on-demand update, you should check the `refreshed_at` date for this product in the returned response, and compare that against the previous `refreshed_at` date, which you can get from any previous response for this or any other account or link request. If the refreshed_at date has not increased, then updated data is not yet available. # @param id [String] The unique ID for this link. # @param [Hash] opts the optional parameters # @option opts [Array] :account_ids An optional list of account IDs to filter the results. # @return [Array<(GetHoldingsResponse, Integer, Hash)>] GetHoldingsResponse data, response status code and response headers def get_holdings_with_http_info(id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: InvestmentsApi.get_holdings ...' end # verify the required parameter 'id' is set if @api_client.config.client_side_validation && id.nil? fail ArgumentError, "Missing the required parameter 'id' when calling InvestmentsApi.get_holdings" end # resource path local_var_path = '/links/{id}/investments/holdings'.sub('{' + 'id' + '}', CGI.escape(id.to_s)) # query parameters query_params = opts[:query_params] || {} query_params[:'account_ids'] = @api_client.build_collection_param(opts[:'account_ids'], :multi) if !opts[:'account_ids'].nil? # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'GetHoldingsResponse' # auth_names auth_names = opts[:debug_auth_names] || ['OAuth2ClientCredentials'] new_options = opts.merge( :operation => :"InvestmentsApi.get_holdings", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: InvestmentsApi#get_holdings\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end # /links/{id}/investments/transactions # Returns investment transactions for the accounts associated with a link. Results are paginated, and returned in reverse chronological order.

**Note** that this endpoint does **not** trigger a fetch of transactions from the institution; it merely returns transactions that have already been fetched. **To force a check for new/updated owner information, you must use the /products endpoint.**

If you have requested prefetch or an on-demand update, you should check the `refreshed_at` date for this product in the returned response, and compare that against the previous `refreshed_at` date, which you can get from any previous response for this or any other account or link request. If the refreshed_at date has not increased, then updated data is not yet available. # @param id [String] The unique ID for this link. # @param [Hash] opts the optional parameters # @option opts [Array] :account_ids An optional list of account IDs to filter the results. # @option opts [Integer] :page The page number to return. (default to 1) # @option opts [Integer] :size The number of items to return per page. (default to 50) # @option opts [Date] :start_date The earliest date for which data should be returned, formatted as YYYY-MM-DD. Defaults to 90 days before the `end_date`. <p>If you want to retrieve **all** transactions, use `1900-01-01`. # @option opts [Date] :end_date The latest date for which data should be returned, formatted as YYYY-MM-DD. Defaults to today. # @return [GetInvestmentTransactionsResponse] def get_investment_transactions(id, opts = {}) data, _status_code, _headers = get_investment_transactions_with_http_info(id, opts) data end # /links/{id}/investments/transactions # Returns investment transactions for the accounts associated with a <a href=#tag/Links>link</a>. Results are paginated, and returned in reverse chronological order. <p>**Note** that this endpoint does **not** trigger a fetch of transactions from the institution; it merely returns transactions that have already been fetched. **To force a check for new/updated owner information, you must use the <a href=#operation/refresh_products>/products</a> endpoint.** <p>If you have requested prefetch or an on-demand update, you should check the `refreshed_at` date for this product in the returned response, and compare that against the previous `refreshed_at` date, which you can get from any previous response for this or any other account or link request. If the refreshed_at date has not increased, then updated data is not yet available. # @param id [String] The unique ID for this link. # @param [Hash] opts the optional parameters # @option opts [Array] :account_ids An optional list of account IDs to filter the results. # @option opts [Integer] :page The page number to return. (default to 1) # @option opts [Integer] :size The number of items to return per page. (default to 50) # @option opts [Date] :start_date The earliest date for which data should be returned, formatted as YYYY-MM-DD. Defaults to 90 days before the `end_date`. <p>If you want to retrieve **all** transactions, use `1900-01-01`. # @option opts [Date] :end_date The latest date for which data should be returned, formatted as YYYY-MM-DD. Defaults to today. # @return [Array<(GetInvestmentTransactionsResponse, Integer, Hash)>] GetInvestmentTransactionsResponse data, response status code and response headers def get_investment_transactions_with_http_info(id, opts = {}) if @api_client.config.debugging @api_client.config.logger.debug 'Calling API: InvestmentsApi.get_investment_transactions ...' end # verify the required parameter 'id' is set if @api_client.config.client_side_validation && id.nil? fail ArgumentError, "Missing the required parameter 'id' when calling InvestmentsApi.get_investment_transactions" end if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1 fail ArgumentError, 'invalid value for "opts[:"page"]" when calling InvestmentsApi.get_investment_transactions, must be greater than or equal to 1.' end if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] > 500 fail ArgumentError, 'invalid value for "opts[:"size"]" when calling InvestmentsApi.get_investment_transactions, must be smaller than or equal to 500.' end if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] < 1 fail ArgumentError, 'invalid value for "opts[:"size"]" when calling InvestmentsApi.get_investment_transactions, must be greater than or equal to 1.' end # resource path local_var_path = '/links/{id}/investments/transactions'.sub('{' + 'id' + '}', CGI.escape(id.to_s)) # query parameters query_params = opts[:query_params] || {} query_params[:'account_ids'] = @api_client.build_collection_param(opts[:'account_ids'], :multi) if !opts[:'account_ids'].nil? query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil? query_params[:'size'] = opts[:'size'] if !opts[:'size'].nil? query_params[:'start_date'] = opts[:'start_date'] if !opts[:'start_date'].nil? query_params[:'end_date'] = opts[:'end_date'] if !opts[:'end_date'].nil? # header parameters header_params = opts[:header_params] || {} # HTTP header 'Accept' (if needed) header_params['Accept'] = @api_client.select_header_accept(['application/json']) # form parameters form_params = opts[:form_params] || {} # http body (model) post_body = opts[:debug_body] # return_type return_type = opts[:debug_return_type] || 'GetInvestmentTransactionsResponse' # auth_names auth_names = opts[:debug_auth_names] || ['OAuth2ClientCredentials'] new_options = opts.merge( :operation => :"InvestmentsApi.get_investment_transactions", :header_params => header_params, :query_params => query_params, :form_params => form_params, :body => post_body, :auth_names => auth_names, :return_type => return_type ) data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) if @api_client.config.debugging @api_client.config.logger.debug "API called: InvestmentsApi#get_investment_transactions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" end return data, status_code, headers end end end