square.rb 26.1.0.20230119 → 27.0.0.20230419

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/lib/square/api/apple_pay_api.rb +14 -30
  4. data/lib/square/api/bank_accounts_api.rb +40 -90
  5. data/lib/square/api/base_api.rb +42 -42
  6. data/lib/square/api/booking_custom_attributes_api.rb +171 -336
  7. data/lib/square/api/bookings_api.rb +140 -263
  8. data/lib/square/api/cards_api.rb +58 -120
  9. data/lib/square/api/cash_drawers_api.rb +47 -103
  10. data/lib/square/api/catalog_api.rb +200 -426
  11. data/lib/square/api/checkout_api.rb +86 -176
  12. data/lib/square/api/customer_custom_attributes_api.rb +157 -310
  13. data/lib/square/api/customer_groups_api.rb +69 -145
  14. data/lib/square/api/customer_segments_api.rb +26 -61
  15. data/lib/square/api/customers_api.rb +147 -294
  16. data/lib/square/api/devices_api.rb +42 -89
  17. data/lib/square/api/disputes_api.rb +132 -290
  18. data/lib/square/api/employees_api.rb +28 -63
  19. data/lib/square/api/gift_card_activities_api.rb +34 -66
  20. data/lib/square/api/gift_cards_api.rb +109 -207
  21. data/lib/square/api/inventory_api.rb +204 -391
  22. data/lib/square/api/invoices_api.rb +121 -240
  23. data/lib/square/api/labor_api.rb +223 -459
  24. data/lib/square/api/location_custom_attributes_api.rb +173 -338
  25. data/lib/square/api/locations_api.rb +54 -112
  26. data/lib/square/api/loyalty_api.rb +283 -535
  27. data/lib/square/api/merchants_api.rb +25 -60
  28. data/lib/square/api/mobile_authorization_api.rb +14 -30
  29. data/lib/square/api/o_auth_api.rb +54 -109
  30. data/lib/square/api/order_custom_attributes_api.rb +174 -339
  31. data/lib/square/api/orders_api.rb +115 -222
  32. data/lib/square/api/payments_api.rb +118 -217
  33. data/lib/square/api/payouts_api.rb +54 -107
  34. data/lib/square/api/refunds_api.rb +59 -104
  35. data/lib/square/api/sites_api.rb +11 -28
  36. data/lib/square/api/snippets_api.rb +42 -90
  37. data/lib/square/api/subscriptions_api.rb +150 -299
  38. data/lib/square/api/team_api.rb +114 -224
  39. data/lib/square/api/terminal_api.rb +162 -328
  40. data/lib/square/api/transactions_api.rb +64 -128
  41. data/lib/square/api/v1_transactions_api.rb +155 -296
  42. data/lib/square/api/vendors_api.rb +100 -193
  43. data/lib/square/api/webhook_subscriptions_api.rb +124 -244
  44. data/lib/square/api_helper.rb +1 -437
  45. data/lib/square/client.rb +77 -47
  46. data/lib/square/configuration.rb +28 -53
  47. data/lib/square/exceptions/api_exception.rb +1 -11
  48. data/lib/square/http/api_response.rb +13 -19
  49. data/lib/square/http/auth/o_auth2.rb +14 -7
  50. data/lib/square/http/http_call_back.rb +1 -15
  51. data/lib/square/http/http_method_enum.rb +1 -4
  52. data/lib/square/http/http_request.rb +1 -45
  53. data/lib/square/http/http_response.rb +1 -20
  54. data/lib/square/utilities/date_time_helper.rb +1 -146
  55. data/lib/square/utilities/file_wrapper.rb +5 -5
  56. data/lib/square.rb +6 -6
  57. data/spec/user_journey_spec.rb +2 -2
  58. data/test/api/api_test_base.rb +13 -5
  59. data/test/api/test_catalog_api.rb +5 -4
  60. data/test/api/test_customers_api.rb +3 -2
  61. data/test/api/test_employees_api.rb +4 -3
  62. data/test/api/test_labor_api.rb +6 -5
  63. data/test/api/test_locations_api.rb +3 -2
  64. data/test/api/test_merchants_api.rb +4 -3
  65. data/test/api/test_payments_api.rb +4 -3
  66. data/test/api/test_refunds_api.rb +4 -3
  67. metadata +11 -111
  68. data/lib/square/exceptions/validation_exception.rb +0 -13
  69. data/lib/square/http/faraday_client.rb +0 -93
  70. data/lib/square/http/http_client.rb +0 -118
  71. 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.
@@ -268,37 +186,23 @@ module Square
268
186
  # To call this endpoint with seller-level permissions, set
269
187
  # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
270
188
  # @param [String] booking_id Required parameter: The ID of the
271
- # [Booking]($m/Booking) object representing the to-be-retrieved booking.
189
+ # [Booking](entity:Booking) object representing the to-be-retrieved
190
+ # booking.
272
191
  # @return [RetrieveBookingResponse Hash] response from the API call
273
192
  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
- )
193
+ new_api_call_builder
194
+ .request(new_request_builder(HttpMethodEnum::GET,
195
+ '/v2/bookings/{booking_id}',
196
+ 'default')
197
+ .template_param(new_parameter(booking_id, key: 'booking_id')
198
+ .should_encode(true))
199
+ .header_param(new_parameter('application/json', key: 'accept'))
200
+ .auth(Single.new('global')))
201
+ .response(new_response_handler
202
+ .deserializer(APIHelper.method(:json_deserialize))
203
+ .is_api_response(true)
204
+ .convertor(ApiResponse.method(:create)))
205
+ .execute
302
206
  end
303
207
 
304
208
  # Updates a booking.
@@ -310,43 +214,29 @@ module Square
310
214
  # seller must have subscribed to *Appointments Plus*
311
215
  # or *Appointments Premium*.
312
216
  # @param [String] booking_id Required parameter: The ID of the
313
- # [Booking]($m/Booking) object representing the to-be-updated booking.
217
+ # [Booking](entity:Booking) object representing the to-be-updated booking.
314
218
  # @param [UpdateBookingRequest] body Required parameter: An object
315
219
  # containing the fields to POST for the request. See the corresponding
316
220
  # object definition for field details.
317
221
  # @return [UpdateBookingResponse Hash] response from the API call
318
222
  def update_booking(booking_id:,
319
223
  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
- )
224
+ new_api_call_builder
225
+ .request(new_request_builder(HttpMethodEnum::PUT,
226
+ '/v2/bookings/{booking_id}',
227
+ 'default')
228
+ .template_param(new_parameter(booking_id, key: 'booking_id')
229
+ .should_encode(true))
230
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
231
+ .body_param(new_parameter(body))
232
+ .header_param(new_parameter('application/json', key: 'accept'))
233
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
234
+ .auth(Single.new('global')))
235
+ .response(new_response_handler
236
+ .deserializer(APIHelper.method(:json_deserialize))
237
+ .is_api_response(true)
238
+ .convertor(ApiResponse.method(:create)))
239
+ .execute
350
240
  end
351
241
 
352
242
  # Cancels an existing booking.
@@ -358,43 +248,30 @@ module Square
358
248
  # seller must have subscribed to *Appointments Plus*
359
249
  # or *Appointments Premium*.
360
250
  # @param [String] booking_id Required parameter: The ID of the
361
- # [Booking]($m/Booking) object representing the to-be-cancelled booking.
251
+ # [Booking](entity:Booking) object representing the to-be-cancelled
252
+ # booking.
362
253
  # @param [CancelBookingRequest] body Required parameter: An object
363
254
  # containing the fields to POST for the request. See the corresponding
364
255
  # object definition for field details.
365
256
  # @return [CancelBookingResponse Hash] response from the API call
366
257
  def cancel_booking(booking_id:,
367
258
  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
- )
259
+ new_api_call_builder
260
+ .request(new_request_builder(HttpMethodEnum::POST,
261
+ '/v2/bookings/{booking_id}/cancel',
262
+ 'default')
263
+ .template_param(new_parameter(booking_id, key: 'booking_id')
264
+ .should_encode(true))
265
+ .header_param(new_parameter('application/json', key: 'Content-Type'))
266
+ .body_param(new_parameter(body))
267
+ .header_param(new_parameter('application/json', key: 'accept'))
268
+ .body_serializer(proc do |param| param.to_json unless param.nil? end)
269
+ .auth(Single.new('global')))
270
+ .response(new_response_handler
271
+ .deserializer(APIHelper.method(:json_deserialize))
272
+ .is_api_response(true)
273
+ .convertor(ApiResponse.method(:create)))
274
+ .execute
398
275
  end
399
276
  end
400
277
  end