spree_api 4.2.6 → 4.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +14 -1
  3. data/app/controllers/concerns/spree/api/v2/product_list_includes.rb +23 -0
  4. data/app/controllers/spree/api/v1/classifications_controller.rb +4 -3
  5. data/app/controllers/spree/api/v1/orders_controller.rb +5 -1
  6. data/app/controllers/spree/api/v1/products_controller.rb +2 -2
  7. data/app/controllers/spree/api/v1/taxonomies_controller.rb +1 -1
  8. data/app/controllers/spree/api/v2/base_controller.rb +29 -6
  9. data/app/controllers/spree/api/v2/platform/addresses_controller.rb +19 -0
  10. data/app/controllers/spree/api/v2/platform/classifications_controller.rb +43 -0
  11. data/app/controllers/spree/api/v2/platform/cms_pages_controller.rb +15 -0
  12. data/app/controllers/spree/api/v2/platform/cms_sections_controller.rb +34 -0
  13. data/app/controllers/spree/api/v2/platform/countries_controller.rb +19 -0
  14. data/app/controllers/spree/api/v2/platform/menu_items_controller.rb +35 -0
  15. data/app/controllers/spree/api/v2/platform/menus_controller.rb +19 -0
  16. data/app/controllers/spree/api/v2/platform/option_types_controller.rb +15 -0
  17. data/app/controllers/spree/api/v2/platform/option_values_controller.rb +19 -0
  18. data/app/controllers/spree/api/v2/platform/products_controller.rb +21 -0
  19. data/app/controllers/spree/api/v2/platform/resource_controller.rb +112 -0
  20. data/app/controllers/spree/api/v2/platform/taxons_controller.rb +30 -0
  21. data/app/controllers/spree/api/v2/platform/users_controller.rb +28 -0
  22. data/app/controllers/spree/api/v2/resource_controller.rb +18 -6
  23. data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +2 -14
  24. data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +13 -11
  25. data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +2 -2
  26. data/app/controllers/spree/api/v2/storefront/account_controller.rb +32 -1
  27. data/app/controllers/spree/api/v2/storefront/cart_controller.rb +28 -6
  28. data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +2 -1
  29. data/app/controllers/spree/api/v2/storefront/cms_pages_controller.rb +41 -0
  30. data/app/controllers/spree/api/v2/storefront/countries_controller.rb +9 -14
  31. data/app/controllers/spree/api/v2/storefront/menus_controller.rb +35 -0
  32. data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +1 -1
  33. data/app/controllers/spree/api/v2/storefront/products_controller.rb +6 -12
  34. data/app/controllers/spree/api/v2/storefront/stores_controller.rb +1 -1
  35. data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +7 -8
  36. data/app/helpers/spree/api/v2/display_money_helper.rb +2 -2
  37. data/app/models/spree/api_configuration.rb +1 -0
  38. data/app/models/spree/api_dependencies.rb +19 -5
  39. data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +16 -0
  40. data/app/serializers/spree/api/v2/base_serializer.rb +32 -0
  41. data/app/serializers/spree/api/v2/platform/address_serializer.rb +15 -0
  42. data/app/serializers/spree/api/v2/platform/base_serializer.rb +10 -0
  43. data/app/serializers/spree/api/v2/platform/classification_serializer.rb +14 -0
  44. data/app/serializers/spree/api/v2/platform/cms_page_serializer.rb +13 -0
  45. data/app/serializers/spree/api/v2/platform/cms_section_serializer.rb +11 -0
  46. data/app/serializers/spree/api/v2/platform/country_serializer.rb +13 -0
  47. data/app/serializers/spree/api/v2/platform/image_serializer.rb +15 -0
  48. data/app/serializers/spree/api/v2/platform/menu_item_serializer.rb +22 -0
  49. data/app/serializers/spree/api/v2/platform/menu_serializer.rb +13 -0
  50. data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +13 -0
  51. data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +13 -0
  52. data/app/serializers/spree/api/v2/platform/product_property_serializer.rb +11 -0
  53. data/app/serializers/spree/api/v2/platform/product_serializer.rb +78 -0
  54. data/app/serializers/spree/api/v2/platform/state_serializer.rb +13 -0
  55. data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +20 -0
  56. data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +16 -0
  57. data/app/serializers/spree/api/v2/platform/store_serializer.rb +14 -0
  58. data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +13 -0
  59. data/app/serializers/spree/api/v2/platform/taxon_image_serializer.rb +13 -0
  60. data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +38 -0
  61. data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +14 -0
  62. data/app/serializers/spree/api/v2/platform/user_serializer.rb +21 -0
  63. data/app/serializers/spree/api/v2/platform/variant_serializer.rb +57 -0
  64. data/app/serializers/spree/v2/storefront/base_serializer.rb +3 -2
  65. data/app/serializers/spree/v2/storefront/cms_page_serializer.rb +14 -0
  66. data/app/serializers/spree/v2/storefront/cms_section_serializer.rb +28 -0
  67. data/app/serializers/spree/v2/storefront/country_serializer.rb +4 -4
  68. data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +2 -0
  69. data/app/serializers/spree/v2/storefront/menu_item_serializer.rb +37 -0
  70. data/app/serializers/spree/v2/storefront/menu_serializer.rb +13 -0
  71. data/app/serializers/spree/v2/storefront/product_property_serializer.rb +1 -1
  72. data/app/serializers/spree/v2/storefront/product_serializer.rb +4 -1
  73. data/app/serializers/spree/v2/storefront/store_serializer.rb +10 -0
  74. data/app/serializers/spree/v2/storefront/taxon_serializer.rb +6 -5
  75. data/config/initializers/doorkeeper.rb +8 -1
  76. data/config/initializers/rabl.rb +9 -0
  77. data/config/routes.rb +115 -3
  78. data/db/migrate/20210727102516_change_integer_id_columns_type.rb +9 -0
  79. data/docs/oauth/index.yml +2 -2
  80. data/docs/v2/platform/index.yaml +1501 -0
  81. data/docs/v2/storefront/index.yaml +48 -2
  82. data/lib/spree/api/engine.rb +6 -17
  83. data/lib/spree/api/testing_support/v2/base.rb +1 -1
  84. data/lib/spree/api/testing_support/v2/platform_contexts.rb +214 -0
  85. data/lib/spree/api/testing_support/v2/serializers_params.rb +14 -0
  86. data/lib/spree/api.rb +1 -0
  87. data/spree_api.gemspec +3 -0
  88. metadata +101 -11
  89. data/app/assets/javascripts/spree/api/main.js +0 -36
  90. data/app/assets/javascripts/spree/api/storefront/cart.js +0 -49
@@ -172,6 +172,12 @@ paths:
172
172
  email:
173
173
  type: string
174
174
  example: john@snow.org
175
+ bill_address_id:
176
+ type: integer
177
+ example: 1
178
+ ship_address_id:
179
+ type: integer
180
+ example: 1
175
181
  password:
176
182
  type: string
177
183
  example: spree123
@@ -255,7 +261,7 @@ paths:
255
261
  summary: Remove Address
256
262
  patch:
257
263
  description: Update selected Address for the signed in User
258
- summary: List of Addresses
264
+ summary: Update Address
259
265
  tags:
260
266
  - Account
261
267
  operationId: Update Address
@@ -308,6 +314,23 @@ paths:
308
314
  description: Filter based on payment method ID
309
315
  - $ref: '#/components/parameters/CreditCardIncludeParam'
310
316
  - $ref: '#/components/parameters/SparseFieldsParam'
317
+ '/api/v2/storefront/account/credit_cards/{id}':
318
+ delete:
319
+ description: 'Removes selected credit card for the signed in User. It uses soft-delete.'
320
+ tags:
321
+ - Account
322
+ operationId: Remove Credit Card
323
+ parameters:
324
+ - $ref: '#/components/parameters/CreditCardIncludeParam'
325
+ - $ref: '#/components/parameters/SparseFieldsParam'
326
+ responses:
327
+ '204':
328
+ description: Requested Credit Card has been removed from the User Account
329
+ '404':
330
+ $ref: '#/components/responses/404NotFound'
331
+ security:
332
+ - bearerAuth: []
333
+ summary: Remove Credit Card
311
334
  /api/v2/storefront/account/credit_cards/default:
312
335
  get:
313
336
  description: Return the User's default Credit Card
@@ -471,6 +494,22 @@ paths:
471
494
  - $ref: '#/components/parameters/CartIncludeParam'
472
495
  - $ref: '#/components/parameters/SparseFieldsParam'
473
496
  summary: Create a Cart
497
+ delete:
498
+ description: |-
499
+ Deletes Cart.
500
+ Endpoint can be called after PATCH /api/v2/storefront/cart/empty, or individually.
501
+ Shipments are canceled, payments are voided, then Line Items, Shipments & Payments are deleted.
502
+ tags:
503
+ - Cart
504
+ operationId: Deletes Cart
505
+ responses:
506
+ '204':
507
+ description: Current Cart has been removed.
508
+ '404':
509
+ $ref: '#/components/responses/404NotFound'
510
+ security:
511
+ - bearerAuth: [ ]
512
+ summary: Deletes Cart
474
513
  get:
475
514
  description: Returns contents of the currently used Cart
476
515
  tags:
@@ -1101,6 +1140,12 @@ paths:
1101
1140
  type: string
1102
1141
  example: Red
1103
1142
  description: 'Find Prodcuts with Variants that have the specified option (eg. color, size) and value (eg. red, XS)'
1143
+ - in: query
1144
+ name: 'filter[properties][brand-name]'
1145
+ schema:
1146
+ type: string
1147
+ example: alpha
1148
+ description: 'Find Prodcuts with Property Brand Name with value Alpha'
1104
1149
  - in: query
1105
1150
  name: 'filter[show_deleted]'
1106
1151
  schema:
@@ -1117,11 +1162,12 @@ paths:
1117
1162
  name: sort
1118
1163
  schema:
1119
1164
  type: string
1120
- example: '-updated_at,price'
1165
+ example: '-updated_at,price,-name'
1121
1166
  description: |-
1122
1167
  Sort products based on: <ul>
1123
1168
  <li>price (ascending/descenging)</li>
1124
1169
  <li>updated_at (ascending/descenging)</li>
1170
+ <li>name (ascending/descenging)</li>
1125
1171
  </ul> Use <q>-</q> sign to set descenging sort, eg. <q>-updated_at</q>
1126
1172
  - $ref: '#/components/parameters/PageParam'
1127
1173
  - $ref: '#/components/parameters/PerPageParam'
@@ -6,23 +6,6 @@ module Spree
6
6
  isolate_namespace Spree
7
7
  engine_name 'spree_api'
8
8
 
9
- Rabl.configure do |config|
10
- config.include_json_root = false
11
- config.include_child_root = false
12
-
13
- # Motivation here it make it call as_json when rendering timestamps
14
- # and therefore display miliseconds. Otherwise it would fall to
15
- # JSON.dump which doesn't display the miliseconds
16
- config.json_engine = ActiveSupport::JSON
17
- end
18
-
19
- # sets the manifests / assets to be precompiled, even when initialize_on_precompile is false
20
- initializer 'spree.assets.precompile', group: :all do |app|
21
- app.config.assets.precompile += %w[
22
- spree/api/all*
23
- ]
24
- end
25
-
26
9
  initializer 'spree.api.environment', before: :load_config_initializers do |_app|
27
10
  Spree::Api::Config = Spree::ApiConfiguration.new
28
11
  Spree::Api::Dependencies = Spree::ApiDependencies.new
@@ -32,6 +15,12 @@ module Spree
32
15
  Migrations.new(config, engine_name).check
33
16
  end
34
17
 
18
+ initializer 'spree.api.checking_deprecated_preferences' do
19
+ Spree::Api::Config.deprecated_preferences.each do |pref|
20
+ warn "[DEPRECATION] Spree::Api::Config[:#{pref[:name]}] is deprecated. #{pref[:message]}"
21
+ end
22
+ end
23
+
35
24
  def self.root
36
25
  @root ||= Pathname.new(File.expand_path('../../..', __dir__))
37
26
  end
@@ -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, 401, 404, 403, 422].each do |status_code|
7
+ [200, 201, 204, 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)
@@ -0,0 +1,214 @@
1
+ class String
2
+ def articleize
3
+ %w(a e i o u).include?(self[0].downcase) ? "an #{self}" : "a #{self}"
4
+ end
5
+ end
6
+
7
+ shared_context 'Platform API v2' do
8
+ let(:store) { Spree::Store.default }
9
+ let(:admin_app) { Doorkeeper::Application.find_or_create_by!(name: 'Admin Panel', scopes: 'admin', redirect_uri: '') }
10
+ let(:read_app) { Doorkeeper::Application.find_or_create_by!(name: 'Read App', scopes: 'read', redirect_uri: '') }
11
+ let(:oauth_token) do
12
+ Doorkeeper::AccessToken.create!(
13
+ application_id: admin_app.id,
14
+ scopes: admin_app.scopes
15
+ )
16
+ end
17
+ let(:read_oauth_token) do
18
+ Doorkeeper::AccessToken.create!(
19
+ application_id: read_app.id,
20
+ scopes: read_app.scopes
21
+ )
22
+ end
23
+ let(:user_oauth_token) do
24
+ Doorkeeper::AccessToken.create!(
25
+ resource_owner_id: user.id,
26
+ application_id: admin_app.id,
27
+ scopes: admin_app.scopes
28
+ )
29
+ end
30
+
31
+ let(:valid_authorization) { "Bearer #{oauth_token.token}" }
32
+ let(:valid_read_authorization) { "Bearer #{read_oauth_token.token}" }
33
+ let(:valid_user_authorization) { "Bearer #{user_oauth_token.token}" }
34
+ let(:bogus_authorization) { "Bearer #{::Base64.strict_encode64('bogus:bogus')}" }
35
+
36
+ let(:Authorization) { valid_authorization }
37
+ end
38
+
39
+ shared_context 'jsonapi pagination' do
40
+ let(:page) { 1 }
41
+ let(:per_page) { '' }
42
+ parameter name: :page, in: :query, type: :integer, example: 1
43
+ parameter name: :per_page, in: :query, type: :integer, example: 50
44
+ end
45
+
46
+ JSON_API_INCLUDES_DESCRIPTION = 'Select which associated resources you would like to fetch'\
47
+ ', see: <a href="https://jsonapi.org/format/#fetching-includes">'\
48
+ 'https://jsonapi.org/format/#fetching-includes</a>'.freeze
49
+ JSON_API_FILTER_DESCRIPTION = ''
50
+
51
+ def json_api_include_parameter(example = '')
52
+ let(:include) { nil }
53
+ parameter name: :include, in: :query, type: :string, descripton: JSON_API_INCLUDES_DESCRIPTION, example: example
54
+ end
55
+
56
+ def json_api_filter_parameter(example = '')
57
+ let(:filter) { nil }
58
+ parameter name: :filter, in: :query, type: :string, descripton: JSON_API_FILTER_DESCRIPTION, example: example
59
+ end
60
+
61
+ shared_examples 'authentication failed' do
62
+ response '401', 'Authentication Failed' do
63
+ let(:Authorization) { bogus_authorization }
64
+ schema '$ref' => '#/components/schemas/error'
65
+ run_test!
66
+ end
67
+ end
68
+
69
+ shared_examples 'record not found' do
70
+ response '404', 'Record not found' do
71
+ let(:id) { 'invalid' }
72
+ schema '$ref' => '#/components/schemas/error'
73
+ run_test!
74
+ end
75
+ end
76
+
77
+ shared_examples 'record found' do
78
+ response '200', 'Record found' do
79
+ schema '$ref' => '#/components/schemas/resource'
80
+ run_test!
81
+ end
82
+ end
83
+
84
+ shared_examples 'record deleted' do
85
+ response '204', 'Record deleted' do
86
+ run_test!
87
+ end
88
+ end
89
+
90
+ shared_examples 'records returned' do
91
+ response '200', 'Records returned' do
92
+ schema '$ref' => '#/components/schemas/resources_list'
93
+ run_test!
94
+ end
95
+ end
96
+
97
+ shared_examples 'record created' do
98
+ response '201', 'record created' do
99
+ schema '$ref' => '#/components/schemas/resource'
100
+ run_test!
101
+ end
102
+ end
103
+
104
+ shared_examples 'record updated' do
105
+ response '200', 'record updated' do
106
+ schema '$ref' => '#/components/schemas/resource'
107
+ run_test!
108
+ end
109
+ end
110
+
111
+ shared_examples 'invalid request' do |param_name|
112
+ response '422', 'invalid request' do
113
+ let(param_name) { invalid_param_value }
114
+ schema '$ref' => '#/components/schemas/validation_errors'
115
+ run_test!
116
+ end
117
+ end
118
+
119
+ # index action
120
+ shared_examples 'GET records list' do |resource_name, include_example, filter_example|
121
+ get "Returns a list of #{resource_name.pluralize}" do
122
+ tags resource_name.pluralize
123
+ security [ bearer_auth: [] ]
124
+ include_context 'jsonapi pagination'
125
+ json_api_include_parameter(include_example)
126
+ json_api_filter_parameter(filter_example)
127
+
128
+ before { records_list }
129
+
130
+ it_behaves_like 'records returned'
131
+ it_behaves_like 'authentication failed'
132
+ end
133
+ end
134
+
135
+ # show
136
+ shared_examples 'GET record' do |resource_name, include_example|
137
+ get "Returns #{resource_name.articleize}" do
138
+ tags resource_name.pluralize
139
+ security [ bearer_auth: [] ]
140
+ parameter name: :id, in: :path, type: :string
141
+ json_api_include_parameter(include_example)
142
+
143
+ it_behaves_like 'record found'
144
+ it_behaves_like 'record not found'
145
+ it_behaves_like 'authentication failed'
146
+ end
147
+ end
148
+
149
+ # create
150
+ shared_examples 'POST create record' do |resource_name, include_example|
151
+ param_name = resource_name.parameterize.to_sym
152
+
153
+ post "Creates #{resource_name.articleize}" do
154
+ tags resource_name.pluralize
155
+ consumes 'application/json'
156
+ security [ bearer_auth: [] ]
157
+ parameter name: param_name, in: :body, schema: { '$ref' => "#/components/schemas/#{param_name}_params" }
158
+ json_api_include_parameter(include_example)
159
+
160
+ let(param_name) { valid_create_param_value }
161
+
162
+ it_behaves_like 'record created'
163
+ it_behaves_like 'invalid request', param_name
164
+ end
165
+ end
166
+
167
+ # update
168
+ shared_examples 'PUT update record' do |resource_name, include_example|
169
+ param_name = resource_name.parameterize.to_sym
170
+
171
+ put "Updates #{resource_name.articleize}" do
172
+ tags resource_name.pluralize
173
+ security [ bearer_auth: [] ]
174
+ consumes 'application/json'
175
+ parameter name: :id, in: :path, type: :string
176
+ parameter name: param_name, in: :body, schema: { '$ref' => "#/components/schemas/#{param_name}_params" }
177
+ json_api_include_parameter(include_example)
178
+
179
+ let(param_name) { valid_update_param_value }
180
+
181
+ it_behaves_like 'record updated'
182
+ it_behaves_like 'invalid request', param_name
183
+ it_behaves_like 'record not found'
184
+ it_behaves_like 'authentication failed'
185
+ end
186
+ end
187
+
188
+ # destroy
189
+ shared_examples 'DELETE record' do |resource_name|
190
+ delete "Deletes #{resource_name.articleize}" do
191
+ tags resource_name.pluralize
192
+ security [ bearer_auth: [] ]
193
+ parameter name: :id, in: :path, type: :string
194
+
195
+ it_behaves_like 'record deleted'
196
+ it_behaves_like 'record not found'
197
+ it_behaves_like 'authentication failed'
198
+ end
199
+ end
200
+
201
+ shared_examples 'CRUD examples' do |resource_name, include_example, filter_example|
202
+ resource_path = resource_name.pluralize.parameterize
203
+
204
+ path "/api/v2/platform/#{resource_path}" do
205
+ include_examples 'GET records list', resource_name, include_example, filter_example
206
+ include_examples 'POST create record', resource_name, include_example
207
+ end
208
+
209
+ path "/api/v2/platform/#{resource_path}/{id}" do
210
+ include_examples 'GET record', resource_name, include_example
211
+ include_examples 'PUT update record', resource_name, include_example
212
+ include_examples 'DELETE record', resource_name
213
+ end
214
+ end
@@ -0,0 +1,14 @@
1
+ shared_context 'API v2 serializers params' do
2
+ let(:store) { Spree::Store.default || create(:store, default: true) }
3
+ let(:currency) { store.default_currency }
4
+ let(:locale) { store.default_locale }
5
+
6
+ let(:serializer_params) do
7
+ {
8
+ store: store,
9
+ currency: currency,
10
+ user: nil,
11
+ locale: locale
12
+ }
13
+ end
14
+ end
data/lib/spree/api.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'spree/core'
2
2
 
3
3
  require 'rabl'
4
+ require 'responders'
4
5
 
5
6
  module Spree
6
7
  module Api
data/spree_api.gemspec CHANGED
@@ -25,9 +25,12 @@ Gem::Specification.new do |s|
25
25
  s.require_paths = ["lib"]
26
26
 
27
27
  s.add_development_dependency 'jsonapi-rspec'
28
+ s.add_development_dependency 'rswag-specs'
29
+ s.add_development_dependency 'multi_json'
28
30
 
29
31
  s.add_dependency 'spree_core', s.version
30
32
  s.add_dependency 'rabl', '~> 0.14', '>= 0.14.2'
31
33
  s.add_dependency 'jsonapi-serializer', '~> 2.1'
32
34
  s.add_dependency 'doorkeeper', '~> 5.2', '>= 5.2.1'
35
+ s.add_dependency 'responders'
33
36
  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.6
4
+ version: 4.3.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: 2022-06-01 00:00:00.000000000 Z
11
+ date: 2021-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-rspec
@@ -24,20 +24,48 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rswag-specs
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: spree_core
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
59
  - - '='
32
60
  - !ruby/object:Gem::Version
33
- version: 4.2.6
61
+ version: 4.3.0.rc1
34
62
  type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - '='
39
67
  - !ruby/object:Gem::Version
40
- version: 4.2.6
68
+ version: 4.3.0.rc1
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rabl
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +120,20 @@ dependencies:
92
120
  - - ">="
93
121
  - !ruby/object:Gem::Version
94
122
  version: 5.2.1
123
+ - !ruby/object:Gem::Dependency
124
+ name: responders
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
95
137
  description: Spree's API
96
138
  email:
97
139
  - ryan@spreecommerce.com
@@ -103,8 +145,7 @@ files:
103
145
  - Gemfile
104
146
  - LICENSE
105
147
  - Rakefile
106
- - app/assets/javascripts/spree/api/main.js
107
- - app/assets/javascripts/spree/api/storefront/cart.js
148
+ - app/controllers/concerns/spree/api/v2/product_list_includes.rb
108
149
  - app/controllers/concerns/spree/api/v2/storefront/order_concern.rb
109
150
  - app/controllers/spree/api/base_controller.rb
110
151
  - app/controllers/spree/api/errors_controller.rb
@@ -139,6 +180,19 @@ files:
139
180
  - app/controllers/spree/api/v1/variants_controller.rb
140
181
  - app/controllers/spree/api/v1/zones_controller.rb
141
182
  - app/controllers/spree/api/v2/base_controller.rb
183
+ - app/controllers/spree/api/v2/platform/addresses_controller.rb
184
+ - app/controllers/spree/api/v2/platform/classifications_controller.rb
185
+ - app/controllers/spree/api/v2/platform/cms_pages_controller.rb
186
+ - app/controllers/spree/api/v2/platform/cms_sections_controller.rb
187
+ - app/controllers/spree/api/v2/platform/countries_controller.rb
188
+ - app/controllers/spree/api/v2/platform/menu_items_controller.rb
189
+ - app/controllers/spree/api/v2/platform/menus_controller.rb
190
+ - app/controllers/spree/api/v2/platform/option_types_controller.rb
191
+ - app/controllers/spree/api/v2/platform/option_values_controller.rb
192
+ - app/controllers/spree/api/v2/platform/products_controller.rb
193
+ - app/controllers/spree/api/v2/platform/resource_controller.rb
194
+ - app/controllers/spree/api/v2/platform/taxons_controller.rb
195
+ - app/controllers/spree/api/v2/platform/users_controller.rb
142
196
  - app/controllers/spree/api/v2/resource_controller.rb
143
197
  - app/controllers/spree/api/v2/storefront/account/addresses_controller.rb
144
198
  - app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb
@@ -146,7 +200,9 @@ files:
146
200
  - app/controllers/spree/api/v2/storefront/account_controller.rb
147
201
  - app/controllers/spree/api/v2/storefront/cart_controller.rb
148
202
  - app/controllers/spree/api/v2/storefront/checkout_controller.rb
203
+ - app/controllers/spree/api/v2/storefront/cms_pages_controller.rb
149
204
  - app/controllers/spree/api/v2/storefront/countries_controller.rb
205
+ - app/controllers/spree/api/v2/storefront/menus_controller.rb
150
206
  - app/controllers/spree/api/v2/storefront/order_status_controller.rb
151
207
  - app/controllers/spree/api/v2/storefront/products_controller.rb
152
208
  - app/controllers/spree/api/v2/storefront/stores_controller.rb
@@ -158,14 +214,43 @@ files:
158
214
  - app/models/concerns/spree/user_api_methods.rb
159
215
  - app/models/spree/api_configuration.rb
160
216
  - app/models/spree/api_dependencies.rb
217
+ - app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb
218
+ - app/serializers/spree/api/v2/base_serializer.rb
219
+ - app/serializers/spree/api/v2/platform/address_serializer.rb
220
+ - app/serializers/spree/api/v2/platform/base_serializer.rb
221
+ - app/serializers/spree/api/v2/platform/classification_serializer.rb
222
+ - app/serializers/spree/api/v2/platform/cms_page_serializer.rb
223
+ - app/serializers/spree/api/v2/platform/cms_section_serializer.rb
224
+ - app/serializers/spree/api/v2/platform/country_serializer.rb
225
+ - app/serializers/spree/api/v2/platform/image_serializer.rb
226
+ - app/serializers/spree/api/v2/platform/menu_item_serializer.rb
227
+ - app/serializers/spree/api/v2/platform/menu_serializer.rb
228
+ - app/serializers/spree/api/v2/platform/option_type_serializer.rb
229
+ - app/serializers/spree/api/v2/platform/option_value_serializer.rb
230
+ - app/serializers/spree/api/v2/platform/product_property_serializer.rb
231
+ - app/serializers/spree/api/v2/platform/product_serializer.rb
232
+ - app/serializers/spree/api/v2/platform/state_serializer.rb
233
+ - app/serializers/spree/api/v2/platform/stock_item_serializer.rb
234
+ - app/serializers/spree/api/v2/platform/stock_location_serializer.rb
235
+ - app/serializers/spree/api/v2/platform/store_serializer.rb
236
+ - app/serializers/spree/api/v2/platform/tax_category_serializer.rb
237
+ - app/serializers/spree/api/v2/platform/taxon_image_serializer.rb
238
+ - app/serializers/spree/api/v2/platform/taxon_serializer.rb
239
+ - app/serializers/spree/api/v2/platform/taxonomy_serializer.rb
240
+ - app/serializers/spree/api/v2/platform/user_serializer.rb
241
+ - app/serializers/spree/api/v2/platform/variant_serializer.rb
161
242
  - app/serializers/spree/v2/storefront/address_serializer.rb
162
243
  - app/serializers/spree/v2/storefront/base_serializer.rb
163
244
  - app/serializers/spree/v2/storefront/cart_serializer.rb
245
+ - app/serializers/spree/v2/storefront/cms_page_serializer.rb
246
+ - app/serializers/spree/v2/storefront/cms_section_serializer.rb
164
247
  - app/serializers/spree/v2/storefront/country_serializer.rb
165
248
  - app/serializers/spree/v2/storefront/credit_card_serializer.rb
166
249
  - app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb
167
250
  - app/serializers/spree/v2/storefront/image_serializer.rb
168
251
  - app/serializers/spree/v2/storefront/line_item_serializer.rb
252
+ - app/serializers/spree/v2/storefront/menu_item_serializer.rb
253
+ - app/serializers/spree/v2/storefront/menu_serializer.rb
169
254
  - app/serializers/spree/v2/storefront/option_type_serializer.rb
170
255
  - app/serializers/spree/v2/storefront/option_value_serializer.rb
171
256
  - app/serializers/spree/v2/storefront/payment_method_serializer.rb
@@ -287,6 +372,7 @@ files:
287
372
  - app/views/spree/api/v1/zones/show.rabl
288
373
  - config/initializers/doorkeeper.rb
289
374
  - config/initializers/json_api_mime_types.rb
375
+ - config/initializers/rabl.rb
290
376
  - config/initializers/user_class_extensions.rb
291
377
  - config/locales/en.yml
292
378
  - config/routes.rb
@@ -295,7 +381,9 @@ files:
295
381
  - db/migrate/20120530054546_rename_api_key_to_spree_api_key.rb
296
382
  - db/migrate/20131017162334_add_index_to_user_spree_api_key.rb
297
383
  - db/migrate/20180320110726_create_doorkeeper_tables.rb
384
+ - db/migrate/20210727102516_change_integer_id_columns_type.rb
298
385
  - docs/oauth/index.yml
386
+ - docs/v2/platform/index.yaml
299
387
  - docs/v2/storefront/index.yaml
300
388
  - lib/spree/api.rb
301
389
  - lib/spree/api/controller_setup.rb
@@ -307,6 +395,8 @@ files:
307
395
  - lib/spree/api/testing_support/setup.rb
308
396
  - lib/spree/api/testing_support/v2/base.rb
309
397
  - lib/spree/api/testing_support/v2/current_order.rb
398
+ - lib/spree/api/testing_support/v2/platform_contexts.rb
399
+ - lib/spree/api/testing_support/v2/serializers_params.rb
310
400
  - lib/spree_api.rb
311
401
  - script/rails
312
402
  - spec/fixtures/thinking-cat.jpg
@@ -316,9 +406,9 @@ licenses:
316
406
  - BSD-3-Clause
317
407
  metadata:
318
408
  bug_tracker_uri: https://github.com/spree/spree/issues
319
- changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.6
409
+ changelog_uri: https://github.com/spree/spree/releases/tag/v4.3.0.rc1
320
410
  documentation_uri: https://guides.spreecommerce.org/
321
- source_code_uri: https://github.com/spree/spree/tree/v4.2.6
411
+ source_code_uri: https://github.com/spree/spree/tree/v4.3.0.rc1
322
412
  post_install_message:
323
413
  rdoc_options: []
324
414
  require_paths:
@@ -330,11 +420,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
330
420
  version: '2.5'
331
421
  required_rubygems_version: !ruby/object:Gem::Requirement
332
422
  requirements:
333
- - - ">="
423
+ - - ">"
334
424
  - !ruby/object:Gem::Version
335
- version: '0'
425
+ version: 1.3.1
336
426
  requirements: []
337
- rubygems_version: 3.0.9
427
+ rubygems_version: 3.2.3
338
428
  signing_key:
339
429
  specification_version: 4
340
430
  summary: Spree's API
@@ -1,36 +0,0 @@
1
- //= require spree
2
-
3
- var SpreeAPI = {
4
- oauthToken: null, // user Bearer token to authorize operations for the given user
5
- orderToken: null // order token to authorize operations on current order (cart)
6
- }
7
-
8
- SpreeAPI.Storefront = {}
9
- SpreeAPI.Platform = {}
10
-
11
- // API routes
12
- Spree.routes.api_v2_storefront_cart_create = Spree.pathFor('api/v2/storefront/cart')
13
- Spree.routes.api_v2_storefront_cart_add_item = Spree.pathFor('api/v2/storefront/cart/add_item')
14
- Spree.routes.api_v2_storefront_cart_apply_coupon_code = Spree.pathFor('api/v2/storefront/cart/apply_coupon_code')
15
-
16
- // helpers
17
- SpreeAPI.handle500error = function () {
18
- alert('Internal Server Error')
19
- }
20
-
21
- SpreeAPI.prepareHeaders = function (headers) {
22
- if (typeof headers === 'undefined') {
23
- headers = {}
24
- }
25
-
26
- // if signed in we need to pass the Bearer authorization token
27
- // so backend will recognize that actions are authorized in scope of this user
28
- if (SpreeAPI.oauthToken) {
29
- headers['Authorization'] = 'Bearer ' + SpreeAPI.oauthToken
30
- }
31
-
32
- // default headers, required for POST/PATCH/DELETE requests
33
- headers['Accept'] = 'application/json'
34
- headers['Content-Type'] = 'application/json'
35
- return headers
36
- }