square.rb 5.3.0.20200528 → 6.4.0.20200923

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +317 -285
  3. data/lib/square.rb +4 -2
  4. data/lib/square/api/base_api.rb +2 -2
  5. data/lib/square/api/catalog_api.rb +76 -57
  6. data/lib/square/api/disputes_api.rb +3 -26
  7. data/lib/square/api/employees_api.rb +3 -2
  8. data/lib/square/api/inventory_api.rb +5 -4
  9. data/lib/square/api/invoices_api.rb +343 -0
  10. data/lib/square/api/labor_api.rb +77 -0
  11. data/lib/square/api/locations_api.rb +7 -2
  12. data/lib/square/api/merchants_api.rb +2 -1
  13. data/lib/square/api/orders_api.rb +59 -85
  14. data/lib/square/api/payments_api.rb +15 -24
  15. data/lib/square/api/refunds_api.rb +12 -7
  16. data/lib/square/api/subscriptions_api.rb +251 -0
  17. data/lib/square/api/team_api.rb +326 -0
  18. data/lib/square/api/transactions_api.rb +0 -71
  19. data/lib/square/api/v1_employees_api.rb +3 -76
  20. data/lib/square/api/v1_items_api.rb +0 -360
  21. data/lib/square/api/v1_locations_api.rb +0 -18
  22. data/lib/square/api/v1_transactions_api.rb +1 -19
  23. data/lib/square/client.rb +29 -16
  24. data/lib/square/configuration.rb +12 -4
  25. data/test/api/api_test_base.rb +1 -6
  26. data/test/api/test_catalog_api.rb +1 -4
  27. data/test/api/test_customers_api.rb +1 -4
  28. data/test/api/test_employees_api.rb +1 -4
  29. data/test/api/test_labor_api.rb +2 -6
  30. data/test/api/test_locations_api.rb +21 -32
  31. data/test/api/test_merchants_api.rb +1 -4
  32. data/test/api/test_payments_api.rb +3 -6
  33. data/test/api/test_refunds_api.rb +3 -6
  34. data/test/http_response_catcher.rb +0 -5
  35. data/test/test_helper.rb +0 -5
  36. metadata +33 -13
  37. data/lib/square/api/reporting_api.rb +0 -138
@@ -46,14 +46,16 @@ require_relative 'square/api/devices_api.rb'
46
46
  require_relative 'square/api/disputes_api.rb'
47
47
  require_relative 'square/api/employees_api.rb'
48
48
  require_relative 'square/api/inventory_api.rb'
49
+ require_relative 'square/api/invoices_api.rb'
49
50
  require_relative 'square/api/labor_api.rb'
50
51
  require_relative 'square/api/locations_api.rb'
51
- require_relative 'square/api/reporting_api.rb'
52
52
  require_relative 'square/api/checkout_api.rb'
53
- require_relative 'square/api/orders_api.rb'
54
53
  require_relative 'square/api/transactions_api.rb'
55
54
  require_relative 'square/api/loyalty_api.rb'
56
55
  require_relative 'square/api/merchants_api.rb'
56
+ require_relative 'square/api/orders_api.rb'
57
57
  require_relative 'square/api/payments_api.rb'
58
58
  require_relative 'square/api/refunds_api.rb'
59
+ require_relative 'square/api/subscriptions_api.rb'
60
+ require_relative 'square/api/team_api.rb'
59
61
  require_relative 'square/api/terminal_api.rb'
@@ -8,8 +8,8 @@ module Square
8
8
  @http_call_back = http_call_back
9
9
 
10
10
  @global_headers = {
11
- 'user-agent' => 'Square-Ruby-SDK/5.3.0.20200528',
12
- 'Square-Version' => '2020-05-28'
11
+ 'user-agent' => 'Square-Ruby-SDK/6.4.0.20200923',
12
+ 'Square-Version' => config.square_version
13
13
  }
14
14
  end
15
15
 
@@ -131,42 +131,14 @@ module Square
131
131
  ApiResponse.new(_response, data: decoded, errors: _errors)
132
132
  end
133
133
 
134
- # Upload an image file to create a new [CatalogImage](#type-catalogimage)
135
- # for an existing
136
- # [CatalogObject](#type-catalogobject). Images can be uploaded and linked in
137
- # this request or created independently
138
- # (without an object assignment) and linked to a
139
- # [CatalogObject](#type-catalogobject) at a later time.
140
- # CreateCatalogImage accepts HTTP multipart/form-data requests with a JSON
141
- # part and an image file part in
142
- # JPEG, PJPEG, PNG, or GIF format. The maximum file size is 15MB. The
143
- # following is an example of such an HTTP request:
144
- # ```
145
- # POST /v2/catalog/images
146
- # Accept: application/json
147
- # Content-Type: multipart/form-data;boundary="boundary"
148
- # Square-Version: XXXX-XX-XX
149
- # Authorization: Bearer {ACCESS_TOKEN}
150
- # --boundary
151
- # Content-Disposition: form-data; name="request"
152
- # Content-Type: application/json
153
- # {
154
- # "idempotency_key":"528dea59-7bfb-43c1-bd48-4a6bba7dd61f86",
155
- # "object_id": "ND6EA5AAJEO5WL3JNNIAQA32",
156
- # "image":{
157
- # "id":"#TEMP_ID",
158
- # "type":"IMAGE",
159
- # "image_data":{
160
- # "caption":"A picture of a cup of coffee"
161
- # }
162
- # }
163
- # }
164
- # --boundary
165
- # Content-Disposition: form-data; name="image"; filename="Coffee.jpg"
166
- # Content-Type: image/jpeg
167
- # {ACTUAL_IMAGE_BYTES}
168
- # --boundary
169
- # ```
134
+ # Uploads an image file to be represented by an
135
+ # [CatalogImage](#type-catalogimage) object linked to an existing
136
+ # [CatalogObject](#type-catalogobject) instance. A call to this endpoint can
137
+ # upload an image, link an image to
138
+ # a catalog object, or do both.
139
+ # This `CreateCatalogImage` endpoint accepts HTTP multipart/form-data
140
+ # requests with a JSON part and an image file part in
141
+ # JPEG, PJPEG, PNG, or GIF format. The maximum file size is 15MB.
170
142
  # Additional information and an example cURL request can be found in the
171
143
  # [Create a Catalog Image
172
144
  # recipe](https://developer.squareup.com/docs/more-apis/catalog/cookbook/cre
@@ -222,8 +194,8 @@ module Square
222
194
  ApiResponse.new(_response, data: decoded, errors: _errors)
223
195
  end
224
196
 
225
- # Returns information about the Square Catalog API, such as batch size
226
- # limits for `BatchUpsertCatalogObjects`.
197
+ # Retrieves information about the Square Catalog API, such as batch size
198
+ # limits that can be used by the `BatchUpsertCatalogObjects` endpoint.
227
199
  # @return [CatalogInfoResponse Hash] response from the API call
228
200
  def catalog_info
229
201
  # Prepare query url.
@@ -400,7 +372,7 @@ module Square
400
372
  # `false`
401
373
  # @return [RetrieveCatalogObjectResponse Hash] response from the API call
402
374
  def retrieve_catalog_object(object_id:,
403
- include_related_objects: nil)
375
+ include_related_objects: false)
404
376
  # Prepare query url.
405
377
  _query_builder = config.get_base_uri
406
378
  _query_builder << '/v2/catalog/object/{object_id}'
@@ -433,24 +405,23 @@ module Square
433
405
  ApiResponse.new(_response, data: decoded, errors: _errors)
434
406
  end
435
407
 
436
- # Queries the targeted catalog using a variety of query types:
437
- # [CatalogQuerySortedAttribute](#type-catalogquerysortedattribute),
438
- # [CatalogQueryExact](#type-catalogqueryexact),
439
- # [CatalogQueryRange](#type-catalogqueryrange),
440
- # [CatalogQueryText](#type-catalogquerytext),
441
- # [CatalogQueryItemsForTax](#type-catalogqueryitemsfortax), and
442
- # [CatalogQueryItemsForModifierList](#type-catalogqueryitemsformodifierlist)
443
- # .
444
- # --
445
- # --
446
- # Future end of the above comment:
447
- # [CatalogQueryItemsForTax](#type-catalogqueryitemsfortax),
448
- # [CatalogQueryItemsForModifierList](#type-catalogqueryitemsformodifierlist)
449
- # ,
450
- # [CatalogQueryItemsForItemOptions](#type-catalogqueryitemsforitemoptions),
451
- # and
452
- # [CatalogQueryItemVariationsForItemOptionValues](#type-catalogqueryitemvari
453
- # ationsforitemoptionvalues).
408
+ # Searches for [CatalogObject](#type-CatalogObject) of any types against
409
+ # supported search attribute values,
410
+ # excluding custom attribute values on items or item variations, against one
411
+ # or more of the specified query expressions,
412
+ # This (`SearchCatalogObjects`) endpoint differs from the
413
+ # [SearchCatalogItems](#endpoint-Catalog-SearchCatalogItems)
414
+ # endpoint in the following aspects:
415
+ # - `SearchCatalogItems` can only search for items or item variations,
416
+ # whereas `SearchCatalogObjects` can search for any type of catalog objects.
417
+ # - `SearchCatalogItems` supports the custom attribute query filters to
418
+ # return items or item variations that contain custom attribute values,
419
+ # where `SearchCatalogObjects` does not.
420
+ # - `SearchCatalogItems` does not support the `include_deleted_objects`
421
+ # filter to search for deleted items or item variations, whereas
422
+ # `SearchCatalogObjects` does.
423
+ # - The both endpoints have different call conventions, including the query
424
+ # filter formats.
454
425
  # @param [SearchCatalogObjectsRequest] body Required parameter: An object
455
426
  # containing the fields to POST for the request. See the corresponding
456
427
  # object definition for field details.
@@ -482,6 +453,54 @@ module Square
482
453
  ApiResponse.new(_response, data: decoded, errors: _errors)
483
454
  end
484
455
 
456
+ # Searches for catalog items or item variations by matching supported search
457
+ # attribute values, including
458
+ # custom attribute values, against one or more of the specified query
459
+ # expressions,
460
+ # This (`SearchCatalogItems`) endpoint differs from the
461
+ # [SearchCatalogObjects](#endpoint-Catalog-SearchCatalogObjects)
462
+ # endpoint in the following aspects:
463
+ # - `SearchCatalogItems` can only search for items or item variations,
464
+ # whereas `SearchCatalogObjects` can search for any type of catalog objects.
465
+ # - `SearchCatalogItems` supports the custom attribute query filters to
466
+ # return items or item variations that contain custom attribute values,
467
+ # where `SearchCatalogObjects` does not.
468
+ # - `SearchCatalogItems` does not support the `include_deleted_objects`
469
+ # filter to search for deleted items or item variations, whereas
470
+ # `SearchCatalogObjects` does.
471
+ # - The both endpoints use different call conventions, including the query
472
+ # filter formats.
473
+ # @param [SearchCatalogItemsRequest] body Required parameter: An object
474
+ # containing the fields to POST for the request. See the corresponding
475
+ # object definition for field details.
476
+ # @return [SearchCatalogItemsResponse Hash] response from the API call
477
+ def search_catalog_items(body:)
478
+ # Prepare query url.
479
+ _query_builder = config.get_base_uri
480
+ _query_builder << '/v2/catalog/search-catalog-items'
481
+ _query_url = APIHelper.clean_url _query_builder
482
+
483
+ # Prepare headers.
484
+ _headers = {
485
+ 'accept' => 'application/json',
486
+ 'content-type' => 'application/json; charset=utf-8'
487
+ }
488
+
489
+ # Prepare and execute HttpRequest.
490
+ _request = config.http_client.post(
491
+ _query_url,
492
+ headers: _headers,
493
+ parameters: body.to_json
494
+ )
495
+ OAuth2.apply(config, _request)
496
+ _response = execute_request(_request)
497
+
498
+ # Return appropriate response type.
499
+ decoded = APIHelper.json_deserialize(_response.raw_body)
500
+ _errors = APIHelper.map_response(decoded, ['errors'])
501
+ ApiResponse.new(_response, data: decoded, errors: _errors)
502
+ end
503
+
485
504
  # Updates the [CatalogModifierList](#type-catalogmodifierlist) objects
486
505
  # that apply to the targeted [CatalogItem](#type-catalogitem) without having
487
506
  # to perform an upsert on the entire item.
@@ -92,9 +92,6 @@ module Square
92
92
  # Square debits the disputed amount from the seller’s Square
93
93
  # account. If the Square account balance does not have
94
94
  # sufficient funds, Square debits the associated bank account.
95
- # For an overview of the Disputes API, see
96
- # [Overview](https://developer.squareup.com/docs/docs/disputes-api/overview)
97
- # .
98
95
  # @param [String] dispute_id Required parameter: ID of the dispute you want
99
96
  # to accept.
100
97
  # @return [AcceptDisputeResponse Hash] response from the API call
@@ -244,20 +241,7 @@ module Square
244
241
  # Uploads a file to use as evidence in a dispute challenge. The endpoint
245
242
  # accepts
246
243
  # HTTP multipart/form-data file uploads in HEIC, HEIF, JPEG, PDF, PNG,
247
- # and TIFF formats. The following is an example of such an HTTP request:
248
- # ```
249
- # curl -X POST \
250
- # -H 'Accept: application/json' \
251
- # -H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
252
- # -H 'Content-Type: multipart/form-data' \
253
- # -F 'evidence=@/path/to/file/filename.tiff' \
254
- # -F 'request={ "idempotency_key":"{{UNIQUE_KEY}}",
255
- # "evidence_type":"{{EVIDENCE_TYPE}}", "content_type":"image/tiff" }' \
256
- # 'https://connect.squareup.com/v2/disputes/{{DISPUTE_ID}}/evidence_file'
257
- # ```
258
- # For more information, see [Challenge a
259
- # Dispute](https://developer.squareup.com/docs/docs/disputes-api/process-dis
260
- # putes#challenge-a-dispute).
244
+ # and TIFF formats.
261
245
  # @param [String] dispute_id Required parameter: ID of the dispute you want
262
246
  # to upload evidence for.
263
247
  # @param [CreateDisputeEvidenceFileRequest] request Optional parameter:
@@ -317,11 +301,7 @@ module Square
317
301
  ApiResponse.new(_response, data: decoded, errors: _errors)
318
302
  end
319
303
 
320
- # Uploads text to use as evidence for a dispute challenge. For more
321
- # information, see
322
- # [Challenge a
323
- # Dispute](https://developer.squareup.com/docs/docs/disputes-api/process-dis
324
- # putes#challenge-a-dispute).
304
+ # Uploads text to use as evidence for a dispute challenge.
325
305
  # @param [String] dispute_id Required parameter: The ID of the dispute you
326
306
  # want to upload evidence for.
327
307
  # @param [CreateDisputeEvidenceTextRequest] body Required parameter: An
@@ -369,10 +349,7 @@ module Square
369
349
  # [CreateDisputeEvidenceText](https://developer.squareup.com/docs/reference/
370
350
  # square/disputes-api/create-dispute-evidence-text) endpoints,
371
351
  # and evidence automatically provided by Square, when
372
- # available. For more information, see
373
- # [Challenge a
374
- # Dispute](https://developer.squareup.com/docs/docs/disputes-api/process-dis
375
- # putes#challenge-a-dispute).
352
+ # available.
376
353
  # @param [String] dispute_id Required parameter: The ID of the dispute you
377
354
  # want to submit evidence for.
378
355
  # @return [SubmitEvidenceResponse Hash] response from the API call
@@ -6,8 +6,7 @@ module Square
6
6
  end
7
7
 
8
8
  # ListEmployees
9
- # @param [String] location_id Optional parameter: Filter employees returned
10
- # to only those that are associated with the specified location.
9
+ # @param [String] location_id Optional parameter: Example:
11
10
  # @param [EmployeeStatus] status Optional parameter: Specifies the
12
11
  # EmployeeStatus to filter the employee by.
13
12
  # @param [Integer] limit Optional parameter: The number of employees to be
@@ -19,6 +18,7 @@ module Square
19
18
  status: nil,
20
19
  limit: nil,
21
20
  cursor: nil)
21
+ warn 'Endpoint list_employees in EmployeesApi is deprecated'
22
22
  # Prepare query url.
23
23
  _query_builder = config.get_base_uri
24
24
  _query_builder << '/v2/employees'
@@ -55,6 +55,7 @@ module Square
55
55
  # requested.
56
56
  # @return [RetrieveEmployeeResponse Hash] response from the API call
57
57
  def retrieve_employee(id:)
58
+ warn 'Endpoint retrieve_employee in EmployeesApi is deprecated'
58
59
  # Prepare query url.
59
60
  _query_builder = config.get_base_uri
60
61
  _query_builder << '/v2/employees/{id}'
@@ -242,8 +242,9 @@ module Square
242
242
  # [Location](#type-location)s.
243
243
  # Results are paginated and sorted in descending order according to their
244
244
  # `occurred_at` timestamp (newest first).
245
- # There are no limits on how far back the caller can page. This endpoint is
246
- # useful when displaying recent changes for a specific item. For more
245
+ # There are no limits on how far back the caller can page. This endpoint can
246
+ # be
247
+ # used to display recent changes for a specific item. For more
247
248
  # sophisticated queries, use a batch endpoint.
248
249
  # @param [String] catalog_object_id Required parameter: ID of the
249
250
  # [CatalogObject](#type-catalogobject) to retrieve.
@@ -253,8 +254,8 @@ module Square
253
254
  # @param [String] cursor Optional parameter: A pagination cursor returned by
254
255
  # a previous call to this endpoint. Provide this to retrieve the next set of
255
256
  # results for the original query. See the
256
- # [Pagination](https://developer.squareup.com/docs/docs/working-with-apis/pa
257
- # gination) guide for more information.
257
+ # [Pagination](https://developer.squareup.com/docs/working-with-apis/paginat
258
+ # ion) guide for more information.
258
259
  # @return [RetrieveInventoryChangesResponse Hash] response from the API call
259
260
  def retrieve_inventory_changes(catalog_object_id:,
260
261
  location_ids: nil,
@@ -0,0 +1,343 @@
1
+ module Square
2
+ # InvoicesApi
3
+ class InvoicesApi < BaseApi
4
+ def initialize(config, http_call_back: nil)
5
+ super(config, http_call_back: http_call_back)
6
+ end
7
+
8
+ # Returns a list of invoices for a given location. The response
9
+ # is paginated. If truncated, the response includes a `cursor` that you
10
+ # use in a subsequent request to fetch the next set of invoices.
11
+ # @param [String] location_id Required parameter: The ID of the location for
12
+ # which to list invoices.
13
+ # @param [String] cursor Optional parameter: A pagination cursor returned by
14
+ # a previous call to this endpoint. Provide this cursor to retrieve the
15
+ # next set of results for your original query. For more information, see
16
+ # [Pagination](https://developer.squareup.com/docs/docs/working-with-apis/pa
17
+ # gination).
18
+ # @param [Integer] limit Optional parameter: The maximum number of invoices
19
+ # to return (200 is the maximum `limit`). If not provided, the server uses
20
+ # a default limit of 100 invoices.
21
+ # @return [ListInvoicesResponse Hash] response from the API call
22
+ def list_invoices(location_id:,
23
+ cursor: nil,
24
+ limit: nil)
25
+ # Prepare query url.
26
+ _query_builder = config.get_base_uri
27
+ _query_builder << '/v2/invoices'
28
+ _query_builder = APIHelper.append_url_with_query_parameters(
29
+ _query_builder,
30
+ 'location_id' => location_id,
31
+ 'cursor' => cursor,
32
+ 'limit' => limit
33
+ )
34
+ _query_url = APIHelper.clean_url _query_builder
35
+
36
+ # Prepare headers.
37
+ _headers = {
38
+ 'accept' => 'application/json'
39
+ }
40
+
41
+ # Prepare and execute HttpRequest.
42
+ _request = config.http_client.get(
43
+ _query_url,
44
+ headers: _headers
45
+ )
46
+ OAuth2.apply(config, _request)
47
+ _response = execute_request(_request)
48
+
49
+ # Return appropriate response type.
50
+ decoded = APIHelper.json_deserialize(_response.raw_body)
51
+ _errors = APIHelper.map_response(decoded, ['errors'])
52
+ ApiResponse.new(_response, data: decoded, errors: _errors)
53
+ end
54
+
55
+ # Creates a draft [invoice](#type-invoice)
56
+ # for an order created using the Orders API.
57
+ # A draft invoice remains in your account and no action is taken.
58
+ # You must publish the invoice before Square can process it (send it to the
59
+ # customer's email address or charge the customer’s card on file).
60
+ # @param [CreateInvoiceRequest] body Required parameter: An object
61
+ # containing the fields to POST for the request. See the corresponding
62
+ # object definition for field details.
63
+ # @return [CreateInvoiceResponse Hash] response from the API call
64
+ def create_invoice(body:)
65
+ # Prepare query url.
66
+ _query_builder = config.get_base_uri
67
+ _query_builder << '/v2/invoices'
68
+ _query_url = APIHelper.clean_url _query_builder
69
+
70
+ # Prepare headers.
71
+ _headers = {
72
+ 'accept' => 'application/json',
73
+ 'content-type' => 'application/json; charset=utf-8'
74
+ }
75
+
76
+ # Prepare and execute HttpRequest.
77
+ _request = config.http_client.post(
78
+ _query_url,
79
+ headers: _headers,
80
+ parameters: body.to_json
81
+ )
82
+ OAuth2.apply(config, _request)
83
+ _response = execute_request(_request)
84
+
85
+ # Return appropriate response type.
86
+ decoded = APIHelper.json_deserialize(_response.raw_body)
87
+ _errors = APIHelper.map_response(decoded, ['errors'])
88
+ ApiResponse.new(_response, data: decoded, errors: _errors)
89
+ end
90
+
91
+ # Searches for invoices from a location specified in
92
+ # the filter. You can optionally specify customers in the filter for whom to
93
+ # retrieve invoices. In the current implementation, you can only specify one
94
+ # location and
95
+ # optionally one customer.
96
+ # The response is paginated. If truncated, the response includes a `cursor`
97
+ # that you use in a subsequent request to fetch the next set of invoices.
98
+ # @param [SearchInvoicesRequest] body Required parameter: An object
99
+ # containing the fields to POST for the request. See the corresponding
100
+ # object definition for field details.
101
+ # @return [SearchInvoicesResponse Hash] response from the API call
102
+ def search_invoices(body:)
103
+ # Prepare query url.
104
+ _query_builder = config.get_base_uri
105
+ _query_builder << '/v2/invoices/search'
106
+ _query_url = APIHelper.clean_url _query_builder
107
+
108
+ # Prepare headers.
109
+ _headers = {
110
+ 'accept' => 'application/json',
111
+ 'content-type' => 'application/json; charset=utf-8'
112
+ }
113
+
114
+ # Prepare and execute HttpRequest.
115
+ _request = config.http_client.post(
116
+ _query_url,
117
+ headers: _headers,
118
+ parameters: body.to_json
119
+ )
120
+ OAuth2.apply(config, _request)
121
+ _response = execute_request(_request)
122
+
123
+ # Return appropriate response type.
124
+ decoded = APIHelper.json_deserialize(_response.raw_body)
125
+ _errors = APIHelper.map_response(decoded, ['errors'])
126
+ ApiResponse.new(_response, data: decoded, errors: _errors)
127
+ end
128
+
129
+ # Deletes the specified invoice. When an invoice is deleted, the
130
+ # associated Order status changes to CANCELED. You can only delete a draft
131
+ # invoice (you cannot delete an invoice scheduled for publication, or a
132
+ # published invoice).
133
+ # @param [String] invoice_id Required parameter: The ID of the invoice to
134
+ # delete.
135
+ # @param [Integer] version Optional parameter: The version of the
136
+ # [invoice](#type-invoice) to delete. If you do not know the version, you
137
+ # can call [GetInvoice](#endpoint-Invoices-GetInvoice) or
138
+ # [ListInvoices](#endpoint-Invoices-ListInvoices).
139
+ # @return [DeleteInvoiceResponse Hash] response from the API call
140
+ def delete_invoice(invoice_id:,
141
+ version: nil)
142
+ # Prepare query url.
143
+ _query_builder = config.get_base_uri
144
+ _query_builder << '/v2/invoices/{invoice_id}'
145
+ _query_builder = APIHelper.append_url_with_template_parameters(
146
+ _query_builder,
147
+ 'invoice_id' => invoice_id
148
+ )
149
+ _query_builder = APIHelper.append_url_with_query_parameters(
150
+ _query_builder,
151
+ 'version' => version
152
+ )
153
+ _query_url = APIHelper.clean_url _query_builder
154
+
155
+ # Prepare headers.
156
+ _headers = {
157
+ 'accept' => 'application/json'
158
+ }
159
+
160
+ # Prepare and execute HttpRequest.
161
+ _request = config.http_client.delete(
162
+ _query_url,
163
+ headers: _headers
164
+ )
165
+ OAuth2.apply(config, _request)
166
+ _response = execute_request(_request)
167
+
168
+ # Return appropriate response type.
169
+ decoded = APIHelper.json_deserialize(_response.raw_body)
170
+ _errors = APIHelper.map_response(decoded, ['errors'])
171
+ ApiResponse.new(_response, data: decoded, errors: _errors)
172
+ end
173
+
174
+ # Retrieves an invoice by invoice ID.
175
+ # @param [String] invoice_id Required parameter: The id of the invoice to
176
+ # retrieve.
177
+ # @return [GetInvoiceResponse Hash] response from the API call
178
+ def get_invoice(invoice_id:)
179
+ # Prepare query url.
180
+ _query_builder = config.get_base_uri
181
+ _query_builder << '/v2/invoices/{invoice_id}'
182
+ _query_builder = APIHelper.append_url_with_template_parameters(
183
+ _query_builder,
184
+ 'invoice_id' => invoice_id
185
+ )
186
+ _query_url = APIHelper.clean_url _query_builder
187
+
188
+ # Prepare headers.
189
+ _headers = {
190
+ 'accept' => 'application/json'
191
+ }
192
+
193
+ # Prepare and execute HttpRequest.
194
+ _request = config.http_client.get(
195
+ _query_url,
196
+ headers: _headers
197
+ )
198
+ OAuth2.apply(config, _request)
199
+ _response = execute_request(_request)
200
+
201
+ # Return appropriate response type.
202
+ decoded = APIHelper.json_deserialize(_response.raw_body)
203
+ _errors = APIHelper.map_response(decoded, ['errors'])
204
+ ApiResponse.new(_response, data: decoded, errors: _errors)
205
+ end
206
+
207
+ # Updates an invoice by modifying field values, clearing field values, or
208
+ # both
209
+ # as specified in the request.
210
+ # There are no restrictions to updating an invoice in a draft state.
211
+ # However, there are guidelines for updating a published invoice.
212
+ # @param [String] invoice_id Required parameter: The id of the invoice to
213
+ # update.
214
+ # @param [UpdateInvoiceRequest] body Required parameter: An object
215
+ # containing the fields to POST for the request. See the corresponding
216
+ # object definition for field details.
217
+ # @return [UpdateInvoiceResponse Hash] response from the API call
218
+ def update_invoice(invoice_id:,
219
+ body:)
220
+ # Prepare query url.
221
+ _query_builder = config.get_base_uri
222
+ _query_builder << '/v2/invoices/{invoice_id}'
223
+ _query_builder = APIHelper.append_url_with_template_parameters(
224
+ _query_builder,
225
+ 'invoice_id' => invoice_id
226
+ )
227
+ _query_url = APIHelper.clean_url _query_builder
228
+
229
+ # Prepare headers.
230
+ _headers = {
231
+ 'accept' => 'application/json',
232
+ 'content-type' => 'application/json; charset=utf-8'
233
+ }
234
+
235
+ # Prepare and execute HttpRequest.
236
+ _request = config.http_client.put(
237
+ _query_url,
238
+ headers: _headers,
239
+ parameters: body.to_json
240
+ )
241
+ OAuth2.apply(config, _request)
242
+ _response = execute_request(_request)
243
+
244
+ # Return appropriate response type.
245
+ decoded = APIHelper.json_deserialize(_response.raw_body)
246
+ _errors = APIHelper.map_response(decoded, ['errors'])
247
+ ApiResponse.new(_response, data: decoded, errors: _errors)
248
+ end
249
+
250
+ # Cancels an invoice. The seller cannot collect payments for
251
+ # the canceled invoice.
252
+ # You cannot cancel an invoice in a terminal state: `PAID`, `REFUNDED`,
253
+ # `CANCELED`, or `FAILED`.
254
+ # @param [String] invoice_id Required parameter: The ID of the
255
+ # [invoice](#type-invoice) to cancel.
256
+ # @param [CancelInvoiceRequest] body Required parameter: An object
257
+ # containing the fields to POST for the request. See the corresponding
258
+ # object definition for field details.
259
+ # @return [CancelInvoiceResponse Hash] response from the API call
260
+ def cancel_invoice(invoice_id:,
261
+ body:)
262
+ # Prepare query url.
263
+ _query_builder = config.get_base_uri
264
+ _query_builder << '/v2/invoices/{invoice_id}/cancel'
265
+ _query_builder = APIHelper.append_url_with_template_parameters(
266
+ _query_builder,
267
+ 'invoice_id' => invoice_id
268
+ )
269
+ _query_url = APIHelper.clean_url _query_builder
270
+
271
+ # Prepare headers.
272
+ _headers = {
273
+ 'accept' => 'application/json',
274
+ 'content-type' => 'application/json; charset=utf-8'
275
+ }
276
+
277
+ # Prepare and execute HttpRequest.
278
+ _request = config.http_client.post(
279
+ _query_url,
280
+ headers: _headers,
281
+ parameters: body.to_json
282
+ )
283
+ OAuth2.apply(config, _request)
284
+ _response = execute_request(_request)
285
+
286
+ # Return appropriate response type.
287
+ decoded = APIHelper.json_deserialize(_response.raw_body)
288
+ _errors = APIHelper.map_response(decoded, ['errors'])
289
+ ApiResponse.new(_response, data: decoded, errors: _errors)
290
+ end
291
+
292
+ # Publishes the specified draft invoice.
293
+ # After an invoice is published, Square
294
+ # follows up based on the invoice configuration. For example, Square
295
+ # sends the invoice to the customer's email address, charges the customer's
296
+ # card on file, or does
297
+ # nothing. Square also makes the invoice available on a Square-hosted
298
+ # invoice page.
299
+ # The invoice `status` also changes from `DRAFT` to a status
300
+ # based on the invoice configuration. For example, the status changes to
301
+ # `UNPAID` if
302
+ # Square emails the invoice or `PARTIALLY_PAID` if Square charge a card on
303
+ # file for a portion of the
304
+ # invoice amount).
305
+ # @param [String] invoice_id Required parameter: The id of the invoice to
306
+ # publish.
307
+ # @param [PublishInvoiceRequest] body Required parameter: An object
308
+ # containing the fields to POST for the request. See the corresponding
309
+ # object definition for field details.
310
+ # @return [PublishInvoiceResponse Hash] response from the API call
311
+ def publish_invoice(invoice_id:,
312
+ body:)
313
+ # Prepare query url.
314
+ _query_builder = config.get_base_uri
315
+ _query_builder << '/v2/invoices/{invoice_id}/publish'
316
+ _query_builder = APIHelper.append_url_with_template_parameters(
317
+ _query_builder,
318
+ 'invoice_id' => invoice_id
319
+ )
320
+ _query_url = APIHelper.clean_url _query_builder
321
+
322
+ # Prepare headers.
323
+ _headers = {
324
+ 'accept' => 'application/json',
325
+ 'content-type' => 'application/json; charset=utf-8'
326
+ }
327
+
328
+ # Prepare and execute HttpRequest.
329
+ _request = config.http_client.post(
330
+ _query_url,
331
+ headers: _headers,
332
+ parameters: body.to_json
333
+ )
334
+ OAuth2.apply(config, _request)
335
+ _response = execute_request(_request)
336
+
337
+ # Return appropriate response type.
338
+ decoded = APIHelper.json_deserialize(_response.raw_body)
339
+ _errors = APIHelper.map_response(decoded, ['errors'])
340
+ ApiResponse.new(_response, data: decoded, errors: _errors)
341
+ end
342
+ end
343
+ end