square.rb 26.1.0.20230119 → 26.2.0.20230315

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/lib/square/api/apple_pay_api.rb +14 -30
  3. data/lib/square/api/bank_accounts_api.rb +40 -90
  4. data/lib/square/api/base_api.rb +42 -42
  5. data/lib/square/api/booking_custom_attributes_api.rb +164 -329
  6. data/lib/square/api/bookings_api.rb +135 -260
  7. data/lib/square/api/cards_api.rb +56 -118
  8. data/lib/square/api/cash_drawers_api.rb +47 -103
  9. data/lib/square/api/catalog_api.rb +197 -423
  10. data/lib/square/api/checkout_api.rb +85 -175
  11. data/lib/square/api/customer_custom_attributes_api.rb +150 -303
  12. data/lib/square/api/customer_groups_api.rb +69 -145
  13. data/lib/square/api/customer_segments_api.rb +26 -61
  14. data/lib/square/api/customers_api.rb +147 -294
  15. data/lib/square/api/devices_api.rb +42 -89
  16. data/lib/square/api/disputes_api.rb +130 -288
  17. data/lib/square/api/employees_api.rb +28 -63
  18. data/lib/square/api/gift_card_activities_api.rb +33 -65
  19. data/lib/square/api/gift_cards_api.rb +103 -202
  20. data/lib/square/api/inventory_api.rb +179 -366
  21. data/lib/square/api/invoices_api.rb +118 -237
  22. data/lib/square/api/labor_api.rb +223 -459
  23. data/lib/square/api/location_custom_attributes_api.rb +166 -331
  24. data/lib/square/api/locations_api.rb +54 -112
  25. data/lib/square/api/loyalty_api.rb +259 -512
  26. data/lib/square/api/merchants_api.rb +25 -60
  27. data/lib/square/api/mobile_authorization_api.rb +14 -30
  28. data/lib/square/api/o_auth_api.rb +54 -109
  29. data/lib/square/api/order_custom_attributes_api.rb +168 -333
  30. data/lib/square/api/orders_api.rb +115 -222
  31. data/lib/square/api/payments_api.rb +106 -208
  32. data/lib/square/api/payouts_api.rb +47 -100
  33. data/lib/square/api/refunds_api.rb +46 -93
  34. data/lib/square/api/sites_api.rb +11 -28
  35. data/lib/square/api/snippets_api.rb +42 -90
  36. data/lib/square/api/subscriptions_api.rb +150 -299
  37. data/lib/square/api/team_api.rb +114 -224
  38. data/lib/square/api/terminal_api.rb +162 -328
  39. data/lib/square/api/transactions_api.rb +62 -126
  40. data/lib/square/api/v1_transactions_api.rb +155 -296
  41. data/lib/square/api/vendors_api.rb +99 -192
  42. data/lib/square/api/webhook_subscriptions_api.rb +115 -235
  43. data/lib/square/api_helper.rb +1 -437
  44. data/lib/square/client.rb +77 -47
  45. data/lib/square/configuration.rb +28 -53
  46. data/lib/square/exceptions/api_exception.rb +1 -11
  47. data/lib/square/http/api_response.rb +13 -19
  48. data/lib/square/http/auth/o_auth2.rb +14 -7
  49. data/lib/square/http/http_call_back.rb +1 -15
  50. data/lib/square/http/http_method_enum.rb +1 -4
  51. data/lib/square/http/http_request.rb +1 -45
  52. data/lib/square/http/http_response.rb +1 -20
  53. data/lib/square/utilities/date_time_helper.rb +1 -146
  54. data/lib/square/utilities/file_wrapper.rb +5 -5
  55. data/lib/square.rb +6 -6
  56. data/spec/user_journey_spec.rb +2 -2
  57. data/test/api/api_test_base.rb +13 -5
  58. data/test/api/test_catalog_api.rb +5 -4
  59. data/test/api/test_customers_api.rb +3 -2
  60. data/test/api/test_employees_api.rb +4 -3
  61. data/test/api/test_labor_api.rb +6 -5
  62. data/test/api/test_locations_api.rb +3 -2
  63. data/test/api/test_merchants_api.rb +4 -3
  64. data/test/api/test_payments_api.rb +4 -3
  65. data/test/api/test_refunds_api.rb +4 -3
  66. metadata +11 -111
  67. data/lib/square/exceptions/validation_exception.rb +0 -13
  68. data/lib/square/http/faraday_client.rb +0 -93
  69. data/lib/square/http/http_client.rb +0 -118
  70. data/test/test_helper.rb +0 -89
@@ -1,10 +1,6 @@
1
1
  module Square
2
2
  # BookingsApi
3
3
  class BookingsApi < BaseApi
4
- def initialize(config, http_call_back: nil)
5
- super(config, http_call_back: http_call_back)
6
- end
7
-
8
4
  # Retrieve a collection of bookings.
9
5
  # To call this endpoint with buyer-level permissions, set
10
6
  # `APPOINTMENTS_READ` for the OAuth scope.
@@ -34,42 +30,32 @@ module Square
34
30
  location_id: nil,
35
31
  start_at_min: nil,
36
32
  start_at_max: nil)
37
- # Prepare query url.
38
- _query_builder = config.get_base_uri
39
- _query_builder << '/v2/bookings'
40
- _query_builder = APIHelper.append_url_with_query_parameters(
41
- _query_builder,
42
- 'limit' => limit,
43
- 'cursor' => cursor,
44
- 'team_member_id' => team_member_id,
45
- 'location_id' => location_id,
46
- 'start_at_min' => start_at_min,
47
- 'start_at_max' => start_at_max
48
- )
49
- _query_url = APIHelper.clean_url _query_builder
50
-
51
- # Prepare headers.
52
- _headers = {
53
- 'accept' => 'application/json'
54
- }
55
-
56
- # Prepare and execute HttpRequest.
57
- _request = config.http_client.get(
58
- _query_url,
59
- headers: _headers
60
- )
61
- OAuth2.apply(config, _request)
62
- _response = execute_request(_request)
63
-
64
- # Return appropriate response type.
65
- decoded = APIHelper.json_deserialize(_response.raw_body)
66
- _errors = APIHelper.map_response(decoded, ['errors'])
67
- ApiResponse.new(
68
- _response, data: decoded, errors: _errors
69
- )
33
+ new_api_call_builder
34
+ .request(new_request_builder(HttpMethodEnum::GET,
35
+ '/v2/bookings',
36
+ 'default')
37
+ .query_param(new_parameter(limit, key: 'limit'))
38
+ .query_param(new_parameter(cursor, key: 'cursor'))
39
+ .query_param(new_parameter(team_member_id, key: 'team_member_id'))
40
+ .query_param(new_parameter(location_id, key: 'location_id'))
41
+ .query_param(new_parameter(start_at_min, key: 'start_at_min'))
42
+ .query_param(new_parameter(start_at_max, key: 'start_at_max'))
43
+ .header_param(new_parameter('application/json', key: 'accept'))
44
+ .auth(Single.new('global')))
45
+ .response(new_response_handler
46
+ .deserializer(APIHelper.method(:json_deserialize))
47
+ .is_api_response(true)
48
+ .convertor(ApiResponse.method(:create)))
49
+ .execute
70
50
  end
71
51
 
72
52
  # Creates a booking.
53
+ # The required input must include the following:
54
+ # - `Booking.location_id`,
55
+ # - `Booking.start_at`,
56
+ # - `Booking.team_member_id`
57
+ # - `Booking.AppointmentSegment.service_variation_id`
58
+ # - `Booking.AppointmentSegment.service_variation_version`
73
59
  # To call this endpoint with buyer-level permissions, set
74
60
  # `APPOINTMENTS_WRITE` for the OAuth scope.
75
61
  # To call this endpoint with seller-level permissions, set
@@ -82,32 +68,20 @@ module Square
82
68
  # object definition for field details.
83
69
  # @return [CreateBookingResponse Hash] response from the API call
84
70
  def create_booking(body:)
85
- # Prepare query url.
86
- _query_builder = config.get_base_uri
87
- _query_builder << '/v2/bookings'
88
- _query_url = APIHelper.clean_url _query_builder
89
-
90
- # Prepare headers.
91
- _headers = {
92
- 'accept' => 'application/json',
93
- 'Content-Type' => 'application/json'
94
- }
95
-
96
- # Prepare and execute HttpRequest.
97
- _request = config.http_client.post(
98
- _query_url,
99
- headers: _headers,
100
- parameters: body.to_json
101
- )
102
- OAuth2.apply(config, _request)
103
- _response = execute_request(_request)
104
-
105
- # Return appropriate response type.
106
- decoded = APIHelper.json_deserialize(_response.raw_body)
107
- _errors = APIHelper.map_response(decoded, ['errors'])
108
- ApiResponse.new(
109
- _response, data: decoded, errors: _errors
110
- )
71
+ new_api_call_builder
72
+ .request(new_request_builder(HttpMethodEnum::POST,
73
+ '/v2/bookings',
74
+ 'default')
75
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
76
+ .body_param(new_parameter(body))
77
+ .header_param(new_parameter('application/json', key: 'accept'))
78
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
79
+ .auth(Single.new('global')))
80
+ .response(new_response_handler
81
+ .deserializer(APIHelper.method(:json_deserialize))
82
+ .is_api_response(true)
83
+ .convertor(ApiResponse.method(:create)))
84
+ .execute
111
85
  end
112
86
 
113
87
  # Searches for availabilities for booking.
@@ -120,61 +94,36 @@ module Square
120
94
  # object definition for field details.
121
95
  # @return [SearchAvailabilityResponse Hash] response from the API call
122
96
  def search_availability(body:)
123
- # Prepare query url.
124
- _query_builder = config.get_base_uri
125
- _query_builder << '/v2/bookings/availability/search'
126
- _query_url = APIHelper.clean_url _query_builder
127
-
128
- # Prepare headers.
129
- _headers = {
130
- 'accept' => 'application/json',
131
- 'Content-Type' => 'application/json'
132
- }
133
-
134
- # Prepare and execute HttpRequest.
135
- _request = config.http_client.post(
136
- _query_url,
137
- headers: _headers,
138
- parameters: body.to_json
139
- )
140
- OAuth2.apply(config, _request)
141
- _response = execute_request(_request)
142
-
143
- # Return appropriate response type.
144
- decoded = APIHelper.json_deserialize(_response.raw_body)
145
- _errors = APIHelper.map_response(decoded, ['errors'])
146
- ApiResponse.new(
147
- _response, data: decoded, errors: _errors
148
- )
97
+ new_api_call_builder
98
+ .request(new_request_builder(HttpMethodEnum::POST,
99
+ '/v2/bookings/availability/search',
100
+ 'default')
101
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
102
+ .body_param(new_parameter(body))
103
+ .header_param(new_parameter('application/json', key: 'accept'))
104
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
105
+ .auth(Single.new('global')))
106
+ .response(new_response_handler
107
+ .deserializer(APIHelper.method(:json_deserialize))
108
+ .is_api_response(true)
109
+ .convertor(ApiResponse.method(:create)))
110
+ .execute
149
111
  end
150
112
 
151
113
  # Retrieves a seller's booking profile.
152
114
  # @return [RetrieveBusinessBookingProfileResponse Hash] response from the API call
153
115
  def retrieve_business_booking_profile
154
- # Prepare query url.
155
- _query_builder = config.get_base_uri
156
- _query_builder << '/v2/bookings/business-booking-profile'
157
- _query_url = APIHelper.clean_url _query_builder
158
-
159
- # Prepare headers.
160
- _headers = {
161
- 'accept' => 'application/json'
162
- }
163
-
164
- # Prepare and execute HttpRequest.
165
- _request = config.http_client.get(
166
- _query_url,
167
- headers: _headers
168
- )
169
- OAuth2.apply(config, _request)
170
- _response = execute_request(_request)
171
-
172
- # Return appropriate response type.
173
- decoded = APIHelper.json_deserialize(_response.raw_body)
174
- _errors = APIHelper.map_response(decoded, ['errors'])
175
- ApiResponse.new(
176
- _response, data: decoded, errors: _errors
177
- )
116
+ new_api_call_builder
117
+ .request(new_request_builder(HttpMethodEnum::GET,
118
+ '/v2/bookings/business-booking-profile',
119
+ 'default')
120
+ .header_param(new_parameter('application/json', key: 'accept'))
121
+ .auth(Single.new('global')))
122
+ .response(new_response_handler
123
+ .deserializer(APIHelper.method(:json_deserialize))
124
+ .is_api_response(true)
125
+ .convertor(ApiResponse.method(:create)))
126
+ .execute
178
127
  end
179
128
 
180
129
  # Lists booking profiles for team members.
@@ -194,37 +143,21 @@ module Square
194
143
  limit: nil,
195
144
  cursor: nil,
196
145
  location_id: nil)
197
- # Prepare query url.
198
- _query_builder = config.get_base_uri
199
- _query_builder << '/v2/bookings/team-member-booking-profiles'
200
- _query_builder = APIHelper.append_url_with_query_parameters(
201
- _query_builder,
202
- 'bookable_only' => bookable_only,
203
- 'limit' => limit,
204
- 'cursor' => cursor,
205
- 'location_id' => location_id
206
- )
207
- _query_url = APIHelper.clean_url _query_builder
208
-
209
- # Prepare headers.
210
- _headers = {
211
- 'accept' => 'application/json'
212
- }
213
-
214
- # Prepare and execute HttpRequest.
215
- _request = config.http_client.get(
216
- _query_url,
217
- headers: _headers
218
- )
219
- OAuth2.apply(config, _request)
220
- _response = execute_request(_request)
221
-
222
- # Return appropriate response type.
223
- decoded = APIHelper.json_deserialize(_response.raw_body)
224
- _errors = APIHelper.map_response(decoded, ['errors'])
225
- ApiResponse.new(
226
- _response, data: decoded, errors: _errors
227
- )
146
+ new_api_call_builder
147
+ .request(new_request_builder(HttpMethodEnum::GET,
148
+ '/v2/bookings/team-member-booking-profiles',
149
+ 'default')
150
+ .query_param(new_parameter(bookable_only, key: 'bookable_only'))
151
+ .query_param(new_parameter(limit, key: 'limit'))
152
+ .query_param(new_parameter(cursor, key: 'cursor'))
153
+ .query_param(new_parameter(location_id, key: 'location_id'))
154
+ .header_param(new_parameter('application/json', key: 'accept'))
155
+ .auth(Single.new('global')))
156
+ .response(new_response_handler
157
+ .deserializer(APIHelper.method(:json_deserialize))
158
+ .is_api_response(true)
159
+ .convertor(ApiResponse.method(:create)))
160
+ .execute
228
161
  end
229
162
 
230
163
  # Retrieves a team member's booking profile.
@@ -232,34 +165,19 @@ module Square
232
165
  # member to retrieve.
233
166
  # @return [RetrieveTeamMemberBookingProfileResponse Hash] response from the API call
234
167
  def retrieve_team_member_booking_profile(team_member_id:)
235
- # Prepare query url.
236
- _query_builder = config.get_base_uri
237
- _query_builder << '/v2/bookings/team-member-booking-profiles/{team_member_id}'
238
- _query_builder = APIHelper.append_url_with_template_parameters(
239
- _query_builder,
240
- 'team_member_id' => { 'value' => team_member_id, 'encode' => true }
241
- )
242
- _query_url = APIHelper.clean_url _query_builder
243
-
244
- # Prepare headers.
245
- _headers = {
246
- 'accept' => 'application/json'
247
- }
248
-
249
- # Prepare and execute HttpRequest.
250
- _request = config.http_client.get(
251
- _query_url,
252
- headers: _headers
253
- )
254
- OAuth2.apply(config, _request)
255
- _response = execute_request(_request)
256
-
257
- # Return appropriate response type.
258
- decoded = APIHelper.json_deserialize(_response.raw_body)
259
- _errors = APIHelper.map_response(decoded, ['errors'])
260
- ApiResponse.new(
261
- _response, data: decoded, errors: _errors
262
- )
168
+ new_api_call_builder
169
+ .request(new_request_builder(HttpMethodEnum::GET,
170
+ '/v2/bookings/team-member-booking-profiles/{team_member_id}',
171
+ 'default')
172
+ .template_param(new_parameter(team_member_id, key: 'team_member_id')
173
+ .should_encode(true))
174
+ .header_param(new_parameter('application/json', key: 'accept'))
175
+ .auth(Single.new('global')))
176
+ .response(new_response_handler
177
+ .deserializer(APIHelper.method(:json_deserialize))
178
+ .is_api_response(true)
179
+ .convertor(ApiResponse.method(:create)))
180
+ .execute
263
181
  end
264
182
 
265
183
  # Retrieves a booking.
@@ -271,34 +189,19 @@ module Square
271
189
  # [Booking]($m/Booking) object representing the to-be-retrieved booking.
272
190
  # @return [RetrieveBookingResponse Hash] response from the API call
273
191
  def retrieve_booking(booking_id:)
274
- # Prepare query url.
275
- _query_builder = config.get_base_uri
276
- _query_builder << '/v2/bookings/{booking_id}'
277
- _query_builder = APIHelper.append_url_with_template_parameters(
278
- _query_builder,
279
- 'booking_id' => { 'value' => booking_id, 'encode' => true }
280
- )
281
- _query_url = APIHelper.clean_url _query_builder
282
-
283
- # Prepare headers.
284
- _headers = {
285
- 'accept' => 'application/json'
286
- }
287
-
288
- # Prepare and execute HttpRequest.
289
- _request = config.http_client.get(
290
- _query_url,
291
- headers: _headers
292
- )
293
- OAuth2.apply(config, _request)
294
- _response = execute_request(_request)
295
-
296
- # Return appropriate response type.
297
- decoded = APIHelper.json_deserialize(_response.raw_body)
298
- _errors = APIHelper.map_response(decoded, ['errors'])
299
- ApiResponse.new(
300
- _response, data: decoded, errors: _errors
301
- )
192
+ new_api_call_builder
193
+ .request(new_request_builder(HttpMethodEnum::GET,
194
+ '/v2/bookings/{booking_id}',
195
+ 'default')
196
+ .template_param(new_parameter(booking_id, key: 'booking_id')
197
+ .should_encode(true))
198
+ .header_param(new_parameter('application/json', key: 'accept'))
199
+ .auth(Single.new('global')))
200
+ .response(new_response_handler
201
+ .deserializer(APIHelper.method(:json_deserialize))
202
+ .is_api_response(true)
203
+ .convertor(ApiResponse.method(:create)))
204
+ .execute
302
205
  end
303
206
 
304
207
  # Updates a booking.
@@ -317,36 +220,22 @@ module Square
317
220
  # @return [UpdateBookingResponse Hash] response from the API call
318
221
  def update_booking(booking_id:,
319
222
  body:)
320
- # Prepare query url.
321
- _query_builder = config.get_base_uri
322
- _query_builder << '/v2/bookings/{booking_id}'
323
- _query_builder = APIHelper.append_url_with_template_parameters(
324
- _query_builder,
325
- 'booking_id' => { 'value' => booking_id, 'encode' => true }
326
- )
327
- _query_url = APIHelper.clean_url _query_builder
328
-
329
- # Prepare headers.
330
- _headers = {
331
- 'accept' => 'application/json',
332
- 'Content-Type' => 'application/json'
333
- }
334
-
335
- # Prepare and execute HttpRequest.
336
- _request = config.http_client.put(
337
- _query_url,
338
- headers: _headers,
339
- parameters: body.to_json
340
- )
341
- OAuth2.apply(config, _request)
342
- _response = execute_request(_request)
343
-
344
- # Return appropriate response type.
345
- decoded = APIHelper.json_deserialize(_response.raw_body)
346
- _errors = APIHelper.map_response(decoded, ['errors'])
347
- ApiResponse.new(
348
- _response, data: decoded, errors: _errors
349
- )
223
+ new_api_call_builder
224
+ .request(new_request_builder(HttpMethodEnum::PUT,
225
+ '/v2/bookings/{booking_id}',
226
+ 'default')
227
+ .template_param(new_parameter(booking_id, key: 'booking_id')
228
+ .should_encode(true))
229
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
230
+ .body_param(new_parameter(body))
231
+ .header_param(new_parameter('application/json', key: 'accept'))
232
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
233
+ .auth(Single.new('global')))
234
+ .response(new_response_handler
235
+ .deserializer(APIHelper.method(:json_deserialize))
236
+ .is_api_response(true)
237
+ .convertor(ApiResponse.method(:create)))
238
+ .execute
350
239
  end
351
240
 
352
241
  # Cancels an existing booking.
@@ -365,36 +254,22 @@ module Square
365
254
  # @return [CancelBookingResponse Hash] response from the API call
366
255
  def cancel_booking(booking_id:,
367
256
  body:)
368
- # Prepare query url.
369
- _query_builder = config.get_base_uri
370
- _query_builder << '/v2/bookings/{booking_id}/cancel'
371
- _query_builder = APIHelper.append_url_with_template_parameters(
372
- _query_builder,
373
- 'booking_id' => { 'value' => booking_id, 'encode' => true }
374
- )
375
- _query_url = APIHelper.clean_url _query_builder
376
-
377
- # Prepare headers.
378
- _headers = {
379
- 'accept' => 'application/json',
380
- 'Content-Type' => 'application/json'
381
- }
382
-
383
- # Prepare and execute HttpRequest.
384
- _request = config.http_client.post(
385
- _query_url,
386
- headers: _headers,
387
- parameters: body.to_json
388
- )
389
- OAuth2.apply(config, _request)
390
- _response = execute_request(_request)
391
-
392
- # Return appropriate response type.
393
- decoded = APIHelper.json_deserialize(_response.raw_body)
394
- _errors = APIHelper.map_response(decoded, ['errors'])
395
- ApiResponse.new(
396
- _response, data: decoded, errors: _errors
397
- )
257
+ new_api_call_builder
258
+ .request(new_request_builder(HttpMethodEnum::POST,
259
+ '/v2/bookings/{booking_id}/cancel',
260
+ 'default')
261
+ .template_param(new_parameter(booking_id, key: 'booking_id')
262
+ .should_encode(true))
263
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
264
+ .body_param(new_parameter(body))
265
+ .header_param(new_parameter('application/json', key: 'accept'))
266
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
267
+ .auth(Single.new('global')))
268
+ .response(new_response_handler
269
+ .deserializer(APIHelper.method(:json_deserialize))
270
+ .is_api_response(true)
271
+ .convertor(ApiResponse.method(:create)))
272
+ .execute
398
273
  end
399
274
  end
400
275
  end