spree_api 4.2.0.beta → 4.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d7a31de48e37ea579244e2c62fb47e2891f5663b095aa8f49de99ecc24abc1e
4
- data.tar.gz: 6d5470cb5181210801f5210f46b1e0fc7a3d704b8cd930f372a0544b5861713b
3
+ metadata.gz: 6ca201da4875f262850ded05d71868a5161f3e8055c6047b544bef63f536e5d3
4
+ data.tar.gz: cfc2c37c3bdd2041b91cfa4cffad2643f4131a69fb8793b6eb6c793e5ae17ee6
5
5
  SHA512:
6
- metadata.gz: 0b79cb583334e0813cde900718b6062a3601761aba2093159846a383c684219735ebf6861056a24376701d072e766eb74b2a280ef9dacf0f4993f67237dc6c01
7
- data.tar.gz: 2429b6091f2e256743136cef85b42a65cfd53f9daadc6b1a5f3945c0fba1b9a1f882491edc85f0cf8a22cd7a7ee8dbed30c174f53e3d139b7d62eda8fe91c4a4
6
+ metadata.gz: dfd25ddcca9e0fb04dd7141cfa5fb153ff43de9f0137fa3d78618300a71372c5057de303ab0728da69aa08c3e0a0eba0675493bf0bf42caa8f325207fb94603c
7
+ data.tar.gz: 4798f5ddbfc85d778adcfd0509ea7d2361f1464a61ae6a194d4d8f7d1014738e570a89c17b95c735317f25394ca8ad75c148e1fc81d4a2f195a986a8ac63f55a
@@ -53,7 +53,12 @@ module Spree
53
53
  end
54
54
 
55
55
  def spree_current_user
56
- @spree_current_user ||= Spree.user_class.find_by(id: doorkeeper_token.resource_owner_id) if doorkeeper_token
56
+ return nil unless doorkeeper_token
57
+ return @spree_current_user if @spree_current_user
58
+
59
+ doorkeeper_authorize!
60
+
61
+ @spree_current_user ||= Spree.user_class.find_by(id: doorkeeper_token.resource_owner_id)
57
62
  end
58
63
 
59
64
  def spree_authorize!(action, subject, *args)
@@ -0,0 +1,77 @@
1
+ module Spree
2
+ module Api
3
+ module V2
4
+ module Storefront
5
+ module Account
6
+ class AddressesController < ::Spree::Api::V2::BaseController
7
+ before_action :require_spree_current_user
8
+
9
+ def index
10
+ render_serialized_payload { serialize_collection(collection) }
11
+ end
12
+
13
+ def create
14
+ result = create_service.call(user: spree_current_user, address_params: address_params)
15
+ render_result(result)
16
+ end
17
+
18
+ def update
19
+ result = update_service.call(address: resource, address_params: address_params)
20
+ render_result(result)
21
+ end
22
+
23
+ private
24
+
25
+ def collection
26
+ collection_finder.new(scope: scope, params: params).execute
27
+ end
28
+
29
+ def resource
30
+ @resource ||= scope.find(params[:id])
31
+ end
32
+
33
+ def scope
34
+ spree_current_user.addresses
35
+ end
36
+
37
+ def collection_finder
38
+ Spree::Api::Dependencies.storefront_address_finder.constantize
39
+ end
40
+
41
+ def collection_serializer
42
+ Spree::Api::Dependencies.storefront_address_serializer.constantize
43
+ end
44
+
45
+ def resource_serializer
46
+ Spree::Api::Dependencies.storefront_address_serializer.constantize
47
+ end
48
+
49
+ def serialize_collection(collection)
50
+ collection_serializer.new(collection).serializable_hash
51
+ end
52
+
53
+ def create_service
54
+ Spree::Api::Dependencies.storefront_account_create_address_service.constantize
55
+ end
56
+
57
+ def update_service
58
+ Spree::Api::Dependencies.storefront_account_update_address_service.constantize
59
+ end
60
+
61
+ def address_params
62
+ params.require(:address).permit(permitted_address_attributes)
63
+ end
64
+
65
+ def render_result(result)
66
+ if result.success?
67
+ render_serialized_payload { serialize_resource(result.value) }
68
+ else
69
+ render_error_payload(result.error)
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -125,8 +125,7 @@ module Spree
125
125
  def serialize_shipping_rates(shipments)
126
126
  shipping_rates_serializer.new(
127
127
  shipments,
128
- include: [:shipping_rates],
129
- params: { show_rates: true }
128
+ include: [:shipping_rates, :stock_location]
130
129
  ).serializable_hash
131
130
  end
132
131
  end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Api
3
+ module V2
4
+ module Storefront
5
+ class StoresController < ::Spree::Api::V2::BaseController
6
+ def show
7
+ render_serialized_payload { serialize_resource(resource) }
8
+ end
9
+
10
+ private
11
+
12
+ def scope
13
+ Spree::Store
14
+ end
15
+
16
+ def resource
17
+ scope.find_by!(code: params[:code])
18
+ end
19
+
20
+ def resource_serializer
21
+ Spree::Api::Dependencies.storefront_store_serializer.constantize
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -51,7 +51,7 @@ module Spree
51
51
  children: node_includes,
52
52
  taxonomy: [root: node_includes],
53
53
  products: [],
54
- icon: []
54
+ icon: [attachment_attachment: :blob]
55
55
  }
56
56
  end
57
57
  end
@@ -116,7 +116,7 @@ module Spree
116
116
  @@address_attributes = [
117
117
  :id, :firstname, :lastname, :full_name, :address1, :address2, :city,
118
118
  :zipcode, :phone, :company, :alternative_phone, :country_id, :state_id,
119
- :state_name, :state_text
119
+ :label, :state_name, :state_text
120
120
  ]
121
121
 
122
122
  @@country_attributes = [:id, :iso_name, :iso, :iso3, :name, :numcode]
@@ -13,7 +13,9 @@ module Spree
13
13
  :storefront_country_serializer, :storefront_current_order_finder, :storefront_completed_order_finder, :storefront_order_sorter,
14
14
  :storefront_collection_paginator, :storefront_user_serializer, :storefront_products_sorter, :storefront_products_finder,
15
15
  :storefront_product_serializer, :storefront_taxon_serializer, :storefront_taxon_finder, :storefront_find_by_variant_finder,
16
- :storefront_cart_update_service, :storefront_cart_estimate_shipping_rates_service, :storefront_estimated_shipment_serializer
16
+ :storefront_cart_update_service, :storefront_cart_estimate_shipping_rates_service, :storefront_estimated_shipment_serializer,
17
+ :storefront_store_serializer, :storefront_address_serializer,
18
+ :storefront_account_create_address_service, :storefront_account_update_address_service, :storefront_address_finder
17
19
  ].freeze
18
20
 
19
21
  attr_accessor *INJECTION_POINTS
@@ -48,7 +50,12 @@ module Spree
48
50
  @storefront_checkout_remove_store_credit_service = Spree::Dependencies.checkout_remove_store_credit_service
49
51
  @storefront_checkout_get_shipping_rates_service = Spree::Dependencies.checkout_get_shipping_rates_service
50
52
 
53
+ # account services
54
+ @storefront_account_create_address_service = Spree::Dependencies.account_create_address_service
55
+ @storefront_account_update_address_service = Spree::Dependencies.account_update_address_service
56
+
51
57
  # serializers
58
+ @storefront_address_serializer = 'Spree::V2::Storefront::AddressSerializer'
52
59
  @storefront_cart_serializer = 'Spree::V2::Storefront::CartSerializer'
53
60
  @storefront_credit_card_serializer = 'Spree::V2::Storefront::CreditCardSerializer'
54
61
  @storefront_country_serializer = 'Spree::V2::Storefront::CountrySerializer'
@@ -58,6 +65,7 @@ module Spree
58
65
  @storefront_payment_method_serializer = 'Spree::V2::Storefront::PaymentMethodSerializer'
59
66
  @storefront_product_serializer = 'Spree::V2::Storefront::ProductSerializer'
60
67
  @storefront_estimated_shipment_serializer = 'Spree::V2::Storefront::EstimatedShippingRateSerializer'
68
+ @storefront_store_serializer = 'Spree::V2::Storefront::StoreSerializer'
61
69
 
62
70
  # sorters
63
71
  @storefront_order_sorter = Spree::Dependencies.order_sorter
@@ -67,6 +75,7 @@ module Spree
67
75
  @storefront_collection_paginator = Spree::Dependencies.collection_paginator
68
76
 
69
77
  # finders
78
+ @storefront_address_finder = Spree::Dependencies.address_finder
70
79
  @storefront_country_finder = Spree::Dependencies.country_finder
71
80
  @storefront_current_order_finder = Spree::Dependencies.current_order_finder
72
81
  @storefront_completed_order_finder = Spree::Dependencies.completed_order_finder
@@ -5,7 +5,7 @@ module Spree
5
5
  set_type :address
6
6
 
7
7
  attributes :firstname, :lastname, :address1, :address2, :city, :zipcode, :phone, :state_name,
8
- :company, :country_name, :country_iso3, :country_iso
8
+ :company, :country_name, :country_iso3, :country_iso, :label
9
9
 
10
10
  attribute :state_code, &:state_abbr
11
11
  attribute :state_name, &:state_name_text
@@ -8,7 +8,8 @@ module Spree
8
8
  :updated_at, :completed_at, :included_tax_total, :additional_tax_total, :display_additional_tax_total,
9
9
  :display_included_tax_total, :tax_total, :currency, :state, :token, :email,
10
10
  :display_item_total, :display_ship_total, :display_adjustment_total, :display_tax_total,
11
- :promo_total, :display_promo_total, :item_count, :special_instructions, :display_total
11
+ :promo_total, :display_promo_total, :item_count, :special_instructions, :display_total,
12
+ :pre_tax_item_amount, :display_pre_tax_item_amount, :pre_tax_total, :display_pre_tax_total
12
13
 
13
14
  has_many :line_items
14
15
  has_many :variants
@@ -9,7 +9,8 @@ module Spree
9
9
  :display_adjustment_total, :additional_tax_total,
10
10
  :discounted_amount, :display_discounted_amount,
11
11
  :display_additional_tax_total, :promo_total, :display_promo_total,
12
- :included_tax_total, :display_included_tax_total
12
+ :included_tax_total, :display_included_tax_total,
13
+ :pre_tax_amount, :display_pre_tax_amount
13
14
 
14
15
  belongs_to :variant
15
16
  end
@@ -9,7 +9,9 @@ module Spree
9
9
 
10
10
  attribute :free, &:free?
11
11
 
12
- has_many :shipping_rates, if: proc { |_record, params| params&.dig(:show_rates) }
12
+ has_many :shipping_rates
13
+
14
+ belongs_to :stock_location
13
15
  end
14
16
  end
15
17
  end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module V2
3
+ module Storefront
4
+ class StockLocationSerializer < BaseSerializer
5
+ set_type :stock_location
6
+
7
+ attributes :name
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Spree
2
+ module V2
3
+ module Storefront
4
+ class StoreSerializer < BaseSerializer
5
+ set_type :store
6
+
7
+ attributes :name, :url, :meta_description, :meta_keywords, :seo_title, :default_currency, :default, :supported_currencies, :facebook,
8
+ :twitter, :instagram, :default_locale, :customer_support_email, :default_country_id, :description,
9
+ :address, :contact_phone, :contact_email
10
+ end
11
+ end
12
+ end
13
+ end
@@ -152,6 +152,7 @@ Spree::Core::Engine.add_routes do
152
152
  resource :account, controller: :account, only: %i[show]
153
153
 
154
154
  namespace :account do
155
+ resources :addresses, controller: :addresses, only: %i[index create update]
155
156
  resources :credit_cards, controller: :credit_cards, only: %i[index show]
156
157
  resources :orders, controller: :orders, only: %i[index show]
157
158
  end
@@ -161,6 +162,7 @@ Spree::Core::Engine.add_routes do
161
162
  get '/order_status/:number', to: 'order_status#show', as: :order_status
162
163
  resources :products, only: %i[index show]
163
164
  resources :taxons, only: %i[index show], id: /.+/
165
+ get '/stores/:code', to: 'stores#show', as: :store
164
166
  end
165
167
  end
166
168
 
@@ -52,7 +52,7 @@ paths:
52
52
  post:
53
53
  description: >-
54
54
  Creates a new account
55
-
55
+
56
56
  This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
57
57
  tags:
58
58
  - Account
@@ -92,7 +92,7 @@ paths:
92
92
  patch:
93
93
  description: >-
94
94
  Updates user account
95
-
95
+
96
96
  This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
97
97
  tags:
98
98
  - Account
@@ -131,6 +131,85 @@ paths:
131
131
  $ref: '#/components/schemas/Error'
132
132
  security:
133
133
  - bearerAuth: []
134
+ '/account/addresses':
135
+ get:
136
+ description: >-
137
+ Returns a list of Addresses for the signed in User
138
+ tags:
139
+ - Account
140
+ operationId: 'Addresses list'
141
+ responses:
142
+ '200':
143
+ description: Listing user addresses.
144
+ content:
145
+ application/vnd.api+json:
146
+ schema:
147
+ $ref: '#/components/schemas/AddressList'
148
+ '403':
149
+ $ref: '#/components/responses/403Forbidden'
150
+ security:
151
+ - bearerAuth: []
152
+ post:
153
+ description: >-
154
+ Create a new Address for the signed in User
155
+ tags:
156
+ - Account
157
+ operationId: 'Create Address'
158
+ requestBody:
159
+ required: true
160
+ content:
161
+ application/vnd.api+json:
162
+ schema:
163
+ type: object
164
+ properties:
165
+ address:
166
+ $ref: '#/components/schemas/AddressPayload'
167
+ responses:
168
+ '200':
169
+ description: Created Address.
170
+ content:
171
+ application/vnd.api+json:
172
+ schema:
173
+ $ref: '#/components/schemas/AddressList'
174
+ '403':
175
+ $ref: '#/components/responses/403Forbidden'
176
+ security:
177
+ - bearerAuth: []
178
+ '/account/addresses/{id}':
179
+ patch:
180
+ description: >-
181
+ Update selected Address for the signed in User
182
+ tags:
183
+ - Account
184
+ operationId: 'Update Address'
185
+ parameters:
186
+ - name: id
187
+ in: path
188
+ required: true
189
+ description: Selected Address for update
190
+ schema:
191
+ type: string
192
+ example: '1'
193
+ requestBody:
194
+ required: true
195
+ content:
196
+ application/vnd.api+json:
197
+ schema:
198
+ type: object
199
+ properties:
200
+ address:
201
+ $ref: '#/components/schemas/AddressPayload'
202
+ responses:
203
+ '200':
204
+ description: Updated Address.
205
+ content:
206
+ application/vnd.api+json:
207
+ schema:
208
+ $ref: '#/components/schemas/AddressList'
209
+ '403':
210
+ $ref: '#/components/responses/403Forbidden'
211
+ security:
212
+ - bearerAuth: []
134
213
  '/account/credit_cards':
135
214
  get:
136
215
  description: >-
@@ -1206,6 +1285,14 @@ components:
1206
1285
  company:
1207
1286
  type: string
1208
1287
  example: 'Google Inc.'
1288
+ AddressList:
1289
+ required:
1290
+ - data
1291
+ properties:
1292
+ data:
1293
+ type: array
1294
+ items:
1295
+ $ref: '#/components/schemas/Address'
1209
1296
  Cart:
1210
1297
  required:
1211
1298
  - data
@@ -1372,6 +1459,18 @@ components:
1372
1459
  display_tax_total:
1373
1460
  type: string
1374
1461
  example: '$10.00'
1462
+ pre_tax_item_amount:
1463
+ type: string
1464
+ example: '17.00'
1465
+ display_pre_tax_item_amount:
1466
+ type: string
1467
+ example: '$17.00'
1468
+ pre_tax_total:
1469
+ type: string
1470
+ example: '20.00'
1471
+ display_pre_tax_total:
1472
+ type: string
1473
+ example: '$20.00'
1375
1474
  item_count:
1376
1475
  type: number
1377
1476
  example: 2
@@ -1584,6 +1683,12 @@ components:
1584
1683
  display_discounted_amount:
1585
1684
  type: string
1586
1685
  example: '$125.00'
1686
+ pre_tax_amount:
1687
+ type: string
1688
+ example: '125.0'
1689
+ display_pre_tax_amount:
1690
+ type: string
1691
+ example: '$125.00'
1587
1692
  promo_total:
1588
1693
  type: string
1589
1694
  example: '-5.0'
@@ -2287,6 +2392,11 @@ components:
2287
2392
  $ref: '#/components/schemas/ShipmentAttributes'
2288
2393
  relationships:
2289
2394
  properties:
2395
+ stock_location:
2396
+ type: object
2397
+ properties:
2398
+ data:
2399
+ $ref: '#/components/schemas/Relation'
2290
2400
  shipping_rates:
2291
2401
  properties:
2292
2402
  data:
@@ -2342,6 +2452,7 @@ components:
2342
2452
  items:
2343
2453
  oneOf:
2344
2454
  - $ref: '#/components/schemas/ShippingRate'
2455
+ - $ref: '#/components/schemas/StockLocation'
2345
2456
  EstimateShippingRatesList:
2346
2457
  required:
2347
2458
  - data
@@ -2396,6 +2507,20 @@ components:
2396
2507
  type: integer
2397
2508
  example: 1
2398
2509
  description: 'ID of a Shipping Method. You will need this for the Checkout Update action'
2510
+ StockLocation:
2511
+ properties:
2512
+ id:
2513
+ type: string
2514
+ example: '1'
2515
+ type:
2516
+ type: string
2517
+ default: 'stock_location'
2518
+ attributes:
2519
+ type: object
2520
+ properties:
2521
+ name:
2522
+ type: string
2523
+ example: 'Main Warehouse'
2399
2524
  Account:
2400
2525
  required:
2401
2526
  - data
@@ -4,7 +4,7 @@ shared_context 'API v2 tokens' do
4
4
  let(:headers_order_token) { { 'X-Spree-Order-Token' => order.token } }
5
5
  end
6
6
 
7
- [200, 201, 400, 404, 403, 422].each do |status_code|
7
+ [200, 201, 400, 401, 404, 403, 422].each do |status_code|
8
8
  shared_examples "returns #{status_code} HTTP status" do
9
9
  it "returns #{status_code}" do
10
10
  expect(response.status).to eq(status_code)
@@ -48,6 +48,10 @@ shared_examples 'returns valid cart JSON' do
48
48
  expect(json_response['data']).to have_attribute(:promo_total).with_value(order.promo_total.to_s)
49
49
  expect(json_response['data']).to have_attribute(:display_promo_total).with_value(order.display_promo_total.to_s)
50
50
  expect(json_response['data']).to have_attribute(:display_total).with_value(order.display_total.to_s)
51
+ expect(json_response['data']).to have_attribute(:pre_tax_item_amount).with_value(order.pre_tax_item_amount.to_s)
52
+ expect(json_response['data']).to have_attribute(:display_pre_tax_item_amount).with_value(order.display_pre_tax_item_amount.to_s)
53
+ expect(json_response['data']).to have_attribute(:pre_tax_total).with_value(order.pre_tax_total.to_s)
54
+ expect(json_response['data']).to have_attribute(:display_pre_tax_total).with_value(order.display_pre_tax_total.to_s)
51
55
  expect(json_response['data']).to have_relationships(:user, :line_items, :variants, :billing_address, :shipping_address, :payments, :shipments, :promotions)
52
56
  end
53
57
  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: 4.2.0.beta
4
+ version: 4.2.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-07 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.0.beta
33
+ version: 4.2.0.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 4.2.0.beta
40
+ version: 4.2.0.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rabl
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -133,6 +133,7 @@ files:
133
133
  - app/controllers/spree/api/v1/variants_controller.rb
134
134
  - app/controllers/spree/api/v1/zones_controller.rb
135
135
  - app/controllers/spree/api/v2/base_controller.rb
136
+ - app/controllers/spree/api/v2/storefront/account/addresses_controller.rb
136
137
  - app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb
137
138
  - app/controllers/spree/api/v2/storefront/account/orders_controller.rb
138
139
  - app/controllers/spree/api/v2/storefront/account_controller.rb
@@ -141,6 +142,7 @@ files:
141
142
  - app/controllers/spree/api/v2/storefront/countries_controller.rb
142
143
  - app/controllers/spree/api/v2/storefront/order_status_controller.rb
143
144
  - app/controllers/spree/api/v2/storefront/products_controller.rb
145
+ - app/controllers/spree/api/v2/storefront/stores_controller.rb
144
146
  - app/controllers/spree/api/v2/storefront/taxons_controller.rb
145
147
  - app/helpers/spree/api/api_helpers.rb
146
148
  - app/helpers/spree/api/v2/collection_options_helpers.rb
@@ -166,9 +168,11 @@ files:
166
168
  - app/serializers/spree/v2/storefront/shipment_serializer.rb
167
169
  - app/serializers/spree/v2/storefront/shipping_rate_serializer.rb
168
170
  - app/serializers/spree/v2/storefront/state_serializer.rb
171
+ - app/serializers/spree/v2/storefront/stock_location_serializer.rb
169
172
  - app/serializers/spree/v2/storefront/store_credit_event_serializer.rb
170
173
  - app/serializers/spree/v2/storefront/store_credit_serializer.rb
171
174
  - app/serializers/spree/v2/storefront/store_credit_type_serializer.rb
175
+ - app/serializers/spree/v2/storefront/store_serializer.rb
172
176
  - app/serializers/spree/v2/storefront/taxon_image_serializer.rb
173
177
  - app/serializers/spree/v2/storefront/taxon_serializer.rb
174
178
  - app/serializers/spree/v2/storefront/taxonomy_serializer.rb
@@ -302,10 +306,10 @@ licenses:
302
306
  - BSD-3-Clause
303
307
  metadata:
304
308
  bug_tracker_uri: https://github.com/spree/spree/issues
305
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.beta
309
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.rc1
306
310
  documentation_uri: https://guides.spreecommerce.org/
307
- source_code_uri: https://github.com/spree/spree/tree/v4.2.0.beta
308
- post_install_message:
311
+ source_code_uri: https://github.com/spree/spree/tree/v4.2.0.rc1
312
+ post_install_message:
309
313
  rdoc_options: []
310
314
  require_paths:
311
315
  - lib
@@ -320,8 +324,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
320
324
  - !ruby/object:Gem::Version
321
325
  version: 1.3.1
322
326
  requirements: []
323
- rubygems_version: 3.1.2
324
- signing_key:
327
+ rubygems_version: 3.1.4
328
+ signing_key:
325
329
  specification_version: 4
326
330
  summary: Spree's API
327
331
  test_files: []