spree_api 5.4.3 → 5.5.0.rc1

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +19 -0
  3. data/app/controllers/concerns/spree/api/v3/admin/auth_cookies.rb +62 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +149 -0
  5. data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +54 -0
  6. data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +103 -0
  7. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +60 -0
  8. data/app/controllers/concerns/spree/api/v3/error_handler.rb +4 -0
  9. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +84 -0
  10. data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +88 -0
  11. data/app/controllers/concerns/spree/api/v3/store/search_provider_support.rb +35 -1
  12. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +97 -0
  13. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +25 -0
  14. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +55 -0
  15. data/app/controllers/spree/api/v3/admin/auth_controller.rb +134 -0
  16. data/app/controllers/spree/api/v3/admin/base_controller.rb +3 -17
  17. data/app/controllers/spree/api/v3/admin/categories_controller.rb +25 -0
  18. data/app/controllers/spree/api/v3/admin/channels_controller.rb +65 -0
  19. data/app/controllers/spree/api/v3/admin/countries_controller.rb +38 -0
  20. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +33 -0
  21. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +34 -0
  22. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +108 -0
  23. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +31 -0
  24. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +88 -0
  25. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +31 -0
  26. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +93 -0
  27. data/app/controllers/spree/api/v3/admin/customers_controller.rb +119 -0
  28. data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +44 -0
  29. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +40 -0
  30. data/app/controllers/spree/api/v3/admin/exports_controller.rb +89 -0
  31. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +31 -0
  32. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +33 -0
  33. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +138 -0
  34. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +70 -0
  35. data/app/controllers/spree/api/v3/admin/markets_controller.rb +42 -0
  36. data/app/controllers/spree/api/v3/admin/me_controller.rb +69 -0
  37. data/app/controllers/spree/api/v3/admin/media_controller.rb +119 -0
  38. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +34 -0
  39. data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +27 -0
  40. data/app/controllers/spree/api/v3/admin/orders/base_controller.rb +26 -0
  41. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +104 -0
  42. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +79 -0
  43. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +92 -0
  44. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +90 -0
  45. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +53 -0
  46. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +59 -0
  47. data/app/controllers/spree/api/v3/admin/orders_controller.rb +190 -0
  48. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +73 -0
  49. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +156 -0
  50. data/app/controllers/spree/api/v3/admin/prices_controller.rb +129 -0
  51. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +48 -0
  52. data/app/controllers/spree/api/v3/admin/products_controller.rb +237 -0
  53. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +78 -0
  54. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +56 -0
  55. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +78 -0
  56. data/app/controllers/spree/api/v3/admin/resource_controller.rb +29 -11
  57. data/app/controllers/spree/api/v3/admin/roles_controller.rb +29 -0
  58. data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +35 -0
  59. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +36 -0
  60. data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +29 -0
  61. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +75 -0
  62. data/app/controllers/spree/api/v3/admin/store_controller.rb +53 -0
  63. data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +21 -0
  64. data/app/controllers/spree/api/v3/admin/tags_controller.rb +51 -0
  65. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +21 -0
  66. data/app/controllers/spree/api/v3/admin/variants_controller.rb +33 -0
  67. data/app/controllers/spree/api/v3/admin/webhook_deliveries_controller.rb +49 -0
  68. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +75 -0
  69. data/app/controllers/spree/api/v3/resource_controller.rb +90 -8
  70. data/app/controllers/spree/api/v3/store/auth_controller.rb +8 -28
  71. data/app/controllers/spree/api/v3/store/base_controller.rb +6 -0
  72. data/app/controllers/spree/api/v3/store/carts_controller.rb +1 -0
  73. data/app/controllers/spree/api/v3/store/customers_controller.rb +6 -0
  74. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +77 -0
  75. data/app/controllers/spree/api/v3/store/products/filters_controller.rb +2 -2
  76. data/app/controllers/spree/api/v3/store/products_controller.rb +3 -3
  77. data/app/controllers/spree/api/v3/store/resource_controller.rb +10 -2
  78. data/app/jobs/spree/webhook_delivery_job.rb +5 -0
  79. data/app/models/spree/api_key_ability.rb +16 -0
  80. data/app/serializers/spree/api/v3/admin/address_serializer.rb +2 -6
  81. data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +3 -15
  82. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +19 -3
  83. data/app/serializers/spree/api/v3/admin/allowed_origin_serializer.rb +2 -6
  84. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +42 -0
  85. data/app/serializers/spree/api/v3/admin/category_serializer.rb +4 -3
  86. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -0
  87. data/app/serializers/spree/api/v3/admin/country_serializer.rb +1 -1
  88. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +30 -0
  89. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +4 -2
  90. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +21 -0
  91. data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +8 -3
  92. data/app/serializers/spree/api/v3/admin/customer_group_serializer.rb +27 -0
  93. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +58 -2
  94. data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +143 -0
  95. data/app/serializers/spree/api/v3/admin/export_serializer.rb +40 -0
  96. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +2 -6
  97. data/app/serializers/spree/api/v3/admin/{asset_serializer.rb → gift_card_batch_serializer.rb} +1 -1
  98. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +39 -4
  99. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +64 -0
  100. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +4 -16
  101. data/app/serializers/spree/api/v3/admin/media_serializer.rb +24 -2
  102. data/app/serializers/spree/api/v3/admin/option_type_serializer.rb +4 -1
  103. data/app/serializers/spree/api/v3/admin/option_value_serializer.rb +4 -1
  104. data/app/serializers/spree/api/v3/admin/order_serializer.rb +21 -6
  105. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +11 -2
  106. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -6
  107. data/app/serializers/spree/api/v3/admin/payment_source_serializer.rb +4 -1
  108. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +51 -0
  109. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +55 -0
  110. data/app/serializers/spree/api/v3/admin/price_serializer.rb +4 -0
  111. data/app/serializers/spree/api/v3/admin/product_publication_serializer.rb +11 -0
  112. data/app/serializers/spree/api/v3/admin/product_serializer.rb +34 -10
  113. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +71 -0
  114. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +85 -0
  115. data/app/serializers/spree/api/v3/admin/promotion_serializer.rb +41 -0
  116. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -2
  117. data/app/serializers/spree/api/v3/admin/role_serializer.rb +17 -0
  118. data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +16 -1
  119. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +11 -2
  120. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +46 -0
  121. data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +37 -0
  122. data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +19 -0
  123. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -5
  124. data/app/serializers/spree/api/v3/admin/store_serializer.rb +55 -0
  125. data/app/serializers/spree/api/v3/admin/tax_category_serializer.rb +4 -2
  126. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +37 -6
  127. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +45 -0
  128. data/app/serializers/spree/api/v3/admin/webhook_endpoint_serializer.rb +69 -0
  129. data/app/serializers/spree/api/v3/channel_serializer.rb +14 -0
  130. data/app/serializers/spree/api/v3/custom_field_serializer.rb +9 -10
  131. data/app/serializers/spree/api/v3/customer_serializer.rb +5 -0
  132. data/app/serializers/spree/api/v3/market_serializer.rb +2 -1
  133. data/app/serializers/spree/api/v3/media_serializer.rb +8 -6
  134. data/app/serializers/spree/api/v3/order_serializer.rb +6 -1
  135. data/app/serializers/spree/api/v3/payment_method_serializer.rb +11 -2
  136. data/app/serializers/spree/api/v3/product_publication_serializer.rb +22 -0
  137. data/app/serializers/spree/api/v3/product_serializer.rb +6 -1
  138. data/app/serializers/spree/api/v3/stock_reservation_serializer.rb +10 -0
  139. data/config/locales/en.yml +2 -0
  140. data/config/routes.rb +235 -1
  141. data/lib/spree/api/configuration.rb +2 -2
  142. data/lib/spree/api/dependencies.rb +25 -1
  143. data/lib/spree/api/openapi/path_sorter.rb +126 -0
  144. data/lib/spree/api/openapi/schema_helper.rb +185 -6
  145. metadata +96 -8
  146. data/app/serializers/spree/api/v3/admin/shipping_category_serializer.rb +0 -14
@@ -86,6 +86,26 @@ module Spree
86
86
  },
87
87
  required: %w[token refresh_token user]
88
88
  },
89
+ PermissionRule: {
90
+ type: :object,
91
+ description: 'A single permission rule (CanCanCan rule). Rules are applied in order, last-matching-wins.',
92
+ properties: {
93
+ allow: { type: :boolean, description: 'true for `can`, false for `cannot`' },
94
+ actions: { type: :array, items: { type: :string }, description: 'Action names, e.g. ["read", "update"] or ["manage"]' },
95
+ subjects: { type: :array, items: { type: :string }, description: 'Subject class names, e.g. ["Spree::Product"] or ["all"]' },
96
+ has_conditions: { type: :boolean, description: 'True if the server-side rule has per-record conditions. The SPA shows the action optimistically and handles 403 from the API.' }
97
+ },
98
+ required: %w[allow actions subjects has_conditions]
99
+ },
100
+ MeResponse: {
101
+ type: :object,
102
+ description: 'Current admin user profile and serialized permissions',
103
+ properties: {
104
+ user: { '$ref' => '#/components/schemas/AdminUser' },
105
+ permissions: { type: :array, items: { '$ref' => '#/components/schemas/PermissionRule' } }
106
+ },
107
+ required: %w[user permissions]
108
+ },
89
109
  CheckoutRequirement: {
90
110
  type: :object,
91
111
  properties: {
@@ -110,21 +130,60 @@ module Spree
110
130
  type: :object,
111
131
  description: 'An item within a fulfillment — which line item and how many units are in this fulfillment',
112
132
  properties: {
113
- item_id: { type: :string, description: 'Line item prefixed ID', example: 'li_abc123' },
114
- variant_id: { type: :string, description: 'Variant prefixed ID', example: 'variant_abc123' },
133
+ item_id: { type: :string, description: 'Line item ID', example: 'li_abc123' },
134
+ variant_id: { type: :string, description: 'Variant ID', example: 'variant_abc123' },
115
135
  quantity: { type: :integer, description: 'Quantity in this fulfillment', example: 2 }
116
136
  },
117
137
  required: %w[item_id variant_id quantity]
138
+ },
139
+ AdminUserRoleAssignment: {
140
+ type: :object,
141
+ description: 'A role assignment for the current store on a staff member',
142
+ properties: {
143
+ id: { type: :string, description: 'Prefixed role ID', example: 'role_abc123' },
144
+ name: { type: :string, description: 'Role name', example: 'admin' }
145
+ },
146
+ required: %w[id name]
147
+ },
148
+ PreferenceField: {
149
+ type: :object,
150
+ description: 'A single configurable preference on a payment method, promotion rule/action, or calculator. The frontend uses `type` + `default` to render a sensible input.',
151
+ properties: {
152
+ key: { type: :string, example: 'amount_min' },
153
+ type: { type: :string, example: 'decimal', description: 'string | text | password | integer | decimal | boolean | array | hash' },
154
+ default: { description: 'Default value (any JSON type), null when there is no default', nullable: true }
155
+ },
156
+ required: %w[key type]
157
+ },
158
+ PromotionActionCalculator: {
159
+ type: :object,
160
+ description: "The action's nested calculator (when the action carries one — null for actions like `free_shipping`)",
161
+ properties: {
162
+ type: { type: :string, example: 'flat_rate', description: 'Wire shorthand for the calculator subclass' },
163
+ label: { type: :string, example: 'Flat Rate' },
164
+ preferences: { type: :object, additionalProperties: true },
165
+ preference_schema: { type: :array, items: { '$ref' => '#/components/schemas/PreferenceField' } }
166
+ },
167
+ required: %w[type label preferences preference_schema]
168
+ },
169
+ PromotionActionLineItem: {
170
+ type: :object,
171
+ description: 'One row in a `create_line_items` action — the variant added to the order and how many',
172
+ properties: {
173
+ variant_id: { type: :string, example: 'variant_abc123' },
174
+ quantity: { type: :integer, example: 1 }
175
+ },
176
+ required: %w[variant_id quantity]
118
177
  }
119
178
  }
120
179
  end
121
180
 
122
- # Get all schemas (Typelizer + common)
181
+ # Get all store schemas (Typelizer + common)
123
182
  def all_schemas
124
183
  schemas = common_schemas
125
184
 
126
185
  begin
127
- schemas.merge!(typelizer_schemas)
186
+ schemas.merge!(typelizer_schemas(:store))
128
187
  rescue StandardError => e
129
188
  Rails.logger.warn "Failed to load Typelizer schemas: #{e.message}"
130
189
  end
@@ -132,17 +191,45 @@ module Spree
132
191
  schemas
133
192
  end
134
193
 
194
+ # Get all admin schemas (Typelizer + common)
195
+ def admin_schemas
196
+ schemas = common_schemas
197
+
198
+ # Override AuthResponse for admin: reference AdminUser, and drop refresh_token from the body
199
+ # (admin sets the refresh token as an HttpOnly cookie, not in the JSON response).
200
+ schemas[:AuthResponse] = {
201
+ type: :object,
202
+ properties: {
203
+ token: { type: :string, description: 'JWT access token' },
204
+ user: { '$ref' => '#/components/schemas/AdminUser' }
205
+ },
206
+ required: %w[token user]
207
+ }
208
+
209
+ begin
210
+ schemas.merge!(typelizer_schemas(:admin))
211
+ rescue StandardError => e
212
+ Rails.logger.warn "Failed to load Typelizer admin schemas: #{e.message}"
213
+ end
214
+
215
+ schemas
216
+ end
217
+
135
218
  private
136
219
 
137
- def typelizer_schemas
220
+ def typelizer_schemas(writer_name)
138
221
  with_typelizer_enabled do
139
- schemas = Typelizer.openapi_schemas(writer_name: :store)
222
+ schemas = Typelizer.openapi_schemas(writer_name: writer_name)
140
223
  schemas.each_value do |s|
141
224
  s[:'x-typelizer'] = true
142
225
  strip_null_from_enums(s)
143
226
  end
144
227
  patch_cart_schema(schemas)
145
228
  patch_fulfillment_schema(schemas)
229
+ patch_admin_user_schema(schemas)
230
+ patch_promotion_rule_schema(schemas)
231
+ patch_promotion_action_schema(schemas)
232
+ patch_price_rule_schema(schemas)
146
233
  schemas
147
234
  end
148
235
  end
@@ -173,6 +260,98 @@ module Spree
173
260
  end
174
261
  end
175
262
 
263
+ # Same Array<{...}> issue as cart/fulfillment — patch AdminUser#roles
264
+ # to reference the AdminUserRoleAssignment component schema.
265
+ def patch_admin_user_schema(schemas)
266
+ admin_user = schemas['AdminUser'] || schemas[:AdminUser]
267
+ return unless admin_user
268
+
269
+ props = admin_user[:properties]
270
+ return unless props
271
+
272
+ roles_key = props.key?('roles') ? 'roles' : :roles
273
+ if props[roles_key]
274
+ props[roles_key] = {
275
+ type: :array,
276
+ items: { '$ref' => '#/components/schemas/AdminUserRoleAssignment' }
277
+ }
278
+ end
279
+ end
280
+
281
+ # Same Array<{...}> + Array<string> typelize hints that Typelizer
282
+ # collapses to `object` in OpenAPI. Patch the affected properties to
283
+ # their correct array shapes.
284
+ def patch_promotion_rule_schema(schemas)
285
+ rule = schemas['PromotionRule'] || schemas[:PromotionRule]
286
+ return unless rule
287
+
288
+ patch_id_arrays(rule, %w[product_ids category_ids customer_ids])
289
+ patch_preference_schema(rule)
290
+ end
291
+
292
+ def patch_price_rule_schema(schemas)
293
+ rule = schemas['PriceRule'] || schemas[:PriceRule]
294
+ return unless rule
295
+
296
+ patch_preference_schema(rule)
297
+ end
298
+
299
+ def patch_promotion_action_schema(schemas)
300
+ action = schemas['PromotionAction'] || schemas[:PromotionAction]
301
+ return unless action
302
+
303
+ patch_preference_schema(action)
304
+
305
+ props = action[:properties]
306
+ return unless props
307
+
308
+ calc_key = props.key?('calculator') ? 'calculator' : :calculator
309
+ if props[calc_key]
310
+ props[calc_key] = {
311
+ allOf: [{ '$ref' => '#/components/schemas/PromotionActionCalculator' }],
312
+ nullable: true
313
+ }
314
+ end
315
+
316
+ items_key = props.key?('line_items') ? 'line_items' : :line_items
317
+ if props[items_key]
318
+ props[items_key] = {
319
+ type: :array,
320
+ items: { '$ref' => '#/components/schemas/PromotionActionLineItem' },
321
+ nullable: true
322
+ }
323
+ end
324
+ end
325
+
326
+ def patch_id_arrays(schema, keys)
327
+ props = schema[:properties]
328
+ return unless props
329
+
330
+ keys.each do |key|
331
+ actual = props.key?(key) ? key : key.to_sym
332
+ next unless props[actual]
333
+
334
+ props[actual] = {
335
+ type: :array,
336
+ items: { type: :string },
337
+ nullable: true
338
+ }
339
+ end
340
+ end
341
+
342
+ def patch_preference_schema(schema)
343
+ props = schema[:properties]
344
+ return unless props
345
+
346
+ key = props.key?('preference_schema') ? 'preference_schema' : :preference_schema
347
+ return unless props[key]
348
+
349
+ props[key] = {
350
+ type: :array,
351
+ items: { '$ref' => '#/components/schemas/PreferenceField' }
352
+ }
353
+ end
354
+
176
355
  # Typelizer cannot represent Array<{...}> inline object types in OpenAPI,
177
356
  # so we patch Fulfillment#items to reference the FulfillmentManifestItem component schema.
178
357
  def patch_fulfillment_schema(schemas)
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.3
4
+ version: 5.5.0.rc1
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-05-19 00:00:00.000000000 Z
11
+ date: 2026-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rswag-specs
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 5.4.3
75
+ version: 5.5.0.rc1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 5.4.3
82
+ version: 5.5.0.rc1
83
83
  description: Spree's API
84
84
  email:
85
85
  - hello@spreecommerce.org
@@ -89,20 +89,82 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - README.md
91
91
  - Rakefile
92
+ - app/controllers/concerns/spree/api/v3/admin/auth_cookies.rb
93
+ - app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb
94
+ - app/controllers/concerns/spree/api/v3/admin_authentication.rb
92
95
  - app/controllers/concerns/spree/api/v3/api_key_authentication.rb
96
+ - app/controllers/concerns/spree/api/v3/bulk_operations.rb
93
97
  - app/controllers/concerns/spree/api/v3/cart_resolvable.rb
98
+ - app/controllers/concerns/spree/api/v3/channel_resolution.rb
94
99
  - app/controllers/concerns/spree/api/v3/error_handler.rb
95
100
  - app/controllers/concerns/spree/api/v3/http_caching.rb
96
101
  - app/controllers/concerns/spree/api/v3/idempotent.rb
97
102
  - app/controllers/concerns/spree/api/v3/jwt_authentication.rb
98
103
  - app/controllers/concerns/spree/api/v3/locale_and_currency.rb
99
104
  - app/controllers/concerns/spree/api/v3/order_lock.rb
105
+ - app/controllers/concerns/spree/api/v3/params_normalizer.rb
100
106
  - app/controllers/concerns/spree/api/v3/rate_limit_headers.rb
101
107
  - app/controllers/concerns/spree/api/v3/resource_serializer.rb
108
+ - app/controllers/concerns/spree/api/v3/scoped_authorization.rb
102
109
  - app/controllers/concerns/spree/api/v3/security_headers.rb
103
110
  - app/controllers/concerns/spree/api/v3/store/search_provider_support.rb
111
+ - app/controllers/spree/api/v3/admin/admin_users_controller.rb
112
+ - app/controllers/spree/api/v3/admin/allowed_origins_controller.rb
113
+ - app/controllers/spree/api/v3/admin/api_keys_controller.rb
114
+ - app/controllers/spree/api/v3/admin/auth_controller.rb
104
115
  - app/controllers/spree/api/v3/admin/base_controller.rb
116
+ - app/controllers/spree/api/v3/admin/categories_controller.rb
117
+ - app/controllers/spree/api/v3/admin/channels_controller.rb
118
+ - app/controllers/spree/api/v3/admin/countries_controller.rb
119
+ - app/controllers/spree/api/v3/admin/coupon_codes_controller.rb
120
+ - app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb
121
+ - app/controllers/spree/api/v3/admin/custom_fields_controller.rb
122
+ - app/controllers/spree/api/v3/admin/customer_groups_controller.rb
123
+ - app/controllers/spree/api/v3/admin/customers/addresses_controller.rb
124
+ - app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb
125
+ - app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb
126
+ - app/controllers/spree/api/v3/admin/customers_controller.rb
127
+ - app/controllers/spree/api/v3/admin/dashboard_controller.rb
128
+ - app/controllers/spree/api/v3/admin/direct_uploads_controller.rb
129
+ - app/controllers/spree/api/v3/admin/exports_controller.rb
130
+ - app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb
131
+ - app/controllers/spree/api/v3/admin/gift_cards_controller.rb
132
+ - app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb
133
+ - app/controllers/spree/api/v3/admin/invitations_controller.rb
134
+ - app/controllers/spree/api/v3/admin/markets_controller.rb
135
+ - app/controllers/spree/api/v3/admin/me_controller.rb
136
+ - app/controllers/spree/api/v3/admin/media_controller.rb
137
+ - app/controllers/spree/api/v3/admin/option_types_controller.rb
138
+ - app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb
139
+ - app/controllers/spree/api/v3/admin/orders/base_controller.rb
140
+ - app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb
141
+ - app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb
142
+ - app/controllers/spree/api/v3/admin/orders/items_controller.rb
143
+ - app/controllers/spree/api/v3/admin/orders/payments_controller.rb
144
+ - app/controllers/spree/api/v3/admin/orders/refunds_controller.rb
145
+ - app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb
146
+ - app/controllers/spree/api/v3/admin/orders_controller.rb
147
+ - app/controllers/spree/api/v3/admin/payment_methods_controller.rb
148
+ - app/controllers/spree/api/v3/admin/price_lists_controller.rb
149
+ - app/controllers/spree/api/v3/admin/prices_controller.rb
150
+ - app/controllers/spree/api/v3/admin/products/variants_controller.rb
151
+ - app/controllers/spree/api/v3/admin/products_controller.rb
152
+ - app/controllers/spree/api/v3/admin/promotion_actions_controller.rb
153
+ - app/controllers/spree/api/v3/admin/promotion_rules_controller.rb
154
+ - app/controllers/spree/api/v3/admin/promotions_controller.rb
105
155
  - app/controllers/spree/api/v3/admin/resource_controller.rb
156
+ - app/controllers/spree/api/v3/admin/roles_controller.rb
157
+ - app/controllers/spree/api/v3/admin/stock_items_controller.rb
158
+ - app/controllers/spree/api/v3/admin/stock_locations_controller.rb
159
+ - app/controllers/spree/api/v3/admin/stock_reservations_controller.rb
160
+ - app/controllers/spree/api/v3/admin/stock_transfers_controller.rb
161
+ - app/controllers/spree/api/v3/admin/store_controller.rb
162
+ - app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb
163
+ - app/controllers/spree/api/v3/admin/tags_controller.rb
164
+ - app/controllers/spree/api/v3/admin/tax_categories_controller.rb
165
+ - app/controllers/spree/api/v3/admin/variants_controller.rb
166
+ - app/controllers/spree/api/v3/admin/webhook_deliveries_controller.rb
167
+ - app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb
106
168
  - app/controllers/spree/api/v3/base_controller.rb
107
169
  - app/controllers/spree/api/v3/resource_controller.rb
108
170
  - app/controllers/spree/api/v3/store/auth_controller.rb
@@ -131,6 +193,7 @@ files:
131
193
  - app/controllers/spree/api/v3/store/locales_controller.rb
132
194
  - app/controllers/spree/api/v3/store/markets/countries_controller.rb
133
195
  - app/controllers/spree/api/v3/store/markets_controller.rb
196
+ - app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb
134
197
  - app/controllers/spree/api/v3/store/orders_controller.rb
135
198
  - app/controllers/spree/api/v3/store/policies_controller.rb
136
199
  - app/controllers/spree/api/v3/store/products/filters_controller.rb
@@ -141,23 +204,32 @@ files:
141
204
  - app/controllers/spree/api/v3/webhooks/payments_controller.rb
142
205
  - app/jobs/spree/api_keys/mark_as_used.rb
143
206
  - app/jobs/spree/webhook_delivery_job.rb
207
+ - app/models/spree/api_key_ability.rb
144
208
  - app/serializers/spree/api/v3/address_serializer.rb
145
209
  - app/serializers/spree/api/v3/admin/address_serializer.rb
146
210
  - app/serializers/spree/api/v3/admin/adjustment_serializer.rb
147
211
  - app/serializers/spree/api/v3/admin/admin_user_serializer.rb
148
212
  - app/serializers/spree/api/v3/admin/allowed_origin_serializer.rb
149
- - app/serializers/spree/api/v3/admin/asset_serializer.rb
213
+ - app/serializers/spree/api/v3/admin/api_key_serializer.rb
150
214
  - app/serializers/spree/api/v3/admin/category_serializer.rb
215
+ - app/serializers/spree/api/v3/admin/channel_serializer.rb
151
216
  - app/serializers/spree/api/v3/admin/country_serializer.rb
217
+ - app/serializers/spree/api/v3/admin/coupon_code_serializer.rb
152
218
  - app/serializers/spree/api/v3/admin/credit_card_serializer.rb
219
+ - app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb
153
220
  - app/serializers/spree/api/v3/admin/custom_field_serializer.rb
221
+ - app/serializers/spree/api/v3/admin/customer_group_serializer.rb
154
222
  - app/serializers/spree/api/v3/admin/customer_serializer.rb
223
+ - app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb
155
224
  - app/serializers/spree/api/v3/admin/delivery_method_serializer.rb
156
225
  - app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb
157
226
  - app/serializers/spree/api/v3/admin/digital_link_serializer.rb
158
227
  - app/serializers/spree/api/v3/admin/discount_serializer.rb
228
+ - app/serializers/spree/api/v3/admin/export_serializer.rb
159
229
  - app/serializers/spree/api/v3/admin/fulfillment_serializer.rb
230
+ - app/serializers/spree/api/v3/admin/gift_card_batch_serializer.rb
160
231
  - app/serializers/spree/api/v3/admin/gift_card_serializer.rb
232
+ - app/serializers/spree/api/v3/admin/invitation_serializer.rb
161
233
  - app/serializers/spree/api/v3/admin/line_item_serializer.rb
162
234
  - app/serializers/spree/api/v3/admin/market_serializer.rb
163
235
  - app/serializers/spree/api/v3/admin/media_serializer.rb
@@ -168,22 +240,35 @@ files:
168
240
  - app/serializers/spree/api/v3/admin/payment_serializer.rb
169
241
  - app/serializers/spree/api/v3/admin/payment_source_serializer.rb
170
242
  - app/serializers/spree/api/v3/admin/price_history_serializer.rb
243
+ - app/serializers/spree/api/v3/admin/price_list_serializer.rb
244
+ - app/serializers/spree/api/v3/admin/price_rule_serializer.rb
171
245
  - app/serializers/spree/api/v3/admin/price_serializer.rb
246
+ - app/serializers/spree/api/v3/admin/product_publication_serializer.rb
172
247
  - app/serializers/spree/api/v3/admin/product_serializer.rb
248
+ - app/serializers/spree/api/v3/admin/promotion_action_serializer.rb
249
+ - app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb
250
+ - app/serializers/spree/api/v3/admin/promotion_serializer.rb
173
251
  - app/serializers/spree/api/v3/admin/refund_serializer.rb
174
252
  - app/serializers/spree/api/v3/admin/reimbursement_serializer.rb
175
253
  - app/serializers/spree/api/v3/admin/return_authorization_serializer.rb
176
- - app/serializers/spree/api/v3/admin/shipping_category_serializer.rb
254
+ - app/serializers/spree/api/v3/admin/role_serializer.rb
177
255
  - app/serializers/spree/api/v3/admin/state_serializer.rb
178
256
  - app/serializers/spree/api/v3/admin/stock_item_serializer.rb
179
257
  - app/serializers/spree/api/v3/admin/stock_location_serializer.rb
258
+ - app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb
259
+ - app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb
260
+ - app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb
180
261
  - app/serializers/spree/api/v3/admin/store_credit_serializer.rb
262
+ - app/serializers/spree/api/v3/admin/store_serializer.rb
181
263
  - app/serializers/spree/api/v3/admin/tax_category_serializer.rb
182
264
  - app/serializers/spree/api/v3/admin/variant_serializer.rb
265
+ - app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb
266
+ - app/serializers/spree/api/v3/admin/webhook_endpoint_serializer.rb
183
267
  - app/serializers/spree/api/v3/asset_serializer.rb
184
268
  - app/serializers/spree/api/v3/base_serializer.rb
185
269
  - app/serializers/spree/api/v3/cart_serializer.rb
186
270
  - app/serializers/spree/api/v3/category_serializer.rb
271
+ - app/serializers/spree/api/v3/channel_serializer.rb
187
272
  - app/serializers/spree/api/v3/country_serializer.rb
188
273
  - app/serializers/spree/api/v3/credit_card_serializer.rb
189
274
  - app/serializers/spree/api/v3/currency_serializer.rb
@@ -218,6 +303,7 @@ files:
218
303
  - app/serializers/spree/api/v3/policy_serializer.rb
219
304
  - app/serializers/spree/api/v3/price_history_serializer.rb
220
305
  - app/serializers/spree/api/v3/price_serializer.rb
306
+ - app/serializers/spree/api/v3/product_publication_serializer.rb
221
307
  - app/serializers/spree/api/v3/product_serializer.rb
222
308
  - app/serializers/spree/api/v3/promotion_serializer.rb
223
309
  - app/serializers/spree/api/v3/refund_serializer.rb
@@ -230,6 +316,7 @@ files:
230
316
  - app/serializers/spree/api/v3/stock_item_serializer.rb
231
317
  - app/serializers/spree/api/v3/stock_location_serializer.rb
232
318
  - app/serializers/spree/api/v3/stock_movement_serializer.rb
319
+ - app/serializers/spree/api/v3/stock_reservation_serializer.rb
233
320
  - app/serializers/spree/api/v3/stock_transfer_serializer.rb
234
321
  - app/serializers/spree/api/v3/store_credit_serializer.rb
235
322
  - app/serializers/spree/api/v3/tax_category_serializer.rb
@@ -252,6 +339,7 @@ files:
252
339
  - lib/spree/api/dependencies.rb
253
340
  - lib/spree/api/engine.rb
254
341
  - lib/spree/api/middleware/request_size_limit.rb
342
+ - lib/spree/api/openapi/path_sorter.rb
255
343
  - lib/spree/api/openapi/schema_helper.rb
256
344
  - lib/spree/api/testing_support/factories.rb
257
345
  - lib/spree/api/testing_support/matchers/webhooks.rb
@@ -263,9 +351,9 @@ licenses:
263
351
  - BSD-3-Clause
264
352
  metadata:
265
353
  bug_tracker_uri: https://github.com/spree/spree/issues
266
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.3
354
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.5.0.rc1
267
355
  documentation_uri: https://docs.spreecommerce.org/
268
- source_code_uri: https://github.com/spree/spree/tree/v5.4.3
356
+ source_code_uri: https://github.com/spree/spree/tree/v5.5.0.rc1
269
357
  post_install_message:
270
358
  rdoc_options: []
271
359
  require_paths:
@@ -1,14 +0,0 @@
1
- module Spree
2
- module Api
3
- module V3
4
- module Admin
5
- class ShippingCategorySerializer < V3::BaseSerializer
6
- typelize name: :string
7
-
8
- attributes :name,
9
- created_at: :iso8601, updated_at: :iso8601
10
- end
11
- end
12
- end
13
- end
14
- end