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.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +152 -0
  4. data/lib/listo_delivery/client.rb +170 -0
  5. data/lib/listo_delivery/errors.rb +53 -0
  6. data/lib/listo_delivery/generated/api_version.rb +12 -0
  7. data/lib/listo_delivery/generated/client_operations.rb +82 -0
  8. data/lib/listo_delivery/generated/loader.rb +69 -0
  9. data/lib/listo_delivery/generated/models/balance.rb +48 -0
  10. data/lib/listo_delivery/generated/models/cancel_delivery_request.rb +29 -0
  11. data/lib/listo_delivery/generated/models/card_onboarding_link.rb +21 -0
  12. data/lib/listo_delivery/generated/models/card_status.rb +22 -0
  13. data/lib/listo_delivery/generated/models/connect_request.rb +28 -0
  14. data/lib/listo_delivery/generated/models/courier_ping.rb +58 -0
  15. data/lib/listo_delivery/generated/models/create_connect_request_request.rb +35 -0
  16. data/lib/listo_delivery/generated/models/create_connection_request.rb +21 -0
  17. data/lib/listo_delivery/generated/models/create_delivery_request.rb +189 -0
  18. data/lib/listo_delivery/generated/models/create_quote_request.rb +111 -0
  19. data/lib/listo_delivery/generated/models/create_store_owner_request.rb +26 -0
  20. data/lib/listo_delivery/generated/models/create_store_request.rb +104 -0
  21. data/lib/listo_delivery/generated/models/create_withdrawal_request.rb +29 -0
  22. data/lib/listo_delivery/generated/models/delivery.rb +879 -0
  23. data/lib/listo_delivery/generated/models/delivery_courier_location_event.rb +23 -0
  24. data/lib/listo_delivery/generated/models/delivery_list.rb +34 -0
  25. data/lib/listo_delivery/generated/models/delivery_message_skipped.rb +37 -0
  26. data/lib/listo_delivery/generated/models/delivery_message_skipped_event.rb +23 -0
  27. data/lib/listo_delivery/generated/models/delivery_status_changed_event.rb +23 -0
  28. data/lib/listo_delivery/generated/models/delivery_updated_event.rb +23 -0
  29. data/lib/listo_delivery/generated/models/error.rb +56 -0
  30. data/lib/listo_delivery/generated/models/error_response.rb +20 -0
  31. data/lib/listo_delivery/generated/models/event_list.rb +34 -0
  32. data/lib/listo_delivery/generated/models/ledger_entry.rb +62 -0
  33. data/lib/listo_delivery/generated/models/ledger_entry_list.rb +34 -0
  34. data/lib/listo_delivery/generated/models/manifest.rb +20 -0
  35. data/lib/listo_delivery/generated/models/manifest_item.rb +36 -0
  36. data/lib/listo_delivery/generated/models/owner_invitation.rb +27 -0
  37. data/lib/listo_delivery/generated/models/ping.rb +56 -0
  38. data/lib/listo_delivery/generated/models/quote.rb +99 -0
  39. data/lib/listo_delivery/generated/models/refund_delivery_request.rb +28 -0
  40. data/lib/listo_delivery/generated/models/request_log.rb +91 -0
  41. data/lib/listo_delivery/generated/models/request_log_detail.rb +105 -0
  42. data/lib/listo_delivery/generated/models/request_log_list.rb +34 -0
  43. data/lib/listo_delivery/generated/models/reschedule_delivery_request.rb +41 -0
  44. data/lib/listo_delivery/generated/models/same_day_terms.rb +106 -0
  45. data/lib/listo_delivery/generated/models/send_test_webhook_request.rb +22 -0
  46. data/lib/listo_delivery/generated/models/store.rb +235 -0
  47. data/lib/listo_delivery/generated/models/store_balance.rb +48 -0
  48. data/lib/listo_delivery/generated/models/store_connected_event.rb +23 -0
  49. data/lib/listo_delivery/generated/models/store_list.rb +34 -0
  50. data/lib/listo_delivery/generated/models/store_updated_event.rb +23 -0
  51. data/lib/listo_delivery/generated/models/update_store_request.rb +94 -0
  52. data/lib/listo_delivery/generated/models/webhook_delivery.rb +99 -0
  53. data/lib/listo_delivery/generated/models/webhook_delivery_list.rb +34 -0
  54. data/lib/listo_delivery/generated/models/webhook_event.rb +69 -0
  55. data/lib/listo_delivery/generated/models/webhook_event_envelope.rb +35 -0
  56. data/lib/listo_delivery/generated/models/withdrawal.rb +91 -0
  57. data/lib/listo_delivery/generated/models/withdrawal_list.rb +34 -0
  58. data/lib/listo_delivery/generated/models/withdrawal_updated_event.rb +23 -0
  59. data/lib/listo_delivery/generated/resources/balance.rb +43 -0
  60. data/lib/listo_delivery/generated/resources/card_onboarding.rb +70 -0
  61. data/lib/listo_delivery/generated/resources/connect_requests.rb +31 -0
  62. data/lib/listo_delivery/generated/resources/connections.rb +31 -0
  63. data/lib/listo_delivery/generated/resources/deliveries.rb +128 -0
  64. data/lib/listo_delivery/generated/resources/events.rb +59 -0
  65. data/lib/listo_delivery/generated/resources/ledger.rb +47 -0
  66. data/lib/listo_delivery/generated/resources/quotes.rb +31 -0
  67. data/lib/listo_delivery/generated/resources/request_logs.rb +45 -0
  68. data/lib/listo_delivery/generated/resources/stores.rb +143 -0
  69. data/lib/listo_delivery/generated/resources/webhooks.rb +46 -0
  70. data/lib/listo_delivery/generated/resources/withdrawals.rb +60 -0
  71. data/lib/listo_delivery/model.rb +69 -0
  72. data/lib/listo_delivery/util.rb +76 -0
  73. data/lib/listo_delivery/version.rb +7 -0
  74. data/lib/listo_delivery/webhooks.rb +98 -0
  75. data/lib/listo_delivery.rb +16 -0
  76. data/listo_delivery.gemspec +27 -0
  77. 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