square.rb 44.0.1.20250820 → 44.2.0.20251016

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/square/channels/client.rb +84 -0
  3. data/lib/square/channels/types/bulk_retrieve_channels_request.rb +11 -0
  4. data/lib/square/channels/types/get_channels_request.rb +11 -0
  5. data/lib/square/channels/types/list_channels_request.rb +15 -0
  6. data/lib/square/client.rb +11 -1
  7. data/lib/square/loyalty/programs/promotions/types/cancel_promotions_request.rb +1 -1
  8. data/lib/square/loyalty/programs/promotions/types/get_promotions_request.rb +1 -1
  9. data/lib/square/transfer_orders/client.rb +287 -0
  10. data/lib/square/transfer_orders/types/cancel_transfer_order_request.rb +13 -0
  11. data/lib/square/transfer_orders/types/create_transfer_order_request.rb +12 -0
  12. data/lib/square/transfer_orders/types/delete_transfer_orders_request.rb +12 -0
  13. data/lib/square/transfer_orders/types/get_transfer_orders_request.rb +11 -0
  14. data/lib/square/transfer_orders/types/receive_transfer_order_request.rb +14 -0
  15. data/lib/square/transfer_orders/types/search_transfer_orders_request.rb +13 -0
  16. data/lib/square/transfer_orders/types/start_transfer_order_request.rb +13 -0
  17. data/lib/square/transfer_orders/types/update_transfer_order_request.rb +14 -0
  18. data/lib/square/types/bulk_retrieve_channels_response.rb +14 -0
  19. data/lib/square/types/cancel_transfer_order_response.rb +11 -0
  20. data/lib/square/types/channel.rb +16 -0
  21. data/lib/square/types/channel_status.rb +12 -0
  22. data/lib/square/types/create_transfer_order_data.rb +20 -0
  23. data/lib/square/types/create_transfer_order_line_data.rb +12 -0
  24. data/lib/square/types/create_transfer_order_response.rb +11 -0
  25. data/lib/square/types/delete_transfer_order_response.rb +10 -0
  26. data/lib/square/types/device_attributes.rb +1 -1
  27. data/lib/square/types/device_attributes_device_type.rb +12 -0
  28. data/lib/square/types/device_component_details_ethernet_details.rb +1 -0
  29. data/lib/square/types/device_component_details_wi_fi_details.rb +1 -0
  30. data/lib/square/types/list_channels_response.rb +11 -0
  31. data/lib/square/types/receive_transfer_order_response.rb +11 -0
  32. data/lib/square/types/reference.rb +10 -0
  33. data/lib/square/types/reference_type.rb +25 -0
  34. data/lib/square/types/retrieve_channel_response.rb +10 -0
  35. data/lib/square/types/retrieve_transfer_order_response.rb +11 -0
  36. data/lib/square/types/search_transfer_orders_response.rb +14 -0
  37. data/lib/square/types/start_transfer_order_response.rb +11 -0
  38. data/lib/square/types/subscription.rb +1 -0
  39. data/lib/square/types/subscription_action_type.rb +1 -0
  40. data/lib/square/types/subscription_status.rb +1 -0
  41. data/lib/square/types/transfer_order.rb +37 -0
  42. data/lib/square/types/transfer_order_created_event.rb +14 -0
  43. data/lib/square/types/transfer_order_created_event_data.rb +11 -0
  44. data/lib/square/types/transfer_order_created_event_object.rb +9 -0
  45. data/lib/square/types/transfer_order_deleted_event.rb +14 -0
  46. data/lib/square/types/transfer_order_deleted_event_data.rb +11 -0
  47. data/lib/square/types/transfer_order_filter.rb +14 -0
  48. data/lib/square/types/transfer_order_goods_receipt.rb +29 -0
  49. data/lib/square/types/transfer_order_goods_receipt_line_item.rb +13 -0
  50. data/lib/square/types/transfer_order_line.rb +18 -0
  51. data/lib/square/types/transfer_order_query.rb +11 -0
  52. data/lib/square/types/transfer_order_sort.rb +11 -0
  53. data/lib/square/types/transfer_order_sort_field.rb +12 -0
  54. data/lib/square/types/transfer_order_status.rb +15 -0
  55. data/lib/square/types/transfer_order_updated_event.rb +14 -0
  56. data/lib/square/types/transfer_order_updated_event_data.rb +11 -0
  57. data/lib/square/types/transfer_order_updated_event_object.rb +9 -0
  58. data/lib/square/types/update_transfer_order_data.rb +17 -0
  59. data/lib/square/types/update_transfer_order_line_data.rb +13 -0
  60. data/lib/square/types/update_transfer_order_response.rb +11 -0
  61. data/lib/square/version.rb +1 -1
  62. data/lib/square.rb +50 -1
  63. metadata +53 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5b7ba53660ef4f45bce2164d8fb018797c280503fa6c59b94f8a658c76eb912
4
- data.tar.gz: 5f02ad617c72d33f32e16eb13adf4165204d1b8348b46ed91e29d7bb7616ad88
3
+ metadata.gz: fc644952318e3b6c73ba6051c84c8d48ba7b71159718d157d166a898aa7b8927
4
+ data.tar.gz: 9f826398732a94f77edc36321870fbc4c4fc7877e813e891c14d409ef5640879
5
5
  SHA512:
6
- metadata.gz: 35e1648199a54c20bd6d800f34f1e9988d46032d65e9f246c26b7376dda89223501295351d4ae9e64c014a13945cd518f7cdcff74e6fb7c0088513108ad65c1e
7
- data.tar.gz: 8bb6b4fd497f3e7e0c30851a59ccf03d58ae3383f3db9f6faee82b92650ec6eaaa2e2fccaf87d4b3d3ba4887a0424fef2752ce0785ce83ff7c8c0a30db4f63b6
6
+ metadata.gz: 77e474f38cc44948e191b349a687fb6b309fd722e2062d4d9932953246f6abeca552da862f8f810dd42231e9edbe240bb06e4f97b6674ff8578df11b760eb39e
7
+ data.tar.gz: 4bf717bfbe85b04e95160831c21c039bac603e4b5a02736c95169abdfa4fd34364502fcca1a33864c7b3f4ccdbf3d0cb5cb843d160ef5d83419dedfa5162f96e
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Channels
5
+ class Client
6
+ # @return [Square::Channels::Client]
7
+ def initialize(client:)
8
+ @client = client
9
+ end
10
+
11
+ # @return [Square::Types::ListChannelsResponse]
12
+ def list(request_options: {}, **params)
13
+ _query_param_names = [
14
+ %w[reference_type reference_id status cursor limit],
15
+ %i[reference_type reference_id status cursor limit]
16
+ ].flatten
17
+ _query = params.slice(*_query_param_names)
18
+ params.except(*_query_param_names)
19
+
20
+ _request = Square::Internal::JSON::Request.new(
21
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
22
+ method: "GET",
23
+ path: "v2/channels",
24
+ query: _query
25
+ )
26
+ begin
27
+ _response = @client.send(_request)
28
+ rescue Net::HTTPRequestTimeout
29
+ raise Square::Errors::TimeoutError
30
+ end
31
+ code = _response.code.to_i
32
+ if code.between?(200, 299)
33
+ Square::Types::ListChannelsResponse.load(_response.body)
34
+ else
35
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
36
+ raise error_class.new(_response.body, code: code)
37
+ end
38
+ end
39
+
40
+ # @return [Square::Types::BulkRetrieveChannelsResponse]
41
+ def bulk_retrieve(request_options: {}, **params)
42
+ _request = Square::Internal::JSON::Request.new(
43
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
44
+ method: "POST",
45
+ path: "v2/channels/bulk-retrieve",
46
+ body: params
47
+ )
48
+ begin
49
+ _response = @client.send(_request)
50
+ rescue Net::HTTPRequestTimeout
51
+ raise Square::Errors::TimeoutError
52
+ end
53
+ code = _response.code.to_i
54
+ if code.between?(200, 299)
55
+ Square::Types::BulkRetrieveChannelsResponse.load(_response.body)
56
+ else
57
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
58
+ raise error_class.new(_response.body, code: code)
59
+ end
60
+ end
61
+
62
+ # @return [Square::Types::RetrieveChannelResponse]
63
+ def get(request_options: {}, **params)
64
+ _request = Square::Internal::JSON::Request.new(
65
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
66
+ method: "GET",
67
+ path: "v2/channels/#{params[:channel_id]}"
68
+ )
69
+ begin
70
+ _response = @client.send(_request)
71
+ rescue Net::HTTPRequestTimeout
72
+ raise Square::Errors::TimeoutError
73
+ end
74
+ code = _response.code.to_i
75
+ if code.between?(200, 299)
76
+ Square::Types::RetrieveChannelResponse.load(_response.body)
77
+ else
78
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
79
+ raise error_class.new(_response.body, code: code)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Channels
5
+ module Types
6
+ class BulkRetrieveChannelsRequest < Internal::Types::Model
7
+ field :channel_ids, -> { Internal::Types::Array[String] }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Channels
5
+ module Types
6
+ class GetChannelsRequest < Internal::Types::Model
7
+ field :channel_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Channels
5
+ module Types
6
+ class ListChannelsRequest < Internal::Types::Model
7
+ field :reference_type, -> { Square::Types::ReferenceType }, optional: true, nullable: false
8
+ field :reference_id, -> { String }, optional: true, nullable: false
9
+ field :status, -> { Square::Types::ChannelStatus }, optional: true, nullable: false
10
+ field :cursor, -> { String }, optional: true, nullable: false
11
+ field :limit, -> { Integer }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/square/client.rb CHANGED
@@ -7,7 +7,7 @@ module Square
7
7
  @raw_client = Square::Internal::Http::RawClient.new(
8
8
  base_url: base_url,
9
9
  headers: {
10
- "User-Agent": "square.rb/44.0.1.20250820",
10
+ "User-Agent": "square.rb/44.2.0.20251016",
11
11
  "X-Fern-Language": "Ruby",
12
12
  Authorization: "Bearer #{token}"
13
13
  }
@@ -54,6 +54,11 @@ module Square
54
54
  @catalog ||= Square::Catalog::Client.new(client: @raw_client)
55
55
  end
56
56
 
57
+ # @return [Square::Channels::Client]
58
+ def channels
59
+ @channels ||= Square::Channels::Client.new(client: @raw_client)
60
+ end
61
+
57
62
  # @return [Square::Customers::Client]
58
63
  def customers
59
64
  @customers ||= Square::Customers::Client.new(client: @raw_client)
@@ -169,6 +174,11 @@ module Square
169
174
  @terminal ||= Square::Terminal::Client.new(client: @raw_client)
170
175
  end
171
176
 
177
+ # @return [Square::TransferOrders::Client]
178
+ def transfer_orders
179
+ @transfer_orders ||= Square::TransferOrders::Client.new(client: @raw_client)
180
+ end
181
+
172
182
  # @return [Square::Vendors::Client]
173
183
  def vendors
174
184
  @vendors ||= Square::Vendors::Client.new(client: @raw_client)
@@ -6,8 +6,8 @@ module Square
6
6
  module Promotions
7
7
  module Types
8
8
  class CancelPromotionsRequest < Internal::Types::Model
9
- field :promotion_id, -> { String }, optional: false, nullable: false
10
9
  field :program_id, -> { String }, optional: false, nullable: false
10
+ field :promotion_id, -> { String }, optional: false, nullable: false
11
11
  end
12
12
  end
13
13
  end
@@ -6,8 +6,8 @@ module Square
6
6
  module Promotions
7
7
  module Types
8
8
  class GetPromotionsRequest < Internal::Types::Model
9
- field :promotion_id, -> { String }, optional: false, nullable: false
10
9
  field :program_id, -> { String }, optional: false, nullable: false
10
+ field :promotion_id, -> { String }, optional: false, nullable: false
11
11
  end
12
12
  end
13
13
  end
@@ -0,0 +1,287 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ class Client
6
+ # @return [Square::TransferOrders::Client]
7
+ def initialize(client:)
8
+ @client = client
9
+ end
10
+
11
+ # Creates a new transfer order in [DRAFT](entity:TransferOrderStatus) status. A transfer order represents the intent
12
+ # to move [CatalogItemVariation](entity:CatalogItemVariation)s from one [Location](entity:Location) to another.
13
+ # The source and destination locations must be different and must belong to your Square account.
14
+ #
15
+ # In [DRAFT](entity:TransferOrderStatus) status, you can:
16
+ # - Add or remove items
17
+ # - Modify quantities
18
+ # - Update shipping information
19
+ # - Delete the entire order via [DeleteTransferOrder](api-endpoint:TransferOrders-DeleteTransferOrder)
20
+ #
21
+ # The request requires source_location_id and destination_location_id.
22
+ # Inventory levels are not affected until the order is started via
23
+ # [StartTransferOrder](api-endpoint:TransferOrders-StartTransferOrder).
24
+ #
25
+ # Common integration points:
26
+ # - Sync with warehouse management systems
27
+ # - Automate regular stock transfers
28
+ # - Initialize transfers from inventory optimization systems
29
+ #
30
+ # Creates a [transfer_order.created](webhook:transfer_order.created) webhook event.
31
+ #
32
+ # @return [Square::Types::CreateTransferOrderResponse]
33
+ def create(request_options: {}, **params)
34
+ _request = Square::Internal::JSON::Request.new(
35
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
36
+ method: "POST",
37
+ path: "v2/transfer-orders",
38
+ body: params
39
+ )
40
+ begin
41
+ _response = @client.send(_request)
42
+ rescue Net::HTTPRequestTimeout
43
+ raise Square::Errors::TimeoutError
44
+ end
45
+ code = _response.code.to_i
46
+ if code.between?(200, 299)
47
+ Square::Types::CreateTransferOrderResponse.load(_response.body)
48
+ else
49
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
50
+ raise error_class.new(_response.body, code: code)
51
+ end
52
+ end
53
+
54
+ # Searches for transfer orders using filters. Returns a paginated list of matching
55
+ # [TransferOrder](entity:TransferOrder)s sorted by creation date.
56
+ #
57
+ # Common search scenarios:
58
+ # - Find orders for a source [Location](entity:Location)
59
+ # - Find orders for a destination [Location](entity:Location)
60
+ # - Find orders in a particular [TransferOrderStatus](entity:TransferOrderStatus)
61
+ #
62
+ # @return [Square::Types::SearchTransferOrdersResponse]
63
+ def search(request_options: {}, **params)
64
+ _request = Square::Internal::JSON::Request.new(
65
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
66
+ method: "POST",
67
+ path: "v2/transfer-orders/search",
68
+ body: params
69
+ )
70
+ begin
71
+ _response = @client.send(_request)
72
+ rescue Net::HTTPRequestTimeout
73
+ raise Square::Errors::TimeoutError
74
+ end
75
+ code = _response.code.to_i
76
+ if code.between?(200, 299)
77
+ Square::Types::SearchTransferOrdersResponse.load(_response.body)
78
+ else
79
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
80
+ raise error_class.new(_response.body, code: code)
81
+ end
82
+ end
83
+
84
+ # Retrieves a specific [TransferOrder](entity:TransferOrder) by ID. Returns the complete
85
+ # order details including:
86
+ #
87
+ # - Basic information (status, dates, notes)
88
+ # - Line items with ordered and received quantities
89
+ # - Source and destination [Location](entity:Location)s
90
+ # - Tracking information (if available)
91
+ #
92
+ # @return [Square::Types::RetrieveTransferOrderResponse]
93
+ def get(request_options: {}, **params)
94
+ _request = Square::Internal::JSON::Request.new(
95
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
96
+ method: "GET",
97
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}"
98
+ )
99
+ begin
100
+ _response = @client.send(_request)
101
+ rescue Net::HTTPRequestTimeout
102
+ raise Square::Errors::TimeoutError
103
+ end
104
+ code = _response.code.to_i
105
+ if code.between?(200, 299)
106
+ Square::Types::RetrieveTransferOrderResponse.load(_response.body)
107
+ else
108
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
109
+ raise error_class.new(_response.body, code: code)
110
+ end
111
+ end
112
+
113
+ # Updates an existing transfer order. This endpoint supports sparse updates,
114
+ # allowing you to modify specific fields without affecting others.
115
+ #
116
+ # Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event.
117
+ #
118
+ # @return [Square::Types::UpdateTransferOrderResponse]
119
+ def update(request_options: {}, **params)
120
+ _path_param_names = ["transfer_order_id"]
121
+
122
+ _request = Square::Internal::JSON::Request.new(
123
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
124
+ method: "PUT",
125
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}",
126
+ body: params.except(*_path_param_names)
127
+ )
128
+ begin
129
+ _response = @client.send(_request)
130
+ rescue Net::HTTPRequestTimeout
131
+ raise Square::Errors::TimeoutError
132
+ end
133
+ code = _response.code.to_i
134
+ if code.between?(200, 299)
135
+ Square::Types::UpdateTransferOrderResponse.load(_response.body)
136
+ else
137
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
138
+ raise error_class.new(_response.body, code: code)
139
+ end
140
+ end
141
+
142
+ # Deletes a transfer order in [DRAFT](entity:TransferOrderStatus) status.
143
+ # Only draft orders can be deleted. Once an order is started via
144
+ # [StartTransferOrder](api-endpoint:TransferOrders-StartTransferOrder), it can no longer be deleted.
145
+ #
146
+ # Creates a [transfer_order.deleted](webhook:transfer_order.deleted) webhook event.
147
+ #
148
+ # @return [Square::Types::DeleteTransferOrderResponse]
149
+ def delete(request_options: {}, **params)
150
+ _query_param_names = [
151
+ ["version"],
152
+ %i[version]
153
+ ].flatten
154
+ _query = params.slice(*_query_param_names)
155
+ params = params.except(*_query_param_names)
156
+
157
+ _request = Square::Internal::JSON::Request.new(
158
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
159
+ method: "DELETE",
160
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}",
161
+ query: _query
162
+ )
163
+ begin
164
+ _response = @client.send(_request)
165
+ rescue Net::HTTPRequestTimeout
166
+ raise Square::Errors::TimeoutError
167
+ end
168
+ code = _response.code.to_i
169
+ if code.between?(200, 299)
170
+ Square::Types::DeleteTransferOrderResponse.load(_response.body)
171
+ else
172
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
173
+ raise error_class.new(_response.body, code: code)
174
+ end
175
+ end
176
+
177
+ # Cancels a transfer order in [STARTED](entity:TransferOrderStatus) or
178
+ # [PARTIALLY_RECEIVED](entity:TransferOrderStatus) status. Any unreceived quantities will no
179
+ # longer be receivable and will be immediately returned to the source [Location](entity:Location)'s inventory.
180
+ #
181
+ # Common reasons for cancellation:
182
+ # - Items no longer needed at destination
183
+ # - Source location needs the inventory
184
+ # - Order created in error
185
+ #
186
+ # Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event.
187
+ #
188
+ # @return [Square::Types::CancelTransferOrderResponse]
189
+ def cancel(request_options: {}, **params)
190
+ _path_param_names = ["transfer_order_id"]
191
+
192
+ _request = Square::Internal::JSON::Request.new(
193
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
194
+ method: "POST",
195
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}/cancel",
196
+ body: params.except(*_path_param_names)
197
+ )
198
+ begin
199
+ _response = @client.send(_request)
200
+ rescue Net::HTTPRequestTimeout
201
+ raise Square::Errors::TimeoutError
202
+ end
203
+ code = _response.code.to_i
204
+ if code.between?(200, 299)
205
+ Square::Types::CancelTransferOrderResponse.load(_response.body)
206
+ else
207
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
208
+ raise error_class.new(_response.body, code: code)
209
+ end
210
+ end
211
+
212
+ # Records receipt of [CatalogItemVariation](entity:CatalogItemVariation)s for a transfer order.
213
+ # This endpoint supports partial receiving - you can receive items in multiple batches.
214
+ #
215
+ # For each line item, you can specify:
216
+ # - Quantity received in good condition (added to destination inventory with [InventoryState](entity:InventoryState) of IN_STOCK)
217
+ # - Quantity damaged during transit/handling (added to destination inventory with [InventoryState](entity:InventoryState) of WASTE)
218
+ # - Quantity canceled (returned to source location's inventory)
219
+ #
220
+ # The order must be in [STARTED](entity:TransferOrderStatus) or [PARTIALLY_RECEIVED](entity:TransferOrderStatus) status.
221
+ # Received quantities are added to the destination [Location](entity:Location)'s inventory according to their condition.
222
+ # Canceled quantities are immediately returned to the source [Location](entity:Location)'s inventory.
223
+ #
224
+ # When all items are either received, damaged, or canceled, the order moves to
225
+ # [COMPLETED](entity:TransferOrderStatus) status.
226
+ #
227
+ # Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event.
228
+ #
229
+ # @return [Square::Types::ReceiveTransferOrderResponse]
230
+ def receive(request_options: {}, **params)
231
+ _path_param_names = ["transfer_order_id"]
232
+
233
+ _request = Square::Internal::JSON::Request.new(
234
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
235
+ method: "POST",
236
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}/receive",
237
+ body: params.except(*_path_param_names)
238
+ )
239
+ begin
240
+ _response = @client.send(_request)
241
+ rescue Net::HTTPRequestTimeout
242
+ raise Square::Errors::TimeoutError
243
+ end
244
+ code = _response.code.to_i
245
+ if code.between?(200, 299)
246
+ Square::Types::ReceiveTransferOrderResponse.load(_response.body)
247
+ else
248
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
249
+ raise error_class.new(_response.body, code: code)
250
+ end
251
+ end
252
+
253
+ # Changes a [DRAFT](entity:TransferOrderStatus) transfer order to [STARTED](entity:TransferOrderStatus) status.
254
+ # This decrements inventory at the source [Location](entity:Location) and marks it as in-transit.
255
+ #
256
+ # The order must be in [DRAFT](entity:TransferOrderStatus) status and have all required fields populated.
257
+ # Once started, the order can no longer be deleted, but it can be canceled via
258
+ # [CancelTransferOrder](api-endpoint:TransferOrders-CancelTransferOrder).
259
+ #
260
+ # Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event.
261
+ #
262
+ # @return [Square::Types::StartTransferOrderResponse]
263
+ def start(request_options: {}, **params)
264
+ _path_param_names = ["transfer_order_id"]
265
+
266
+ _request = Square::Internal::JSON::Request.new(
267
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
268
+ method: "POST",
269
+ path: "v2/transfer-orders/#{params[:transfer_order_id]}/start",
270
+ body: params.except(*_path_param_names)
271
+ )
272
+ begin
273
+ _response = @client.send(_request)
274
+ rescue Net::HTTPRequestTimeout
275
+ raise Square::Errors::TimeoutError
276
+ end
277
+ code = _response.code.to_i
278
+ if code.between?(200, 299)
279
+ Square::Types::StartTransferOrderResponse.load(_response.body)
280
+ else
281
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
282
+ raise error_class.new(_response.body, code: code)
283
+ end
284
+ end
285
+ end
286
+ end
287
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class CancelTransferOrderRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ field :idempotency_key, -> { String }, optional: false, nullable: false
9
+ field :version, -> { Integer }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class CreateTransferOrderRequest < Internal::Types::Model
7
+ field :idempotency_key, -> { String }, optional: false, nullable: false
8
+ field :transfer_order, -> { Square::Types::CreateTransferOrderData }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class DeleteTransferOrdersRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ field :version, -> { Integer }, optional: true, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class GetTransferOrdersRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class ReceiveTransferOrderRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ field :idempotency_key, -> { String }, optional: false, nullable: false
9
+ field :receipt, -> { Square::Types::TransferOrderGoodsReceipt }, optional: false, nullable: false
10
+ field :version, -> { Integer }, optional: true, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class SearchTransferOrdersRequest < Internal::Types::Model
7
+ field :query, -> { Square::Types::TransferOrderQuery }, optional: true, nullable: false
8
+ field :cursor, -> { String }, optional: true, nullable: false
9
+ field :limit, -> { Integer }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class StartTransferOrderRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ field :idempotency_key, -> { String }, optional: false, nullable: false
9
+ field :version, -> { Integer }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module TransferOrders
5
+ module Types
6
+ class UpdateTransferOrderRequest < Internal::Types::Model
7
+ field :transfer_order_id, -> { String }, optional: false, nullable: false
8
+ field :idempotency_key, -> { String }, optional: false, nullable: false
9
+ field :transfer_order, -> { Square::Types::UpdateTransferOrderData }, optional: false, nullable: false
10
+ field :version, -> { Integer }, optional: true, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Types
5
+ # Defines the fields that are included in the request body for the
6
+ # [BulkRetrieveChannels](api-endpoint:Channels-BulkRetrieveChannels) endpoint.
7
+ class BulkRetrieveChannelsResponse < Internal::Types::Model
8
+ field :errors, -> { Internal::Types::Array[Square::Types::Error] }, optional: true, nullable: false
9
+ field :responses, lambda {
10
+ Internal::Types::Hash[String, Square::Types::RetrieveChannelResponse]
11
+ }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Types
5
+ # Response for canceling a transfer order
6
+ class CancelTransferOrderResponse < Internal::Types::Model
7
+ field :transfer_order, -> { Square::Types::TransferOrder }, optional: true, nullable: false
8
+ field :errors, -> { Internal::Types::Array[Square::Types::Error] }, optional: true, nullable: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Types
5
+ class Channel < Internal::Types::Model
6
+ field :id, -> { String }, optional: true, nullable: false
7
+ field :merchant_id, -> { String }, optional: true, nullable: false
8
+ field :name, -> { String }, optional: true, nullable: false
9
+ field :version, -> { Integer }, optional: true, nullable: false
10
+ field :reference, -> { Square::Types::Reference }, optional: true, nullable: false
11
+ field :status, -> { Square::Types::ChannelStatus }, optional: true, nullable: false
12
+ field :created_at, -> { String }, optional: true, nullable: false
13
+ field :updated_at, -> { String }, optional: true, nullable: false
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Types
5
+ module ChannelStatus
6
+ extend Square::Internal::Types::Enum
7
+
8
+ ACTIVE = "ACTIVE"
9
+ INACTIVE = "INACTIVE"
10
+ end
11
+ end
12
+ end