square.rb 8.0.0.20201216 → 26.1.0.20230119

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,555 @@
1
+ module Square
2
+ # BookingCustomAttributesApi
3
+ class BookingCustomAttributesApi < BaseApi
4
+ def initialize(config, http_call_back: nil)
5
+ super(config, http_call_back: http_call_back)
6
+ end
7
+
8
+ # Get all bookings custom attribute definitions.
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
+ # to return in a single paged response. This limit is advisory. The response
15
+ # might contain more or fewer results. The minimum value is 1 and the
16
+ # maximum value is 100. The default value is 20. For more information, see
17
+ # [Pagination](https://developer.squareup.com/docs/build-basics/common-api-p
18
+ # atterns/pagination).
19
+ # @param [String] cursor Optional parameter: The cursor returned in the
20
+ # paged response from the previous call to this endpoint. Provide this
21
+ # cursor to retrieve the next page of results for your original request. For
22
+ # more information, see
23
+ # [Pagination](https://developer.squareup.com/docs/build-basics/common-api-p
24
+ # atterns/pagination).
25
+ # @return [ListBookingCustomAttributeDefinitionsResponse Hash] response from the API call
26
+ def list_booking_custom_attribute_definitions(limit: nil,
27
+ cursor: nil)
28
+ # Prepare query url.
29
+ _query_builder = config.get_base_uri
30
+ _query_builder << '/v2/bookings/custom-attribute-definitions'
31
+ _query_builder = APIHelper.append_url_with_query_parameters(
32
+ _query_builder,
33
+ 'limit' => limit,
34
+ 'cursor' => cursor
35
+ )
36
+ _query_url = APIHelper.clean_url _query_builder
37
+
38
+ # Prepare headers.
39
+ _headers = {
40
+ 'accept' => 'application/json'
41
+ }
42
+
43
+ # Prepare and execute HttpRequest.
44
+ _request = config.http_client.get(
45
+ _query_url,
46
+ headers: _headers
47
+ )
48
+ OAuth2.apply(config, _request)
49
+ _response = execute_request(_request)
50
+
51
+ # Return appropriate response type.
52
+ decoded = APIHelper.json_deserialize(_response.raw_body)
53
+ _errors = APIHelper.map_response(decoded, ['errors'])
54
+ ApiResponse.new(
55
+ _response, data: decoded, errors: _errors
56
+ )
57
+ end
58
+
59
+ # Creates a bookings custom attribute definition.
60
+ # To call this endpoint with buyer-level permissions, set
61
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
62
+ # To call this endpoint with seller-level permissions, set
63
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
64
+ # For calls to this endpoint with seller-level permissions to succeed, the
65
+ # seller must have subscribed to *Appointments Plus*
66
+ # or *Appointments Premium*.
67
+ # @param [CreateBookingCustomAttributeDefinitionRequest] body Required
68
+ # parameter: An object containing the fields to POST for the request. See
69
+ # the corresponding object definition for field details.
70
+ # @return [CreateBookingCustomAttributeDefinitionResponse Hash] response from the API call
71
+ def create_booking_custom_attribute_definition(body:)
72
+ # Prepare query url.
73
+ _query_builder = config.get_base_uri
74
+ _query_builder << '/v2/bookings/custom-attribute-definitions'
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
+ # Deletes a bookings custom attribute definition.
101
+ # To call this endpoint with buyer-level permissions, set
102
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
103
+ # To call this endpoint with seller-level permissions, set
104
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
105
+ # For calls to this endpoint with seller-level permissions to succeed, the
106
+ # seller must have subscribed to *Appointments Plus*
107
+ # or *Appointments Premium*.
108
+ # @param [String] key Required parameter: The key of the custom attribute
109
+ # definition to delete.
110
+ # @return [DeleteBookingCustomAttributeDefinitionResponse Hash] response from the API call
111
+ def delete_booking_custom_attribute_definition(key:)
112
+ # Prepare query url.
113
+ _query_builder = config.get_base_uri
114
+ _query_builder << '/v2/bookings/custom-attribute-definitions/{key}'
115
+ _query_builder = APIHelper.append_url_with_template_parameters(
116
+ _query_builder,
117
+ 'key' => { 'value' => key, 'encode' => true }
118
+ )
119
+ _query_url = APIHelper.clean_url _query_builder
120
+
121
+ # Prepare headers.
122
+ _headers = {
123
+ 'accept' => 'application/json'
124
+ }
125
+
126
+ # Prepare and execute HttpRequest.
127
+ _request = config.http_client.delete(
128
+ _query_url,
129
+ headers: _headers
130
+ )
131
+ OAuth2.apply(config, _request)
132
+ _response = execute_request(_request)
133
+
134
+ # Return appropriate response type.
135
+ decoded = APIHelper.json_deserialize(_response.raw_body)
136
+ _errors = APIHelper.map_response(decoded, ['errors'])
137
+ ApiResponse.new(
138
+ _response, data: decoded, errors: _errors
139
+ )
140
+ end
141
+
142
+ # Retrieves a bookings custom attribute definition.
143
+ # To call this endpoint with buyer-level permissions, set
144
+ # `APPOINTMENTS_READ` for the OAuth scope.
145
+ # To call this endpoint with seller-level permissions, set
146
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
147
+ # @param [String] key Required parameter: The key of the custom attribute
148
+ # definition to retrieve. If the requesting application is not the
149
+ # definition owner, you must use the qualified key.
150
+ # @param [Integer] version Optional parameter: The current version of the
151
+ # custom attribute definition, which is used for strongly consistent reads
152
+ # to guarantee that you receive the most up-to-date data. When included in
153
+ # the request, Square returns the specified version or a higher version if
154
+ # one exists. If the specified version is higher than the current version,
155
+ # Square returns a `BAD_REQUEST` error.
156
+ # @return [RetrieveBookingCustomAttributeDefinitionResponse Hash] response from the API call
157
+ def retrieve_booking_custom_attribute_definition(key:,
158
+ version: nil)
159
+ # Prepare query url.
160
+ _query_builder = config.get_base_uri
161
+ _query_builder << '/v2/bookings/custom-attribute-definitions/{key}'
162
+ _query_builder = APIHelper.append_url_with_template_parameters(
163
+ _query_builder,
164
+ 'key' => { 'value' => key, 'encode' => true }
165
+ )
166
+ _query_builder = APIHelper.append_url_with_query_parameters(
167
+ _query_builder,
168
+ 'version' => version
169
+ )
170
+ _query_url = APIHelper.clean_url _query_builder
171
+
172
+ # Prepare headers.
173
+ _headers = {
174
+ 'accept' => 'application/json'
175
+ }
176
+
177
+ # Prepare and execute HttpRequest.
178
+ _request = config.http_client.get(
179
+ _query_url,
180
+ headers: _headers
181
+ )
182
+ OAuth2.apply(config, _request)
183
+ _response = execute_request(_request)
184
+
185
+ # Return appropriate response type.
186
+ decoded = APIHelper.json_deserialize(_response.raw_body)
187
+ _errors = APIHelper.map_response(decoded, ['errors'])
188
+ ApiResponse.new(
189
+ _response, data: decoded, errors: _errors
190
+ )
191
+ end
192
+
193
+ # Updates a bookings custom attribute definition.
194
+ # To call this endpoint with buyer-level permissions, set
195
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
196
+ # To call this endpoint with seller-level permissions, set
197
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
198
+ # For calls to this endpoint with seller-level permissions to succeed, the
199
+ # seller must have subscribed to *Appointments Plus*
200
+ # or *Appointments Premium*.
201
+ # @param [String] key Required parameter: The key of the custom attribute
202
+ # definition to update.
203
+ # @param [UpdateBookingCustomAttributeDefinitionRequest] body Required
204
+ # parameter: An object containing the fields to POST for the request. See
205
+ # the corresponding object definition for field details.
206
+ # @return [UpdateBookingCustomAttributeDefinitionResponse Hash] response from the API call
207
+ def update_booking_custom_attribute_definition(key:,
208
+ body:)
209
+ # Prepare query url.
210
+ _query_builder = config.get_base_uri
211
+ _query_builder << '/v2/bookings/custom-attribute-definitions/{key}'
212
+ _query_builder = APIHelper.append_url_with_template_parameters(
213
+ _query_builder,
214
+ 'key' => { 'value' => key, 'encode' => true }
215
+ )
216
+ _query_url = APIHelper.clean_url _query_builder
217
+
218
+ # Prepare headers.
219
+ _headers = {
220
+ 'accept' => 'application/json',
221
+ 'Content-Type' => 'application/json'
222
+ }
223
+
224
+ # Prepare and execute HttpRequest.
225
+ _request = config.http_client.put(
226
+ _query_url,
227
+ headers: _headers,
228
+ parameters: body.to_json
229
+ )
230
+ OAuth2.apply(config, _request)
231
+ _response = execute_request(_request)
232
+
233
+ # Return appropriate response type.
234
+ decoded = APIHelper.json_deserialize(_response.raw_body)
235
+ _errors = APIHelper.map_response(decoded, ['errors'])
236
+ ApiResponse.new(
237
+ _response, data: decoded, errors: _errors
238
+ )
239
+ end
240
+
241
+ # Bulk deletes bookings custom attributes.
242
+ # To call this endpoint with buyer-level permissions, set
243
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
244
+ # To call this endpoint with seller-level permissions, set
245
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
246
+ # For calls to this endpoint with seller-level permissions to succeed, the
247
+ # seller must have subscribed to *Appointments Plus*
248
+ # or *Appointments Premium*.
249
+ # @param [BulkDeleteBookingCustomAttributesRequest] body Required parameter:
250
+ # An object containing the fields to POST for the request. See the
251
+ # corresponding object definition for field details.
252
+ # @return [BulkDeleteBookingCustomAttributesResponse Hash] response from the API call
253
+ def bulk_delete_booking_custom_attributes(body:)
254
+ # Prepare query url.
255
+ _query_builder = config.get_base_uri
256
+ _query_builder << '/v2/bookings/custom-attributes/bulk-delete'
257
+ _query_url = APIHelper.clean_url _query_builder
258
+
259
+ # Prepare headers.
260
+ _headers = {
261
+ 'accept' => 'application/json',
262
+ 'Content-Type' => 'application/json'
263
+ }
264
+
265
+ # Prepare and execute HttpRequest.
266
+ _request = config.http_client.post(
267
+ _query_url,
268
+ headers: _headers,
269
+ parameters: body.to_json
270
+ )
271
+ OAuth2.apply(config, _request)
272
+ _response = execute_request(_request)
273
+
274
+ # Return appropriate response type.
275
+ decoded = APIHelper.json_deserialize(_response.raw_body)
276
+ _errors = APIHelper.map_response(decoded, ['errors'])
277
+ ApiResponse.new(
278
+ _response, data: decoded, errors: _errors
279
+ )
280
+ end
281
+
282
+ # Bulk upserts bookings custom attributes.
283
+ # To call this endpoint with buyer-level permissions, set
284
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
285
+ # To call this endpoint with seller-level permissions, set
286
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
287
+ # For calls to this endpoint with seller-level permissions to succeed, the
288
+ # seller must have subscribed to *Appointments Plus*
289
+ # or *Appointments Premium*.
290
+ # @param [BulkUpsertBookingCustomAttributesRequest] body Required parameter:
291
+ # An object containing the fields to POST for the request. See the
292
+ # corresponding object definition for field details.
293
+ # @return [BulkUpsertBookingCustomAttributesResponse Hash] response from the API call
294
+ def bulk_upsert_booking_custom_attributes(body:)
295
+ # Prepare query url.
296
+ _query_builder = config.get_base_uri
297
+ _query_builder << '/v2/bookings/custom-attributes/bulk-upsert'
298
+ _query_url = APIHelper.clean_url _query_builder
299
+
300
+ # Prepare headers.
301
+ _headers = {
302
+ 'accept' => 'application/json',
303
+ 'Content-Type' => 'application/json'
304
+ }
305
+
306
+ # Prepare and execute HttpRequest.
307
+ _request = config.http_client.post(
308
+ _query_url,
309
+ headers: _headers,
310
+ parameters: body.to_json
311
+ )
312
+ OAuth2.apply(config, _request)
313
+ _response = execute_request(_request)
314
+
315
+ # Return appropriate response type.
316
+ decoded = APIHelper.json_deserialize(_response.raw_body)
317
+ _errors = APIHelper.map_response(decoded, ['errors'])
318
+ ApiResponse.new(
319
+ _response, data: decoded, errors: _errors
320
+ )
321
+ end
322
+
323
+ # Lists a booking's custom attributes.
324
+ # To call this endpoint with buyer-level permissions, set
325
+ # `APPOINTMENTS_READ` for the OAuth scope.
326
+ # To call this endpoint with seller-level permissions, set
327
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
328
+ # @param [String] booking_id Required parameter: The ID of the target
329
+ # [booking]($m/Booking).
330
+ # @param [Integer] limit Optional parameter: The maximum number of results
331
+ # to return in a single paged response. This limit is advisory. The response
332
+ # might contain more or fewer results. The minimum value is 1 and the
333
+ # maximum value is 100. The default value is 20. For more information, see
334
+ # [Pagination](https://developer.squareup.com/docs/build-basics/common-api-p
335
+ # atterns/pagination).
336
+ # @param [String] cursor Optional parameter: The cursor returned in the
337
+ # paged response from the previous call to this endpoint. Provide this
338
+ # cursor to retrieve the next page of results for your original request. For
339
+ # more information, see
340
+ # [Pagination](https://developer.squareup.com/docs/build-basics/common-api-p
341
+ # atterns/pagination).
342
+ # @param [TrueClass|FalseClass] with_definitions Optional parameter:
343
+ # Indicates whether to return the [custom attribute
344
+ # definition]($m/CustomAttributeDefinition) in the `definition` field of
345
+ # each custom attribute. Set this parameter to `true` to get the name and
346
+ # description of each custom attribute, information about the data type, or
347
+ # other definition details. The default value is `false`.
348
+ # @return [ListBookingCustomAttributesResponse Hash] response from the API call
349
+ def list_booking_custom_attributes(booking_id:,
350
+ limit: nil,
351
+ cursor: nil,
352
+ with_definitions: false)
353
+ # Prepare query url.
354
+ _query_builder = config.get_base_uri
355
+ _query_builder << '/v2/bookings/{booking_id}/custom-attributes'
356
+ _query_builder = APIHelper.append_url_with_template_parameters(
357
+ _query_builder,
358
+ 'booking_id' => { 'value' => booking_id, 'encode' => true }
359
+ )
360
+ _query_builder = APIHelper.append_url_with_query_parameters(
361
+ _query_builder,
362
+ 'limit' => limit,
363
+ 'cursor' => cursor,
364
+ 'with_definitions' => with_definitions
365
+ )
366
+ _query_url = APIHelper.clean_url _query_builder
367
+
368
+ # Prepare headers.
369
+ _headers = {
370
+ 'accept' => 'application/json'
371
+ }
372
+
373
+ # Prepare and execute HttpRequest.
374
+ _request = config.http_client.get(
375
+ _query_url,
376
+ headers: _headers
377
+ )
378
+ OAuth2.apply(config, _request)
379
+ _response = execute_request(_request)
380
+
381
+ # Return appropriate response type.
382
+ decoded = APIHelper.json_deserialize(_response.raw_body)
383
+ _errors = APIHelper.map_response(decoded, ['errors'])
384
+ ApiResponse.new(
385
+ _response, data: decoded, errors: _errors
386
+ )
387
+ end
388
+
389
+ # Deletes a bookings custom attribute.
390
+ # To call this endpoint with buyer-level permissions, set
391
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
392
+ # To call this endpoint with seller-level permissions, set
393
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
394
+ # For calls to this endpoint with seller-level permissions to succeed, the
395
+ # seller must have subscribed to *Appointments Plus*
396
+ # or *Appointments Premium*.
397
+ # @param [String] booking_id Required parameter: The ID of the target
398
+ # [booking]($m/Booking).
399
+ # @param [String] key Required parameter: The key of the custom attribute to
400
+ # delete. This key must match the `key` of a custom attribute definition in
401
+ # the Square seller account. If the requesting application is not the
402
+ # definition owner, you must use the qualified key.
403
+ # @return [DeleteBookingCustomAttributeResponse Hash] response from the API call
404
+ def delete_booking_custom_attribute(booking_id:,
405
+ key:)
406
+ # Prepare query url.
407
+ _query_builder = config.get_base_uri
408
+ _query_builder << '/v2/bookings/{booking_id}/custom-attributes/{key}'
409
+ _query_builder = APIHelper.append_url_with_template_parameters(
410
+ _query_builder,
411
+ 'booking_id' => { 'value' => booking_id, 'encode' => true },
412
+ 'key' => { 'value' => key, 'encode' => true }
413
+ )
414
+ _query_url = APIHelper.clean_url _query_builder
415
+
416
+ # Prepare headers.
417
+ _headers = {
418
+ 'accept' => 'application/json'
419
+ }
420
+
421
+ # Prepare and execute HttpRequest.
422
+ _request = config.http_client.delete(
423
+ _query_url,
424
+ headers: _headers
425
+ )
426
+ OAuth2.apply(config, _request)
427
+ _response = execute_request(_request)
428
+
429
+ # Return appropriate response type.
430
+ decoded = APIHelper.json_deserialize(_response.raw_body)
431
+ _errors = APIHelper.map_response(decoded, ['errors'])
432
+ ApiResponse.new(
433
+ _response, data: decoded, errors: _errors
434
+ )
435
+ end
436
+
437
+ # Retrieves a bookings custom attribute.
438
+ # To call this endpoint with buyer-level permissions, set
439
+ # `APPOINTMENTS_READ` for the OAuth scope.
440
+ # To call this endpoint with seller-level permissions, set
441
+ # `APPOINTMENTS_ALL_READ` and `APPOINTMENTS_READ` for the OAuth scope.
442
+ # @param [String] booking_id Required parameter: The ID of the target
443
+ # [booking]($m/Booking).
444
+ # @param [String] key Required parameter: The key of the custom attribute to
445
+ # retrieve. This key must match the `key` of a custom attribute definition
446
+ # in the Square seller account. If the requesting application is not the
447
+ # definition owner, you must use the qualified key.
448
+ # @param [TrueClass|FalseClass] with_definition Optional parameter:
449
+ # Indicates whether to return the [custom attribute
450
+ # definition]($m/CustomAttributeDefinition) in the `definition` field of the
451
+ # custom attribute. Set this parameter to `true` to get the name and
452
+ # description of the custom attribute, information about the data type, or
453
+ # other definition details. The default value is `false`.
454
+ # @param [Integer] version Optional parameter: The current version of the
455
+ # custom attribute, which is used for strongly consistent reads to guarantee
456
+ # that you receive the most up-to-date data. When included in the request,
457
+ # Square returns the specified version or a higher version if one exists. If
458
+ # the specified version is higher than the current version, Square returns a
459
+ # `BAD_REQUEST` error.
460
+ # @return [RetrieveBookingCustomAttributeResponse Hash] response from the API call
461
+ def retrieve_booking_custom_attribute(booking_id:,
462
+ key:,
463
+ with_definition: false,
464
+ version: nil)
465
+ # Prepare query url.
466
+ _query_builder = config.get_base_uri
467
+ _query_builder << '/v2/bookings/{booking_id}/custom-attributes/{key}'
468
+ _query_builder = APIHelper.append_url_with_template_parameters(
469
+ _query_builder,
470
+ 'booking_id' => { 'value' => booking_id, 'encode' => true },
471
+ 'key' => { 'value' => key, 'encode' => true }
472
+ )
473
+ _query_builder = APIHelper.append_url_with_query_parameters(
474
+ _query_builder,
475
+ 'with_definition' => with_definition,
476
+ 'version' => version
477
+ )
478
+ _query_url = APIHelper.clean_url _query_builder
479
+
480
+ # Prepare headers.
481
+ _headers = {
482
+ 'accept' => 'application/json'
483
+ }
484
+
485
+ # Prepare and execute HttpRequest.
486
+ _request = config.http_client.get(
487
+ _query_url,
488
+ headers: _headers
489
+ )
490
+ OAuth2.apply(config, _request)
491
+ _response = execute_request(_request)
492
+
493
+ # Return appropriate response type.
494
+ decoded = APIHelper.json_deserialize(_response.raw_body)
495
+ _errors = APIHelper.map_response(decoded, ['errors'])
496
+ ApiResponse.new(
497
+ _response, data: decoded, errors: _errors
498
+ )
499
+ end
500
+
501
+ # Upserts a bookings custom attribute.
502
+ # To call this endpoint with buyer-level permissions, set
503
+ # `APPOINTMENTS_WRITE` for the OAuth scope.
504
+ # To call this endpoint with seller-level permissions, set
505
+ # `APPOINTMENTS_ALL_WRITE` and `APPOINTMENTS_WRITE` for the OAuth scope.
506
+ # For calls to this endpoint with seller-level permissions to succeed, the
507
+ # seller must have subscribed to *Appointments Plus*
508
+ # or *Appointments Premium*.
509
+ # @param [String] booking_id Required parameter: The ID of the target
510
+ # [booking]($m/Booking).
511
+ # @param [String] key Required parameter: The key of the custom attribute to
512
+ # create or update. This key must match the `key` of a custom attribute
513
+ # definition in the Square seller account. If the requesting application is
514
+ # not the definition owner, you must use the qualified key.
515
+ # @param [UpsertBookingCustomAttributeRequest] body Required parameter: An
516
+ # object containing the fields to POST for the request. See the
517
+ # corresponding object definition for field details.
518
+ # @return [UpsertBookingCustomAttributeResponse Hash] response from the API call
519
+ def upsert_booking_custom_attribute(booking_id:,
520
+ key:,
521
+ body:)
522
+ # Prepare query url.
523
+ _query_builder = config.get_base_uri
524
+ _query_builder << '/v2/bookings/{booking_id}/custom-attributes/{key}'
525
+ _query_builder = APIHelper.append_url_with_template_parameters(
526
+ _query_builder,
527
+ 'booking_id' => { 'value' => booking_id, 'encode' => true },
528
+ 'key' => { 'value' => key, 'encode' => true }
529
+ )
530
+ _query_url = APIHelper.clean_url _query_builder
531
+
532
+ # Prepare headers.
533
+ _headers = {
534
+ 'accept' => 'application/json',
535
+ 'Content-Type' => 'application/json'
536
+ }
537
+
538
+ # Prepare and execute HttpRequest.
539
+ _request = config.http_client.put(
540
+ _query_url,
541
+ headers: _headers,
542
+ parameters: body.to_json
543
+ )
544
+ OAuth2.apply(config, _request)
545
+ _response = execute_request(_request)
546
+
547
+ # Return appropriate response type.
548
+ decoded = APIHelper.json_deserialize(_response.raw_body)
549
+ _errors = APIHelper.map_response(decoded, ['errors'])
550
+ ApiResponse.new(
551
+ _response, data: decoded, errors: _errors
552
+ )
553
+ end
554
+ end
555
+ end