spree_api 3.3.6 → 3.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/api/base_controller.rb +17 -21
  3. data/app/controllers/spree/api/v1/countries_controller.rb +2 -4
  4. data/app/controllers/spree/api/v1/credit_cards_controller.rb +9 -10
  5. data/app/controllers/spree/api/v1/images_controller.rb +1 -2
  6. data/app/controllers/spree/api/v1/inventory_units_controller.rb +2 -2
  7. data/app/controllers/spree/api/v1/line_items_controller.rb +24 -28
  8. data/app/controllers/spree/api/v1/option_types_controller.rb +5 -5
  9. data/app/controllers/spree/api/v1/option_values_controller.rb +16 -17
  10. data/app/controllers/spree/api/v1/orders_controller.rb +39 -49
  11. data/app/controllers/spree/api/v1/payments_controller.rb +15 -17
  12. data/app/controllers/spree/api/v1/product_properties_controller.rb +2 -3
  13. data/app/controllers/spree/api/v1/products_controller.rb +24 -25
  14. data/app/controllers/spree/api/v1/promotions_controller.rb +9 -8
  15. data/app/controllers/spree/api/v1/properties_controller.rb +14 -16
  16. data/app/controllers/spree/api/v1/return_authorizations_controller.rb +0 -1
  17. data/app/controllers/spree/api/v1/shipments_controller.rb +17 -26
  18. data/app/controllers/spree/api/v1/states_controller.rb +9 -10
  19. data/app/controllers/spree/api/v1/stock_items_controller.rb +2 -2
  20. data/app/controllers/spree/api/v1/stores_controller.rb +0 -1
  21. data/app/controllers/spree/api/v1/tags_controller.rb +1 -1
  22. data/app/controllers/spree/api/v1/taxonomies_controller.rb +1 -3
  23. data/app/controllers/spree/api/v1/taxons_controller.rb +15 -16
  24. data/app/controllers/spree/api/v1/users_controller.rb +1 -4
  25. data/app/controllers/spree/api/v1/variants_controller.rb +22 -22
  26. data/app/controllers/spree/api/v1/zones_controller.rb +0 -1
  27. data/app/helpers/spree/api/api_helpers.rb +5 -5
  28. data/app/views/spree/api/errors/gateway_error.v1.rabl +1 -1
  29. data/app/views/spree/api/errors/invalid_api_key.v1.rabl +1 -1
  30. data/app/views/spree/api/errors/invalid_resource.v1.rabl +1 -1
  31. data/app/views/spree/api/errors/must_specify_api_key.v1.rabl +1 -1
  32. data/app/views/spree/api/errors/not_found.v1.rabl +1 -1
  33. data/app/views/spree/api/errors/unauthorized.v1.rabl +1 -1
  34. data/app/views/spree/api/v1/addresses/show.v1.rabl +2 -2
  35. data/app/views/spree/api/v1/credit_cards/index.v1.rabl +1 -1
  36. data/app/views/spree/api/v1/images/index.v1.rabl +1 -1
  37. data/app/views/spree/api/v1/images/show.v1.rabl +1 -1
  38. data/app/views/spree/api/v1/line_items/show.v1.rabl +3 -3
  39. data/app/views/spree/api/v1/option_types/index.v1.rabl +1 -1
  40. data/app/views/spree/api/v1/option_types/show.v1.rabl +1 -1
  41. data/app/views/spree/api/v1/option_values/index.v1.rabl +1 -1
  42. data/app/views/spree/api/v1/option_values/show.v1.rabl +1 -1
  43. data/app/views/spree/api/v1/orders/could_not_transition.v1.rabl +1 -1
  44. data/app/views/spree/api/v1/orders/index.v1.rabl +1 -1
  45. data/app/views/spree/api/v1/orders/invalid_shipping_method.v1.rabl +1 -1
  46. data/app/views/spree/api/v1/orders/mine.v1.rabl +1 -1
  47. data/app/views/spree/api/v1/orders/order.v1.rabl +5 -5
  48. data/app/views/spree/api/v1/orders/show.v1.rabl +7 -7
  49. data/app/views/spree/api/v1/product_properties/index.v1.rabl +1 -1
  50. data/app/views/spree/api/v1/product_properties/new.v1.rabl +1 -1
  51. data/app/views/spree/api/v1/products/index.v1.rabl +1 -1
  52. data/app/views/spree/api/v1/products/show.v1.rabl +5 -5
  53. data/app/views/spree/api/v1/return_authorizations/show.v1.rabl +1 -1
  54. data/app/views/spree/api/v1/shared/stock_location_required.v1.rabl +1 -1
  55. data/app/views/spree/api/v1/shipments/big.v1.rabl +8 -8
  56. data/app/views/spree/api/v1/shipments/cannot_ready_shipment.v1.rabl +1 -1
  57. data/app/views/spree/api/v1/shipments/mine.v1.rabl +1 -1
  58. data/app/views/spree/api/v1/shipments/show.v1.rabl +5 -5
  59. data/app/views/spree/api/v1/shipments/small.v1.rabl +5 -5
  60. data/app/views/spree/api/v1/shipping_rates/show.v1.rabl +1 -1
  61. data/app/views/spree/api/v1/states/index.v1.rabl +1 -3
  62. data/app/views/spree/api/v1/stock_items/show.v1.rabl +1 -1
  63. data/app/views/spree/api/v1/stock_locations/show.v1.rabl +2 -2
  64. data/app/views/spree/api/v1/stock_movements/show.v1.rabl +1 -1
  65. data/app/views/spree/api/v1/taxonomies/index.v1.rabl +1 -1
  66. data/app/views/spree/api/v1/taxonomies/jstree.rabl +2 -3
  67. data/app/views/spree/api/v1/taxonomies/nested.v1.rabl +1 -1
  68. data/app/views/spree/api/v1/taxonomies/show.v1.rabl +1 -1
  69. data/app/views/spree/api/v1/taxons/index.v1.rabl +1 -3
  70. data/app/views/spree/api/v1/taxons/jstree.rabl +3 -4
  71. data/app/views/spree/api/v1/taxons/taxons.v1.rabl +1 -1
  72. data/app/views/spree/api/v1/users/index.v1.rabl +1 -1
  73. data/app/views/spree/api/v1/users/show.v1.rabl +3 -3
  74. data/app/views/spree/api/v1/variants/big.v1.rabl +1 -1
  75. data/app/views/spree/api/v1/variants/index.v1.rabl +1 -1
  76. data/app/views/spree/api/v1/variants/show.v1.rabl +1 -1
  77. data/app/views/spree/api/v1/variants/small.v1.rabl +7 -7
  78. data/config/routes.rb +3 -3
  79. data/lib/spree/api/controller_setup.rb +2 -2
  80. data/lib/spree/api/engine.rb +3 -3
  81. data/lib/spree/api/responders/rabl_template.rb +1 -3
  82. data/lib/spree/api/testing_support/caching.rb +3 -3
  83. data/lib/spree/api/testing_support/helpers.rb +4 -4
  84. data/lib/spree/api/testing_support/setup.rb +2 -2
  85. metadata +7 -7
@@ -1,2 +1,2 @@
1
1
  object false
2
- node(:error) { I18n.t(:cannot_ready, scope: "spree.api.shipment") }
2
+ node(:error) { I18n.t(:cannot_ready, scope: 'spree.api.shipment') }
@@ -5,5 +5,5 @@ node(:current_page) { params[:page].try(:to_i) || 1 }
5
5
  node(:pages) { @shipments.total_pages }
6
6
 
7
7
  child(@shipments => :shipments) do
8
- extends "spree/api/v1/shipments/big"
8
+ extends 'spree/api/v1/shipments/big'
9
9
  end
@@ -5,11 +5,11 @@ node(:order_id) { |shipment| shipment.order.number }
5
5
  node(:stock_location_name) { |shipment| shipment.stock_location.name }
6
6
 
7
7
  child shipping_rates: :shipping_rates do
8
- extends "spree/api/v1/shipping_rates/show"
8
+ extends 'spree/api/v1/shipping_rates/show'
9
9
  end
10
10
 
11
11
  child selected_shipping_rate: :selected_shipping_rate do
12
- extends "spree/api/v1/shipping_rates/show"
12
+ extends 'spree/api/v1/shipping_rates/show'
13
13
  end
14
14
 
15
15
  child shipping_methods: :shipping_methods do
@@ -25,8 +25,8 @@ end
25
25
 
26
26
  child manifest: :manifest do
27
27
  child variant: :variant do
28
- extends "spree/api/v1/variants/small"
28
+ extends 'spree/api/v1/variants/small'
29
29
  end
30
- node(:quantity) { |m| m.quantity }
31
- node(:states) { |m| m.states }
30
+ node(:quantity, &:quantity)
31
+ node(:states, &:states)
32
32
  end
@@ -6,11 +6,11 @@ node(:order_id) { |shipment| shipment.order.number }
6
6
  node(:stock_location_name) { |shipment| shipment.stock_location.name }
7
7
 
8
8
  child shipping_rates: :shipping_rates do
9
- extends "spree/api/v1/shipping_rates/show"
9
+ extends 'spree/api/v1/shipping_rates/show'
10
10
  end
11
11
 
12
12
  child selected_shipping_rate: :selected_shipping_rate do
13
- extends "spree/api/v1/shipping_rates/show"
13
+ extends 'spree/api/v1/shipping_rates/show'
14
14
  end
15
15
 
16
16
  child shipping_methods: :shipping_methods do
@@ -28,10 +28,10 @@ child manifest: :manifest do
28
28
  glue(:variant) do
29
29
  attribute id: :variant_id
30
30
  end
31
- node(:quantity) { |m| m.quantity }
32
- node(:states) { |m| m.states }
31
+ node(:quantity, &:quantity)
32
+ node(:states, &:states)
33
33
  end
34
34
 
35
35
  child adjustments: :adjustments do
36
- extends "spree/api/v1/adjustments/show"
36
+ extends 'spree/api/v1/adjustments/show'
37
37
  end
@@ -1,2 +1,2 @@
1
- attributes :id, :name, :cost, :selected, :shipping_method_id, :shipping_method_code
1
+ attributes :id, :name, :cost, :selected, :shipping_method_id, :shipping_method_code
2
2
  node(:display_cost) { |sr| sr.display_cost.to_s }
@@ -1,7 +1,5 @@
1
1
  object false
2
- if @country
3
- node(:states_required) { @country.states_required }
4
- end
2
+ node(:states_required) { @country.states_required } if @country
5
3
 
6
4
  child(@states => :states) do
7
5
  attributes *state_attributes
@@ -1,5 +1,5 @@
1
1
  object @stock_item
2
2
  attributes *stock_item_attributes
3
3
  child(:variant) do
4
- extends "spree/api/v1/variants/small"
4
+ extends 'spree/api/v1/variants/small'
5
5
  end
@@ -1,8 +1,8 @@
1
1
  object @stock_location
2
2
  attributes *stock_location_attributes
3
- child(:country) do |address|
3
+ child(:country) do |_address|
4
4
  attributes *country_attributes
5
5
  end
6
- child(:state) do |address|
6
+ child(:state) do |_address|
7
7
  attributes *state_attributes
8
8
  end
@@ -1,5 +1,5 @@
1
1
  object @stock_movement
2
2
  attributes *stock_movement_attributes
3
3
  child :stock_item do
4
- extends "spree/api/v1/stock_items/show"
4
+ extends 'spree/api/v1/stock_items/show'
5
5
  end
@@ -1,6 +1,6 @@
1
1
  object false
2
2
  child(@taxonomies => :taxonomies) do
3
- extends "spree/api/v1/taxonomies/show"
3
+ extends 'spree/api/v1/taxonomies/show'
4
4
  end
5
5
  node(:count) { @taxonomies.count }
6
6
  node(:current_page) { params[:page].try(:to_i) || 1 }
@@ -2,7 +2,6 @@ object false
2
2
  node(:data) { @taxonomy.root.name }
3
3
  node(:attr) do
4
4
  { id: @taxonomy.root.id,
5
- name: @taxonomy.root.name
6
- }
5
+ name: @taxonomy.root.name }
7
6
  end
8
- node(:state) { "closed" }
7
+ node(:state) { 'closed' }
@@ -6,6 +6,6 @@ child root: :root do
6
6
  child children: :taxons do
7
7
  attributes *taxon_attributes
8
8
 
9
- extends "spree/api/v1/taxons/taxons"
9
+ extends 'spree/api/v1/taxons/taxons'
10
10
  end
11
11
  end
@@ -1,7 +1,7 @@
1
1
  object @taxonomy
2
2
 
3
3
  if params[:set] == 'nested'
4
- extends "spree/api/v1/taxonomies/nested"
4
+ extends 'spree/api/v1/taxonomies/nested'
5
5
  else
6
6
  attributes *taxonomy_attributes
7
7
 
@@ -6,7 +6,5 @@ node(:per_page) { params[:per_page].try(:to_i) || Kaminari.config.default_per_pa
6
6
  node(:pages) { @taxons.total_pages }
7
7
  child @taxons => :taxons do
8
8
  attributes *taxon_attributes
9
- unless params[:without_children]
10
- extends "spree/api/v1/taxons/taxons"
11
- end
9
+ extends 'spree/api/v1/taxons/taxons' unless params[:without_children]
12
10
  end
@@ -1,8 +1,7 @@
1
1
  collection @taxon.children, object_root: false
2
- node(:data) { |taxon| taxon.name }
2
+ node(:data, &:name)
3
3
  node(:attr) do |taxon|
4
4
  { id: taxon.id,
5
- name: taxon.name
6
- }
5
+ name: taxon.name }
7
6
  end
8
- node(:state) { "closed" }
7
+ node(:state) { 'closed' }
@@ -1,5 +1,5 @@
1
1
  attributes *taxon_attributes
2
2
 
3
3
  node :taxons do |t|
4
- t.children.map { |c| partial("spree/api/v1/taxons/taxons", object: c) }
4
+ t.children.map { |c| partial('spree/api/v1/taxons/taxons', object: c) }
5
5
  end
@@ -1,6 +1,6 @@
1
1
  object false
2
2
  child(@users => :users) do
3
- extends "spree/api/v1/users/show"
3
+ extends 'spree/api/v1/users/show'
4
4
  end
5
5
  node(:count) { @users.count }
6
6
  node(:current_page) { params[:page].try(:to_i) || 1 }
@@ -3,9 +3,9 @@ cache [I18n.locale, root_object]
3
3
 
4
4
  attributes *user_attributes
5
5
  child(bill_address: :bill_address) do
6
- extends "spree/api/v1/addresses/show"
6
+ extends 'spree/api/v1/addresses/show'
7
7
  end
8
8
 
9
9
  child(ship_address: :ship_address) do
10
- extends "spree/api/v1/addresses/show"
11
- end
10
+ extends 'spree/api/v1/addresses/show'
11
+ end
@@ -2,7 +2,7 @@ object @variant
2
2
 
3
3
  cache [I18n.locale, @current_user_roles.include?('admin'), 'big_variant', root_object]
4
4
 
5
- extends "spree/api/v1/variants/small"
5
+ extends 'spree/api/v1/variants/small'
6
6
 
7
7
  child(stock_items: :stock_items) do
8
8
  attributes :id, :count_on_hand, :stock_location_id, :backorderable
@@ -5,5 +5,5 @@ node(:current_page) { params[:page] ? params[:page].to_i : 1 }
5
5
  node(:pages) { @variants.total_pages }
6
6
 
7
7
  child(@variants => :variants) do
8
- extends "spree/api/v1/variants/big"
8
+ extends 'spree/api/v1/variants/big'
9
9
  end
@@ -1,3 +1,3 @@
1
1
  object @variant
2
2
  cache [I18n.locale, @current_user_roles.include?('admin'), 'show', root_object]
3
- extends "spree/api/v1/variants/big"
3
+ extends 'spree/api/v1/variants/big'
@@ -3,16 +3,16 @@ cache [I18n.locale, @current_user_roles.include?('admin'), 'small_variant', root
3
3
  attributes *variant_attributes
4
4
 
5
5
  node(:display_price) { |p| p.display_price.to_s }
6
- node(:options_text) { |v| v.options_text }
7
- node(:track_inventory) { |v| v.should_track_inventory? }
8
- node(:in_stock) { |v| v.in_stock? }
9
- node(:is_backorderable) { |v| v.is_backorderable? }
6
+ node(:options_text, &:options_text)
7
+ node(:track_inventory, &:should_track_inventory?)
8
+ node(:in_stock, &:in_stock?)
9
+ node(:is_backorderable, &:is_backorderable?)
10
10
  node(:is_orderable) { |v| v.is_backorderable? || v.in_stock? }
11
- node(:total_on_hand) { |v| v.total_on_hand }
12
- node(:is_destroyed) { |v| v.destroyed? }
11
+ node(:total_on_hand, &:total_on_hand)
12
+ node(:is_destroyed, &:destroyed?)
13
13
 
14
14
  child option_values: :option_values do
15
15
  attributes *option_value_attributes
16
16
  end
17
17
 
18
- child(images: :images) { extends "spree/api/v1/images/show" }
18
+ child(images: :images) { extends 'spree/api/v1/images/show' }
data/config/routes.rb CHANGED
@@ -61,7 +61,7 @@ Spree::Core::Engine.add_routes do
61
61
  resources :option_values, only: :index
62
62
 
63
63
  get '/orders/mine', to: 'orders#mine', as: 'my_orders'
64
- get "/orders/current", to: "orders#current", as: "current_order"
64
+ get '/orders/current', to: 'orders#current', as: 'current_order'
65
65
 
66
66
  resources :orders, concerns: :order_routes
67
67
 
@@ -122,14 +122,14 @@ Spree::Core::Engine.add_routes do
122
122
 
123
123
  spree_path = Rails.application.routes.url_helpers.try(:spree_path, trailing_slash: true) || '/'
124
124
 
125
- match 'v:api/*path', to: redirect{ |params, request|
125
+ match 'v:api/*path', to: redirect { |params, request|
126
126
  format = ".#{params[:format]}" unless params[:format].blank?
127
127
  query = "?#{request.query_string}" unless request.query_string.blank?
128
128
 
129
129
  "#{spree_path}api/v1/#{params[:path]}#{format}#{query}"
130
130
  }, via: [:get, :post, :put, :patch, :delete]
131
131
 
132
- match '*path', to: redirect{ |params, request|
132
+ match '*path', to: redirect { |params, request|
133
133
  format = ".#{params[:format]}" unless params[:format].blank?
134
134
  query = "?#{request.query_string}" unless request.query_string.blank?
135
135
 
@@ -8,8 +8,8 @@ module Spree
8
8
  include CanCan::ControllerAdditions
9
9
  include Spree::Core::ControllerHelpers::Auth
10
10
 
11
- prepend_view_path Rails.root + "app/views"
12
- append_view_path File.expand_path("../../../app/views", File.dirname(__FILE__))
11
+ prepend_view_path Rails.root + 'app/views'
12
+ append_view_path File.expand_path('../../../app/views', File.dirname(__FILE__))
13
13
 
14
14
  self.responder = Spree::Api::Responders::AppResponder
15
15
  respond_to :json
@@ -17,7 +17,7 @@ module Spree
17
17
  config.json_engine = ActiveSupport::JSON
18
18
  end
19
19
 
20
- initializer "spree.api.versioncake" do |_app|
20
+ initializer 'spree.api.versioncake' do |_app|
21
21
  VersionCake.setup do |config|
22
22
  config.resources do |r|
23
23
  r.resource %r{.*}, [], [], [1]
@@ -28,12 +28,12 @@ module Spree
28
28
  end
29
29
  end
30
30
 
31
- initializer "spree.api.environment", before: :load_config_initializers do |app|
31
+ initializer 'spree.api.environment', before: :load_config_initializers do |_app|
32
32
  Spree::Api::Config = Spree::ApiConfiguration.new
33
33
  end
34
34
 
35
35
  def self.activate
36
- Dir.glob(File.join(File.dirname(__FILE__), "../../../app/**/*_decorator*.rb")) do |c|
36
+ Dir.glob(File.join(File.dirname(__FILE__), '../../../app/**/*_decorator*.rb')) do |c|
37
37
  Rails.configuration.cache_classes ? require(c) : load(c)
38
38
  end
39
39
  end
@@ -17,11 +17,9 @@ module Spree
17
17
  end
18
18
 
19
19
  def api_behavior
20
- if controller.params[:action] == "destroy"
20
+ if controller.params[:action] == 'destroy'
21
21
  # Render a blank template
22
22
  super
23
- else
24
- # Do nothing and fallback to the default template
25
23
  end
26
24
  end
27
25
  end
@@ -1,10 +1,10 @@
1
1
  RSpec.configure do |config|
2
- config.before(:each, caching: true) do
2
+ config.before(:each, caching: true) do
3
3
  ActionController::Base.perform_caching = true
4
4
  end
5
-
5
+
6
6
  config.after(:each, caching: true) do
7
7
  ActionController::Base.perform_caching = false
8
8
  Rails.cache.clear
9
9
  end
10
- end
10
+ end
@@ -12,12 +12,12 @@ module Spree
12
12
  end
13
13
 
14
14
  def assert_not_found!
15
- expect(json_response).to eq({ "error" => "The resource you were looking for could not be found." })
15
+ expect(json_response).to eq('error' => 'The resource you were looking for could not be found.')
16
16
  expect(response.status).to eq 404
17
17
  end
18
18
 
19
19
  def assert_unauthorized!
20
- expect(json_response).to eq({ "error" => "You are not authorized to perform that action." })
20
+ expect(json_response).to eq('error' => 'You are not authorized to perform that action.')
21
21
  expect(response.status).to eq 401
22
22
  end
23
23
 
@@ -28,11 +28,11 @@ module Spree
28
28
  # This method can be overriden (with a let block) inside a context
29
29
  # For instance, if you wanted to have an admin user instead.
30
30
  def current_api_user
31
- @current_api_user ||= stub_model(Spree.user_class, email: "spree@example.com")
31
+ @current_api_user ||= stub_model(Spree.user_class, email: 'spree@example.com')
32
32
  end
33
33
 
34
34
  def image(filename)
35
- File.open(Spree::Api::Engine.root + "spec/fixtures" + filename)
35
+ File.open(Spree::Api::Engine.root + 'spec/fixtures' + filename)
36
36
  end
37
37
 
38
38
  def upload_image(filename)
@@ -5,8 +5,8 @@ module Spree
5
5
  def sign_in_as_admin!
6
6
  let!(:current_api_user) do
7
7
  user = stub_model(Spree.user_class)
8
- allow(user).to receive_message_chain(:spree_roles, :pluck).and_return(["admin"])
9
- allow(user).to receive(:has_spree_role?).with("admin").and_return(true)
8
+ allow(user).to receive_message_chain(:spree_roles, :pluck).and_return(['admin'])
9
+ allow(user).to receive(:has_spree_role?).with('admin').and_return(true)
10
10
  user
11
11
  end
12
12
  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: 3.3.6
4
+ version: 3.4.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-12 00:00:00.000000000 Z
11
+ date: 2017-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.3.6
19
+ version: 3.4.0.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.3.6
26
+ version: 3.4.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rabl
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -230,12 +230,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
230
  version: 2.2.7
231
231
  required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - ">="
233
+ - - ">"
234
234
  - !ruby/object:Gem::Version
235
- version: '0'
235
+ version: 1.3.1
236
236
  requirements: []
237
237
  rubyforge_project:
238
- rubygems_version: 2.6.14
238
+ rubygems_version: 2.6.12
239
239
  signing_key:
240
240
  specification_version: 4
241
241
  summary: Spree's API