spree_api 6.0.0.rc7 → 6.0.1
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/app/controllers/concerns/spree/api/v3/admin/maintenance_tasks_switch.rb +35 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +8 -4
- data/app/controllers/spree/api/v3/admin/maintenance_task_runs/cancellations_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/maintenance_task_runs_controller.rb +92 -0
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/store_controller.rb +23 -7
- data/app/controllers/spree/api/v3/admin/upgrade_steps_controller.rb +114 -0
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +15 -5
- data/app/controllers/spree/api/v3/store/customers_controller.rb +1 -0
- data/app/controllers/spree/api/v3/store/store_controller.rb +25 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/collection_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/admin/company_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -0
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +1 -0
- data/app/serializers/spree/api/v3/admin/maintenance_task_run_serializer.rb +72 -0
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/newsletter_subscriber_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/option_type_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/option_value_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/payment_source_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/base_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/category_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/collection_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/company_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/credit_card_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/customer_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/delivery_method_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +1 -0
- data/app/serializers/spree/api/v3/line_item_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/media_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/option_type_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/option_value_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/payment_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/payment_source_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/product_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/return_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +22 -1
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/seller_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/store_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +1 -4
- data/app/services/spree/api/v3/request_schema.rb +15 -7
- data/config/routes.rb +14 -2
- data/lib/spree/api/dependencies.rb +2 -1
- data/lib/spree/api/enum_types.rb +2 -1
- data/lib/typelizer/open_enums.rb +21 -2
- metadata +13 -6
|
@@ -40,22 +40,25 @@ module Spree
|
|
|
40
40
|
datetime: { type: :string, format: :'date-time' },
|
|
41
41
|
id: { type: :string },
|
|
42
42
|
any: {},
|
|
43
|
-
# Codes from the
|
|
43
|
+
# Codes from the lists below.
|
|
44
44
|
country: { type: :string },
|
|
45
45
|
currency: { type: :string },
|
|
46
46
|
locale: { type: :string },
|
|
47
|
+
time_zone: { type: :string },
|
|
47
48
|
weight_unit: { type: :string },
|
|
48
49
|
dimension_unit: { type: :string }
|
|
49
50
|
}.freeze
|
|
50
51
|
|
|
51
|
-
# The
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
52
|
+
# The lists a code field takes, published once per API as a named
|
|
53
|
+
# component — the same `CountryCode`, `CurrencyCode` and `WeightUnit`
|
|
54
|
+
# types the serializers declare, so a value read from a response is the
|
|
55
|
+
# type a request takes. A list `Typelizer::OpenEnums` does not close
|
|
56
|
+
# only suggests its values.
|
|
55
57
|
CODE_LISTS = {
|
|
56
58
|
country: ['CountryCode', -> { Spree::IsoData.country_codes }],
|
|
57
59
|
currency: ['CurrencyCode', -> { Spree::Money::Rounding::CURRENCY_CODES }],
|
|
58
60
|
locale: ['LocaleCode', -> { Spree::Locales::ALL }],
|
|
61
|
+
time_zone: ['TimeZone', -> { Spree::TimeZones::SUGGESTED }],
|
|
59
62
|
weight_unit: ['WeightUnit', -> { Spree::Variant::WEIGHT_UNITS }],
|
|
60
63
|
dimension_unit: ['DimensionUnit', -> { Spree::Variant::DIMENSION_UNITS }]
|
|
61
64
|
}.freeze
|
|
@@ -348,7 +351,12 @@ module Spree
|
|
|
348
351
|
next unless CODE_LISTS.key?(field.kind)
|
|
349
352
|
|
|
350
353
|
name, values = CODE_LISTS[field.kind]
|
|
351
|
-
lists[name] =
|
|
354
|
+
lists[name] = if Typelizer::OpenEnums.closed?(name)
|
|
355
|
+
{ type: :string, enum: values.call }
|
|
356
|
+
else
|
|
357
|
+
Typelizer::OpenEnums.open_schema({ type: :string }, values.call)
|
|
358
|
+
.merge(description: Typelizer::OpenEnums.description(name)).compact
|
|
359
|
+
end
|
|
352
360
|
end
|
|
353
361
|
end
|
|
354
362
|
|
|
@@ -469,7 +477,7 @@ module Spree
|
|
|
469
477
|
|
|
470
478
|
# The same open list the serializers publish (`enum_type_name`):
|
|
471
479
|
# clients autocomplete the built-in values and still accept any other.
|
|
472
|
-
|
|
480
|
+
Typelizer::OpenEnums.open_schema(schema, field.enum)
|
|
473
481
|
end
|
|
474
482
|
end
|
|
475
483
|
end
|
data/config/routes.rb
CHANGED
|
@@ -22,6 +22,9 @@ Spree::Core::Engine.add_routes do
|
|
|
22
22
|
# Current channel context (never a list — see Store::ChannelController)
|
|
23
23
|
resource :channel, only: [:show], controller: 'channel'
|
|
24
24
|
|
|
25
|
+
# Current store context (name and default SEO metadata, localized)
|
|
26
|
+
resource :store, only: [:show], controller: 'store'
|
|
27
|
+
|
|
25
28
|
# Catalog
|
|
26
29
|
resources :products, only: [:index, :show] do
|
|
27
30
|
collection do
|
|
@@ -287,9 +290,9 @@ Spree::Core::Engine.add_routes do
|
|
|
287
290
|
resource :store, only: [:show, :update], controller: 'store' do
|
|
288
291
|
get :data_sources
|
|
289
292
|
end
|
|
290
|
-
# The store's own custom fields, addressed by its id like every other
|
|
293
|
+
# The store's own custom fields and translations, addressed by its id like every other
|
|
291
294
|
# parent. The controller only ever resolves the current store.
|
|
292
|
-
resources :stores, only: [], concerns: :custom_fieldable
|
|
295
|
+
resources :stores, only: [], concerns: [:custom_fieldable, :translatable]
|
|
293
296
|
|
|
294
297
|
# Staff & access (invitations, admin users, roles, API keys)
|
|
295
298
|
resources :admin_users, only: [:index, :show, :update, :destroy]
|
|
@@ -509,6 +512,15 @@ Spree::Core::Engine.add_routes do
|
|
|
509
512
|
post :test, on: :member
|
|
510
513
|
end
|
|
511
514
|
|
|
515
|
+
# Maintenance tasks — see docs/plans/6.0-maintenance-tasks.md.
|
|
516
|
+
# A run names its task by the short name the upgrade steps give.
|
|
517
|
+
resources :upgrade_steps, only: [:index]
|
|
518
|
+
resources :maintenance_task_runs, only: [:index, :show, :create] do
|
|
519
|
+
scope module: :maintenance_task_runs do
|
|
520
|
+
resource :cancellation, only: [:create]
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
|
|
512
524
|
# Promotions, with nested actions/rules/coupon codes.
|
|
513
525
|
resources :promotions, concerns: :custom_fieldable do
|
|
514
526
|
resources :promotion_actions, only: [:index, :show, :create, :update, :destroy]
|
|
@@ -18,7 +18,7 @@ module Spree
|
|
|
18
18
|
product_filter_sort_option media_event return return_line_item exchange exchange_line_item claim
|
|
19
19
|
claim_line_item return_reason claim_reason digital_asset export gift_card_batch import import_row
|
|
20
20
|
invitation newsletter_subscriber promotion refund stock_level stock_movement stock_reservation
|
|
21
|
-
stock_transfer company company_membership company_invitation seller file_upload file_upload_target].freeze
|
|
21
|
+
stock_transfer company company_membership company_invitation seller file_upload file_upload_target store].freeze
|
|
22
22
|
|
|
23
23
|
ADMIN_SERIALIZERS =
|
|
24
24
|
%i[country state locale applied_promotion discount tax_line cart delivery_zone delivery_profile
|
|
@@ -41,6 +41,7 @@ module Spree
|
|
|
41
41
|
store setup_task update_status api_key oauth_application oauth_access_token oauth_consent_request oauth_redirect
|
|
42
42
|
oauth_protected_resource allowed_origin webhook_endpoint webhook_event webhook_delivery invitation
|
|
43
43
|
invitation_acceptance_link role permission export saved_report import import_row import_mapping promotion
|
|
44
|
+
maintenance_task_run
|
|
44
45
|
promotion_action promotion_rule coupon_code price_adjustment_tier price_list price_rule
|
|
45
46
|
resource_translations email_template email_template_draft email_template_revision email_template_preview
|
|
46
47
|
email_template_sample_record file_upload file_upload_target].freeze
|
data/lib/spree/api/enum_types.rb
CHANGED
|
@@ -110,7 +110,8 @@ module Spree
|
|
|
110
110
|
type = "export type #{name} = (typeof #{constant})[number] | (string & {})"
|
|
111
111
|
type = "export type #{name} =\n | (typeof #{constant})[number]\n | (string & {})" if type.length > LINE_WIDTH
|
|
112
112
|
|
|
113
|
-
"
|
|
113
|
+
summary = Typelizer::OpenEnums.description(name) || "The built-in values of `#{name}`. Extensions may add more."
|
|
114
|
+
"\n/** #{summary} */\n#{line}\n#{type}\n"
|
|
114
115
|
end
|
|
115
116
|
end
|
|
116
117
|
end
|
data/lib/typelizer/open_enums.rb
CHANGED
|
@@ -34,6 +34,25 @@ module Typelizer
|
|
|
34
34
|
TaxRemittance UnitSystem
|
|
35
35
|
].freeze
|
|
36
36
|
|
|
37
|
+
# Open lists whose values are suggestions rather than built-ins an
|
|
38
|
+
# extension adds to, described as such wherever the list is published.
|
|
39
|
+
DESCRIPTIONS = {
|
|
40
|
+
'TimeZone' => 'Common IANA time zones; any other IANA time zone identifier is accepted too.'
|
|
41
|
+
}.freeze
|
|
42
|
+
|
|
43
|
+
# @param name [String, nil] a list's `enum_type_name`
|
|
44
|
+
# @return [String, nil] what the list's values are, when they are not built-ins
|
|
45
|
+
def self.description(name)
|
|
46
|
+
DESCRIPTIONS[name]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @param schema [Hash] the schema of any value in the list
|
|
50
|
+
# @param values [Array<String>] the values to suggest
|
|
51
|
+
# @return [Hash] a schema suggesting the values while accepting any other
|
|
52
|
+
def self.open_schema(schema, values)
|
|
53
|
+
{ anyOf: [schema.merge(enum: values), schema] }
|
|
54
|
+
end
|
|
55
|
+
|
|
37
56
|
# @param name [String, nil] a list's `enum_type_name`
|
|
38
57
|
# @return [Boolean] whether the list is closed: no value outside it is valid
|
|
39
58
|
def self.closed?(name)
|
|
@@ -63,7 +82,7 @@ module Typelizer
|
|
|
63
82
|
return super unless property.enum_type_name && property.enum.is_a?(Array) && !property.multi
|
|
64
83
|
return super if OpenEnums.closed?(property.enum_type_name)
|
|
65
84
|
|
|
66
|
-
open = {
|
|
85
|
+
open = OpenEnums.open_schema({ type: :string }, property.enum.compact)
|
|
67
86
|
# OpenAPI 3.0 ignores `nullable` beside `anyOf`, which is where
|
|
68
87
|
# Typelizer puts it, so the free-string branch carries it instead.
|
|
69
88
|
if property.nullable && !v31?(openapi_version)
|
|
@@ -72,7 +91,7 @@ module Typelizer
|
|
|
72
91
|
apply_nullable(open, property, openapi_version: openapi_version)
|
|
73
92
|
end
|
|
74
93
|
apply_metadata(open, property)
|
|
75
|
-
open[:description] ||= OPEN_ENUM_DESCRIPTION
|
|
94
|
+
open[:description] ||= OpenEnums.description(property.enum_type_name) || OPEN_ENUM_DESCRIPTION
|
|
76
95
|
open
|
|
77
96
|
end
|
|
78
97
|
end
|
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: 6.0.
|
|
4
|
+
version: 6.0.1
|
|
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-10-
|
|
11
|
+
date: 2026-10-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rswag-specs
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 6.0.
|
|
47
|
+
version: 6.0.1
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 6.0.
|
|
54
|
+
version: 6.0.1
|
|
55
55
|
description: Spree Commerce Store / Admin API and HTTP webhooks
|
|
56
56
|
email:
|
|
57
57
|
- hello@spreecommerce.org
|
|
@@ -65,6 +65,7 @@ files:
|
|
|
65
65
|
- app/controllers/concerns/spree/api/v3/admin/auth_cookies.rb
|
|
66
66
|
- app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb
|
|
67
67
|
- app/controllers/concerns/spree/api/v3/admin/embed_permissions.rb
|
|
68
|
+
- app/controllers/concerns/spree/api/v3/admin/maintenance_tasks_switch.rb
|
|
68
69
|
- app/controllers/concerns/spree/api/v3/admin/product_listing.rb
|
|
69
70
|
- app/controllers/concerns/spree/api/v3/admin/product_membership.rb
|
|
70
71
|
- app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb
|
|
@@ -190,6 +191,8 @@ files:
|
|
|
190
191
|
- app/controllers/spree/api/v3/admin/invitations/acceptance_links_controller.rb
|
|
191
192
|
- app/controllers/spree/api/v3/admin/invitations_controller.rb
|
|
192
193
|
- app/controllers/spree/api/v3/admin/locales_controller.rb
|
|
194
|
+
- app/controllers/spree/api/v3/admin/maintenance_task_runs/cancellations_controller.rb
|
|
195
|
+
- app/controllers/spree/api/v3/admin/maintenance_task_runs_controller.rb
|
|
193
196
|
- app/controllers/spree/api/v3/admin/markets_controller.rb
|
|
194
197
|
- app/controllers/spree/api/v3/admin/me_controller.rb
|
|
195
198
|
- app/controllers/spree/api/v3/admin/media_controller.rb
|
|
@@ -276,6 +279,7 @@ files:
|
|
|
276
279
|
- app/controllers/spree/api/v3/admin/translations_controller.rb
|
|
277
280
|
- app/controllers/spree/api/v3/admin/translations_coverage_controller.rb
|
|
278
281
|
- app/controllers/spree/api/v3/admin/updates_controller.rb
|
|
282
|
+
- app/controllers/spree/api/v3/admin/upgrade_steps_controller.rb
|
|
279
283
|
- app/controllers/spree/api/v3/admin/variants_controller.rb
|
|
280
284
|
- app/controllers/spree/api/v3/admin/webhook_deliveries_controller.rb
|
|
281
285
|
- app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb
|
|
@@ -386,6 +390,7 @@ files:
|
|
|
386
390
|
- app/controllers/spree/api/v3/store/products_controller.rb
|
|
387
391
|
- app/controllers/spree/api/v3/store/resource_controller.rb
|
|
388
392
|
- app/controllers/spree/api/v3/store/sellers_controller.rb
|
|
393
|
+
- app/controllers/spree/api/v3/store/store_controller.rb
|
|
389
394
|
- app/controllers/spree/api/v3/store/wishlist_items_controller.rb
|
|
390
395
|
- app/controllers/spree/api/v3/store/wishlists_controller.rb
|
|
391
396
|
- app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb
|
|
@@ -507,6 +512,7 @@ files:
|
|
|
507
512
|
- app/serializers/spree/api/v3/admin/invitation_serializer.rb
|
|
508
513
|
- app/serializers/spree/api/v3/admin/line_item_serializer.rb
|
|
509
514
|
- app/serializers/spree/api/v3/admin/locale_serializer.rb
|
|
515
|
+
- app/serializers/spree/api/v3/admin/maintenance_task_run_serializer.rb
|
|
510
516
|
- app/serializers/spree/api/v3/admin/market_serializer.rb
|
|
511
517
|
- app/serializers/spree/api/v3/admin/media_serializer.rb
|
|
512
518
|
- app/serializers/spree/api/v3/admin/membership_product_serializer.rb
|
|
@@ -735,6 +741,7 @@ files:
|
|
|
735
741
|
- app/serializers/spree/api/v3/stock_transfer_serializer.rb
|
|
736
742
|
- app/serializers/spree/api/v3/store_credit_event_serializer.rb
|
|
737
743
|
- app/serializers/spree/api/v3/store_credit_serializer.rb
|
|
744
|
+
- app/serializers/spree/api/v3/store_serializer.rb
|
|
738
745
|
- app/serializers/spree/api/v3/supplier_event_serializer.rb
|
|
739
746
|
- app/serializers/spree/api/v3/tax_category_serializer.rb
|
|
740
747
|
- app/serializers/spree/api/v3/tax_identifier_serializer.rb
|
|
@@ -831,9 +838,9 @@ licenses:
|
|
|
831
838
|
- BSD-3-Clause
|
|
832
839
|
metadata:
|
|
833
840
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
834
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.
|
|
841
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.1
|
|
835
842
|
documentation_uri: https://docs.spreecommerce.org/
|
|
836
|
-
source_code_uri: https://github.com/spree/spree/tree/v6.0.
|
|
843
|
+
source_code_uri: https://github.com/spree/spree/tree/v6.0.1
|
|
837
844
|
post_install_message:
|
|
838
845
|
rdoc_options: []
|
|
839
846
|
require_paths:
|