spree_api 4.1.10 → 4.2.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +4 -0
- data/app/controllers/spree/api/base_controller.rb +1 -3
- data/app/controllers/spree/api/errors_controller.rb +1 -1
- data/app/controllers/spree/api/v1/taxons_controller.rb +6 -1
- data/app/controllers/spree/api/v1/users_controller.rb +35 -9
- data/app/controllers/spree/api/v2/base_controller.rb +6 -1
- data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +1 -2
- data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +1 -1
- data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +1 -1
- data/app/helpers/spree/api/api_helpers.rb +4 -3
- data/app/models/spree/api_dependencies.rb +2 -1
- data/app/serializers/spree/v2/storefront/address_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/cart_serializer.rb +2 -1
- data/app/serializers/spree/v2/storefront/line_item_serializer.rb +2 -1
- data/app/serializers/spree/v2/storefront/product_serializer.rb +2 -2
- data/app/serializers/spree/v2/storefront/shipment_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/store_serializer.rb +2 -0
- data/app/serializers/spree/v2/storefront/variant_serializer.rb +2 -2
- data/app/views/spree/api/v1/products/show.rabl +4 -0
- data/docs/v2/storefront/index.yaml +198 -12
- data/lib/spree/api/controller_setup.rb +0 -1
- data/lib/spree/api/testing_support/v2/base.rb +1 -1
- data/lib/spree/api/testing_support/v2/current_order.rb +4 -0
- data/spree_api.gemspec +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 870bda309064df374e65aee63ddd2d7abb72004dbb6d218f0b1b77b7f5b0219f
|
4
|
+
data.tar.gz: e8fd20974f60d065473f2fb1303dd86221de56173f6a1e957c7efc8d5dba2aed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37e0a2ef4037067d2ffd5391d70b7c9fd6953d0529721e83ba7935755b1bca9515bc047e16525cae1df3d68e0815082f21e3e5579521f80259c717abe06d0b76
|
7
|
+
data.tar.gz: 87d24be4132f732043258a35db7b5398f3a63fe99908141e6bbba92786e5897a2c9c9ddf0c3ed5efa9b3da6b65a73f2ac5e4a895fc4bb69038ab5e597ece2932
|
@@ -34,6 +34,10 @@ module Spree
|
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
37
|
+
def supported_currencies
|
38
|
+
current_store.supported_currencies_list
|
39
|
+
end
|
40
|
+
|
37
41
|
def serialize_order(order)
|
38
42
|
resource_serializer.new(order.reload, include: resource_includes, fields: sparse_fields).serializable_hash
|
39
43
|
end
|
@@ -2,9 +2,7 @@ require_dependency 'spree/api/controller_setup'
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
module Api
|
5
|
-
class BaseController < ActionController::
|
6
|
-
protect_from_forgery unless: -> { request.format.json? || request.format.xml? }
|
7
|
-
|
5
|
+
class BaseController < ActionController::API
|
8
6
|
include Spree::Api::ControllerSetup
|
9
7
|
include Spree::Core::ControllerHelpers::Store
|
10
8
|
include Spree::Core::ControllerHelpers::StrongParameters
|
@@ -74,7 +74,12 @@ module Spree
|
|
74
74
|
|
75
75
|
def taxonomy
|
76
76
|
if params[:taxonomy_id].present?
|
77
|
-
@taxonomy ||=
|
77
|
+
@taxonomy ||=
|
78
|
+
if defined?(SpreeGlobalize)
|
79
|
+
Spree::Taxonomy.includes(:translations, taxons: [:translations]).accessible_by(current_ability, :show).find(params[:taxonomy_id])
|
80
|
+
else
|
81
|
+
Spree::Taxonomy.accessible_by(current_ability, :show).find(params[:taxonomy_id])
|
82
|
+
end
|
78
83
|
end
|
79
84
|
end
|
80
85
|
|
@@ -5,22 +5,48 @@ module Spree
|
|
5
5
|
rescue_from Spree::Core::DestroyWithOrdersError, with: :error_during_processing
|
6
6
|
|
7
7
|
def index
|
8
|
-
|
8
|
+
users
|
9
9
|
|
10
10
|
if params[:ids]
|
11
|
-
|
12
|
-
elsif params
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
users_with_addresses_ids = (users_with_ship_address.ids + users_with_bill_address.ids).compact.uniq
|
17
|
-
@users = @users.with_email_or_addresses_ids(params[:q][:email_start], users_with_addresses_ids)
|
11
|
+
load_users_by_ids
|
12
|
+
elsif params.dig(:q, :ship_address_firstname_start)
|
13
|
+
load_users_by_address
|
14
|
+
elsif params.dig(:q, :email_start)
|
15
|
+
load_users_by_email
|
18
16
|
end
|
19
17
|
|
18
|
+
prepare_index_response
|
19
|
+
respond_with(@users)
|
20
|
+
end
|
21
|
+
|
22
|
+
def users
|
23
|
+
@users ||= Spree.user_class.accessible_by(current_ability, :show)
|
24
|
+
end
|
25
|
+
|
26
|
+
def load_users_by_ids
|
27
|
+
@users = @users.where(id: params[:ids])
|
28
|
+
end
|
29
|
+
|
30
|
+
def load_users_by_address
|
31
|
+
address_params = params[:q][:ship_address_firstname_start] ||
|
32
|
+
params[:q][:ship_address_lastname_start] ||
|
33
|
+
params[:q][:bill_address_firstname_start] ||
|
34
|
+
params[:q][:bill_address_lastname_start]
|
35
|
+
@users = @users.with_email_or_address(params[:q][:email_start], address_params)
|
36
|
+
end
|
37
|
+
|
38
|
+
def load_users_by_email
|
39
|
+
@users = @users.with_email(params[:q][:email_start])
|
40
|
+
end
|
41
|
+
|
42
|
+
def paginate_users
|
20
43
|
@users = @users.page(params[:page]).per(params[:per_page])
|
44
|
+
end
|
45
|
+
|
46
|
+
def prepare_index_response
|
47
|
+
paginate_users
|
21
48
|
expires_in 15.minutes, public: true
|
22
49
|
headers['Surrogate-Control'] = "max-age=#{15.minutes}"
|
23
|
-
respond_with(@users)
|
24
50
|
end
|
25
51
|
|
26
52
|
def show
|
@@ -53,7 +53,12 @@ module Spree
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def spree_current_user
|
56
|
-
|
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)
|
@@ -35,11 +35,11 @@ module Spree
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def collection_serializer
|
38
|
-
Spree::Api::Dependencies.
|
38
|
+
Spree::Api::Dependencies.storefront_order_serializer.constantize
|
39
39
|
end
|
40
40
|
|
41
41
|
def resource_serializer
|
42
|
-
Spree::Api::Dependencies.
|
42
|
+
Spree::Api::Dependencies.storefront_order_serializer.constantize
|
43
43
|
end
|
44
44
|
|
45
45
|
def collection_finder
|
@@ -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, :stock_location]
|
129
|
-
params: { show_rates: true }
|
128
|
+
include: [:shipping_rates, :stock_location]
|
130
129
|
).serializable_hash
|
131
130
|
end
|
132
131
|
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]
|
@@ -161,8 +161,9 @@ module Spree
|
|
161
161
|
|
162
162
|
@@store_attributes = [
|
163
163
|
:id, :name, :url, :meta_description, :meta_keywords, :seo_title,
|
164
|
-
:mail_from_address, :
|
165
|
-
:facebook, :twitter, :instagram
|
164
|
+
:mail_from_address, :customer_support_email, :default_currency,
|
165
|
+
:code, :default, :facebook, :twitter, :instagram,
|
166
|
+
:supported_currencies
|
166
167
|
]
|
167
168
|
|
168
169
|
@@tag_attributes = [:id, :name]
|
@@ -14,7 +14,7 @@ module Spree
|
|
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
16
|
:storefront_cart_update_service, :storefront_cart_estimate_shipping_rates_service, :storefront_estimated_shipment_serializer,
|
17
|
-
:storefront_store_serializer, :storefront_address_serializer,
|
17
|
+
:storefront_store_serializer, :storefront_address_serializer, :storefront_order_serializer,
|
18
18
|
:storefront_account_create_address_service, :storefront_account_update_address_service, :storefront_address_finder
|
19
19
|
].freeze
|
20
20
|
|
@@ -66,6 +66,7 @@ module Spree
|
|
66
66
|
@storefront_product_serializer = 'Spree::V2::Storefront::ProductSerializer'
|
67
67
|
@storefront_estimated_shipment_serializer = 'Spree::V2::Storefront::EstimatedShippingRateSerializer'
|
68
68
|
@storefront_store_serializer = 'Spree::V2::Storefront::StoreSerializer'
|
69
|
+
@storefront_order_serializer = 'Spree::V2::Storefront::CartSerializer'
|
69
70
|
|
70
71
|
# sorters
|
71
72
|
@storefront_order_sorter = Spree::Dependencies.order_sorter
|
@@ -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
|
@@ -5,8 +5,8 @@ module Spree
|
|
5
5
|
set_type :product
|
6
6
|
|
7
7
|
attributes :name, :description, :price, :currency, :display_price,
|
8
|
-
:
|
9
|
-
:updated_at
|
8
|
+
:compare_at_price, :display_compare_at_price, :available_on,
|
9
|
+
:slug, :meta_description, :meta_keywords, :updated_at
|
10
10
|
|
11
11
|
attribute :purchasable, &:purchasable?
|
12
12
|
attribute :in_stock, &:in_stock?
|
@@ -7,6 +7,8 @@ module Spree
|
|
7
7
|
attributes :name, :url, :meta_description, :meta_keywords, :seo_title, :default_currency, :default, :supported_currencies, :facebook,
|
8
8
|
:twitter, :instagram, :default_locale, :customer_support_email, :default_country_id, :description,
|
9
9
|
:address, :contact_phone, :contact_email
|
10
|
+
|
11
|
+
has_one :default_country, serializer: :country, record_type: :country, id_method_name: :default_country_id
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
@@ -4,8 +4,8 @@ module Spree
|
|
4
4
|
class VariantSerializer < BaseSerializer
|
5
5
|
set_type :variant
|
6
6
|
|
7
|
-
attributes :
|
8
|
-
:width, :depth, :is_master, :options_text
|
7
|
+
attributes :sku, :price, :currency, :display_price, :weight, :height,
|
8
|
+
:width, :depth, :is_master, :options_text
|
9
9
|
|
10
10
|
attribute :purchasable, &:purchasable?
|
11
11
|
attribute :in_stock, &:in_stock?
|
@@ -6,6 +6,10 @@ attributes *product_attributes
|
|
6
6
|
node(:display_price) { |p| p.display_price.to_s }
|
7
7
|
node(:has_variants, &:has_variants?)
|
8
8
|
node(:taxon_ids, &:taxon_ids)
|
9
|
+
node(:display_current_currency_price) do |product|
|
10
|
+
price = product.price_in(current_currency)
|
11
|
+
Spree::Money.new(price.amount, currency: current_currency).to_s
|
12
|
+
end
|
9
13
|
|
10
14
|
child master: :master do
|
11
15
|
extends 'spree/api/v1/variants/small'
|
@@ -49,7 +49,167 @@ paths:
|
|
49
49
|
$ref: '#/components/responses/403Forbidden'
|
50
50
|
security:
|
51
51
|
- bearerAuth: []
|
52
|
+
post:
|
53
|
+
description: >-
|
54
|
+
Creates a new account
|
52
55
|
|
56
|
+
This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
|
57
|
+
tags:
|
58
|
+
- Account
|
59
|
+
operationId: 'Account Creation'
|
60
|
+
requestBody:
|
61
|
+
required: true
|
62
|
+
content:
|
63
|
+
application/vnd.api+json:
|
64
|
+
schema:
|
65
|
+
type: object
|
66
|
+
properties:
|
67
|
+
user:
|
68
|
+
type: object
|
69
|
+
properties:
|
70
|
+
email:
|
71
|
+
type: string
|
72
|
+
example: 'john@snow.org'
|
73
|
+
password:
|
74
|
+
type: string
|
75
|
+
example: 'spree123'
|
76
|
+
password_confirmation:
|
77
|
+
type: string
|
78
|
+
example: 'spree123'
|
79
|
+
responses:
|
80
|
+
'200':
|
81
|
+
description: ok
|
82
|
+
content:
|
83
|
+
application/vnd.api+json:
|
84
|
+
schema:
|
85
|
+
$ref: '#/components/schemas/Account'
|
86
|
+
'422':
|
87
|
+
description: Validation errors
|
88
|
+
content:
|
89
|
+
application/vnd.api+json:
|
90
|
+
schema:
|
91
|
+
$ref: '#/components/schemas/Error'
|
92
|
+
patch:
|
93
|
+
description: >-
|
94
|
+
Updates user account
|
95
|
+
|
96
|
+
This endpoint requires [Spree Auth Devise](https://github.com/spree/spree_auth_devise) gem installed
|
97
|
+
tags:
|
98
|
+
- Account
|
99
|
+
operationId: 'Account Updates'
|
100
|
+
requestBody:
|
101
|
+
required: true
|
102
|
+
content:
|
103
|
+
application/vnd.api+json:
|
104
|
+
schema:
|
105
|
+
type: object
|
106
|
+
properties:
|
107
|
+
user:
|
108
|
+
type: object
|
109
|
+
properties:
|
110
|
+
email:
|
111
|
+
type: string
|
112
|
+
example: 'john@snow.org'
|
113
|
+
password:
|
114
|
+
type: string
|
115
|
+
example: 'spree123'
|
116
|
+
password_confirmation:
|
117
|
+
type: string
|
118
|
+
example: 'spree123'
|
119
|
+
responses:
|
120
|
+
'200':
|
121
|
+
description: ok
|
122
|
+
content:
|
123
|
+
application/vnd.api+json:
|
124
|
+
schema:
|
125
|
+
$ref: '#/components/schemas/Account'
|
126
|
+
'422':
|
127
|
+
description: Validation errors
|
128
|
+
content:
|
129
|
+
application/vnd.api+json:
|
130
|
+
schema:
|
131
|
+
$ref: '#/components/schemas/Error'
|
132
|
+
security:
|
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: []
|
53
213
|
'/account/credit_cards':
|
54
214
|
get:
|
55
215
|
description: >-
|
@@ -1299,6 +1459,18 @@ components:
|
|
1299
1459
|
display_tax_total:
|
1300
1460
|
type: string
|
1301
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'
|
1302
1474
|
item_count:
|
1303
1475
|
type: number
|
1304
1476
|
example: 2
|
@@ -1511,6 +1683,12 @@ components:
|
|
1511
1683
|
display_discounted_amount:
|
1512
1684
|
type: string
|
1513
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'
|
1514
1692
|
promo_total:
|
1515
1693
|
type: string
|
1516
1694
|
example: '-5.0'
|
@@ -2011,10 +2189,6 @@ components:
|
|
2011
2189
|
VariantAttributes:
|
2012
2190
|
type: object
|
2013
2191
|
properties:
|
2014
|
-
name:
|
2015
|
-
type: string
|
2016
|
-
example: 'Example product'
|
2017
|
-
description: 'Product name'
|
2018
2192
|
sku:
|
2019
2193
|
type: string
|
2020
2194
|
example: 'SKU-1001'
|
@@ -2046,14 +2220,6 @@ components:
|
|
2046
2220
|
options_text:
|
2047
2221
|
type: string
|
2048
2222
|
example: 'Size: small, Color: red'
|
2049
|
-
slug:
|
2050
|
-
type: string
|
2051
|
-
example: 'example-product'
|
2052
|
-
description: 'Product slug'
|
2053
|
-
description:
|
2054
|
-
type: string
|
2055
|
-
example: 'Example description'
|
2056
|
-
description: 'Product description'
|
2057
2223
|
purchasable:
|
2058
2224
|
type: boolean
|
2059
2225
|
example: true
|
@@ -2226,6 +2392,11 @@ components:
|
|
2226
2392
|
$ref: '#/components/schemas/ShipmentAttributes'
|
2227
2393
|
relationships:
|
2228
2394
|
properties:
|
2395
|
+
stock_location:
|
2396
|
+
type: object
|
2397
|
+
properties:
|
2398
|
+
data:
|
2399
|
+
$ref: '#/components/schemas/Relation'
|
2229
2400
|
shipping_rates:
|
2230
2401
|
properties:
|
2231
2402
|
data:
|
@@ -2281,6 +2452,7 @@ components:
|
|
2281
2452
|
items:
|
2282
2453
|
oneOf:
|
2283
2454
|
- $ref: '#/components/schemas/ShippingRate'
|
2455
|
+
- $ref: '#/components/schemas/StockLocation'
|
2284
2456
|
EstimateShippingRatesList:
|
2285
2457
|
required:
|
2286
2458
|
- data
|
@@ -2335,6 +2507,20 @@ components:
|
|
2335
2507
|
type: integer
|
2336
2508
|
example: 1
|
2337
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'
|
2338
2524
|
Account:
|
2339
2525
|
required:
|
2340
2526
|
- data
|
@@ -6,7 +6,6 @@ module Spree
|
|
6
6
|
def self.included(klass)
|
7
7
|
klass.class_eval do
|
8
8
|
include CanCan::ControllerAdditions
|
9
|
-
include Spree::Core::ControllerHelpers::Auth
|
10
9
|
|
11
10
|
prepend_view_path Rails.root + 'app/views'
|
12
11
|
append_view_path File.expand_path('../../../app/views', File.dirname(__FILE__))
|
@@ -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
|
data/spree_api.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.email = ["ryan@spreecommerce.com"]
|
9
9
|
s.summary = %q{Spree's API}
|
10
10
|
s.description = %q{Spree's API}
|
11
|
-
s.homepage = '
|
11
|
+
s.homepage = 'https://spreecommerce.org'
|
12
12
|
s.license = 'BSD-3-Clause'
|
13
13
|
|
14
14
|
s.metadata = {
|
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.
|
4
|
+
version: 4.2.0.rc2
|
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-
|
11
|
+
date: 2020-11-10 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.
|
33
|
+
version: 4.2.0.rc2
|
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.
|
40
|
+
version: 4.2.0.rc2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rabl
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -301,15 +301,15 @@ files:
|
|
301
301
|
- script/rails
|
302
302
|
- spec/fixtures/thinking-cat.jpg
|
303
303
|
- spree_api.gemspec
|
304
|
-
homepage:
|
304
|
+
homepage: https://spreecommerce.org
|
305
305
|
licenses:
|
306
306
|
- BSD-3-Clause
|
307
307
|
metadata:
|
308
308
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
309
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.
|
309
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.rc2
|
310
310
|
documentation_uri: https://guides.spreecommerce.org/
|
311
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.
|
312
|
-
post_install_message:
|
311
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.2.0.rc2
|
312
|
+
post_install_message:
|
313
313
|
rdoc_options: []
|
314
314
|
require_paths:
|
315
315
|
- lib
|
@@ -320,12 +320,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
320
320
|
version: 2.5.0
|
321
321
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
322
322
|
requirements:
|
323
|
-
- - "
|
323
|
+
- - ">"
|
324
324
|
- !ruby/object:Gem::Version
|
325
|
-
version:
|
325
|
+
version: 1.3.1
|
326
326
|
requirements: []
|
327
327
|
rubygems_version: 3.1.2
|
328
|
-
signing_key:
|
328
|
+
signing_key:
|
329
329
|
specification_version: 4
|
330
330
|
summary: Spree's API
|
331
331
|
test_files: []
|