=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 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. **Note** that these lists are **unordered**, so it is possible to get transactions with dates that precede those you've fetched in previous calls to this endpoint. Older transactions can be added, for example, when historical data becomes accessible later. **Pending** transactions will only be reported as `created`. Pending transactions are completely removed and replaced with each transaction refresh or update; no attempt is made to track their removal or modification. Pending transactions will **not** be reported in the `removed` list. If you store pending transactions, you should remove and replace them entirely each time you fetch new transactions. 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 app cursors.
# @option opts [Integer] :size The number of items to return. (default to 50)
# @return [TransactionSyncResponse]
def get_transactions_sync(id, opts = {})
data, _status_code, _headers = get_transactions_sync_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. **Note** that these lists are **unordered**, so it is possible to get transactions with dates that precede those you've fetched in previous calls to this endpoint. Older transactions can be added, for example, when historical data becomes accessible later. <p>**Pending** transactions will only be reported as `created`. Pending transactions are completely removed and replaced with each transaction refresh or update; no attempt is made to track their removal or modification. Pending transactions will **not** be reported in the `removed` list. If you store pending transactions, you should remove and replace them entirely each time you fetch new transactions. <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 app 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_sync_with_http_info(id, opts = {})
if @api_client.config.debugging
@api_client.config.logger.debug 'Calling API: TransactionsApi.get_transactions_sync ...'
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_sync"
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_sync, 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_sync, 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_sync",
: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_sync\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=/api/operation/create_link_session#customer_user-id>link-session</a> to create any link for this user.
# @param [Hash] opts the optional parameters
# @option opts [Array