payabli 3.0.6 → 3.0.8

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +7 -6
  3. data/lib/payabli/bill/client.rb +8 -2
  4. data/lib/payabli/billing/client.rb +129 -0
  5. data/lib/payabli/billing/types/get_profile_billing_request_entity_type.rb +16 -0
  6. data/lib/payabli/billing/types/get_profile_billing_request_service_group.rb +14 -0
  7. data/lib/payabli/billing/types/list_billing_profiles_request.rb +23 -0
  8. data/lib/payabli/boarding/client.rb +4 -1
  9. data/lib/payabli/case_management/client.rb +662 -0
  10. data/lib/payabli/case_management/types/assign_case_request.rb +15 -0
  11. data/lib/payabli/case_management/types/create_bank_account_change_case_request.rb +31 -0
  12. data/lib/payabli/case_management/types/list_cases_case_management_request.rb +17 -0
  13. data/lib/payabli/case_management/types/list_messages_case_management_request.rb +15 -0
  14. data/lib/payabli/case_management/types/post_case_message_request.rb +13 -0
  15. data/lib/payabli/case_management/types/transition_case_request.rb +17 -0
  16. data/lib/payabli/case_management/types/upload_attachment_case_management_request.rb +11 -0
  17. data/lib/payabli/case_management/types/validate_bank_account_change_request.rb +23 -0
  18. data/lib/payabli/client.rb +11 -1
  19. data/lib/payabli/customer/client.rb +4 -1
  20. data/lib/payabli/hosted_payment_pages/client.rb +4 -1
  21. data/lib/payabli/internal/http/raw_client.rb +15 -2
  22. data/lib/payabli/internal/json/request.rb +7 -5
  23. data/lib/payabli/line_item/client.rb +4 -1
  24. data/lib/payabli/money_in/client.rb +55 -8
  25. data/lib/payabli/money_out/client.rb +17 -3
  26. data/lib/payabli/money_out/types/capture_all_out_request.rb +2 -0
  27. data/lib/payabli/money_out/types/capture_out_request.rb +2 -0
  28. data/lib/payabli/money_out/types/request_out_authorize.rb +2 -0
  29. data/lib/payabli/notification/client.rb +10 -7
  30. data/lib/payabli/ocr/client.rb +8 -2
  31. data/lib/payabli/organization/client.rb +5 -5
  32. data/lib/payabli/organization/types/organization_data.rb +2 -2
  33. data/lib/payabli/payment_link/client.rb +8 -2
  34. data/lib/payabli/paypoint/client.rb +4 -1
  35. data/lib/payabli/types/attachment_response.rb +24 -0
  36. data/lib/payabli/types/auth_capture_payout_response_data.rb +1 -1
  37. data/lib/payabli/types/available_transitions_response.rb +10 -0
  38. data/lib/payabli/types/bank_account_change_parameters.rb +30 -0
  39. data/lib/payabli/types/bank_account_change_parameters_type.rb +11 -0
  40. data/lib/payabli/types/bank_account_services.rb +12 -0
  41. data/lib/payabli/types/bank_review_decision_reason.rb +14 -0
  42. data/lib/payabli/types/bank_verification_metadata.rb +14 -0
  43. data/lib/payabli/types/billable_event.rb +29 -0
  44. data/lib/payabli/types/billing_entity.rb +13 -0
  45. data/lib/payabli/types/billing_entity_named.rb +13 -0
  46. data/lib/payabli/types/billing_profile_query_response.rb +14 -0
  47. data/lib/payabli/types/billing_profile_record.rb +32 -0
  48. data/lib/payabli/types/billing_profile_response.rb +31 -0
  49. data/lib/payabli/types/billing_profile_summary.rb +16 -0
  50. data/lib/payabli/types/case_list_response.rb +12 -0
  51. data/lib/payabli/types/case_list_summary.rb +20 -0
  52. data/lib/payabli/types/case_management_bank_account_function.rb +17 -0
  53. data/lib/payabli/types/case_metadata.rb +12 -0
  54. data/lib/payabli/types/case_response.rb +50 -0
  55. data/lib/payabli/types/case_state.rb +22 -0
  56. data/lib/payabli/types/case_trigger.rb +22 -0
  57. data/lib/payabli/types/case_type.rb +11 -0
  58. data/lib/payabli/types/collection_schedule_value.rb +23 -0
  59. data/lib/payabli/types/device_query_record.rb +8 -0
  60. data/lib/payabli/types/entities_assigned.rb +17 -0
  61. data/lib/payabli/types/entity_type_name.rb +17 -0
  62. data/lib/payabli/types/entity_type_value.rb +23 -0
  63. data/lib/payabli/types/event_group_value.rb +23 -0
  64. data/lib/payabli/types/event_source_value.rb +23 -0
  65. data/lib/payabli/types/event_type_value.rb +23 -0
  66. data/lib/payabli/types/fee_schedule.rb +47 -0
  67. data/lib/payabli/types/fee_type_name.rb +12 -0
  68. data/lib/payabli/types/fee_type_value.rb +23 -0
  69. data/lib/payabli/types/message_page.rb +12 -0
  70. data/lib/payabli/types/money_in_service.rb +17 -0
  71. data/lib/payabli/types/money_out_service.rb +17 -0
  72. data/lib/payabli/types/notification_content.rb +1 -1
  73. data/lib/payabli/types/notification_content_event_type.rb +14 -80
  74. data/lib/payabli/types/notification_standard_request_content_event_type.rb +97 -111
  75. data/lib/payabli/types/org_ref.rb +12 -0
  76. data/lib/payabli/types/passthrough_value.rb +23 -0
  77. data/lib/payabli/types/paypoint_ref.rb +12 -0
  78. data/lib/payabli/types/posted_message.rb +14 -0
  79. data/lib/payabli/types/pre_creation_validation_result.rb +16 -0
  80. data/lib/payabli/types/query_payout_transaction_records_item.rb +2 -0
  81. data/lib/payabli/types/query_payout_transaction_records_item_allowed_actions_item.rb +13 -0
  82. data/lib/payabli/types/region_type_value.rb +23 -0
  83. data/lib/payabli/types/review_decision_metadata.rb +12 -0
  84. data/lib/payabli/types/room_message_view.rb +18 -0
  85. data/lib/payabli/types/service_group_value.rb +23 -0
  86. data/lib/payabli/types/service_type_value.rb +23 -0
  87. data/lib/payabli/types/service_value.rb +23 -0
  88. data/lib/payabli/types/service_vertical_name.rb +13 -0
  89. data/lib/payabli/types/state_transition_response.rb +26 -0
  90. data/lib/payabli/types/user_ref.rb +12 -0
  91. data/lib/payabli/types/verification_code.rb +14 -0
  92. data/lib/payabli/user/client.rb +8 -2
  93. data/lib/payabli/vendor/client.rb +8 -2
  94. data/lib/payabli/version.rb +1 -1
  95. data/lib/payabli.rb +64 -0
  96. data/reference.md +1734 -421
  97. data/wiremock/wiremock-mappings.json +502 -9
  98. metadata +66 -2
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class CreateBankAccountChangeCaseRequest < Internal::Types::Model
7
+ field :paypoint_id, -> { Integer }, optional: false, nullable: false, api_name: "paypointId"
8
+
9
+ field :nickname, -> { String }, optional: false, nullable: false
10
+
11
+ field :bank_name, -> { String }, optional: false, nullable: false, api_name: "bankName"
12
+
13
+ field :routing_number, -> { String }, optional: false, nullable: false, api_name: "routingNumber"
14
+
15
+ field :account_number, -> { String }, optional: false, nullable: false, api_name: "accountNumber"
16
+
17
+ field :account_type, -> { String }, optional: false, nullable: false, api_name: "accountType"
18
+
19
+ field :bank_account_holder_type, -> { String }, optional: false, nullable: false, api_name: "bankAccountHolderType"
20
+
21
+ field :bank_account_function, -> { Payabli::Types::CaseManagementBankAccountFunction }, optional: false, nullable: false, api_name: "bankAccountFunction"
22
+
23
+ field :services, -> { Payabli::Types::BankAccountServices }, optional: false, nullable: false
24
+
25
+ field :default, -> { Internal::Types::Boolean }, optional: false, nullable: false
26
+
27
+ field :schedule_for, -> { String }, optional: true, nullable: false, api_name: "scheduleFor"
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class ListCasesCaseManagementRequest < Internal::Types::Model
7
+ field :organization_id, -> { Integer }, optional: false, nullable: false, api_name: "organizationId"
8
+
9
+ field :from_record, -> { Integer }, optional: true, nullable: false, api_name: "fromRecord"
10
+
11
+ field :limit_record, -> { Integer }, optional: true, nullable: false, api_name: "limitRecord"
12
+
13
+ field :sort_by, -> { String }, optional: true, nullable: false, api_name: "sortBy"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class ListMessagesCaseManagementRequest < Internal::Types::Model
7
+ field :case_uuid, -> { String }, optional: false, nullable: false, api_name: "caseUuid"
8
+
9
+ field :limit, -> { Integer }, optional: true, nullable: false
10
+
11
+ field :cursor, -> { String }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class PostCaseMessageRequest < Internal::Types::Model
7
+ field :case_uuid, -> { String }, optional: false, nullable: false, api_name: "caseUuid"
8
+
9
+ field :content, -> { String }, optional: false, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class TransitionCaseRequest < Internal::Types::Model
7
+ field :uuid, -> { String }, optional: false, nullable: false
8
+
9
+ field :trigger, -> { Payabli::Types::CaseTrigger }, optional: false, nullable: false
10
+
11
+ field :reason, -> { String }, optional: false, nullable: false
12
+
13
+ field :decline_reason, -> { Payabli::Types::BankReviewDecisionReason }, optional: true, nullable: false, api_name: "declineReason"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class UploadAttachmentCaseManagementRequest < Internal::Types::Model
7
+ field :case_uuid, -> { String }, optional: false, nullable: false, api_name: "caseUuid"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module CaseManagement
5
+ module Types
6
+ class ValidateBankAccountChangeRequest < Internal::Types::Model
7
+ field :paypoint_id, -> { Integer }, optional: false, nullable: false, api_name: "paypointId"
8
+
9
+ field :routing_number, -> { String }, optional: false, nullable: false, api_name: "routingNumber"
10
+
11
+ field :account_number, -> { String }, optional: false, nullable: false, api_name: "accountNumber"
12
+
13
+ field :account_type, -> { String }, optional: false, nullable: false, api_name: "accountType"
14
+
15
+ field :bank_account_holder_type, -> { String }, optional: false, nullable: false, api_name: "bankAccountHolderType"
16
+
17
+ field :bank_account_function, -> { Payabli::Types::CaseManagementBankAccountFunction }, optional: false, nullable: false, api_name: "bankAccountFunction"
18
+
19
+ field :services, -> { Payabli::Types::BankAccountServices }, optional: false, nullable: false
20
+ end
21
+ end
22
+ end
23
+ end
@@ -32,7 +32,7 @@ module Payabli
32
32
  @raw_client = Payabli::Internal::Http::RawClient.new(
33
33
  base_url: base_url || Payabli::Environment::SANDBOX,
34
34
  headers: {
35
- "User-Agent" => "payabli/3.0.6",
35
+ "User-Agent" => "payabli/3.0.8",
36
36
  "X-Fern-Language" => "Ruby"
37
37
  },
38
38
  auth_provider: Payabli::Internal::RoutingAuthProvider.new(
@@ -207,5 +207,15 @@ module Payabli
207
207
  def charge_backs
208
208
  @charge_backs ||= Payabli::ChargeBacks::Client.new(client: @raw_client)
209
209
  end
210
+
211
+ # @return [Payabli::CaseManagement::Client]
212
+ def case_management
213
+ @case_management ||= Payabli::CaseManagement::Client.new(client: @raw_client)
214
+ end
215
+
216
+ # @return [Payabli::Billing::Client]
217
+ def billing
218
+ @billing ||= Payabli::Billing::Client.new(client: @raw_client)
219
+ end
210
220
  end
211
221
  end
@@ -146,13 +146,16 @@ module Payabli
146
146
  # @return [Payabli::Types::PayabliApiResponse00Responsedatanonobject]
147
147
  def update_customer(request_options: {}, **params)
148
148
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
149
+ path_param_names = %i[customer_id]
150
+ body_params = params.except(*path_param_names)
151
+
149
152
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
150
153
  request = Payabli::Internal::JSON::Request.new(
151
154
  base_url: request_options[:base_url],
152
155
  method: "PUT",
153
156
  path: "Customer/#{URI.encode_uri_component(params[:customer_id].to_s)}",
154
157
  headers: headers,
155
- body: Payabli::Types::CustomerData.new(params).to_h,
158
+ body: Payabli::Types::CustomerData.new(body_params).to_h,
156
159
  request_options: request_options
157
160
  )
158
161
  begin
@@ -127,13 +127,16 @@ module Payabli
127
127
  # @return [Payabli::Types::PayabliApiResponse00Responsedatanonobject]
128
128
  def save_page(request_options: {}, **params)
129
129
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
130
+ path_param_names = %i[entry subdomain]
131
+ body_params = params.except(*path_param_names)
132
+
130
133
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
131
134
  request = Payabli::Internal::JSON::Request.new(
132
135
  base_url: request_options[:base_url],
133
136
  method: "PUT",
134
137
  path: "Paypoint/#{URI.encode_uri_component(params[:entry].to_s)}/#{URI.encode_uri_component(params[:subdomain].to_s)}",
135
138
  headers: headers,
136
- body: Payabli::Types::PayabliPages.new(params).to_h,
139
+ body: Payabli::Types::PayabliPages.new(body_params).to_h,
137
140
  request_options: request_options
138
141
  )
139
142
  begin
@@ -21,10 +21,13 @@ module Payabli
21
21
  # @param max_retries [Integer] The number of times to retry a failed request, defaults to 2.
22
22
  # @param timeout [Float] The timeout for the request, defaults to 60.0 seconds.
23
23
  # @param headers [Hash] The headers for the request.
24
+ # @param overridable_headers [Array<String>] The names of the client-level headers a request
25
+ # may replace via `additional_headers`. Holds the API's global headers; SDK metadata and
26
+ # auth headers are absent from it and so stay protected.
24
27
  # @param auth_provider [Object, nil] An optional auth provider responding to
25
28
  # `auth_headers`. When present its headers are resolved on every request so
26
29
  # token-based schemes (e.g. OAuth) can refresh an expired token mid-session.
27
- def initialize(base_url:, max_retries: 2, timeout: 60.0, headers: {}, auth_provider: nil)
30
+ def initialize(base_url:, max_retries: 2, timeout: 60.0, headers: {}, overridable_headers: [], auth_provider: nil)
28
31
  @base_url = base_url
29
32
  @max_retries = max_retries
30
33
  @timeout = timeout
@@ -34,6 +37,7 @@ module Payabli
34
37
  "X-Fern-SDK-Name": "payabli",
35
38
  "X-Fern-SDK-Version": "0.0.1"
36
39
  }.merge(headers)
40
+ @overridable_headers = overridable_headers.to_set { |name| name.to_s.downcase }
37
41
  end
38
42
 
39
43
  # @param request [Payabli::Internal::Http::BaseRequest] The HTTP request.
@@ -50,7 +54,7 @@ module Payabli
50
54
  http_request = build_http_request(
51
55
  url:,
52
56
  method: request.method,
53
- headers: request.encode_headers(protected_keys: @default_headers.keys + auth_headers.keys),
57
+ headers: request.encode_headers(protected_keys: protected_header_keys + auth_headers.keys),
54
58
  body: request.encode_body,
55
59
  auth_headers: auth_headers
56
60
  )
@@ -73,6 +77,15 @@ module Payabli
73
77
  response
74
78
  end
75
79
 
80
+ # The client-level header names that `additional_headers` must not replace: every default
81
+ # header except the API's global headers, which are overridable per request.
82
+ # @return [Array<Symbol, String>] The protected header names.
83
+ def protected_header_keys
84
+ return @default_headers.keys if @overridable_headers.empty?
85
+
86
+ @default_headers.keys.reject { |name| @overridable_headers.include?(name.to_s.downcase) }
87
+ end
88
+
76
89
  # Determines if a request should be retried based on the response status code.
77
90
  # @param response [Net::HTTPResponse] The HTTP response.
78
91
  # @param attempt [Integer] The current retry attempt (0-indexed).
@@ -13,21 +13,23 @@ module Payabli
13
13
  # @param headers [Hash] Additional headers for the request (optional)
14
14
  # @param query [Hash] Query parameters for the request (optional)
15
15
  # @param body [Object, nil] The JSON request body (optional)
16
+ # @param omit_content_type_without_body [Boolean] When true and no body is present, the
17
+ # Content-Type header is omitted (used for endpoints whose request body is optional)
16
18
  # @param request_options [Payabli::RequestOptions, Hash{Symbol=>Object}, nil]
17
- def initialize(base_url:, path:, method:, headers: {}, query: {}, body: nil, request_options: {})
19
+ def initialize(base_url:, path:, method:, headers: {}, query: {}, body: nil, omit_content_type_without_body: false, request_options: {})
18
20
  super(base_url:, path:, method:, headers:, query:, request_options:)
19
21
 
20
22
  @body = body
23
+ @omit_content_type_without_body = omit_content_type_without_body
21
24
  end
22
25
 
23
26
  # @return [Hash] The encoded HTTP request headers.
24
27
  # @param protected_keys [Array<String>] Header keys set by the SDK client (e.g. auth, metadata)
25
28
  # that must not be overridden by additional_headers from request_options.
26
29
  def encode_headers(protected_keys: [])
27
- sdk_headers = {
28
- "Content-Type" => "application/json",
29
- "Accept" => "application/json"
30
- }.merge(@headers)
30
+ sdk_headers = { "Accept" => "application/json" }
31
+ sdk_headers["Content-Type"] = "application/json" unless @omit_content_type_without_body && @body.nil?
32
+ sdk_headers = sdk_headers.merge(@headers)
31
33
  merge_additional_headers(sdk_headers, protected_keys:)
32
34
  end
33
35
 
@@ -128,13 +128,16 @@ module Payabli
128
128
  # @return [Payabli::Types::PayabliApiResponse6]
129
129
  def update_item(request_options: {}, **params)
130
130
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
131
+ path_param_names = %i[line_item_id]
132
+ body_params = params.except(*path_param_names)
133
+
131
134
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
132
135
  request = Payabli::Internal::JSON::Request.new(
133
136
  base_url: request_options[:base_url],
134
137
  method: "PUT",
135
138
  path: "LineItem/#{URI.encode_uri_component(params[:line_item_id].to_s)}",
136
139
  headers: headers,
137
- body: Payabli::Types::LineItem.new(params).to_h,
140
+ body: Payabli::Types::LineItem.new(body_params).to_h,
138
141
  request_options: request_options
139
142
  )
140
143
  begin
@@ -178,13 +178,16 @@ module Payabli
178
178
  # @return [Payabli::Types::CaptureResponse]
179
179
  def capture_auth(request_options: {}, **params)
180
180
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
181
+ path_param_names = %i[trans_id]
182
+ body_params = params.except(*path_param_names)
183
+
181
184
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
182
185
  request = Payabli::Internal::JSON::Request.new(
183
186
  base_url: request_options[:base_url],
184
187
  method: "POST",
185
188
  path: "MoneyIn/capture/#{URI.encode_uri_component(params[:trans_id].to_s)}",
186
189
  headers: headers,
187
- body: Payabli::Types::CaptureRequest.new(params).to_h,
190
+ body: Payabli::Types::CaptureRequest.new(body_params).to_h,
188
191
  request_options: request_options
189
192
  )
190
193
  begin
@@ -946,13 +949,16 @@ module Payabli
946
949
  # @return [Payabli::Types::V2TransactionResponseWrapper]
947
950
  def capturev_2(request_options: {}, **params)
948
951
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
952
+ path_param_names = %i[trans_id]
953
+ body_params = params.except(*path_param_names)
954
+
949
955
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
950
956
  request = Payabli::Internal::JSON::Request.new(
951
957
  base_url: request_options[:base_url],
952
958
  method: "POST",
953
959
  path: "v2/MoneyIn/capture/#{URI.encode_uri_component(params[:trans_id].to_s)}",
954
960
  headers: headers,
955
- body: Payabli::Types::CaptureRequest.new(params).to_h,
961
+ body: Payabli::Types::CaptureRequest.new(body_params).to_h,
956
962
  request_options: request_options
957
963
  )
958
964
  begin
@@ -991,18 +997,40 @@ module Payabli
991
997
  # @option params [String] :trans_id
992
998
  #
993
999
  # @example
994
- # client.money_in.refundv_2(trans_id: "10-3ffa27df-b171-44e0-b251-e95fbfc7a723")
1000
+ # client.money_in.refundv_2(
1001
+ # trans_id: "10-3ffa27df-b171-44e0-b251-e95fbfc7a723",
1002
+ # amount: 100,
1003
+ # order_description: "Materials deposit",
1004
+ # refund_details: {
1005
+ # split_refunding: [{
1006
+ # origination_entry_point: "495147f647",
1007
+ # account_id: "187-342",
1008
+ # description: "Refunding undelivered materials",
1009
+ # amount: 60
1010
+ # }, {
1011
+ # origination_entry_point: "8cfec329267",
1012
+ # account_id: "187-343",
1013
+ # description: "Refunding deposit for undelivered materials",
1014
+ # amount: 40
1015
+ # }]
1016
+ # },
1017
+ # source: "api"
1018
+ # )
995
1019
  #
996
1020
  # @return [Payabli::Types::V2TransactionResponseWrapper]
997
1021
  def refundv_2(request_options: {}, **params)
998
1022
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
1023
+ path_param_names = %i[trans_id]
1024
+ body_params = params.except(*path_param_names)
1025
+
999
1026
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
1000
1027
  request = Payabli::Internal::JSON::Request.new(
1001
1028
  base_url: request_options[:base_url],
1002
1029
  method: "POST",
1003
1030
  path: "v2/MoneyIn/refund/#{URI.encode_uri_component(params[:trans_id].to_s)}",
1004
1031
  headers: headers,
1005
- body: Payabli::Types::RefundV2Request.new(params).to_h,
1032
+ body: body_params.empty? ? nil : Payabli::Types::RefundV2Request.new(body_params).to_h,
1033
+ omit_content_type_without_body: true,
1006
1034
  request_options: request_options
1007
1035
  )
1008
1036
  begin
@@ -1026,8 +1054,8 @@ module Payabli
1026
1054
  # response codes reference](/guides/pay-in-unified-response-codes-reference) for more information.
1027
1055
  #
1028
1056
  # <Note>
1029
- # To refund a split-funded transaction, include split instructions in the request body. Omit the body for a
1030
- # standard refund.
1057
+ # For a standard refund, whether full (`amount` set to 0) or partial, send no request body. Include a request body
1058
+ # only to refund a split-funded transaction, with split instructions in `refundDetails`.
1031
1059
  # </Note>
1032
1060
  #
1033
1061
  # @param request_options [Hash]
@@ -1043,19 +1071,38 @@ module Payabli
1043
1071
  # @example
1044
1072
  # client.money_in.refundv_2_amount(
1045
1073
  # trans_id: "10-3ffa27df-b171-44e0-b251-e95fbfc7a723",
1046
- # amount: 0
1074
+ # amount: 70,
1075
+ # order_description: "Materials deposit",
1076
+ # refund_details: {
1077
+ # split_refunding: [{
1078
+ # origination_entry_point: "495147f647",
1079
+ # account_id: "187-342",
1080
+ # description: "Refunding undelivered materials",
1081
+ # amount: 40
1082
+ # }, {
1083
+ # origination_entry_point: "8cfec329267",
1084
+ # account_id: "187-343",
1085
+ # description: "Refunding deposit for undelivered materials",
1086
+ # amount: 30
1087
+ # }]
1088
+ # },
1089
+ # source: "api"
1047
1090
  # )
1048
1091
  #
1049
1092
  # @return [Payabli::Types::V2TransactionResponseWrapper]
1050
1093
  def refundv_2_amount(request_options: {}, **params)
1051
1094
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
1095
+ path_param_names = %i[trans_id amount]
1096
+ body_params = params.except(*path_param_names)
1097
+
1052
1098
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
1053
1099
  request = Payabli::Internal::JSON::Request.new(
1054
1100
  base_url: request_options[:base_url],
1055
1101
  method: "POST",
1056
1102
  path: "v2/MoneyIn/refund/#{URI.encode_uri_component(params[:trans_id].to_s)}/#{URI.encode_uri_component(params[:amount].to_s)}",
1057
1103
  headers: headers,
1058
- body: Payabli::Types::RefundV2Request.new(params).to_h,
1104
+ body: body_params.empty? ? nil : Payabli::Types::RefundV2Request.new(body_params).to_h,
1105
+ omit_content_type_without_body: true,
1059
1106
  request_options: request_options
1060
1107
  )
1061
1108
  begin
@@ -18,8 +18,8 @@ module Payabli
18
18
  # When `autoCapture` is `true`, Payabli captures the transaction asynchronously after authorization. The response
19
19
  # confirms only that the transaction was authorized; it doesn't confirm that capture succeeded. To confirm
20
20
  # capture, listen for the
21
- # [`payout_transaction_approvedcaptured`](/developers/api-reference/webhooks-overview/payout-transaction-approved-captured)
22
- # webhook event.
21
+ # [`payout_transaction_approvedcaptured`](/developers/webhooks/payout-transaction-approved-captured) webhook
22
+ # event.
23
23
  #
24
24
  # If a velocity fraud alert is triggered, the endpoint returns a `202` response with `responseCode` `9051`, and
25
25
  # the authorization is held for risk review rather than rejected. If a risk policy blocks the transaction, the
@@ -40,6 +40,7 @@ module Payabli
40
40
  # @option params [Boolean, nil] :allow_duplicated_bills
41
41
  # @option params [Boolean, nil] :do_not_create_bills
42
42
  # @option params [Boolean, nil] :force_vendor_creation
43
+ # @option params [Boolean, nil] :same_day_ach
43
44
  # @option params [String, nil] :idempotency_key
44
45
  #
45
46
  # @example
@@ -66,13 +67,14 @@ module Payabli
66
67
  def authorize_out(request_options: {}, **params)
67
68
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
68
69
  request_data = Payabli::MoneyOut::Types::RequestOutAuthorize.new(params).to_h
69
- non_body_param_names = %w[allowDuplicatedBills doNotCreateBills forceVendorCreation idempotencyKey]
70
+ non_body_param_names = %w[allowDuplicatedBills doNotCreateBills forceVendorCreation sameDayACH idempotencyKey]
70
71
  body = request_data.except(*non_body_param_names)
71
72
 
72
73
  query_params = {}
73
74
  query_params["allowDuplicatedBills"] = params[:allow_duplicated_bills] if params.key?(:allow_duplicated_bills)
74
75
  query_params["doNotCreateBills"] = params[:do_not_create_bills] if params.key?(:do_not_create_bills)
75
76
  query_params["forceVendorCreation"] = params[:force_vendor_creation] if params.key?(:force_vendor_creation)
77
+ query_params["sameDayACH"] = params[:same_day_ach] if params.key?(:same_day_ach)
76
78
 
77
79
  headers = {}
78
80
  headers["idempotencyKey"] = params[:idempotency_key] if params[:idempotency_key]
@@ -228,6 +230,7 @@ module Payabli
228
230
  # @option request_options [Hash{String => Object}] :additional_query_parameters
229
231
  # @option request_options [Hash{String => Object}] :additional_body_parameters
230
232
  # @option request_options [Integer] :timeout_in_seconds
233
+ # @option params [Boolean, nil] :auto_convert_same_day_ach
231
234
  # @option params [String, nil] :idempotency_key
232
235
  #
233
236
  # @example
@@ -236,6 +239,11 @@ module Payabli
236
239
  # @return [Payabli::Types::CaptureAllOutResponse]
237
240
  def capture_all_out(request_options: {}, **params)
238
241
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
242
+ query_param_names = %i[auto_convert_same_day_ach]
243
+ query_params = {}
244
+ query_params["autoConvertSameDayAch"] = params[:auto_convert_same_day_ach] if params.key?(:auto_convert_same_day_ach)
245
+ params = params.except(*query_param_names)
246
+
239
247
  headers = {}
240
248
  headers["idempotencyKey"] = params[:idempotency_key] if params[:idempotency_key]
241
249
 
@@ -245,6 +253,7 @@ module Payabli
245
253
  method: "POST",
246
254
  path: "MoneyOut/captureAll",
247
255
  headers: headers,
256
+ query: query_params,
248
257
  body: params,
249
258
  request_options: request_options
250
259
  )
@@ -277,6 +286,7 @@ module Payabli
277
286
  # @option request_options [Hash{String => Object}] :additional_body_parameters
278
287
  # @option request_options [Integer] :timeout_in_seconds
279
288
  # @option params [String] :reference_id
289
+ # @option params [Boolean, nil] :auto_convert_same_day_ach
280
290
  # @option params [String, nil] :idempotency_key
281
291
  #
282
292
  # @example
@@ -285,6 +295,9 @@ module Payabli
285
295
  # @return [Payabli::Types::AuthCapturePayoutResponse]
286
296
  def capture_out(request_options: {}, **params)
287
297
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
298
+ query_params = {}
299
+ query_params["autoConvertSameDayAch"] = params[:auto_convert_same_day_ach] if params.key?(:auto_convert_same_day_ach)
300
+
288
301
  headers = {}
289
302
  headers["idempotencyKey"] = params[:idempotency_key] if params[:idempotency_key]
290
303
 
@@ -294,6 +307,7 @@ module Payabli
294
307
  method: "GET",
295
308
  path: "MoneyOut/capture/#{URI.encode_uri_component(params[:reference_id].to_s)}",
296
309
  headers: headers,
310
+ query: query_params,
297
311
  request_options: request_options
298
312
  )
299
313
  begin
@@ -4,6 +4,8 @@ module Payabli
4
4
  module MoneyOut
5
5
  module Types
6
6
  class CaptureAllOutRequest < Internal::Types::Model
7
+ field :auto_convert_same_day_ach, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "autoConvertSameDayAch"
8
+
7
9
  field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "idempotencyKey"
8
10
 
9
11
  field :body, -> { Internal::Types::Array[String] }, optional: false, nullable: false
@@ -6,6 +6,8 @@ module Payabli
6
6
  class CaptureOutRequest < Internal::Types::Model
7
7
  field :reference_id, -> { String }, optional: false, nullable: false, api_name: "referenceId"
8
8
 
9
+ field :auto_convert_same_day_ach, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "autoConvertSameDayAch"
10
+
9
11
  field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "idempotencyKey"
10
12
  end
11
13
  end
@@ -10,6 +10,8 @@ module Payabli
10
10
 
11
11
  field :force_vendor_creation, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "forceVendorCreation"
12
12
 
13
+ field :same_day_ach, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "sameDayACH"
14
+
13
15
  field :idempotency_key, -> { String }, optional: true, nullable: false, api_name: "idempotencyKey"
14
16
 
15
17
  field :entry_point, -> { String }, optional: false, nullable: false, api_name: "entryPoint"
@@ -10,7 +10,7 @@ module Payabli
10
10
  @client = client
11
11
  end
12
12
 
13
- # Create a new notification or auto-generated report.
13
+ # Create a new notification or autogenerated report.
14
14
  #
15
15
  # @param request_options [Hash]
16
16
  # @param params [Payabli::Types::AddNotificationRequest]
@@ -23,7 +23,7 @@ module Payabli
23
23
  # @example
24
24
  # client.notification.add_notification(
25
25
  # content: {
26
- # event_type: "CreatedApplication"
26
+ # event_type: "createdapplication"
27
27
  # },
28
28
  # frequency: "untilcancelled",
29
29
  # method_: "web",
@@ -59,7 +59,7 @@ module Payabli
59
59
  end
60
60
  end
61
61
 
62
- # Retrieves a single notification or auto-generated report's details.
62
+ # Retrieves a single notification or autogenerated report's details.
63
63
  #
64
64
  # @param request_options [Hash]
65
65
  # @param params [Hash]
@@ -98,7 +98,7 @@ module Payabli
98
98
  end
99
99
  end
100
100
 
101
- # Update a notification or auto-generated report.
101
+ # Update a notification or autogenerated report.
102
102
  #
103
103
  # @param request_options [Hash]
104
104
  # @param params [Payabli::Types::UpdateNotificationRequest]
@@ -113,7 +113,7 @@ module Payabli
113
113
  # client.notification.update_notification(
114
114
  # n_id: "1717",
115
115
  # content: {
116
- # event_type: "ApprovedPayment"
116
+ # event_type: "approvedpayment"
117
117
  # },
118
118
  # frequency: "untilcancelled",
119
119
  # method_: "email",
@@ -126,13 +126,16 @@ module Payabli
126
126
  # @return [Payabli::Types::PayabliApiResponseNotifications]
127
127
  def update_notification(request_options: {}, **params)
128
128
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
129
+ path_param_names = %i[n_id]
130
+ body_params = params.except(*path_param_names)
131
+
129
132
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
130
133
  request = Payabli::Internal::JSON::Request.new(
131
134
  base_url: request_options[:base_url],
132
135
  method: "PUT",
133
136
  path: "Notification/#{URI.encode_uri_component(params[:n_id].to_s)}",
134
137
  headers: headers,
135
- body: Payabli::Types::UpdateNotificationRequest.new(params).to_h,
138
+ body: Payabli::Types::UpdateNotificationRequest.new(body_params).to_h,
136
139
  request_options: request_options
137
140
  )
138
141
  begin
@@ -149,7 +152,7 @@ module Payabli
149
152
  end
150
153
  end
151
154
 
152
- # Deletes a single notification or auto-generated report.
155
+ # Deletes a single notification or autogenerated report.
153
156
  #
154
157
  # @param request_options [Hash]
155
158
  # @param params [Hash]
@@ -30,13 +30,16 @@ module Payabli
30
30
  # @return [Payabli::Types::PayabliApiResponseOcr]
31
31
  def ocr_document_form(request_options: {}, **params)
32
32
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
33
+ path_param_names = %i[type_result]
34
+ body_params = params.except(*path_param_names)
35
+
33
36
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
34
37
  request = Payabli::Internal::JSON::Request.new(
35
38
  base_url: request_options[:base_url],
36
39
  method: "POST",
37
40
  path: "Import/ocrDocumentForm/#{URI.encode_uri_component(params[:type_result].to_s)}",
38
41
  headers: headers,
39
- body: Payabli::Types::FileContentImageOnly.new(params).to_h,
42
+ body: Payabli::Types::FileContentImageOnly.new(body_params).to_h,
40
43
  request_options: request_options
41
44
  )
42
45
  begin
@@ -73,13 +76,16 @@ module Payabli
73
76
  # @return [Payabli::Types::PayabliApiResponseOcr]
74
77
  def ocr_document_json(request_options: {}, **params)
75
78
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
79
+ path_param_names = %i[type_result]
80
+ body_params = params.except(*path_param_names)
81
+
76
82
  headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }, { "APIKeyAuth" => [] }])
77
83
  request = Payabli::Internal::JSON::Request.new(
78
84
  base_url: request_options[:base_url],
79
85
  method: "POST",
80
86
  path: "Import/ocrDocumentJson/#{URI.encode_uri_component(params[:type_result].to_s)}",
81
87
  headers: headers,
82
- body: Payabli::Types::FileContentImageOnly.new(params).to_h,
88
+ body: Payabli::Types::FileContentImageOnly.new(body_params).to_h,
83
89
  request_options: request_options
84
90
  )
85
91
  begin