=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 TransactionsApi
attr_accessor :api_client
def initialize(api_client = ApiClient.default)
@api_client = api_client
end
# /links/{id}/transactions
# Returns 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, either because `prefetch` was requested when the link was created, or because of scheduled or on-demand updates.
MoneyKit checks for updated account data, including transactions, periodically throughout the day, but the update frequency can vary, depending on the downstream data provider, the institution, and whether one or both provide webhook-based updates. **To force a check for updated transactions, you can 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 [GetTransactionsResponse]
def get_transactions(id, opts = {})
data, _status_code, _headers = get_transactions_with_http_info(id, opts)
data
end
# /links/{id}/transactions
# Returns 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, either because `prefetch` was requested when the link was created, or because of scheduled or on-demand updates. <p>MoneyKit checks for updated account data, including transactions, periodically throughout the day, but the update frequency can vary, depending on the downstream data provider, the institution, and whether one or both provide webhook-based updates. **To force a check for updated transactions, you can 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<(GetTransactionsResponse, Integer, Hash)>] GetTransactionsResponse data, response status code and response headers
def get_transactions_with_http_info(id, opts = {})
if @api_client.config.debugging
@api_client.config.logger.debug 'Calling API: TransactionsApi.get_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 TransactionsApi.get_transactions"
end
if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1
fail ArgumentError, 'invalid value for "opts[:"page"]" when calling TransactionsApi.get_transactions, must be greater than or equal to 1.'
end
if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] > 100
fail ArgumentError, 'invalid value for "opts[:"size"]" when calling TransactionsApi.get_transactions, must be smaller than or equal to 100.'
end
if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] < 1
fail ArgumentError, 'invalid value for "opts[:"size"]" when calling TransactionsApi.get_transactions, must be greater than or equal to 1.'
end
# resource path
local_var_path = '/links/{id}/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] || 'GetTransactionsResponse'
# auth_names
auth_names = opts[:debug_auth_names] || ['OAuth2ClientCredentials']
new_options = opts.merge(
:operation => :"TransactionsApi.get_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: TransactionsApi#get_transactions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
end
return data, status_code, headers
end
# /links/{id}/transactions/sync
# Provides a paginated feed of transactions, grouped into `created`, `updated`, and `removed` lists. Each call will also return a `cursor.next` value. In subsequent calls, include that value to receive only changes that have occurred since the previous call.
Large numbers of transactions will be paginated, and the `has_more` field will be true. You should continue calling this endpoint with each new `cursor.next` value until `has_more` is false.
**Note** that this endpoint does **not** trigger a fetch of transactions from the institution; it merely returns transactions that have already been fetched, either because `prefetch` was requested when the link was created, or because of scheduled or on-demand updates.
MoneyKit checks for updated account data, including transactions, periodically throughout the day, but the update frequency can vary, depending on the downstream data provider, the institution, and whether one or both provide webhook-based updates. **To force a check for updated transactions, you can use the /products endpoint.**
Note also that the `transactions.updates_available` webhook will alert you when new data is available.
# @param id [String] The unique ID for this link.
# @param [Hash] opts the optional parameters
# @option opts [String] :cursor A cursor value representing the last update requested. If included, the response will only return changes after this update. If omitted, a complete history of updates will be returned. This value must be stored by the client as we do not keep track of customer cursors.
# @option opts [Integer] :size The number of items to return. (default to 50)
# @return [TransactionSyncResponse]
def get_transactions_diff(id, opts = {})
data, _status_code, _headers = get_transactions_diff_with_http_info(id, opts)
data
end
# /links/{id}/transactions/sync
# Provides a paginated feed of transactions, grouped into `created`, `updated`, and `removed` lists. <p>Each call will also return a `cursor.next` value. In subsequent calls, include that value to receive only changes that have occurred since the previous call. <p>Large numbers of transactions will be paginated, and the `has_more` field will be true. You should continue calling this endpoint with each new `cursor.next` value until `has_more` is false. <p>**Note** that this endpoint does **not** trigger a fetch of transactions from the institution; it merely returns transactions that have already been fetched, either because `prefetch` was requested when the link was created, or because of scheduled or on-demand updates. <p>MoneyKit checks for updated account data, including transactions, periodically throughout the day, but the update frequency can vary, depending on the downstream data provider, the institution, and whether one or both provide webhook-based updates. **To force a check for updated transactions, you can use the <a href=#operation/refresh_products>/products</a> endpoint.** <p>Note also that the `transactions.updates_available` webhook will alert you when new data is available.
# @param id [String] The unique ID for this link.
# @param [Hash] opts the optional parameters
# @option opts [String] :cursor A cursor value representing the last update requested. If included, the response will only return changes after this update. If omitted, a complete history of updates will be returned. This value must be stored by the client as we do not keep track of customer cursors.
# @option opts [Integer] :size The number of items to return. (default to 50)
# @return [Array<(TransactionSyncResponse, Integer, Hash)>] TransactionSyncResponse data, response status code and response headers
def get_transactions_diff_with_http_info(id, opts = {})
if @api_client.config.debugging
@api_client.config.logger.debug 'Calling API: TransactionsApi.get_transactions_diff ...'
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 TransactionsApi.get_transactions_diff"
end
if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] > 500
fail ArgumentError, 'invalid value for "opts[:"size"]" when calling TransactionsApi.get_transactions_diff, 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 TransactionsApi.get_transactions_diff, must be greater than or equal to 1.'
end
# resource path
local_var_path = '/links/{id}/transactions/sync'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
# query parameters
query_params = opts[:query_params] || {}
query_params[:'cursor'] = opts[:'cursor'] if !opts[:'cursor'].nil?
query_params[:'size'] = opts[:'size'] if !opts[:'size'].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] || 'TransactionSyncResponse'
# auth_names
auth_names = opts[:debug_auth_names] || ['OAuth2ClientCredentials']
new_options = opts.merge(
:operation => :"TransactionsApi.get_transactions_diff",
: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: TransactionsApi#get_transactions_diff\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
end
return data, status_code, headers
end
# /users/{id}/transactions
# Fetches transactions for a user.
This endpoint fetches all transactions for a user across all of their links. You can use it to retrieve transactions from any or all accounts at once, regardless of which institution they belong to.
# @param id [String] The unique ID for this user. This is the same ID provided in the call to <a href=#operation/create_link_session>/link-session</a> to create any link for this user.
# @param [Hash] opts the optional parameters
# @option opts [Array] :transaction_type
# @option opts [Array] :category
# @option opts [Array] :account_id If present, filters results to transactions in accounts matching the given IDs.
# @option opts [Array] :institution_id If present, filters results to transactions at institutions matching the given IDs.
# @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 [GetUserTransactionsResponse]
def get_user_transactions(id, opts = {})
data, _status_code, _headers = get_user_transactions_with_http_info(id, opts)
data
end
# /users/{id}/transactions
# Fetches transactions for a <a href=#operation/get_user_accounts>user</a>. <p>This endpoint fetches all transactions for a user across all of their links. You can use it to retrieve transactions from any or all accounts at once, regardless of which institution they belong to.
# @param id [String] The unique ID for this user. This is the same ID provided in the call to <a href=#operation/create_link_session>/link-session</a> to create any link for this user.
# @param [Hash] opts the optional parameters
# @option opts [Array] :transaction_type
# @option opts [Array] :category
# @option opts [Array] :account_id If present, filters results to transactions in accounts matching the given IDs.
# @option opts [Array] :institution_id If present, filters results to transactions at institutions matching the given IDs.
# @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<(GetUserTransactionsResponse, Integer, Hash)>] GetUserTransactionsResponse data, response status code and response headers
def get_user_transactions_with_http_info(id, opts = {})
if @api_client.config.debugging
@api_client.config.logger.debug 'Calling API: TransactionsApi.get_user_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 TransactionsApi.get_user_transactions"
end
if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1
fail ArgumentError, 'invalid value for "opts[:"page"]" when calling TransactionsApi.get_user_transactions, must be greater than or equal to 1.'
end
if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] > 100
fail ArgumentError, 'invalid value for "opts[:"size"]" when calling TransactionsApi.get_user_transactions, must be smaller than or equal to 100.'
end
if @api_client.config.client_side_validation && !opts[:'size'].nil? && opts[:'size'] < 1
fail ArgumentError, 'invalid value for "opts[:"size"]" when calling TransactionsApi.get_user_transactions, must be greater than or equal to 1.'
end
# resource path
local_var_path = '/users/{id}/transactions'.sub('{' + 'id' + '}', CGI.escape(id.to_s))
# query parameters
query_params = opts[:query_params] || {}
query_params[:'transaction_type'] = @api_client.build_collection_param(opts[:'transaction_type'], :multi) if !opts[:'transaction_type'].nil?
query_params[:'category'] = @api_client.build_collection_param(opts[:'category'], :multi) if !opts[:'category'].nil?
query_params[:'account_id'] = @api_client.build_collection_param(opts[:'account_id'], :multi) if !opts[:'account_id'].nil?
query_params[:'institution_id'] = @api_client.build_collection_param(opts[:'institution_id'], :multi) if !opts[:'institution_id'].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] || 'GetUserTransactionsResponse'
# auth_names
auth_names = opts[:debug_auth_names] || ['OAuth2ClientCredentials']
new_options = opts.merge(
:operation => :"TransactionsApi.get_user_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: TransactionsApi#get_user_transactions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
end
return data, status_code, headers
end
end
end