spree_api 5.4.0.beta8 → 5.4.0.beta10

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +17 -0
  3. data/app/controllers/concerns/spree/api/v3/error_handler.rb +1 -0
  4. data/app/controllers/concerns/spree/api/v3/http_caching.rb +1 -1
  5. data/app/controllers/concerns/spree/api/v3/store/search_provider_support.rb +27 -0
  6. data/app/controllers/spree/api/v3/store/auth_controller.rb +62 -19
  7. data/app/controllers/spree/api/v3/store/carts/{shipments_controller.rb → fulfillments_controller.rb} +13 -13
  8. data/app/controllers/spree/api/v3/store/carts_controller.rb +9 -7
  9. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +2 -2
  10. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +2 -0
  11. data/app/controllers/spree/api/v3/store/customers_controller.rb +6 -2
  12. data/app/controllers/spree/api/v3/store/products/filters_controller.rb +14 -10
  13. data/app/controllers/spree/api/v3/store/products_controller.rb +16 -36
  14. data/app/serializers/spree/api/v3/address_serializer.rb +4 -4
  15. data/app/serializers/spree/api/v3/admin/address_serializer.rb +2 -2
  16. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +2 -2
  17. data/app/serializers/spree/api/v3/admin/{shipping_method_serializer.rb → delivery_method_serializer.rb} +1 -1
  18. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +11 -0
  19. data/app/serializers/spree/api/v3/admin/{order_promotion_serializer.rb → discount_serializer.rb} +1 -1
  20. data/app/serializers/spree/api/v3/admin/{shipment_serializer.rb → fulfillment_serializer.rb} +3 -3
  21. data/app/serializers/spree/api/v3/admin/order_serializer.rb +8 -7
  22. data/app/serializers/spree/api/v3/admin/product_serializer.rb +0 -5
  23. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +2 -2
  24. data/app/serializers/spree/api/v3/cart_serializer.rb +19 -12
  25. data/app/serializers/spree/api/v3/credit_card_serializer.rb +4 -3
  26. data/app/serializers/spree/api/v3/{shipping_method_serializer.rb → delivery_method_serializer.rb} +1 -1
  27. data/app/serializers/spree/api/v3/{shipping_rate_serializer.rb → delivery_rate_serializer.rb} +4 -4
  28. data/app/serializers/spree/api/v3/{cart_promotion_serializer.rb → discount_serializer.rb} +5 -5
  29. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +45 -0
  30. data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
  31. data/app/serializers/spree/api/v3/line_item_serializer.rb +2 -2
  32. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -2
  33. data/app/serializers/spree/api/v3/option_type_serializer.rb +2 -2
  34. data/app/serializers/spree/api/v3/option_value_serializer.rb +5 -5
  35. data/app/serializers/spree/api/v3/order_serializer.rb +15 -13
  36. data/app/serializers/spree/api/v3/payment_serializer.rb +6 -2
  37. data/app/serializers/spree/api/v3/payment_source_serializer.rb +1 -3
  38. data/app/serializers/spree/api/v3/product_serializer.rb +0 -5
  39. data/app/serializers/spree/api/v3/promotion_serializer.rb +4 -16
  40. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +2 -2
  41. data/app/serializers/spree/api/v3/variant_serializer.rb +2 -2
  42. data/app/serializers/spree/api/v3/{wished_item_serializer.rb → wishlist_item_serializer.rb} +1 -1
  43. data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
  44. data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
  45. data/config/initializers/typelizer.rb +13 -1
  46. data/config/routes.rb +2 -1
  47. data/lib/spree/api/configuration.rb +1 -0
  48. data/lib/spree/api/dependencies.rb +16 -10
  49. data/lib/spree/api/openapi/schema_helper.rb +31 -1
  50. metadata +17 -17
  51. data/app/serializers/spree/api/v3/admin/shipping_rate_serializer.rb +0 -11
  52. data/app/serializers/spree/api/v3/order_promotion_serializer.rb +0 -16
  53. data/app/serializers/spree/api/v3/shipment_serializer.rb +0 -19
@@ -81,9 +81,10 @@ module Spree
81
81
  type: :object,
82
82
  properties: {
83
83
  token: { type: :string, description: 'JWT access token' },
84
+ refresh_token: { type: :string, description: 'Refresh token for obtaining new access tokens' },
84
85
  user: { '$ref' => '#/components/schemas/Customer' }
85
86
  },
86
- required: %w[token user]
87
+ required: %w[token refresh_token user]
87
88
  },
88
89
  CheckoutRequirement: {
89
90
  type: :object,
@@ -93,6 +94,16 @@ module Spree
93
94
  message: { type: :string, description: 'Human-readable requirement message', example: 'Add a payment method' }
94
95
  },
95
96
  required: %w[step field message]
97
+ },
98
+ FulfillmentManifestItem: {
99
+ type: :object,
100
+ description: 'An item within a fulfillment — which line item and how many units are in this fulfillment',
101
+ properties: {
102
+ item_id: { type: :string, description: 'Line item prefixed ID', example: 'li_abc123' },
103
+ variant_id: { type: :string, description: 'Variant prefixed ID', example: 'variant_abc123' },
104
+ quantity: { type: :integer, description: 'Quantity in this fulfillment', example: 2 }
105
+ },
106
+ required: %w[item_id variant_id quantity]
96
107
  }
97
108
  }
98
109
  end
@@ -120,6 +131,7 @@ module Spree
120
131
  strip_null_from_enums(s)
121
132
  end
122
133
  patch_cart_schema(schemas)
134
+ patch_fulfillment_schema(schemas)
123
135
  schemas
124
136
  end
125
137
  end
@@ -142,6 +154,24 @@ module Spree
142
154
  end
143
155
  end
144
156
 
157
+ # Typelizer cannot represent Array<{...}> inline object types in OpenAPI,
158
+ # so we patch Fulfillment#items to reference the FulfillmentManifestItem component schema.
159
+ def patch_fulfillment_schema(schemas)
160
+ fulfillment = schemas['Fulfillment'] || schemas[:Fulfillment]
161
+ return unless fulfillment
162
+
163
+ props = fulfillment[:properties]
164
+ return unless props
165
+
166
+ items_key = props.key?('items') ? 'items' : :items
167
+ if props[items_key]
168
+ props[items_key] = {
169
+ type: :array,
170
+ items: { '$ref' => '#/components/schemas/FulfillmentManifestItem' }
171
+ }
172
+ end
173
+ end
174
+
145
175
  # Typelizer adds nil to enum arrays for nullable fields.
146
176
  # OpenAPI 3.0 handles nullability via `nullable: true`, so the nil entry is redundant
147
177
  # and causes issues with code generators.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.0.beta8
4
+ version: 5.4.0.beta10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vendo Connect Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-16 00:00:00.000000000 Z
11
+ date: 2026-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rswag-specs
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 5.4.0.beta8
89
+ version: 5.4.0.beta10
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 5.4.0.beta8
96
+ version: 5.4.0.beta10
97
97
  description: Spree's API
98
98
  email:
99
99
  - hello@spreecommerce.org
@@ -114,6 +114,7 @@ files:
114
114
  - app/controllers/concerns/spree/api/v3/rate_limit_headers.rb
115
115
  - app/controllers/concerns/spree/api/v3/resource_serializer.rb
116
116
  - app/controllers/concerns/spree/api/v3/security_headers.rb
117
+ - app/controllers/concerns/spree/api/v3/store/search_provider_support.rb
117
118
  - app/controllers/spree/api/v3/admin/base_controller.rb
118
119
  - app/controllers/spree/api/v3/admin/resource_controller.rb
119
120
  - app/controllers/spree/api/v3/base_controller.rb
@@ -121,11 +122,11 @@ files:
121
122
  - app/controllers/spree/api/v3/store/auth_controller.rb
122
123
  - app/controllers/spree/api/v3/store/base_controller.rb
123
124
  - app/controllers/spree/api/v3/store/carts/coupon_codes_controller.rb
125
+ - app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb
124
126
  - app/controllers/spree/api/v3/store/carts/items_controller.rb
125
127
  - app/controllers/spree/api/v3/store/carts/payment_methods_controller.rb
126
128
  - app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb
127
129
  - app/controllers/spree/api/v3/store/carts/payments_controller.rb
128
- - app/controllers/spree/api/v3/store/carts/shipments_controller.rb
129
130
  - app/controllers/spree/api/v3/store/carts/store_credits_controller.rb
130
131
  - app/controllers/spree/api/v3/store/carts_controller.rb
131
132
  - app/controllers/spree/api/v3/store/categories/products_controller.rb
@@ -161,13 +162,16 @@ files:
161
162
  - app/serializers/spree/api/v3/admin/category_serializer.rb
162
163
  - app/serializers/spree/api/v3/admin/credit_card_serializer.rb
163
164
  - app/serializers/spree/api/v3/admin/customer_serializer.rb
165
+ - app/serializers/spree/api/v3/admin/delivery_method_serializer.rb
166
+ - app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb
164
167
  - app/serializers/spree/api/v3/admin/digital_link_serializer.rb
168
+ - app/serializers/spree/api/v3/admin/discount_serializer.rb
169
+ - app/serializers/spree/api/v3/admin/fulfillment_serializer.rb
165
170
  - app/serializers/spree/api/v3/admin/line_item_serializer.rb
166
171
  - app/serializers/spree/api/v3/admin/media_serializer.rb
167
172
  - app/serializers/spree/api/v3/admin/metafield_serializer.rb
168
173
  - app/serializers/spree/api/v3/admin/option_type_serializer.rb
169
174
  - app/serializers/spree/api/v3/admin/option_value_serializer.rb
170
- - app/serializers/spree/api/v3/admin/order_promotion_serializer.rb
171
175
  - app/serializers/spree/api/v3/admin/order_serializer.rb
172
176
  - app/serializers/spree/api/v3/admin/payment_method_serializer.rb
173
177
  - app/serializers/spree/api/v3/admin/payment_serializer.rb
@@ -177,10 +181,7 @@ files:
177
181
  - app/serializers/spree/api/v3/admin/refund_serializer.rb
178
182
  - app/serializers/spree/api/v3/admin/reimbursement_serializer.rb
179
183
  - app/serializers/spree/api/v3/admin/return_authorization_serializer.rb
180
- - app/serializers/spree/api/v3/admin/shipment_serializer.rb
181
184
  - app/serializers/spree/api/v3/admin/shipping_category_serializer.rb
182
- - app/serializers/spree/api/v3/admin/shipping_method_serializer.rb
183
- - app/serializers/spree/api/v3/admin/shipping_rate_serializer.rb
184
185
  - app/serializers/spree/api/v3/admin/stock_item_serializer.rb
185
186
  - app/serializers/spree/api/v3/admin/stock_location_serializer.rb
186
187
  - app/serializers/spree/api/v3/admin/store_credit_serializer.rb
@@ -188,7 +189,6 @@ files:
188
189
  - app/serializers/spree/api/v3/admin/variant_serializer.rb
189
190
  - app/serializers/spree/api/v3/asset_serializer.rb
190
191
  - app/serializers/spree/api/v3/base_serializer.rb
191
- - app/serializers/spree/api/v3/cart_promotion_serializer.rb
192
192
  - app/serializers/spree/api/v3/cart_serializer.rb
193
193
  - app/serializers/spree/api/v3/category_serializer.rb
194
194
  - app/serializers/spree/api/v3/country_serializer.rb
@@ -196,9 +196,13 @@ files:
196
196
  - app/serializers/spree/api/v3/currency_serializer.rb
197
197
  - app/serializers/spree/api/v3/customer_return_serializer.rb
198
198
  - app/serializers/spree/api/v3/customer_serializer.rb
199
+ - app/serializers/spree/api/v3/delivery_method_serializer.rb
200
+ - app/serializers/spree/api/v3/delivery_rate_serializer.rb
199
201
  - app/serializers/spree/api/v3/digital_link_serializer.rb
200
202
  - app/serializers/spree/api/v3/digital_serializer.rb
203
+ - app/serializers/spree/api/v3/discount_serializer.rb
201
204
  - app/serializers/spree/api/v3/export_serializer.rb
205
+ - app/serializers/spree/api/v3/fulfillment_serializer.rb
202
206
  - app/serializers/spree/api/v3/gift_card_batch_serializer.rb
203
207
  - app/serializers/spree/api/v3/gift_card_serializer.rb
204
208
  - app/serializers/spree/api/v3/import_row_serializer.rb
@@ -212,7 +216,6 @@ files:
212
216
  - app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb
213
217
  - app/serializers/spree/api/v3/option_type_serializer.rb
214
218
  - app/serializers/spree/api/v3/option_value_serializer.rb
215
- - app/serializers/spree/api/v3/order_promotion_serializer.rb
216
219
  - app/serializers/spree/api/v3/order_serializer.rb
217
220
  - app/serializers/spree/api/v3/payment_method_serializer.rb
218
221
  - app/serializers/spree/api/v3/payment_serializer.rb
@@ -227,10 +230,7 @@ files:
227
230
  - app/serializers/spree/api/v3/report_serializer.rb
228
231
  - app/serializers/spree/api/v3/return_authorization_serializer.rb
229
232
  - app/serializers/spree/api/v3/return_item_serializer.rb
230
- - app/serializers/spree/api/v3/shipment_serializer.rb
231
233
  - app/serializers/spree/api/v3/shipping_category_serializer.rb
232
- - app/serializers/spree/api/v3/shipping_method_serializer.rb
233
- - app/serializers/spree/api/v3/shipping_rate_serializer.rb
234
234
  - app/serializers/spree/api/v3/state_serializer.rb
235
235
  - app/serializers/spree/api/v3/stock_item_serializer.rb
236
236
  - app/serializers/spree/api/v3/stock_location_serializer.rb
@@ -239,7 +239,7 @@ files:
239
239
  - app/serializers/spree/api/v3/store_credit_serializer.rb
240
240
  - app/serializers/spree/api/v3/tax_category_serializer.rb
241
241
  - app/serializers/spree/api/v3/variant_serializer.rb
242
- - app/serializers/spree/api/v3/wished_item_serializer.rb
242
+ - app/serializers/spree/api/v3/wishlist_item_serializer.rb
243
243
  - app/serializers/spree/api/v3/wishlist_serializer.rb
244
244
  - app/services/spree/api/v3/filters_aggregator.rb
245
245
  - app/services/spree/webhooks/deliver_webhook.rb
@@ -268,9 +268,9 @@ licenses:
268
268
  - BSD-3-Clause
269
269
  metadata:
270
270
  bug_tracker_uri: https://github.com/spree/spree/issues
271
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta8
271
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta10
272
272
  documentation_uri: https://docs.spreecommerce.org/
273
- source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta8
273
+ source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta10
274
274
  post_install_message:
275
275
  rdoc_options: []
276
276
  require_paths:
@@ -1,11 +0,0 @@
1
- module Spree
2
- module Api
3
- module V3
4
- module Admin
5
- class ShippingRateSerializer < V3::ShippingRateSerializer
6
- one :shipping_method, resource: Spree.api.admin_shipping_method_serializer, if: proc { expand?('shipping_method') }
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,16 +0,0 @@
1
- module Spree
2
- module Api
3
- module V3
4
- class OrderPromotionSerializer < BaseSerializer
5
- typelize name: :string, description: [:string, nullable: true], code: [:string, nullable: true],
6
- amount: :string, display_amount: :string, promotion_id: :string
7
-
8
- attribute :promotion_id do |order_promotion|
9
- order_promotion.promotion&.prefixed_id
10
- end
11
-
12
- attributes :name, :description, :code, :amount, :display_amount
13
- end
14
- end
15
- end
16
- end
@@ -1,19 +0,0 @@
1
- module Spree
2
- module Api
3
- module V3
4
- class ShipmentSerializer < BaseSerializer
5
- typelize number: :string, state: :string, tracking: [:string, nullable: true],
6
- tracking_url: [:string, nullable: true], shipped_at: [:string, nullable: true],
7
- cost: :string, display_cost: :string
8
-
9
- attributes :number, :state, :tracking, :tracking_url,
10
- :cost, :display_cost,
11
- shipped_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
12
-
13
- one :shipping_method, resource: Spree.api.shipping_method_serializer
14
- one :stock_location, resource: Spree.api.stock_location_serializer
15
- many :shipping_rates, resource: Spree.api.shipping_rate_serializer
16
- end
17
- end
18
- end
19
- end