square.rb 8.0.0.20201216 → 26.1.0.20230119

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +79 -221
  4. data/lib/square/api/apple_pay_api.rb +15 -8
  5. data/lib/square/api/bank_accounts_api.rb +5 -5
  6. data/lib/square/api/base_api.rb +27 -9
  7. data/lib/square/api/booking_custom_attributes_api.rb +555 -0
  8. data/lib/square/api/bookings_api.rb +107 -15
  9. data/lib/square/api/cards_api.rb +171 -0
  10. data/lib/square/api/cash_drawers_api.rb +2 -2
  11. data/lib/square/api/catalog_api.rb +167 -73
  12. data/lib/square/api/checkout_api.rb +205 -3
  13. data/lib/square/api/customer_custom_attributes_api.rb +561 -0
  14. data/lib/square/api/customer_groups_api.rb +17 -8
  15. data/lib/square/api/customer_segments_api.rb +15 -6
  16. data/lib/square/api/customers_api.rb +67 -33
  17. data/lib/square/api/devices_api.rb +3 -2
  18. data/lib/square/api/disputes_api.rb +109 -105
  19. data/lib/square/api/gift_card_activities_api.rb +132 -0
  20. data/lib/square/api/gift_cards_api.rb +298 -0
  21. data/lib/square/api/inventory_api.rb +263 -24
  22. data/lib/square/api/invoices_api.rb +21 -21
  23. data/lib/square/api/labor_api.rb +70 -68
  24. data/lib/square/api/location_custom_attributes_api.rb +584 -0
  25. data/lib/square/api/locations_api.rb +21 -14
  26. data/lib/square/api/loyalty_api.rb +333 -50
  27. data/lib/square/api/merchants_api.rb +11 -9
  28. data/lib/square/api/mobile_authorization_api.rb +4 -4
  29. data/lib/square/api/o_auth_api.rb +78 -25
  30. data/lib/square/api/order_custom_attributes_api.rb +601 -0
  31. data/lib/square/api/orders_api.rb +84 -45
  32. data/lib/square/api/payments_api.rb +72 -24
  33. data/lib/square/api/payouts_api.rb +173 -0
  34. data/lib/square/api/refunds_api.rb +18 -7
  35. data/lib/square/api/sites_api.rb +43 -0
  36. data/lib/square/api/snippets_api.rb +146 -0
  37. data/lib/square/api/subscriptions_api.rb +190 -15
  38. data/lib/square/api/team_api.rb +46 -46
  39. data/lib/square/api/terminal_api.rb +172 -22
  40. data/lib/square/api/transactions_api.rb +15 -191
  41. data/lib/square/api/v1_transactions_api.rb +52 -124
  42. data/lib/square/api/vendors_api.rb +257 -0
  43. data/lib/square/api/webhook_subscriptions_api.rb +327 -0
  44. data/lib/square/api_helper.rb +217 -57
  45. data/lib/square/client.rb +90 -18
  46. data/lib/square/configuration.rb +64 -20
  47. data/lib/square/exceptions/validation_exception.rb +13 -0
  48. data/lib/square/http/api_response.rb +7 -9
  49. data/lib/square/http/faraday_client.rb +40 -9
  50. data/lib/square/http/http_client.rb +31 -12
  51. data/lib/square/http/http_request.rb +6 -2
  52. data/lib/square/utilities/date_time_helper.rb +151 -0
  53. data/lib/square/utilities/file_wrapper.rb +1 -2
  54. data/lib/square.rb +56 -44
  55. data/test/api/test_locations_api.rb +2 -5
  56. data/test/test_helper.rb +2 -2
  57. metadata +83 -15
  58. data/lib/square/api/v1_employees_api.rb +0 -751
  59. data/lib/square/api/v1_items_api.rb +0 -1766
@@ -5,7 +5,78 @@ module Square
5
5
  super(config, http_call_back: http_call_back)
6
6
  end
7
7
 
8
+ # Retrieve a collection of bookings.
9
+ # To call this endpoint with buyer-level permissions, set
10
+ # `APPOINTMENTS_READ` for the OAuth scope.
11
+ # To call this endpoint with seller-level permissions, set
12
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
13
+ # @param [Integer] limit Optional parameter: The maximum number of results
14
+ # per page to return in a paged response.
15
+ # @param [String] cursor Optional parameter: The pagination cursor from the
16
+ # preceding response to return the next page of the results. Do not set this
17
+ # when retrieving the first page of the results.
18
+ # @param [String] team_member_id Optional parameter: The team member for
19
+ # whom to retrieve bookings. If this is not set, bookings of all members are
20
+ # retrieved.
21
+ # @param [String] location_id Optional parameter: The location for which to
22
+ # retrieve bookings. If this is not set, all locations' bookings are
23
+ # retrieved.
24
+ # @param [String] start_at_min Optional parameter: The RFC 3339 timestamp
25
+ # specifying the earliest of the start time. If this is not set, the current
26
+ # time is used.
27
+ # @param [String] start_at_max Optional parameter: The RFC 3339 timestamp
28
+ # specifying the latest of the start time. If this is not set, the time of
29
+ # 31 days after `start_at_min` is used.
30
+ # @return [ListBookingsResponse Hash] response from the API call
31
+ def list_bookings(limit: nil,
32
+ cursor: nil,
33
+ team_member_id: nil,
34
+ location_id: nil,
35
+ start_at_min: nil,
36
+ 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
+ )
70
+ end
71
+
8
72
  # Creates a booking.
73
+ # To call this endpoint with buyer-level permissions, set
74
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
75
+ # To call this endpoint with seller-level permissions, set
76
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
77
+ # For calls to this endpoint with seller-level permissions to succeed, the
78
+ # seller must have subscribed to *Appointments Plus*
79
+ # or *Appointments Premium*.
9
80
  # @param [CreateBookingRequest] body Required parameter: An object
10
81
  # containing the fields to POST for the request. See the corresponding
11
82
  # object definition for field details.
@@ -19,7 +90,7 @@ module Square
19
90
  # Prepare headers.
20
91
  _headers = {
21
92
  'accept' => 'application/json',
22
- 'content-type' => 'application/json; charset=utf-8'
93
+ 'Content-Type' => 'application/json'
23
94
  }
24
95
 
25
96
  # Prepare and execute HttpRequest.
@@ -40,6 +111,10 @@ module Square
40
111
  end
41
112
 
42
113
  # Searches for availabilities for booking.
114
+ # To call this endpoint with buyer-level permissions, set
115
+ # `APPOINTMENTS_READ` for the OAuth scope.
116
+ # To call this endpoint with seller-level permissions, set
117
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
43
118
  # @param [SearchAvailabilityRequest] body Required parameter: An object
44
119
  # containing the fields to POST for the request. See the corresponding
45
120
  # object definition for field details.
@@ -53,7 +128,7 @@ module Square
53
128
  # Prepare headers.
54
129
  _headers = {
55
130
  'accept' => 'application/json',
56
- 'content-type' => 'application/json; charset=utf-8'
131
+ 'Content-Type' => 'application/json'
57
132
  }
58
133
 
59
134
  # Prepare and execute HttpRequest.
@@ -103,13 +178,14 @@ module Square
103
178
  end
104
179
 
105
180
  # Lists booking profiles for team members.
106
- # @param [Boolean] bookable_only Optional parameter: Indicates whether to
107
- # include only bookable team members in the returned result (`true`) or not
108
- # (`false`).
181
+ # @param [TrueClass|FalseClass] bookable_only Optional parameter: Indicates
182
+ # whether to include only bookable team members in the returned result
183
+ # (`true`) or not (`false`).
109
184
  # @param [Integer] limit Optional parameter: The maximum number of results
110
- # to return.
111
- # @param [String] cursor Optional parameter: The cursor for paginating
112
- # through the results.
185
+ # to return in a paged response.
186
+ # @param [String] cursor Optional parameter: The pagination cursor from the
187
+ # preceding response to return the next page of the results. Do not set this
188
+ # when retrieving the first page of the results.
113
189
  # @param [String] location_id Optional parameter: Indicates whether to
114
190
  # include only team members enabled at the given location in the returned
115
191
  # result.
@@ -187,9 +263,12 @@ module Square
187
263
  end
188
264
 
189
265
  # Retrieves a booking.
266
+ # To call this endpoint with buyer-level permissions, set
267
+ # `APPOINTMENTS_READ` for the OAuth scope.
268
+ # To call this endpoint with seller-level permissions, set
269
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
190
270
  # @param [String] booking_id Required parameter: The ID of the
191
- # [Booking](#type-booking) object representing the to-be-retrieved
192
- # booking.
271
+ # [Booking]($m/Booking) object representing the to-be-retrieved booking.
193
272
  # @return [RetrieveBookingResponse Hash] response from the API call
194
273
  def retrieve_booking(booking_id:)
195
274
  # Prepare query url.
@@ -223,8 +302,15 @@ module Square
223
302
  end
224
303
 
225
304
  # Updates a booking.
305
+ # To call this endpoint with buyer-level permissions, set
306
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
307
+ # To call this endpoint with seller-level permissions, set
308
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
309
+ # For calls to this endpoint with seller-level permissions to succeed, the
310
+ # seller must have subscribed to *Appointments Plus*
311
+ # or *Appointments Premium*.
226
312
  # @param [String] booking_id Required parameter: The ID of the
227
- # [Booking](#type-booking) object representing the to-be-updated booking.
313
+ # [Booking]($m/Booking) object representing the to-be-updated booking.
228
314
  # @param [UpdateBookingRequest] body Required parameter: An object
229
315
  # containing the fields to POST for the request. See the corresponding
230
316
  # object definition for field details.
@@ -243,7 +329,7 @@ module Square
243
329
  # Prepare headers.
244
330
  _headers = {
245
331
  'accept' => 'application/json',
246
- 'content-type' => 'application/json; charset=utf-8'
332
+ 'Content-Type' => 'application/json'
247
333
  }
248
334
 
249
335
  # Prepare and execute HttpRequest.
@@ -264,9 +350,15 @@ module Square
264
350
  end
265
351
 
266
352
  # Cancels an existing booking.
353
+ # To call this endpoint with buyer-level permissions, set
354
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
355
+ # To call this endpoint with seller-level permissions, set
356
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
357
+ # For calls to this endpoint with seller-level permissions to succeed, the
358
+ # seller must have subscribed to *Appointments Plus*
359
+ # or *Appointments Premium*.
267
360
  # @param [String] booking_id Required parameter: The ID of the
268
- # [Booking](#type-booking) object representing the to-be-cancelled
269
- # booking.
361
+ # [Booking]($m/Booking) object representing the to-be-cancelled booking.
270
362
  # @param [CancelBookingRequest] body Required parameter: An object
271
363
  # containing the fields to POST for the request. See the corresponding
272
364
  # object definition for field details.
@@ -285,7 +377,7 @@ module Square
285
377
  # Prepare headers.
286
378
  _headers = {
287
379
  'accept' => 'application/json',
288
- 'content-type' => 'application/json; charset=utf-8'
380
+ 'Content-Type' => 'application/json'
289
381
  }
290
382
 
291
383
  # Prepare and execute HttpRequest.
@@ -0,0 +1,171 @@
1
+ module Square
2
+ # CardsApi
3
+ class CardsApi < BaseApi
4
+ def initialize(config, http_call_back: nil)
5
+ super(config, http_call_back: http_call_back)
6
+ end
7
+
8
+ # Retrieves a list of cards owned by the account making the request.
9
+ # A max of 25 cards will be returned.
10
+ # @param [String] cursor Optional parameter: A pagination cursor returned by
11
+ # a previous call to this endpoint. Provide this to retrieve the next set of
12
+ # results for your original query. See
13
+ # [Pagination](https://developer.squareup.com/docs/basics/api101/pagination)
14
+ # for more information.
15
+ # @param [String] customer_id Optional parameter: Limit results to cards
16
+ # associated with the customer supplied. By default, all cards owned by the
17
+ # merchant are returned.
18
+ # @param [TrueClass|FalseClass] include_disabled Optional parameter:
19
+ # Includes disabled cards. By default, all enabled cards owned by the
20
+ # merchant are returned.
21
+ # @param [String] reference_id Optional parameter: Limit results to cards
22
+ # associated with the reference_id supplied.
23
+ # @param [SortOrder] sort_order Optional parameter: Sorts the returned list
24
+ # by when the card was created with the specified order. This field defaults
25
+ # to ASC.
26
+ # @return [ListCardsResponse Hash] response from the API call
27
+ def list_cards(cursor: nil,
28
+ customer_id: nil,
29
+ include_disabled: false,
30
+ reference_id: nil,
31
+ sort_order: nil)
32
+ # Prepare query url.
33
+ _query_builder = config.get_base_uri
34
+ _query_builder << '/v2/cards'
35
+ _query_builder = APIHelper.append_url_with_query_parameters(
36
+ _query_builder,
37
+ 'cursor' => cursor,
38
+ 'customer_id' => customer_id,
39
+ 'include_disabled' => include_disabled,
40
+ 'reference_id' => reference_id,
41
+ 'sort_order' => sort_order
42
+ )
43
+ _query_url = APIHelper.clean_url _query_builder
44
+
45
+ # Prepare headers.
46
+ _headers = {
47
+ 'accept' => 'application/json'
48
+ }
49
+
50
+ # Prepare and execute HttpRequest.
51
+ _request = config.http_client.get(
52
+ _query_url,
53
+ headers: _headers
54
+ )
55
+ OAuth2.apply(config, _request)
56
+ _response = execute_request(_request)
57
+
58
+ # Return appropriate response type.
59
+ decoded = APIHelper.json_deserialize(_response.raw_body)
60
+ _errors = APIHelper.map_response(decoded, ['errors'])
61
+ ApiResponse.new(
62
+ _response, data: decoded, errors: _errors
63
+ )
64
+ end
65
+
66
+ # Adds a card on file to an existing merchant.
67
+ # @param [CreateCardRequest] body Required parameter: An object containing
68
+ # the fields to POST for the request. See the corresponding object
69
+ # definition for field details.
70
+ # @return [CreateCardResponse Hash] response from the API call
71
+ def create_card(body:)
72
+ # Prepare query url.
73
+ _query_builder = config.get_base_uri
74
+ _query_builder << '/v2/cards'
75
+ _query_url = APIHelper.clean_url _query_builder
76
+
77
+ # Prepare headers.
78
+ _headers = {
79
+ 'accept' => 'application/json',
80
+ 'Content-Type' => 'application/json'
81
+ }
82
+
83
+ # Prepare and execute HttpRequest.
84
+ _request = config.http_client.post(
85
+ _query_url,
86
+ headers: _headers,
87
+ parameters: body.to_json
88
+ )
89
+ OAuth2.apply(config, _request)
90
+ _response = execute_request(_request)
91
+
92
+ # Return appropriate response type.
93
+ decoded = APIHelper.json_deserialize(_response.raw_body)
94
+ _errors = APIHelper.map_response(decoded, ['errors'])
95
+ ApiResponse.new(
96
+ _response, data: decoded, errors: _errors
97
+ )
98
+ end
99
+
100
+ # Retrieves details for a specific Card.
101
+ # @param [String] card_id Required parameter: Unique ID for the desired
102
+ # Card.
103
+ # @return [RetrieveCardResponse Hash] response from the API call
104
+ def retrieve_card(card_id:)
105
+ # Prepare query url.
106
+ _query_builder = config.get_base_uri
107
+ _query_builder << '/v2/cards/{card_id}'
108
+ _query_builder = APIHelper.append_url_with_template_parameters(
109
+ _query_builder,
110
+ 'card_id' => { 'value' => card_id, 'encode' => true }
111
+ )
112
+ _query_url = APIHelper.clean_url _query_builder
113
+
114
+ # Prepare headers.
115
+ _headers = {
116
+ 'accept' => 'application/json'
117
+ }
118
+
119
+ # Prepare and execute HttpRequest.
120
+ _request = config.http_client.get(
121
+ _query_url,
122
+ headers: _headers
123
+ )
124
+ OAuth2.apply(config, _request)
125
+ _response = execute_request(_request)
126
+
127
+ # Return appropriate response type.
128
+ decoded = APIHelper.json_deserialize(_response.raw_body)
129
+ _errors = APIHelper.map_response(decoded, ['errors'])
130
+ ApiResponse.new(
131
+ _response, data: decoded, errors: _errors
132
+ )
133
+ end
134
+
135
+ # Disables the card, preventing any further updates or charges.
136
+ # Disabling an already disabled card is allowed but has no effect.
137
+ # @param [String] card_id Required parameter: Unique ID for the desired
138
+ # Card.
139
+ # @return [DisableCardResponse Hash] response from the API call
140
+ def disable_card(card_id:)
141
+ # Prepare query url.
142
+ _query_builder = config.get_base_uri
143
+ _query_builder << '/v2/cards/{card_id}/disable'
144
+ _query_builder = APIHelper.append_url_with_template_parameters(
145
+ _query_builder,
146
+ 'card_id' => { 'value' => card_id, 'encode' => true }
147
+ )
148
+ _query_url = APIHelper.clean_url _query_builder
149
+
150
+ # Prepare headers.
151
+ _headers = {
152
+ 'accept' => 'application/json'
153
+ }
154
+
155
+ # Prepare and execute HttpRequest.
156
+ _request = config.http_client.post(
157
+ _query_url,
158
+ headers: _headers
159
+ )
160
+ OAuth2.apply(config, _request)
161
+ _response = execute_request(_request)
162
+
163
+ # Return appropriate response type.
164
+ decoded = APIHelper.json_deserialize(_response.raw_body)
165
+ _errors = APIHelper.map_response(decoded, ['errors'])
166
+ ApiResponse.new(
167
+ _response, data: decoded, errors: _errors
168
+ )
169
+ end
170
+ end
171
+ end
@@ -63,8 +63,8 @@ module Square
63
63
  end
64
64
 
65
65
  # Provides the summary details for a single cash drawer shift. See
66
- # [ListCashDrawerShiftEvents](#endpoint-CashDrawers-ListCashDrawerShiftEvent
67
- # s) for a list of cash drawer shift events.
66
+ # [ListCashDrawerShiftEvents]($e/CashDrawers/ListCashDrawerShiftEvents) for
67
+ # a list of cash drawer shift events.
68
68
  # @param [String] location_id Required parameter: The ID of the location to
69
69
  # retrieve cash drawer shifts from.
70
70
  # @param [String] shift_id Required parameter: The shift ID.