listo-delivery 0.1.1
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.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +152 -0
- data/lib/listo_delivery/client.rb +170 -0
- data/lib/listo_delivery/errors.rb +53 -0
- data/lib/listo_delivery/generated/api_version.rb +12 -0
- data/lib/listo_delivery/generated/client_operations.rb +82 -0
- data/lib/listo_delivery/generated/loader.rb +69 -0
- data/lib/listo_delivery/generated/models/balance.rb +48 -0
- data/lib/listo_delivery/generated/models/cancel_delivery_request.rb +29 -0
- data/lib/listo_delivery/generated/models/card_onboarding_link.rb +21 -0
- data/lib/listo_delivery/generated/models/card_status.rb +22 -0
- data/lib/listo_delivery/generated/models/connect_request.rb +28 -0
- data/lib/listo_delivery/generated/models/courier_ping.rb +58 -0
- data/lib/listo_delivery/generated/models/create_connect_request_request.rb +35 -0
- data/lib/listo_delivery/generated/models/create_connection_request.rb +21 -0
- data/lib/listo_delivery/generated/models/create_delivery_request.rb +189 -0
- data/lib/listo_delivery/generated/models/create_quote_request.rb +111 -0
- data/lib/listo_delivery/generated/models/create_store_owner_request.rb +26 -0
- data/lib/listo_delivery/generated/models/create_store_request.rb +104 -0
- data/lib/listo_delivery/generated/models/create_withdrawal_request.rb +29 -0
- data/lib/listo_delivery/generated/models/delivery.rb +879 -0
- data/lib/listo_delivery/generated/models/delivery_courier_location_event.rb +23 -0
- data/lib/listo_delivery/generated/models/delivery_list.rb +34 -0
- data/lib/listo_delivery/generated/models/delivery_message_skipped.rb +37 -0
- data/lib/listo_delivery/generated/models/delivery_message_skipped_event.rb +23 -0
- data/lib/listo_delivery/generated/models/delivery_status_changed_event.rb +23 -0
- data/lib/listo_delivery/generated/models/delivery_updated_event.rb +23 -0
- data/lib/listo_delivery/generated/models/error.rb +56 -0
- data/lib/listo_delivery/generated/models/error_response.rb +20 -0
- data/lib/listo_delivery/generated/models/event_list.rb +34 -0
- data/lib/listo_delivery/generated/models/ledger_entry.rb +62 -0
- data/lib/listo_delivery/generated/models/ledger_entry_list.rb +34 -0
- data/lib/listo_delivery/generated/models/manifest.rb +20 -0
- data/lib/listo_delivery/generated/models/manifest_item.rb +36 -0
- data/lib/listo_delivery/generated/models/owner_invitation.rb +27 -0
- data/lib/listo_delivery/generated/models/ping.rb +56 -0
- data/lib/listo_delivery/generated/models/quote.rb +99 -0
- data/lib/listo_delivery/generated/models/refund_delivery_request.rb +28 -0
- data/lib/listo_delivery/generated/models/request_log.rb +91 -0
- data/lib/listo_delivery/generated/models/request_log_detail.rb +105 -0
- data/lib/listo_delivery/generated/models/request_log_list.rb +34 -0
- data/lib/listo_delivery/generated/models/reschedule_delivery_request.rb +41 -0
- data/lib/listo_delivery/generated/models/same_day_terms.rb +106 -0
- data/lib/listo_delivery/generated/models/send_test_webhook_request.rb +22 -0
- data/lib/listo_delivery/generated/models/store.rb +235 -0
- data/lib/listo_delivery/generated/models/store_balance.rb +48 -0
- data/lib/listo_delivery/generated/models/store_connected_event.rb +23 -0
- data/lib/listo_delivery/generated/models/store_list.rb +34 -0
- data/lib/listo_delivery/generated/models/store_updated_event.rb +23 -0
- data/lib/listo_delivery/generated/models/update_store_request.rb +94 -0
- data/lib/listo_delivery/generated/models/webhook_delivery.rb +99 -0
- data/lib/listo_delivery/generated/models/webhook_delivery_list.rb +34 -0
- data/lib/listo_delivery/generated/models/webhook_event.rb +69 -0
- data/lib/listo_delivery/generated/models/webhook_event_envelope.rb +35 -0
- data/lib/listo_delivery/generated/models/withdrawal.rb +91 -0
- data/lib/listo_delivery/generated/models/withdrawal_list.rb +34 -0
- data/lib/listo_delivery/generated/models/withdrawal_updated_event.rb +23 -0
- data/lib/listo_delivery/generated/resources/balance.rb +43 -0
- data/lib/listo_delivery/generated/resources/card_onboarding.rb +70 -0
- data/lib/listo_delivery/generated/resources/connect_requests.rb +31 -0
- data/lib/listo_delivery/generated/resources/connections.rb +31 -0
- data/lib/listo_delivery/generated/resources/deliveries.rb +128 -0
- data/lib/listo_delivery/generated/resources/events.rb +59 -0
- data/lib/listo_delivery/generated/resources/ledger.rb +47 -0
- data/lib/listo_delivery/generated/resources/quotes.rb +31 -0
- data/lib/listo_delivery/generated/resources/request_logs.rb +45 -0
- data/lib/listo_delivery/generated/resources/stores.rb +143 -0
- data/lib/listo_delivery/generated/resources/webhooks.rb +46 -0
- data/lib/listo_delivery/generated/resources/withdrawals.rb +60 -0
- data/lib/listo_delivery/model.rb +69 -0
- data/lib/listo_delivery/util.rb +76 -0
- data/lib/listo_delivery/version.rb +7 -0
- data/lib/listo_delivery/webhooks.rb +98 -0
- data/lib/listo_delivery.rb +16 -0
- data/listo_delivery.gemspec +27 -0
- metadata +120 -0
|
@@ -0,0 +1,879 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# GENERATED from Listo's API definition (API 1.37.0). Do not edit by hand:
|
|
4
|
+
# this file is rewritten whenever the SDK is regenerated.
|
|
5
|
+
|
|
6
|
+
module ListoDelivery
|
|
7
|
+
module Models
|
|
8
|
+
# The shape of a delivery: every field the object can carry, with the nullability each one really has.
|
|
9
|
+
class Delivery < Model
|
|
10
|
+
TYPES = {
|
|
11
|
+
"id" => nil,
|
|
12
|
+
"external_id" => nil,
|
|
13
|
+
"origin" => nil,
|
|
14
|
+
"code" => nil,
|
|
15
|
+
"status" => nil,
|
|
16
|
+
"store_id" => nil,
|
|
17
|
+
"test" => nil,
|
|
18
|
+
"payment" => ["model", "Delivery::Payment"],
|
|
19
|
+
"order_value_cents" => nil,
|
|
20
|
+
"fee_cents" => nil,
|
|
21
|
+
"business_fee_cents" => nil,
|
|
22
|
+
"customer_fee_cents" => nil,
|
|
23
|
+
"tip_cents" => nil,
|
|
24
|
+
"currency" => nil,
|
|
25
|
+
"quote_id" => nil,
|
|
26
|
+
"pickup" => ["model", "Delivery::Pickup"],
|
|
27
|
+
"dropoff" => ["model", "Delivery::Dropoff"],
|
|
28
|
+
"manifest" => ["model", "Delivery::Manifest"],
|
|
29
|
+
"vehicle" => nil,
|
|
30
|
+
"courier" => ["model", "Delivery::Courier"],
|
|
31
|
+
"pickup_eta_at" => nil,
|
|
32
|
+
"dropoff_eta_at" => nil,
|
|
33
|
+
"tracking_url" => nil,
|
|
34
|
+
"verification" => ["model", "Delivery::Verification"],
|
|
35
|
+
"return_verification" => ["model", "Delivery::ReturnVerification"],
|
|
36
|
+
"proof" => ["model", "Delivery::Proof"],
|
|
37
|
+
"proofs" => ["model", "Delivery::Proofs"],
|
|
38
|
+
"cancellation" => ["model", "Delivery::Cancellation"],
|
|
39
|
+
"failure_reason" => nil,
|
|
40
|
+
"charges" => ["array", ["model", "Delivery::Charge"]],
|
|
41
|
+
"refunds" => ["array", ["model", "Delivery::Refund"]],
|
|
42
|
+
"refunded_cents" => nil,
|
|
43
|
+
"refundable_cents" => nil,
|
|
44
|
+
"support_reference" => nil,
|
|
45
|
+
"pickup_ready_at" => nil,
|
|
46
|
+
"requested_at" => nil,
|
|
47
|
+
"courier_assigned_at" => nil,
|
|
48
|
+
"picked_up_at" => nil,
|
|
49
|
+
"delivered_at" => nil,
|
|
50
|
+
"canceled_at" => nil,
|
|
51
|
+
"returned_at" => nil,
|
|
52
|
+
"created_at" => nil,
|
|
53
|
+
"updated_at" => nil
|
|
54
|
+
}.freeze
|
|
55
|
+
|
|
56
|
+
# The delivery id, `dlv_` prefixed.
|
|
57
|
+
# @return [String]
|
|
58
|
+
def id
|
|
59
|
+
read("id")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Your own order reference, echoed back exactly as you sent it.
|
|
63
|
+
# @return [String, nil]
|
|
64
|
+
def external_id
|
|
65
|
+
read("external_id")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Which lane created the delivery.
|
|
69
|
+
# One of: "api", "console", "whatsapp".
|
|
70
|
+
# @return [String]
|
|
71
|
+
def origin
|
|
72
|
+
read("origin")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# The human order code the courier and our support quote.
|
|
76
|
+
# @return [String]
|
|
77
|
+
def code
|
|
78
|
+
read("code")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# `delivered`, `returned` and `canceled` are terminal.
|
|
82
|
+
# @return [String]
|
|
83
|
+
def status
|
|
84
|
+
read("status")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# The `st_` id of the store the courier collects from.
|
|
88
|
+
# @return [String]
|
|
89
|
+
def store_id
|
|
90
|
+
read("store_id")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Whether this order lives in the sandbox.
|
|
94
|
+
# @return [Boolean]
|
|
95
|
+
def test
|
|
96
|
+
read("test")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# How the customer pays, and where that got to.
|
|
100
|
+
# @return [Models::Delivery::Payment]
|
|
101
|
+
def payment
|
|
102
|
+
read("payment")
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# The goods value you sent, untouched.
|
|
106
|
+
# @return [Integer, nil]
|
|
107
|
+
def order_value_cents
|
|
108
|
+
read("order_value_cents")
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# The total delivery fee.
|
|
112
|
+
# @return [Integer]
|
|
113
|
+
def fee_cents
|
|
114
|
+
read("fee_cents")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# The part of `fee_cents` charged to you.
|
|
118
|
+
# @return [Integer]
|
|
119
|
+
def business_fee_cents
|
|
120
|
+
read("business_fee_cents")
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# The part of `fee_cents` charged to the customer.
|
|
124
|
+
# @return [Integer]
|
|
125
|
+
def customer_fee_cents
|
|
126
|
+
read("customer_fee_cents")
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# The courier tip you sent on this delivery, paid to the courier and passed on at cost with no margin taken.
|
|
130
|
+
# @return [Integer]
|
|
131
|
+
def tip_cents
|
|
132
|
+
read("tip_cents")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# One of: "MXN".
|
|
136
|
+
# @return [String]
|
|
137
|
+
def currency
|
|
138
|
+
read("currency")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# The `qt_` quote this order bound, so you can tie the price you were quoted to the order that spent it.
|
|
142
|
+
# @return [String, nil]
|
|
143
|
+
def quote_id
|
|
144
|
+
read("quote_id")
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Where the courier collects, snapshotted at create, so a historical order keeps reporting where the courier actually went even after the...
|
|
148
|
+
# @return [Models::Delivery::Pickup]
|
|
149
|
+
def pickup
|
|
150
|
+
read("pickup")
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Where the courier delivers, echoed back as you sent it.
|
|
154
|
+
# @return [Models::Delivery::Dropoff]
|
|
155
|
+
def dropoff
|
|
156
|
+
read("dropoff")
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# The descriptive item list you sent, for the courier.
|
|
160
|
+
# @return [Models::Delivery::Manifest, nil]
|
|
161
|
+
def manifest
|
|
162
|
+
read("manifest")
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# What the trip was priced and dispatched as: `car` when you asked for one or when an item was sized `xlarge`, `moto` otherwise.
|
|
166
|
+
# One of: "moto", "car".
|
|
167
|
+
# @return [String]
|
|
168
|
+
def vehicle
|
|
169
|
+
read("vehicle")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Null until a courier is assigned, and then FROZEN: a terminal delivery keeps reporting who carried it.
|
|
173
|
+
# @return [Models::Delivery::Courier, nil]
|
|
174
|
+
def courier
|
|
175
|
+
read("courier")
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# When the courier is expected at the store.
|
|
179
|
+
# @return [String, nil]
|
|
180
|
+
def pickup_eta_at
|
|
181
|
+
read("pickup_eta_at")
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# When the courier is expected at the customer.
|
|
185
|
+
# @return [String, nil]
|
|
186
|
+
def dropoff_eta_at
|
|
187
|
+
read("dropoff_eta_at")
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# The branded live tracking page for the customer: the map, the courier, the delivery code and what is owed at the door.
|
|
191
|
+
# @return [String, nil]
|
|
192
|
+
def tracking_url
|
|
193
|
+
read("tracking_url")
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Present only when the order carries a dropoff PIN: when you asked for one (`verification.dropoff_pincode` on the create), or when Listo...
|
|
197
|
+
# @return [Models::Delivery::Verification, nil]
|
|
198
|
+
def verification
|
|
199
|
+
read("verification")
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# The return code (código de devolución).
|
|
203
|
+
# @return [Models::Delivery::ReturnVerification]
|
|
204
|
+
def return_verification
|
|
205
|
+
read("return_verification")
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# Proof of delivery.
|
|
209
|
+
# @return [Models::Delivery::Proof, nil]
|
|
210
|
+
def proof
|
|
211
|
+
read("proof")
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# The evidence the trip left, one entry per moment.
|
|
215
|
+
# @return [Models::Delivery::Proofs]
|
|
216
|
+
def proofs
|
|
217
|
+
read("proofs")
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Who called the order off, and why.
|
|
221
|
+
# @return [Models::Delivery::Cancellation, nil]
|
|
222
|
+
def cancellation
|
|
223
|
+
read("cancellation")
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Why a dispatch failed, bucketed by whose side the problem is on, so you can act on it rather than just retry blindly.
|
|
227
|
+
# One of: "no_couriers_available", "address_unreachable", "customer_unavailable", "delivery_failed", nil.
|
|
228
|
+
# @return [String, nil]
|
|
229
|
+
def failure_reason
|
|
230
|
+
read("failure_reason")
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
# What a trip that was driven but wasted was billed at: the delivery fee for each leg driven, less your own store markup.
|
|
234
|
+
# @return [Array<Models::Delivery::Charge>]
|
|
235
|
+
def charges
|
|
236
|
+
read("charges")
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Every time money went back to the customer on this order, newest first.
|
|
240
|
+
# @return [Array<Models::Delivery::Refund>]
|
|
241
|
+
def refunds
|
|
242
|
+
read("refunds")
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# The sum of the SUCCEEDED refunds above, in Mexican peso cents.
|
|
246
|
+
# @return [Integer]
|
|
247
|
+
def refunded_cents
|
|
248
|
+
read("refunded_cents")
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
# What a further refund could still return: what the customer paid (`order_value_cents` plus `customer_fee_cents`, which IS the charge) minus...
|
|
252
|
+
# @return [Integer]
|
|
253
|
+
def refundable_cents
|
|
254
|
+
read("refundable_cents")
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# A short handle to quote when you escalate an order to us.
|
|
258
|
+
# @return [String, nil]
|
|
259
|
+
def support_reference
|
|
260
|
+
read("support_reference")
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# The scheduled pickup time you asked for.
|
|
264
|
+
# @return [String, nil]
|
|
265
|
+
def pickup_ready_at
|
|
266
|
+
read("pickup_ready_at")
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
# @return [String, nil]
|
|
270
|
+
def requested_at
|
|
271
|
+
read("requested_at")
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
# When a courier was first observed on the current attempt.
|
|
275
|
+
# @return [String, nil]
|
|
276
|
+
def courier_assigned_at
|
|
277
|
+
read("courier_assigned_at")
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
# @return [String, nil]
|
|
281
|
+
def picked_up_at
|
|
282
|
+
read("picked_up_at")
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
# @return [String, nil]
|
|
286
|
+
def delivered_at
|
|
287
|
+
read("delivered_at")
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# @return [String, nil]
|
|
291
|
+
def canceled_at
|
|
292
|
+
read("canceled_at")
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
# @return [String, nil]
|
|
296
|
+
def returned_at
|
|
297
|
+
read("returned_at")
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
# @return [String]
|
|
301
|
+
def created_at
|
|
302
|
+
read("created_at")
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# @return [String]
|
|
306
|
+
def updated_at
|
|
307
|
+
read("updated_at")
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# How the customer pays, and where that got to.
|
|
311
|
+
class Payment < Model
|
|
312
|
+
TYPES = {
|
|
313
|
+
"method" => nil,
|
|
314
|
+
"status" => nil,
|
|
315
|
+
"url" => nil,
|
|
316
|
+
"cash_to_collect_cents" => nil,
|
|
317
|
+
"paid_at" => nil
|
|
318
|
+
}.freeze
|
|
319
|
+
|
|
320
|
+
# One of: "prepaid", "cash", "card".
|
|
321
|
+
# @return [String]
|
|
322
|
+
def method
|
|
323
|
+
read("method")
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
# One of: "unpaid", "awaiting_payment", "paid", "partially_refunded", "refunded".
|
|
327
|
+
# @return [String]
|
|
328
|
+
def status
|
|
329
|
+
read("status")
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# The branded payment link for a card order still awaiting payment.
|
|
333
|
+
# @return [String, nil]
|
|
334
|
+
def url
|
|
335
|
+
read("url")
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
# What the courier collects at the door: the goods value plus the customer's share of the fee.
|
|
339
|
+
# @return [Integer, nil]
|
|
340
|
+
def cash_to_collect_cents
|
|
341
|
+
read("cash_to_collect_cents")
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
# @return [String, nil]
|
|
345
|
+
def paid_at
|
|
346
|
+
read("paid_at")
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# Where the courier collects, snapshotted at create, so a historical order keeps reporting where the courier actually went even after the...
|
|
351
|
+
class Pickup < Model
|
|
352
|
+
TYPES = {
|
|
353
|
+
"name" => nil,
|
|
354
|
+
"street" => nil,
|
|
355
|
+
"lat" => nil,
|
|
356
|
+
"lng" => nil,
|
|
357
|
+
"notes" => nil
|
|
358
|
+
}.freeze
|
|
359
|
+
|
|
360
|
+
# @return [String]
|
|
361
|
+
def name
|
|
362
|
+
read("name")
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
# @return [String]
|
|
366
|
+
def street
|
|
367
|
+
read("street")
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
# @return [Numeric, nil]
|
|
371
|
+
def lat
|
|
372
|
+
read("lat")
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
# @return [Numeric, nil]
|
|
376
|
+
def lng
|
|
377
|
+
read("lng")
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
# The store's standing pickup instructions, not a per-order value.
|
|
381
|
+
# @return [String, nil]
|
|
382
|
+
def notes
|
|
383
|
+
read("notes")
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
# Where the courier delivers, echoed back as you sent it.
|
|
388
|
+
class Dropoff < Model
|
|
389
|
+
TYPES = {
|
|
390
|
+
"name" => nil,
|
|
391
|
+
"phone" => nil,
|
|
392
|
+
"street" => nil,
|
|
393
|
+
"apt_unit" => nil,
|
|
394
|
+
"lat" => nil,
|
|
395
|
+
"lng" => nil,
|
|
396
|
+
"notes" => nil,
|
|
397
|
+
"handoff" => nil
|
|
398
|
+
}.freeze
|
|
399
|
+
|
|
400
|
+
# @return [String]
|
|
401
|
+
def name
|
|
402
|
+
read("name")
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
# E.164, normalized on the way in.
|
|
406
|
+
# @return [String]
|
|
407
|
+
def phone
|
|
408
|
+
read("phone")
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
# @return [String]
|
|
412
|
+
def street
|
|
413
|
+
read("street")
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
# @return [String, nil]
|
|
417
|
+
def apt_unit
|
|
418
|
+
read("apt_unit")
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
# Null when the address was never geocoded and the text was judged instead.
|
|
422
|
+
# @return [Numeric, nil]
|
|
423
|
+
def lat
|
|
424
|
+
read("lat")
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
# @return [Numeric, nil]
|
|
428
|
+
def lng
|
|
429
|
+
read("lng")
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
# @return [String, nil]
|
|
433
|
+
def notes
|
|
434
|
+
read("notes")
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
# One of: "meet_at_door", "leave_at_door", "meet_outside".
|
|
438
|
+
# @return [String]
|
|
439
|
+
def handoff
|
|
440
|
+
read("handoff")
|
|
441
|
+
end
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
# The descriptive item list you sent, for the courier.
|
|
445
|
+
class Manifest < Model
|
|
446
|
+
TYPES = {
|
|
447
|
+
"items" => ["array", ["model", "Delivery::Manifest::Item"]]
|
|
448
|
+
}.freeze
|
|
449
|
+
|
|
450
|
+
# @return [Array<Models::Delivery::Manifest::Item>]
|
|
451
|
+
def items
|
|
452
|
+
read("items")
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
class Item < Model
|
|
456
|
+
TYPES = {
|
|
457
|
+
"name" => nil,
|
|
458
|
+
"quantity" => nil,
|
|
459
|
+
"size" => nil
|
|
460
|
+
}.freeze
|
|
461
|
+
|
|
462
|
+
# @return [String]
|
|
463
|
+
def name
|
|
464
|
+
read("name")
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
# @return [Integer]
|
|
468
|
+
def quantity
|
|
469
|
+
read("quantity")
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
# What the item was sent as.
|
|
473
|
+
# One of: "small", "medium", "large", "xlarge".
|
|
474
|
+
# @return [String]
|
|
475
|
+
def size
|
|
476
|
+
read("size")
|
|
477
|
+
end
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
# Null until a courier is assigned, and then FROZEN: a terminal delivery keeps reporting who carried it.
|
|
482
|
+
class Courier < Model
|
|
483
|
+
TYPES = {
|
|
484
|
+
"name" => nil,
|
|
485
|
+
"vehicle" => nil,
|
|
486
|
+
"vehicle_type" => nil,
|
|
487
|
+
"plate" => nil,
|
|
488
|
+
"phone" => ["model", "Delivery::Courier::Phone"],
|
|
489
|
+
"location" => ["model", "Delivery::Courier::Location"],
|
|
490
|
+
"imminent" => nil
|
|
491
|
+
}.freeze
|
|
492
|
+
|
|
493
|
+
# @return [String]
|
|
494
|
+
def name
|
|
495
|
+
read("name")
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
# What the courier is riding, in English whatever locale the request carried ("Motorcycle", "Bicycle").
|
|
499
|
+
# @return [String, nil]
|
|
500
|
+
def vehicle
|
|
501
|
+
read("vehicle")
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
# The machine-readable type: `bicycle`, `car`, `van`, `truck`, `scooter`, `motorcycle` or `walker`.
|
|
505
|
+
# @return [String, nil]
|
|
506
|
+
def vehicle_type
|
|
507
|
+
read("vehicle_type")
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
# @return [String, nil]
|
|
511
|
+
def plate
|
|
512
|
+
read("plate")
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
# A masked number and its IVR PIN, never a personal number.
|
|
516
|
+
# @return [Models::Delivery::Courier::Phone, nil]
|
|
517
|
+
def phone
|
|
518
|
+
read("phone")
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
# The live position, present only while the courier is actually in motion and only once there is a real fix.
|
|
522
|
+
# @return [Models::Delivery::Courier::Location, nil]
|
|
523
|
+
def location
|
|
524
|
+
read("location")
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
# The courier is about a minute away.
|
|
528
|
+
# @return [Boolean]
|
|
529
|
+
def imminent
|
|
530
|
+
read("imminent")
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
# A masked number and its IVR PIN, never a personal number.
|
|
534
|
+
class Phone < Model
|
|
535
|
+
TYPES = {
|
|
536
|
+
"masked" => nil,
|
|
537
|
+
"pin" => nil
|
|
538
|
+
}.freeze
|
|
539
|
+
|
|
540
|
+
# @return [String]
|
|
541
|
+
def masked
|
|
542
|
+
read("masked")
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
# @return [String, nil]
|
|
546
|
+
def pin
|
|
547
|
+
read("pin")
|
|
548
|
+
end
|
|
549
|
+
end
|
|
550
|
+
|
|
551
|
+
# The live position, present only while the courier is actually in motion and only once there is a real fix.
|
|
552
|
+
class Location < Model
|
|
553
|
+
TYPES = {
|
|
554
|
+
"lat" => nil,
|
|
555
|
+
"lng" => nil,
|
|
556
|
+
"updated_at" => nil
|
|
557
|
+
}.freeze
|
|
558
|
+
|
|
559
|
+
# @return [Numeric]
|
|
560
|
+
def lat
|
|
561
|
+
read("lat")
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
# @return [Numeric]
|
|
565
|
+
def lng
|
|
566
|
+
read("lng")
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
# @return [String, nil]
|
|
570
|
+
def updated_at
|
|
571
|
+
read("updated_at")
|
|
572
|
+
end
|
|
573
|
+
end
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
# Present only when the order carries a dropoff PIN: when you asked for one (`verification.dropoff_pincode` on the create), or when Listo...
|
|
577
|
+
class Verification < Model
|
|
578
|
+
TYPES = {
|
|
579
|
+
"pincode" => nil
|
|
580
|
+
}.freeze
|
|
581
|
+
|
|
582
|
+
# @return [String, nil]
|
|
583
|
+
def pincode
|
|
584
|
+
read("pincode")
|
|
585
|
+
end
|
|
586
|
+
end
|
|
587
|
+
|
|
588
|
+
# The return code (código de devolución).
|
|
589
|
+
class ReturnVerification < Model
|
|
590
|
+
TYPES = {
|
|
591
|
+
"pincode" => nil
|
|
592
|
+
}.freeze
|
|
593
|
+
|
|
594
|
+
# @return [String, nil]
|
|
595
|
+
def pincode
|
|
596
|
+
read("pincode")
|
|
597
|
+
end
|
|
598
|
+
end
|
|
599
|
+
|
|
600
|
+
# Proof of delivery.
|
|
601
|
+
class Proof < Model
|
|
602
|
+
TYPES = {
|
|
603
|
+
"picture_url" => nil,
|
|
604
|
+
"signature_image_url" => nil,
|
|
605
|
+
"signature_name" => nil,
|
|
606
|
+
"captured_at" => nil
|
|
607
|
+
}.freeze
|
|
608
|
+
|
|
609
|
+
# @return [String, nil]
|
|
610
|
+
def picture_url
|
|
611
|
+
read("picture_url")
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
# @return [String, nil]
|
|
615
|
+
def signature_image_url
|
|
616
|
+
read("signature_image_url")
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
# @return [String, nil]
|
|
620
|
+
def signature_name
|
|
621
|
+
read("signature_name")
|
|
622
|
+
end
|
|
623
|
+
|
|
624
|
+
# @return [String, nil]
|
|
625
|
+
def captured_at
|
|
626
|
+
read("captured_at")
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
|
|
630
|
+
# The evidence the trip left, one entry per moment.
|
|
631
|
+
class Proofs < Model
|
|
632
|
+
TYPES = {
|
|
633
|
+
"pickup" => ["model", "Delivery::Proofs::Pickup"],
|
|
634
|
+
"dropoff" => ["model", "Delivery::Proofs::Dropoff"],
|
|
635
|
+
"return" => ["model", "Delivery::Proofs::Return"]
|
|
636
|
+
}.freeze
|
|
637
|
+
|
|
638
|
+
# The courier collecting the order at the store.
|
|
639
|
+
# @return [Models::Delivery::Proofs::Pickup, nil]
|
|
640
|
+
def pickup
|
|
641
|
+
read("pickup")
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
# The courier at the customer's door.
|
|
645
|
+
# @return [Models::Delivery::Proofs::Dropoff, nil]
|
|
646
|
+
def dropoff
|
|
647
|
+
read("dropoff")
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
# The courier handing the order back at the store after a failed delivery.
|
|
651
|
+
# @return [Models::Delivery::Proofs::Return, nil]
|
|
652
|
+
def return
|
|
653
|
+
read("return")
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
# The courier collecting the order at the store.
|
|
657
|
+
class Pickup < Model
|
|
658
|
+
TYPES = {
|
|
659
|
+
"photo_url" => nil,
|
|
660
|
+
"captured_at" => nil
|
|
661
|
+
}.freeze
|
|
662
|
+
|
|
663
|
+
# Photo of the order at the store.
|
|
664
|
+
# @return [String, nil]
|
|
665
|
+
def photo_url
|
|
666
|
+
read("photo_url")
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
# When Listo first saw this photo.
|
|
670
|
+
# @return [String, nil]
|
|
671
|
+
def captured_at
|
|
672
|
+
read("captured_at")
|
|
673
|
+
end
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
# The courier at the customer's door.
|
|
677
|
+
class Dropoff < Model
|
|
678
|
+
TYPES = {
|
|
679
|
+
"photo_url" => nil,
|
|
680
|
+
"signature_url" => nil,
|
|
681
|
+
"signer_name" => nil,
|
|
682
|
+
"captured_at" => nil,
|
|
683
|
+
"delivered" => nil
|
|
684
|
+
}.freeze
|
|
685
|
+
|
|
686
|
+
# Photo taken at the door.
|
|
687
|
+
# @return [String, nil]
|
|
688
|
+
def photo_url
|
|
689
|
+
read("photo_url")
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
# Image of the recipient's signature.
|
|
693
|
+
# @return [String, nil]
|
|
694
|
+
def signature_url
|
|
695
|
+
read("signature_url")
|
|
696
|
+
end
|
|
697
|
+
|
|
698
|
+
# The name the person who signed typed.
|
|
699
|
+
# @return [String, nil]
|
|
700
|
+
def signer_name
|
|
701
|
+
read("signer_name")
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
# When Listo first saw this evidence.
|
|
705
|
+
# @return [String, nil]
|
|
706
|
+
def captured_at
|
|
707
|
+
read("captured_at")
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
# True only when the delivery was delivered.
|
|
711
|
+
# @return [Boolean]
|
|
712
|
+
def delivered
|
|
713
|
+
read("delivered")
|
|
714
|
+
end
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
# The courier handing the order back at the store after a failed delivery.
|
|
718
|
+
class Return < Model
|
|
719
|
+
TYPES = {
|
|
720
|
+
"photo_url" => nil,
|
|
721
|
+
"signature_url" => nil,
|
|
722
|
+
"signer_name" => nil,
|
|
723
|
+
"captured_at" => nil,
|
|
724
|
+
"meters_from_store" => nil
|
|
725
|
+
}.freeze
|
|
726
|
+
|
|
727
|
+
# Photo of the order handed back at the store.
|
|
728
|
+
# @return [String, nil]
|
|
729
|
+
def photo_url
|
|
730
|
+
read("photo_url")
|
|
731
|
+
end
|
|
732
|
+
|
|
733
|
+
# Image of the signature of whoever received it at the store.
|
|
734
|
+
# @return [String, nil]
|
|
735
|
+
def signature_url
|
|
736
|
+
read("signature_url")
|
|
737
|
+
end
|
|
738
|
+
|
|
739
|
+
# The name the person who signed typed.
|
|
740
|
+
# @return [String, nil]
|
|
741
|
+
def signer_name
|
|
742
|
+
read("signer_name")
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
# When Listo first saw this evidence.
|
|
746
|
+
# @return [String, nil]
|
|
747
|
+
def captured_at
|
|
748
|
+
read("captured_at")
|
|
749
|
+
end
|
|
750
|
+
|
|
751
|
+
# How far from the store the courier was when this was captured, in whole metres in a straight line.
|
|
752
|
+
# @return [Integer, nil]
|
|
753
|
+
def meters_from_store
|
|
754
|
+
read("meters_from_store")
|
|
755
|
+
end
|
|
756
|
+
end
|
|
757
|
+
end
|
|
758
|
+
|
|
759
|
+
# Who called the order off, and why.
|
|
760
|
+
class Cancellation < Model
|
|
761
|
+
TYPES = {
|
|
762
|
+
"party" => nil,
|
|
763
|
+
"reason" => nil,
|
|
764
|
+
"description" => nil
|
|
765
|
+
}.freeze
|
|
766
|
+
|
|
767
|
+
# `partner` is you.
|
|
768
|
+
# One of: "partner", "courier", "platform".
|
|
769
|
+
# @return [String]
|
|
770
|
+
def party
|
|
771
|
+
read("party")
|
|
772
|
+
end
|
|
773
|
+
|
|
774
|
+
# The reason you sent on a cancel.
|
|
775
|
+
# One of: "customer_canceled", "store_closed", "item_unavailable", "wrong_address", "no_longer_needed", "other", nil.
|
|
776
|
+
# @return [String, nil]
|
|
777
|
+
def reason
|
|
778
|
+
read("reason")
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
# @return [String, nil]
|
|
782
|
+
def description
|
|
783
|
+
read("description")
|
|
784
|
+
end
|
|
785
|
+
end
|
|
786
|
+
|
|
787
|
+
class Charge < Model
|
|
788
|
+
TYPES = {
|
|
789
|
+
"type" => nil,
|
|
790
|
+
"amount_cents" => nil,
|
|
791
|
+
"charged_at" => nil
|
|
792
|
+
}.freeze
|
|
793
|
+
|
|
794
|
+
# What the charge was for.
|
|
795
|
+
# One of: "cancellation_fee", "return_fee".
|
|
796
|
+
# @return [String]
|
|
797
|
+
def type
|
|
798
|
+
read("type")
|
|
799
|
+
end
|
|
800
|
+
|
|
801
|
+
# What you were charged, positive, in Mexican peso cents: the delivery fee for each leg that was driven, less your own store markup.
|
|
802
|
+
# @return [Integer]
|
|
803
|
+
def amount_cents
|
|
804
|
+
read("amount_cents")
|
|
805
|
+
end
|
|
806
|
+
|
|
807
|
+
# When the charge was recorded, which is not when the delivery ended.
|
|
808
|
+
# @return [String]
|
|
809
|
+
def charged_at
|
|
810
|
+
read("charged_at")
|
|
811
|
+
end
|
|
812
|
+
end
|
|
813
|
+
|
|
814
|
+
class Refund < Model
|
|
815
|
+
TYPES = {
|
|
816
|
+
"id" => nil,
|
|
817
|
+
"amount_cents" => nil,
|
|
818
|
+
"reason" => nil,
|
|
819
|
+
"status" => nil,
|
|
820
|
+
"requested_via" => nil,
|
|
821
|
+
"party" => nil,
|
|
822
|
+
"created_at" => nil,
|
|
823
|
+
"succeeded_at" => nil
|
|
824
|
+
}.freeze
|
|
825
|
+
|
|
826
|
+
# The refund id, `rfn_` prefixed.
|
|
827
|
+
# @return [String]
|
|
828
|
+
def id
|
|
829
|
+
read("id")
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
# What went back, positive, in Mexican peso cents.
|
|
833
|
+
# @return [Integer, nil]
|
|
834
|
+
def amount_cents
|
|
835
|
+
read("amount_cents")
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
# The free text whoever asked for the refund supplied, or null.
|
|
839
|
+
# @return [String, nil]
|
|
840
|
+
def reason
|
|
841
|
+
read("reason")
|
|
842
|
+
end
|
|
843
|
+
|
|
844
|
+
# `pending` IS NOT A FAILURE and must not be retried: a direct-charge refund is held while the account's balance is short and applied once...
|
|
845
|
+
# One of: "pending", "succeeded", "failed".
|
|
846
|
+
# @return [String]
|
|
847
|
+
def status
|
|
848
|
+
read("status")
|
|
849
|
+
end
|
|
850
|
+
|
|
851
|
+
# Which lane issued it.
|
|
852
|
+
# One of: "api", "console", "automatic", "external".
|
|
853
|
+
# @return [String]
|
|
854
|
+
def requested_via
|
|
855
|
+
read("requested_via")
|
|
856
|
+
end
|
|
857
|
+
|
|
858
|
+
# Whose decision it was.
|
|
859
|
+
# One of: "business", "platform".
|
|
860
|
+
# @return [String]
|
|
861
|
+
def party
|
|
862
|
+
read("party")
|
|
863
|
+
end
|
|
864
|
+
|
|
865
|
+
# When the refund was asked for.
|
|
866
|
+
# @return [String]
|
|
867
|
+
def created_at
|
|
868
|
+
read("created_at")
|
|
869
|
+
end
|
|
870
|
+
|
|
871
|
+
# When the money was confirmed on its way.
|
|
872
|
+
# @return [String, nil]
|
|
873
|
+
def succeeded_at
|
|
874
|
+
read("succeeded_at")
|
|
875
|
+
end
|
|
876
|
+
end
|
|
877
|
+
end
|
|
878
|
+
end
|
|
879
|
+
end
|