ibanity 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee5dc6fa3f4a5aa0cd9d8f94bddac6a5878f79b1f4b6a530509e8845887bda47
4
- data.tar.gz: 6a6668fdbacdee52cbfa1d9c461378048c767e4b8f14e25690ad897425128d93
3
+ metadata.gz: fc2cf04d1de0868831487eb4923e738c4484f536f3e4a2749d326e0a18cc3f23
4
+ data.tar.gz: 2e4706bc1712469f99ebfac2afd3a8a8c56f50d97544a31cb9356f50a91bb5f8
5
5
  SHA512:
6
- metadata.gz: 9f9cd020c0f3876846974717d27165d84b10f6b67476d192dd517277c36d15802786b566ab4f56c3e9cd964e1e228f5bc8c685bf2375a5f8482d2a800b8a5eaa
7
- data.tar.gz: 721bf40a3596845d1858e8bf7376fca539280bf3f8bb733818b24ec74701f0b4966b10d436ae7a8469468d1b7e97dc04151a6de943540dd83d460c0794324cb8
6
+ metadata.gz: 2cc32d999ac1ce54089ef7be839778017a204efa1e0fea3e900c6934f653c9646ab837c60b2105b0f67b552ad96742448c68d9b884f4ab888eb14fb580fe15ae
7
+ data.tar.gz: 47f4dd5ba11dafe5018a85404bf377dac5fc81ec666674f96c8d6e8f2acddb3fc9c653aef8954890108646fde1409ccef4459845ccc88069a11dfb7e58efcb91
@@ -2,7 +2,7 @@ name: Ruby Gem
2
2
 
3
3
  on:
4
4
  release:
5
- types: [created]
5
+ types: [published]
6
6
 
7
7
  jobs:
8
8
  build:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0
4
+
5
+ * [Isabel Connect] Upgrade to version 2 of the API.
6
+
7
+ ## 1.11
8
+
9
+ * Allow to tweak RestClient's timeout.
10
+
11
+ ## 1.10
12
+
13
+ * [Ponto Connect] Add support for payment activation requests.
14
+
15
+ * [Webhooks] Add support for webhook signature validation, keys endpoint, and events.
16
+
17
+ ## 1.9
18
+
19
+ * [Ponto Connect] Add account reauthorization requests
20
+
21
+ * [Isabel Connect] Deprecate `Ibanity::IsabelConnect::AccessToken` and `Ibanity::IsabelConnect::RefreshToken`, please use `Ibanity::IsabelConnect::Token` instead
22
+
3
23
  ## 1.8
4
24
 
5
25
  * [XS2A] Update sandbox transactions
@@ -40,7 +60,7 @@
40
60
 
41
61
  ### Enhancements
42
62
 
43
- * Default signature algorithm is now ["hs2019"](https://tools.ietf.org/html/draft-cavage-http-signatures-12#appendix-E.2)
63
+ * Default signature algorithm is now ["hs2019"](https://tools.ietf.org/html/draft-cavage-http-signatures-12#appendix-E.2)
44
64
  * Add support for periodic and bulk payments
45
65
  * Add snake-case transformation for deeply nested data structures
46
66
 
data/README.md CHANGED
@@ -4,6 +4,17 @@
4
4
 
5
5
  The Ibanity Ruby Library provides convenient wrappers around the Ibanity API. The object attributes are dynamically defined based on the API response, supporting minor API changes seamlessly.
6
6
 
7
+ Supported API version per product:
8
+
9
+ Product | Version
10
+ -- | --
11
+ XS2A | 1
12
+ Ponto Connect | 1
13
+ Isabel Connect | 2
14
+ Consent | 1
15
+
16
+ In case you need to connect to an older version of an API, please consult `CHANGELOG.md` for more info on which version of the gem supports which version of the API.
17
+
7
18
  ## Documentation
8
19
 
9
20
  Visit our [Ruby API docs](https://documentation.ibanity.com/api/ruby).
data/ibanity.gemspec CHANGED
@@ -19,5 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "rest-client", ">= 1.8.0"
22
+ spec.add_dependency "jose", ">= 1.1.3"
22
23
  spec.add_development_dependency "rspec", "3.9.0"
23
24
  end
@@ -130,8 +130,8 @@ module Ibanity
130
130
  resource = relationship.dig("links", "meta", "type")
131
131
  klass = relationship_klass(resource)
132
132
  method_name = Ibanity::Util.underscore(key)
133
- define_singleton_method(method_name) do |headers: nil|
134
- klass.list_by_uri(uri: url, headers: headers, customer_access_token: customer_access_token)
133
+ define_singleton_method(method_name) do |headers: nil, **query_params|
134
+ klass.list_by_uri(uri: url, headers: headers, query_params: query_params, customer_access_token: customer_access_token)
135
135
  end
136
136
  else
137
137
  resource = key
@@ -0,0 +1,20 @@
1
+ module Ibanity
2
+ class FlatResource < OpenStruct
3
+ def self.list_by_uri(uri:, key:)
4
+ raw_response = Ibanity.client.get(uri: uri)
5
+ items = raw_response[key].map { |raw_item| new(raw_item) }
6
+ Ibanity::Collection.new(
7
+ klass: self,
8
+ items: items,
9
+ links: nil,
10
+ paging: nil,
11
+ synchronized_at: nil,
12
+ latest_synchronization: nil
13
+ )
14
+ end
15
+
16
+ def initialize(raw)
17
+ super(raw)
18
+ end
19
+ end
20
+ end
@@ -2,6 +2,7 @@ module Ibanity
2
2
  module IsabelConnect
3
3
  class AccessToken < Ibanity::OAuthResource
4
4
  def self.create(refresh_token:, idempotency_key: nil)
5
+ warn "WARNING: Ibanity::IsabelConnect::AccessToken.create is deprecated, please use Ibanity::IsabelConnect::Token.create instead"
5
6
  uri = Ibanity.isabel_connect_api_schema["oAuth2"]["accessTokens"]
6
7
  arguments = [
7
8
  ["grant_type", "refresh_token"],
@@ -2,6 +2,7 @@ module Ibanity
2
2
  module IsabelConnect
3
3
  class RefreshToken < Ibanity::OAuthResource
4
4
  def self.create(authorization_code:, redirect_uri:, idempotency_key: nil)
5
+ warn "WARNING: Ibanity::IsabelConnect::RefreshToken.create is deprecated, please use Ibanity::IsabelConnect::Token.create instead"
5
6
  uri = Ibanity.isabel_connect_api_schema["oAuth2"]["refreshTokens"]["create"]
6
7
  arguments = [
7
8
  ["grant_type", "authorization_code"],
@@ -13,8 +14,9 @@ module Ibanity
13
14
  payload = URI.encode_www_form(arguments)
14
15
  create_by_uri(uri: uri, payload: payload, idempotency_key: idempotency_key)
15
16
  end
16
-
17
+
17
18
  def self.delete(token:)
19
+ warn "WARNING: Ibanity::IsabelConnect::RefreshToken.delete is deprecated, please use Ibanity::IsabelConnect::Token.delete instead"
18
20
  uri = Ibanity.isabel_connect_api_schema["oAuth2"]["refreshTokens"]["revoke"]
19
21
  arguments = [
20
22
  ["token", token],
@@ -0,0 +1,46 @@
1
+ module Ibanity
2
+ module IsabelConnect
3
+ class Token < Ibanity::OAuthResource
4
+ def self.create(refresh_token: nil, authorization_code: nil, redirect_uri: nil, idempotency_key: nil)
5
+ uri = Ibanity.isabel_connect_api_schema["oAuth2"]["token"]
6
+ arguments =
7
+ if refresh_token
8
+ [
9
+ ["grant_type", "refresh_token"],
10
+ ["refresh_token", refresh_token]
11
+ ]
12
+ elsif authorization_code
13
+ [
14
+ ["grant_type", "authorization_code"],
15
+ ["code", authorization_code],
16
+ ["redirect_uri", redirect_uri]
17
+ ]
18
+ end
19
+ create_by_uri(
20
+ uri: uri,
21
+ payload: URI.encode_www_form(arguments),
22
+ idempotency_key: idempotency_key,
23
+ headers: self.headers
24
+ )
25
+ end
26
+
27
+ def self.delete(refresh_token:)
28
+ uri = Ibanity.isabel_connect_api_schema["oAuth2"]["revoke"]
29
+ arguments = [
30
+ ["token", refresh_token]
31
+ ]
32
+ payload = URI.encode_www_form(arguments)
33
+ create_by_uri(uri: uri, payload: payload, headers: self.headers)
34
+ end
35
+
36
+ private
37
+
38
+ def self.headers
39
+ {
40
+ "Authorization": "Basic " + Base64.strict_encode64("#{Ibanity.client.isabel_connect_client_id}:#{Ibanity.client.isabel_connect_client_secret}"),
41
+ "Content-Type": "application/x-www-form-urlencoded"
42
+ }
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,10 @@
1
+ module Ibanity
2
+ module PontoConnect
3
+ class PaymentActivationRequest < Ibanity::BaseResource
4
+ def self.create(access_token:, **attributes)
5
+ uri = Ibanity.ponto_connect_api_schema["paymentActivationRequests"]
6
+ create_by_uri(uri: uri, resource_type: "paymentActivationRequest", attributes: attributes, customer_access_token: access_token)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Ibanity
2
+ module PontoConnect
3
+ class ReauthorizationRequest < Ibanity::BaseResource
4
+ def self.create(account_id:, access_token:, **attributes)
5
+ uri = Ibanity.ponto_connect_api_schema["account"]["reauthorizationRequests"].gsub("{accountId}", account_id)
6
+ create_by_uri(uri: uri, resource_type: "reauthorizationRequest", attributes: attributes, customer_access_token: access_token)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -25,6 +25,14 @@ module Ibanity
25
25
  .sub("{financialInstitutionTransactionId}", "")
26
26
  create_by_uri(uri: uri, resource_type: "financialInstitutionTransaction", attributes: attributes, customer_access_token: access_token)
27
27
  end
28
+
29
+ def self.update(access_token:, id:, financial_institution_id:, financial_institution_account_id:, **attributes)
30
+ uri = Ibanity.ponto_connect_api_schema["sandbox"]["financialInstitution"]["financialInstitutionAccount"]["financialInstitutionTransactions"]
31
+ .sub("{financialInstitutionId}", financial_institution_id)
32
+ .sub("{financialInstitutionAccountId}", financial_institution_account_id)
33
+ .sub("{financialInstitutionTransactionId}", id)
34
+ update_by_uri(uri: uri, resource_type: "financialInstitutionTransaction", attributes: attributes, customer_access_token: access_token)
35
+ end
28
36
  end
29
37
  end
30
38
  end
@@ -0,0 +1,11 @@
1
+ module Ibanity
2
+ module Webhooks
3
+ class Key < Ibanity::FlatResource
4
+ def self.list
5
+ path = Ibanity.webhooks_api_schema["keys"]
6
+ uri = Ibanity.client.build_uri(path)
7
+ list_by_uri(uri: uri, key: "keys")
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module Ibanity
2
+ module Webhooks
3
+ module PontoConnect
4
+ module Synchronization
5
+ class SucceededWithoutChange < Ibanity::BaseResource
6
+ end
7
+
8
+ class Failed < Ibanity::BaseResource
9
+ end
10
+ end
11
+
12
+ module Account
13
+ class DetailsUpdated < Ibanity::BaseResource
14
+ end
15
+
16
+ class TransactionsCreated < Ibanity::BaseResource
17
+ end
18
+
19
+ class TransactionsUpdated < Ibanity::BaseResource
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Ibanity
2
+ module Webhooks
3
+ module Xs2a
4
+ module Synchronization
5
+ class SucceededWithoutChange < Ibanity::BaseResource
6
+ end
7
+
8
+ class Failed < Ibanity::BaseResource
9
+ end
10
+ end
11
+
12
+ module Account
13
+ class DetailsUpdated < Ibanity::BaseResource
14
+ end
15
+
16
+ class TransactionsCreated < Ibanity::BaseResource
17
+ end
18
+
19
+ class TransactionsUpdated < Ibanity::BaseResource
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,7 +1,7 @@
1
1
  module Ibanity
2
2
  class Client
3
3
 
4
- attr_reader :base_uri, :signature_certificate, :signature_key, :isabel_connect_client_id, :isabel_connect_client_secret, :ponto_connect_client_id, :ponto_connect_client_secret
4
+ attr_reader :base_uri, :signature_certificate, :signature_key, :isabel_connect_client_id, :isabel_connect_client_secret, :ponto_connect_client_id, :ponto_connect_client_secret, :application_id
5
5
 
6
6
  def initialize(
7
7
  certificate:,
@@ -13,13 +13,15 @@ module Ibanity
13
13
  signature_key_passphrase: nil,
14
14
  api_scheme: "https",
15
15
  api_host: "api.ibanity.com",
16
- api_port: "443",
17
16
  ssl_ca_file: nil,
18
- isabel_connect_client_id: "valid_client_id",
19
- isabel_connect_client_secret: "valid_client_secret",
17
+ isabel_connect_client_id: nil,
18
+ isabel_connect_client_secret: nil,
20
19
  ponto_connect_client_id: nil,
21
20
  ponto_connect_client_secret: nil,
22
- debug_http_requests: false)
21
+ application_id: nil,
22
+ debug_http_requests: false,
23
+ timeout: 60
24
+ )
23
25
  @isabel_connect_client_id = isabel_connect_client_id
24
26
  @isabel_connect_client_secret = isabel_connect_client_secret
25
27
  @ponto_connect_client_id = ponto_connect_client_id
@@ -32,8 +34,10 @@ module Ibanity
32
34
  @signature_certificate_id = signature_certificate_id
33
35
  @signature_key = OpenSSL::PKey::RSA.new(signature_key, signature_key_passphrase)
34
36
  end
35
- @base_uri = "#{api_scheme}://#{api_host}:#{api_port}"
37
+ @base_uri = "#{api_scheme}://#{api_host}"
36
38
  @ssl_ca_file = ssl_ca_file
39
+ @application_id = application_id
40
+ @timeout = timeout
37
41
  end
38
42
 
39
43
  def get(uri:, query_params: {}, customer_access_token: nil, headers: nil, json: true)
@@ -93,7 +97,8 @@ module Ibanity
93
97
  payload: payload,
94
98
  ssl_client_cert: @certificate,
95
99
  ssl_client_key: @key,
96
- ssl_ca_file: @ssl_ca_file
100
+ ssl_ca_file: @ssl_ca_file,
101
+ timeout: @timeout
97
102
  }
98
103
 
99
104
  log("HTTP Request", query) if @http_debug
@@ -119,7 +124,7 @@ module Ibanity
119
124
 
120
125
  def build_headers(customer_access_token: nil, idempotency_key: nil, extra_headers: nil, json:, payload: nil)
121
126
  headers = {
122
- accept: :json,
127
+ accept: :json
123
128
  }
124
129
  headers["Transfer-Encoding"] = "chunked" if payload.is_a?(Pathname)
125
130
  headers[:content_type] = :json if json
data/lib/ibanity/error.rb CHANGED
@@ -22,6 +22,8 @@ module Ibanity
22
22
  formatted_errors.join("\n")
23
23
  elsif @errors.is_a?(Hash)
24
24
  "* #{@errors["error"]}: #{@errors["error_description"]}\n * Error hint: #{@errors["error_hint"]}\n * ibanity_request_id: #{@ibanity_request_id}"
25
+ elsif @errors.is_a?(String)
26
+ @errors
25
27
  else
26
28
  super
27
29
  end
@@ -1,3 +1,3 @@
1
1
  module Ibanity
2
- VERSION = "1.8.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -0,0 +1,94 @@
1
+ module Ibanity
2
+ module Webhook
3
+ DEFAULT_TOLERANCE = 30
4
+ SIGNING_ALGORITHM = "RS512"
5
+
6
+ # Initializes an Ibanity Webhooks event object from a JSON payload.
7
+ #
8
+ # This may raise JSON::ParserError if the payload is not valid JSON, or
9
+ # Ibanity::Error if the signature verification fails.
10
+ def self.construct_event!(payload, signature_header, tolerance: DEFAULT_TOLERANCE)
11
+ Signature.verify!(payload, signature_header, tolerance)
12
+
13
+ raw_item = JSON.parse(payload)
14
+ klass = raw_item["data"]["type"].split(".").map{|klass| klass.sub(/\S/, &:upcase)}.join("::")
15
+ Ibanity::Webhooks.const_get(klass).new(raw_item["data"])
16
+ end
17
+
18
+ module Signature
19
+ # Verifies the signature header for a given payload.
20
+ #
21
+ # Raises an Ibanity::Error in the following cases:
22
+ # - the header does not match the expected format
23
+ # - the digest does not match the payload
24
+ # - the issued at or expiration timestamp is not within the tolerance
25
+ # - the audience or issuer does not match the application config
26
+ #
27
+ # Returns true otherwise
28
+ def self.verify!(payload, signature_header, tolerance)
29
+ begin
30
+ key_details = JOSE::JWT.peek_protected(signature_header).to_hash
31
+ raise unless key_details["alg"] == SIGNING_ALGORITHM && key_details["kid"]
32
+ rescue
33
+ raise Ibanity::Error.new("Key details could not be parsed from the header", nil)
34
+ end
35
+
36
+ key = Ibanity.webhook_keys.find { |key| key.kid == key_details["kid"] }
37
+
38
+ if key.nil?
39
+ raise Ibanity::Error.new("The key id from the header didn't match an available signing key", nil)
40
+ end
41
+ signer = JOSE::JWK.from(key.to_h {|key, value| [key.to_s, value] })
42
+ verified, claims_string, _jws = JOSE::JWT.verify_strict(signer, [SIGNING_ALGORITHM], signature_header)
43
+
44
+ raise Ibanity::Error.new("The signature verification failed", nil) unless verified
45
+
46
+ jwt = JOSE::JWT.from(claims_string)
47
+
48
+ validate_digest!(jwt, payload)
49
+ validate_issued_at!(jwt, tolerance)
50
+ validate_expiration!(jwt, tolerance)
51
+ validate_issuer!(jwt)
52
+ validate_audience!(jwt)
53
+
54
+ true
55
+ end
56
+
57
+ private
58
+
59
+ def self.validate_digest!(jwt, payload)
60
+ unless Digest::SHA512.base64digest(payload) == jwt.fields["digest"]
61
+ raise_invalid_signature_error!("digest")
62
+ end
63
+ end
64
+
65
+ def self.validate_issued_at!(jwt, tolerance)
66
+ unless jwt.fields["iat"] <= Time.now.to_i + tolerance
67
+ raise_invalid_signature_error!("iat")
68
+ end
69
+ end
70
+
71
+ def self.validate_expiration!(jwt, tolerance)
72
+ unless jwt.fields["exp"] >= Time.now.to_i - tolerance
73
+ raise_invalid_signature_error!("exp")
74
+ end
75
+ end
76
+
77
+ def self.validate_issuer!(jwt)
78
+ unless jwt.fields["iss"] == Ibanity.client.base_uri
79
+ raise_invalid_signature_error!("iss")
80
+ end
81
+ end
82
+
83
+ def self.validate_audience!(jwt)
84
+ unless jwt.fields["aud"] == Ibanity.client.application_id
85
+ raise_invalid_signature_error!("aud")
86
+ end
87
+ end
88
+
89
+ def self.raise_invalid_signature_error!(field)
90
+ raise Ibanity::Error.new("The signature #{field} is invalid", nil)
91
+ end
92
+ end
93
+ end
94
+ end
data/lib/ibanity.rb CHANGED
@@ -4,6 +4,7 @@ require "uri"
4
4
  require "rest_client"
5
5
  require "json"
6
6
  require "securerandom"
7
+ require "jose"
7
8
 
8
9
  require_relative "ibanity/util"
9
10
  require_relative "ibanity/error"
@@ -11,6 +12,8 @@ require_relative "ibanity/collection"
11
12
  require_relative "ibanity/client"
12
13
  require_relative "ibanity/http_signature"
13
14
  require_relative "ibanity/api/base_resource"
15
+ require_relative "ibanity/api/flat_resource"
16
+ require_relative "ibanity/webhook"
14
17
  require_relative "ibanity/api/xs2a/account"
15
18
  require_relative "ibanity/api/xs2a/transaction"
16
19
  require_relative "ibanity/api/xs2a/holding"
@@ -33,6 +36,7 @@ require_relative "ibanity/api/isabel_connect/intraday_transaction"
33
36
  require_relative "ibanity/api/isabel_connect/account_report"
34
37
  require_relative "ibanity/api/isabel_connect/access_token"
35
38
  require_relative "ibanity/api/isabel_connect/refresh_token"
39
+ require_relative "ibanity/api/isabel_connect/token"
36
40
  require_relative "ibanity/api/isabel_connect/bulk_payment_initiation_request"
37
41
  require_relative "ibanity/api/sandbox/financial_institution_account"
38
42
  require_relative "ibanity/api/sandbox/financial_institution_transaction"
@@ -53,6 +57,11 @@ require_relative "ibanity/api/ponto_connect/integration"
53
57
  require_relative "ibanity/api/ponto_connect/sandbox/financial_institution_account"
54
58
  require_relative "ibanity/api/ponto_connect/sandbox/financial_institution_transaction"
55
59
  require_relative "ibanity/api/ponto_connect/onboarding_details"
60
+ require_relative "ibanity/api/ponto_connect/reauthorization_request"
61
+ require_relative "ibanity/api/ponto_connect/payment_activation_request"
62
+ require_relative "ibanity/api/webhooks/key"
63
+ require_relative "ibanity/api/webhooks/xs2a"
64
+ require_relative "ibanity/api/webhooks/ponto_connect"
56
65
 
57
66
  module Ibanity
58
67
  class << self
@@ -67,6 +76,7 @@ module Ibanity
67
76
  @isabel_connect_api_schema = nil
68
77
  @consent_api_schema = nil
69
78
  @ponto_connect_api_schema = nil
79
+ @webhooks_api_schema = nil
70
80
  @sandbox_api_schema = nil
71
81
  @configuration = nil
72
82
  yield configuration
@@ -87,9 +97,10 @@ module Ibanity
87
97
  :ponto_connect_client_secret,
88
98
  :api_scheme,
89
99
  :api_host,
90
- :api_port,
91
100
  :ssl_ca_file,
92
- :debug_http_requests
101
+ :application_id,
102
+ :debug_http_requests,
103
+ :timeout
93
104
  ).new
94
105
  end
95
106
 
@@ -113,6 +124,14 @@ module Ibanity
113
124
  @consent_api_schema ||= client.get(uri: "#{client.base_uri}/consent")["links"]
114
125
  end
115
126
 
127
+ def webhooks_api_schema
128
+ @webhooks_api_schema ||= client.get(uri: "#{client.base_uri}/webhooks")["links"]
129
+ end
130
+
131
+ def webhook_keys
132
+ @webhook_keys ||= Ibanity::Webhooks::Key.list
133
+ end
134
+
116
135
  def respond_to_missing?(method_name, include_private = false)
117
136
  client.respond_to?(method_name, include_private)
118
137
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ibanity
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ibanity
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-24 00:00:00.000000000 Z
11
+ date: 2022-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: jose
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -60,6 +74,7 @@ files:
60
74
  - lib/ibanity/api/base_resource.rb
61
75
  - lib/ibanity/api/consent/consent.rb
62
76
  - lib/ibanity/api/consent/processing_operation.rb
77
+ - lib/ibanity/api/flat_resource.rb
63
78
  - lib/ibanity/api/isabel_connect/access_token.rb
64
79
  - lib/ibanity/api/isabel_connect/account.rb
65
80
  - lib/ibanity/api/isabel_connect/account_report.rb
@@ -67,6 +82,7 @@ files:
67
82
  - lib/ibanity/api/isabel_connect/bulk_payment_initiation_request.rb
68
83
  - lib/ibanity/api/isabel_connect/intraday_transaction.rb
69
84
  - lib/ibanity/api/isabel_connect/refresh_token.rb
85
+ - lib/ibanity/api/isabel_connect/token.rb
70
86
  - lib/ibanity/api/isabel_connect/transaction.rb
71
87
  - lib/ibanity/api/o_auth_resource.rb
72
88
  - lib/ibanity/api/ponto_connect/account.rb
@@ -75,6 +91,8 @@ files:
75
91
  - lib/ibanity/api/ponto_connect/integration.rb
76
92
  - lib/ibanity/api/ponto_connect/onboarding_details.rb
77
93
  - lib/ibanity/api/ponto_connect/payment.rb
94
+ - lib/ibanity/api/ponto_connect/payment_activation_request.rb
95
+ - lib/ibanity/api/ponto_connect/reauthorization_request.rb
78
96
  - lib/ibanity/api/ponto_connect/sandbox/financial_institution_account.rb
79
97
  - lib/ibanity/api/ponto_connect/sandbox/financial_institution_transaction.rb
80
98
  - lib/ibanity/api/ponto_connect/synchronization.rb
@@ -86,6 +104,9 @@ files:
86
104
  - lib/ibanity/api/sandbox/financial_institution_holding.rb
87
105
  - lib/ibanity/api/sandbox/financial_institution_transaction.rb
88
106
  - lib/ibanity/api/sandbox/financial_institution_user.rb
107
+ - lib/ibanity/api/webhooks/key.rb
108
+ - lib/ibanity/api/webhooks/ponto_connect.rb
109
+ - lib/ibanity/api/webhooks/xs2a.rb
89
110
  - lib/ibanity/api/xs2a/account.rb
90
111
  - lib/ibanity/api/xs2a/account_information_access_request.rb
91
112
  - lib/ibanity/api/xs2a/account_information_access_request_authorization.rb
@@ -106,6 +127,7 @@ files:
106
127
  - lib/ibanity/http_signature.rb
107
128
  - lib/ibanity/util.rb
108
129
  - lib/ibanity/version.rb
130
+ - lib/ibanity/webhook.rb
109
131
  - spec/lib/ibanity/base_resource_spec.rb
110
132
  - spec/lib/ibanity/http_signature_spec.rb
111
133
  - spec/lib/ibanity/util_spec.rb