shopify_api 14.8.0 → 14.9.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/close-waiting-for-response-issues.yml +2 -2
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +8 -0
  5. data/Gemfile.lock +1 -1
  6. data/docs/usage/graphql_storefront.md +1 -1
  7. data/docs/usage/oauth.md +41 -4
  8. data/lib/shopify_api/admin_versions.rb +5 -1
  9. data/lib/shopify_api/auth/client_credentials.rb +52 -0
  10. data/lib/shopify_api/auth/jwt_payload.rb +18 -15
  11. data/lib/shopify_api/auth/oauth.rb +15 -1
  12. data/lib/shopify_api/auth/session.rb +4 -1
  13. data/lib/shopify_api/clients/http_client.rb +26 -1
  14. data/lib/shopify_api/context.rb +3 -2
  15. data/lib/shopify_api/rest/resources/2025_04/abandoned_checkout.rb +194 -0
  16. data/lib/shopify_api/rest/resources/2025_04/access_scope.rb +62 -0
  17. data/lib/shopify_api/rest/resources/2025_04/apple_pay_certificate.rb +109 -0
  18. data/lib/shopify_api/rest/resources/2025_04/application_charge.rb +113 -0
  19. data/lib/shopify_api/rest/resources/2025_04/application_credit.rb +95 -0
  20. data/lib/shopify_api/rest/resources/2025_04/article.rb +269 -0
  21. data/lib/shopify_api/rest/resources/2025_04/asset.rb +122 -0
  22. data/lib/shopify_api/rest/resources/2025_04/assigned_fulfillment_order.rb +92 -0
  23. data/lib/shopify_api/rest/resources/2025_04/balance.rb +58 -0
  24. data/lib/shopify_api/rest/resources/2025_04/blog.rb +166 -0
  25. data/lib/shopify_api/rest/resources/2025_04/cancellation_request.rb +87 -0
  26. data/lib/shopify_api/rest/resources/2025_04/carrier_service.rb +120 -0
  27. data/lib/shopify_api/rest/resources/2025_04/checkout.rb +213 -0
  28. data/lib/shopify_api/rest/resources/2025_04/collect.rb +146 -0
  29. data/lib/shopify_api/rest/resources/2025_04/collection.rb +114 -0
  30. data/lib/shopify_api/rest/resources/2025_04/collection_listing.rb +159 -0
  31. data/lib/shopify_api/rest/resources/2025_04/comment.rb +287 -0
  32. data/lib/shopify_api/rest/resources/2025_04/country.rb +141 -0
  33. data/lib/shopify_api/rest/resources/2025_04/currency.rb +61 -0
  34. data/lib/shopify_api/rest/resources/2025_04/custom_collection.rb +191 -0
  35. data/lib/shopify_api/rest/resources/2025_04/customer.rb +328 -0
  36. data/lib/shopify_api/rest/resources/2025_04/customer_address.rb +215 -0
  37. data/lib/shopify_api/rest/resources/2025_04/deprecated_api_call.rb +61 -0
  38. data/lib/shopify_api/rest/resources/2025_04/discount_code.rb +226 -0
  39. data/lib/shopify_api/rest/resources/2025_04/dispute.rb +115 -0
  40. data/lib/shopify_api/rest/resources/2025_04/dispute_evidence.rb +121 -0
  41. data/lib/shopify_api/rest/resources/2025_04/dispute_file_upload.rb +85 -0
  42. data/lib/shopify_api/rest/resources/2025_04/draft_order.rb +279 -0
  43. data/lib/shopify_api/rest/resources/2025_04/event.rb +152 -0
  44. data/lib/shopify_api/rest/resources/2025_04/fulfillment.rb +235 -0
  45. data/lib/shopify_api/rest/resources/2025_04/fulfillment_event.rb +167 -0
  46. data/lib/shopify_api/rest/resources/2025_04/fulfillment_order.rb +326 -0
  47. data/lib/shopify_api/rest/resources/2025_04/fulfillment_request.rb +116 -0
  48. data/lib/shopify_api/rest/resources/2025_04/fulfillment_service.rb +134 -0
  49. data/lib/shopify_api/rest/resources/2025_04/gift_card.rb +222 -0
  50. data/lib/shopify_api/rest/resources/2025_04/gift_card_adjustment.rb +122 -0
  51. data/lib/shopify_api/rest/resources/2025_04/image.rb +161 -0
  52. data/lib/shopify_api/rest/resources/2025_04/inventory_item.rb +112 -0
  53. data/lib/shopify_api/rest/resources/2025_04/inventory_level.rb +183 -0
  54. data/lib/shopify_api/rest/resources/2025_04/location.rb +171 -0
  55. data/lib/shopify_api/rest/resources/2025_04/locations_for_move.rb +60 -0
  56. data/lib/shopify_api/rest/resources/2025_04/marketing_event.rb +213 -0
  57. data/lib/shopify_api/rest/resources/2025_04/metafield.rb +348 -0
  58. data/lib/shopify_api/rest/resources/2025_04/mobile_platform_application.rb +120 -0
  59. data/lib/shopify_api/rest/resources/2025_04/order.rb +503 -0
  60. data/lib/shopify_api/rest/resources/2025_04/order_risk.rb +148 -0
  61. data/lib/shopify_api/rest/resources/2025_04/page.rb +198 -0
  62. data/lib/shopify_api/rest/resources/2025_04/payment.rb +98 -0
  63. data/lib/shopify_api/rest/resources/2025_04/payment_gateway.rb +147 -0
  64. data/lib/shopify_api/rest/resources/2025_04/payment_transaction.rb +117 -0
  65. data/lib/shopify_api/rest/resources/2025_04/payout.rb +101 -0
  66. data/lib/shopify_api/rest/resources/2025_04/policy.rb +73 -0
  67. data/lib/shopify_api/rest/resources/2025_04/price_rule.rb +227 -0
  68. data/lib/shopify_api/rest/resources/2025_04/product.rb +227 -0
  69. data/lib/shopify_api/rest/resources/2025_04/product_listing.rb +200 -0
  70. data/lib/shopify_api/rest/resources/2025_04/product_resource_feedback.rb +92 -0
  71. data/lib/shopify_api/rest/resources/2025_04/province.rb +136 -0
  72. data/lib/shopify_api/rest/resources/2025_04/recurring_application_charge.rb +184 -0
  73. data/lib/shopify_api/rest/resources/2025_04/redirect.rb +143 -0
  74. data/lib/shopify_api/rest/resources/2025_04/refund.rb +158 -0
  75. data/lib/shopify_api/rest/resources/2025_04/resource_feedback.rb +77 -0
  76. data/lib/shopify_api/rest/resources/2025_04/script_tag.rb +159 -0
  77. data/lib/shopify_api/rest/resources/2025_04/shipping_zone.rb +87 -0
  78. data/lib/shopify_api/rest/resources/2025_04/shop.rb +231 -0
  79. data/lib/shopify_api/rest/resources/2025_04/smart_collection.rb +220 -0
  80. data/lib/shopify_api/rest/resources/2025_04/storefront_access_token.rb +91 -0
  81. data/lib/shopify_api/rest/resources/2025_04/tender_transaction.rb +97 -0
  82. data/lib/shopify_api/rest/resources/2025_04/theme.rb +127 -0
  83. data/lib/shopify_api/rest/resources/2025_04/transaction.rb +194 -0
  84. data/lib/shopify_api/rest/resources/2025_04/usage_charge.rb +106 -0
  85. data/lib/shopify_api/rest/resources/2025_04/user.rb +142 -0
  86. data/lib/shopify_api/rest/resources/2025_04/variant.rb +212 -0
  87. data/lib/shopify_api/rest/resources/2025_04/webhook.rb +173 -0
  88. data/lib/shopify_api/utils/session_utils.rb +1 -1
  89. data/lib/shopify_api/version.rb +1 -1
  90. metadata +77 -3
@@ -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
@@ -0,0 +1,146 @@
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 Collect < 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
+ @collection_id = T.let(nil, T.nilable(Integer))
22
+ @created_at = T.let(nil, T.nilable(String))
23
+ @id = T.let(nil, T.nilable(Integer))
24
+ @position = T.let(nil, T.nilable(Integer))
25
+ @product_id = T.let(nil, T.nilable(Integer))
26
+ @sort_value = T.let(nil, T.nilable(String))
27
+ @updated_at = T.let(nil, T.nilable(String))
28
+
29
+ super(session: session, from_hash: from_hash)
30
+ end
31
+
32
+ @has_one = T.let({}, T::Hash[Symbol, Class])
33
+ @has_many = T.let({}, T::Hash[Symbol, Class])
34
+ @paths = T.let([
35
+ {http_method: :delete, operation: :delete, ids: [:id], path: "collects/<id>.json"},
36
+ {http_method: :get, operation: :count, ids: [], path: "collects/count.json"},
37
+ {http_method: :get, operation: :get, ids: [], path: "collects.json"},
38
+ {http_method: :get, operation: :get, ids: [:id], path: "collects/<id>.json"},
39
+ {http_method: :post, operation: :post, ids: [], path: "collects.json"}
40
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
41
+
42
+ sig { returns(T.nilable(Integer)) }
43
+ attr_reader :collection_id
44
+ sig { returns(T.nilable(String)) }
45
+ attr_reader :created_at
46
+ sig { returns(T.nilable(Integer)) }
47
+ attr_reader :id
48
+ sig { returns(T.nilable(Integer)) }
49
+ attr_reader :position
50
+ sig { returns(T.nilable(Integer)) }
51
+ attr_reader :product_id
52
+ sig { returns(T.nilable(String)) }
53
+ attr_reader :sort_value
54
+ sig { returns(T.nilable(String)) }
55
+ attr_reader :updated_at
56
+
57
+ class << self
58
+ sig do
59
+ params(
60
+ id: T.any(Integer, String),
61
+ fields: T.untyped,
62
+ session: Auth::Session
63
+ ).returns(T.nilable(Collect))
64
+ end
65
+ def find(
66
+ id:,
67
+ fields: nil,
68
+ session: ShopifyAPI::Context.active_session
69
+ )
70
+ result = base_find(
71
+ session: session,
72
+ ids: {id: id},
73
+ params: {fields: fields},
74
+ )
75
+ T.cast(result[0], T.nilable(Collect))
76
+ end
77
+
78
+ sig do
79
+ params(
80
+ id: T.any(Integer, String),
81
+ session: Auth::Session
82
+ ).returns(T.untyped)
83
+ end
84
+ def delete(
85
+ id:,
86
+ session: ShopifyAPI::Context.active_session
87
+ )
88
+ request(
89
+ http_method: :delete,
90
+ operation: :delete,
91
+ session: session,
92
+ ids: {id: id},
93
+ params: {},
94
+ )
95
+ end
96
+
97
+ sig do
98
+ params(
99
+ limit: T.untyped,
100
+ since_id: T.untyped,
101
+ fields: T.untyped,
102
+ session: Auth::Session,
103
+ kwargs: T.untyped
104
+ ).returns(T::Array[Collect])
105
+ end
106
+ def all(
107
+ limit: nil,
108
+ since_id: nil,
109
+ fields: nil,
110
+ session: ShopifyAPI::Context.active_session,
111
+ **kwargs
112
+ )
113
+ response = base_find(
114
+ session: session,
115
+ ids: {},
116
+ params: {limit: limit, since_id: since_id, fields: fields}.merge(kwargs).compact,
117
+ )
118
+
119
+ T.cast(response, T::Array[Collect])
120
+ end
121
+
122
+ sig do
123
+ params(
124
+ session: Auth::Session,
125
+ kwargs: T.untyped
126
+ ).returns(T.untyped)
127
+ end
128
+ def count(
129
+ session: ShopifyAPI::Context.active_session,
130
+ **kwargs
131
+ )
132
+ request(
133
+ http_method: :get,
134
+ operation: :count,
135
+ session: session,
136
+ ids: {},
137
+ params: {}.merge(kwargs).compact,
138
+ body: {},
139
+ entity: nil,
140
+ )
141
+ end
142
+
143
+ end
144
+
145
+ end
146
+ end
@@ -0,0 +1,114 @@
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 Collection < 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
+ @title = T.let(nil, T.nilable(String))
22
+ @body_html = T.let(nil, T.nilable(String))
23
+ @handle = T.let(nil, T.nilable(String))
24
+ @id = T.let(nil, T.nilable(Integer))
25
+ @image = T.let(nil, T.nilable(Image))
26
+ @published_at = T.let(nil, T.nilable(String))
27
+ @published_scope = T.let(nil, T.nilable(String))
28
+ @sort_order = T.let(nil, T.nilable(String))
29
+ @template_suffix = T.let(nil, T.nilable(String))
30
+ @updated_at = T.let(nil, T.nilable(String))
31
+
32
+ super(session: session, from_hash: from_hash)
33
+ end
34
+
35
+ @has_one = T.let({
36
+ image: Image
37
+ }, T::Hash[Symbol, Class])
38
+ @has_many = T.let({}, T::Hash[Symbol, Class])
39
+ @paths = T.let([
40
+ {http_method: :get, operation: :get, ids: [:id], path: "collections/<id>.json"},
41
+ {http_method: :get, operation: :products, ids: [:id], path: "collections/<id>/products.json"}
42
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
43
+
44
+ sig { returns(T.nilable(String)) }
45
+ attr_reader :title
46
+ sig { returns(T.nilable(String)) }
47
+ attr_reader :body_html
48
+ sig { returns(T.nilable(String)) }
49
+ attr_reader :handle
50
+ sig { returns(T.nilable(Integer)) }
51
+ attr_reader :id
52
+ sig { returns(T.nilable(Image)) }
53
+ attr_reader :image
54
+ sig { returns(T.nilable(String)) }
55
+ attr_reader :published_at
56
+ sig { returns(T.nilable(String)) }
57
+ attr_reader :published_scope
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :sort_order
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :template_suffix
62
+ sig { returns(T.nilable(String)) }
63
+ attr_reader :updated_at
64
+
65
+ class << self
66
+ sig do
67
+ params(
68
+ id: T.any(Integer, String),
69
+ fields: T.untyped,
70
+ session: Auth::Session
71
+ ).returns(T.nilable(Collection))
72
+ end
73
+ def find(
74
+ id:,
75
+ fields: nil,
76
+ session: ShopifyAPI::Context.active_session
77
+ )
78
+ result = base_find(
79
+ session: session,
80
+ ids: {id: id},
81
+ params: {fields: fields},
82
+ )
83
+ T.cast(result[0], T.nilable(Collection))
84
+ end
85
+
86
+ sig do
87
+ params(
88
+ id: T.any(Integer, String),
89
+ limit: T.untyped,
90
+ session: Auth::Session,
91
+ kwargs: T.untyped
92
+ ).returns(T.untyped)
93
+ end
94
+ def products(
95
+ id:,
96
+ limit: nil,
97
+ session: ShopifyAPI::Context.active_session,
98
+ **kwargs
99
+ )
100
+ request(
101
+ http_method: :get,
102
+ operation: :products,
103
+ session: session,
104
+ ids: {id: id},
105
+ params: {limit: limit}.merge(kwargs).compact,
106
+ body: {},
107
+ entity: nil,
108
+ )
109
+ end
110
+
111
+ end
112
+
113
+ end
114
+ end
@@ -0,0 +1,159 @@
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 CollectionListing < 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
+ @body_html = T.let(nil, T.nilable(String))
22
+ @collection_id = T.let(nil, T.nilable(Integer))
23
+ @default_product_image = T.let(nil, T.nilable(T::Array[T.untyped]))
24
+ @handle = T.let(nil, T.nilable(String))
25
+ @image = T.let(nil, T.nilable(Image))
26
+ @published_at = T.let(nil, T.nilable(String))
27
+ @sort_order = T.let(nil, T.nilable(String))
28
+ @title = T.let(nil, T.nilable(String))
29
+ @updated_at = T.let(nil, T.nilable(String))
30
+
31
+ super(session: session, from_hash: from_hash)
32
+ end
33
+
34
+ @has_one = T.let({
35
+ image: Image
36
+ }, T::Hash[Symbol, Class])
37
+ @has_many = T.let({}, T::Hash[Symbol, Class])
38
+ @paths = T.let([
39
+ {http_method: :delete, operation: :delete, ids: [:collection_id], path: "collection_listings/<collection_id>.json"},
40
+ {http_method: :get, operation: :get, ids: [], path: "collection_listings.json"},
41
+ {http_method: :get, operation: :get, ids: [:collection_id], path: "collection_listings/<collection_id>.json"},
42
+ {http_method: :get, operation: :product_ids, ids: [:collection_id], path: "collection_listings/<collection_id>/product_ids.json"},
43
+ {http_method: :put, operation: :put, ids: [:collection_id], path: "collection_listings/<collection_id>.json"}
44
+ ], T::Array[T::Hash[String, T.any(T::Array[Symbol], String, Symbol)]])
45
+
46
+ sig { returns(T.nilable(String)) }
47
+ attr_reader :body_html
48
+ sig { returns(T.nilable(Integer)) }
49
+ attr_reader :collection_id
50
+ sig { returns(T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])) }
51
+ attr_reader :default_product_image
52
+ sig { returns(T.nilable(String)) }
53
+ attr_reader :handle
54
+ sig { returns(T.nilable(Image)) }
55
+ attr_reader :image
56
+ sig { returns(T.nilable(String)) }
57
+ attr_reader :published_at
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :sort_order
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :title
62
+ sig { returns(T.nilable(String)) }
63
+ attr_reader :updated_at
64
+
65
+ class << self
66
+ sig do
67
+ returns(String)
68
+ end
69
+ def primary_key()
70
+ "collection_id"
71
+ end
72
+
73
+ sig do
74
+ params(
75
+ collection_id: T.any(Integer, String),
76
+ session: Auth::Session
77
+ ).returns(T.nilable(CollectionListing))
78
+ end
79
+ def find(
80
+ collection_id:,
81
+ session: ShopifyAPI::Context.active_session
82
+ )
83
+ result = base_find(
84
+ session: session,
85
+ ids: {collection_id: collection_id},
86
+ params: {},
87
+ )
88
+ T.cast(result[0], T.nilable(CollectionListing))
89
+ end
90
+
91
+ sig do
92
+ params(
93
+ collection_id: T.any(Integer, String),
94
+ session: Auth::Session
95
+ ).returns(T.untyped)
96
+ end
97
+ def delete(
98
+ collection_id:,
99
+ session: ShopifyAPI::Context.active_session
100
+ )
101
+ request(
102
+ http_method: :delete,
103
+ operation: :delete,
104
+ session: session,
105
+ ids: {collection_id: collection_id},
106
+ params: {},
107
+ )
108
+ end
109
+
110
+ sig do
111
+ params(
112
+ limit: T.untyped,
113
+ session: Auth::Session,
114
+ kwargs: T.untyped
115
+ ).returns(T::Array[CollectionListing])
116
+ end
117
+ def all(
118
+ limit: nil,
119
+ session: ShopifyAPI::Context.active_session,
120
+ **kwargs
121
+ )
122
+ response = base_find(
123
+ session: session,
124
+ ids: {},
125
+ params: {limit: limit}.merge(kwargs).compact,
126
+ )
127
+
128
+ T.cast(response, T::Array[CollectionListing])
129
+ end
130
+
131
+ sig do
132
+ params(
133
+ collection_id: T.any(Integer, String),
134
+ limit: T.untyped,
135
+ session: Auth::Session,
136
+ kwargs: T.untyped
137
+ ).returns(T.untyped)
138
+ end
139
+ def product_ids(
140
+ collection_id:,
141
+ limit: nil,
142
+ session: ShopifyAPI::Context.active_session,
143
+ **kwargs
144
+ )
145
+ request(
146
+ http_method: :get,
147
+ operation: :product_ids,
148
+ session: session,
149
+ ids: {collection_id: collection_id},
150
+ params: {limit: limit}.merge(kwargs).compact,
151
+ body: {},
152
+ entity: nil,
153
+ )
154
+ end
155
+
156
+ end
157
+
158
+ end
159
+ end