gocardless_pro 2.24.0 → 2.29.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 +4 -4
- data/.circleci/config.yml +23 -4
- data/lib/gocardless_pro/api_service.rb +4 -0
- data/lib/gocardless_pro/client.rb +46 -1
- data/lib/gocardless_pro/error/authentication_error.rb +4 -0
- data/lib/gocardless_pro/error/permission_error.rb +4 -0
- data/lib/gocardless_pro/error/rate_limit_error.rb +4 -0
- data/lib/gocardless_pro/middlewares/raise_gocardless_errors.rb +12 -1
- data/lib/gocardless_pro/resources/bank_authorisation.rb +81 -0
- data/lib/gocardless_pro/resources/billing_request.rb +108 -0
- data/lib/gocardless_pro/resources/billing_request_flow.rb +72 -0
- data/lib/gocardless_pro/resources/billing_request_template.rb +68 -0
- data/lib/gocardless_pro/resources/block.rb +66 -0
- data/lib/gocardless_pro/resources/creditor.rb +2 -3
- data/lib/gocardless_pro/resources/event.rb +20 -0
- data/lib/gocardless_pro/resources/institution.rb +47 -0
- data/lib/gocardless_pro/resources/payer_authorisation.rb +131 -0
- data/lib/gocardless_pro/resources/payout_item.rb +4 -0
- data/lib/gocardless_pro/resources/redirect_flow.rb +2 -0
- data/lib/gocardless_pro/resources/scenario_simulator.rb +42 -0
- data/lib/gocardless_pro/resources/webhook.rb +62 -0
- data/lib/gocardless_pro/services/bank_authorisations_service.rb +80 -0
- data/lib/gocardless_pro/services/billing_request_flows_service.rb +70 -0
- data/lib/gocardless_pro/services/billing_request_templates_service.rb +131 -0
- data/lib/gocardless_pro/services/billing_requests_service.rb +352 -0
- data/lib/gocardless_pro/services/blocks_service.rb +223 -0
- data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +1 -5
- data/lib/gocardless_pro/services/creditors_service.rb +1 -3
- data/lib/gocardless_pro/services/currency_exchange_rates_service.rb +1 -1
- data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +1 -5
- data/lib/gocardless_pro/services/customers_service.rb +1 -3
- data/lib/gocardless_pro/services/events_service.rb +1 -1
- data/lib/gocardless_pro/services/instalment_schedules_service.rb +1 -7
- data/lib/gocardless_pro/services/institutions_service.rb +56 -0
- data/lib/gocardless_pro/services/mandate_import_entries_service.rb +1 -1
- data/lib/gocardless_pro/services/mandate_imports_service.rb +0 -6
- data/lib/gocardless_pro/services/mandates_service.rb +1 -7
- data/lib/gocardless_pro/services/payer_authorisations_service.rb +202 -0
- data/lib/gocardless_pro/services/payments_service.rb +1 -7
- data/lib/gocardless_pro/services/payout_items_service.rb +1 -1
- data/lib/gocardless_pro/services/payouts_service.rb +1 -1
- data/lib/gocardless_pro/services/redirect_flows_service.rb +0 -4
- data/lib/gocardless_pro/services/refunds_service.rb +1 -3
- data/lib/gocardless_pro/services/scenario_simulators_service.rb +170 -0
- data/lib/gocardless_pro/services/subscriptions_service.rb +10 -13
- data/lib/gocardless_pro/services/tax_rates_service.rb +1 -1
- data/lib/gocardless_pro/services/webhooks_service.rb +111 -0
- data/lib/gocardless_pro/version.rb +1 -1
- data/lib/gocardless_pro.rb +30 -0
- data/spec/api_service_spec.rb +12 -1
- data/spec/middlewares/raise_gocardless_errors_spec.rb +30 -0
- data/spec/resources/bank_authorisation_spec.rb +259 -0
- data/spec/resources/billing_request_flow_spec.rb +219 -0
- data/spec/resources/billing_request_spec.rb +782 -0
- data/spec/resources/billing_request_template_spec.rb +502 -0
- data/spec/resources/block_spec.rb +560 -0
- data/spec/resources/institution_spec.rb +108 -0
- data/spec/resources/payer_authorisation_spec.rb +418 -0
- data/spec/resources/redirect_flow_spec.rb +9 -0
- data/spec/resources/scenario_simulator_spec.rb +63 -0
- data/spec/resources/webhook_spec.rb +323 -0
- data/spec/services/bank_authorisations_service_spec.rb +353 -0
- data/spec/services/billing_request_flows_service_spec.rb +253 -0
- data/spec/services/billing_request_templates_service_spec.rb +789 -0
- data/spec/services/billing_requests_service_spec.rb +1082 -0
- data/spec/services/blocks_service_spec.rb +823 -0
- data/spec/services/creditor_bank_accounts_service_spec.rb +0 -13
- data/spec/services/creditors_service_spec.rb +0 -13
- data/spec/services/customer_bank_accounts_service_spec.rb +0 -13
- data/spec/services/customers_service_spec.rb +0 -13
- data/spec/services/instalment_schedules_service_spec.rb +0 -26
- data/spec/services/institutions_service_spec.rb +232 -0
- data/spec/services/mandate_imports_service_spec.rb +0 -13
- data/spec/services/mandates_service_spec.rb +0 -13
- data/spec/services/payer_authorisations_service_spec.rb +559 -0
- data/spec/services/payments_service_spec.rb +0 -13
- data/spec/services/redirect_flows_service_spec.rb +9 -13
- data/spec/services/refunds_service_spec.rb +0 -13
- data/spec/services/scenario_simulators_service_spec.rb +74 -0
- data/spec/services/subscriptions_service_spec.rb +0 -13
- data/spec/services/webhooks_service_spec.rb +545 -0
- metadata +64 -7
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
# This client is automatically generated from a template and JSON schema definition.
|
5
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
# A module containing classes for each of the resources in the GC Api
|
12
|
+
module Resources
|
13
|
+
# Represents an instance of a institution resource returned from the API
|
14
|
+
|
15
|
+
# Institutions that are supported when creating [Bank
|
16
|
+
# Authorisations](#billing-requests-bank-authorisations).
|
17
|
+
class Institution
|
18
|
+
attr_reader :country_code
|
19
|
+
attr_reader :icon_url
|
20
|
+
attr_reader :id
|
21
|
+
attr_reader :logo_url
|
22
|
+
attr_reader :name
|
23
|
+
|
24
|
+
# Initialize a institution resource instance
|
25
|
+
# @param object [Hash] an object returned from the API
|
26
|
+
def initialize(object, response = nil)
|
27
|
+
@object = object
|
28
|
+
|
29
|
+
@country_code = object['country_code']
|
30
|
+
@icon_url = object['icon_url']
|
31
|
+
@id = object['id']
|
32
|
+
@logo_url = object['logo_url']
|
33
|
+
@name = object['name']
|
34
|
+
@response = response
|
35
|
+
end
|
36
|
+
|
37
|
+
def api_response
|
38
|
+
ApiResponse.new(@response)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Provides the institution resource as a hash of all its readable attributes
|
42
|
+
def to_h
|
43
|
+
@object
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
# This client is automatically generated from a template and JSON schema definition.
|
5
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
# A module containing classes for each of the resources in the GC Api
|
12
|
+
module Resources
|
13
|
+
# Represents an instance of a payer_authorisation resource returned from the API
|
14
|
+
|
15
|
+
# <p class="restricted-notice">
|
16
|
+
# Payer Authorisations is deprecated in favour of
|
17
|
+
# <a
|
18
|
+
# href="https://developer.gocardless.com/getting-started/billing-requests/overview/">
|
19
|
+
# Billing Requests</a>. Please consider using Billing Requests to build
|
20
|
+
# any
|
21
|
+
# future integrations.
|
22
|
+
# </p>
|
23
|
+
#
|
24
|
+
# Payer Authorisation resource acts as a wrapper for creating customer, bank
|
25
|
+
# account and mandate details in a single request.
|
26
|
+
# PayerAuthorisation API enables the integrators to build their own custom
|
27
|
+
# payment pages.
|
28
|
+
#
|
29
|
+
# The process to use the Payer Authorisation API is as follows:
|
30
|
+
#
|
31
|
+
# 1. Create a Payer Authorisation, either empty or with already available
|
32
|
+
# information
|
33
|
+
# 2. Update the authorisation with additional information or fix any
|
34
|
+
# mistakes
|
35
|
+
# 3. Submit the authorisation, after the payer has reviewed their
|
36
|
+
# information
|
37
|
+
# 4. [coming soon] Redirect the payer to the verification mechanisms from
|
38
|
+
# the response of the Submit request (this will be introduced as a
|
39
|
+
# non-breaking change)
|
40
|
+
# 5. Confirm the authorisation to indicate that the resources can be
|
41
|
+
# created
|
42
|
+
#
|
43
|
+
# After the Payer Authorisation is confirmed, resources will eventually be
|
44
|
+
# created as it's an asynchronous process.
|
45
|
+
#
|
46
|
+
# To retrieve the status and ID of the linked resources you can do one of
|
47
|
+
# the following:
|
48
|
+
# <ol>
|
49
|
+
# <li> Listen to <code> payer_authorisation_completed </code> <a
|
50
|
+
# href="#appendix-webhooks"> webhook</a> (recommended)</li>
|
51
|
+
# <li> Poll the GET <a
|
52
|
+
# href="#payer-authorisations-get-a-single-payer-authorisation">
|
53
|
+
# endpoint</a></li>
|
54
|
+
# <li> Poll the GET events API
|
55
|
+
# <code>https://api.gocardless.com/events?payer_authorisation={id}&action=completed</code>
|
56
|
+
# </li>
|
57
|
+
# </ol>
|
58
|
+
#
|
59
|
+
# <p class="notice">
|
60
|
+
# Note that the `create` and `update` endpoints behave differently than
|
61
|
+
# other existing `create` and `update` endpoints. The Payer Authorisation
|
62
|
+
# is still saved if incomplete data is provided.
|
63
|
+
# We return the list of incomplete data in the `incomplete_fields` along
|
64
|
+
# with the resources in the body of the response.
|
65
|
+
# The bank account details(account_number, bank_code & branch_code) must
|
66
|
+
# be sent together rather than splitting across different request for both
|
67
|
+
# `create` and `update` endpoints.
|
68
|
+
# <br><br>
|
69
|
+
# The API is designed to be flexible and allows you to collect information
|
70
|
+
# in multiple steps without storing any sensitive data in the browser or in
|
71
|
+
# your servers.
|
72
|
+
# </p>
|
73
|
+
class PayerAuthorisation
|
74
|
+
attr_reader :bank_account
|
75
|
+
attr_reader :created_at
|
76
|
+
attr_reader :customer
|
77
|
+
attr_reader :id
|
78
|
+
attr_reader :incomplete_fields
|
79
|
+
attr_reader :mandate
|
80
|
+
attr_reader :status
|
81
|
+
|
82
|
+
# Initialize a payer_authorisation resource instance
|
83
|
+
# @param object [Hash] an object returned from the API
|
84
|
+
def initialize(object, response = nil)
|
85
|
+
@object = object
|
86
|
+
|
87
|
+
@bank_account = object['bank_account']
|
88
|
+
@created_at = object['created_at']
|
89
|
+
@customer = object['customer']
|
90
|
+
@id = object['id']
|
91
|
+
@incomplete_fields = object['incomplete_fields']
|
92
|
+
@links = object['links']
|
93
|
+
@mandate = object['mandate']
|
94
|
+
@status = object['status']
|
95
|
+
@response = response
|
96
|
+
end
|
97
|
+
|
98
|
+
def api_response
|
99
|
+
ApiResponse.new(@response)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Return the links that the resource has
|
103
|
+
def links
|
104
|
+
@payer_authorisation_links ||= Links.new(@links)
|
105
|
+
end
|
106
|
+
|
107
|
+
# Provides the payer_authorisation resource as a hash of all its readable attributes
|
108
|
+
def to_h
|
109
|
+
@object
|
110
|
+
end
|
111
|
+
|
112
|
+
class Links
|
113
|
+
def initialize(links)
|
114
|
+
@links = links || {}
|
115
|
+
end
|
116
|
+
|
117
|
+
def bank_account
|
118
|
+
@links['bank_account']
|
119
|
+
end
|
120
|
+
|
121
|
+
def customer
|
122
|
+
@links['customer']
|
123
|
+
end
|
124
|
+
|
125
|
+
def mandate
|
126
|
+
@links['mandate']
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -49,6 +49,7 @@ module GoCardlessPro
|
|
49
49
|
attr_reader :created_at
|
50
50
|
attr_reader :description
|
51
51
|
attr_reader :id
|
52
|
+
attr_reader :mandate_reference
|
52
53
|
attr_reader :metadata
|
53
54
|
attr_reader :redirect_url
|
54
55
|
attr_reader :scheme
|
@@ -65,6 +66,7 @@ module GoCardlessPro
|
|
65
66
|
@description = object['description']
|
66
67
|
@id = object['id']
|
67
68
|
@links = object['links']
|
69
|
+
@mandate_reference = object['mandate_reference']
|
68
70
|
@metadata = object['metadata']
|
69
71
|
@redirect_url = object['redirect_url']
|
70
72
|
@scheme = object['scheme']
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
# This client is automatically generated from a template and JSON schema definition.
|
5
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
# A module containing classes for each of the resources in the GC Api
|
12
|
+
module Resources
|
13
|
+
# Represents an instance of a scenario_simulator resource returned from the API
|
14
|
+
|
15
|
+
# Scenario Simulators allow you to manually trigger and test certain paths
|
16
|
+
# that your
|
17
|
+
# integration will encounter in the real world. These endpoints are only
|
18
|
+
# active in the
|
19
|
+
# sandbox environment.
|
20
|
+
class ScenarioSimulator
|
21
|
+
attr_reader :id
|
22
|
+
|
23
|
+
# Initialize a scenario_simulator resource instance
|
24
|
+
# @param object [Hash] an object returned from the API
|
25
|
+
def initialize(object, response = nil)
|
26
|
+
@object = object
|
27
|
+
|
28
|
+
@id = object['id']
|
29
|
+
@response = response
|
30
|
+
end
|
31
|
+
|
32
|
+
def api_response
|
33
|
+
ApiResponse.new(@response)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Provides the scenario_simulator resource as a hash of all its readable attributes
|
37
|
+
def to_h
|
38
|
+
@object
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
#
|
4
|
+
# This client is automatically generated from a template and JSON schema definition.
|
5
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
6
|
+
#
|
7
|
+
|
8
|
+
require 'uri'
|
9
|
+
|
10
|
+
module GoCardlessPro
|
11
|
+
# A module containing classes for each of the resources in the GC Api
|
12
|
+
module Resources
|
13
|
+
# Represents an instance of a webhook resource returned from the API
|
14
|
+
|
15
|
+
# Basic description of a webhook
|
16
|
+
class Webhook
|
17
|
+
attr_reader :created_at
|
18
|
+
attr_reader :id
|
19
|
+
attr_reader :is_test
|
20
|
+
attr_reader :request_body
|
21
|
+
attr_reader :request_headers
|
22
|
+
attr_reader :response_body
|
23
|
+
attr_reader :response_body_truncated
|
24
|
+
attr_reader :response_code
|
25
|
+
attr_reader :response_headers
|
26
|
+
attr_reader :response_headers_content_truncated
|
27
|
+
attr_reader :response_headers_count_truncated
|
28
|
+
attr_reader :successful
|
29
|
+
attr_reader :url
|
30
|
+
|
31
|
+
# Initialize a webhook resource instance
|
32
|
+
# @param object [Hash] an object returned from the API
|
33
|
+
def initialize(object, response = nil)
|
34
|
+
@object = object
|
35
|
+
|
36
|
+
@created_at = object['created_at']
|
37
|
+
@id = object['id']
|
38
|
+
@is_test = object['is_test']
|
39
|
+
@request_body = object['request_body']
|
40
|
+
@request_headers = object['request_headers']
|
41
|
+
@response_body = object['response_body']
|
42
|
+
@response_body_truncated = object['response_body_truncated']
|
43
|
+
@response_code = object['response_code']
|
44
|
+
@response_headers = object['response_headers']
|
45
|
+
@response_headers_content_truncated = object['response_headers_content_truncated']
|
46
|
+
@response_headers_count_truncated = object['response_headers_count_truncated']
|
47
|
+
@successful = object['successful']
|
48
|
+
@url = object['url']
|
49
|
+
@response = response
|
50
|
+
end
|
51
|
+
|
52
|
+
def api_response
|
53
|
+
ApiResponse.new(@response)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Provides the webhook resource as a hash of all its readable attributes
|
57
|
+
def to_h
|
58
|
+
@object
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require_relative './base_service'
|
2
|
+
|
3
|
+
# encoding: utf-8
|
4
|
+
#
|
5
|
+
# This client is automatically generated from a template and JSON schema definition.
|
6
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
7
|
+
#
|
8
|
+
|
9
|
+
module GoCardlessPro
|
10
|
+
module Services
|
11
|
+
# Service for making requests to the BankAuthorisation endpoints
|
12
|
+
class BankAuthorisationsService < BaseService
|
13
|
+
# Fetches a bank authorisation
|
14
|
+
# Example URL: /bank_authorisations/:identity
|
15
|
+
#
|
16
|
+
# @param identity # Unique identifier, beginning with "BAU".
|
17
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
18
|
+
def get(identity, options = {})
|
19
|
+
path = sub_url('/bank_authorisations/:identity', 'identity' => identity)
|
20
|
+
|
21
|
+
options[:retry_failures] = true
|
22
|
+
|
23
|
+
response = make_request(:get, path, options)
|
24
|
+
|
25
|
+
return if response.body.nil?
|
26
|
+
|
27
|
+
Resources::BankAuthorisation.new(unenvelope_body(response.body), response)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Create a Bank Authorisation.
|
31
|
+
# Example URL: /bank_authorisations
|
32
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
33
|
+
def create(options = {})
|
34
|
+
path = '/bank_authorisations'
|
35
|
+
|
36
|
+
params = options.delete(:params) || {}
|
37
|
+
options[:params] = {}
|
38
|
+
options[:params][envelope_key] = params
|
39
|
+
|
40
|
+
options[:retry_failures] = true
|
41
|
+
|
42
|
+
begin
|
43
|
+
response = make_request(:post, path, options)
|
44
|
+
|
45
|
+
# Response doesn't raise any errors until #body is called
|
46
|
+
response.tap(&:body)
|
47
|
+
rescue InvalidStateError => e
|
48
|
+
if e.idempotent_creation_conflict?
|
49
|
+
case @api_service.on_idempotency_conflict
|
50
|
+
when :raise
|
51
|
+
raise IdempotencyConflict, e.error
|
52
|
+
when :fetch
|
53
|
+
return get(e.conflicting_resource_id)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
raise e
|
58
|
+
end
|
59
|
+
|
60
|
+
return if response.body.nil?
|
61
|
+
|
62
|
+
Resources::BankAuthorisation.new(unenvelope_body(response.body), response)
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
68
|
+
#
|
69
|
+
# @param body [Hash]
|
70
|
+
def unenvelope_body(body)
|
71
|
+
body[envelope_key] || body['data']
|
72
|
+
end
|
73
|
+
|
74
|
+
# return the key which API responses will envelope data under
|
75
|
+
def envelope_key
|
76
|
+
'bank_authorisations'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative './base_service'
|
2
|
+
|
3
|
+
# encoding: utf-8
|
4
|
+
#
|
5
|
+
# This client is automatically generated from a template and JSON schema definition.
|
6
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
7
|
+
#
|
8
|
+
|
9
|
+
module GoCardlessPro
|
10
|
+
module Services
|
11
|
+
# Service for making requests to the BillingRequestFlow endpoints
|
12
|
+
class BillingRequestFlowsService < BaseService
|
13
|
+
# Creates a new billing request flow.
|
14
|
+
# Example URL: /billing_request_flows
|
15
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
16
|
+
def create(options = {})
|
17
|
+
path = '/billing_request_flows'
|
18
|
+
|
19
|
+
params = options.delete(:params) || {}
|
20
|
+
options[:params] = {}
|
21
|
+
options[:params][envelope_key] = params
|
22
|
+
|
23
|
+
options[:retry_failures] = true
|
24
|
+
|
25
|
+
response = make_request(:post, path, options)
|
26
|
+
|
27
|
+
return if response.body.nil?
|
28
|
+
|
29
|
+
Resources::BillingRequestFlow.new(unenvelope_body(response.body), response)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns the flow having generated a fresh session token which can be used to
|
33
|
+
# power
|
34
|
+
# integrations that manipulate the flow.
|
35
|
+
# Example URL: /billing_request_flows/:identity/actions/initialise
|
36
|
+
#
|
37
|
+
# @param identity # Unique identifier, beginning with "BRQ".
|
38
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
39
|
+
def initialise(identity, options = {})
|
40
|
+
path = sub_url('/billing_request_flows/:identity/actions/initialise', 'identity' => identity)
|
41
|
+
|
42
|
+
params = options.delete(:params) || {}
|
43
|
+
options[:params] = {}
|
44
|
+
options[:params]['data'] = params
|
45
|
+
|
46
|
+
options[:retry_failures] = false
|
47
|
+
|
48
|
+
response = make_request(:post, path, options)
|
49
|
+
|
50
|
+
return if response.body.nil?
|
51
|
+
|
52
|
+
Resources::BillingRequestFlow.new(unenvelope_body(response.body), response)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
58
|
+
#
|
59
|
+
# @param body [Hash]
|
60
|
+
def unenvelope_body(body)
|
61
|
+
body[envelope_key] || body['data']
|
62
|
+
end
|
63
|
+
|
64
|
+
# return the key which API responses will envelope data under
|
65
|
+
def envelope_key
|
66
|
+
'billing_request_flows'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require_relative './base_service'
|
2
|
+
|
3
|
+
# encoding: utf-8
|
4
|
+
#
|
5
|
+
# This client is automatically generated from a template and JSON schema definition.
|
6
|
+
# See https://github.com/gocardless/gocardless-pro-ruby#contributing before editing.
|
7
|
+
#
|
8
|
+
|
9
|
+
module GoCardlessPro
|
10
|
+
module Services
|
11
|
+
# Service for making requests to the BillingRequestTemplate endpoints
|
12
|
+
class BillingRequestTemplatesService < BaseService
|
13
|
+
# Returns a [cursor-paginated](#api-usage-cursor-pagination) list of your
|
14
|
+
# Billing Request Templates.
|
15
|
+
# Example URL: /billing_request_templates
|
16
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
17
|
+
def list(options = {})
|
18
|
+
path = '/billing_request_templates'
|
19
|
+
|
20
|
+
options[:retry_failures] = true
|
21
|
+
|
22
|
+
response = make_request(:get, path, options)
|
23
|
+
|
24
|
+
ListResponse.new(
|
25
|
+
response: response,
|
26
|
+
unenveloped_body: unenvelope_body(response.body),
|
27
|
+
resource_class: Resources::BillingRequestTemplate
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Get a lazily enumerated list of all the items returned. This is similar to the `list` method but will paginate for you automatically.
|
32
|
+
#
|
33
|
+
# @param options [Hash] parameters as a hash. If the request is a GET, these will be converted to query parameters.
|
34
|
+
# Otherwise they will be the body of the request.
|
35
|
+
def all(options = {})
|
36
|
+
Paginator.new(
|
37
|
+
service: self,
|
38
|
+
options: options
|
39
|
+
).enumerator
|
40
|
+
end
|
41
|
+
|
42
|
+
# Fetches a Billing Request Template
|
43
|
+
# Example URL: /billing_request_templates/:identity
|
44
|
+
#
|
45
|
+
# @param identity # Unique identifier, beginning with "BRT".
|
46
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
47
|
+
def get(identity, options = {})
|
48
|
+
path = sub_url('/billing_request_templates/:identity', 'identity' => identity)
|
49
|
+
|
50
|
+
options[:retry_failures] = true
|
51
|
+
|
52
|
+
response = make_request(:get, path, options)
|
53
|
+
|
54
|
+
return if response.body.nil?
|
55
|
+
|
56
|
+
Resources::BillingRequestTemplate.new(unenvelope_body(response.body), response)
|
57
|
+
end
|
58
|
+
|
59
|
+
#
|
60
|
+
# Example URL: /billing_request_templates
|
61
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
62
|
+
def create(options = {})
|
63
|
+
path = '/billing_request_templates'
|
64
|
+
|
65
|
+
params = options.delete(:params) || {}
|
66
|
+
options[:params] = {}
|
67
|
+
options[:params][envelope_key] = params
|
68
|
+
|
69
|
+
options[:retry_failures] = true
|
70
|
+
|
71
|
+
begin
|
72
|
+
response = make_request(:post, path, options)
|
73
|
+
|
74
|
+
# Response doesn't raise any errors until #body is called
|
75
|
+
response.tap(&:body)
|
76
|
+
rescue InvalidStateError => e
|
77
|
+
if e.idempotent_creation_conflict?
|
78
|
+
case @api_service.on_idempotency_conflict
|
79
|
+
when :raise
|
80
|
+
raise IdempotencyConflict, e.error
|
81
|
+
when :fetch
|
82
|
+
return get(e.conflicting_resource_id)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
raise e
|
87
|
+
end
|
88
|
+
|
89
|
+
return if response.body.nil?
|
90
|
+
|
91
|
+
Resources::BillingRequestTemplate.new(unenvelope_body(response.body), response)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Updates a Billing Request Template, which will affect all future Billing
|
95
|
+
# Requests created by this template.
|
96
|
+
# Example URL: /billing_request_templates/:identity
|
97
|
+
#
|
98
|
+
# @param identity # Unique identifier, beginning with "BRQ".
|
99
|
+
# @param options [Hash] parameters as a hash, under a params key.
|
100
|
+
def update(identity, options = {})
|
101
|
+
path = sub_url('/billing_request_templates/:identity', 'identity' => identity)
|
102
|
+
|
103
|
+
params = options.delete(:params) || {}
|
104
|
+
options[:params] = {}
|
105
|
+
options[:params][envelope_key] = params
|
106
|
+
|
107
|
+
options[:retry_failures] = true
|
108
|
+
|
109
|
+
response = make_request(:put, path, options)
|
110
|
+
|
111
|
+
return if response.body.nil?
|
112
|
+
|
113
|
+
Resources::BillingRequestTemplate.new(unenvelope_body(response.body), response)
|
114
|
+
end
|
115
|
+
|
116
|
+
private
|
117
|
+
|
118
|
+
# Unenvelope the response of the body using the service's `envelope_key`
|
119
|
+
#
|
120
|
+
# @param body [Hash]
|
121
|
+
def unenvelope_body(body)
|
122
|
+
body[envelope_key] || body['data']
|
123
|
+
end
|
124
|
+
|
125
|
+
# return the key which API responses will envelope data under
|
126
|
+
def envelope_key
|
127
|
+
'billing_request_templates'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|