square.rb 5.2.1.20200422 → 6.2.0.20200812

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.
@@ -46,13 +46,17 @@ 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
52
  require_relative 'square/api/reporting_api.rb'
52
53
  require_relative 'square/api/checkout_api.rb'
53
54
  require_relative 'square/api/orders_api.rb'
54
55
  require_relative 'square/api/transactions_api.rb'
56
+ require_relative 'square/api/loyalty_api.rb'
55
57
  require_relative 'square/api/merchants_api.rb'
56
58
  require_relative 'square/api/payments_api.rb'
57
59
  require_relative 'square/api/refunds_api.rb'
60
+ require_relative 'square/api/subscriptions_api.rb'
61
+ require_relative 'square/api/team_api.rb'
58
62
  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.2.1.20200422',
12
- 'Square-Version' => '2020-04-22'
11
+ 'user-agent' => 'Square-Ruby-SDK/6.2.0.20200812',
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.
@@ -5,7 +5,13 @@ module Square
5
5
  super(config, http_call_back: http_call_back)
6
6
  end
7
7
 
8
- # Lists a business's customers.
8
+ # Lists customer profiles associated with a Square account.
9
+ # Under normal operating conditions, newly created or updated customer
10
+ # profiles become available
11
+ # for the listing operation in well under 30 seconds. Occasionally,
12
+ # propagation of the new or updated
13
+ # profiles can take closer to one minute or longer, espeically during
14
+ # network incidents and outages.
9
15
  # @param [String] cursor Optional parameter: A pagination cursor returned by
10
16
  # a previous call to this endpoint. Provide this to retrieve the next set of
11
17
  # results for your original query. See the [Pagination
@@ -91,10 +97,17 @@ module Square
91
97
  ApiResponse.new(_response, data: decoded, errors: _errors)
92
98
  end
93
99
 
94
- # Searches the customer profiles associated with a Square account.
95
- # Calling SearchCustomers without an explicit query parameter returns all
100
+ # Searches the customer profiles associated with a Square account using
101
+ # one or more supported query filters.
102
+ # Calling `SearchCustomers` without any explicit query filter returns all
96
103
  # customer profiles ordered alphabetically based on `given_name` and
97
104
  # `family_name`.
105
+ # Under normal operating conditions, newly created or updated customer
106
+ # profiles become available
107
+ # for the search operation in well under 30 seconds. Occasionally,
108
+ # propagation of the new or updated
109
+ # profiles can take closer to one minute or longer, espeically during
110
+ # network incidents and outages.
98
111
  # @param [SearchCustomersRequest] body Required parameter: An object
99
112
  # containing the fields to POST for the request. See the corresponding
100
113
  # object definition for field details.
@@ -244,17 +244,7 @@ module Square
244
244
  # Uploads a file to use as evidence in a dispute challenge. The endpoint
245
245
  # accepts
246
246
  # 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
- # ```
247
+ # and TIFF formats.
258
248
  # For more information, see [Challenge a
259
249
  # Dispute](https://developer.squareup.com/docs/docs/disputes-api/process-dis
260
250
  # putes#challenge-a-dispute).
@@ -253,8 +253,8 @@ module Square
253
253
  # @param [String] cursor Optional parameter: A pagination cursor returned by
254
254
  # a previous call to this endpoint. Provide this to retrieve the next set of
255
255
  # 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.
256
+ # [Pagination](https://developer.squareup.com/docs/working-with-apis/paginat
257
+ # ion) guide for more information.
258
258
  # @return [RetrieveInventoryChangesResponse Hash] response from the API call
259
259
  def retrieve_inventory_changes(catalog_object_id:,
260
260
  location_ids: nil,
@@ -0,0 +1,358 @@
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
+ # For more information about retrieving invoices, see [Retrieve
12
+ # invoices](https://developer.squareup.com/docs/docs/invoices-api/overview#r
13
+ # etrieve-invoices).
14
+ # @param [String] location_id Required parameter: The ID of the location for
15
+ # which to list invoices.
16
+ # @param [String] cursor Optional parameter: A pagination cursor returned by
17
+ # a previous call to this endpoint. Provide this cursor to retrieve the
18
+ # next set of results for your original query. For more information, see
19
+ # [Pagination](https://developer.squareup.com/docs/docs/working-with-apis/pa
20
+ # gination).
21
+ # @param [Integer] limit Optional parameter: The maximum number of invoices
22
+ # to return (200 is the maximum `limit`). If not provided, the server uses
23
+ # a default limit of 100 invoices.
24
+ # @return [ListInvoicesResponse Hash] response from the API call
25
+ def list_invoices(location_id:,
26
+ cursor: nil,
27
+ limit: nil)
28
+ # Prepare query url.
29
+ _query_builder = config.get_base_uri
30
+ _query_builder << '/v2/invoices'
31
+ _query_builder = APIHelper.append_url_with_query_parameters(
32
+ _query_builder,
33
+ 'location_id' => location_id,
34
+ 'cursor' => cursor,
35
+ 'limit' => limit
36
+ )
37
+ _query_url = APIHelper.clean_url _query_builder
38
+
39
+ # Prepare headers.
40
+ _headers = {
41
+ 'accept' => 'application/json'
42
+ }
43
+
44
+ # Prepare and execute HttpRequest.
45
+ _request = config.http_client.get(
46
+ _query_url,
47
+ headers: _headers
48
+ )
49
+ OAuth2.apply(config, _request)
50
+ _response = execute_request(_request)
51
+
52
+ # Return appropriate response type.
53
+ decoded = APIHelper.json_deserialize(_response.raw_body)
54
+ _errors = APIHelper.map_response(decoded, ['errors'])
55
+ ApiResponse.new(_response, data: decoded, errors: _errors)
56
+ end
57
+
58
+ # Creates a draft [invoice](#type-invoice)
59
+ # for an order created using the Orders API.
60
+ # A draft invoice remains in your account and no action is taken.
61
+ # You must publish the invoice before Square can process it (send it to the
62
+ # customer's email address or charge the customer’s card on file).
63
+ # For more information, see [Manage Invoices Using the Invoices
64
+ # API](https://developer.squareup.com/docs/docs/invoices-api/overview).
65
+ # @param [CreateInvoiceRequest] body Required parameter: An object
66
+ # containing the fields to POST for the request. See the corresponding
67
+ # object definition for field details.
68
+ # @return [CreateInvoiceResponse Hash] response from the API call
69
+ def create_invoice(body:)
70
+ # Prepare query url.
71
+ _query_builder = config.get_base_uri
72
+ _query_builder << '/v2/invoices'
73
+ _query_url = APIHelper.clean_url _query_builder
74
+
75
+ # Prepare headers.
76
+ _headers = {
77
+ 'accept' => 'application/json',
78
+ 'content-type' => 'application/json; charset=utf-8'
79
+ }
80
+
81
+ # Prepare and execute HttpRequest.
82
+ _request = config.http_client.post(
83
+ _query_url,
84
+ headers: _headers,
85
+ parameters: body.to_json
86
+ )
87
+ OAuth2.apply(config, _request)
88
+ _response = execute_request(_request)
89
+
90
+ # Return appropriate response type.
91
+ decoded = APIHelper.json_deserialize(_response.raw_body)
92
+ _errors = APIHelper.map_response(decoded, ['errors'])
93
+ ApiResponse.new(_response, data: decoded, errors: _errors)
94
+ end
95
+
96
+ # Searches for invoices from a location specified in
97
+ # the filter. You can optionally specify customers in the filter for whom to
98
+ # retrieve invoices. In the current implementation, you can only specify one
99
+ # location and
100
+ # optionally one customer.
101
+ # The response is paginated. If truncated, the response includes a `cursor`
102
+ # that you use in a subsequent request to fetch the next set of invoices.
103
+ # For more information about retrieving invoices, see [Retrieve
104
+ # invoices](https://developer.squareup.com/docs/docs/invoices-api/overview#r
105
+ # etrieve-invoices).
106
+ # @param [SearchInvoicesRequest] body Required parameter: An object
107
+ # containing the fields to POST for the request. See the corresponding
108
+ # object definition for field details.
109
+ # @return [SearchInvoicesResponse Hash] response from the API call
110
+ def search_invoices(body:)
111
+ # Prepare query url.
112
+ _query_builder = config.get_base_uri
113
+ _query_builder << '/v2/invoices/search'
114
+ _query_url = APIHelper.clean_url _query_builder
115
+
116
+ # Prepare headers.
117
+ _headers = {
118
+ 'accept' => 'application/json',
119
+ 'content-type' => 'application/json; charset=utf-8'
120
+ }
121
+
122
+ # Prepare and execute HttpRequest.
123
+ _request = config.http_client.post(
124
+ _query_url,
125
+ headers: _headers,
126
+ parameters: body.to_json
127
+ )
128
+ OAuth2.apply(config, _request)
129
+ _response = execute_request(_request)
130
+
131
+ # Return appropriate response type.
132
+ decoded = APIHelper.json_deserialize(_response.raw_body)
133
+ _errors = APIHelper.map_response(decoded, ['errors'])
134
+ ApiResponse.new(_response, data: decoded, errors: _errors)
135
+ end
136
+
137
+ # Deletes the specified invoice. When an invoice is deleted, the
138
+ # associated Order status changes to CANCELED. You can only delete a draft
139
+ # invoice (you cannot delete an invoice scheduled for publication, or a
140
+ # published invoice).
141
+ # @param [String] invoice_id Required parameter: The ID of the invoice to
142
+ # delete.
143
+ # @param [Integer] version Optional parameter: The version of the
144
+ # [invoice](#type-invoice) to delete. If you do not know the version, you
145
+ # can call [GetInvoice](#endpoint-Invoices-GetInvoice) or
146
+ # [ListInvoices](#endpoint-Invoices-ListInvoices).
147
+ # @return [DeleteInvoiceResponse Hash] response from the API call
148
+ def delete_invoice(invoice_id:,
149
+ version: nil)
150
+ # Prepare query url.
151
+ _query_builder = config.get_base_uri
152
+ _query_builder << '/v2/invoices/{invoice_id}'
153
+ _query_builder = APIHelper.append_url_with_template_parameters(
154
+ _query_builder,
155
+ 'invoice_id' => invoice_id
156
+ )
157
+ _query_builder = APIHelper.append_url_with_query_parameters(
158
+ _query_builder,
159
+ 'version' => version
160
+ )
161
+ _query_url = APIHelper.clean_url _query_builder
162
+
163
+ # Prepare headers.
164
+ _headers = {
165
+ 'accept' => 'application/json'
166
+ }
167
+
168
+ # Prepare and execute HttpRequest.
169
+ _request = config.http_client.delete(
170
+ _query_url,
171
+ headers: _headers
172
+ )
173
+ OAuth2.apply(config, _request)
174
+ _response = execute_request(_request)
175
+
176
+ # Return appropriate response type.
177
+ decoded = APIHelper.json_deserialize(_response.raw_body)
178
+ _errors = APIHelper.map_response(decoded, ['errors'])
179
+ ApiResponse.new(_response, data: decoded, errors: _errors)
180
+ end
181
+
182
+ # Retrieves an invoice by invoice ID.
183
+ # @param [String] invoice_id Required parameter: The id of the invoice to
184
+ # retrieve.
185
+ # @return [GetInvoiceResponse Hash] response from the API call
186
+ def get_invoice(invoice_id:)
187
+ # Prepare query url.
188
+ _query_builder = config.get_base_uri
189
+ _query_builder << '/v2/invoices/{invoice_id}'
190
+ _query_builder = APIHelper.append_url_with_template_parameters(
191
+ _query_builder,
192
+ 'invoice_id' => invoice_id
193
+ )
194
+ _query_url = APIHelper.clean_url _query_builder
195
+
196
+ # Prepare headers.
197
+ _headers = {
198
+ 'accept' => 'application/json'
199
+ }
200
+
201
+ # Prepare and execute HttpRequest.
202
+ _request = config.http_client.get(
203
+ _query_url,
204
+ headers: _headers
205
+ )
206
+ OAuth2.apply(config, _request)
207
+ _response = execute_request(_request)
208
+
209
+ # Return appropriate response type.
210
+ decoded = APIHelper.json_deserialize(_response.raw_body)
211
+ _errors = APIHelper.map_response(decoded, ['errors'])
212
+ ApiResponse.new(_response, data: decoded, errors: _errors)
213
+ end
214
+
215
+ # Updates an invoice by modifying field values, clearing field values, or
216
+ # both
217
+ # as specified in the request.
218
+ # There are no restrictions to updating an invoice in a draft state.
219
+ # However, there are guidelines for updating a published invoice.
220
+ # For more information, see [Update an
221
+ # invoice](https://developer.squareup.com/docs/docs/invoices-api/overview#up
222
+ # date-an-invoice).
223
+ # @param [String] invoice_id Required parameter: The id of the invoice to
224
+ # update.
225
+ # @param [UpdateInvoiceRequest] body Required parameter: An object
226
+ # containing the fields to POST for the request. See the corresponding
227
+ # object definition for field details.
228
+ # @return [UpdateInvoiceResponse Hash] response from the API call
229
+ def update_invoice(invoice_id:,
230
+ body:)
231
+ # Prepare query url.
232
+ _query_builder = config.get_base_uri
233
+ _query_builder << '/v2/invoices/{invoice_id}'
234
+ _query_builder = APIHelper.append_url_with_template_parameters(
235
+ _query_builder,
236
+ 'invoice_id' => invoice_id
237
+ )
238
+ _query_url = APIHelper.clean_url _query_builder
239
+
240
+ # Prepare headers.
241
+ _headers = {
242
+ 'accept' => 'application/json',
243
+ 'content-type' => 'application/json; charset=utf-8'
244
+ }
245
+
246
+ # Prepare and execute HttpRequest.
247
+ _request = config.http_client.put(
248
+ _query_url,
249
+ headers: _headers,
250
+ parameters: body.to_json
251
+ )
252
+ OAuth2.apply(config, _request)
253
+ _response = execute_request(_request)
254
+
255
+ # Return appropriate response type.
256
+ decoded = APIHelper.json_deserialize(_response.raw_body)
257
+ _errors = APIHelper.map_response(decoded, ['errors'])
258
+ ApiResponse.new(_response, data: decoded, errors: _errors)
259
+ end
260
+
261
+ # Cancels an invoice. The seller cannot collect payments for
262
+ # the canceled invoice.
263
+ # You cannot cancel an invoice in a terminal state: `PAID`, `REFUNDED`,
264
+ # `CANCELED`, or `FAILED`.
265
+ # @param [String] invoice_id Required parameter: The ID of the
266
+ # [invoice](#type-invoice) to cancel.
267
+ # @param [CancelInvoiceRequest] body Required parameter: An object
268
+ # containing the fields to POST for the request. See the corresponding
269
+ # object definition for field details.
270
+ # @return [CancelInvoiceResponse Hash] response from the API call
271
+ def cancel_invoice(invoice_id:,
272
+ body:)
273
+ # Prepare query url.
274
+ _query_builder = config.get_base_uri
275
+ _query_builder << '/v2/invoices/{invoice_id}/cancel'
276
+ _query_builder = APIHelper.append_url_with_template_parameters(
277
+ _query_builder,
278
+ 'invoice_id' => invoice_id
279
+ )
280
+ _query_url = APIHelper.clean_url _query_builder
281
+
282
+ # Prepare headers.
283
+ _headers = {
284
+ 'accept' => 'application/json',
285
+ 'content-type' => 'application/json; charset=utf-8'
286
+ }
287
+
288
+ # Prepare and execute HttpRequest.
289
+ _request = config.http_client.post(
290
+ _query_url,
291
+ headers: _headers,
292
+ parameters: body.to_json
293
+ )
294
+ OAuth2.apply(config, _request)
295
+ _response = execute_request(_request)
296
+
297
+ # Return appropriate response type.
298
+ decoded = APIHelper.json_deserialize(_response.raw_body)
299
+ _errors = APIHelper.map_response(decoded, ['errors'])
300
+ ApiResponse.new(_response, data: decoded, errors: _errors)
301
+ end
302
+
303
+ # Publishes the specified draft invoice.
304
+ # After an invoice is published, Square
305
+ # follows up based on the invoice configuration. For example, Square
306
+ # sends the invoice to the customer's email address, charges the customer's
307
+ # card on file, or does
308
+ # nothing. Square also makes the invoice available on a Square-hosted
309
+ # invoice page.
310
+ # The invoice `status` also changes from `DRAFT` to a status
311
+ # based on the invoice configuration. For example, the status changes to
312
+ # `UNPAID` if
313
+ # Square emails the invoice or `PARTIALLY_PAID` if Square charge a card on
314
+ # file for a portion of the
315
+ # invoice amount).
316
+ # For more information, see
317
+ # [Create and publish an
318
+ # invoice](https://developer.squareup.com/docs/docs/invoices-api/overview#cr
319
+ # eate-and-publish-an-invoice).
320
+ # @param [String] invoice_id Required parameter: The id of the invoice to
321
+ # publish.
322
+ # @param [PublishInvoiceRequest] body Required parameter: An object
323
+ # containing the fields to POST for the request. See the corresponding
324
+ # object definition for field details.
325
+ # @return [PublishInvoiceResponse Hash] response from the API call
326
+ def publish_invoice(invoice_id:,
327
+ body:)
328
+ # Prepare query url.
329
+ _query_builder = config.get_base_uri
330
+ _query_builder << '/v2/invoices/{invoice_id}/publish'
331
+ _query_builder = APIHelper.append_url_with_template_parameters(
332
+ _query_builder,
333
+ 'invoice_id' => invoice_id
334
+ )
335
+ _query_url = APIHelper.clean_url _query_builder
336
+
337
+ # Prepare headers.
338
+ _headers = {
339
+ 'accept' => 'application/json',
340
+ 'content-type' => 'application/json; charset=utf-8'
341
+ }
342
+
343
+ # Prepare and execute HttpRequest.
344
+ _request = config.http_client.post(
345
+ _query_url,
346
+ headers: _headers,
347
+ parameters: body.to_json
348
+ )
349
+ OAuth2.apply(config, _request)
350
+ _response = execute_request(_request)
351
+
352
+ # Return appropriate response type.
353
+ decoded = APIHelper.json_deserialize(_response.raw_body)
354
+ _errors = APIHelper.map_response(decoded, ['errors'])
355
+ ApiResponse.new(_response, data: decoded, errors: _errors)
356
+ end
357
+ end
358
+ end