square.rb 6.4.0.20200923 → 9.0.0.20210226

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +43 -31
  4. data/lib/square.rb +60 -61
  5. data/lib/square/api/apple_pay_api.rb +5 -3
  6. data/lib/square/api/bank_accounts_api.rb +16 -19
  7. data/lib/square/api/base_api.rb +1 -1
  8. data/lib/square/api/bookings_api.rb +308 -0
  9. data/lib/square/api/cash_drawers_api.rb +13 -6
  10. data/lib/square/api/catalog_api.rb +71 -35
  11. data/lib/square/api/checkout_api.rb +4 -2
  12. data/lib/square/api/customer_groups_api.rb +18 -8
  13. data/lib/square/api/customer_segments_api.rb +9 -5
  14. data/lib/square/api/customers_api.rb +47 -27
  15. data/lib/square/api/devices_api.rb +17 -6
  16. data/lib/square/api/disputes_api.rb +70 -54
  17. data/lib/square/api/employees_api.rb +7 -3
  18. data/lib/square/api/inventory_api.rb +27 -13
  19. data/lib/square/api/invoices_api.rb +44 -25
  20. data/lib/square/api/labor_api.rb +57 -25
  21. data/lib/square/api/locations_api.rb +16 -13
  22. data/lib/square/api/loyalty_api.rb +60 -66
  23. data/lib/square/api/merchants_api.rb +7 -3
  24. data/lib/square/api/mobile_authorization_api.rb +5 -3
  25. data/lib/square/api/o_auth_api.rb +11 -8
  26. data/lib/square/api/orders_api.rb +55 -8
  27. data/lib/square/api/payments_api.rb +68 -55
  28. data/lib/square/api/refunds_api.rb +32 -26
  29. data/lib/square/api/subscriptions_api.rb +26 -14
  30. data/lib/square/api/team_api.rb +46 -30
  31. data/lib/square/api/terminal_api.rb +156 -7
  32. data/lib/square/api/transactions_api.rb +32 -18
  33. data/lib/square/api/v1_employees_api.rb +27 -389
  34. data/lib/square/api/v1_transactions_api.rb +42 -101
  35. data/lib/square/api_helper.rb +14 -9
  36. data/lib/square/client.rb +10 -14
  37. data/lib/square/configuration.rb +21 -6
  38. data/lib/square/http/api_response.rb +2 -0
  39. data/lib/square/http/faraday_client.rb +9 -2
  40. data/spec/user_journey_spec.rb +2 -5
  41. data/test/api/test_locations_api.rb +1 -1
  42. metadata +5 -6
  43. data/lib/square/api/v1_items_api.rb +0 -1686
  44. data/lib/square/api/v1_locations_api.rb +0 -65
@@ -5,87 +5,10 @@ module Square
5
5
  super(config, http_call_back: http_call_back)
6
6
  end
7
7
 
8
- # Provides non-confidential details for all of a location's associated bank
9
- # accounts. This endpoint does not provide full bank account numbers, and
10
- # there is no way to obtain a full bank account number with the Connect API.
11
- # @param [String] location_id Required parameter: The ID of the location to
12
- # list bank accounts for.
13
- # @return [List of V1BankAccount Hash] response from the API call
14
- def list_bank_accounts(location_id:)
15
- warn 'Endpoint list_bank_accounts in V1TransactionsApi is deprecated'
16
- # Prepare query url.
17
- _query_builder = config.get_base_uri
18
- _query_builder << '/v1/{location_id}/bank-accounts'
19
- _query_builder = APIHelper.append_url_with_template_parameters(
20
- _query_builder,
21
- 'location_id' => location_id
22
- )
23
- _query_url = APIHelper.clean_url _query_builder
24
-
25
- # Prepare headers.
26
- _headers = {
27
- 'accept' => 'application/json'
28
- }
29
-
30
- # Prepare and execute HttpRequest.
31
- _request = config.http_client.get(
32
- _query_url,
33
- headers: _headers
34
- )
35
- OAuth2.apply(config, _request)
36
- _response = execute_request(_request)
37
-
38
- # Return appropriate response type.
39
- decoded = APIHelper.json_deserialize(_response.raw_body)
40
- _errors = APIHelper.map_response(decoded, ['errors'])
41
- ApiResponse.new(_response, data: decoded, errors: _errors)
42
- end
43
-
44
- # Provides non-confidential details for a merchant's associated bank
45
- # account. This endpoint does not provide full bank account numbers, and
46
- # there is no way to obtain a full bank account number with the Connect API.
47
- # @param [String] location_id Required parameter: The ID of the bank
48
- # account's associated location.
49
- # @param [String] bank_account_id Required parameter: The bank account's
50
- # Square-issued ID. You obtain this value from Settlement objects
51
- # returned.
52
- # @return [V1BankAccount Hash] response from the API call
53
- def retrieve_bank_account(location_id:,
54
- bank_account_id:)
55
- warn 'Endpoint retrieve_bank_account in V1TransactionsApi is deprecated'
56
- # Prepare query url.
57
- _query_builder = config.get_base_uri
58
- _query_builder << '/v1/{location_id}/bank-accounts/{bank_account_id}'
59
- _query_builder = APIHelper.append_url_with_template_parameters(
60
- _query_builder,
61
- 'location_id' => location_id,
62
- 'bank_account_id' => bank_account_id
63
- )
64
- _query_url = APIHelper.clean_url _query_builder
65
-
66
- # Prepare headers.
67
- _headers = {
68
- 'accept' => 'application/json'
69
- }
70
-
71
- # Prepare and execute HttpRequest.
72
- _request = config.http_client.get(
73
- _query_url,
74
- headers: _headers
75
- )
76
- OAuth2.apply(config, _request)
77
- _response = execute_request(_request)
78
-
79
- # Return appropriate response type.
80
- decoded = APIHelper.json_deserialize(_response.raw_body)
81
- _errors = APIHelper.map_response(decoded, ['errors'])
82
- ApiResponse.new(_response, data: decoded, errors: _errors)
83
- end
84
-
85
8
  # Provides summary information for a merchant's online store orders.
86
9
  # @param [String] location_id Required parameter: The ID of the location to
87
10
  # list online store orders for.
88
- # @param [SortOrder] order Optional parameter: TThe order in which payments
11
+ # @param [SortOrder] order Optional parameter: The order in which payments
89
12
  # are listed in the response.
90
13
  # @param [Integer] limit Optional parameter: The maximum number of payments
91
14
  # to return in a single response. This value cannot exceed 200.
@@ -102,7 +25,7 @@ module Square
102
25
  _query_builder << '/v1/{location_id}/orders'
103
26
  _query_builder = APIHelper.append_url_with_template_parameters(
104
27
  _query_builder,
105
- 'location_id' => location_id
28
+ 'location_id' => { 'value' => location_id, 'encode' => true }
106
29
  )
107
30
  _query_builder = APIHelper.append_url_with_query_parameters(
108
31
  _query_builder,
@@ -128,7 +51,9 @@ module Square
128
51
  # Return appropriate response type.
129
52
  decoded = APIHelper.json_deserialize(_response.raw_body)
130
53
  _errors = APIHelper.map_response(decoded, ['errors'])
131
- ApiResponse.new(_response, data: decoded, errors: _errors)
54
+ ApiResponse.new(
55
+ _response, data: decoded, errors: _errors
56
+ )
132
57
  end
133
58
 
134
59
  # Provides comprehensive information for a single online store order,
@@ -146,8 +71,8 @@ module Square
146
71
  _query_builder << '/v1/{location_id}/orders/{order_id}'
147
72
  _query_builder = APIHelper.append_url_with_template_parameters(
148
73
  _query_builder,
149
- 'location_id' => location_id,
150
- 'order_id' => order_id
74
+ 'location_id' => { 'value' => location_id, 'encode' => true },
75
+ 'order_id' => { 'value' => order_id, 'encode' => true }
151
76
  )
152
77
  _query_url = APIHelper.clean_url _query_builder
153
78
 
@@ -167,7 +92,9 @@ module Square
167
92
  # Return appropriate response type.
168
93
  decoded = APIHelper.json_deserialize(_response.raw_body)
169
94
  _errors = APIHelper.map_response(decoded, ['errors'])
170
- ApiResponse.new(_response, data: decoded, errors: _errors)
95
+ ApiResponse.new(
96
+ _response, data: decoded, errors: _errors
97
+ )
171
98
  end
172
99
 
173
100
  # Updates the details of an online store order. Every update you perform on
@@ -189,8 +116,8 @@ module Square
189
116
  _query_builder << '/v1/{location_id}/orders/{order_id}'
190
117
  _query_builder = APIHelper.append_url_with_template_parameters(
191
118
  _query_builder,
192
- 'location_id' => location_id,
193
- 'order_id' => order_id
119
+ 'location_id' => { 'value' => location_id, 'encode' => true },
120
+ 'order_id' => { 'value' => order_id, 'encode' => true }
194
121
  )
195
122
  _query_url = APIHelper.clean_url _query_builder
196
123
 
@@ -212,7 +139,9 @@ module Square
212
139
  # Return appropriate response type.
213
140
  decoded = APIHelper.json_deserialize(_response.raw_body)
214
141
  _errors = APIHelper.map_response(decoded, ['errors'])
215
- ApiResponse.new(_response, data: decoded, errors: _errors)
142
+ ApiResponse.new(
143
+ _response, data: decoded, errors: _errors
144
+ )
216
145
  end
217
146
 
218
147
  # Provides summary information for all payments taken for a given
@@ -260,7 +189,7 @@ module Square
260
189
  _query_builder << '/v1/{location_id}/payments'
261
190
  _query_builder = APIHelper.append_url_with_template_parameters(
262
191
  _query_builder,
263
- 'location_id' => location_id
192
+ 'location_id' => { 'value' => location_id, 'encode' => true }
264
193
  )
265
194
  _query_builder = APIHelper.append_url_with_query_parameters(
266
195
  _query_builder,
@@ -289,7 +218,9 @@ module Square
289
218
  # Return appropriate response type.
290
219
  decoded = APIHelper.json_deserialize(_response.raw_body)
291
220
  _errors = APIHelper.map_response(decoded, ['errors'])
292
- ApiResponse.new(_response, data: decoded, errors: _errors)
221
+ ApiResponse.new(
222
+ _response, data: decoded, errors: _errors
223
+ )
293
224
  end
294
225
 
295
226
  # Provides comprehensive information for a single payment.
@@ -307,8 +238,8 @@ module Square
307
238
  _query_builder << '/v1/{location_id}/payments/{payment_id}'
308
239
  _query_builder = APIHelper.append_url_with_template_parameters(
309
240
  _query_builder,
310
- 'location_id' => location_id,
311
- 'payment_id' => payment_id
241
+ 'location_id' => { 'value' => location_id, 'encode' => true },
242
+ 'payment_id' => { 'value' => payment_id, 'encode' => true }
312
243
  )
313
244
  _query_url = APIHelper.clean_url _query_builder
314
245
 
@@ -328,7 +259,9 @@ module Square
328
259
  # Return appropriate response type.
329
260
  decoded = APIHelper.json_deserialize(_response.raw_body)
330
261
  _errors = APIHelper.map_response(decoded, ['errors'])
331
- ApiResponse.new(_response, data: decoded, errors: _errors)
262
+ ApiResponse.new(
263
+ _response, data: decoded, errors: _errors
264
+ )
332
265
  end
333
266
 
334
267
  # Provides the details for all refunds initiated by a merchant or any of the
@@ -336,7 +269,7 @@ module Square
336
269
  # year in length.
337
270
  # @param [String] location_id Required parameter: The ID of the location to
338
271
  # list refunds for.
339
- # @param [SortOrder] order Optional parameter: TThe order in which payments
272
+ # @param [SortOrder] order Optional parameter: The order in which payments
340
273
  # are listed in the response.
341
274
  # @param [String] begin_time Optional parameter: The beginning of the
342
275
  # requested reporting period, in ISO 8601 format. If this value is before
@@ -366,7 +299,7 @@ module Square
366
299
  _query_builder << '/v1/{location_id}/refunds'
367
300
  _query_builder = APIHelper.append_url_with_template_parameters(
368
301
  _query_builder,
369
- 'location_id' => location_id
302
+ 'location_id' => { 'value' => location_id, 'encode' => true }
370
303
  )
371
304
  _query_builder = APIHelper.append_url_with_query_parameters(
372
305
  _query_builder,
@@ -394,7 +327,9 @@ module Square
394
327
  # Return appropriate response type.
395
328
  decoded = APIHelper.json_deserialize(_response.raw_body)
396
329
  _errors = APIHelper.map_response(decoded, ['errors'])
397
- ApiResponse.new(_response, data: decoded, errors: _errors)
330
+ ApiResponse.new(
331
+ _response, data: decoded, errors: _errors
332
+ )
398
333
  end
399
334
 
400
335
  # Issues a refund for a previously processed payment. You must issue
@@ -420,7 +355,7 @@ module Square
420
355
  _query_builder << '/v1/{location_id}/refunds'
421
356
  _query_builder = APIHelper.append_url_with_template_parameters(
422
357
  _query_builder,
423
- 'location_id' => location_id
358
+ 'location_id' => { 'value' => location_id, 'encode' => true }
424
359
  )
425
360
  _query_url = APIHelper.clean_url _query_builder
426
361
 
@@ -442,7 +377,9 @@ module Square
442
377
  # Return appropriate response type.
443
378
  decoded = APIHelper.json_deserialize(_response.raw_body)
444
379
  _errors = APIHelper.map_response(decoded, ['errors'])
445
- ApiResponse.new(_response, data: decoded, errors: _errors)
380
+ ApiResponse.new(
381
+ _response, data: decoded, errors: _errors
382
+ )
446
383
  end
447
384
 
448
385
  # Provides summary information for all deposits and withdrawals
@@ -485,7 +422,7 @@ module Square
485
422
  _query_builder << '/v1/{location_id}/settlements'
486
423
  _query_builder = APIHelper.append_url_with_template_parameters(
487
424
  _query_builder,
488
- 'location_id' => location_id
425
+ 'location_id' => { 'value' => location_id, 'encode' => true }
489
426
  )
490
427
  _query_builder = APIHelper.append_url_with_query_parameters(
491
428
  _query_builder,
@@ -514,7 +451,9 @@ module Square
514
451
  # Return appropriate response type.
515
452
  decoded = APIHelper.json_deserialize(_response.raw_body)
516
453
  _errors = APIHelper.map_response(decoded, ['errors'])
517
- ApiResponse.new(_response, data: decoded, errors: _errors)
454
+ ApiResponse.new(
455
+ _response, data: decoded, errors: _errors
456
+ )
518
457
  end
519
458
 
520
459
  # Provides comprehensive information for a single settlement.
@@ -545,8 +484,8 @@ module Square
545
484
  _query_builder << '/v1/{location_id}/settlements/{settlement_id}'
546
485
  _query_builder = APIHelper.append_url_with_template_parameters(
547
486
  _query_builder,
548
- 'location_id' => location_id,
549
- 'settlement_id' => settlement_id
487
+ 'location_id' => { 'value' => location_id, 'encode' => true },
488
+ 'settlement_id' => { 'value' => settlement_id, 'encode' => true }
550
489
  )
551
490
  _query_url = APIHelper.clean_url _query_builder
552
491
 
@@ -566,7 +505,9 @@ module Square
566
505
  # Return appropriate response type.
567
506
  decoded = APIHelper.json_deserialize(_response.raw_body)
568
507
  _errors = APIHelper.map_response(decoded, ['errors'])
569
- ApiResponse.new(_response, data: decoded, errors: _errors)
508
+ ApiResponse.new(
509
+ _response, data: decoded, errors: _errors
510
+ )
570
511
  end
571
512
  end
572
513
  end
@@ -36,17 +36,22 @@ module Square
36
36
  # Return if there are no parameters to replace.
37
37
  return query_builder if parameters.nil?
38
38
 
39
- # Iterate and append parameters.
40
- parameters.each do |key, value|
41
- replace_value = ''
42
-
43
- if value.nil?
39
+ parameters.each do |key, val|
40
+ if val.nil?
44
41
  replace_value = ''
45
- elsif value.instance_of? Array
46
- value.map! { |element| CGI.escape(element.to_s) }
47
- replace_value = value.join('/')
42
+ elsif val['value'].instance_of? Array
43
+ if val['encode'] == true
44
+ val['value'].map! { |element| CGI.escape(element.to_s) }
45
+ else
46
+ val['value'].map!(&:to_s)
47
+ end
48
+ replace_value = val['value'].join('/')
48
49
  else
49
- replace_value = CGI.escape(value.to_s)
50
+ replace_value = if val['encode'] == true
51
+ CGI.escape(val['value'].to_s)
52
+ else
53
+ val['value'].to_s
54
+ end
50
55
  end
51
56
 
52
57
  # Find the template parameter and replace it with its value.
data/lib/square/client.rb CHANGED
@@ -4,7 +4,7 @@ module Square
4
4
  attr_reader :config
5
5
 
6
6
  def sdk_version
7
- '6.4.0.20200923'
7
+ '9.0.0.20210226'
8
8
  end
9
9
 
10
10
  def square_version
@@ -23,12 +23,6 @@ module Square
23
23
  @o_auth ||= OAuthApi.new config
24
24
  end
25
25
 
26
- # Access to v1_locations controller.
27
- # @return [V1LocationsApi] Returns the controller instance.
28
- def v1_locations
29
- @v1_locations ||= V1LocationsApi.new config
30
- end
31
-
32
26
  # Access to v1_employees controller.
33
27
  # @return [V1EmployeesApi] Returns the controller instance.
34
28
  def v1_employees
@@ -41,12 +35,6 @@ module Square
41
35
  @v1_transactions ||= V1TransactionsApi.new config
42
36
  end
43
37
 
44
- # Access to v1_items controller.
45
- # @return [V1ItemsApi] Returns the controller instance.
46
- def v1_items
47
- @v1_items ||= V1ItemsApi.new config
48
- end
49
-
50
38
  # Access to apple_pay controller.
51
39
  # @return [ApplePayApi] Returns the controller instance.
52
40
  def apple_pay
@@ -59,6 +47,12 @@ module Square
59
47
  @bank_accounts ||= BankAccountsApi.new config
60
48
  end
61
49
 
50
+ # Access to bookings controller.
51
+ # @return [BookingsApi] Returns the controller instance.
52
+ def bookings
53
+ @bookings ||= BookingsApi.new config
54
+ end
55
+
62
56
  # Access to cash_drawers controller.
63
57
  # @return [CashDrawersApi] Returns the controller instance.
64
58
  def cash_drawers
@@ -193,13 +187,15 @@ module Square
193
187
 
194
188
  def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
195
189
  backoff_factor: 1, environment: 'production',
196
- square_version: '2020-09-23', access_token: 'TODO: Replace',
190
+ custom_url: 'https://connect.squareup.com',
191
+ square_version: '2021-02-26', access_token: 'TODO: Replace',
197
192
  additional_headers: {}, config: nil)
198
193
  @config = if config.nil?
199
194
  Configuration.new(timeout: timeout, max_retries: max_retries,
200
195
  retry_interval: retry_interval,
201
196
  backoff_factor: backoff_factor,
202
197
  environment: environment,
198
+ custom_url: custom_url,
203
199
  square_version: square_version,
204
200
  access_token: access_token,
205
201
  additional_headers: additional_headers)
@@ -9,6 +9,7 @@ module Square
9
9
  attr_reader :retry_interval
10
10
  attr_reader :backoff_factor
11
11
  attr_reader :environment
12
+ attr_reader :custom_url
12
13
  attr_reader :square_version
13
14
  attr_reader :access_token
14
15
 
@@ -22,7 +23,8 @@ module Square
22
23
 
23
24
  def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
24
25
  backoff_factor: 1, environment: 'production',
25
- square_version: '2020-09-23', access_token: 'TODO: Replace',
26
+ custom_url: 'https://connect.squareup.com',
27
+ square_version: '2021-02-26', access_token: 'TODO: Replace',
26
28
  additional_headers: {})
27
29
  # The value to use for connection timeout
28
30
  @timeout = timeout
@@ -40,10 +42,13 @@ module Square
40
42
  # Current API environment
41
43
  @environment = String(environment)
42
44
 
45
+ # Sets the base URL requests are made to. Defaults to `https://connect.squareup.com`
46
+ @custom_url = custom_url
47
+
43
48
  # Square Connect API versions
44
49
  @square_version = square_version
45
50
 
46
- # OAuth 2.0 Access Token
51
+ # The OAuth 2.0 Access Token to use for API requests.
47
52
  @access_token = access_token
48
53
 
49
54
  # Additional headers to add to each API request
@@ -54,13 +59,15 @@ module Square
54
59
  end
55
60
 
56
61
  def clone_with(timeout: nil, max_retries: nil, retry_interval: nil,
57
- backoff_factor: nil, environment: nil, square_version: nil,
58
- access_token: nil, additional_headers: nil)
62
+ backoff_factor: nil, environment: nil, custom_url: nil,
63
+ square_version: nil, access_token: nil,
64
+ additional_headers: nil)
59
65
  timeout ||= self.timeout
60
66
  max_retries ||= self.max_retries
61
67
  retry_interval ||= self.retry_interval
62
68
  backoff_factor ||= self.backoff_factor
63
69
  environment ||= self.environment
70
+ custom_url ||= self.custom_url
64
71
  square_version ||= self.square_version
65
72
  access_token ||= self.access_token
66
73
  additional_headers ||= self.additional_headers
@@ -68,7 +75,7 @@ module Square
68
75
  Configuration.new(timeout: timeout, max_retries: max_retries,
69
76
  retry_interval: retry_interval,
70
77
  backoff_factor: backoff_factor,
71
- environment: environment,
78
+ environment: environment, custom_url: custom_url,
72
79
  square_version: square_version,
73
80
  access_token: access_token,
74
81
  additional_headers: additional_headers)
@@ -87,6 +94,9 @@ module Square
87
94
  },
88
95
  'sandbox' => {
89
96
  'default' => 'https://connect.squareupsandbox.com'
97
+ },
98
+ 'custom' => {
99
+ 'default' => '{custom_url}'
90
100
  }
91
101
  }.freeze
92
102
 
@@ -95,7 +105,12 @@ module Square
95
105
  # required.
96
106
  # @return [String] The base URI.
97
107
  def get_base_uri(server = 'default')
98
- ENVIRONMENTS[environment][server].clone
108
+ parameters = {
109
+ 'custom_url' => { 'value' => custom_url, 'encode' => false }
110
+ }
111
+ APIHelper.append_url_with_template_parameters(
112
+ ENVIRONMENTS[environment][server], parameters
113
+ )
99
114
  end
100
115
  end
101
116
  end