synapse_pay_rest 3.2.9 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/synapse_pay_rest.rb +16 -0
- data/lib/synapse_pay_rest/api/client.rb +30 -0
- data/lib/synapse_pay_rest/api/subnets.rb +87 -0
- data/lib/synapse_pay_rest/client.rb +16 -7
- data/lib/synapse_pay_rest/models/client/issue_public_key.rb +47 -0
- data/lib/synapse_pay_rest/models/node/ach_us_node.rb +2 -0
- data/lib/synapse_pay_rest/models/node/base_node.rb +78 -3
- data/lib/synapse_pay_rest/models/node/check_us_node.rb +25 -0
- data/lib/synapse_pay_rest/models/node/clearing_us_node.rb +16 -0
- data/lib/synapse_pay_rest/models/node/ib_deposit_us_node.rb +16 -0
- data/lib/synapse_pay_rest/models/node/ib_subaccount_us_node.rb +16 -0
- data/lib/synapse_pay_rest/models/node/interchange_us_node.rb +19 -0
- data/lib/synapse_pay_rest/models/node/node.rb +6 -1
- data/lib/synapse_pay_rest/models/subnet/subnet.rb +161 -0
- data/lib/synapse_pay_rest/models/subscription/subscription.rb +3 -3
- data/lib/synapse_pay_rest/models/user/social_document.rb +37 -1
- data/lib/synapse_pay_rest/models/user/user.rb +74 -1
- data/lib/synapse_pay_rest/version.rb +1 -1
- data/samples.md +134 -0
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 503d134992f78bafbfe89fd3ebbe6430fe35ca87
|
4
|
+
data.tar.gz: a23d139910156322ff423ed7dc01d0e2d23d5f81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a55b51ce0018030f2dc71a238751132ec436a99365ae6e68a0362f8c2787fcf4f12142534bdf921c339a377e03986e7f003afa08cb740bba9619e20157006a1
|
7
|
+
data.tar.gz: 00642c06e8e320fd101b7db256c3833949b3b293ca25bddd42386e722083fa35ebeecb33bd0b6e1d8d3293b3f80f7720004becb51f8a4470412cff3e5570abe7
|
data/lib/synapse_pay_rest.rb
CHANGED
@@ -5,9 +5,11 @@ require 'synapse_pay_rest/http_client'
|
|
5
5
|
# base API classes
|
6
6
|
require 'synapse_pay_rest/api/users'
|
7
7
|
require 'synapse_pay_rest/api/nodes'
|
8
|
+
require 'synapse_pay_rest/api/subnets'
|
8
9
|
require 'synapse_pay_rest/api/transactions'
|
9
10
|
require 'synapse_pay_rest/api/subscriptions'
|
10
11
|
require 'synapse_pay_rest/api/institutions'
|
12
|
+
require 'synapse_pay_rest/api/client'
|
11
13
|
|
12
14
|
# general library classes
|
13
15
|
require 'synapse_pay_rest/error'
|
@@ -37,6 +39,8 @@ require 'synapse_pay_rest/models/node/subaccount_us_node.rb'
|
|
37
39
|
# ach
|
38
40
|
require 'synapse_pay_rest/models/node/ach_us_node.rb'
|
39
41
|
require 'synapse_pay_rest/models/node/unverified_node.rb'
|
42
|
+
#check
|
43
|
+
require 'synapse_pay_rest/models/node/check_us_node.rb'
|
40
44
|
# eft
|
41
45
|
require 'synapse_pay_rest/models/node/eft_ind_node.rb'
|
42
46
|
require 'synapse_pay_rest/models/node/eft_np_node.rb'
|
@@ -50,12 +54,20 @@ require 'synapse_pay_rest/models/node/triumph_subaccount_us_node.rb'
|
|
50
54
|
require 'synapse_pay_rest/models/node/subaccount_us_node.rb'
|
51
55
|
require 'synapse_pay_rest/models/node/deposit_us_node.rb'
|
52
56
|
|
57
|
+
require 'synapse_pay_rest/models/node/clearing_us_node.rb'
|
58
|
+
require 'synapse_pay_rest/models/node/ib_deposit_us_node.rb'
|
59
|
+
require 'synapse_pay_rest/models/node/ib_subaccount_us_node.rb'
|
60
|
+
require 'synapse_pay_rest/models/node/interchange_us_node.rb'
|
61
|
+
|
53
62
|
# iou
|
54
63
|
require 'synapse_pay_rest/models/node/iou_node.rb'
|
55
64
|
|
56
65
|
# BaseNode factory
|
57
66
|
require 'synapse_pay_rest/models/node/node'
|
58
67
|
|
68
|
+
# subnet-related classes
|
69
|
+
require 'synapse_pay_rest/models/subnet/subnet'
|
70
|
+
|
59
71
|
# transaction-related classes
|
60
72
|
require 'synapse_pay_rest/models/transaction/transaction'
|
61
73
|
|
@@ -65,6 +77,10 @@ require 'synapse_pay_rest/models/subscription/subscription'
|
|
65
77
|
# institution-related classes
|
66
78
|
require 'synapse_pay_rest/models/institution/institution'
|
67
79
|
|
80
|
+
require 'synapse_pay_rest/models/client/issue_public_key'
|
81
|
+
|
82
|
+
|
83
|
+
|
68
84
|
# Namespace for all SynapsePayRest classes and modules
|
69
85
|
module SynapsePayRest
|
70
86
|
# Modifies the default method to print a warning when deprecated constants
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
# Wrapper class for /client endpoint
|
3
|
+
class ClientEndpoint
|
4
|
+
|
5
|
+
# @!attribute [rw] client
|
6
|
+
# @return [SynapsePayRest::HTTPClient]
|
7
|
+
attr_accessor :client
|
8
|
+
|
9
|
+
# @param client [SynapsePayRest::HTTPClient]
|
10
|
+
def initialize(client)
|
11
|
+
@client = client
|
12
|
+
end
|
13
|
+
|
14
|
+
# Sends a GET request to /client endpoint to issue public key, and returns the
|
15
|
+
# response.
|
16
|
+
#
|
17
|
+
# @param scope [String]
|
18
|
+
#
|
19
|
+
# @raise [SynapsePayRest::Error] may return subclasses of error based on
|
20
|
+
# HTTP response from API
|
21
|
+
#
|
22
|
+
# @return [Hash] API response
|
23
|
+
def issue_public_key(scope: "OAUTH|POST,USERS|POST,USERS|GET,USER|GET,USER|PATCH,SUBSCRIPTIONS|GET,SUBSCRIPTIONS|POST,SUBSCRIPTION|GET,SUBSCRIPTION|PATCH,CLIENT|REPORTS,CLIENT|CONTROLS")
|
24
|
+
path = '/client?issue_public_key=YES'
|
25
|
+
path += "&scope=#{scope}"
|
26
|
+
client.get(path)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
# Wrapper class for /subnets endpoints
|
3
|
+
#
|
4
|
+
class Subnets
|
5
|
+
|
6
|
+
# Valid optional args for #get
|
7
|
+
# @todo Refactor to HTTPClient
|
8
|
+
VALID_QUERY_PARAMS = [:page, :per_page].freeze
|
9
|
+
|
10
|
+
# @!attribute [rw] client
|
11
|
+
# @return [SynapsePayRest::HTTPClient]
|
12
|
+
attr_accessor :client
|
13
|
+
|
14
|
+
# @param client [SynapsePayRest::HTTPClient]
|
15
|
+
def initialize(client)
|
16
|
+
@client = client
|
17
|
+
end
|
18
|
+
|
19
|
+
# Sends a GET request to /subnets endpoint. Queries a specific subnet_id
|
20
|
+
# if subnet_id supplied, else queries all transactions. Returns the response.
|
21
|
+
#
|
22
|
+
# @param user_id [String]
|
23
|
+
# @param node_id [String] id of node
|
24
|
+
# @param subnet_id [String,void] (optional) id of a subnet to look up
|
25
|
+
# @param page [String,Integer] (optional) response will default to 1
|
26
|
+
# @param per_page [String,Integer] (optional) response will default to 20
|
27
|
+
#
|
28
|
+
# @raise [SynapsePayRest::Error] may return subclasses of error based on
|
29
|
+
# HTTP response from API
|
30
|
+
#
|
31
|
+
# @return [Hash] API response
|
32
|
+
#
|
33
|
+
def get(user_id:, node_id:, subnet_id: nil, **options)
|
34
|
+
path = create_subnet_path(user_id: user_id, node_id: node_id, subnet_id: subnet_id)
|
35
|
+
|
36
|
+
params = VALID_QUERY_PARAMS.map do |p|
|
37
|
+
options[p] ? "#{p}=#{options[p]}" : nil
|
38
|
+
end.compact
|
39
|
+
|
40
|
+
path += '?' + params.join('&') if params.any?
|
41
|
+
client.get(path)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Sends a POST request to /subents endpoint to create a new subnet.
|
45
|
+
# Returns the response.
|
46
|
+
#
|
47
|
+
# @param user_id [String] user_id associated with the subnet
|
48
|
+
# @param node_id [String] node the subnet belongs to
|
49
|
+
# @param payload [Hash]
|
50
|
+
# @see https://docs.synapsepay.com/docs/create-subnet payload structure
|
51
|
+
#
|
52
|
+
# @raise [SynapsePayRest::Error] may return subclasses of error based on
|
53
|
+
# HTTP response from API
|
54
|
+
#
|
55
|
+
# @return [Hash] API response
|
56
|
+
def create(user_id:, node_id:, payload:)
|
57
|
+
path = create_subnet_path(user_id: user_id, node_id: node_id)
|
58
|
+
client.post(path, payload)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Sends a PATCH request to /subnets endpoint to update a subnet.
|
62
|
+
# Returns the response.
|
63
|
+
#
|
64
|
+
# @param user_id [String] id of user associated with the subnet
|
65
|
+
# @param node_id [String] id of node the subnet belongs to
|
66
|
+
# @param subnet_id [String] id of subnet
|
67
|
+
# @param payload [Hash]
|
68
|
+
# @see https://docs.synapsepay.com/docs/subnet-1 payload structure
|
69
|
+
#
|
70
|
+
# @raise [SynapsePayRest::Error] may return subclasses of error based on
|
71
|
+
# HTTP response from API
|
72
|
+
#
|
73
|
+
# @return [Hash] API response
|
74
|
+
def update(user_id:, node_id:, subnet_id:, payload:)
|
75
|
+
path = create_subnet_path(user_id: user_id, node_id: node_id, subnet_id: subnet_id)
|
76
|
+
client.patch(path, payload)
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def create_subnet_path(user_id:, node_id:, subnet_id: nil)
|
82
|
+
path = "/users/#{user_id}/nodes/#{node_id}/subnets"
|
83
|
+
path += "/#{subnet_id}" if subnet_id
|
84
|
+
path
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -13,7 +13,8 @@ module SynapsePayRest
|
|
13
13
|
# @return [SynapsePayRest::Transactions]
|
14
14
|
# @!attribute [rw] subscriptions
|
15
15
|
# @return [SynapsePayRest::Subscriptions]
|
16
|
-
attr_accessor :http_client, :users, :nodes, :transactions, :subscriptions, :institutions
|
16
|
+
attr_accessor :http_client, :users, :nodes, :subnets, :transactions, :subscriptions, :institutions,
|
17
|
+
:client_endpoint
|
17
18
|
|
18
19
|
# Alias for #transactions (legacy name)
|
19
20
|
alias_method :trans, :transactions
|
@@ -32,7 +33,7 @@ module SynapsePayRest
|
|
32
33
|
base_url = if development_mode
|
33
34
|
'https://uat-api.synapsefi.com/v3.1'
|
34
35
|
else
|
35
|
-
'https://
|
36
|
+
'https://api.synapsefi.com/v3.1'
|
36
37
|
end
|
37
38
|
|
38
39
|
@http_client = HTTPClient.new(base_url: base_url,
|
@@ -41,11 +42,19 @@ module SynapsePayRest
|
|
41
42
|
fingerprint: fingerprint,
|
42
43
|
ip_address: ip_address,
|
43
44
|
**options)
|
44
|
-
@users
|
45
|
-
@nodes
|
46
|
-
@
|
47
|
-
@
|
48
|
-
@
|
45
|
+
@users = Users.new @http_client
|
46
|
+
@nodes = Nodes.new @http_client
|
47
|
+
@subnets = Subnets.new @http_client
|
48
|
+
@transactions = Transactions.new @http_client
|
49
|
+
@subscriptions = Subscriptions.new @http_client
|
50
|
+
@institutions = Institutions.new @http_client
|
51
|
+
@client_endpoint = ClientEndpoint.new @http_client
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
def issue_public_key(scope: "OAUTH|POST,USERS|POST,USERS|GET,USER|GET,USER|PATCH,SUBSCRIPTIONS|GET,SUBSCRIPTIONS|POST,SUBSCRIPTION|GET,SUBSCRIPTION|PATCH,CLIENT|REPORTS,CLIENT|CONTROLS")
|
57
|
+
PublicKey.issue(client: self, scope: scope)
|
49
58
|
end
|
50
59
|
end
|
51
60
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
# Represents a public key record and holds methods for getting public key instances
|
3
|
+
# from API calls. This is built on top of the SynapsePayRest::Client class and
|
4
|
+
# is intended to make it easier to use the API without knowing payload formats
|
5
|
+
# or knowledge of REST.
|
6
|
+
class PublicKey
|
7
|
+
attr_reader :client, :client_obj_id, :expires_at, :expires_in, :public_key, :scope
|
8
|
+
|
9
|
+
class << self
|
10
|
+
# Creates a client public key from a response hash.
|
11
|
+
# @note Shouldn't need to call this directly.
|
12
|
+
def from_response(response)
|
13
|
+
args = {
|
14
|
+
client: response['client'],
|
15
|
+
client_obj_id: response['public_key_obj']['client_obj_id'],
|
16
|
+
expires_at: response['public_key_obj']['expires_at'],
|
17
|
+
expires_in: response['public_key_obj']['expires_in'],
|
18
|
+
public_key: response['public_key_obj']['public_key'],
|
19
|
+
scope: response['public_key_obj']['scope']
|
20
|
+
}
|
21
|
+
self.new(args)
|
22
|
+
end
|
23
|
+
|
24
|
+
#Issues public key for client.
|
25
|
+
# @param client [SynapsePayRest::Client]
|
26
|
+
# @param scope [String]
|
27
|
+
#
|
28
|
+
# @raise [SynapsePayRest::Error]
|
29
|
+
#
|
30
|
+
# @return [SynapsePayRest::PublicKey] new instance corresponding to same API record
|
31
|
+
def issue(client:, scope: "OAUTH|POST,USERS|POST,USERS|GET,USER|GET,USER|PATCH,SUBSCRIPTIONS|GET,SUBSCRIPTIONS|POST,SUBSCRIPTION|GET,SUBSCRIPTION|PATCH,CLIENT|REPORTS,CLIENT|CONTROLS")
|
32
|
+
raise ArgumentError, 'client must be a SynapsePayRest::Client' unless client.is_a?(Client)
|
33
|
+
raise ArgumentError, 'scope must be a String' unless scope.is_a?(String)
|
34
|
+
|
35
|
+
response = client.client_endpoint.issue_public_key(scope: scope)
|
36
|
+
from_response(response)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# @note Do not call directly. Use PublicKey.issue or other class method
|
41
|
+
# to instantiate via API action.
|
42
|
+
def initialize(**options)
|
43
|
+
options.each { |key, value| instance_variable_set("@#{key}", value) }
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -126,6 +126,7 @@ module SynapsePayRest
|
|
126
126
|
response = user.client.nodes.resend_micro(user_id: user.id, node_id: id)
|
127
127
|
self.class.from_response(user, response)
|
128
128
|
end
|
129
|
+
|
129
130
|
|
130
131
|
private
|
131
132
|
|
@@ -133,5 +134,6 @@ module SynapsePayRest
|
|
133
134
|
def verify_microdeposits_payload(amount1:, amount2:)
|
134
135
|
{'micro' => [amount1, amount2]}
|
135
136
|
end
|
137
|
+
|
136
138
|
end
|
137
139
|
end
|
@@ -20,7 +20,10 @@ module SynapsePayRest
|
|
20
20
|
:correspondent_routing_number, :correspondent_bank_name,
|
21
21
|
:correspondent_address, :correspondent_swift, :account_id, :balance,
|
22
22
|
:ifsc, :swift, :bank_long_name, :type, :gateway_restricted,
|
23
|
-
:email_match, :name_match, :phonenumber_match
|
23
|
+
:email_match, :name_match, :phonenumber_match, :address_street,
|
24
|
+
:address_city, :address_subdivision, :address_country_code,
|
25
|
+
:address_postal_code, :payee_address, :payee_name, :other, :network,
|
26
|
+
:document_id, :card_type
|
24
27
|
|
25
28
|
class << self
|
26
29
|
# Creates a new node in the API associated to the provided user and
|
@@ -91,6 +94,10 @@ module SynapsePayRest
|
|
91
94
|
address: response['info']['address'],
|
92
95
|
swift: response['info']['swift'],
|
93
96
|
ifsc: response['info']['ifsc'],
|
97
|
+
payee_name: response['info']['payee_name'],
|
98
|
+
document_id: response['info']['document_id'],
|
99
|
+
network: response['info']['network'],
|
100
|
+
card_type: response['info']['type'],
|
94
101
|
user_info: nil,
|
95
102
|
transactions: nil,
|
96
103
|
timeline: nil,
|
@@ -144,6 +151,15 @@ module SynapsePayRest
|
|
144
151
|
args[:timeline] = timeline
|
145
152
|
end
|
146
153
|
|
154
|
+
if response['info']['payee_address']
|
155
|
+
payee_address = response['info']['payee_address']
|
156
|
+
args[:address_street] = payee_address['address_street']
|
157
|
+
args[:address_city] = payee_address['address_city']
|
158
|
+
args[:address_subdivision] = payee_address['address_subdivision']
|
159
|
+
args[:address_country_code] = payee_address['address_country_code']
|
160
|
+
args[:address_postal_code] = payee_address['address_postal_code']
|
161
|
+
end
|
162
|
+
|
147
163
|
self.new(**args)
|
148
164
|
end
|
149
165
|
|
@@ -159,7 +175,7 @@ module SynapsePayRest
|
|
159
175
|
}
|
160
176
|
|
161
177
|
info_fields = [
|
162
|
-
:swift, :name_on_account, :bank_name, :address, :ifsc
|
178
|
+
:swift, :name_on_account, :bank_name, :address, :ifsc, :nickname,
|
163
179
|
:bank_name
|
164
180
|
]
|
165
181
|
info_fields.each do |field|
|
@@ -200,6 +216,18 @@ module SynapsePayRest
|
|
200
216
|
if options[:password]
|
201
217
|
payload['info']['bank_pw'] = options[:password]
|
202
218
|
end
|
219
|
+
if options[:payee_name]
|
220
|
+
payload['info']['payee_name'] = options[:payee_name]
|
221
|
+
end
|
222
|
+
if options[:card_number]
|
223
|
+
payload['info']['card_number'] = options[:card_number]
|
224
|
+
end
|
225
|
+
if options[:exp_date]
|
226
|
+
payload['info']['exp_date'] = options[:exp_date]
|
227
|
+
end
|
228
|
+
if options[:document_id]
|
229
|
+
payload['info']['document_id'] = options[:document_id]
|
230
|
+
end
|
203
231
|
|
204
232
|
balance_fields = [:currency]
|
205
233
|
balance_fields.each do |field|
|
@@ -209,7 +237,7 @@ module SynapsePayRest
|
|
209
237
|
end
|
210
238
|
end
|
211
239
|
|
212
|
-
extra_fields = [:supp_id, :gateway_restricted]
|
240
|
+
extra_fields = [:supp_id, :gateway_restricted, :other]
|
213
241
|
extra_fields.each do |field|
|
214
242
|
if options[field]
|
215
243
|
payload['extra'] ||= {}
|
@@ -217,6 +245,15 @@ module SynapsePayRest
|
|
217
245
|
end
|
218
246
|
end
|
219
247
|
|
248
|
+
payee_address_fields = [:address_street, :address_city, :address_subdivision,
|
249
|
+
:address_country_code, :address_postal_code]
|
250
|
+
payee_address_fields.each do |field|
|
251
|
+
if options[field]
|
252
|
+
payload['info']['payee_address'] ||= {}
|
253
|
+
payload['info']['payee_address'][field.to_s] = options[field] if options[field]
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
220
257
|
payload
|
221
258
|
end
|
222
259
|
end
|
@@ -278,6 +315,44 @@ module SynapsePayRest
|
|
278
315
|
Transaction.find(node: self, id: id)
|
279
316
|
end
|
280
317
|
|
318
|
+
# Creates a subnet belonging to this node and returns it as a Subnet
|
319
|
+
# instance.
|
320
|
+
#
|
321
|
+
#
|
322
|
+
# @raise [SynapsePayRest::Error] if HTTP error or invalid argument format
|
323
|
+
#
|
324
|
+
# @return [SynapsePayRest::Subnet]
|
325
|
+
def create_subnet(**options)
|
326
|
+
Subnet.create(node: self, **options)
|
327
|
+
end
|
328
|
+
|
329
|
+
# Queries the API for all subnets belonging to this node and returns
|
330
|
+
# them as Subnet instances.
|
331
|
+
#
|
332
|
+
# @param page [String,Integer] (optional) response will default to 1
|
333
|
+
# @param per_page [String,Integer] (optional) response will default to 20
|
334
|
+
#
|
335
|
+
# @raise [SynapsePayRest::Error]
|
336
|
+
#
|
337
|
+
# @return [Array<SynapsePayRest::Subnet>]
|
338
|
+
def subnets(**options)
|
339
|
+
Subnet.all(node: self, **options)
|
340
|
+
end
|
341
|
+
|
342
|
+
# Queries the API for a subnet belonging to this node by subnet id
|
343
|
+
# and returns a Subnet instance if found.
|
344
|
+
#
|
345
|
+
# @param id [String] id of the subnet to find
|
346
|
+
#
|
347
|
+
# @raise [SynapsePayRest::Error] if not found or other HTTP error
|
348
|
+
#
|
349
|
+
# @return [SynapsePayRest::Subnet]
|
350
|
+
def find_subnet(id:)
|
351
|
+
raise ArgumentError, 'id must be a String' unless id.is_a?(String)
|
352
|
+
|
353
|
+
Subnet.find(node: self, id: id)
|
354
|
+
end
|
355
|
+
|
281
356
|
# Deactivates the node.
|
282
357
|
#
|
283
358
|
# @raise [SynapsePayRest::Error]
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
# This node allows you to send a check to any individual or entity in the US.
|
3
|
+
#Currently in sandbox only.
|
4
|
+
class CheckUsNode < BaseNode
|
5
|
+
class << self
|
6
|
+
private
|
7
|
+
|
8
|
+
def payload_for_create(nickname:, payee_name:, address_street:, address_city:,
|
9
|
+
address_subdivision:, address_country_code:, address_postal_code:, **options)
|
10
|
+
args = {
|
11
|
+
type: 'CHECK-US',
|
12
|
+
nickname: nickname,
|
13
|
+
payee_name: payee_name,
|
14
|
+
address_street: address_street,
|
15
|
+
address_city: address_city,
|
16
|
+
address_subdivision: address_subdivision,
|
17
|
+
address_country_code: address_country_code,
|
18
|
+
address_postal_code: address_postal_code
|
19
|
+
}.merge(options)
|
20
|
+
super(args)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
#
|
3
|
+
class ClearingUsNode < BaseNode
|
4
|
+
class << self
|
5
|
+
private
|
6
|
+
|
7
|
+
def payload_for_create(nickname:, **options)
|
8
|
+
args = {
|
9
|
+
type: 'CLEARING-US',
|
10
|
+
nickname: nickname
|
11
|
+
}.merge(options)
|
12
|
+
super(args)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
#
|
3
|
+
class IbDepositUsNode < BaseNode
|
4
|
+
class << self
|
5
|
+
private
|
6
|
+
|
7
|
+
def payload_for_create(nickname:, **options)
|
8
|
+
args = {
|
9
|
+
type: 'IB-DEPOSIT-US',
|
10
|
+
nickname: nickname
|
11
|
+
}.merge(options)
|
12
|
+
super(args)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
#
|
3
|
+
class IbSubaccountUsNode < BaseNode
|
4
|
+
class << self
|
5
|
+
private
|
6
|
+
|
7
|
+
def payload_for_create(nickname:, **options)
|
8
|
+
args = {
|
9
|
+
type: 'IB-SUBACCOUNT-US',
|
10
|
+
nickname: nickname
|
11
|
+
}.merge(options)
|
12
|
+
super(args)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
|
3
|
+
class InterchangeUsNode < BaseNode
|
4
|
+
class << self
|
5
|
+
private
|
6
|
+
|
7
|
+
def payload_for_create(nickname:, card_number:, exp_date:, document_id:, **options)
|
8
|
+
args = {
|
9
|
+
type: 'INTERCHANGE-US',
|
10
|
+
nickname: nickname,
|
11
|
+
card_number: card_number,
|
12
|
+
exp_date: exp_date,
|
13
|
+
document_id: document_id
|
14
|
+
}.merge(options)
|
15
|
+
super(args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -18,7 +18,12 @@ module SynapsePayRest
|
|
18
18
|
'TRIUMPH-SUBACCOUNT-US' => TriumphSubaccountUsNode,
|
19
19
|
'SUBACCOUNT-US' => SubaccountUsNode,
|
20
20
|
'WIRE-INT' => WireIntNode,
|
21
|
-
'WIRE-US' => WireUsNode
|
21
|
+
'WIRE-US' => WireUsNode,
|
22
|
+
'CHECK-US' => CheckUsNode,
|
23
|
+
'CLEARING-US' => ClearingUsNode,
|
24
|
+
'IB-DEPOSIT-US' => IbDepositUsNode,
|
25
|
+
'IB-SUBACCOUNT-US' => IbSubaccountUsNode,
|
26
|
+
'INTERCHANGE-US' => InterchangeUsNode
|
22
27
|
}.freeze
|
23
28
|
|
24
29
|
class << self
|
@@ -0,0 +1,161 @@
|
|
1
|
+
module SynapsePayRest
|
2
|
+
# Represents a subnet record and holds methods for constructing subnet instances
|
3
|
+
# from API calls. This is built on top of the SynapsePayRest::Subnets class and
|
4
|
+
# is intended to make it easier to use the API without knowing payload formats
|
5
|
+
# or knowledge of REST.
|
6
|
+
#
|
7
|
+
class Subnet
|
8
|
+
# @!attribute [rw] node
|
9
|
+
attr_reader :id, :account_num, :allowed, :client_id, :client_name, :nickname, :node, :routing_num_ach,
|
10
|
+
:routing_num_wire
|
11
|
+
|
12
|
+
|
13
|
+
class << self
|
14
|
+
# Creates a new subnet in the API belonging to the provided node and
|
15
|
+
# returns a subnet instance from the response data.
|
16
|
+
#
|
17
|
+
# @param nickname [String] any nicknames
|
18
|
+
# @param node [SynapsePayRest::BaseNode] node to which the Subnet belongs
|
19
|
+
# @see https://docs.synapsepay.com/docs/subnets
|
20
|
+
#
|
21
|
+
# @raise [SynapsePayRest::Error] if HTTP error or invalid argument format
|
22
|
+
#
|
23
|
+
# @return [SynapsePayRest::Subnet]
|
24
|
+
#
|
25
|
+
def create(node:, nickname:, **options)
|
26
|
+
raise ArgumentError, 'cannot create a transaction with an UnverifiedNode' if node.is_a?(UnverifiedNode)
|
27
|
+
raise ArgumentError, 'node must be a type of BaseNode object' unless node.is_a?(BaseNode)
|
28
|
+
[nickname].each do |arg|
|
29
|
+
if options[arg] && !options[arg].is_a?(String)
|
30
|
+
raise ArgumentError, "#{arg} must be a String"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
payload = payload_for_create(node: node, nickname: nickname, **options)
|
35
|
+
response = node.user.client.subnets.create(
|
36
|
+
user_id: node.user.id,
|
37
|
+
node_id: node.id,
|
38
|
+
payload: payload,
|
39
|
+
)
|
40
|
+
from_response(node, response)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Queries the API for a subnet belonging to the supplied node by subnet id
|
44
|
+
# and returns a Subnet n instance if found.
|
45
|
+
#
|
46
|
+
# @param node [SynapsePayRest::BaseNode] node to which the subnet belongs
|
47
|
+
# @param id [String] id of the subnet to find
|
48
|
+
#
|
49
|
+
# @raise [SynapsePayRest::Error] if not found or other HTTP error
|
50
|
+
#
|
51
|
+
# @return [SynapsePayRest::Subnet]
|
52
|
+
def find(node:, id:)
|
53
|
+
raise ArgumentError, 'node must be a type of BaseNode object' unless node.is_a?(BaseNode)
|
54
|
+
raise ArgumentError, 'id must be a String' unless id.is_a?(String)
|
55
|
+
|
56
|
+
response = node.user.client.subnets.get(
|
57
|
+
user_id: node.user.id,
|
58
|
+
node_id: node.id,
|
59
|
+
subnet_id: id
|
60
|
+
)
|
61
|
+
from_response(node, response)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Queries the API for all subnets belonging to the supplied node and returns
|
65
|
+
# them as Subnet instances.
|
66
|
+
#
|
67
|
+
# @param node [SynapsePayRest::BaseNode] node to which the subnet belongs
|
68
|
+
# @param page [String,Integer] (optional) response will default to 1
|
69
|
+
# @param per_page [String,Integer] (optional) response will default to 20
|
70
|
+
#
|
71
|
+
# @raise [SynapsePayRest::Error]
|
72
|
+
#
|
73
|
+
# @return [Array<SynapsePayRest::Subnet>]
|
74
|
+
def all(node:, page: nil, per_page: nil)
|
75
|
+
raise ArgumentError, 'node must be a type of BaseNode object' unless node.is_a?(BaseNode)
|
76
|
+
[page, per_page].each do |arg|
|
77
|
+
if arg && (!arg.is_a?(Integer) || arg < 1)
|
78
|
+
raise ArgumentError, "#{arg} must be nil or an Integer >= 1"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
response = node.user.client.subnets.get(
|
83
|
+
user_id: node.user.id,
|
84
|
+
node_id: node.id,
|
85
|
+
page: page,
|
86
|
+
per_page: per_page
|
87
|
+
)
|
88
|
+
multiple_from_response(node, response['subnets'])
|
89
|
+
end
|
90
|
+
|
91
|
+
# Creates a Subnet from a response hash.
|
92
|
+
#
|
93
|
+
# @note Shouldn't need to call this directly.
|
94
|
+
#
|
95
|
+
def from_response(node, response)
|
96
|
+
args = {
|
97
|
+
node: node,
|
98
|
+
id: response['_id'],
|
99
|
+
account_num: response['account_num'],
|
100
|
+
allowed: response['allowed'],
|
101
|
+
client_id: response['client']['id'],
|
102
|
+
client_name: response['client']['name'],
|
103
|
+
nickname: response['nickname'],
|
104
|
+
node_id: response['node_id'],
|
105
|
+
routing_num_ach: response['routing_num']['ach'],
|
106
|
+
routing_num_wire: response['routing_num']['wire'],
|
107
|
+
user_id: response['user_id']
|
108
|
+
}
|
109
|
+
self.new(args)
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def payload_for_create(node:, nickname:, **options)
|
115
|
+
payload = {
|
116
|
+
'nickname' => nickname
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
def multiple_from_response(node, response)
|
121
|
+
return [] if response.empty?
|
122
|
+
response.map { |subnets_data| from_response(node, subnets_data) }
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# @note Do not call directly. Use Subnet.create or other class
|
127
|
+
# method to instantiate via API action.
|
128
|
+
def initialize(**options)
|
129
|
+
options.each { |key, value| instance_variable_set("@#{key}", value) }
|
130
|
+
end
|
131
|
+
|
132
|
+
# Changes Subnet's allowed permission from 'CREDIT' to 'LOCKED'.
|
133
|
+
#
|
134
|
+
# @param comment [String]
|
135
|
+
#
|
136
|
+
# @raise [SynapsePayRest::Error]
|
137
|
+
#
|
138
|
+
# @return [Array<SynapsePayRest::Subnet>] (self)
|
139
|
+
def lock
|
140
|
+
payload = {'allowed' => 'LOCKED'}
|
141
|
+
response = node.user.client.subnets.update(
|
142
|
+
user_id: node.user.id,
|
143
|
+
node_id: node.id,
|
144
|
+
subnet_id: id,
|
145
|
+
payload: payload
|
146
|
+
)
|
147
|
+
if response['subnets']
|
148
|
+
# api v3.1
|
149
|
+
self.class.from_response(node, response['subnets'])
|
150
|
+
else
|
151
|
+
# api v3.1.1
|
152
|
+
self.class.from_response(node, response)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
# Checks if two Subnet instances have same id (different instances of same record).
|
157
|
+
def ==(other)
|
158
|
+
other.instance_of?(self.class) && !id.nil? && id == other.id
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
@@ -74,11 +74,11 @@ module SynapsePayRest
|
|
74
74
|
# @raise [SynapsePayRest::Error] if HTTP error or invalid argument format
|
75
75
|
#
|
76
76
|
# @return [SynapsePayRest::Subscription] new instance corresponding to same API record
|
77
|
-
def update(client:,
|
77
|
+
def update(client:, id:, **options)
|
78
78
|
raise ArgumentError, 'client must be a SynapsePayRest::Client' unless client.is_a?(Client)
|
79
79
|
|
80
|
-
payload = payload_for_update(
|
81
|
-
response = client.subscriptions.update(payload: payload)
|
80
|
+
payload = payload_for_update(options)
|
81
|
+
response = client.subscriptions.update(subscription_id: id, payload: payload)
|
82
82
|
from_response(response)
|
83
83
|
end
|
84
84
|
|
@@ -3,5 +3,41 @@ module SynapsePayRest
|
|
3
3
|
#
|
4
4
|
# @see https://docs.synapsepay.com/docs/user-resources#section-social-document-types
|
5
5
|
# social document types
|
6
|
-
class SocialDocument < Document
|
6
|
+
class SocialDocument < Document
|
7
|
+
|
8
|
+
# Verifies the pin sent via the user's social doc either EMAIL_2FA or PHONE_NUMBER_2FA
|
9
|
+
# status is SUBMITTED|MFA_PENDING before verified
|
10
|
+
#
|
11
|
+
# @param mfa_answer [String]
|
12
|
+
# @param value [String]
|
13
|
+
#
|
14
|
+
# @raise [SynapsePayRest::Error] if wrong guess or HTTP error
|
15
|
+
#
|
16
|
+
# @return [SynapsePayRest::SocialDocument]
|
17
|
+
def verify_2fa(mfa_answer:, value:)
|
18
|
+
user = base_document.user
|
19
|
+
payload = verify_social_doc_2fa_payload(mfa_answer: mfa_answer, type: type, value: value)
|
20
|
+
response = user.client.users.update(user_id: user.id, payload: payload)
|
21
|
+
user = User.from_response(user.client, response)
|
22
|
+
social_doc = base_document.social_documents.find { |doc| doc.type == type }
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Converts the data to hash format for request JSON.
|
28
|
+
def verify_social_doc_2fa_payload(mfa_answer:, type:, value:)
|
29
|
+
{
|
30
|
+
'documents' => [{
|
31
|
+
'id' => base_document.id,
|
32
|
+
'social_docs' => [{
|
33
|
+
'id' => id,
|
34
|
+
'document_value' => value,
|
35
|
+
'document_type' => type,
|
36
|
+
'mfa_answer' => mfa_answer
|
37
|
+
}]
|
38
|
+
}]
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
7
43
|
end
|
@@ -591,7 +591,7 @@ module SynapsePayRest
|
|
591
591
|
#
|
592
592
|
# @return [SynapsePayRest::SynapseUsNode]
|
593
593
|
def create_deposit_us_node(**options)
|
594
|
-
|
594
|
+
DepositUsNode.create(user: self, **options)
|
595
595
|
end
|
596
596
|
|
597
597
|
# Creates a SUBACCOUNT-US node.
|
@@ -664,6 +664,79 @@ module SynapsePayRest
|
|
664
664
|
WireUsNode.create(user: self, **options)
|
665
665
|
end
|
666
666
|
|
667
|
+
# Creates a CHECK-US node.
|
668
|
+
#
|
669
|
+
# @param nickname [String] nickname for the node
|
670
|
+
# @param bank_name [String]
|
671
|
+
# @param account_number [String]
|
672
|
+
# @param routing_number [String]
|
673
|
+
# @param name_on_account [String]
|
674
|
+
# @param address [String]
|
675
|
+
# @param correspondent_routing_number [String] (optional)
|
676
|
+
# @param correspondent_bank_name [String] (optional)
|
677
|
+
# @param correspondent_address [String] (optional)
|
678
|
+
# @param supp_id [String] (optional)
|
679
|
+
# @param gateway_restricted [Boolean] (optional)
|
680
|
+
#
|
681
|
+
# @raise [SynapsePayRest::Error]
|
682
|
+
#
|
683
|
+
# @return [SynapsePayRest::CheckUsNode]
|
684
|
+
def create_check_us_node(**options)
|
685
|
+
CheckUsNode.create(user: self, **options)
|
686
|
+
end
|
687
|
+
|
688
|
+
# Creates a CLEARING-US node.
|
689
|
+
#
|
690
|
+
# @param nickname [String] nickname for the node
|
691
|
+
# @param supp_id [String] (optional)
|
692
|
+
# @param gateway_restricted [Boolean] (optional)
|
693
|
+
#
|
694
|
+
# @raise [SynapsePayRest::Error]
|
695
|
+
#
|
696
|
+
# @return [SynapsePayRest::ClearingUsNode]
|
697
|
+
def create_clearing_us_node(**options)
|
698
|
+
ClearingUsNode.create(user: self, **options)
|
699
|
+
end
|
700
|
+
|
701
|
+
# Creates a IB-DEPOSIT-US node.
|
702
|
+
#
|
703
|
+
# @param nickname [String] nickname for the node
|
704
|
+
# @param supp_id [String] (optional)
|
705
|
+
# @param gateway_restricted [Boolean] (optional)
|
706
|
+
#
|
707
|
+
# @raise [SynapsePayRest::Error]
|
708
|
+
#
|
709
|
+
# @return [SynapsePayRest::IbDepositUsNode]
|
710
|
+
def create_ib_deposit_us_node(**options)
|
711
|
+
IbDepositUsNode.create(user: self, **options)
|
712
|
+
end
|
713
|
+
|
714
|
+
# Creates a IB-SUBACCOUNT-US node.
|
715
|
+
#
|
716
|
+
# @param nickname [String] nickname for the node
|
717
|
+
# @param supp_id [String] (optional)
|
718
|
+
# @param gateway_restricted [Boolean] (optional)
|
719
|
+
#
|
720
|
+
# @raise [SynapsePayRest::Error]
|
721
|
+
#
|
722
|
+
# @return [SynapsePayRest::IbSubaccountUsNode]
|
723
|
+
def create_ib_subaccount_us_node(**options)
|
724
|
+
IbSubaccountUsNode.create(user: self, **options)
|
725
|
+
end
|
726
|
+
|
727
|
+
# Creates a INTERCHANGE-US node.
|
728
|
+
#
|
729
|
+
# @param nickname [String] nickname for the node
|
730
|
+
# @param supp_id [String] (optional)
|
731
|
+
# @param gateway_restricted [Boolean] (optional)
|
732
|
+
#
|
733
|
+
# @raise [SynapsePayRest::Error]
|
734
|
+
#
|
735
|
+
# @return [SynapsePayRest::InterchangeUsNode]
|
736
|
+
def create_interchange_us_node(**options)
|
737
|
+
InterchangeUsNode.create(user: self, **options)
|
738
|
+
end
|
739
|
+
|
667
740
|
# Checks if two User instances have same id (different instances of same record).
|
668
741
|
def ==(other)
|
669
742
|
other.instance_of?(self.class) && !id.nil? && id == other.id
|
data/samples.md
CHANGED
@@ -443,6 +443,25 @@ base_doc = base_doc.add_virtual_documents(virtual_doc)
|
|
443
443
|
# => #<SynapsePayRest::BaseDocument>
|
444
444
|
```
|
445
445
|
|
446
|
+
#### Add and verify email and phone number 2fa
|
447
|
+
|
448
|
+
```ruby
|
449
|
+
social_doc = SynapsePayRest::SocialDocument.create(
|
450
|
+
type: 'EMAIL_2FA',
|
451
|
+
value: '1111111111'
|
452
|
+
)
|
453
|
+
|
454
|
+
# reassign base_doc to the output because it returns a new instance
|
455
|
+
base_doc = base_doc.add_social_documents(social_doc)
|
456
|
+
# => #<SynapsePayRest::BaseDocument>
|
457
|
+
|
458
|
+
# find the social doc with the same doc type
|
459
|
+
social_doc_email = base_doc.social_documents.find { |doc| doc.type == 'EMAIL_2FA' }
|
460
|
+
|
461
|
+
#verify the mfa_answer sent
|
462
|
+
social_doc_email.verify_2fa(mfa_answer: '123456' , value: '1111111111')
|
463
|
+
```
|
464
|
+
|
446
465
|
## Node Methods
|
447
466
|
|
448
467
|
#### All Nodes for a User
|
@@ -1074,6 +1093,38 @@ node = node.verify_microdeposits(amount1: 0.1, amount2: 0.1)
|
|
1074
1093
|
# => #<SynapsePayRest::AchUsNode>
|
1075
1094
|
```
|
1076
1095
|
|
1096
|
+
#### Create CHECK-US Node
|
1097
|
+
|
1098
|
+
```ruby
|
1099
|
+
check_info = {
|
1100
|
+
type: 'CHECK-US',
|
1101
|
+
nickname: 'test check-us',
|
1102
|
+
payee_name: 'Test McTest',
|
1103
|
+
address_street: '1 Market St',
|
1104
|
+
address_city: 'San Francisco',
|
1105
|
+
address_subdivision: 'CA',
|
1106
|
+
address_country_code: 'US',
|
1107
|
+
address_postal_code: '94105'
|
1108
|
+
}
|
1109
|
+
|
1110
|
+
node = user.create_check_us_node(check_info)
|
1111
|
+
# => #<SynapsePayRest::CheckUsNode>
|
1112
|
+
```
|
1113
|
+
|
1114
|
+
#### Create INTERCHANGE-US Node
|
1115
|
+
|
1116
|
+
```ruby
|
1117
|
+
node_info = {
|
1118
|
+
nickname: 'my debit card',
|
1119
|
+
card_number: [string of encrypted card number],
|
1120
|
+
exp_date: [string of encrypted exp date (YYYYMM)],
|
1121
|
+
document_id: [string of base doc id],
|
1122
|
+
}
|
1123
|
+
|
1124
|
+
node = user.create_interchange_us_node(node_info)
|
1125
|
+
# => #<SynapsePayRest::InterchangeUsNode>
|
1126
|
+
```
|
1127
|
+
|
1077
1128
|
#### Deactivate a Node
|
1078
1129
|
|
1079
1130
|
This deactivates the node. It does not automatically cancel any transactions already underway.
|
@@ -1164,3 +1215,86 @@ transaction = transaction.add_comment('this is my favorite transaction')
|
|
1164
1215
|
transaction = transaction.cancel
|
1165
1216
|
# => #<SynapsePayRest::Transaction>
|
1166
1217
|
```
|
1218
|
+
|
1219
|
+
## Subnet Methods
|
1220
|
+
|
1221
|
+
#### All Subnets from a Node
|
1222
|
+
|
1223
|
+
##### a) Node#subnets
|
1224
|
+
|
1225
|
+
```ruby
|
1226
|
+
subnets = node.subnets(page: 1, per_page: 15)
|
1227
|
+
# => [#<SynapsePayRest::Subnet>, #<SynapsePayRest::Subnet>, ...]
|
1228
|
+
```
|
1229
|
+
|
1230
|
+
##### b) Subnet#all
|
1231
|
+
|
1232
|
+
```ruby
|
1233
|
+
subnets = SynapsePayRest::Subnet.all(node: node, page: 1, per_page: 15)
|
1234
|
+
# => [#<SynapsePayRest::Subnet>, #<SynapsePayRest::Subnet>, ...]
|
1235
|
+
```
|
1236
|
+
|
1237
|
+
#### Find a Node's Subnet by ID
|
1238
|
+
|
1239
|
+
##### a) Node#find_subnet
|
1240
|
+
|
1241
|
+
```ruby
|
1242
|
+
subnet= node.find_subnet(id: '167e11516')
|
1243
|
+
# => #<SynapsePayRest::Subnet>
|
1244
|
+
```
|
1245
|
+
|
1246
|
+
##### b) Subnet#find
|
1247
|
+
|
1248
|
+
```ruby
|
1249
|
+
subnet = SynapsePayRest::Subnet.find(node: node, id: '57fab7d186c2733525dd7eac')
|
1250
|
+
# => #<SynapsePayRest::Subnet>
|
1251
|
+
```
|
1252
|
+
|
1253
|
+
#### Create a Subnet
|
1254
|
+
|
1255
|
+
##### a) Node#create_subnet
|
1256
|
+
|
1257
|
+
```ruby
|
1258
|
+
subnet_settings = {
|
1259
|
+
"nickname":"Test AC/RT"
|
1260
|
+
}
|
1261
|
+
|
1262
|
+
subnet = node.create_subnet(subnet_settings)
|
1263
|
+
# => #<SynapsePayRest::Subnet>
|
1264
|
+
```
|
1265
|
+
|
1266
|
+
##### b) Subnet#create
|
1267
|
+
|
1268
|
+
```ruby
|
1269
|
+
subnet_settings = {
|
1270
|
+
"nickname":"Test AC/RT"
|
1271
|
+
}
|
1272
|
+
|
1273
|
+
subnet = SynapsePayRest::Subnet.create(subnet_settings)
|
1274
|
+
# => #<SynapsePayRest::Subnet>
|
1275
|
+
```
|
1276
|
+
|
1277
|
+
#### To lock a Subnet
|
1278
|
+
|
1279
|
+
```ruby
|
1280
|
+
subnet = subnet.lock
|
1281
|
+
# => #<SynapsePayRest::Subnet>
|
1282
|
+
```
|
1283
|
+
|
1284
|
+
## Issue Public Key Method
|
1285
|
+
|
1286
|
+
#### Issue Public Key From Client
|
1287
|
+
|
1288
|
+
##### a) Client#issue_public_key
|
1289
|
+
|
1290
|
+
```ruby
|
1291
|
+
public_key = client.issue_public_key(scope: ‘CLIENT|CONTROLS’)
|
1292
|
+
# => #<SynapsePayRest::Public_key>
|
1293
|
+
```
|
1294
|
+
|
1295
|
+
##### b) Subnet#all
|
1296
|
+
|
1297
|
+
```ruby
|
1298
|
+
public_key = SynapsePayRest::PublicKey.issue(client: client, scope: ‘CLIENT|CONTROLS')
|
1299
|
+
# => #<SynapsePayRest::Public_key>
|
1300
|
+
```
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synapse_pay_rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Broderick
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -151,20 +151,28 @@ files:
|
|
151
151
|
- Rakefile
|
152
152
|
- bin/console
|
153
153
|
- lib/synapse_pay_rest.rb
|
154
|
+
- lib/synapse_pay_rest/api/client.rb
|
154
155
|
- lib/synapse_pay_rest/api/institutions.rb
|
155
156
|
- lib/synapse_pay_rest/api/nodes.rb
|
157
|
+
- lib/synapse_pay_rest/api/subnets.rb
|
156
158
|
- lib/synapse_pay_rest/api/subscriptions.rb
|
157
159
|
- lib/synapse_pay_rest/api/transactions.rb
|
158
160
|
- lib/synapse_pay_rest/api/users.rb
|
159
161
|
- lib/synapse_pay_rest/client.rb
|
160
162
|
- lib/synapse_pay_rest/error.rb
|
161
163
|
- lib/synapse_pay_rest/http_client.rb
|
164
|
+
- lib/synapse_pay_rest/models/client/issue_public_key.rb
|
162
165
|
- lib/synapse_pay_rest/models/institution/institution.rb
|
163
166
|
- lib/synapse_pay_rest/models/node/ach_us_node.rb
|
164
167
|
- lib/synapse_pay_rest/models/node/base_node.rb
|
168
|
+
- lib/synapse_pay_rest/models/node/check_us_node.rb
|
169
|
+
- lib/synapse_pay_rest/models/node/clearing_us_node.rb
|
165
170
|
- lib/synapse_pay_rest/models/node/deposit_us_node.rb
|
166
171
|
- lib/synapse_pay_rest/models/node/eft_ind_node.rb
|
167
172
|
- lib/synapse_pay_rest/models/node/eft_np_node.rb
|
173
|
+
- lib/synapse_pay_rest/models/node/ib_deposit_us_node.rb
|
174
|
+
- lib/synapse_pay_rest/models/node/ib_subaccount_us_node.rb
|
175
|
+
- lib/synapse_pay_rest/models/node/interchange_us_node.rb
|
168
176
|
- lib/synapse_pay_rest/models/node/iou_node.rb
|
169
177
|
- lib/synapse_pay_rest/models/node/node.rb
|
170
178
|
- lib/synapse_pay_rest/models/node/reserve_us_node.rb
|
@@ -176,6 +184,7 @@ files:
|
|
176
184
|
- lib/synapse_pay_rest/models/node/unverified_node.rb
|
177
185
|
- lib/synapse_pay_rest/models/node/wire_int_node.rb
|
178
186
|
- lib/synapse_pay_rest/models/node/wire_us_node.rb
|
187
|
+
- lib/synapse_pay_rest/models/subnet/subnet.rb
|
179
188
|
- lib/synapse_pay_rest/models/subscription/subscription.rb
|
180
189
|
- lib/synapse_pay_rest/models/transaction/transaction.rb
|
181
190
|
- lib/synapse_pay_rest/models/user/base_document.rb
|
@@ -208,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
217
|
version: '0'
|
209
218
|
requirements: []
|
210
219
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
220
|
+
rubygems_version: 2.5.1
|
212
221
|
signing_key:
|
213
222
|
specification_version: 4
|
214
223
|
summary: SynapsePay v3 Rest Native API Library
|