payabli 3.0.19 → 3.0.21

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.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +3 -3
  3. data/lib/payabli/applications/client.rb +735 -0
  4. data/lib/payabli/applications/types/create_application_request.rb +27 -0
  5. data/lib/payabli/applications/types/list_applications_applications_request.rb +13 -0
  6. data/lib/payabli/applications/types/submit_application_request.rb +13 -0
  7. data/lib/payabli/applications/types/update_application_request.rb +25 -0
  8. data/lib/payabli/applications/types/upload_application_document_request.rb +11 -0
  9. data/lib/payabli/applications/types/withdraw_application_request.rb +13 -0
  10. data/lib/payabli/boarding/client.rb +90 -0
  11. data/lib/payabli/boarding_templates/client.rb +196 -0
  12. data/lib/payabli/boarding_templates/types/list_templates_boarding_templates_request.rb +25 -0
  13. data/lib/payabli/businesses/client.rb +796 -0
  14. data/lib/payabli/businesses/types/create_business_address_request.rb +31 -0
  15. data/lib/payabli/businesses/types/deactivate_business_request.rb +13 -0
  16. data/lib/payabli/businesses/types/link_business_person_request.rb +35 -0
  17. data/lib/payabli/businesses/types/list_businesses_businesses_request.rb +25 -0
  18. data/lib/payabli/businesses/types/update_business_address_request.rb +33 -0
  19. data/lib/payabli/businesses/types/update_business_person_request.rb +35 -0
  20. data/lib/payabli/businesses/types/update_business_request.rb +63 -0
  21. data/lib/payabli/businesses/types/update_business_request_legal_structure.rb +21 -0
  22. data/lib/payabli/businesses/types/update_business_request_operating_seasons_item.rb +16 -0
  23. data/lib/payabli/client.rb +36 -1
  24. data/lib/payabli/export/client.rb +2 -3
  25. data/lib/payabli/organization/client.rb +5 -5
  26. data/lib/payabli/organizations/client.rb +214 -0
  27. data/lib/payabli/organizations/types/create_organization_organizations_request.rb +17 -0
  28. data/lib/payabli/organizations/types/list_organizations_organizations_request.rb +19 -0
  29. data/lib/payabli/organizations/types/update_organization_request.rb +27 -0
  30. data/lib/payabli/payment_methods/client.rb +254 -0
  31. data/lib/payabli/payment_methods/types/create_payment_methods_request.rb +11 -0
  32. data/lib/payabli/payment_methods/types/list_payment_methods_payment_methods_request.rb +25 -0
  33. data/lib/payabli/payment_methods/types/update_payment_method_request.rb +23 -0
  34. data/lib/payabli/paypoints/client.rb +204 -0
  35. data/lib/payabli/paypoints/types/create_paypoint_paypoints_request.rb +17 -0
  36. data/lib/payabli/paypoints/types/list_paypoints_paypoints_request.rb +19 -0
  37. data/lib/payabli/paypoints/types/update_paypoint_request.rb +29 -0
  38. data/lib/payabli/people/client.rb +428 -0
  39. data/lib/payabli/people/types/create_person_request.rb +47 -0
  40. data/lib/payabli/people/types/list_people_people_request.rb +23 -0
  41. data/lib/payabli/people/types/search_people_request.rb +15 -0
  42. data/lib/payabli/people/types/search_people_unmasked_request.rb +15 -0
  43. data/lib/payabli/people/types/update_person_request.rb +41 -0
  44. data/lib/payabli/templates/client.rb +25 -0
  45. data/lib/payabli/types/address_type.rb +16 -0
  46. data/lib/payabli/types/application.rb +46 -0
  47. data/lib/payabli/types/application_common.rb +42 -0
  48. data/lib/payabli/types/application_document.rb +26 -0
  49. data/lib/payabli/types/application_document_envelope.rb +16 -0
  50. data/lib/payabli/types/application_document_error.rb +16 -0
  51. data/lib/payabli/types/application_document_list_envelope.rb +16 -0
  52. data/lib/payabli/types/application_envelope.rb +16 -0
  53. data/lib/payabli/types/application_links.rb +12 -0
  54. data/lib/payabli/types/application_list_item.rb +52 -0
  55. data/lib/payabli/types/bank_account_services.rb +2 -2
  56. data/lib/payabli/types/boarding_warning.rb +12 -0
  57. data/lib/payabli/types/business_address.rb +28 -0
  58. data/lib/payabli/types/business_address_create.rb +28 -0
  59. data/lib/payabli/types/business_address_deleted_envelope.rb +16 -0
  60. data/lib/payabli/types/business_address_deleted_response.rb +16 -0
  61. data/lib/payabli/types/business_address_envelope.rb +16 -0
  62. data/lib/payabli/types/business_address_links.rb +12 -0
  63. data/lib/payabli/types/business_address_list_envelope.rb +16 -0
  64. data/lib/payabli/types/business_address_location.rb +15 -0
  65. data/lib/payabli/types/business_address_response.rb +32 -0
  66. data/lib/payabli/types/business_created_envelope.rb +18 -0
  67. data/lib/payabli/types/business_created_response.rb +16 -0
  68. data/lib/payabli/types/business_deactivated_envelope.rb +18 -0
  69. data/lib/payabli/types/business_deactivated_response.rb +18 -0
  70. data/lib/payabli/types/business_detail_envelope.rb +18 -0
  71. data/lib/payabli/types/business_detail_response.rb +76 -0
  72. data/lib/payabli/types/business_detail_response_legal_structure.rb +17 -0
  73. data/lib/payabli/types/business_detail_response_operating_seasons_item.rb +14 -0
  74. data/lib/payabli/types/business_links.rb +10 -0
  75. data/lib/payabli/types/business_payment_method.rb +36 -0
  76. data/lib/payabli/types/business_person_envelope.rb +16 -0
  77. data/lib/payabli/types/business_person_link.rb +42 -0
  78. data/lib/payabli/types/business_person_links.rb +14 -0
  79. data/lib/payabli/types/business_person_list_envelope.rb +16 -0
  80. data/lib/payabli/types/business_relationship_request.rb +35 -0
  81. data/lib/payabli/types/business_relationship_response.rb +36 -0
  82. data/lib/payabli/types/business_summary_response.rb +22 -0
  83. data/lib/payabli/types/business_updated_envelope.rb +18 -0
  84. data/lib/payabli/types/business_updated_response.rb +14 -0
  85. data/lib/payabli/types/case_management_money_in_service.rb +17 -0
  86. data/lib/payabli/types/case_management_money_out_service.rb +17 -0
  87. data/lib/payabli/types/certification_detail.rb +18 -0
  88. data/lib/payabli/types/create_business_request.rb +64 -0
  89. data/lib/payabli/types/create_business_request_legal_structure.rb +19 -0
  90. data/lib/payabli/types/create_business_request_operating_seasons_item.rb +14 -0
  91. data/lib/payabli/types/create_organization_all_fields.rb +30 -0
  92. data/lib/payabli/types/create_organization_with_business_reference.rb +29 -0
  93. data/lib/payabli/types/create_organization_with_inline_business.rb +29 -0
  94. data/lib/payabli/types/create_payment_method_request.rb +28 -0
  95. data/lib/payabli/types/create_payment_method_request_type.rb +11 -0
  96. data/lib/payabli/types/create_paypoint_all_fields.rb +32 -0
  97. data/lib/payabli/types/create_paypoint_with_business_reference.rb +31 -0
  98. data/lib/payabli/types/create_paypoint_with_inline_business.rb +31 -0
  99. data/lib/payabli/types/document_requirement.rb +31 -0
  100. data/lib/payabli/types/document_requirement_list_envelope.rb +16 -0
  101. data/lib/payabli/types/document_requirement_source.rb +12 -0
  102. data/lib/payabli/types/document_subject_type.rb +13 -0
  103. data/lib/payabli/types/enablement_envelope.rb +16 -0
  104. data/lib/payabli/types/enablement_result.rb +24 -0
  105. data/lib/payabli/types/enablement_service.rb +18 -0
  106. data/lib/payabli/types/get_basic_organization_response.rb +15 -0
  107. data/lib/payabli/types/identification_document_request.rb +18 -0
  108. data/lib/payabli/types/identification_document_response.rb +18 -0
  109. data/lib/payabli/types/instrument_response.rb +22 -0
  110. data/lib/payabli/types/list_applications_envelope.rb +16 -0
  111. data/lib/payabli/types/list_applications_response.rb +16 -0
  112. data/lib/payabli/types/list_businesses_envelope.rb +18 -0
  113. data/lib/payabli/types/list_businesses_response.rb +12 -0
  114. data/lib/payabli/types/list_payment_methods_envelope.rb +16 -0
  115. data/lib/payabli/types/list_payment_methods_response.rb +12 -0
  116. data/lib/payabli/types/list_paypoints_envelope.rb +16 -0
  117. data/lib/payabli/types/list_paypoints_response.rb +16 -0
  118. data/lib/payabli/types/list_people_envelope.rb +16 -0
  119. data/lib/payabli/types/list_people_response.rb +12 -0
  120. data/lib/payabli/types/list_templates_response.rb +12 -0
  121. data/lib/payabli/types/methods_list_out.rb +4 -0
  122. data/lib/payabli/types/organization_query_record.rb +23 -21
  123. data/lib/payabli/types/organization_writable_fields.rb +28 -0
  124. data/lib/payabli/types/pagination.rb +20 -0
  125. data/lib/payabli/types/payabli_credentials_pascal.rb +2 -2
  126. data/lib/payabli/types/payment_method_deactivated_envelope.rb +16 -0
  127. data/lib/payabli/types/payment_method_detail.rb +38 -0
  128. data/lib/payabli/types/payment_method_detail_envelope.rb +16 -0
  129. data/lib/payabli/types/payment_method_links.rb +12 -0
  130. data/lib/payabli/types/payment_method_owner_type.rb +12 -0
  131. data/lib/payabli/types/payment_method_result.rb +40 -0
  132. data/lib/payabli/types/payment_method_updated_envelope.rb +16 -0
  133. data/lib/payabli/types/payment_method_usage.rb +16 -0
  134. data/lib/payabli/types/payment_methods_created_envelope.rb +16 -0
  135. data/lib/payabli/types/payout_metrics.rb +16 -0
  136. data/lib/payabli/types/paypoint_created_envelope.rb +16 -0
  137. data/lib/payabli/types/paypoint_created_response.rb +22 -0
  138. data/lib/payabli/types/paypoint_detail_envelope.rb +16 -0
  139. data/lib/payabli/types/paypoint_detail_response.rb +40 -0
  140. data/lib/payabli/types/paypoint_links.rb +12 -0
  141. data/lib/payabli/types/paypoint_summary_response.rb +40 -0
  142. data/lib/payabli/types/paypoint_updated_envelope.rb +16 -0
  143. data/lib/payabli/types/paypoint_updated_response.rb +14 -0
  144. data/lib/payabli/types/paypoint_writable_fields.rb +28 -0
  145. data/lib/payabli/types/people_search_envelope.rb +16 -0
  146. data/lib/payabli/types/people_search_request.rb +12 -0
  147. data/lib/payabli/types/people_search_result_response.rb +38 -0
  148. data/lib/payabli/types/people_search_results_response.rb +14 -0
  149. data/lib/payabli/types/person_address_request.rb +22 -0
  150. data/lib/payabli/types/person_address_response.rb +22 -0
  151. data/lib/payabli/types/person_address_type.rb +17 -0
  152. data/lib/payabli/types/person_detail_envelope.rb +18 -0
  153. data/lib/payabli/types/person_detail_response.rb +56 -0
  154. data/lib/payabli/types/person_links.rb +12 -0
  155. data/lib/payabli/types/person_summary_response.rb +24 -0
  156. data/lib/payabli/types/person_type.rb +16 -0
  157. data/lib/payabli/types/person_updated_envelope.rb +16 -0
  158. data/lib/payabli/types/person_updated_response.rb +14 -0
  159. data/lib/payabli/types/processing_metrics.rb +30 -0
  160. data/lib/payabli/types/representative_input.rb +20 -0
  161. data/lib/payabli/types/representative_response.rb +20 -0
  162. data/lib/payabli/types/requested_services.rb +13 -0
  163. data/lib/payabli/types/signature_type.rb +13 -0
  164. data/lib/payabli/types/status_history_entry.rb +22 -0
  165. data/lib/payabli/types/status_history_envelope.rb +16 -0
  166. data/lib/payabli/types/status_history_result.rb +12 -0
  167. data/lib/payabli/types/submit_application_error.rb +16 -0
  168. data/lib/payabli/types/submit_signer.rb +32 -0
  169. data/lib/payabli/types/template.rb +38 -0
  170. data/lib/payabli/types/template_status.rb +12 -0
  171. data/lib/payabli/types/template_version.rb +79 -0
  172. data/lib/payabli/types/templates_summary.rb +14 -0
  173. data/lib/payabli/types/transition_result.rb +14 -0
  174. data/lib/payabli/types/transition_result_envelope.rb +16 -0
  175. data/lib/payabli/types/underwriting_mode.rb +13 -0
  176. data/lib/payabli/types/validation_missing_field.rb +14 -0
  177. data/lib/payabli/types/validation_result.rb +14 -0
  178. data/lib/payabli/types/validation_result_envelope.rb +16 -0
  179. data/lib/payabli/types/validation_section.rb +12 -0
  180. data/lib/payabli/types/validation_sections.rb +16 -0
  181. data/lib/payabli/version.rb +1 -1
  182. data/lib/payabli.rb +173 -4
  183. data/reference.md +5643 -221
  184. data/wiremock/wiremock-mappings.json +1727 -8
  185. metadata +171 -2
@@ -0,0 +1,796 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module Businesses
5
+ class Client
6
+ # @param client [Payabli::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # Lists businesses with optional filtering and pagination.
14
+ #
15
+ # @param request_options [Hash]
16
+ # @param params [Hash]
17
+ # @option request_options [String] :base_url
18
+ # @option request_options [Hash{String => Object}] :additional_headers
19
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
20
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
21
+ # @option request_options [Integer] :timeout_in_seconds
22
+ # @option params [String, nil] :status
23
+ # @option params [String, nil] :name
24
+ # @option params [String, nil] :merchant_cat_code
25
+ # @option params [String, nil] :legal_structure
26
+ # @option params [Integer, nil] :limit
27
+ # @option params [Integer, nil] :page
28
+ # @option params [String, nil] :sort_by
29
+ # @option params [String, nil] :sort_order
30
+ #
31
+ # @example
32
+ # client.businesses.list_businesses(
33
+ # limit: 1,
34
+ # page: 1
35
+ # )
36
+ #
37
+ # @return [Payabli::Types::ListBusinessesEnvelope]
38
+ def list_businesses(request_options: {}, **params)
39
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
40
+ query_params = {}
41
+ query_params["status"] = params[:status] if params.key?(:status)
42
+ query_params["name"] = params[:name] if params.key?(:name)
43
+ query_params["merchantCatCode"] = params[:merchant_cat_code] if params.key?(:merchant_cat_code)
44
+ query_params["legalStructure"] = params[:legal_structure] if params.key?(:legal_structure)
45
+ query_params["limit"] = params[:limit] if params.key?(:limit)
46
+ query_params["page"] = params[:page] if params.key?(:page)
47
+ query_params["sortBy"] = params[:sort_by] if params.key?(:sort_by)
48
+ query_params["sortOrder"] = params[:sort_order] if params.key?(:sort_order)
49
+
50
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
51
+ request = Payabli::Internal::JSON::Request.new(
52
+ base_url: request_options[:base_url],
53
+ method: "GET",
54
+ path: "v2/businesses",
55
+ headers: headers,
56
+ query: query_params,
57
+ request_options: request_options
58
+ )
59
+ begin
60
+ response = @client.send(request)
61
+ rescue Net::HTTPRequestTimeout
62
+ raise Payabli::Errors::TimeoutError
63
+ end
64
+ code = response.code.to_i
65
+ if code.between?(200, 299)
66
+ Payabli::Types::ListBusinessesEnvelope.load(response.body)
67
+ else
68
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
69
+ raise error_class.new(response.body, code: code)
70
+ end
71
+ end
72
+
73
+ # Creates a business, the legal entity behind a paypoint. New businesses
74
+ # start in `Draft`. Set `parentReference` to the organization
75
+ # the business belongs to, or omit it to use the organization your
76
+ # credential belongs to.
77
+ #
78
+ # @param request_options [Hash]
79
+ # @param params [Payabli::Types::CreateBusinessRequest]
80
+ # @option request_options [String] :base_url
81
+ # @option request_options [Hash{String => Object}] :additional_headers
82
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
83
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
84
+ # @option request_options [Integer] :timeout_in_seconds
85
+ #
86
+ # @example
87
+ # client.businesses.create_business(
88
+ # external_id: "rg-001",
89
+ # legal_name: "Rose Gardens LLC",
90
+ # legal_structure: "llc",
91
+ # website: "https://example.com",
92
+ # merchant_cat_code: "5814",
93
+ # phone: ["3055551212"],
94
+ # emails: ["ops@example.com"],
95
+ # payment_methods: [{
96
+ # type: "bank_account",
97
+ # name: "Operating account",
98
+ # financial_institution: "Bank of Example",
99
+ # owner_type: "business",
100
+ # account_type: "checking",
101
+ # account_number: "123456789",
102
+ # routing_number: "021000021",
103
+ # usage: %w[deposits billing],
104
+ # is_default: true
105
+ # }, {
106
+ # type: "bank_account",
107
+ # name: "Payout account",
108
+ # financial_institution: "Bank of Example",
109
+ # owner_type: "business",
110
+ # account_type: "checking",
111
+ # account_number: "987654321",
112
+ # routing_number: "021000021",
113
+ # usage: ["payOutFunding"],
114
+ # is_default: false
115
+ # }],
116
+ # tax_reference: "477498993",
117
+ # parent_reference: "8cfec329267"
118
+ # )
119
+ #
120
+ # @return [Payabli::Types::BusinessCreatedEnvelope]
121
+ def create_business(request_options: {}, **params)
122
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
123
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
124
+ request = Payabli::Internal::JSON::Request.new(
125
+ base_url: request_options[:base_url],
126
+ method: "POST",
127
+ path: "v2/businesses",
128
+ headers: headers,
129
+ body: Payabli::Types::CreateBusinessRequest.new(params).to_h,
130
+ request_options: request_options
131
+ )
132
+ begin
133
+ response = @client.send(request)
134
+ rescue Net::HTTPRequestTimeout
135
+ raise Payabli::Errors::TimeoutError
136
+ end
137
+ code = response.code.to_i
138
+ if code.between?(200, 299)
139
+ Payabli::Types::BusinessCreatedEnvelope.load(response.body)
140
+ else
141
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
142
+ raise error_class.new(response.body, code: code)
143
+ end
144
+ end
145
+
146
+ # Retrieves a business by reference. Sensitive fields such as `taxReference` are masked.
147
+ #
148
+ # @param request_options [Hash]
149
+ # @param params [Hash]
150
+ # @option request_options [String] :base_url
151
+ # @option request_options [Hash{String => Object}] :additional_headers
152
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
153
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
154
+ # @option request_options [Integer] :timeout_in_seconds
155
+ # @option params [String] :business_reference
156
+ #
157
+ # @example
158
+ # client.businesses.get_business(business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55")
159
+ #
160
+ # @return [Payabli::Types::BusinessDetailEnvelope]
161
+ def get_business(request_options: {}, **params)
162
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
163
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
164
+ request = Payabli::Internal::JSON::Request.new(
165
+ base_url: request_options[:base_url],
166
+ method: "GET",
167
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}",
168
+ headers: headers,
169
+ request_options: request_options
170
+ )
171
+ begin
172
+ response = @client.send(request)
173
+ rescue Net::HTTPRequestTimeout
174
+ raise Payabli::Errors::TimeoutError
175
+ end
176
+ code = response.code.to_i
177
+ if code.between?(200, 299)
178
+ Payabli::Types::BusinessDetailEnvelope.load(response.body)
179
+ else
180
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
181
+ raise error_class.new(response.body, code: code)
182
+ end
183
+ end
184
+
185
+ # Deactivates a business. This is a soft delete: the business moves to
186
+ # `Deactivated` and the record is kept.
187
+ #
188
+ # @param request_options [Hash]
189
+ # @param params [Payabli::Businesses::Types::DeactivateBusinessRequest]
190
+ # @option request_options [String] :base_url
191
+ # @option request_options [Hash{String => Object}] :additional_headers
192
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
193
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
194
+ # @option request_options [Integer] :timeout_in_seconds
195
+ # @option params [String] :business_reference
196
+ #
197
+ # @example
198
+ # client.businesses.deactivate_business(
199
+ # business_reference: "019fed33-615d-77b6-afaa-46e7ac9bf36e",
200
+ # reason: "Duplicate record"
201
+ # )
202
+ #
203
+ # @return [Payabli::Types::BusinessDeactivatedEnvelope]
204
+ def deactivate_business(request_options: {}, **params)
205
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
206
+ request_data = Payabli::Businesses::Types::DeactivateBusinessRequest.new(params).to_h
207
+ non_body_param_names = %w[businessReference]
208
+ body = request_data.except(*non_body_param_names)
209
+
210
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
211
+ request = Payabli::Internal::JSON::Request.new(
212
+ base_url: request_options[:base_url],
213
+ method: "DELETE",
214
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}",
215
+ headers: headers,
216
+ body: body,
217
+ request_options: request_options
218
+ )
219
+ begin
220
+ response = @client.send(request)
221
+ rescue Net::HTTPRequestTimeout
222
+ raise Payabli::Errors::TimeoutError
223
+ end
224
+ code = response.code.to_i
225
+ if code.between?(200, 299)
226
+ Payabli::Types::BusinessDeactivatedEnvelope.load(response.body)
227
+ else
228
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
229
+ raise error_class.new(response.body, code: code)
230
+ end
231
+ end
232
+
233
+ # Applies a partial update to a business. Send only the fields you want to change.
234
+ #
235
+ # @param request_options [Hash]
236
+ # @param params [Payabli::Businesses::Types::UpdateBusinessRequest]
237
+ # @option request_options [String] :base_url
238
+ # @option request_options [Hash{String => Object}] :additional_headers
239
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
240
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
241
+ # @option request_options [Integer] :timeout_in_seconds
242
+ # @option params [String] :business_reference
243
+ #
244
+ # @example
245
+ # client.businesses.update_business(
246
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
247
+ # website: "https://example.org"
248
+ # )
249
+ #
250
+ # @return [Payabli::Types::BusinessUpdatedEnvelope]
251
+ def update_business(request_options: {}, **params)
252
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
253
+ request_data = Payabli::Businesses::Types::UpdateBusinessRequest.new(params).to_h
254
+ non_body_param_names = %w[businessReference]
255
+ body = request_data.except(*non_body_param_names)
256
+
257
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
258
+ request = Payabli::Internal::JSON::Request.new(
259
+ base_url: request_options[:base_url],
260
+ method: "PATCH",
261
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}",
262
+ headers: headers,
263
+ body: body,
264
+ request_options: request_options
265
+ )
266
+ begin
267
+ response = @client.send(request)
268
+ rescue Net::HTTPRequestTimeout
269
+ raise Payabli::Errors::TimeoutError
270
+ end
271
+ code = response.code.to_i
272
+ if code.between?(200, 299)
273
+ Payabli::Types::BusinessUpdatedEnvelope.load(response.body)
274
+ else
275
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
276
+ raise error_class.new(response.body, code: code)
277
+ end
278
+ end
279
+
280
+ # Retrieves a business by reference with sensitive fields unmasked.
281
+ #
282
+ # @param request_options [Hash]
283
+ # @param params [Hash]
284
+ # @option request_options [String] :base_url
285
+ # @option request_options [Hash{String => Object}] :additional_headers
286
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
287
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
288
+ # @option request_options [Integer] :timeout_in_seconds
289
+ # @option params [String] :business_reference
290
+ #
291
+ # @example
292
+ # client.businesses.get_business_unmasked(business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55")
293
+ #
294
+ # @return [Payabli::Types::BusinessDetailEnvelope]
295
+ def get_business_unmasked(request_options: {}, **params)
296
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
297
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
298
+ request = Payabli::Internal::JSON::Request.new(
299
+ base_url: request_options[:base_url],
300
+ method: "GET",
301
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/unmasked",
302
+ headers: headers,
303
+ request_options: request_options
304
+ )
305
+ begin
306
+ response = @client.send(request)
307
+ rescue Net::HTTPRequestTimeout
308
+ raise Payabli::Errors::TimeoutError
309
+ end
310
+ code = response.code.to_i
311
+ if code.between?(200, 299)
312
+ Payabli::Types::BusinessDetailEnvelope.load(response.body)
313
+ else
314
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
315
+ raise error_class.new(response.body, code: code)
316
+ end
317
+ end
318
+
319
+ # Lists the addresses on a business. Each address is identified by its `businessAddressReference`.
320
+ #
321
+ # @param request_options [Hash]
322
+ # @param params [Hash]
323
+ # @option request_options [String] :base_url
324
+ # @option request_options [Hash{String => Object}] :additional_headers
325
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
326
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
327
+ # @option request_options [Integer] :timeout_in_seconds
328
+ # @option params [String] :business_reference
329
+ #
330
+ # @example
331
+ # client.businesses.list_business_addresses(business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55")
332
+ #
333
+ # @return [Payabli::Types::BusinessAddressListEnvelope]
334
+ def list_business_addresses(request_options: {}, **params)
335
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
336
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
337
+ request = Payabli::Internal::JSON::Request.new(
338
+ base_url: request_options[:base_url],
339
+ method: "GET",
340
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/addresses",
341
+ headers: headers,
342
+ request_options: request_options
343
+ )
344
+ begin
345
+ response = @client.send(request)
346
+ rescue Net::HTTPRequestTimeout
347
+ raise Payabli::Errors::TimeoutError
348
+ end
349
+ code = response.code.to_i
350
+ if code.between?(200, 299)
351
+ Payabli::Types::BusinessAddressListEnvelope.load(response.body)
352
+ else
353
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
354
+ raise error_class.new(response.body, code: code)
355
+ end
356
+ end
357
+
358
+ # Adds an address to a business. Returns the new address and its `businessAddressReference`.
359
+ #
360
+ # @param request_options [Hash]
361
+ # @param params [Payabli::Businesses::Types::CreateBusinessAddressRequest]
362
+ # @option request_options [String] :base_url
363
+ # @option request_options [Hash{String => Object}] :additional_headers
364
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
365
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
366
+ # @option request_options [Integer] :timeout_in_seconds
367
+ # @option params [String] :business_reference
368
+ #
369
+ # @example
370
+ # client.businesses.create_business_address(
371
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
372
+ # type: "mailing",
373
+ # location: "warehouse",
374
+ # address_line_1: "202 Warehouse Ln",
375
+ # city_locality: "Austin",
376
+ # state_province: "TX",
377
+ # postal_code: "73302",
378
+ # country: "US"
379
+ # )
380
+ #
381
+ # @return [Payabli::Types::BusinessAddressEnvelope]
382
+ def create_business_address(request_options: {}, **params)
383
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
384
+ request_data = Payabli::Businesses::Types::CreateBusinessAddressRequest.new(params).to_h
385
+ non_body_param_names = %w[businessReference]
386
+ body = request_data.except(*non_body_param_names)
387
+
388
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
389
+ request = Payabli::Internal::JSON::Request.new(
390
+ base_url: request_options[:base_url],
391
+ method: "POST",
392
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/addresses",
393
+ headers: headers,
394
+ body: body,
395
+ request_options: request_options
396
+ )
397
+ begin
398
+ response = @client.send(request)
399
+ rescue Net::HTTPRequestTimeout
400
+ raise Payabli::Errors::TimeoutError
401
+ end
402
+ code = response.code.to_i
403
+ if code.between?(200, 299)
404
+ Payabli::Types::BusinessAddressEnvelope.load(response.body)
405
+ else
406
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
407
+ raise error_class.new(response.body, code: code)
408
+ end
409
+ end
410
+
411
+ # Retrieves a single business address by its `businessAddressReference`.
412
+ #
413
+ # @param request_options [Hash]
414
+ # @param params [Hash]
415
+ # @option request_options [String] :base_url
416
+ # @option request_options [Hash{String => Object}] :additional_headers
417
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
418
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
419
+ # @option request_options [Integer] :timeout_in_seconds
420
+ # @option params [String] :business_reference
421
+ # @option params [String] :business_address_reference
422
+ #
423
+ # @example
424
+ # client.businesses.get_business_address(
425
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
426
+ # business_address_reference: "019fed1a-84a6-7043-a6c0-e8aa2d4bec36"
427
+ # )
428
+ #
429
+ # @return [Payabli::Types::BusinessAddressEnvelope]
430
+ def get_business_address(request_options: {}, **params)
431
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
432
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
433
+ request = Payabli::Internal::JSON::Request.new(
434
+ base_url: request_options[:base_url],
435
+ method: "GET",
436
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/addresses/#{URI.encode_uri_component(params[:business_address_reference].to_s)}",
437
+ headers: headers,
438
+ request_options: request_options
439
+ )
440
+ begin
441
+ response = @client.send(request)
442
+ rescue Net::HTTPRequestTimeout
443
+ raise Payabli::Errors::TimeoutError
444
+ end
445
+ code = response.code.to_i
446
+ if code.between?(200, 299)
447
+ Payabli::Types::BusinessAddressEnvelope.load(response.body)
448
+ else
449
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
450
+ raise error_class.new(response.body, code: code)
451
+ end
452
+ end
453
+
454
+ # Removes an address from a business.
455
+ #
456
+ # @param request_options [Hash]
457
+ # @param params [Hash]
458
+ # @option request_options [String] :base_url
459
+ # @option request_options [Hash{String => Object}] :additional_headers
460
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
461
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
462
+ # @option request_options [Integer] :timeout_in_seconds
463
+ # @option params [String] :business_reference
464
+ # @option params [String] :business_address_reference
465
+ #
466
+ # @example
467
+ # client.businesses.delete_business_address(
468
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
469
+ # business_address_reference: "019fed1a-67d6-768a-b4cc-29d4299e21d9"
470
+ # )
471
+ #
472
+ # @return [Payabli::Types::BusinessAddressDeletedEnvelope]
473
+ def delete_business_address(request_options: {}, **params)
474
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
475
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
476
+ request = Payabli::Internal::JSON::Request.new(
477
+ base_url: request_options[:base_url],
478
+ method: "DELETE",
479
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/addresses/#{URI.encode_uri_component(params[:business_address_reference].to_s)}",
480
+ headers: headers,
481
+ request_options: request_options
482
+ )
483
+ begin
484
+ response = @client.send(request)
485
+ rescue Net::HTTPRequestTimeout
486
+ raise Payabli::Errors::TimeoutError
487
+ end
488
+ code = response.code.to_i
489
+ if code.between?(200, 299)
490
+ Payabli::Types::BusinessAddressDeletedEnvelope.load(response.body)
491
+ else
492
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
493
+ raise error_class.new(response.body, code: code)
494
+ end
495
+ end
496
+
497
+ # Applies a partial update to a business address. Send only the fields you want to change; omitted fields are
498
+ # kept.
499
+ #
500
+ # @param request_options [Hash]
501
+ # @param params [Payabli::Businesses::Types::UpdateBusinessAddressRequest]
502
+ # @option request_options [String] :base_url
503
+ # @option request_options [Hash{String => Object}] :additional_headers
504
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
505
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
506
+ # @option request_options [Integer] :timeout_in_seconds
507
+ # @option params [String] :business_reference
508
+ # @option params [String] :business_address_reference
509
+ #
510
+ # @example
511
+ # client.businesses.update_business_address(
512
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
513
+ # business_address_reference: "019fed1a-67d6-768a-b4cc-29d4299e21d9",
514
+ # type: "billing"
515
+ # )
516
+ #
517
+ # @return [Payabli::Types::BusinessAddressEnvelope]
518
+ def update_business_address(request_options: {}, **params)
519
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
520
+ request_data = Payabli::Businesses::Types::UpdateBusinessAddressRequest.new(params).to_h
521
+ non_body_param_names = %w[businessReference businessAddressReference]
522
+ body = request_data.except(*non_body_param_names)
523
+
524
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
525
+ request = Payabli::Internal::JSON::Request.new(
526
+ base_url: request_options[:base_url],
527
+ method: "PATCH",
528
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/addresses/#{URI.encode_uri_component(params[:business_address_reference].to_s)}",
529
+ headers: headers,
530
+ body: body,
531
+ request_options: request_options
532
+ )
533
+ begin
534
+ response = @client.send(request)
535
+ rescue Net::HTTPRequestTimeout
536
+ raise Payabli::Errors::TimeoutError
537
+ end
538
+ code = response.code.to_i
539
+ if code.between?(200, 299)
540
+ Payabli::Types::BusinessAddressEnvelope.load(response.body)
541
+ else
542
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
543
+ raise error_class.new(response.body, code: code)
544
+ end
545
+ end
546
+
547
+ # Lists the people linked to a business, each with the relationship's role, ownership, and relationship-scoped
548
+ # contact details.
549
+ #
550
+ # @param request_options [Hash]
551
+ # @param params [Hash]
552
+ # @option request_options [String] :base_url
553
+ # @option request_options [Hash{String => Object}] :additional_headers
554
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
555
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
556
+ # @option request_options [Integer] :timeout_in_seconds
557
+ # @option params [String] :business_reference
558
+ #
559
+ # @example
560
+ # client.businesses.list_business_people(business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55")
561
+ #
562
+ # @return [Payabli::Types::BusinessPersonListEnvelope]
563
+ def list_business_people(request_options: {}, **params)
564
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
565
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
566
+ request = Payabli::Internal::JSON::Request.new(
567
+ base_url: request_options[:base_url],
568
+ method: "GET",
569
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/people",
570
+ headers: headers,
571
+ request_options: request_options
572
+ )
573
+ begin
574
+ response = @client.send(request)
575
+ rescue Net::HTTPRequestTimeout
576
+ raise Payabli::Errors::TimeoutError
577
+ end
578
+ code = response.code.to_i
579
+ if code.between?(200, 299)
580
+ Payabli::Types::BusinessPersonListEnvelope.load(response.body)
581
+ else
582
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
583
+ raise error_class.new(response.body, code: code)
584
+ end
585
+ end
586
+
587
+ # Links an existing person to a business, setting the relationship's role, ownership, primary-controller flag,
588
+ # contact fields, and addresses.
589
+ #
590
+ # @param request_options [Hash]
591
+ # @param params [Payabli::Businesses::Types::LinkBusinessPersonRequest]
592
+ # @option request_options [String] :base_url
593
+ # @option request_options [Hash{String => Object}] :additional_headers
594
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
595
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
596
+ # @option request_options [Integer] :timeout_in_seconds
597
+ # @option params [String] :business_reference
598
+ #
599
+ # @example
600
+ # client.businesses.link_business_person(
601
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
602
+ # person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d",
603
+ # person_type: "Owner",
604
+ # ownership_percentage: 100,
605
+ # is_primary_controller: true,
606
+ # is_signer: true,
607
+ # title: "CEO",
608
+ # primary_email: "contact@example.com",
609
+ # secondary_email: "contact.alt@example.net",
610
+ # primary_phone_number: "3055551212",
611
+ # secondary_phone_number: "3055559876",
612
+ # billing_address: {
613
+ # address_line_1: "123 Main Street",
614
+ # city_locality: "Miami",
615
+ # state_province: "FL",
616
+ # postal_code: "33101",
617
+ # country: "US",
618
+ # type: "billing"
619
+ # },
620
+ # mailing_address: {
621
+ # address_line_1: "456 Oak Avenue",
622
+ # city_locality: "Miami",
623
+ # state_province: "FL",
624
+ # postal_code: "33102",
625
+ # country: "US",
626
+ # type: "mailing"
627
+ # }
628
+ # )
629
+ #
630
+ # @return [Payabli::Types::BusinessPersonEnvelope]
631
+ def link_business_person(request_options: {}, **params)
632
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
633
+ request_data = Payabli::Businesses::Types::LinkBusinessPersonRequest.new(params).to_h
634
+ non_body_param_names = %w[businessReference]
635
+ body = request_data.except(*non_body_param_names)
636
+
637
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
638
+ request = Payabli::Internal::JSON::Request.new(
639
+ base_url: request_options[:base_url],
640
+ method: "POST",
641
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/people",
642
+ headers: headers,
643
+ body: body,
644
+ request_options: request_options
645
+ )
646
+ begin
647
+ response = @client.send(request)
648
+ rescue Net::HTTPRequestTimeout
649
+ raise Payabli::Errors::TimeoutError
650
+ end
651
+ code = response.code.to_i
652
+ if code.between?(200, 299)
653
+ Payabli::Types::BusinessPersonEnvelope.load(response.body)
654
+ else
655
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
656
+ raise error_class.new(response.body, code: code)
657
+ end
658
+ end
659
+
660
+ # Retrieves a single business-person link by the person's reference.
661
+ #
662
+ # @param request_options [Hash]
663
+ # @param params [Hash]
664
+ # @option request_options [String] :base_url
665
+ # @option request_options [Hash{String => Object}] :additional_headers
666
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
667
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
668
+ # @option request_options [Integer] :timeout_in_seconds
669
+ # @option params [String] :business_reference
670
+ # @option params [String] :person_reference
671
+ #
672
+ # @example
673
+ # client.businesses.get_business_person(
674
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
675
+ # person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d"
676
+ # )
677
+ #
678
+ # @return [Payabli::Types::BusinessPersonEnvelope]
679
+ def get_business_person(request_options: {}, **params)
680
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
681
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
682
+ request = Payabli::Internal::JSON::Request.new(
683
+ base_url: request_options[:base_url],
684
+ method: "GET",
685
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/people/#{URI.encode_uri_component(params[:person_reference].to_s)}",
686
+ headers: headers,
687
+ request_options: request_options
688
+ )
689
+ begin
690
+ response = @client.send(request)
691
+ rescue Net::HTTPRequestTimeout
692
+ raise Payabli::Errors::TimeoutError
693
+ end
694
+ code = response.code.to_i
695
+ if code.between?(200, 299)
696
+ Payabli::Types::BusinessPersonEnvelope.load(response.body)
697
+ else
698
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
699
+ raise error_class.new(response.body, code: code)
700
+ end
701
+ end
702
+
703
+ # Removes the link between a person and a business. The person record itself isn't deleted.
704
+ #
705
+ # @param request_options [Hash]
706
+ # @param params [Hash]
707
+ # @option request_options [String] :base_url
708
+ # @option request_options [Hash{String => Object}] :additional_headers
709
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
710
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
711
+ # @option request_options [Integer] :timeout_in_seconds
712
+ # @option params [String] :business_reference
713
+ # @option params [String] :person_reference
714
+ #
715
+ # @example
716
+ # client.businesses.unlink_business_person(
717
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
718
+ # person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d"
719
+ # )
720
+ #
721
+ # @return [untyped]
722
+ def unlink_business_person(request_options: {}, **params)
723
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
724
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
725
+ request = Payabli::Internal::JSON::Request.new(
726
+ base_url: request_options[:base_url],
727
+ method: "DELETE",
728
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/people/#{URI.encode_uri_component(params[:person_reference].to_s)}",
729
+ headers: headers,
730
+ request_options: request_options
731
+ )
732
+ begin
733
+ response = @client.send(request)
734
+ rescue Net::HTTPRequestTimeout
735
+ raise Payabli::Errors::TimeoutError
736
+ end
737
+ code = response.code.to_i
738
+ return if code.between?(200, 299)
739
+
740
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
741
+ raise error_class.new(response.body, code: code)
742
+ end
743
+
744
+ # Applies a partial update to a business-person link. Send only the fields you want to change; omitted fields are
745
+ # kept.
746
+ #
747
+ # @param request_options [Hash]
748
+ # @param params [Payabli::Businesses::Types::UpdateBusinessPersonRequest]
749
+ # @option request_options [String] :base_url
750
+ # @option request_options [Hash{String => Object}] :additional_headers
751
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
752
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
753
+ # @option request_options [Integer] :timeout_in_seconds
754
+ # @option params [String] :business_reference
755
+ # @option params [String] :person_reference
756
+ #
757
+ # @example
758
+ # client.businesses.update_business_person(
759
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
760
+ # person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d",
761
+ # is_primary_controller: true,
762
+ # primary_email: "updated.contact@example.com"
763
+ # )
764
+ #
765
+ # @return [Payabli::Types::BusinessPersonEnvelope]
766
+ def update_business_person(request_options: {}, **params)
767
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
768
+ request_data = Payabli::Businesses::Types::UpdateBusinessPersonRequest.new(params).to_h
769
+ non_body_param_names = %w[businessReference personReference]
770
+ body = request_data.except(*non_body_param_names)
771
+
772
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
773
+ request = Payabli::Internal::JSON::Request.new(
774
+ base_url: request_options[:base_url],
775
+ method: "PATCH",
776
+ path: "v2/businesses/#{URI.encode_uri_component(params[:business_reference].to_s)}/people/#{URI.encode_uri_component(params[:person_reference].to_s)}",
777
+ headers: headers,
778
+ body: body,
779
+ request_options: request_options
780
+ )
781
+ begin
782
+ response = @client.send(request)
783
+ rescue Net::HTTPRequestTimeout
784
+ raise Payabli::Errors::TimeoutError
785
+ end
786
+ code = response.code.to_i
787
+ if code.between?(200, 299)
788
+ Payabli::Types::BusinessPersonEnvelope.load(response.body)
789
+ else
790
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
791
+ raise error_class.new(response.body, code: code)
792
+ end
793
+ end
794
+ end
795
+ end
796
+ end