spree_api 5.4.0.beta4 → 5.4.0.beta6
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 +4 -4
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +12 -2
- data/app/controllers/concerns/spree/api/v3/http_caching.rb +10 -2
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +82 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +4 -1
- data/app/controllers/concerns/spree/api/v3/order_concern.rb +1 -6
- data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +31 -0
- data/app/controllers/concerns/spree/api/v3/resource_serializer.rb +30 -2
- data/app/controllers/concerns/spree/api/v3/security_headers.rb +4 -0
- data/app/controllers/spree/api/v3/admin/base_controller.rb +28 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +28 -0
- data/app/controllers/spree/api/v3/base_controller.rb +20 -1
- data/app/controllers/spree/api/v3/resource_controller.rb +35 -3
- data/app/controllers/spree/api/v3/store/auth_controller.rb +4 -24
- data/app/controllers/spree/api/v3/store/base_controller.rb +0 -11
- data/app/controllers/spree/api/v3/store/cart_controller.rb +6 -2
- data/app/controllers/spree/api/v3/store/categories/products_controller.rb +37 -0
- data/app/controllers/spree/api/v3/store/{taxons_controller.rb → categories_controller.rb} +8 -6
- data/app/controllers/spree/api/v3/store/countries_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/currencies_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +102 -0
- data/app/controllers/spree/api/v3/store/locales_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/markets_controller.rb +8 -0
- data/app/controllers/spree/api/v3/store/orders/payments_controller.rb +38 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +3 -2
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +9 -8
- data/app/controllers/spree/api/v3/store/products_controller.rb +12 -19
- data/app/jobs/spree/webhook_delivery_job.rb +4 -1
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/asset_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +8 -6
- data/app/serializers/spree/api/v3/admin/digital_link_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/image_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +36 -1
- data/app/serializers/spree/api/v3/admin/option_type_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/option_value_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/order_promotion_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +47 -6
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +56 -0
- data/app/serializers/spree/api/v3/admin/payment_source_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +23 -6
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/admin/shipment_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/admin/shipping_category_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/shipping_method_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/shipping_rate_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/tax_category_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +11 -14
- data/app/serializers/spree/api/v3/base_serializer.rb +21 -4
- data/app/serializers/spree/api/v3/category_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/customer_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +5 -21
- data/app/serializers/spree/api/v3/order_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/payment_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/product_serializer.rb +11 -11
- data/app/serializers/spree/api/v3/shipping_category_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/shipping_rate_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/tax_category_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
- data/app/services/spree/api/v3/filters_aggregator.rb +31 -25
- data/app/services/spree/webhooks/deliver_webhook.rb +23 -17
- data/app/subscribers/spree/webhook_event_subscriber.rb +1 -1
- data/config/initializers/alba.rb +1 -1
- data/config/initializers/typelizer.rb +26 -16
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +10 -10
- data/lib/spree/api/configuration.rb +3 -1
- data/lib/spree/api/dependencies.rb +31 -5
- data/lib/spree/api/engine.rb +15 -0
- data/lib/spree/api/openapi/schema_helper.rb +27 -7
- data/lib/spree/api/testing_support/v3/base.rb +24 -1
- metadata +43 -19
- data/app/controllers/spree/api/v3/store/customer/account_controller.rb +0 -38
- data/app/controllers/spree/api/v3/store/stores_controller.rb +0 -26
- data/app/controllers/spree/api/v3/store/taxonomies_controller.rb +0 -19
- data/app/controllers/spree/api/v3/store/taxons/products_controller.rb +0 -37
- data/app/serializers/spree/api/v3/admin/taxon_serializer.rb +0 -20
- data/app/serializers/spree/api/v3/admin/taxonomy_serializer.rb +0 -15
- data/app/serializers/spree/api/v3/store_serializer.rb +0 -38
- data/app/serializers/spree/api/v3/taxon_serializer.rb +0 -78
- data/app/serializers/spree/api/v3/taxonomy_serializer.rb +0 -33
- data/app/services/spree/api/v3/orders/update.rb +0 -105
|
@@ -7,7 +7,7 @@ module Spree
|
|
|
7
7
|
module SchemaHelper
|
|
8
8
|
extend self
|
|
9
9
|
|
|
10
|
-
# Reference a schema by name (e.g., '
|
|
10
|
+
# Reference a schema by name (e.g., 'Product', 'Order')
|
|
11
11
|
def ref(schema_name)
|
|
12
12
|
{ '$ref' => "#/components/schemas/#{schema_name}" }
|
|
13
13
|
end
|
|
@@ -40,10 +40,15 @@ module Spree
|
|
|
40
40
|
properties: {
|
|
41
41
|
page: { type: :integer, example: 1 },
|
|
42
42
|
limit: { type: :integer, example: 25 },
|
|
43
|
-
count: { type: :integer, example: 100 },
|
|
44
|
-
pages: { type: :integer, example: 4 }
|
|
43
|
+
count: { type: :integer, example: 100, description: 'Total number of records' },
|
|
44
|
+
pages: { type: :integer, example: 4, description: 'Total number of pages' },
|
|
45
|
+
from: { type: :integer, example: 1, description: 'Index of first record on this page' },
|
|
46
|
+
to: { type: :integer, example: 25, description: 'Index of last record on this page' },
|
|
47
|
+
in: { type: :integer, example: 25, description: 'Number of records on this page' },
|
|
48
|
+
previous: { type: :integer, nullable: true, example: nil, description: 'Previous page number' },
|
|
49
|
+
next: { type: :integer, nullable: true, example: 2, description: 'Next page number' }
|
|
45
50
|
},
|
|
46
|
-
required: %w[page limit count pages]
|
|
51
|
+
required: %w[page limit count pages from to in]
|
|
47
52
|
},
|
|
48
53
|
ErrorResponse: {
|
|
49
54
|
type: :object,
|
|
@@ -76,7 +81,7 @@ module Spree
|
|
|
76
81
|
type: :object,
|
|
77
82
|
properties: {
|
|
78
83
|
token: { type: :string, description: 'JWT access token' },
|
|
79
|
-
user: { '$ref' => '#/components/schemas/
|
|
84
|
+
user: { '$ref' => '#/components/schemas/Customer' }
|
|
80
85
|
},
|
|
81
86
|
required: %w[token user]
|
|
82
87
|
}
|
|
@@ -100,12 +105,27 @@ module Spree
|
|
|
100
105
|
|
|
101
106
|
def typelizer_schemas
|
|
102
107
|
with_typelizer_enabled do
|
|
103
|
-
schemas = Typelizer.openapi_schemas
|
|
104
|
-
schemas.each_value
|
|
108
|
+
schemas = Typelizer.openapi_schemas(writer_name: :store)
|
|
109
|
+
schemas.each_value do |s|
|
|
110
|
+
s[:'x-typelizer'] = true
|
|
111
|
+
strip_null_from_enums(s)
|
|
112
|
+
end
|
|
105
113
|
schemas
|
|
106
114
|
end
|
|
107
115
|
end
|
|
108
116
|
|
|
117
|
+
# Typelizer adds nil to enum arrays for nullable fields.
|
|
118
|
+
# OpenAPI 3.0 handles nullability via `nullable: true`, so the nil entry is redundant
|
|
119
|
+
# and causes issues with code generators.
|
|
120
|
+
def strip_null_from_enums(schema)
|
|
121
|
+
properties = schema[:properties] || {}
|
|
122
|
+
properties.each_value do |prop|
|
|
123
|
+
next unless prop.is_a?(Hash) && prop[:enum].is_a?(Array)
|
|
124
|
+
|
|
125
|
+
prop[:enum].reject!(&:nil?)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
109
129
|
# Typelizer is normally disabled in test/production, but we need it
|
|
110
130
|
# enabled to generate OpenAPI schemas from serializer type hints
|
|
111
131
|
def with_typelizer_enabled
|
|
@@ -13,7 +13,10 @@ module Spree
|
|
|
13
13
|
aud: audience,
|
|
14
14
|
exp: Time.current.to_i + expiration
|
|
15
15
|
}
|
|
16
|
-
secret =
|
|
16
|
+
secret = Spree::Api::Config[:jwt_secret_key].presence ||
|
|
17
|
+
Rails.application.credentials.jwt_secret_key ||
|
|
18
|
+
ENV['JWT_SECRET_KEY'] ||
|
|
19
|
+
Rails.application.secret_key_base
|
|
17
20
|
JWT.encode(payload, secret, 'HS256')
|
|
18
21
|
end
|
|
19
22
|
end
|
|
@@ -47,6 +50,26 @@ shared_context 'API v3 Store guest' do
|
|
|
47
50
|
let(:headers) { api_key_headers }
|
|
48
51
|
end
|
|
49
52
|
|
|
53
|
+
shared_context 'API v3 Admin' do
|
|
54
|
+
let(:store) { @default_store || create(:store, default: true) }
|
|
55
|
+
let(:secret_api_key) { create(:api_key, :secret, store: store) }
|
|
56
|
+
let(:api_key_headers) { { 'x-spree-api-key' => secret_api_key.plaintext_token } }
|
|
57
|
+
|
|
58
|
+
let(:admin_user) { create(:admin_user) }
|
|
59
|
+
let(:admin_jwt_token) { Spree::Api::V3::TestingSupport.generate_jwt(admin_user, audience: Spree::Api::V3::JwtAuthentication::JWT_AUDIENCE_ADMIN) }
|
|
60
|
+
let(:bearer_headers) { api_key_headers.merge('Authorization' => "Bearer #{admin_jwt_token}") }
|
|
61
|
+
|
|
62
|
+
before do
|
|
63
|
+
allow_any_instance_of(Spree::Api::V3::BaseController).to receive(:current_store).and_return(store)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
shared_context 'API v3 Admin authenticated' do
|
|
68
|
+
include_context 'API v3 Admin'
|
|
69
|
+
|
|
70
|
+
let(:headers) { bearer_headers }
|
|
71
|
+
end
|
|
72
|
+
|
|
50
73
|
# Shared examples for common response patterns
|
|
51
74
|
shared_examples 'returns 200 OK' do
|
|
52
75
|
it 'returns 200 status' do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.4.0.
|
|
4
|
+
version: 5.4.0.beta6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vendo Connect Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rswag-specs
|
|
@@ -72,28 +72,28 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: 0.10.0
|
|
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:
|
|
82
|
+
version: 0.10.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: spree_core
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - '='
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 5.4.0.
|
|
89
|
+
version: 5.4.0.beta6
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - '='
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 5.4.0.
|
|
96
|
+
version: 5.4.0.beta6
|
|
97
97
|
description: Spree's API
|
|
98
98
|
email:
|
|
99
99
|
- hello@spreecommerce.org
|
|
@@ -106,25 +106,31 @@ files:
|
|
|
106
106
|
- app/controllers/concerns/spree/api/v3/api_key_authentication.rb
|
|
107
107
|
- app/controllers/concerns/spree/api/v3/error_handler.rb
|
|
108
108
|
- app/controllers/concerns/spree/api/v3/http_caching.rb
|
|
109
|
+
- app/controllers/concerns/spree/api/v3/idempotent.rb
|
|
109
110
|
- app/controllers/concerns/spree/api/v3/jwt_authentication.rb
|
|
110
111
|
- app/controllers/concerns/spree/api/v3/locale_and_currency.rb
|
|
111
112
|
- app/controllers/concerns/spree/api/v3/order_concern.rb
|
|
112
113
|
- app/controllers/concerns/spree/api/v3/order_lock.rb
|
|
114
|
+
- app/controllers/concerns/spree/api/v3/rate_limit_headers.rb
|
|
113
115
|
- app/controllers/concerns/spree/api/v3/resource_serializer.rb
|
|
114
116
|
- app/controllers/concerns/spree/api/v3/security_headers.rb
|
|
117
|
+
- app/controllers/spree/api/v3/admin/base_controller.rb
|
|
118
|
+
- app/controllers/spree/api/v3/admin/resource_controller.rb
|
|
115
119
|
- app/controllers/spree/api/v3/base_controller.rb
|
|
116
120
|
- app/controllers/spree/api/v3/resource_controller.rb
|
|
117
121
|
- app/controllers/spree/api/v3/store/auth_controller.rb
|
|
118
122
|
- app/controllers/spree/api/v3/store/base_controller.rb
|
|
119
123
|
- app/controllers/spree/api/v3/store/cart_controller.rb
|
|
124
|
+
- app/controllers/spree/api/v3/store/categories/products_controller.rb
|
|
125
|
+
- app/controllers/spree/api/v3/store/categories_controller.rb
|
|
120
126
|
- app/controllers/spree/api/v3/store/countries_controller.rb
|
|
121
127
|
- app/controllers/spree/api/v3/store/currencies_controller.rb
|
|
122
|
-
- app/controllers/spree/api/v3/store/customer/account_controller.rb
|
|
123
128
|
- app/controllers/spree/api/v3/store/customer/addresses_controller.rb
|
|
124
129
|
- app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb
|
|
125
130
|
- app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb
|
|
126
131
|
- app/controllers/spree/api/v3/store/customer/orders_controller.rb
|
|
127
132
|
- app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb
|
|
133
|
+
- app/controllers/spree/api/v3/store/customers_controller.rb
|
|
128
134
|
- app/controllers/spree/api/v3/store/digitals_controller.rb
|
|
129
135
|
- app/controllers/spree/api/v3/store/locales_controller.rb
|
|
130
136
|
- app/controllers/spree/api/v3/store/markets/countries_controller.rb
|
|
@@ -140,26 +146,46 @@ files:
|
|
|
140
146
|
- app/controllers/spree/api/v3/store/products/filters_controller.rb
|
|
141
147
|
- app/controllers/spree/api/v3/store/products_controller.rb
|
|
142
148
|
- app/controllers/spree/api/v3/store/resource_controller.rb
|
|
143
|
-
- app/controllers/spree/api/v3/store/stores_controller.rb
|
|
144
|
-
- app/controllers/spree/api/v3/store/taxonomies_controller.rb
|
|
145
|
-
- app/controllers/spree/api/v3/store/taxons/products_controller.rb
|
|
146
|
-
- app/controllers/spree/api/v3/store/taxons_controller.rb
|
|
147
149
|
- app/controllers/spree/api/v3/store/wishlist_items_controller.rb
|
|
148
150
|
- app/controllers/spree/api/v3/store/wishlists_controller.rb
|
|
149
151
|
- app/jobs/spree/api_keys/mark_as_used.rb
|
|
150
152
|
- app/jobs/spree/webhook_delivery_job.rb
|
|
151
153
|
- app/serializers/spree/api/v3/address_serializer.rb
|
|
154
|
+
- app/serializers/spree/api/v3/admin/address_serializer.rb
|
|
155
|
+
- app/serializers/spree/api/v3/admin/adjustment_serializer.rb
|
|
156
|
+
- app/serializers/spree/api/v3/admin/admin_user_serializer.rb
|
|
157
|
+
- app/serializers/spree/api/v3/admin/asset_serializer.rb
|
|
158
|
+
- app/serializers/spree/api/v3/admin/category_serializer.rb
|
|
159
|
+
- app/serializers/spree/api/v3/admin/credit_card_serializer.rb
|
|
152
160
|
- app/serializers/spree/api/v3/admin/customer_serializer.rb
|
|
161
|
+
- app/serializers/spree/api/v3/admin/digital_link_serializer.rb
|
|
162
|
+
- app/serializers/spree/api/v3/admin/image_serializer.rb
|
|
153
163
|
- app/serializers/spree/api/v3/admin/line_item_serializer.rb
|
|
154
164
|
- app/serializers/spree/api/v3/admin/metafield_serializer.rb
|
|
165
|
+
- app/serializers/spree/api/v3/admin/option_type_serializer.rb
|
|
166
|
+
- app/serializers/spree/api/v3/admin/option_value_serializer.rb
|
|
167
|
+
- app/serializers/spree/api/v3/admin/order_promotion_serializer.rb
|
|
155
168
|
- app/serializers/spree/api/v3/admin/order_serializer.rb
|
|
169
|
+
- app/serializers/spree/api/v3/admin/payment_method_serializer.rb
|
|
170
|
+
- app/serializers/spree/api/v3/admin/payment_serializer.rb
|
|
171
|
+
- app/serializers/spree/api/v3/admin/payment_source_serializer.rb
|
|
156
172
|
- app/serializers/spree/api/v3/admin/price_serializer.rb
|
|
157
173
|
- app/serializers/spree/api/v3/admin/product_serializer.rb
|
|
158
|
-
- app/serializers/spree/api/v3/admin/
|
|
159
|
-
- app/serializers/spree/api/v3/admin/
|
|
174
|
+
- app/serializers/spree/api/v3/admin/refund_serializer.rb
|
|
175
|
+
- app/serializers/spree/api/v3/admin/reimbursement_serializer.rb
|
|
176
|
+
- app/serializers/spree/api/v3/admin/return_authorization_serializer.rb
|
|
177
|
+
- app/serializers/spree/api/v3/admin/shipment_serializer.rb
|
|
178
|
+
- app/serializers/spree/api/v3/admin/shipping_category_serializer.rb
|
|
179
|
+
- app/serializers/spree/api/v3/admin/shipping_method_serializer.rb
|
|
180
|
+
- app/serializers/spree/api/v3/admin/shipping_rate_serializer.rb
|
|
181
|
+
- app/serializers/spree/api/v3/admin/stock_item_serializer.rb
|
|
182
|
+
- app/serializers/spree/api/v3/admin/stock_location_serializer.rb
|
|
183
|
+
- app/serializers/spree/api/v3/admin/store_credit_serializer.rb
|
|
184
|
+
- app/serializers/spree/api/v3/admin/tax_category_serializer.rb
|
|
160
185
|
- app/serializers/spree/api/v3/admin/variant_serializer.rb
|
|
161
186
|
- app/serializers/spree/api/v3/asset_serializer.rb
|
|
162
187
|
- app/serializers/spree/api/v3/base_serializer.rb
|
|
188
|
+
- app/serializers/spree/api/v3/category_serializer.rb
|
|
163
189
|
- app/serializers/spree/api/v3/country_serializer.rb
|
|
164
190
|
- app/serializers/spree/api/v3/credit_card_serializer.rb
|
|
165
191
|
- app/serializers/spree/api/v3/currency_serializer.rb
|
|
@@ -197,6 +223,7 @@ files:
|
|
|
197
223
|
- app/serializers/spree/api/v3/return_authorization_serializer.rb
|
|
198
224
|
- app/serializers/spree/api/v3/return_item_serializer.rb
|
|
199
225
|
- app/serializers/spree/api/v3/shipment_serializer.rb
|
|
226
|
+
- app/serializers/spree/api/v3/shipping_category_serializer.rb
|
|
200
227
|
- app/serializers/spree/api/v3/shipping_method_serializer.rb
|
|
201
228
|
- app/serializers/spree/api/v3/shipping_rate_serializer.rb
|
|
202
229
|
- app/serializers/spree/api/v3/state_serializer.rb
|
|
@@ -205,14 +232,11 @@ files:
|
|
|
205
232
|
- app/serializers/spree/api/v3/stock_movement_serializer.rb
|
|
206
233
|
- app/serializers/spree/api/v3/stock_transfer_serializer.rb
|
|
207
234
|
- app/serializers/spree/api/v3/store_credit_serializer.rb
|
|
208
|
-
- app/serializers/spree/api/v3/
|
|
209
|
-
- app/serializers/spree/api/v3/taxon_serializer.rb
|
|
210
|
-
- app/serializers/spree/api/v3/taxonomy_serializer.rb
|
|
235
|
+
- app/serializers/spree/api/v3/tax_category_serializer.rb
|
|
211
236
|
- app/serializers/spree/api/v3/variant_serializer.rb
|
|
212
237
|
- app/serializers/spree/api/v3/wished_item_serializer.rb
|
|
213
238
|
- app/serializers/spree/api/v3/wishlist_serializer.rb
|
|
214
239
|
- app/services/spree/api/v3/filters_aggregator.rb
|
|
215
|
-
- app/services/spree/api/v3/orders/update.rb
|
|
216
240
|
- app/services/spree/webhooks/deliver_webhook.rb
|
|
217
241
|
- app/subscribers/spree/webhook_event_subscriber.rb
|
|
218
242
|
- config/brakeman.ignore
|
|
@@ -239,9 +263,9 @@ licenses:
|
|
|
239
263
|
- BSD-3-Clause
|
|
240
264
|
metadata:
|
|
241
265
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
242
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.
|
|
266
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta6
|
|
243
267
|
documentation_uri: https://docs.spreecommerce.org/
|
|
244
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.
|
|
268
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta6
|
|
245
269
|
post_install_message:
|
|
246
270
|
rdoc_options: []
|
|
247
271
|
require_paths:
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Store
|
|
5
|
-
module Customer
|
|
6
|
-
class AccountController < Store::BaseController
|
|
7
|
-
prepend_before_action :require_authentication!
|
|
8
|
-
|
|
9
|
-
# GET /api/v3/store/customer
|
|
10
|
-
def show
|
|
11
|
-
render json: serialize_resource(current_user)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# PATCH /api/v3/store/customer
|
|
15
|
-
def update
|
|
16
|
-
if current_user.update(permitted_params)
|
|
17
|
-
render json: serialize_resource(current_user)
|
|
18
|
-
else
|
|
19
|
-
render_errors(current_user.errors)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
protected
|
|
24
|
-
|
|
25
|
-
def serializer_class
|
|
26
|
-
Spree.api.customer_serializer
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def permitted_params
|
|
30
|
-
params.permit(:email, :password, :password_confirmation, :first_name, :last_name,
|
|
31
|
-
:accepts_email_marketing, :phone)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Store
|
|
5
|
-
class StoresController < ResourceController
|
|
6
|
-
skip_before_action :set_resource
|
|
7
|
-
|
|
8
|
-
# GET /api/v3/store/store
|
|
9
|
-
def show
|
|
10
|
-
render json: serialize_resource(current_store)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
protected
|
|
14
|
-
|
|
15
|
-
def model_class
|
|
16
|
-
Spree::Store
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def serializer_class
|
|
20
|
-
Spree.api.store_serializer
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Store
|
|
5
|
-
class TaxonomiesController < ResourceController
|
|
6
|
-
protected
|
|
7
|
-
|
|
8
|
-
def model_class
|
|
9
|
-
Spree::Taxonomy
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def serializer_class
|
|
13
|
-
Spree.api.taxonomy_serializer
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Store
|
|
5
|
-
module Taxons
|
|
6
|
-
class ProductsController < Store::ProductsController
|
|
7
|
-
before_action :set_taxon
|
|
8
|
-
|
|
9
|
-
protected
|
|
10
|
-
|
|
11
|
-
def set_taxon
|
|
12
|
-
@taxon = find_taxon
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def scope
|
|
16
|
-
super.in_taxon(@taxon)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def find_taxon
|
|
22
|
-
id = params[:taxon_id]
|
|
23
|
-
taxon_scope = Spree::Taxon.for_store(current_store).accessible_by(current_ability, :show)
|
|
24
|
-
taxon_scope = taxon_scope.i18n if Spree::Taxon.include?(Spree::TranslatableResource)
|
|
25
|
-
|
|
26
|
-
if id.to_s.start_with?('txn_')
|
|
27
|
-
taxon_scope.find_by_prefix_id!(id)
|
|
28
|
-
else
|
|
29
|
-
find_with_fallback_default_locale { taxon_scope.i18n.find_by!(permalink: id) }
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Admin
|
|
5
|
-
# Admin API Taxon Serializer
|
|
6
|
-
# Full taxon data including admin-only fields
|
|
7
|
-
class TaxonSerializer < V3::TaxonSerializer
|
|
8
|
-
typelize lft: :number, rgt: :number
|
|
9
|
-
|
|
10
|
-
# Nested set columns for tree operations
|
|
11
|
-
attributes :lft, :rgt
|
|
12
|
-
|
|
13
|
-
many :metafields,
|
|
14
|
-
resource: Spree.api.admin_metafield_serializer,
|
|
15
|
-
if: proc { params[:expand]&.include?('metafields') }
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
module Admin
|
|
5
|
-
# Admin API Taxonomy Serializer
|
|
6
|
-
# Full taxonomy data including admin-only fields
|
|
7
|
-
class TaxonomySerializer < V3::TaxonomySerializer
|
|
8
|
-
many :metafields,
|
|
9
|
-
resource: Spree.api.admin_metafield_serializer,
|
|
10
|
-
if: proc { params[:expand]&.include?('metafields') }
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
class StoreSerializer < BaseSerializer
|
|
5
|
-
typelize name: :string, url: :string, meta_description: [:string, nullable: true],
|
|
6
|
-
meta_keywords: [:string, nullable: true], seo_title: [:string, nullable: true],
|
|
7
|
-
code: :string,
|
|
8
|
-
facebook: [:string, nullable: true], twitter: [:string, nullable: true], instagram: [:string, nullable: true],
|
|
9
|
-
customer_support_email: [:string, nullable: true],
|
|
10
|
-
favicon_image_url: [:string, nullable: true],
|
|
11
|
-
logo_image_url: [:string, nullable: true], social_image_url: [:string, nullable: true]
|
|
12
|
-
|
|
13
|
-
attributes :name, :url, :meta_description, :meta_keywords, :seo_title,
|
|
14
|
-
:code, :facebook, :twitter,
|
|
15
|
-
:instagram, :customer_support_email,
|
|
16
|
-
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
-
|
|
18
|
-
attribute :favicon_image_url do |store|
|
|
19
|
-
image_url_for(store.favicon_image)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
attribute :logo_image_url do |store|
|
|
23
|
-
image_url_for(store.logo)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
attribute :social_image_url do |store|
|
|
27
|
-
image_url_for(store.social_image)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
many :payment_methods,
|
|
31
|
-
proc { |payment_methods, _params|
|
|
32
|
-
payment_methods.select { |pm| pm.available_on_front_end? && pm.active? }
|
|
33
|
-
},
|
|
34
|
-
resource: Spree.api.payment_method_serializer
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
class TaxonSerializer < BaseSerializer
|
|
5
|
-
typelize name: :string, permalink: :string, position: :number, depth: :number,
|
|
6
|
-
meta_title: [:string, nullable: true], meta_description: [:string, nullable: true], meta_keywords: [:string, nullable: true],
|
|
7
|
-
parent_id: [:string, nullable: true], taxonomy_id: :string, children_count: :number,
|
|
8
|
-
description: :string, description_html: :string,
|
|
9
|
-
image_url: [:string, nullable: true], square_image_url: [:string, nullable: true],
|
|
10
|
-
is_root: :boolean, is_child: :boolean, is_leaf: :boolean
|
|
11
|
-
|
|
12
|
-
attributes :name, :permalink, :position, :depth,
|
|
13
|
-
:meta_title, :meta_description, :meta_keywords,
|
|
14
|
-
:children_count,
|
|
15
|
-
created_at: :iso8601, updated_at: :iso8601
|
|
16
|
-
|
|
17
|
-
attribute :parent_id do |taxon|
|
|
18
|
-
taxon.parent&.prefixed_id
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
attribute :taxonomy_id do |taxon|
|
|
22
|
-
taxon.taxonomy&.prefixed_id
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
attribute :description do |taxon|
|
|
26
|
-
taxon.description&.to_plain_text.to_s
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
attribute :description_html do |taxon|
|
|
30
|
-
taxon.description&.body&.to_s.to_s
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
attribute :image_url do |taxon|
|
|
34
|
-
image_url_for(taxon.image)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
attribute :square_image_url do |taxon|
|
|
38
|
-
image_url_for(taxon.square_image)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
attribute :is_root do |taxon|
|
|
42
|
-
taxon.root?
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
attribute :is_child do |taxon|
|
|
46
|
-
taxon.child?
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
attribute :is_leaf do |taxon|
|
|
50
|
-
taxon.leaf?
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Conditional associations
|
|
54
|
-
# Note: We pass empty expand to nested taxons to prevent infinite recursion
|
|
55
|
-
# (e.g., ancestors trying to load their own ancestors)
|
|
56
|
-
one :parent,
|
|
57
|
-
resource: Spree.api.taxon_serializer,
|
|
58
|
-
if: proc { params[:expand]&.include?('parent') },
|
|
59
|
-
params: { expand: [] }
|
|
60
|
-
|
|
61
|
-
many :children,
|
|
62
|
-
resource: Spree.api.taxon_serializer,
|
|
63
|
-
if: proc { params[:expand]&.include?('children') },
|
|
64
|
-
params: { expand: [] }
|
|
65
|
-
|
|
66
|
-
many :ancestors,
|
|
67
|
-
resource: Spree.api.taxon_serializer,
|
|
68
|
-
if: proc { params[:expand]&.include?('ancestors') },
|
|
69
|
-
params: { expand: [] }
|
|
70
|
-
|
|
71
|
-
many :public_metafields,
|
|
72
|
-
key: :metafields,
|
|
73
|
-
resource: Spree.api.metafield_serializer,
|
|
74
|
-
if: proc { params[:expand]&.include?('metafields') }
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Spree
|
|
2
|
-
module Api
|
|
3
|
-
module V3
|
|
4
|
-
class TaxonomySerializer < BaseSerializer
|
|
5
|
-
typelize name: :string, position: :number, root_id: [:string, nullable: true]
|
|
6
|
-
|
|
7
|
-
attributes :name, :position,
|
|
8
|
-
created_at: :iso8601, updated_at: :iso8601
|
|
9
|
-
|
|
10
|
-
attribute :root_id do |taxonomy|
|
|
11
|
-
taxonomy.root&.prefixed_id
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Conditional associations
|
|
15
|
-
# Note: We pass empty expand to nested taxons to prevent infinite recursion
|
|
16
|
-
one :root,
|
|
17
|
-
resource: Spree.api.taxon_serializer,
|
|
18
|
-
if: proc { params[:expand]&.include?('root') },
|
|
19
|
-
params: { expand: [] }
|
|
20
|
-
|
|
21
|
-
many :taxons,
|
|
22
|
-
resource: Spree.api.taxon_serializer,
|
|
23
|
-
if: proc { params[:expand]&.include?('taxons') },
|
|
24
|
-
params: { expand: [] }
|
|
25
|
-
|
|
26
|
-
many :public_metafields,
|
|
27
|
-
key: :metafields,
|
|
28
|
-
resource: Spree.api.metafield_serializer,
|
|
29
|
-
if: proc { params[:expand]&.include?('metafields') }
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|