shopify_api 12.5.0 → 13.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +2 -2
- data/lib/shopify_api/auth/oauth.rb +0 -2
- data/lib/shopify_api/clients/http_client.rb +13 -9
- data/lib/shopify_api/context.rb +4 -20
- data/lib/shopify_api/rest/base.rb +48 -14
- data/lib/shopify_api/rest/resources/2022_04/abandoned_checkout.rb +190 -0
- data/lib/shopify_api/rest/resources/2022_04/access_scope.rb +58 -0
- data/lib/shopify_api/rest/resources/2022_04/android_pay_key.rb +77 -0
- data/lib/shopify_api/rest/resources/2022_04/apple_pay_certificate.rb +105 -0
- data/lib/shopify_api/rest/resources/2022_04/application_charge.rb +109 -0
- data/lib/shopify_api/rest/resources/2022_04/application_credit.rb +92 -0
- data/lib/shopify_api/rest/resources/2022_04/article.rb +265 -0
- data/lib/shopify_api/rest/resources/2022_04/asset.rb +118 -0
- data/lib/shopify_api/rest/resources/2022_04/assigned_fulfillment_order.rb +86 -0
- data/lib/shopify_api/rest/resources/2022_04/balance.rb +50 -0
- data/lib/shopify_api/rest/resources/2022_04/blog.rb +162 -0
- data/lib/shopify_api/rest/resources/2022_04/cancellation_request.rb +83 -0
- data/lib/shopify_api/rest/resources/2022_04/carrier_service.rb +116 -0
- data/lib/shopify_api/rest/resources/2022_04/checkout.rb +209 -0
- data/lib/shopify_api/rest/resources/2022_04/collect.rb +142 -0
- data/lib/shopify_api/rest/resources/2022_04/collection.rb +110 -0
- data/lib/shopify_api/rest/resources/2022_04/collection_listing.rb +155 -0
- data/lib/shopify_api/rest/resources/2022_04/comment.rb +283 -0
- data/lib/shopify_api/rest/resources/2022_04/country.rb +137 -0
- data/lib/shopify_api/rest/resources/2022_04/currency.rb +57 -0
- data/lib/shopify_api/rest/resources/2022_04/custom_collection.rb +187 -0
- data/lib/shopify_api/rest/resources/2022_04/customer.rb +329 -0
- data/lib/shopify_api/rest/resources/2022_04/customer_address.rb +201 -0
- data/lib/shopify_api/rest/resources/2022_04/customer_saved_search.rb +169 -0
- data/lib/shopify_api/rest/resources/2022_04/deprecated_api_call.rb +57 -0
- data/lib/shopify_api/rest/resources/2022_04/discount_code.rb +222 -0
- data/lib/shopify_api/rest/resources/2022_04/dispute.rb +111 -0
- data/lib/shopify_api/rest/resources/2022_04/draft_order.rb +275 -0
- data/lib/shopify_api/rest/resources/2022_04/event.rb +148 -0
- data/lib/shopify_api/rest/resources/2022_04/fulfillment.rb +278 -0
- data/lib/shopify_api/rest/resources/2022_04/fulfillment_event.rb +166 -0
- data/lib/shopify_api/rest/resources/2022_04/fulfillment_order.rb +284 -0
- data/lib/shopify_api/rest/resources/2022_04/fulfillment_request.rb +87 -0
- data/lib/shopify_api/rest/resources/2022_04/fulfillment_service.rb +130 -0
- data/lib/shopify_api/rest/resources/2022_04/gift_card.rb +218 -0
- data/lib/shopify_api/rest/resources/2022_04/gift_card_adjustment.rb +118 -0
- data/lib/shopify_api/rest/resources/2022_04/image.rb +157 -0
- data/lib/shopify_api/rest/resources/2022_04/inventory_item.rb +108 -0
- data/lib/shopify_api/rest/resources/2022_04/inventory_level.rb +179 -0
- data/lib/shopify_api/rest/resources/2022_04/location.rb +167 -0
- data/lib/shopify_api/rest/resources/2022_04/locations_for_move.rb +56 -0
- data/lib/shopify_api/rest/resources/2022_04/marketing_event.rb +209 -0
- data/lib/shopify_api/rest/resources/2022_04/metafield.rb +344 -0
- data/lib/shopify_api/rest/resources/2022_04/mobile_platform_application.rb +110 -0
- data/lib/shopify_api/rest/resources/2022_04/order.rb +473 -0
- data/lib/shopify_api/rest/resources/2022_04/order_risk.rb +142 -0
- data/lib/shopify_api/rest/resources/2022_04/page.rb +194 -0
- data/lib/shopify_api/rest/resources/2022_04/payment.rb +140 -0
- data/lib/shopify_api/rest/resources/2022_04/payment_gateway.rb +143 -0
- data/lib/shopify_api/rest/resources/2022_04/payment_transaction.rb +107 -0
- data/lib/shopify_api/rest/resources/2022_04/payout.rb +97 -0
- data/lib/shopify_api/rest/resources/2022_04/policy.rb +69 -0
- data/lib/shopify_api/rest/resources/2022_04/price_rule.rb +223 -0
- data/lib/shopify_api/rest/resources/2022_04/product.rb +223 -0
- data/lib/shopify_api/rest/resources/2022_04/product_listing.rb +196 -0
- data/lib/shopify_api/rest/resources/2022_04/product_resource_feedback.rb +88 -0
- data/lib/shopify_api/rest/resources/2022_04/province.rb +132 -0
- data/lib/shopify_api/rest/resources/2022_04/recurring_application_charge.rb +172 -0
- data/lib/shopify_api/rest/resources/2022_04/redirect.rb +139 -0
- data/lib/shopify_api/rest/resources/2022_04/refund.rb +151 -0
- data/lib/shopify_api/rest/resources/2022_04/report.rb +121 -0
- data/lib/shopify_api/rest/resources/2022_04/resource_feedback.rb +73 -0
- data/lib/shopify_api/rest/resources/2022_04/script_tag.rb +155 -0
- data/lib/shopify_api/rest/resources/2022_04/shipping_zone.rb +83 -0
- data/lib/shopify_api/rest/resources/2022_04/shop.rb +218 -0
- data/lib/shopify_api/rest/resources/2022_04/smart_collection.rb +216 -0
- data/lib/shopify_api/rest/resources/2022_04/storefront_access_token.rb +87 -0
- data/lib/shopify_api/rest/resources/2022_04/tender_transaction.rb +93 -0
- data/lib/shopify_api/rest/resources/2022_04/theme.rb +123 -0
- data/lib/shopify_api/rest/resources/2022_04/transaction.rb +181 -0
- data/lib/shopify_api/rest/resources/2022_04/usage_charge.rb +102 -0
- data/lib/shopify_api/rest/resources/2022_04/user.rb +138 -0
- data/lib/shopify_api/rest/resources/2022_04/variant.rb +212 -0
- data/lib/shopify_api/rest/resources/2022_04/webhook.rb +168 -0
- data/lib/shopify_api/rest/resources/2022_07/application_credit.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/carrier_service.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_07/discount_code.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_07/dispute.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/draft_order.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/event.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/fulfillment.rb +6 -0
- data/lib/shopify_api/rest/resources/2022_07/gift_card.rb +8 -5
- data/lib/shopify_api/rest/resources/2022_07/order_risk.rb +9 -2
- data/lib/shopify_api/rest/resources/2022_07/shipping_zone.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/shop.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_07/theme.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_07/usage_charge.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/application_credit.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/carrier_service.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_10/discount_code.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_10/dispute.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/draft_order.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/event.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/fulfillment.rb +6 -0
- data/lib/shopify_api/rest/resources/2022_10/gift_card.rb +8 -5
- data/lib/shopify_api/rest/resources/2022_10/order_risk.rb +9 -2
- data/lib/shopify_api/rest/resources/2022_10/shipping_zone.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/shop.rb +2 -2
- data/lib/shopify_api/rest/resources/2022_10/theme.rb +3 -0
- data/lib/shopify_api/rest/resources/2022_10/usage_charge.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/application_credit.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/carrier_service.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_01/discount_code.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_01/dispute.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/draft_order.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/event.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/fulfillment.rb +6 -0
- data/lib/shopify_api/rest/resources/2023_01/gift_card.rb +8 -5
- data/lib/shopify_api/rest/resources/2023_01/order_risk.rb +9 -2
- data/lib/shopify_api/rest/resources/2023_01/shipping_zone.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/shop.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_01/theme.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_01/usage_charge.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/application_credit.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/carrier_service.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_04/discount_code.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_04/dispute.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/draft_order.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/event.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/fulfillment.rb +6 -0
- data/lib/shopify_api/rest/resources/2023_04/gift_card.rb +8 -5
- data/lib/shopify_api/rest/resources/2023_04/order_risk.rb +9 -2
- data/lib/shopify_api/rest/resources/2023_04/shipping_zone.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/shop.rb +2 -2
- data/lib/shopify_api/rest/resources/2023_04/theme.rb +3 -0
- data/lib/shopify_api/rest/resources/2023_04/usage_charge.rb +2 -2
- data/lib/shopify_api/utils/graphql_proxy.rb +3 -6
- data/lib/shopify_api/utils/session_utils.rb +0 -84
- data/lib/shopify_api/version.rb +1 -1
- data/lib/shopify_api/webhooks/registry.rb +1 -1
- metadata +77 -5
- data/lib/shopify_api/auth/file_session_storage.rb +0 -72
- data/lib/shopify_api/auth/session_storage.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d36c6512c91e12fdcc4d3f9ee1049241498e41b0406448d19cafb94d97d7c815
|
4
|
+
data.tar.gz: 9633547697ee1493db17837b28ea7e0b1e539d6d062e5066bd3f983fdaf4090f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8964e99218d49f9e0a9bd5e277ead941ad8252d59c59e97a2eba9234f7a7396d92a52628ac7268599f454c2c60cbb8f696d0501ea1e75c5c531b74d4708a28c0
|
7
|
+
data.tar.gz: 1d38649055c009278cabec33441525df0086a5fc078e2974da48d845d6f98014409d12068791cefa99c3ef5bc4a79f2012d60a514aeeba5db1a87e8ed1739070
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,13 @@ Note: For changes to the API, see https://shopify.dev/changelog?filter=api
|
|
4
4
|
|
5
5
|
## Unreleased
|
6
6
|
|
7
|
+
## 13.0.0
|
8
|
+
|
9
|
+
- [#1140](https://github.com/Shopify/shopify-api-ruby/pull/1140) ⚠️ [Breaking] Reformat Http error messages to be JSON parsable.
|
10
|
+
- [#1142](https://github.com/Shopify/shopify-api-ruby/issues/1142) Restore API version 2022-04, in alignment with [this](https://shopify.dev/changelog/action-required-support-for-api-version-2022-04-extended-to-june-30-2023) changelog notice.
|
11
|
+
- [#1155](https://github.com/Shopify/shopify-api-ruby/pull/1155) ⚠️ [Breaking] Remove session storage that was deprecated with [#1055](https://github.com/Shopify/shopify-api-ruby/pull/1055). ⚠️ [Breaking] GraphQL Proxy now requires `session` to be passed as an argument.
|
12
|
+
- [#1150](https://github.com/Shopify/shopify-api-ruby/pull/1150) [Patch] Add support for Event topic names.
|
13
|
+
|
7
14
|
## 12.5.0
|
8
15
|
|
9
16
|
- [#1113](https://github.com/Shopify/shopify-api-ruby/pull/1113) Handle JSON::ParserError when http response is HTML and raise ShopifyAPI::Errors::HttpResponseError
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify_api (
|
4
|
+
shopify_api (13.0.0)
|
5
5
|
activesupport
|
6
6
|
concurrent-ruby
|
7
7
|
hash_diff
|
@@ -36,7 +36,7 @@ GEM
|
|
36
36
|
httparty (0.21.0)
|
37
37
|
mini_mime (>= 1.0.0)
|
38
38
|
multi_xml (>= 0.5.2)
|
39
|
-
i18n (1.
|
39
|
+
i18n (1.13.0)
|
40
40
|
concurrent-ruby (~> 1.0)
|
41
41
|
json (2.6.2)
|
42
42
|
jwt (2.7.0)
|
@@ -65,15 +65,7 @@ module ShopifyAPI
|
|
65
65
|
|
66
66
|
break if response.ok?
|
67
67
|
|
68
|
-
|
69
|
-
error_messages << response.body["errors"] if response.body["errors"]
|
70
|
-
|
71
|
-
if response.headers["x-request-id"]
|
72
|
-
id = T.must(response.headers["x-request-id"])[0]
|
73
|
-
error_messages << "If you report this error, please include this id: #{id}."
|
74
|
-
end
|
75
|
-
|
76
|
-
error_message = error_messages.join("\n")
|
68
|
+
error_message = serialized_error(response)
|
77
69
|
|
78
70
|
unless [429, 500].include?(response.code)
|
79
71
|
raise ShopifyAPI::Errors::HttpResponseError.new(response: response), error_message
|
@@ -102,6 +94,18 @@ module ShopifyAPI
|
|
102
94
|
def request_url(request)
|
103
95
|
"#{@base_uri_and_path}/#{request.path}"
|
104
96
|
end
|
97
|
+
|
98
|
+
sig { params(response: HttpResponse).returns(String) }
|
99
|
+
def serialized_error(response)
|
100
|
+
body = {}
|
101
|
+
body["errors"] = response.body["errors"] if response.body["errors"]
|
102
|
+
|
103
|
+
if response.headers["x-request-id"]
|
104
|
+
id = T.must(response.headers["x-request-id"])[0]
|
105
|
+
body["error_reference"] = "If you report this error, please include this id: #{id}."
|
106
|
+
end
|
107
|
+
body.to_json
|
108
|
+
end
|
105
109
|
end
|
106
110
|
end
|
107
111
|
end
|
data/lib/shopify_api/context.rb
CHANGED
@@ -15,8 +15,7 @@ module ShopifyAPI
|
|
15
15
|
@logger = T.let(::Logger.new($stdout), ::Logger)
|
16
16
|
@log_level = T.let(:info, Symbol)
|
17
17
|
@notified_missing_resources_folder = T.let({}, T::Hash[String, T::Boolean])
|
18
|
-
@active_session = T.let(Concurrent::ThreadLocalVar.new { nil }, Concurrent::ThreadLocalVar)
|
19
|
-
@session_storage = T.let(nil, T.nilable(ShopifyAPI::Auth::SessionStorage))
|
18
|
+
@active_session = T.let(Concurrent::ThreadLocalVar.new { nil }, T.nilable(Concurrent::ThreadLocalVar))
|
20
19
|
@user_agent_prefix = T.let(nil, T.nilable(String))
|
21
20
|
@old_api_secret_key = T.let(nil, T.nilable(String))
|
22
21
|
|
@@ -35,7 +34,6 @@ module ShopifyAPI
|
|
35
34
|
is_embedded: T::Boolean,
|
36
35
|
log_level: T.any(String, Symbol),
|
37
36
|
logger: ::Logger,
|
38
|
-
session_storage: T.nilable(ShopifyAPI::Auth::SessionStorage),
|
39
37
|
host_name: T.nilable(String),
|
40
38
|
host: T.nilable(String),
|
41
39
|
private_shop: T.nilable(String),
|
@@ -52,7 +50,6 @@ module ShopifyAPI
|
|
52
50
|
is_embedded:,
|
53
51
|
log_level: :info,
|
54
52
|
logger: ::Logger.new($stdout),
|
55
|
-
session_storage: nil,
|
56
53
|
host_name: nil,
|
57
54
|
host: ENV["HOST"] || "https://#{host_name}",
|
58
55
|
private_shop: nil,
|
@@ -71,7 +68,6 @@ module ShopifyAPI
|
|
71
68
|
@is_private = is_private
|
72
69
|
@scope = Auth::AuthScopes.new(scope)
|
73
70
|
@is_embedded = is_embedded
|
74
|
-
@session_storage = session_storage
|
75
71
|
@logger = logger
|
76
72
|
@private_shop = private_shop
|
77
73
|
@user_agent_prefix = user_agent_prefix
|
@@ -82,13 +78,6 @@ module ShopifyAPI
|
|
82
78
|
:info
|
83
79
|
end
|
84
80
|
|
85
|
-
if @session_storage
|
86
|
-
::ShopifyAPI::Logger.deprecated("The use of SessionStorage in the API library has been deprecated. " \
|
87
|
-
"The ShopifyAPI will no longer have responsibility for session persistence. " \
|
88
|
-
"Upgrading to `shopify_app` 21.3 will allow you to remove session_storage" \
|
89
|
-
" from the API library Context configuration.", "13.0.0")
|
90
|
-
end
|
91
|
-
|
92
81
|
load_rest_resources(api_version: api_version)
|
93
82
|
end
|
94
83
|
|
@@ -126,9 +115,6 @@ module ShopifyAPI
|
|
126
115
|
sig { returns(Auth::AuthScopes) }
|
127
116
|
attr_reader :scope
|
128
117
|
|
129
|
-
sig { returns(T.nilable(ShopifyAPI::Auth::SessionStorage)) }
|
130
|
-
attr_reader :session_storage
|
131
|
-
|
132
118
|
sig { returns(::Logger) }
|
133
119
|
attr_reader :logger
|
134
120
|
|
@@ -155,19 +141,17 @@ module ShopifyAPI
|
|
155
141
|
|
156
142
|
sig { returns(T.nilable(Auth::Session)) }
|
157
143
|
def active_session
|
158
|
-
|
159
|
-
|
160
|
-
private? ? Utils::SessionUtils.load_current_session : nil
|
144
|
+
@active_session&.value
|
161
145
|
end
|
162
146
|
|
163
147
|
sig { params(session: T.nilable(Auth::Session)).void }
|
164
148
|
def activate_session(session)
|
165
|
-
@active_session.value = session
|
149
|
+
T.must(@active_session).value = session
|
166
150
|
end
|
167
151
|
|
168
152
|
sig { void }
|
169
153
|
def deactivate_session
|
170
|
-
@active_session.value = nil
|
154
|
+
T.must(@active_session).value = nil
|
171
155
|
end
|
172
156
|
|
173
157
|
sig { returns(String) }
|
@@ -21,7 +21,7 @@ module ShopifyAPI
|
|
21
21
|
sig { returns(T::Hash[Symbol, T.untyped]) }
|
22
22
|
attr_accessor :original_state
|
23
23
|
|
24
|
-
sig { returns(Rest::BaseErrors) }
|
24
|
+
sig { returns(T.any(Rest::BaseErrors, T.nilable(T::Hash[T.untyped, T.untyped]))) }
|
25
25
|
attr_reader :errors
|
26
26
|
|
27
27
|
sig do
|
@@ -234,16 +234,20 @@ module ShopifyAPI
|
|
234
234
|
attr_sym = attribute.to_sym
|
235
235
|
|
236
236
|
if has_many?(attr_sym) && value
|
237
|
+
instance.original_state[attr_sym] = []
|
237
238
|
attr_list = []
|
238
239
|
value.each do |element|
|
239
|
-
|
240
|
+
child = T.unsafe(@has_many[attr_sym]).create_instance(data: element, session: session)
|
241
|
+
attr_list << child
|
242
|
+
instance.original_state[attr_sym] << child.to_hash(true)
|
240
243
|
end
|
241
244
|
instance.public_send("#{attribute}=", attr_list)
|
242
245
|
elsif has_one?(attr_sym) && value
|
243
246
|
# force a hash if core returns values that instantiate objects like "USD"
|
244
247
|
data_hash = value.is_a?(Hash) ? value : { attribute.to_s => value }
|
245
|
-
|
246
|
-
|
248
|
+
child = T.unsafe(@has_one[attr_sym]).create_instance(data: data_hash, session: session)
|
249
|
+
instance.public_send("#{attribute}=", child)
|
250
|
+
instance.original_state[attr_sym] = child.to_hash(true)
|
247
251
|
else
|
248
252
|
instance.public_send("#{attribute}=", value)
|
249
253
|
instance.original_state[attr_sym] = value
|
@@ -335,16 +339,12 @@ module ShopifyAPI
|
|
335
339
|
|
336
340
|
sig { params(update_object: T::Boolean).void }
|
337
341
|
def save(update_object: false)
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
path = self.class.get_path(http_method: method, operation: method, entity: self)
|
345
|
-
end
|
346
|
-
|
347
|
-
response = @client.public_send(method, body: { self.class.json_body_name => hash }, path: path)
|
342
|
+
method = deduce_write_verb
|
343
|
+
response = @client.public_send(
|
344
|
+
method,
|
345
|
+
body: { self.class.json_body_name => attributes_to_update },
|
346
|
+
path: deduce_write_path(method),
|
347
|
+
)
|
348
348
|
|
349
349
|
if update_object
|
350
350
|
self.class.create_instance(
|
@@ -359,6 +359,40 @@ module ShopifyAPI
|
|
359
359
|
|
360
360
|
private
|
361
361
|
|
362
|
+
sig { returns(T::Hash[String, String]) }
|
363
|
+
def attributes_to_update
|
364
|
+
HashDiff::Comparison.new(
|
365
|
+
deep_stringify_keys(original_state),
|
366
|
+
deep_stringify_keys(to_hash(true)),
|
367
|
+
).left_diff
|
368
|
+
end
|
369
|
+
|
370
|
+
sig { returns(Symbol) }
|
371
|
+
def deduce_write_verb
|
372
|
+
send(self.class.primary_key) ? :put : :post
|
373
|
+
end
|
374
|
+
|
375
|
+
sig { params(method: Symbol).returns(T.nilable(String)) }
|
376
|
+
def deduce_write_path(method)
|
377
|
+
path = self.class.get_path(http_method: method, operation: method, entity: self)
|
378
|
+
|
379
|
+
if path.nil?
|
380
|
+
method = method == :post ? :put : :post
|
381
|
+
path = self.class.get_path(http_method: method, operation: method, entity: self)
|
382
|
+
end
|
383
|
+
|
384
|
+
path
|
385
|
+
end
|
386
|
+
|
387
|
+
sig { params(hash: T::Hash[T.any(String, Symbol), T.untyped]).returns(T::Hash[String, String]) }
|
388
|
+
def deep_stringify_keys(hash)
|
389
|
+
hash.each_with_object({}) do |(key, value), result|
|
390
|
+
new_key = key.to_s
|
391
|
+
new_value = value.is_a?(Hash) ? deep_stringify_keys(value) : value
|
392
|
+
result[new_key] = new_value
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
362
396
|
sig { params(key: T.any(String, Symbol), val: T.untyped).void }
|
363
397
|
def set_property(key, val)
|
364
398
|
# Some API fields contain invalid characters, like `?`, which causes issues when setting them as instance
|
@@ -0,0 +1,190 @@
|
|
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 AbandonedCheckout < 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
|
+
sig { params(session: T.nilable(ShopifyAPI::Auth::Session)).void }
|
16
|
+
def initialize(session: ShopifyAPI::Context.active_session)
|
17
|
+
super(session: session)
|
18
|
+
|
19
|
+
@abandoned_checkout_url = T.let(nil, T.nilable(String))
|
20
|
+
@billing_address = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
|
21
|
+
@buyer_accepts_marketing = T.let(nil, T.nilable(T::Boolean))
|
22
|
+
@buyer_accepts_sms_marketing = T.let(nil, T.nilable(T::Boolean))
|
23
|
+
@cart_token = T.let(nil, T.nilable(String))
|
24
|
+
@closed_at = T.let(nil, T.nilable(String))
|
25
|
+
@completed_at = T.let(nil, T.nilable(String))
|
26
|
+
@created_at = T.let(nil, T.nilable(String))
|
27
|
+
@currency = T.let(nil, T.nilable(Currency))
|
28
|
+
@customer = T.let(nil, T.nilable(Customer))
|
29
|
+
@customer_locale = T.let(nil, T.nilable(String))
|
30
|
+
@device_id = T.let(nil, T.nilable(Integer))
|
31
|
+
@discount_codes = T.let(nil, T.nilable(T::Array[T.untyped]))
|
32
|
+
@email = T.let(nil, T.nilable(String))
|
33
|
+
@gateway = T.let(nil, T.nilable(String))
|
34
|
+
@id = T.let(nil, T.nilable(Integer))
|
35
|
+
@landing_site = T.let(nil, T.nilable(String))
|
36
|
+
@line_items = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
|
37
|
+
@location_id = T.let(nil, T.nilable(Integer))
|
38
|
+
@note = T.let(nil, T.nilable(String))
|
39
|
+
@phone = T.let(nil, T.nilable(String))
|
40
|
+
@presentment_currency = T.let(nil, T.nilable(String))
|
41
|
+
@referring_site = T.let(nil, T.nilable(String))
|
42
|
+
@shipping_address = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
|
43
|
+
@shipping_lines = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
|
44
|
+
@sms_marketing_phone = T.let(nil, T.nilable(String))
|
45
|
+
@source_name = T.let(nil, T.nilable(String))
|
46
|
+
@subtotal_price = T.let(nil, T.nilable(String))
|
47
|
+
@tax_lines = T.let(nil, T.nilable(T::Hash[T.untyped, T.untyped]))
|
48
|
+
@taxes_included = T.let(nil, T.nilable(T::Boolean))
|
49
|
+
@token = T.let(nil, T.nilable(String))
|
50
|
+
@total_discounts = T.let(nil, T.nilable(String))
|
51
|
+
@total_duties = T.let(nil, T.nilable(String))
|
52
|
+
@total_line_items_price = T.let(nil, T.nilable(String))
|
53
|
+
@total_price = T.let(nil, T.nilable(String))
|
54
|
+
@total_tax = T.let(nil, T.nilable(String))
|
55
|
+
@total_weight = T.let(nil, T.nilable(Integer))
|
56
|
+
@updated_at = T.let(nil, T.nilable(String))
|
57
|
+
@user_id = T.let(nil, T.nilable(Integer))
|
58
|
+
end
|
59
|
+
|
60
|
+
@has_one = T.let({
|
61
|
+
currency: Currency,
|
62
|
+
customer: Customer
|
63
|
+
}, T::Hash[Symbol, Class])
|
64
|
+
@has_many = T.let({
|
65
|
+
discount_codes: DiscountCode
|
66
|
+
}, T::Hash[Symbol, Class])
|
67
|
+
@paths = T.let([
|
68
|
+
{http_method: :get, operation: :checkouts, ids: [], path: "checkouts.json"},
|
69
|
+
{http_method: :get, operation: :checkouts, ids: [], path: "checkouts.json"}
|
70
|
+
], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
|
71
|
+
|
72
|
+
sig { returns(T.nilable(String)) }
|
73
|
+
attr_reader :abandoned_checkout_url
|
74
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
75
|
+
attr_reader :billing_address
|
76
|
+
sig { returns(T.nilable(T::Boolean)) }
|
77
|
+
attr_reader :buyer_accepts_marketing
|
78
|
+
sig { returns(T.nilable(T::Boolean)) }
|
79
|
+
attr_reader :buyer_accepts_sms_marketing
|
80
|
+
sig { returns(T.nilable(String)) }
|
81
|
+
attr_reader :cart_token
|
82
|
+
sig { returns(T.nilable(String)) }
|
83
|
+
attr_reader :closed_at
|
84
|
+
sig { returns(T.nilable(String)) }
|
85
|
+
attr_reader :completed_at
|
86
|
+
sig { returns(T.nilable(String)) }
|
87
|
+
attr_reader :created_at
|
88
|
+
sig { returns(T.nilable(Currency)) }
|
89
|
+
attr_reader :currency
|
90
|
+
sig { returns(T.nilable(Customer)) }
|
91
|
+
attr_reader :customer
|
92
|
+
sig { returns(T.nilable(String)) }
|
93
|
+
attr_reader :customer_locale
|
94
|
+
sig { returns(T.nilable(Integer)) }
|
95
|
+
attr_reader :device_id
|
96
|
+
sig { returns(T.nilable(T::Array[DiscountCode])) }
|
97
|
+
attr_reader :discount_codes
|
98
|
+
sig { returns(T.nilable(String)) }
|
99
|
+
attr_reader :email
|
100
|
+
sig { returns(T.nilable(String)) }
|
101
|
+
attr_reader :gateway
|
102
|
+
sig { returns(T.nilable(Integer)) }
|
103
|
+
attr_reader :id
|
104
|
+
sig { returns(T.nilable(String)) }
|
105
|
+
attr_reader :landing_site
|
106
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
107
|
+
attr_reader :line_items
|
108
|
+
sig { returns(T.nilable(Integer)) }
|
109
|
+
attr_reader :location_id
|
110
|
+
sig { returns(T.nilable(String)) }
|
111
|
+
attr_reader :note
|
112
|
+
sig { returns(T.nilable(String)) }
|
113
|
+
attr_reader :phone
|
114
|
+
sig { returns(T.nilable(String)) }
|
115
|
+
attr_reader :presentment_currency
|
116
|
+
sig { returns(T.nilable(String)) }
|
117
|
+
attr_reader :referring_site
|
118
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
119
|
+
attr_reader :shipping_address
|
120
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
121
|
+
attr_reader :shipping_lines
|
122
|
+
sig { returns(T.nilable(String)) }
|
123
|
+
attr_reader :sms_marketing_phone
|
124
|
+
sig { returns(T.nilable(String)) }
|
125
|
+
attr_reader :source_name
|
126
|
+
sig { returns(T.nilable(String)) }
|
127
|
+
attr_reader :subtotal_price
|
128
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
129
|
+
attr_reader :tax_lines
|
130
|
+
sig { returns(T.nilable(T::Boolean)) }
|
131
|
+
attr_reader :taxes_included
|
132
|
+
sig { returns(T.nilable(String)) }
|
133
|
+
attr_reader :token
|
134
|
+
sig { returns(T.nilable(String)) }
|
135
|
+
attr_reader :total_discounts
|
136
|
+
sig { returns(T.nilable(String)) }
|
137
|
+
attr_reader :total_duties
|
138
|
+
sig { returns(T.nilable(String)) }
|
139
|
+
attr_reader :total_line_items_price
|
140
|
+
sig { returns(T.nilable(String)) }
|
141
|
+
attr_reader :total_price
|
142
|
+
sig { returns(T.nilable(String)) }
|
143
|
+
attr_reader :total_tax
|
144
|
+
sig { returns(T.nilable(Integer)) }
|
145
|
+
attr_reader :total_weight
|
146
|
+
sig { returns(T.nilable(String)) }
|
147
|
+
attr_reader :updated_at
|
148
|
+
sig { returns(T.nilable(Integer)) }
|
149
|
+
attr_reader :user_id
|
150
|
+
|
151
|
+
class << self
|
152
|
+
sig do
|
153
|
+
params(
|
154
|
+
since_id: T.untyped,
|
155
|
+
created_at_min: T.untyped,
|
156
|
+
created_at_max: T.untyped,
|
157
|
+
updated_at_min: T.untyped,
|
158
|
+
updated_at_max: T.untyped,
|
159
|
+
status: T.untyped,
|
160
|
+
limit: T.untyped,
|
161
|
+
session: Auth::Session,
|
162
|
+
kwargs: T.untyped
|
163
|
+
).returns(T.untyped)
|
164
|
+
end
|
165
|
+
def checkouts(
|
166
|
+
since_id: nil,
|
167
|
+
created_at_min: nil,
|
168
|
+
created_at_max: nil,
|
169
|
+
updated_at_min: nil,
|
170
|
+
updated_at_max: nil,
|
171
|
+
status: nil,
|
172
|
+
limit: nil,
|
173
|
+
session: ShopifyAPI::Context.active_session,
|
174
|
+
**kwargs
|
175
|
+
)
|
176
|
+
request(
|
177
|
+
http_method: :get,
|
178
|
+
operation: :checkouts,
|
179
|
+
session: session,
|
180
|
+
ids: {},
|
181
|
+
params: {since_id: since_id, created_at_min: created_at_min, created_at_max: created_at_max, updated_at_min: updated_at_min, updated_at_max: updated_at_max, status: status, limit: limit}.merge(kwargs).compact,
|
182
|
+
body: {},
|
183
|
+
entity: nil,
|
184
|
+
)
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
end
|
@@ -0,0 +1,58 @@
|
|
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 AccessScope < 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
|
+
sig { params(session: T.nilable(ShopifyAPI::Auth::Session)).void }
|
16
|
+
def initialize(session: ShopifyAPI::Context.active_session)
|
17
|
+
super(session: session)
|
18
|
+
|
19
|
+
@handle = T.let(nil, T.nilable(String))
|
20
|
+
@access_scopes = T.let(nil, T.nilable(T::Array[T.untyped]))
|
21
|
+
end
|
22
|
+
|
23
|
+
@has_one = T.let({}, T::Hash[Symbol, Class])
|
24
|
+
@has_many = T.let({}, T::Hash[Symbol, Class])
|
25
|
+
@custom_prefix = T.let("/admin/oauth", T.nilable(String))
|
26
|
+
@paths = T.let([
|
27
|
+
{http_method: :get, operation: :get, ids: [], path: "access_scopes.json"}
|
28
|
+
], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
|
29
|
+
|
30
|
+
sig { returns(T.nilable(String)) }
|
31
|
+
attr_reader :handle
|
32
|
+
sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
|
33
|
+
attr_reader :access_scopes
|
34
|
+
|
35
|
+
class << self
|
36
|
+
sig do
|
37
|
+
params(
|
38
|
+
session: Auth::Session,
|
39
|
+
kwargs: T.untyped
|
40
|
+
).returns(T::Array[AccessScope])
|
41
|
+
end
|
42
|
+
def all(
|
43
|
+
session: ShopifyAPI::Context.active_session,
|
44
|
+
**kwargs
|
45
|
+
)
|
46
|
+
response = base_find(
|
47
|
+
session: session,
|
48
|
+
ids: {},
|
49
|
+
params: {}.merge(kwargs).compact,
|
50
|
+
)
|
51
|
+
|
52
|
+
T.cast(response, T::Array[AccessScope])
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,77 @@
|
|
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 AndroidPayKey < 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
|
+
sig { params(session: T.nilable(ShopifyAPI::Auth::Session)).void }
|
16
|
+
def initialize(session: ShopifyAPI::Context.active_session)
|
17
|
+
super(session: session)
|
18
|
+
|
19
|
+
@id = T.let(nil, T.nilable(Integer))
|
20
|
+
@public_key = T.let(nil, T.nilable(String))
|
21
|
+
end
|
22
|
+
|
23
|
+
@has_one = T.let({}, T::Hash[Symbol, Class])
|
24
|
+
@has_many = T.let({}, T::Hash[Symbol, Class])
|
25
|
+
@paths = T.let([
|
26
|
+
{http_method: :delete, operation: :delete, ids: [:id], path: "android_pay_keys/<id>.json"},
|
27
|
+
{http_method: :get, operation: :get, ids: [:id], path: "android_pay_keys/<id>.json"},
|
28
|
+
{http_method: :post, operation: :post, ids: [], path: "android_pay_keys.json"}
|
29
|
+
], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
|
30
|
+
|
31
|
+
sig { returns(T.nilable(Integer)) }
|
32
|
+
attr_reader :id
|
33
|
+
sig { returns(T.nilable(String)) }
|
34
|
+
attr_reader :public_key
|
35
|
+
|
36
|
+
class << self
|
37
|
+
sig do
|
38
|
+
params(
|
39
|
+
id: T.any(Integer, String),
|
40
|
+
session: Auth::Session
|
41
|
+
).returns(T.nilable(AndroidPayKey))
|
42
|
+
end
|
43
|
+
def find(
|
44
|
+
id:,
|
45
|
+
session: ShopifyAPI::Context.active_session
|
46
|
+
)
|
47
|
+
result = base_find(
|
48
|
+
session: session,
|
49
|
+
ids: {id: id},
|
50
|
+
params: {},
|
51
|
+
)
|
52
|
+
T.cast(result[0], T.nilable(AndroidPayKey))
|
53
|
+
end
|
54
|
+
|
55
|
+
sig do
|
56
|
+
params(
|
57
|
+
id: T.any(Integer, String),
|
58
|
+
session: Auth::Session
|
59
|
+
).returns(T.untyped)
|
60
|
+
end
|
61
|
+
def delete(
|
62
|
+
id:,
|
63
|
+
session: ShopifyAPI::Context.active_session
|
64
|
+
)
|
65
|
+
request(
|
66
|
+
http_method: :delete,
|
67
|
+
operation: :delete,
|
68
|
+
session: session,
|
69
|
+
ids: {id: id},
|
70
|
+
params: {},
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|