shopify_api 14.10.0 → 14.11.0

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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +4 -0
  3. data/.github/workflows/api_update_reminder.yml +2 -2
  4. data/.github/workflows/api_update_reminder_on_release.yml +2 -2
  5. data/.github/workflows/build.yml +2 -2
  6. data/.github/workflows/close-waiting-for-response-issues.yml +1 -1
  7. data/.github/workflows/remove-labels-on-activity.yml +2 -3
  8. data/CHANGELOG.md +3 -0
  9. data/Gemfile.lock +2 -2
  10. data/lib/shopify_api/admin_versions.rb +3 -2
  11. data/lib/shopify_api/rest/resources/2025_07/abandoned_checkout.rb +194 -0
  12. data/lib/shopify_api/rest/resources/2025_07/access_scope.rb +62 -0
  13. data/lib/shopify_api/rest/resources/2025_07/apple_pay_certificate.rb +109 -0
  14. data/lib/shopify_api/rest/resources/2025_07/application_charge.rb +113 -0
  15. data/lib/shopify_api/rest/resources/2025_07/application_credit.rb +95 -0
  16. data/lib/shopify_api/rest/resources/2025_07/article.rb +269 -0
  17. data/lib/shopify_api/rest/resources/2025_07/asset.rb +122 -0
  18. data/lib/shopify_api/rest/resources/2025_07/assigned_fulfillment_order.rb +92 -0
  19. data/lib/shopify_api/rest/resources/2025_07/balance.rb +58 -0
  20. data/lib/shopify_api/rest/resources/2025_07/blog.rb +166 -0
  21. data/lib/shopify_api/rest/resources/2025_07/cancellation_request.rb +87 -0
  22. data/lib/shopify_api/rest/resources/2025_07/carrier_service.rb +120 -0
  23. data/lib/shopify_api/rest/resources/2025_07/checkout.rb +213 -0
  24. data/lib/shopify_api/rest/resources/2025_07/collect.rb +146 -0
  25. data/lib/shopify_api/rest/resources/2025_07/collection.rb +114 -0
  26. data/lib/shopify_api/rest/resources/2025_07/collection_listing.rb +159 -0
  27. data/lib/shopify_api/rest/resources/2025_07/comment.rb +287 -0
  28. data/lib/shopify_api/rest/resources/2025_07/country.rb +141 -0
  29. data/lib/shopify_api/rest/resources/2025_07/currency.rb +61 -0
  30. data/lib/shopify_api/rest/resources/2025_07/custom_collection.rb +191 -0
  31. data/lib/shopify_api/rest/resources/2025_07/customer.rb +328 -0
  32. data/lib/shopify_api/rest/resources/2025_07/deprecated_api_call.rb +61 -0
  33. data/lib/shopify_api/rest/resources/2025_07/discount_code.rb +226 -0
  34. data/lib/shopify_api/rest/resources/2025_07/dispute.rb +115 -0
  35. data/lib/shopify_api/rest/resources/2025_07/dispute_evidence.rb +121 -0
  36. data/lib/shopify_api/rest/resources/2025_07/dispute_file_upload.rb +85 -0
  37. data/lib/shopify_api/rest/resources/2025_07/draft_order.rb +279 -0
  38. data/lib/shopify_api/rest/resources/2025_07/event.rb +152 -0
  39. data/lib/shopify_api/rest/resources/2025_07/fulfillment.rb +235 -0
  40. data/lib/shopify_api/rest/resources/2025_07/fulfillment_event.rb +167 -0
  41. data/lib/shopify_api/rest/resources/2025_07/fulfillment_order.rb +326 -0
  42. data/lib/shopify_api/rest/resources/2025_07/fulfillment_request.rb +116 -0
  43. data/lib/shopify_api/rest/resources/2025_07/fulfillment_service.rb +134 -0
  44. data/lib/shopify_api/rest/resources/2025_07/gift_card.rb +222 -0
  45. data/lib/shopify_api/rest/resources/2025_07/gift_card_adjustment.rb +122 -0
  46. data/lib/shopify_api/rest/resources/2025_07/image.rb +161 -0
  47. data/lib/shopify_api/rest/resources/2025_07/inventory_item.rb +112 -0
  48. data/lib/shopify_api/rest/resources/2025_07/inventory_level.rb +183 -0
  49. data/lib/shopify_api/rest/resources/2025_07/location.rb +171 -0
  50. data/lib/shopify_api/rest/resources/2025_07/locations_for_move.rb +60 -0
  51. data/lib/shopify_api/rest/resources/2025_07/marketing_event.rb +213 -0
  52. data/lib/shopify_api/rest/resources/2025_07/metafield.rb +348 -0
  53. data/lib/shopify_api/rest/resources/2025_07/mobile_platform_application.rb +120 -0
  54. data/lib/shopify_api/rest/resources/2025_07/order.rb +503 -0
  55. data/lib/shopify_api/rest/resources/2025_07/order_risk.rb +148 -0
  56. data/lib/shopify_api/rest/resources/2025_07/page.rb +198 -0
  57. data/lib/shopify_api/rest/resources/2025_07/payment.rb +98 -0
  58. data/lib/shopify_api/rest/resources/2025_07/payment_gateway.rb +147 -0
  59. data/lib/shopify_api/rest/resources/2025_07/payment_transaction.rb +117 -0
  60. data/lib/shopify_api/rest/resources/2025_07/payout.rb +101 -0
  61. data/lib/shopify_api/rest/resources/2025_07/policy.rb +73 -0
  62. data/lib/shopify_api/rest/resources/2025_07/price_rule.rb +227 -0
  63. data/lib/shopify_api/rest/resources/2025_07/product.rb +227 -0
  64. data/lib/shopify_api/rest/resources/2025_07/product_listing.rb +200 -0
  65. data/lib/shopify_api/rest/resources/2025_07/product_resource_feedback.rb +92 -0
  66. data/lib/shopify_api/rest/resources/2025_07/province.rb +136 -0
  67. data/lib/shopify_api/rest/resources/2025_07/recurring_application_charge.rb +184 -0
  68. data/lib/shopify_api/rest/resources/2025_07/redirect.rb +143 -0
  69. data/lib/shopify_api/rest/resources/2025_07/refund.rb +158 -0
  70. data/lib/shopify_api/rest/resources/2025_07/resource_feedback.rb +77 -0
  71. data/lib/shopify_api/rest/resources/2025_07/script_tag.rb +159 -0
  72. data/lib/shopify_api/rest/resources/2025_07/shipping_zone.rb +87 -0
  73. data/lib/shopify_api/rest/resources/2025_07/shop.rb +231 -0
  74. data/lib/shopify_api/rest/resources/2025_07/smart_collection.rb +220 -0
  75. data/lib/shopify_api/rest/resources/2025_07/storefront_access_token.rb +91 -0
  76. data/lib/shopify_api/rest/resources/2025_07/tender_transaction.rb +97 -0
  77. data/lib/shopify_api/rest/resources/2025_07/theme.rb +127 -0
  78. data/lib/shopify_api/rest/resources/2025_07/transaction.rb +194 -0
  79. data/lib/shopify_api/rest/resources/2025_07/usage_charge.rb +106 -0
  80. data/lib/shopify_api/rest/resources/2025_07/user.rb +142 -0
  81. data/lib/shopify_api/rest/resources/2025_07/variant.rb +212 -0
  82. data/lib/shopify_api/rest/resources/2025_07/webhook.rb +173 -0
  83. data/lib/shopify_api/version.rb +1 -1
  84. metadata +74 -2
@@ -0,0 +1,166 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ ########################################################################################################################
5
+ # This file is auto-generated. If you have an issue, please create a GitHub issue. #
6
+ ########################################################################################################################
7
+
8
+ module ShopifyAPI
9
+ class Blog < ShopifyAPI::Rest::Base
10
+ extend T::Sig
11
+
12
+ @prev_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
13
+ @next_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
14
+
15
+ @api_call_limit = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
16
+ @retry_request_after = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
17
+
18
+ sig { params(session: T.nilable(ShopifyAPI::Auth::Session), from_hash: T.nilable(T::Hash[T.untyped, T.untyped])).void }
19
+ def initialize(session: ShopifyAPI::Context.active_session, from_hash: nil)
20
+
21
+ @admin_graphql_api_id = T.let(nil, T.nilable(String))
22
+ @commentable = T.let(nil, T.nilable(String))
23
+ @created_at = T.let(nil, T.nilable(String))
24
+ @feedburner = T.let(nil, T.nilable(String))
25
+ @feedburner_location = T.let(nil, T.nilable(String))
26
+ @handle = T.let(nil, T.nilable(String))
27
+ @id = T.let(nil, T.nilable(Integer))
28
+ @metafields = T.let(nil, T.nilable(T::Array[T.untyped]))
29
+ @tags = T.let(nil, T.nilable(String))
30
+ @template_suffix = T.let(nil, T.nilable(String))
31
+ @title = T.let(nil, T.nilable(String))
32
+ @updated_at = T.let(nil, T.nilable(String))
33
+
34
+ super(session: session, from_hash: from_hash)
35
+ end
36
+
37
+ @has_one = T.let({}, T::Hash[Symbol, Class])
38
+ @has_many = T.let({
39
+ metafields: Metafield
40
+ }, T::Hash[Symbol, Class])
41
+ @paths = T.let([
42
+ {http_method: :delete, operation: :delete, ids: [:id], path: "blogs/<id>.json"},
43
+ {http_method: :get, operation: :count, ids: [], path: "blogs/count.json"},
44
+ {http_method: :get, operation: :get, ids: [], path: "blogs.json"},
45
+ {http_method: :get, operation: :get, ids: [:id], path: "blogs/<id>.json"},
46
+ {http_method: :post, operation: :post, ids: [], path: "blogs.json"},
47
+ {http_method: :put, operation: :put, ids: [:id], path: "blogs/<id>.json"}
48
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
49
+
50
+ sig { returns(T.nilable(String)) }
51
+ attr_reader :admin_graphql_api_id
52
+ sig { returns(T.nilable(String)) }
53
+ attr_reader :commentable
54
+ sig { returns(T.nilable(String)) }
55
+ attr_reader :created_at
56
+ sig { returns(T.nilable(String)) }
57
+ attr_reader :feedburner
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :feedburner_location
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :handle
62
+ sig { returns(T.nilable(Integer)) }
63
+ attr_reader :id
64
+ sig { returns(T.nilable(T::Array[Metafield])) }
65
+ attr_reader :metafields
66
+ sig { returns(T.nilable(String)) }
67
+ attr_reader :tags
68
+ sig { returns(T.nilable(String)) }
69
+ attr_reader :template_suffix
70
+ sig { returns(T.nilable(String)) }
71
+ attr_reader :title
72
+ sig { returns(T.nilable(String)) }
73
+ attr_reader :updated_at
74
+
75
+ class << self
76
+ sig do
77
+ params(
78
+ id: T.any(Integer, String),
79
+ fields: T.untyped,
80
+ session: Auth::Session
81
+ ).returns(T.nilable(Blog))
82
+ end
83
+ def find(
84
+ id:,
85
+ fields: nil,
86
+ session: ShopifyAPI::Context.active_session
87
+ )
88
+ result = base_find(
89
+ session: session,
90
+ ids: {id: id},
91
+ params: {fields: fields},
92
+ )
93
+ T.cast(result[0], T.nilable(Blog))
94
+ end
95
+
96
+ sig do
97
+ params(
98
+ id: T.any(Integer, String),
99
+ session: Auth::Session
100
+ ).returns(T.untyped)
101
+ end
102
+ def delete(
103
+ id:,
104
+ session: ShopifyAPI::Context.active_session
105
+ )
106
+ request(
107
+ http_method: :delete,
108
+ operation: :delete,
109
+ session: session,
110
+ ids: {id: id},
111
+ params: {},
112
+ )
113
+ end
114
+
115
+ sig do
116
+ params(
117
+ limit: T.untyped,
118
+ since_id: T.untyped,
119
+ handle: T.untyped,
120
+ fields: T.untyped,
121
+ session: Auth::Session,
122
+ kwargs: T.untyped
123
+ ).returns(T::Array[Blog])
124
+ end
125
+ def all(
126
+ limit: nil,
127
+ since_id: nil,
128
+ handle: nil,
129
+ fields: nil,
130
+ session: ShopifyAPI::Context.active_session,
131
+ **kwargs
132
+ )
133
+ response = base_find(
134
+ session: session,
135
+ ids: {},
136
+ params: {limit: limit, since_id: since_id, handle: handle, fields: fields}.merge(kwargs).compact,
137
+ )
138
+
139
+ T.cast(response, T::Array[Blog])
140
+ end
141
+
142
+ sig do
143
+ params(
144
+ session: Auth::Session,
145
+ kwargs: T.untyped
146
+ ).returns(T.untyped)
147
+ end
148
+ def count(
149
+ session: ShopifyAPI::Context.active_session,
150
+ **kwargs
151
+ )
152
+ request(
153
+ http_method: :get,
154
+ operation: :count,
155
+ session: session,
156
+ ids: {},
157
+ params: {}.merge(kwargs).compact,
158
+ body: {},
159
+ entity: nil,
160
+ )
161
+ end
162
+
163
+ end
164
+
165
+ end
166
+ end
@@ -0,0 +1,87 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ ########################################################################################################################
5
+ # This file is auto-generated. If you have an issue, please create a GitHub issue. #
6
+ ########################################################################################################################
7
+
8
+ module ShopifyAPI
9
+ class CancellationRequest < ShopifyAPI::Rest::Base
10
+ extend T::Sig
11
+
12
+ @prev_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
13
+ @next_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
14
+
15
+ @api_call_limit = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
16
+ @retry_request_after = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
17
+
18
+ sig { params(session: T.nilable(ShopifyAPI::Auth::Session), from_hash: T.nilable(T::Hash[T.untyped, T.untyped])).void }
19
+ def initialize(session: ShopifyAPI::Context.active_session, from_hash: nil)
20
+
21
+ @fulfillment_order_id = T.let(nil, T.nilable(Integer))
22
+
23
+ super(session: session, from_hash: from_hash)
24
+ end
25
+
26
+ @has_one = T.let({}, T::Hash[Symbol, Class])
27
+ @has_many = T.let({}, T::Hash[Symbol, Class])
28
+ @paths = T.let([
29
+ {http_method: :post, operation: :accept, ids: [:fulfillment_order_id], path: "fulfillment_orders/<fulfillment_order_id>/cancellation_request/accept.json"},
30
+ {http_method: :post, operation: :post, ids: [:fulfillment_order_id], path: "fulfillment_orders/<fulfillment_order_id>/cancellation_request.json"},
31
+ {http_method: :post, operation: :reject, ids: [:fulfillment_order_id], path: "fulfillment_orders/<fulfillment_order_id>/cancellation_request/reject.json"}
32
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
33
+
34
+ sig { returns(T.nilable(Integer)) }
35
+ attr_reader :fulfillment_order_id
36
+
37
+ class << self
38
+ end
39
+
40
+ sig do
41
+ params(
42
+ message: T.untyped,
43
+ body: T.untyped,
44
+ kwargs: T.untyped
45
+ ).returns(T.untyped)
46
+ end
47
+ def accept(
48
+ message: nil,
49
+ body: nil,
50
+ **kwargs
51
+ )
52
+ self.class.request(
53
+ http_method: :post,
54
+ operation: :accept,
55
+ session: @session,
56
+ ids: {fulfillment_order_id: @fulfillment_order_id},
57
+ params: {message: message}.merge(kwargs).compact,
58
+ body: body,
59
+ entity: self,
60
+ )
61
+ end
62
+
63
+ sig do
64
+ params(
65
+ message: T.untyped,
66
+ body: T.untyped,
67
+ kwargs: T.untyped
68
+ ).returns(T.untyped)
69
+ end
70
+ def reject(
71
+ message: nil,
72
+ body: nil,
73
+ **kwargs
74
+ )
75
+ self.class.request(
76
+ http_method: :post,
77
+ operation: :reject,
78
+ session: @session,
79
+ ids: {fulfillment_order_id: @fulfillment_order_id},
80
+ params: {message: message}.merge(kwargs).compact,
81
+ body: body,
82
+ entity: self,
83
+ )
84
+ end
85
+
86
+ end
87
+ end
@@ -0,0 +1,120 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ ########################################################################################################################
5
+ # This file is auto-generated. If you have an issue, please create a GitHub issue. #
6
+ ########################################################################################################################
7
+
8
+ module ShopifyAPI
9
+ class CarrierService < ShopifyAPI::Rest::Base
10
+ extend T::Sig
11
+
12
+ @prev_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
13
+ @next_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
14
+
15
+ @api_call_limit = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
16
+ @retry_request_after = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
17
+
18
+ sig { params(session: T.nilable(ShopifyAPI::Auth::Session), from_hash: T.nilable(T::Hash[T.untyped, T.untyped])).void }
19
+ def initialize(session: ShopifyAPI::Context.active_session, from_hash: nil)
20
+
21
+ @active = T.let(nil, T.nilable(T::Boolean))
22
+ @admin_graphql_api_id = T.let(nil, T.nilable(String))
23
+ @callback_url = T.let(nil, T.nilable(String))
24
+ @carrier_service_type = T.let(nil, T.nilable(String))
25
+ @format = T.let(nil, T.nilable(String))
26
+ @id = T.let(nil, T.nilable(Integer))
27
+ @name = T.let(nil, T.nilable(String))
28
+ @service_discovery = T.let(nil, T.nilable(T::Boolean))
29
+
30
+ super(session: session, from_hash: from_hash)
31
+ end
32
+
33
+ @has_one = T.let({}, T::Hash[Symbol, Class])
34
+ @has_many = T.let({}, T::Hash[Symbol, Class])
35
+ @paths = T.let([
36
+ {http_method: :delete, operation: :delete, ids: [:id], path: "carrier_services/<id>.json"},
37
+ {http_method: :get, operation: :get, ids: [], path: "carrier_services.json"},
38
+ {http_method: :get, operation: :get, ids: [:id], path: "carrier_services/<id>.json"},
39
+ {http_method: :post, operation: :post, ids: [], path: "carrier_services.json"},
40
+ {http_method: :put, operation: :put, ids: [:id], path: "carrier_services/<id>.json"}
41
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
42
+
43
+ sig { returns(T.nilable(T::Boolean)) }
44
+ attr_reader :active
45
+ sig { returns(T.nilable(String)) }
46
+ attr_reader :admin_graphql_api_id
47
+ sig { returns(T.nilable(String)) }
48
+ attr_reader :callback_url
49
+ sig { returns(T.nilable(String)) }
50
+ attr_reader :carrier_service_type
51
+ sig { returns(T.nilable(String)) }
52
+ attr_reader :format
53
+ sig { returns(T.nilable(Integer)) }
54
+ attr_reader :id
55
+ sig { returns(T.nilable(String)) }
56
+ attr_reader :name
57
+ sig { returns(T.nilable(T::Boolean)) }
58
+ attr_reader :service_discovery
59
+
60
+ class << self
61
+ sig do
62
+ params(
63
+ id: T.any(Integer, String),
64
+ session: Auth::Session
65
+ ).returns(T.nilable(CarrierService))
66
+ end
67
+ def find(
68
+ id:,
69
+ session: ShopifyAPI::Context.active_session
70
+ )
71
+ result = base_find(
72
+ session: session,
73
+ ids: {id: id},
74
+ params: {},
75
+ )
76
+ T.cast(result[0], T.nilable(CarrierService))
77
+ end
78
+
79
+ sig do
80
+ params(
81
+ id: T.any(Integer, String),
82
+ session: Auth::Session
83
+ ).returns(T.untyped)
84
+ end
85
+ def delete(
86
+ id:,
87
+ session: ShopifyAPI::Context.active_session
88
+ )
89
+ request(
90
+ http_method: :delete,
91
+ operation: :delete,
92
+ session: session,
93
+ ids: {id: id},
94
+ params: {},
95
+ )
96
+ end
97
+
98
+ sig do
99
+ params(
100
+ session: Auth::Session,
101
+ kwargs: T.untyped
102
+ ).returns(T::Array[CarrierService])
103
+ end
104
+ def all(
105
+ session: ShopifyAPI::Context.active_session,
106
+ **kwargs
107
+ )
108
+ response = base_find(
109
+ session: session,
110
+ ids: {},
111
+ params: {}.merge(kwargs).compact,
112
+ )
113
+
114
+ T.cast(response, T::Array[CarrierService])
115
+ end
116
+
117
+ end
118
+
119
+ end
120
+ end
@@ -0,0 +1,213 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
4
+ ########################################################################################################################
5
+ # This file is auto-generated. If you have an issue, please create a GitHub issue. #
6
+ ########################################################################################################################
7
+
8
+ module ShopifyAPI
9
+ class Checkout < ShopifyAPI::Rest::Base
10
+ extend T::Sig
11
+
12
+ @prev_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
13
+ @next_page_info = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
14
+
15
+ @api_call_limit = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
16
+ @retry_request_after = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
17
+
18
+ sig { params(session: T.nilable(ShopifyAPI::Auth::Session), from_hash: T.nilable(T::Hash[T.untyped, T.untyped])).void }
19
+ def initialize(session: ShopifyAPI::Context.active_session, from_hash: nil)
20
+
21
+ @billing_address = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
22
+ @line_items = T.let(nil, T.nilable(T::Array[T.untyped]))
23
+ @applied_discount = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
24
+ @buyer_accepts_marketing = T.let(nil, T.nilable(T::Boolean))
25
+ @created_at = T.let(nil, T.nilable(String))
26
+ @currency = T.let(nil, T.nilable(String))
27
+ @customer_id = T.let(nil, T.nilable(Integer))
28
+ @discount_code = T.let(nil, T.nilable(DiscountCode))
29
+ @email = T.let(nil, T.nilable(String))
30
+ @gift_cards = T.let(nil, T.nilable(T::Array[T.untyped]))
31
+ @order = T.let(nil, T.nilable(Order))
32
+ @payment_due = T.let(nil, T.nilable(String))
33
+ @payment_url = T.let(nil, T.nilable(String))
34
+ @phone = T.let(nil, T.nilable(String))
35
+ @presentment_currency = T.let(nil, T.nilable(String))
36
+ @requires_shipping = T.let(nil, T.nilable(T::Boolean))
37
+ @reservation_time = T.let(nil, T.nilable(String))
38
+ @reservation_time_left = T.let(nil, T.nilable(Integer))
39
+ @shipping_address = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
40
+ @shipping_line = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
41
+ @shipping_rate = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
42
+ @source_identifier = T.let(nil, T.nilable(String))
43
+ @source_name = T.let(nil, T.nilable(String))
44
+ @source_url = T.let(nil, T.nilable(String))
45
+ @subtotal_price = T.let(nil, T.nilable(String))
46
+ @tax_lines = T.let(nil, T.nilable(T::Array[T.untyped]))
47
+ @taxes_included = T.let(nil, T.nilable(T::Boolean))
48
+ @token = T.let(nil, T.nilable(String))
49
+ @total_price = T.let(nil, T.nilable(String))
50
+ @total_tax = T.let(nil, T.nilable(String))
51
+ @updated_at = T.let(nil, T.nilable(String))
52
+ @user_id = T.let(nil, T.nilable(Integer))
53
+ @web_url = T.let(nil, T.nilable(String))
54
+
55
+ super(session: session, from_hash: from_hash)
56
+ end
57
+
58
+ @has_one = T.let({
59
+ discount_code: DiscountCode,
60
+ order: Order
61
+ }, T::Hash[Symbol, Class])
62
+ @has_many = T.let({
63
+ gift_cards: GiftCard
64
+ }, T::Hash[Symbol, Class])
65
+ @paths = T.let([
66
+ {http_method: :get, operation: :get, ids: [:token], path: "checkouts/<token>.json"},
67
+ {http_method: :get, operation: :shipping_rates, ids: [:token], path: "checkouts/<token>/shipping_rates.json"},
68
+ {http_method: :post, operation: :complete, ids: [:token], path: "checkouts/<token>/complete.json"},
69
+ {http_method: :post, operation: :post, ids: [], path: "checkouts.json"},
70
+ {http_method: :put, operation: :put, ids: [:token], path: "checkouts/<token>.json"}
71
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
72
+
73
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
74
+ attr_reader :billing_address
75
+ sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
76
+ attr_reader :line_items
77
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
78
+ attr_reader :applied_discount
79
+ sig { returns(T.nilable(T::Boolean)) }
80
+ attr_reader :buyer_accepts_marketing
81
+ sig { returns(T.nilable(String)) }
82
+ attr_reader :created_at
83
+ sig { returns(T.nilable(String)) }
84
+ attr_reader :currency
85
+ sig { returns(T.nilable(Integer)) }
86
+ attr_reader :customer_id
87
+ sig { returns(T.nilable(DiscountCode)) }
88
+ attr_reader :discount_code
89
+ sig { returns(T.nilable(String)) }
90
+ attr_reader :email
91
+ sig { returns(T.nilable(T::Array[GiftCard])) }
92
+ attr_reader :gift_cards
93
+ sig { returns(T.nilable(Order)) }
94
+ attr_reader :order
95
+ sig { returns(T.nilable(String)) }
96
+ attr_reader :payment_due
97
+ sig { returns(T.nilable(String)) }
98
+ attr_reader :payment_url
99
+ sig { returns(T.nilable(String)) }
100
+ attr_reader :phone
101
+ sig { returns(T.nilable(String)) }
102
+ attr_reader :presentment_currency
103
+ sig { returns(T.nilable(T::Boolean)) }
104
+ attr_reader :requires_shipping
105
+ sig { returns(T.nilable(String)) }
106
+ attr_reader :reservation_time
107
+ sig { returns(T.nilable(Integer)) }
108
+ attr_reader :reservation_time_left
109
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
110
+ attr_reader :shipping_address
111
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
112
+ attr_reader :shipping_line
113
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
114
+ attr_reader :shipping_rate
115
+ sig { returns(T.nilable(String)) }
116
+ attr_reader :source_identifier
117
+ sig { returns(T.nilable(String)) }
118
+ attr_reader :source_name
119
+ sig { returns(T.nilable(String)) }
120
+ attr_reader :source_url
121
+ sig { returns(T.nilable(String)) }
122
+ attr_reader :subtotal_price
123
+ sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
124
+ attr_reader :tax_lines
125
+ sig { returns(T.nilable(T::Boolean)) }
126
+ attr_reader :taxes_included
127
+ sig { returns(T.nilable(String)) }
128
+ attr_reader :token
129
+ sig { returns(T.nilable(String)) }
130
+ attr_reader :total_price
131
+ sig { returns(T.nilable(String)) }
132
+ attr_reader :total_tax
133
+ sig { returns(T.nilable(String)) }
134
+ attr_reader :updated_at
135
+ sig { returns(T.nilable(Integer)) }
136
+ attr_reader :user_id
137
+ sig { returns(T.nilable(String)) }
138
+ attr_reader :web_url
139
+
140
+ class << self
141
+ sig do
142
+ returns(String)
143
+ end
144
+ def primary_key()
145
+ "token"
146
+ end
147
+
148
+ sig do
149
+ params(
150
+ token: T.any(Integer, String),
151
+ session: Auth::Session
152
+ ).returns(T.nilable(Checkout))
153
+ end
154
+ def find(
155
+ token:,
156
+ session: ShopifyAPI::Context.active_session
157
+ )
158
+ result = base_find(
159
+ session: session,
160
+ ids: {token: token},
161
+ params: {},
162
+ )
163
+ T.cast(result[0], T.nilable(Checkout))
164
+ end
165
+
166
+ sig do
167
+ params(
168
+ token: T.any(Integer, String),
169
+ session: Auth::Session,
170
+ kwargs: T.untyped
171
+ ).returns(T.untyped)
172
+ end
173
+ def shipping_rates(
174
+ token:,
175
+ session: ShopifyAPI::Context.active_session,
176
+ **kwargs
177
+ )
178
+ request(
179
+ http_method: :get,
180
+ operation: :shipping_rates,
181
+ session: session,
182
+ ids: {token: token},
183
+ params: {}.merge(kwargs).compact,
184
+ body: {},
185
+ entity: nil,
186
+ )
187
+ end
188
+
189
+ end
190
+
191
+ sig do
192
+ params(
193
+ body: T.untyped,
194
+ kwargs: T.untyped
195
+ ).returns(T.untyped)
196
+ end
197
+ def complete(
198
+ body: nil,
199
+ **kwargs
200
+ )
201
+ self.class.request(
202
+ http_method: :post,
203
+ operation: :complete,
204
+ session: @session,
205
+ ids: {token: @token},
206
+ params: {}.merge(kwargs).compact,
207
+ body: body,
208
+ entity: self,
209
+ )
210
+ end
211
+
212
+ end
213
+ end