payabli 3.0.18 → 3.0.20

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 (199) 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 +31 -1
  24. data/lib/payabli/export/client.rb +2 -3
  25. data/lib/payabli/ghost_card/client.rb +48 -2
  26. data/lib/payabli/money_out/client.rb +56 -2
  27. data/lib/payabli/money_out/types/reissue_out_request.rb +2 -0
  28. data/lib/payabli/payment_methods/client.rb +254 -0
  29. data/lib/payabli/payment_methods/types/create_payment_methods_request.rb +11 -0
  30. data/lib/payabli/payment_methods/types/list_payment_methods_payment_methods_request.rb +25 -0
  31. data/lib/payabli/payment_methods/types/update_payment_method_request.rb +23 -0
  32. data/lib/payabli/paypoints/client.rb +204 -0
  33. data/lib/payabli/paypoints/types/create_paypoint_paypoints_request.rb +17 -0
  34. data/lib/payabli/paypoints/types/list_paypoints_paypoints_request.rb +19 -0
  35. data/lib/payabli/paypoints/types/update_paypoint_request.rb +29 -0
  36. data/lib/payabli/people/client.rb +428 -0
  37. data/lib/payabli/people/types/create_person_request.rb +47 -0
  38. data/lib/payabli/people/types/list_people_people_request.rb +23 -0
  39. data/lib/payabli/people/types/search_people_request.rb +15 -0
  40. data/lib/payabli/people/types/search_people_unmasked_request.rb +15 -0
  41. data/lib/payabli/people/types/update_person_request.rb +41 -0
  42. data/lib/payabli/subscription/types/request_update_schedule.rb +2 -0
  43. data/lib/payabli/templates/client.rb +25 -0
  44. data/lib/payabli/types/address_type.rb +16 -0
  45. data/lib/payabli/types/application.rb +46 -0
  46. data/lib/payabli/types/application_common.rb +42 -0
  47. data/lib/payabli/types/application_document.rb +26 -0
  48. data/lib/payabli/types/application_document_envelope.rb +16 -0
  49. data/lib/payabli/types/application_document_error.rb +16 -0
  50. data/lib/payabli/types/application_document_list_envelope.rb +16 -0
  51. data/lib/payabli/types/application_envelope.rb +16 -0
  52. data/lib/payabli/types/application_links.rb +12 -0
  53. data/lib/payabli/types/application_list_item.rb +52 -0
  54. data/lib/payabli/types/associated_vendor.rb +2 -0
  55. data/lib/payabli/types/bank_account_services.rb +2 -2
  56. data/lib/payabli/types/bill_query_record_2.rb +2 -0
  57. data/lib/payabli/types/bill_response_data.rb +2 -0
  58. data/lib/payabli/types/bill_transaction_reference.rb +12 -0
  59. data/lib/payabli/types/boarding_warning.rb +12 -0
  60. data/lib/payabli/types/business_address.rb +28 -0
  61. data/lib/payabli/types/business_address_create.rb +28 -0
  62. data/lib/payabli/types/business_address_deleted_envelope.rb +16 -0
  63. data/lib/payabli/types/business_address_deleted_response.rb +16 -0
  64. data/lib/payabli/types/business_address_envelope.rb +16 -0
  65. data/lib/payabli/types/business_address_links.rb +12 -0
  66. data/lib/payabli/types/business_address_list_envelope.rb +16 -0
  67. data/lib/payabli/types/business_address_location.rb +15 -0
  68. data/lib/payabli/types/business_address_response.rb +32 -0
  69. data/lib/payabli/types/business_created_envelope.rb +18 -0
  70. data/lib/payabli/types/business_created_response.rb +16 -0
  71. data/lib/payabli/types/business_deactivated_envelope.rb +18 -0
  72. data/lib/payabli/types/business_deactivated_response.rb +18 -0
  73. data/lib/payabli/types/business_detail_envelope.rb +18 -0
  74. data/lib/payabli/types/business_detail_response.rb +76 -0
  75. data/lib/payabli/types/business_detail_response_legal_structure.rb +17 -0
  76. data/lib/payabli/types/business_detail_response_operating_seasons_item.rb +14 -0
  77. data/lib/payabli/types/business_links.rb +10 -0
  78. data/lib/payabli/types/business_payment_method.rb +36 -0
  79. data/lib/payabli/types/business_person_envelope.rb +16 -0
  80. data/lib/payabli/types/business_person_link.rb +42 -0
  81. data/lib/payabli/types/business_person_links.rb +14 -0
  82. data/lib/payabli/types/business_person_list_envelope.rb +16 -0
  83. data/lib/payabli/types/business_relationship_request.rb +35 -0
  84. data/lib/payabli/types/business_relationship_response.rb +36 -0
  85. data/lib/payabli/types/business_summary_response.rb +22 -0
  86. data/lib/payabli/types/business_updated_envelope.rb +18 -0
  87. data/lib/payabli/types/business_updated_response.rb +14 -0
  88. data/lib/payabli/types/case_management_money_in_service.rb +17 -0
  89. data/lib/payabli/types/case_management_money_out_service.rb +17 -0
  90. data/lib/payabli/types/certification_detail.rb +18 -0
  91. data/lib/payabli/types/create_business_request.rb +64 -0
  92. data/lib/payabli/types/create_business_request_legal_structure.rb +19 -0
  93. data/lib/payabli/types/create_business_request_operating_seasons_item.rb +14 -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/delete_ghost_card_response.rb +12 -0
  100. data/lib/payabli/types/delete_ghost_card_response_data.rb +11 -0
  101. data/lib/payabli/types/device_entry_mode.rb +23 -0
  102. data/lib/payabli/types/device_query_record.rb +6 -0
  103. data/lib/payabli/types/device_query_record_operational_status.rb +13 -0
  104. data/lib/payabli/types/document_requirement.rb +31 -0
  105. data/lib/payabli/types/document_requirement_list_envelope.rb +16 -0
  106. data/lib/payabli/types/document_requirement_source.rb +12 -0
  107. data/lib/payabli/types/document_subject_type.rb +13 -0
  108. data/lib/payabli/types/emv_auth_data.rb +14 -0
  109. data/lib/payabli/types/enablement_envelope.rb +16 -0
  110. data/lib/payabli/types/enablement_result.rb +24 -0
  111. data/lib/payabli/types/enablement_service.rb +18 -0
  112. data/lib/payabli/types/get_method_response_response_data_vendors_item.rb +2 -0
  113. data/lib/payabli/types/identification_document_request.rb +18 -0
  114. data/lib/payabli/types/identification_document_response.rb +18 -0
  115. data/lib/payabli/types/issue_1099.rb +23 -0
  116. data/lib/payabli/types/list_applications_envelope.rb +16 -0
  117. data/lib/payabli/types/list_applications_response.rb +16 -0
  118. data/lib/payabli/types/list_businesses_envelope.rb +18 -0
  119. data/lib/payabli/types/list_businesses_response.rb +12 -0
  120. data/lib/payabli/types/list_payment_methods_envelope.rb +16 -0
  121. data/lib/payabli/types/list_payment_methods_response.rb +12 -0
  122. data/lib/payabli/types/list_paypoints_envelope.rb +16 -0
  123. data/lib/payabli/types/list_paypoints_response.rb +16 -0
  124. data/lib/payabli/types/list_people_envelope.rb +16 -0
  125. data/lib/payabli/types/list_people_response.rb +12 -0
  126. data/lib/payabli/types/list_templates_response.rb +12 -0
  127. data/lib/payabli/types/next_check_number_response.rb +10 -0
  128. data/lib/payabli/types/pagination.rb +20 -0
  129. data/lib/payabli/types/payment_method_deactivated_envelope.rb +16 -0
  130. data/lib/payabli/types/payment_method_detail.rb +38 -0
  131. data/lib/payabli/types/payment_method_detail_envelope.rb +16 -0
  132. data/lib/payabli/types/payment_method_links.rb +12 -0
  133. data/lib/payabli/types/payment_method_owner_type.rb +12 -0
  134. data/lib/payabli/types/payment_method_result.rb +40 -0
  135. data/lib/payabli/types/payment_method_updated_envelope.rb +16 -0
  136. data/lib/payabli/types/payment_method_usage.rb +16 -0
  137. data/lib/payabli/types/payment_methods_created_envelope.rb +16 -0
  138. data/lib/payabli/types/payout_metrics.rb +16 -0
  139. data/lib/payabli/types/payout_subscription_vendor.rb +2 -0
  140. data/lib/payabli/types/paypoint_created_envelope.rb +16 -0
  141. data/lib/payabli/types/paypoint_created_response.rb +22 -0
  142. data/lib/payabli/types/paypoint_detail_envelope.rb +16 -0
  143. data/lib/payabli/types/paypoint_detail_response.rb +40 -0
  144. data/lib/payabli/types/paypoint_links.rb +12 -0
  145. data/lib/payabli/types/paypoint_summary_response.rb +38 -0
  146. data/lib/payabli/types/paypoint_updated_envelope.rb +16 -0
  147. data/lib/payabli/types/paypoint_updated_response.rb +14 -0
  148. data/lib/payabli/types/paypoint_writable_fields.rb +28 -0
  149. data/lib/payabli/types/people_search_envelope.rb +16 -0
  150. data/lib/payabli/types/people_search_request.rb +12 -0
  151. data/lib/payabli/types/people_search_result_response.rb +38 -0
  152. data/lib/payabli/types/people_search_results_response.rb +14 -0
  153. data/lib/payabli/types/person_address_request.rb +22 -0
  154. data/lib/payabli/types/person_address_response.rb +22 -0
  155. data/lib/payabli/types/person_address_type.rb +17 -0
  156. data/lib/payabli/types/person_detail_envelope.rb +18 -0
  157. data/lib/payabli/types/person_detail_response.rb +56 -0
  158. data/lib/payabli/types/person_links.rb +12 -0
  159. data/lib/payabli/types/person_summary_response.rb +24 -0
  160. data/lib/payabli/types/person_type.rb +16 -0
  161. data/lib/payabli/types/person_updated_envelope.rb +16 -0
  162. data/lib/payabli/types/person_updated_response.rb +14 -0
  163. data/lib/payabli/types/processing_metrics.rb +30 -0
  164. data/lib/payabli/types/query_device_data.rb +26 -0
  165. data/lib/payabli/types/representative_input.rb +20 -0
  166. data/lib/payabli/types/representative_response.rb +20 -0
  167. data/lib/payabli/types/requested_services.rb +13 -0
  168. data/lib/payabli/types/signature_type.rb +13 -0
  169. data/lib/payabli/types/status_history_entry.rb +22 -0
  170. data/lib/payabli/types/status_history_envelope.rb +16 -0
  171. data/lib/payabli/types/status_history_result.rb +12 -0
  172. data/lib/payabli/types/submit_application_error.rb +16 -0
  173. data/lib/payabli/types/submit_signer.rb +32 -0
  174. data/lib/payabli/types/template.rb +38 -0
  175. data/lib/payabli/types/template_status.rb +12 -0
  176. data/lib/payabli/types/template_version.rb +79 -0
  177. data/lib/payabli/types/templates_summary.rb +14 -0
  178. data/lib/payabli/types/transaction_query_records.rb +6 -0
  179. data/lib/payabli/types/transaction_query_records_customer.rb +6 -0
  180. data/lib/payabli/types/transfer_out_detail_vendor.rb +2 -0
  181. data/lib/payabli/types/transition_result.rb +14 -0
  182. data/lib/payabli/types/transition_result_envelope.rb +16 -0
  183. data/lib/payabli/types/underwriting_mode.rb +13 -0
  184. data/lib/payabli/types/v_card_get_response_associated_vendor.rb +2 -0
  185. data/lib/payabli/types/validation_missing_field.rb +14 -0
  186. data/lib/payabli/types/validation_result.rb +14 -0
  187. data/lib/payabli/types/validation_result_envelope.rb +16 -0
  188. data/lib/payabli/types/validation_section.rb +12 -0
  189. data/lib/payabli/types/validation_sections.rb +16 -0
  190. data/lib/payabli/types/vendor_data.rb +2 -0
  191. data/lib/payabli/types/vendor_data_response.rb +2 -0
  192. data/lib/payabli/types/vendor_out_data.rb +2 -0
  193. data/lib/payabli/types/vendor_query_record.rb +2 -0
  194. data/lib/payabli/vendor/client.rb +1 -0
  195. data/lib/payabli/version.rb +1 -1
  196. data/lib/payabli.rb +170 -2
  197. data/reference.md +5431 -214
  198. data/wiremock/wiremock-mappings.json +1689 -25
  199. metadata +170 -2
@@ -0,0 +1,428 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
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 people 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] :name
23
+ # @option params [String, nil] :email
24
+ # @option params [String, nil] :verification_status
25
+ # @option params [Integer, nil] :limit
26
+ # @option params [Integer, nil] :page
27
+ # @option params [String, nil] :sort_by
28
+ # @option params [String, nil] :sort_order
29
+ #
30
+ # @example
31
+ # client.people.list_people(
32
+ # limit: 1,
33
+ # page: 1
34
+ # )
35
+ #
36
+ # @return [Payabli::Types::ListPeopleEnvelope]
37
+ def list_people(request_options: {}, **params)
38
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
39
+ query_params = {}
40
+ query_params["name"] = params[:name] if params.key?(:name)
41
+ query_params["email"] = params[:email] if params.key?(:email)
42
+ query_params["verificationStatus"] = params[:verification_status] if params.key?(:verification_status)
43
+ query_params["limit"] = params[:limit] if params.key?(:limit)
44
+ query_params["page"] = params[:page] if params.key?(:page)
45
+ query_params["sortBy"] = params[:sort_by] if params.key?(:sort_by)
46
+ query_params["sortOrder"] = params[:sort_order] if params.key?(:sort_order)
47
+
48
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
49
+ request = Payabli::Internal::JSON::Request.new(
50
+ base_url: request_options[:base_url],
51
+ method: "GET",
52
+ path: "v2/people",
53
+ headers: headers,
54
+ query: query_params,
55
+ request_options: request_options
56
+ )
57
+ begin
58
+ response = @client.send(request)
59
+ rescue Net::HTTPRequestTimeout
60
+ raise Payabli::Errors::TimeoutError
61
+ end
62
+ code = response.code.to_i
63
+ if code.between?(200, 299)
64
+ Payabli::Types::ListPeopleEnvelope.load(response.body)
65
+ else
66
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
67
+ raise error_class.new(response.body, code: code)
68
+ end
69
+ end
70
+
71
+ # Creates a person, an individual associated with a business such as an
72
+ # owner, director, or signer. Include a `businessRelationship` object to
73
+ # link the person to a business on create; the business reference, role
74
+ # (`personType`), and `ownershipPercentage` go inside that object.
75
+ #
76
+ # A person's job `title` and whether they're the signer (`isSigner`) also
77
+ # belong to the business link, so send them inside `businessRelationship`.
78
+ # A top-level `title` returns a `400` with the message
79
+ # `title moved into the businessRelationship object; send them there instead of at the top level.`
80
+ #
81
+ # @param request_options [Hash]
82
+ # @param params [Payabli::People::Types::CreatePersonRequest]
83
+ # @option request_options [String] :base_url
84
+ # @option request_options [Hash{String => Object}] :additional_headers
85
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
86
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
87
+ # @option request_options [Integer] :timeout_in_seconds
88
+ #
89
+ # @example
90
+ # client.people.create_person(
91
+ # first_name: "Marcus",
92
+ # middle_name: "James",
93
+ # last_name: "Delgado",
94
+ # primary_email: "marcus.delgado@example.com",
95
+ # secondary_email: "m.delgado@example.net",
96
+ # primary_phone_number: "3055551212",
97
+ # secondary_phone_number: "3055559876",
98
+ # date_of_birth: "1985-03-14",
99
+ # ssn: "412-55-9021",
100
+ # nationality: "US",
101
+ # drivers_license_number: "D1234567",
102
+ # drivers_license_state: "FL",
103
+ # external_id: "person-001",
104
+ # custom_data: {
105
+ # department: "finance"
106
+ # },
107
+ # addresses: [{
108
+ # address_line_1: "123 Main Street",
109
+ # address_line_2: "Suite 400",
110
+ # city_locality: "Miami",
111
+ # state_province: "FL",
112
+ # postal_code: "33101",
113
+ # country: "US",
114
+ # type: "legal"
115
+ # }],
116
+ # identification_documents: [{
117
+ # type: "passport",
118
+ # number: "X1234567",
119
+ # issuing_country: "US",
120
+ # expiration_date: "2030-06-30"
121
+ # }],
122
+ # business_relationship: {
123
+ # business_reference: "019fed1a-3d6e-75d3-a81e-cba3874b0a55",
124
+ # person_type: "Owner",
125
+ # ownership_percentage: 100,
126
+ # is_primary_controller: true,
127
+ # is_signer: true,
128
+ # title: "CEO",
129
+ # primary_email: "contact@example.com",
130
+ # secondary_email: "contact.alt@example.net",
131
+ # primary_phone_number: "3055551212",
132
+ # secondary_phone_number: "3055559876",
133
+ # billing_address: {
134
+ # address_line_1: "123 Main Street",
135
+ # city_locality: "Miami",
136
+ # state_province: "FL",
137
+ # postal_code: "33101",
138
+ # country: "US",
139
+ # type: "billing"
140
+ # },
141
+ # mailing_address: {
142
+ # address_line_1: "456 Oak Avenue",
143
+ # city_locality: "Miami",
144
+ # state_province: "FL",
145
+ # postal_code: "33102",
146
+ # country: "US",
147
+ # type: "mailing"
148
+ # }
149
+ # }
150
+ # )
151
+ #
152
+ # @return [Payabli::Types::PersonDetailEnvelope]
153
+ def create_person(request_options: {}, **params)
154
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
155
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
156
+ request = Payabli::Internal::JSON::Request.new(
157
+ base_url: request_options[:base_url],
158
+ method: "POST",
159
+ path: "v2/people",
160
+ headers: headers,
161
+ body: Payabli::People::Types::CreatePersonRequest.new(params).to_h,
162
+ request_options: request_options
163
+ )
164
+ begin
165
+ response = @client.send(request)
166
+ rescue Net::HTTPRequestTimeout
167
+ raise Payabli::Errors::TimeoutError
168
+ end
169
+ code = response.code.to_i
170
+ if code.between?(200, 299)
171
+ Payabli::Types::PersonDetailEnvelope.load(response.body)
172
+ else
173
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
174
+ raise error_class.new(response.body, code: code)
175
+ end
176
+ end
177
+
178
+ # Retrieves a person by reference. Sensitive fields such as `ssn` are masked.
179
+ #
180
+ # @param request_options [Hash]
181
+ # @param params [Hash]
182
+ # @option request_options [String] :base_url
183
+ # @option request_options [Hash{String => Object}] :additional_headers
184
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
185
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
186
+ # @option request_options [Integer] :timeout_in_seconds
187
+ # @option params [String] :person_reference
188
+ #
189
+ # @example
190
+ # client.people.get_person(person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d")
191
+ #
192
+ # @return [Payabli::Types::PersonDetailEnvelope]
193
+ def get_person(request_options: {}, **params)
194
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
195
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
196
+ request = Payabli::Internal::JSON::Request.new(
197
+ base_url: request_options[:base_url],
198
+ method: "GET",
199
+ path: "v2/people/#{URI.encode_uri_component(params[:person_reference].to_s)}",
200
+ headers: headers,
201
+ request_options: request_options
202
+ )
203
+ begin
204
+ response = @client.send(request)
205
+ rescue Net::HTTPRequestTimeout
206
+ raise Payabli::Errors::TimeoutError
207
+ end
208
+ code = response.code.to_i
209
+ if code.between?(200, 299)
210
+ Payabli::Types::PersonDetailEnvelope.load(response.body)
211
+ else
212
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
213
+ raise error_class.new(response.body, code: code)
214
+ end
215
+ end
216
+
217
+ # Applies a partial update to a person. Send only the fields you want to change.
218
+ #
219
+ # A person's job title belongs to their business link, not the person. Sending `title` in any form, including
220
+ # `null`, returns a `400` with the message `title moved to the business relationship; update it with PATCH
221
+ # /api/v2/businesses/{businessReference}/people/{personReference}.`
222
+ #
223
+ # @param request_options [Hash]
224
+ # @param params [Payabli::People::Types::UpdatePersonRequest]
225
+ # @option request_options [String] :base_url
226
+ # @option request_options [Hash{String => Object}] :additional_headers
227
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
228
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
229
+ # @option request_options [Integer] :timeout_in_seconds
230
+ # @option params [String] :person_reference
231
+ #
232
+ # @example
233
+ # client.people.update_person(
234
+ # person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d",
235
+ # primary_phone_number: "3055550199"
236
+ # )
237
+ #
238
+ # @return [Payabli::Types::PersonUpdatedEnvelope]
239
+ def update_person(request_options: {}, **params)
240
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
241
+ request_data = Payabli::People::Types::UpdatePersonRequest.new(params).to_h
242
+ non_body_param_names = %w[personReference]
243
+ body = request_data.except(*non_body_param_names)
244
+
245
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
246
+ request = Payabli::Internal::JSON::Request.new(
247
+ base_url: request_options[:base_url],
248
+ method: "PATCH",
249
+ path: "v2/people/#{URI.encode_uri_component(params[:person_reference].to_s)}",
250
+ headers: headers,
251
+ body: body,
252
+ request_options: request_options
253
+ )
254
+ begin
255
+ response = @client.send(request)
256
+ rescue Net::HTTPRequestTimeout
257
+ raise Payabli::Errors::TimeoutError
258
+ end
259
+ code = response.code.to_i
260
+ if code.between?(200, 299)
261
+ Payabli::Types::PersonUpdatedEnvelope.load(response.body)
262
+ else
263
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
264
+ raise error_class.new(response.body, code: code)
265
+ end
266
+ end
267
+
268
+ # Retrieves a person by reference with sensitive fields unmasked.
269
+ #
270
+ # @param request_options [Hash]
271
+ # @param params [Hash]
272
+ # @option request_options [String] :base_url
273
+ # @option request_options [Hash{String => Object}] :additional_headers
274
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
275
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
276
+ # @option request_options [Integer] :timeout_in_seconds
277
+ # @option params [String] :person_reference
278
+ #
279
+ # @example
280
+ # client.people.get_person_unmasked(person_reference: "01a0014d-ce1a-7110-9bac-c4c59647a88d")
281
+ #
282
+ # @return [Payabli::Types::PersonDetailEnvelope]
283
+ def get_person_unmasked(request_options: {}, **params)
284
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
285
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
286
+ request = Payabli::Internal::JSON::Request.new(
287
+ base_url: request_options[:base_url],
288
+ method: "GET",
289
+ path: "v2/people/#{URI.encode_uri_component(params[:person_reference].to_s)}/unmasked",
290
+ headers: headers,
291
+ request_options: request_options
292
+ )
293
+ begin
294
+ response = @client.send(request)
295
+ rescue Net::HTTPRequestTimeout
296
+ raise Payabli::Errors::TimeoutError
297
+ end
298
+ code = response.code.to_i
299
+ if code.between?(200, 299)
300
+ Payabli::Types::PersonDetailEnvelope.load(response.body)
301
+ else
302
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
303
+ raise error_class.new(response.body, code: code)
304
+ end
305
+ end
306
+
307
+ # Searches for people by identity attributes during boarding. The search
308
+ # covers every business in your organization, so use it to find a person
309
+ # before you create them again. To read the people already on a
310
+ # paypoint's business, use a standard `GET` instead.
311
+ # Provide at least one of `firstName` or `lastName`. Each result has a
312
+ # `matchScore` showing how closely it matches, and an external identity
313
+ # vendor can enrich the results. Each result's `dateOfBirth` is masked.
314
+ # To get the full value, use the unmasked search.
315
+ #
316
+ # @param request_options [Hash]
317
+ # @param params [Payabli::Types::PeopleSearchRequest]
318
+ # @option request_options [String] :base_url
319
+ # @option request_options [Hash{String => Object}] :additional_headers
320
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
321
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
322
+ # @option request_options [Integer] :timeout_in_seconds
323
+ # @option params [String] :entry
324
+ # @option params [Integer] :org_id
325
+ #
326
+ # @example
327
+ # client.people.search_people(
328
+ # entry: "8cfec329267",
329
+ # org_id: 123,
330
+ # request: {
331
+ # firstName: "Marcus",
332
+ # lastName: "Delgado"
333
+ # }
334
+ # )
335
+ #
336
+ # @return [Payabli::Types::PeopleSearchEnvelope]
337
+ def search_people(request_options: {}, **params)
338
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
339
+ query_param_names = %i[entry org_id]
340
+ query_params = {}
341
+ query_params["entry"] = params[:entry] if params.key?(:entry)
342
+ query_params["orgId"] = params[:org_id] if params.key?(:org_id)
343
+ params = params.except(*query_param_names)
344
+
345
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
346
+ request = Payabli::Internal::JSON::Request.new(
347
+ base_url: request_options[:base_url],
348
+ method: "POST",
349
+ path: "v2/people/search",
350
+ headers: headers,
351
+ query: query_params,
352
+ body: Payabli::Types::PeopleSearchRequest.new(params).to_h,
353
+ request_options: request_options
354
+ )
355
+ begin
356
+ response = @client.send(request)
357
+ rescue Net::HTTPRequestTimeout
358
+ raise Payabli::Errors::TimeoutError
359
+ end
360
+ code = response.code.to_i
361
+ if code.between?(200, 299)
362
+ Payabli::Types::PeopleSearchEnvelope.load(response.body)
363
+ else
364
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
365
+ raise error_class.new(response.body, code: code)
366
+ end
367
+ end
368
+
369
+ # Searches for people by identity attributes during boarding, and returns
370
+ # each result's `dateOfBirth` unmasked. The query parameters, request
371
+ # body, and other response fields match the standard people search.
372
+ # Provide at least one of `firstName` or `lastName`.
373
+ #
374
+ # @param request_options [Hash]
375
+ # @param params [Payabli::Types::PeopleSearchRequest]
376
+ # @option request_options [String] :base_url
377
+ # @option request_options [Hash{String => Object}] :additional_headers
378
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
379
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
380
+ # @option request_options [Integer] :timeout_in_seconds
381
+ # @option params [String] :entry
382
+ # @option params [Integer] :org_id
383
+ #
384
+ # @example
385
+ # client.people.search_people_unmasked(
386
+ # entry: "8cfec329267",
387
+ # org_id: 123,
388
+ # request: {
389
+ # firstName: "Marcus",
390
+ # lastName: "Delgado"
391
+ # }
392
+ # )
393
+ #
394
+ # @return [Payabli::Types::PeopleSearchEnvelope]
395
+ def search_people_unmasked(request_options: {}, **params)
396
+ params = Payabli::Internal::Types::Utils.normalize_keys(params)
397
+ query_param_names = %i[entry org_id]
398
+ query_params = {}
399
+ query_params["entry"] = params[:entry] if params.key?(:entry)
400
+ query_params["orgId"] = params[:org_id] if params.key?(:org_id)
401
+ params = params.except(*query_param_names)
402
+
403
+ headers = @client.auth_headers_for_endpoint(security: [{ "BearerAuth" => [] }])
404
+ request = Payabli::Internal::JSON::Request.new(
405
+ base_url: request_options[:base_url],
406
+ method: "POST",
407
+ path: "v2/people/search/unmasked",
408
+ headers: headers,
409
+ query: query_params,
410
+ body: Payabli::Types::PeopleSearchRequest.new(params).to_h,
411
+ request_options: request_options
412
+ )
413
+ begin
414
+ response = @client.send(request)
415
+ rescue Net::HTTPRequestTimeout
416
+ raise Payabli::Errors::TimeoutError
417
+ end
418
+ code = response.code.to_i
419
+ if code.between?(200, 299)
420
+ Payabli::Types::PeopleSearchEnvelope.load(response.body)
421
+ else
422
+ error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
423
+ raise error_class.new(response.body, code: code)
424
+ end
425
+ end
426
+ end
427
+ end
428
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
5
+ module Types
6
+ class CreatePersonRequest < Internal::Types::Model
7
+ field :first_name, -> { String }, optional: false, nullable: false, api_name: "firstName"
8
+
9
+ field :middle_name, -> { String }, optional: true, nullable: false, api_name: "middleName"
10
+
11
+ field :last_name, -> { String }, optional: false, nullable: false, api_name: "lastName"
12
+
13
+ field :primary_email, -> { String }, optional: true, nullable: false, api_name: "primaryEmail"
14
+
15
+ field :secondary_email, -> { String }, optional: true, nullable: false, api_name: "secondaryEmail"
16
+
17
+ field :primary_phone_number, -> { String }, optional: true, nullable: false, api_name: "primaryPhoneNumber"
18
+
19
+ field :secondary_phone_number, -> { String }, optional: true, nullable: false, api_name: "secondaryPhoneNumber"
20
+
21
+ field :date_of_birth, -> { String }, optional: true, nullable: false, api_name: "dateOfBirth"
22
+
23
+ field :ssn, -> { String }, optional: true, nullable: false
24
+
25
+ field :nationality, -> { String }, optional: true, nullable: false
26
+
27
+ field :national_id_number, -> { String }, optional: true, nullable: false, api_name: "nationalIdNumber"
28
+
29
+ field :national_id_issuer, -> { String }, optional: true, nullable: false, api_name: "nationalIdIssuer"
30
+
31
+ field :drivers_license_number, -> { String }, optional: true, nullable: false, api_name: "driversLicenseNumber"
32
+
33
+ field :drivers_license_state, -> { String }, optional: true, nullable: false, api_name: "driversLicenseState"
34
+
35
+ field :external_id, -> { String }, optional: true, nullable: false, api_name: "externalId"
36
+
37
+ field :custom_data, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false, api_name: "customData"
38
+
39
+ field :addresses, -> { Internal::Types::Array[Payabli::Types::PersonAddressRequest] }, optional: true, nullable: false
40
+
41
+ field :identification_documents, -> { Internal::Types::Array[Payabli::Types::IdentificationDocumentRequest] }, optional: true, nullable: false, api_name: "identificationDocuments"
42
+
43
+ field :business_relationship, -> { Payabli::Types::BusinessRelationshipRequest }, optional: true, nullable: false, api_name: "businessRelationship"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
5
+ module Types
6
+ class ListPeoplePeopleRequest < Internal::Types::Model
7
+ field :name, -> { String }, optional: true, nullable: false
8
+
9
+ field :email, -> { String }, optional: true, nullable: false
10
+
11
+ field :verification_status, -> { String }, optional: true, nullable: false, api_name: "verificationStatus"
12
+
13
+ field :limit, -> { Integer }, optional: true, nullable: false
14
+
15
+ field :page, -> { Integer }, optional: true, nullable: false
16
+
17
+ field :sort_by, -> { String }, optional: true, nullable: false, api_name: "sortBy"
18
+
19
+ field :sort_order, -> { String }, optional: true, nullable: false, api_name: "sortOrder"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
5
+ module Types
6
+ class SearchPeopleRequest < Internal::Types::Model
7
+ field :entry, -> { String }, optional: false, nullable: false
8
+
9
+ field :org_id, -> { Integer }, optional: false, nullable: false, api_name: "orgId"
10
+
11
+ field :body, -> { Payabli::Types::PeopleSearchRequest }, optional: false, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
5
+ module Types
6
+ class SearchPeopleUnmaskedRequest < Internal::Types::Model
7
+ field :entry, -> { String }, optional: false, nullable: false
8
+
9
+ field :org_id, -> { Integer }, optional: false, nullable: false, api_name: "orgId"
10
+
11
+ field :body, -> { Payabli::Types::PeopleSearchRequest }, optional: false, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module People
5
+ module Types
6
+ class UpdatePersonRequest < Internal::Types::Model
7
+ field :person_reference, -> { String }, optional: false, nullable: false, api_name: "personReference"
8
+
9
+ field :first_name, -> { String }, optional: true, nullable: false, api_name: "firstName"
10
+
11
+ field :middle_name, -> { String }, optional: true, nullable: false, api_name: "middleName"
12
+
13
+ field :last_name, -> { String }, optional: true, nullable: false, api_name: "lastName"
14
+
15
+ field :primary_email, -> { String }, optional: true, nullable: false, api_name: "primaryEmail"
16
+
17
+ field :secondary_email, -> { String }, optional: true, nullable: false, api_name: "secondaryEmail"
18
+
19
+ field :primary_phone_number, -> { String }, optional: true, nullable: false, api_name: "primaryPhoneNumber"
20
+
21
+ field :secondary_phone_number, -> { String }, optional: true, nullable: false, api_name: "secondaryPhoneNumber"
22
+
23
+ field :nationality, -> { String }, optional: true, nullable: false
24
+
25
+ field :national_id_issuer, -> { String }, optional: true, nullable: false, api_name: "nationalIdIssuer"
26
+
27
+ field :drivers_license_number, -> { String }, optional: true, nullable: false, api_name: "driversLicenseNumber"
28
+
29
+ field :drivers_license_state, -> { String }, optional: true, nullable: false, api_name: "driversLicenseState"
30
+
31
+ field :external_id, -> { String }, optional: true, nullable: false, api_name: "externalId"
32
+
33
+ field :custom_data, -> { Internal::Types::Hash[String, Object] }, optional: true, nullable: false, api_name: "customData"
34
+
35
+ field :addresses, -> { Internal::Types::Array[Payabli::Types::PersonAddressRequest] }, optional: true, nullable: false
36
+
37
+ field :identification_documents, -> { Internal::Types::Array[Payabli::Types::IdentificationDocumentRequest] }, optional: true, nullable: false, api_name: "identificationDocuments"
38
+ end
39
+ end
40
+ end
41
+ end
@@ -6,6 +6,8 @@ module Payabli
6
6
  class RequestUpdateSchedule < Internal::Types::Model
7
7
  field :sub_id, -> { Integer }, optional: false, nullable: false, api_name: "subId"
8
8
 
9
+ field :invoice_data, -> { Payabli::Types::BillData }, optional: true, nullable: false, api_name: "invoiceData"
10
+
9
11
  field :payment_details, -> { Payabli::Types::PaymentDetail }, optional: true, nullable: false, api_name: "paymentDetails"
10
12
 
11
13
  field :schedule_details, -> { Payabli::Types::ScheduleDetail }, optional: true, nullable: false, api_name: "scheduleDetails"
@@ -10,6 +10,12 @@ module Payabli
10
10
  @client = client
11
11
  end
12
12
 
13
+ # <Warning>
14
+ # Legacy boarding is deprecated and will be sunset in Q2 2027. Use [Archive a
15
+ # template](/developers/api-reference/boarding-templates/archive-a-template) instead.
16
+ # </Warning>
17
+ #
18
+ #
13
19
  # Deletes a template by ID.
14
20
  #
15
21
  # @param request_options [Hash]
@@ -49,6 +55,13 @@ module Payabli
49
55
  end
50
56
  end
51
57
 
58
+ # <Warning>
59
+ # Legacy boarding is deprecated and will be sunset in Q2 2027. Intelligent boarding has no matching endpoint. Each
60
+ # application has its own hosted form link instead. See [Send merchants a boarding
61
+ # link](/guides/pay-ops-developer-boarding-legacy-migrate#send-merchants-a-boarding-link).
62
+ # </Warning>
63
+ #
64
+ #
52
65
  # Generates a boarding link from a boarding template.
53
66
  #
54
67
  # @param request_options [Hash]
@@ -92,6 +105,12 @@ module Payabli
92
105
  end
93
106
  end
94
107
 
108
+ # <Warning>
109
+ # Legacy boarding is deprecated and will be sunset in Q2 2027. Use [Get a
110
+ # template](/developers/api-reference/boarding-templates/get-a-template) instead.
111
+ # </Warning>
112
+ #
113
+ #
95
114
  # Retrieves a boarding template's details by ID.
96
115
  #
97
116
  # @param request_options [Hash]
@@ -131,6 +150,12 @@ module Payabli
131
150
  end
132
151
  end
133
152
 
153
+ # <Warning>
154
+ # Legacy boarding is deprecated and will be sunset in Q2 2027. Use [List
155
+ # templates](/developers/api-reference/boarding-templates/list-templates) instead.
156
+ # </Warning>
157
+ #
158
+ #
134
159
  # Retrieves a list of boarding templates for an organization. Use filters to limit results. You can't make a
135
160
  # request that includes filters from the API console in the documentation. The response won't be filtered.
136
161
  # Instead, copy the request, remove `parameters=` and run the request in a different client.
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Payabli
4
+ module Types
5
+ module AddressType
6
+ extend Payabli::Internal::Types::Enum
7
+
8
+ LEGAL = "legal"
9
+ BILLING = "billing"
10
+ SHIPPING = "shipping"
11
+ REMITTANCE = "remittance"
12
+ PHYSICAL = "physical"
13
+ MAILING = "mailing"
14
+ end
15
+ end
16
+ end