spree_api 5.4.4 → 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 +3 -15
- 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 +6 -6
- 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 +1 -6
- 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/app/services/spree/webhooks/deliver_webhook.rb +2 -6
- data/app/subscribers/spree/webhook_event_subscriber.rb +2 -5
- 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 +95 -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,23 +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
|
|
183
265
|
- app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb
|
|
266
|
+
- app/serializers/spree/api/v3/admin/webhook_endpoint_serializer.rb
|
|
184
267
|
- app/serializers/spree/api/v3/asset_serializer.rb
|
|
185
268
|
- app/serializers/spree/api/v3/base_serializer.rb
|
|
186
269
|
- app/serializers/spree/api/v3/cart_serializer.rb
|
|
187
270
|
- app/serializers/spree/api/v3/category_serializer.rb
|
|
271
|
+
- app/serializers/spree/api/v3/channel_serializer.rb
|
|
188
272
|
- app/serializers/spree/api/v3/country_serializer.rb
|
|
189
273
|
- app/serializers/spree/api/v3/credit_card_serializer.rb
|
|
190
274
|
- app/serializers/spree/api/v3/currency_serializer.rb
|
|
@@ -219,6 +303,7 @@ files:
|
|
|
219
303
|
- app/serializers/spree/api/v3/policy_serializer.rb
|
|
220
304
|
- app/serializers/spree/api/v3/price_history_serializer.rb
|
|
221
305
|
- app/serializers/spree/api/v3/price_serializer.rb
|
|
306
|
+
- app/serializers/spree/api/v3/product_publication_serializer.rb
|
|
222
307
|
- app/serializers/spree/api/v3/product_serializer.rb
|
|
223
308
|
- app/serializers/spree/api/v3/promotion_serializer.rb
|
|
224
309
|
- app/serializers/spree/api/v3/refund_serializer.rb
|
|
@@ -231,6 +316,7 @@ files:
|
|
|
231
316
|
- app/serializers/spree/api/v3/stock_item_serializer.rb
|
|
232
317
|
- app/serializers/spree/api/v3/stock_location_serializer.rb
|
|
233
318
|
- app/serializers/spree/api/v3/stock_movement_serializer.rb
|
|
319
|
+
- app/serializers/spree/api/v3/stock_reservation_serializer.rb
|
|
234
320
|
- app/serializers/spree/api/v3/stock_transfer_serializer.rb
|
|
235
321
|
- app/serializers/spree/api/v3/store_credit_serializer.rb
|
|
236
322
|
- app/serializers/spree/api/v3/tax_category_serializer.rb
|
|
@@ -253,6 +339,7 @@ files:
|
|
|
253
339
|
- lib/spree/api/dependencies.rb
|
|
254
340
|
- lib/spree/api/engine.rb
|
|
255
341
|
- lib/spree/api/middleware/request_size_limit.rb
|
|
342
|
+
- lib/spree/api/openapi/path_sorter.rb
|
|
256
343
|
- lib/spree/api/openapi/schema_helper.rb
|
|
257
344
|
- lib/spree/api/testing_support/factories.rb
|
|
258
345
|
- lib/spree/api/testing_support/matchers/webhooks.rb
|
|
@@ -264,9 +351,9 @@ licenses:
|
|
|
264
351
|
- BSD-3-Clause
|
|
265
352
|
metadata:
|
|
266
353
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
267
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.
|
|
354
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.5.0.rc1
|
|
268
355
|
documentation_uri: https://docs.spreecommerce.org/
|
|
269
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.
|
|
356
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.5.0.rc1
|
|
270
357
|
post_install_message:
|
|
271
358
|
rdoc_options: []
|
|
272
359
|
require_paths:
|