Class: Pluggy::Resources::Item

Inherits:
APIResource show all
Defined in:
lib/pluggy/resources/item.rb

Overview

A connection to one financial institution.

There is no GET /items endpoint -- items cannot be listed. Persist the ids you create, normally keyed by your own clientUserId.

Constant Summary

Constants inherited from PluggyObject

PluggyObject::ISO8601, PluggyObject::RESERVED, PluggyObject::TEMPORAL_KEYS

Instance Attribute Summary

Attributes inherited from PluggyObject

#client

Instance Method Summary collapse

Methods inherited from PluggyObject

#==, #[], #as_json, declared_fields, define_field, #each_pair, fields, #hash, #initialize, #inspect, #key?, #keys, #method_missing, nested, nested_types, #read, #respond_to_missing?, #to_h, #to_json, #values

Constructor Details

This class inherits a constructor from Pluggy::PluggyObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Pluggy::PluggyObject

Instance Method Details

#accounts(type: nil) ⇒ Object



80
# File 'lib/pluggy/resources/item.rb', line 80

def accounts(type: nil) = ensure_client!.accounts.list(item_id: self["id"], type: type)

#bank_accountsObject



81
# File 'lib/pluggy/resources/item.rb', line 81

def bank_accounts = accounts(type: "BANK")

Returns:

  • (Boolean)


75
76
77
78
# File 'lib/pluggy/resources/item.rb', line 75

def consent_expired?
  expiry = self[:consentExpiresAt]
  expiry.is_a?(Time) && expiry <= Time.now
end

#credit_accountsObject



82
# File 'lib/pluggy/resources/item.rb', line 82

def credit_accounts = accounts(type: "CREDIT")

#deleteObject



97
# File 'lib/pluggy/resources/item.rb', line 97

def delete = ensure_client!.items.delete(self["id"])

#disable_auto_syncObject



95
# File 'lib/pluggy/resources/item.rb', line 95

def disable_auto_sync = ensure_client!.items.disable_auto_sync(self["id"])

#failed?Boolean

Returns:

  • (Boolean)


72
# File 'lib/pluggy/resources/item.rb', line 72

def failed? = !self["error"].nil? || self["executionStatus"].to_s.include?("ERROR")

#loansObject



83
# File 'lib/pluggy/resources/item.rb', line 83

def loans = ensure_client!.loans.list(item_id: self["id"])

#login_error?Boolean

Returns:

  • (Boolean)


67
# File 'lib/pluggy/resources/item.rb', line 67

def  = self["status"] == "LOGIN_ERROR"

#outdated?Boolean

Returns:

  • (Boolean)


68
# File 'lib/pluggy/resources/item.rb', line 68

def outdated? = self["status"] == "OUTDATED"

#refreshObject



98
# File 'lib/pluggy/resources/item.rb', line 98

def refresh = ensure_client!.items.retrieve(self["id"])

#send_mfa(values) ⇒ Object



94
# File 'lib/pluggy/resources/item.rb', line 94

def send_mfa(values) = ensure_client!.items.send_mfa(self["id"], values)

#succeeded?Boolean

Returns:

  • (Boolean)


73
# File 'lib/pluggy/resources/item.rb', line 73

def succeeded? = self["executionStatus"] == "SUCCESS"

#sync(**body) ⇒ Object



96
# File 'lib/pluggy/resources/item.rb', line 96

def sync(**body) = ensure_client!.items.update(self["id"], **body)

#transactions(**filters, &block) ⇒ Object

Every transaction on every account of this item, as one lazy stream.



86
87
88
89
90
91
92
# File 'lib/pluggy/resources/item.rb', line 86

def transactions(**filters, &block)
  return enum_for(:transactions, **filters) unless block_given?

  accounts.each do ||
    .transactions(**filters).auto_paging_each(&block)
  end
end

#updated?Boolean

status and executionStatus are unconstrained strings in the spec -- no enum is declared anywhere and the documented values appear only in examples. These predicates compare raw strings and never assume the set is closed.

Returns:

  • (Boolean)


65
# File 'lib/pluggy/resources/item.rb', line 65

def updated? = self["status"] == "UPDATED"

#updating?Boolean

Returns:

  • (Boolean)


66
# File 'lib/pluggy/resources/item.rb', line 66

def updating? = self["status"] == "UPDATING"

#waiting_user_input?Boolean Also known as: mfa_required?

Returns:

  • (Boolean)


69
# File 'lib/pluggy/resources/item.rb', line 69

def waiting_user_input? = self["status"] == "WAITING_USER_INPUT" || !self["userAction"].nil?