square.rb 5.2.2.20200422 → 6.3.0.20200826

Sign up to get free protection for your applications and to get access to all the features.
@@ -46,13 +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'
54
+ require_relative 'square/api/loyalty_api.rb'
55
55
  require_relative 'square/api/merchants_api.rb'
56
+ require_relative 'square/api/orders_api.rb'
56
57
  require_relative 'square/api/payments_api.rb'
57
58
  require_relative 'square/api/refunds_api.rb'
59
+ require_relative 'square/api/subscriptions_api.rb'
60
+ require_relative 'square/api/team_api.rb'
58
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.2.2.20200422',
12
- 'Square-Version' => '2020-04-22'
11
+ 'user-agent' => 'Square-Ruby-SDK/6.3.0.20200826',
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).
@@ -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,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