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.
- checksums.yaml +4 -4
- data/Rakefile +19 -0
- data/app/controllers/concerns/spree/api/v3/admin/auth_cookies.rb +62 -0
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +149 -0
- data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +54 -0
- data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +103 -0
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +60 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +4 -0
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +84 -0
- data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +88 -0
- data/app/controllers/concerns/spree/api/v3/store/search_provider_support.rb +35 -1
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +97 -0
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +55 -0
- data/app/controllers/spree/api/v3/admin/auth_controller.rb +134 -0
- data/app/controllers/spree/api/v3/admin/base_controller.rb +3 -17
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +108 -0
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +88 -0
- data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +119 -0
- data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +89 -0
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +138 -0
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +70 -0
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/me_controller.rb +69 -0
- data/app/controllers/spree/api/v3/admin/media_controller.rb +119 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/orders/base_controller.rb +26 -0
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +104 -0
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +79 -0
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +92 -0
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +90 -0
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +53 -0
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +59 -0
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +190 -0
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +73 -0
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +156 -0
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +129 -0
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +48 -0
- data/app/controllers/spree/api/v3/admin/products_controller.rb +237 -0
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +78 -0
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +78 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +29 -11
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +35 -0
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +36 -0
- data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/store_controller.rb +53 -0
- data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +21 -0
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +51 -0
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +21 -0
- data/app/controllers/spree/api/v3/admin/variants_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/webhook_deliveries_controller.rb +49 -0
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +75 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +90 -8
- data/app/controllers/spree/api/v3/store/auth_controller.rb +8 -28
- data/app/controllers/spree/api/v3/store/base_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +1 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +77 -0
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/products_controller.rb +3 -3
- data/app/controllers/spree/api/v3/store/resource_controller.rb +10 -2
- data/app/jobs/spree/webhook_delivery_job.rb +5 -0
- data/app/models/spree/api_key_ability.rb +16 -0
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +3 -15
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +19 -3
- data/app/serializers/spree/api/v3/admin/allowed_origin_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +42 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +8 -3
- data/app/serializers/spree/api/v3/admin/customer_group_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +58 -2
- data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +143 -0
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +40 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/{asset_serializer.rb → gift_card_batch_serializer.rb} +1 -1
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +39 -4
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +64 -0
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +4 -16
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +24 -2
- data/app/serializers/spree/api/v3/admin/option_type_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/admin/option_value_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +21 -6
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +11 -2
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/payment_source_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +51 -0
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +55 -0
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/product_publication_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +34 -10
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +85 -0
- data/app/serializers/spree/api/v3/admin/promotion_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +16 -1
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +11 -2
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -5
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +55 -0
- data/app/serializers/spree/api/v3/admin/tax_category_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +37 -6
- data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +45 -0
- data/app/serializers/spree/api/v3/admin/webhook_endpoint_serializer.rb +69 -0
- data/app/serializers/spree/api/v3/channel_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +9 -10
- data/app/serializers/spree/api/v3/customer_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/market_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/media_serializer.rb +8 -6
- data/app/serializers/spree/api/v3/order_serializer.rb +6 -1
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +11 -2
- data/app/serializers/spree/api/v3/product_publication_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/product_serializer.rb +6 -1
- data/app/serializers/spree/api/v3/stock_reservation_serializer.rb +10 -0
- data/config/locales/en.yml +2 -0
- data/config/routes.rb +235 -1
- data/lib/spree/api/configuration.rb +2 -2
- data/lib/spree/api/dependencies.rb +25 -1
- data/lib/spree/api/openapi/path_sorter.rb +126 -0
- data/lib/spree/api/openapi/schema_helper.rb +185 -6
- metadata +96 -8
- 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
|
|
114
|
-
variant_id: { type: :string, description: 'Variant
|
|
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:
|
|
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
|
+
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-
|
|
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.
|
|
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.
|
|
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/
|
|
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/
|
|
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.
|
|
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.
|
|
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:
|