workarea-api-admin 4.4.6
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 +7 -0
- data/.gitignore +12 -0
- data/README.md +82 -0
- data/Rakefile +10 -0
- data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
- data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
- data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
- data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
- data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
- data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
- data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
- data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
- data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
- data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
- data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
- data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
- data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
- data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
- data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
- data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
- data/app/models/workarea/user.decorator +7 -0
- data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
- data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
- data/bin/rails +18 -0
- data/config/initializers/append_points.rb +4 -0
- data/config/initializers/config.rb +15 -0
- data/config/locales/en.yml +9 -0
- data/config/routes.rb +81 -0
- data/lib/workarea/api/admin.rb +21 -0
- data/lib/workarea/api/admin/engine.rb +14 -0
- data/lib/workarea/api/admin/swagger.rb +106 -0
- data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
- data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
- data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
- data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
- data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
- data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
- data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
- data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
- data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
- data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
- data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
- data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
- data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
- data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
- data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
- data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +55 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
- data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
- data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
- data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
- data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
- data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
- data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
- data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
- data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
- data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
- data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
- data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
- data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
- data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
- data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
- data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
- data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
- data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
- data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
- data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
- data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
- data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
- data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
- data/test/test_helper.rb +10 -0
- data/test/vcr_cassettes/product_image_from_url.yml +43 -0
- data/workarea-api-admin.gemspec +18 -0
- metadata +252 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class EmailSignupsController < Admin::ApplicationController
|
|
5
|
+
swagger_path '/email_signups' do
|
|
6
|
+
operation :get do
|
|
7
|
+
key :summary, 'All Email Signups'
|
|
8
|
+
key :description, 'Returns all email signups from the system'
|
|
9
|
+
key :operationId, 'listEmailSignups'
|
|
10
|
+
key :produces, ['application/json']
|
|
11
|
+
|
|
12
|
+
parameter do
|
|
13
|
+
key :name, :page
|
|
14
|
+
key :in, :query
|
|
15
|
+
key :description, 'Current page'
|
|
16
|
+
key :required, false
|
|
17
|
+
key :type, :integer
|
|
18
|
+
key :default, 1
|
|
19
|
+
end
|
|
20
|
+
parameter do
|
|
21
|
+
key :name, :sort_by
|
|
22
|
+
key :in, :query
|
|
23
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
24
|
+
key :required, false
|
|
25
|
+
key :type, :string
|
|
26
|
+
key :default, 'created_at'
|
|
27
|
+
end
|
|
28
|
+
parameter do
|
|
29
|
+
key :name, :sort_direction
|
|
30
|
+
key :in, :query
|
|
31
|
+
key :description, 'Direction for sort by'
|
|
32
|
+
key :type, :string
|
|
33
|
+
key :enum, %w(asc desc)
|
|
34
|
+
key :default, 'desc'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
response 200 do
|
|
38
|
+
key :description, 'Email Signups'
|
|
39
|
+
schema do
|
|
40
|
+
key :type, :object
|
|
41
|
+
property :email_signups do
|
|
42
|
+
key :type, :array
|
|
43
|
+
items do
|
|
44
|
+
key :'$ref', 'Workarea::Email::Signup'
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def index
|
|
53
|
+
@email_signups = Email::Signup
|
|
54
|
+
.all
|
|
55
|
+
.order_by(sort_field => sort_direction)
|
|
56
|
+
.page(params[:page])
|
|
57
|
+
|
|
58
|
+
respond_with email_signups: @email_signups
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
swagger_path '/email_signups/{id}' do
|
|
62
|
+
operation :get do
|
|
63
|
+
key :summary, 'Find Email Signup by ID'
|
|
64
|
+
key :description, 'Returns a single email signup'
|
|
65
|
+
key :operationId, 'showEmailSignup'
|
|
66
|
+
|
|
67
|
+
parameter do
|
|
68
|
+
key :name, :id
|
|
69
|
+
key :in, :path
|
|
70
|
+
key :description, 'ID of email signup to fetch'
|
|
71
|
+
key :required, true
|
|
72
|
+
key :type, :string
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
response 200 do
|
|
76
|
+
key :description, 'Email signup details'
|
|
77
|
+
schema do
|
|
78
|
+
key :type, :object
|
|
79
|
+
property :email_signup do
|
|
80
|
+
key :'$ref', 'Workarea::Email::Signup'
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
response 404 do
|
|
86
|
+
key :description, 'Email signup not found'
|
|
87
|
+
schema do
|
|
88
|
+
key :type, :object
|
|
89
|
+
property :problem do
|
|
90
|
+
key :type, :string
|
|
91
|
+
end
|
|
92
|
+
property :params do
|
|
93
|
+
key :type, :object
|
|
94
|
+
key :additionalProperties, true
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def show
|
|
102
|
+
@email_signup = Email::Signup.find(params[:id])
|
|
103
|
+
respond_with email_signup: @email_signup
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class FulfillmentsController < Admin::ApplicationController
|
|
5
|
+
before_action :find_fulfillment, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/fulfillments' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Fulfillments'
|
|
10
|
+
key :description, 'Returns all fulfillments from the system'
|
|
11
|
+
key :operationId, 'listFulfillments'
|
|
12
|
+
key :produces, ['application/json']
|
|
13
|
+
|
|
14
|
+
parameter do
|
|
15
|
+
key :name, :page
|
|
16
|
+
key :in, :query
|
|
17
|
+
key :description, 'Current page'
|
|
18
|
+
key :required, false
|
|
19
|
+
key :type, :integer
|
|
20
|
+
key :default, 1
|
|
21
|
+
end
|
|
22
|
+
parameter do
|
|
23
|
+
key :name, :sort_by
|
|
24
|
+
key :in, :query
|
|
25
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
26
|
+
key :required, false
|
|
27
|
+
key :type, :string
|
|
28
|
+
key :default, 'created_at'
|
|
29
|
+
end
|
|
30
|
+
parameter do
|
|
31
|
+
key :name, :sort_direction
|
|
32
|
+
key :in, :query
|
|
33
|
+
key :description, 'Direction for sort by'
|
|
34
|
+
key :type, :string
|
|
35
|
+
key :enum, %w(asc desc)
|
|
36
|
+
key :default, 'desc'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
response 200 do
|
|
40
|
+
key :description, 'Fulfillments'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :categories do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Fulfillment'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def index
|
|
55
|
+
@fulfillments = Fulfillment
|
|
56
|
+
.all
|
|
57
|
+
.order_by(sort_field => sort_direction)
|
|
58
|
+
.page(params[:page])
|
|
59
|
+
|
|
60
|
+
respond_with fulfillments: @fulfillments
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
swagger_path '/fulfillments/{id}' do
|
|
64
|
+
operation :get do
|
|
65
|
+
key :summary, 'Find Fulfillment by ID'
|
|
66
|
+
key :description, 'Returns a single fulfillment'
|
|
67
|
+
key :operationId, 'showFulfillment'
|
|
68
|
+
|
|
69
|
+
parameter do
|
|
70
|
+
key :name, :id
|
|
71
|
+
key :in, :path
|
|
72
|
+
key :description, 'ID of fulfillment to fetch'
|
|
73
|
+
key :required, true
|
|
74
|
+
key :type, :string
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
response 200 do
|
|
78
|
+
key :description, 'Fulfillment details'
|
|
79
|
+
schema do
|
|
80
|
+
key :'$ref', 'Workarea::Fulfillment'
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
response 404 do
|
|
85
|
+
key :description, 'Fulfillment not found'
|
|
86
|
+
schema do
|
|
87
|
+
key :type, :object
|
|
88
|
+
property :problem do
|
|
89
|
+
key :type, :string
|
|
90
|
+
end
|
|
91
|
+
property :params do
|
|
92
|
+
key :type, :object
|
|
93
|
+
key :additionalProperties, true
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def show
|
|
101
|
+
respond_with fulfillment: @fulfillment
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
swagger_path '/fulfillments/{id}/ship_items' do
|
|
105
|
+
operation :post do
|
|
106
|
+
key :summary, 'Mark Items as Shipped'
|
|
107
|
+
key :description, 'Marks items in a fulfillment as shipped (sent to customer)'
|
|
108
|
+
key :operationId, 'markItemsAsShipped'
|
|
109
|
+
|
|
110
|
+
parameter do
|
|
111
|
+
key :name, :id
|
|
112
|
+
key :in, :path
|
|
113
|
+
key :description, 'ID of fulfillment'
|
|
114
|
+
key :required, true
|
|
115
|
+
key :type, :string
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
parameter do
|
|
119
|
+
key :name, :body
|
|
120
|
+
key :in, :body
|
|
121
|
+
key :required, true
|
|
122
|
+
schema do
|
|
123
|
+
key :type, :object
|
|
124
|
+
key :required, %i(tracking_number items)
|
|
125
|
+
property :tracking_number do
|
|
126
|
+
key :type, :string
|
|
127
|
+
key :description, 'Tracking number being shipped'
|
|
128
|
+
end
|
|
129
|
+
property :items do
|
|
130
|
+
key :type, :array
|
|
131
|
+
items do
|
|
132
|
+
key :type, :object
|
|
133
|
+
property :id do
|
|
134
|
+
key :type, :string
|
|
135
|
+
key :description, 'The order item ID for the item being shipped'
|
|
136
|
+
end
|
|
137
|
+
property :quantity do
|
|
138
|
+
key :type, :integer
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
response 201 do
|
|
146
|
+
key :description, 'Fulfillment details'
|
|
147
|
+
schema do
|
|
148
|
+
key :type, :object
|
|
149
|
+
property :fulfillment do
|
|
150
|
+
key :'$ref', 'Workarea::Fulfillment'
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
response 404 do
|
|
156
|
+
key :description, 'Fulfillment not found'
|
|
157
|
+
schema do
|
|
158
|
+
key :type, :object
|
|
159
|
+
property :problem do
|
|
160
|
+
key :type, :string
|
|
161
|
+
end
|
|
162
|
+
property :params do
|
|
163
|
+
key :type, :object
|
|
164
|
+
key :additionalProperties, true
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def ship_items
|
|
172
|
+
if @fulfillment.ship_items(params[:tracking_number], items)
|
|
173
|
+
respond_with(
|
|
174
|
+
{ fulfillment: @fulfillment },
|
|
175
|
+
{ location: fulfillment_path(@fulfillment) }
|
|
176
|
+
)
|
|
177
|
+
else
|
|
178
|
+
raise Mongoid::Errors::Validations.new(@fulfillment)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
swagger_path '/fulfillments/{id}/cancel_items' do
|
|
183
|
+
operation :post do
|
|
184
|
+
key :summary, 'Mark Items as Canceled'
|
|
185
|
+
key :description, 'Marks items in a fulfillment as canceled (will not be sent to customer)'
|
|
186
|
+
key :operationId, 'markItemsAsCanceled'
|
|
187
|
+
|
|
188
|
+
parameter do
|
|
189
|
+
key :name, :id
|
|
190
|
+
key :in, :path
|
|
191
|
+
key :description, 'ID of fulfillment'
|
|
192
|
+
key :required, true
|
|
193
|
+
key :type, :string
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
parameter do
|
|
197
|
+
key :name, :body
|
|
198
|
+
key :in, :body
|
|
199
|
+
key :required, true
|
|
200
|
+
schema do
|
|
201
|
+
key :type, :object
|
|
202
|
+
key :required, %i(items)
|
|
203
|
+
property :items do
|
|
204
|
+
key :type, :array
|
|
205
|
+
items do
|
|
206
|
+
key :type, :object
|
|
207
|
+
property :id do
|
|
208
|
+
key :type, :string
|
|
209
|
+
key :description, 'The order item ID for the item being canceled'
|
|
210
|
+
end
|
|
211
|
+
property :quantity do
|
|
212
|
+
key :type, :integer
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
response 201 do
|
|
220
|
+
key :description, 'Fulfillment details'
|
|
221
|
+
schema do
|
|
222
|
+
key :type, :object
|
|
223
|
+
property :fulfillment do
|
|
224
|
+
key :'$ref', 'Workarea::Fulfillment'
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
response 404 do
|
|
230
|
+
key :description, 'Fulfillment not found'
|
|
231
|
+
schema do
|
|
232
|
+
key :type, :object
|
|
233
|
+
property :problem do
|
|
234
|
+
key :type, :string
|
|
235
|
+
end
|
|
236
|
+
property :params do
|
|
237
|
+
key :type, :object
|
|
238
|
+
key :additionalProperties, true
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
def cancel_items
|
|
246
|
+
if @fulfillment.cancel_items(items)
|
|
247
|
+
respond_with(
|
|
248
|
+
{ fulfillment: @fulfillment },
|
|
249
|
+
{ location: fulfillment_path(@fulfillment) }
|
|
250
|
+
)
|
|
251
|
+
else
|
|
252
|
+
raise Mongoid::Errors::Validations.new(@fulfillment)
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
private
|
|
257
|
+
|
|
258
|
+
def find_fulfillment
|
|
259
|
+
@fulfillment = Fulfillment.find(params[:id])
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def items
|
|
263
|
+
Array(params[:items]).map(&:to_h)
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class InventorySkusController < Admin::ApplicationController
|
|
5
|
+
before_action :find_inventory_sku, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/inventory_skus' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Inventory SKUs'
|
|
10
|
+
key :description, 'Returns all inventory SKUs from the system'
|
|
11
|
+
key :operationId, 'listInventorySkus'
|
|
12
|
+
key :produces, ['application/json']
|
|
13
|
+
|
|
14
|
+
parameter do
|
|
15
|
+
key :name, :page
|
|
16
|
+
key :in, :query
|
|
17
|
+
key :description, 'Current page'
|
|
18
|
+
key :required, false
|
|
19
|
+
key :type, :integer
|
|
20
|
+
key :default, 1
|
|
21
|
+
end
|
|
22
|
+
parameter do
|
|
23
|
+
key :name, :sort_by
|
|
24
|
+
key :in, :query
|
|
25
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
26
|
+
key :required, false
|
|
27
|
+
key :type, :string
|
|
28
|
+
key :default, 'created_at'
|
|
29
|
+
end
|
|
30
|
+
parameter do
|
|
31
|
+
key :name, :sort_direction
|
|
32
|
+
key :in, :query
|
|
33
|
+
key :description, 'Direction for sort by'
|
|
34
|
+
key :type, :string
|
|
35
|
+
key :enum, %w(asc desc)
|
|
36
|
+
key :default, 'desc'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
response 200 do
|
|
40
|
+
key :description, 'Inventory SKUs'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :inventory_skus do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
operation :post do
|
|
54
|
+
key :summary, 'Create Inventory SKU'
|
|
55
|
+
key :description, 'Creates a new inventory SKU.'
|
|
56
|
+
key :operationId, 'addInventorySku'
|
|
57
|
+
key :produces, ['application/json']
|
|
58
|
+
|
|
59
|
+
parameter do
|
|
60
|
+
key :name, :body
|
|
61
|
+
key :in, :body
|
|
62
|
+
key :description, 'Inventory SKU to add'
|
|
63
|
+
key :required, true
|
|
64
|
+
schema do
|
|
65
|
+
key :type, :object
|
|
66
|
+
property :inventory_sku do
|
|
67
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
response 201 do
|
|
73
|
+
key :description, 'Inventory SKU created'
|
|
74
|
+
schema do
|
|
75
|
+
key :type, :object
|
|
76
|
+
property :inventory_sku do
|
|
77
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
response 422 do
|
|
83
|
+
key :description, 'Validation failure'
|
|
84
|
+
schema do
|
|
85
|
+
key :type, :object
|
|
86
|
+
property :problem do
|
|
87
|
+
key :type, :string
|
|
88
|
+
end
|
|
89
|
+
property :document do
|
|
90
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def index
|
|
98
|
+
@inventory_skus = Inventory::Sku
|
|
99
|
+
.all
|
|
100
|
+
.order_by(sort_field => sort_direction)
|
|
101
|
+
.page(params[:page])
|
|
102
|
+
|
|
103
|
+
respond_with inventory_skus: @inventory_skus
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def create
|
|
107
|
+
@inventory_sku = Inventory::Sku.create!(params[:inventory_sku])
|
|
108
|
+
respond_with(
|
|
109
|
+
{ inventory_sku: @inventory_sku },
|
|
110
|
+
{ status: :created,
|
|
111
|
+
location: inventory_sku_path(@inventory_sku) }
|
|
112
|
+
)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
swagger_path '/inventory_skus/{id}' do
|
|
116
|
+
operation :get do
|
|
117
|
+
key :summary, 'Find Inventory SKU by ID'
|
|
118
|
+
key :description, 'Returns a single inventory SKU'
|
|
119
|
+
key :operationId, 'showInventorySku'
|
|
120
|
+
|
|
121
|
+
parameter do
|
|
122
|
+
key :name, :id
|
|
123
|
+
key :in, :path
|
|
124
|
+
key :description, 'ID of inventory SKU to fetch'
|
|
125
|
+
key :required, true
|
|
126
|
+
key :type, :string
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
response 200 do
|
|
130
|
+
key :description, 'Inventory SKU details'
|
|
131
|
+
schema do
|
|
132
|
+
key :type, :object
|
|
133
|
+
property :inventory_sku do
|
|
134
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
response 404 do
|
|
140
|
+
key :description, 'Inventory SKU not found'
|
|
141
|
+
schema do
|
|
142
|
+
key :type, :object
|
|
143
|
+
property :problem do
|
|
144
|
+
key :type, :string
|
|
145
|
+
end
|
|
146
|
+
property :params do
|
|
147
|
+
key :type, :object
|
|
148
|
+
key :additionalProperties, true
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
operation :patch do
|
|
155
|
+
key :summary, 'Update an Inventory SKU'
|
|
156
|
+
key :description, 'Updates attributes on an inventory SKU'
|
|
157
|
+
key :operationId, 'updateInventorySku'
|
|
158
|
+
|
|
159
|
+
parameter do
|
|
160
|
+
key :name, :id
|
|
161
|
+
key :in, :path
|
|
162
|
+
key :description, 'ID of inventory SKU to update'
|
|
163
|
+
key :required, true
|
|
164
|
+
key :type, :string
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
parameter do
|
|
168
|
+
key :name, :body
|
|
169
|
+
key :in, :body
|
|
170
|
+
key :required, true
|
|
171
|
+
schema do
|
|
172
|
+
key :type, :object
|
|
173
|
+
property :inventory_sku do
|
|
174
|
+
key :description, 'New attributes'
|
|
175
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
response 204 do
|
|
181
|
+
key :description, 'Inventory SKU updated successfully'
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
response 422 do
|
|
185
|
+
key :description, 'Validation failure'
|
|
186
|
+
schema do
|
|
187
|
+
key :type, :object
|
|
188
|
+
property :problem do
|
|
189
|
+
key :type, :string
|
|
190
|
+
end
|
|
191
|
+
property :document do
|
|
192
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
response 404 do
|
|
198
|
+
key :description, 'Inventory SKU not found'
|
|
199
|
+
schema do
|
|
200
|
+
key :type, :object
|
|
201
|
+
property :problem do
|
|
202
|
+
key :type, :string
|
|
203
|
+
end
|
|
204
|
+
property :params do
|
|
205
|
+
key :type, :object
|
|
206
|
+
key :additionalProperties, true
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
operation :delete do
|
|
213
|
+
key :summary, 'Remove an Inventory SKU'
|
|
214
|
+
key :description, 'Remove an Inventory SKU'
|
|
215
|
+
key :operationId, 'removeInventorySku'
|
|
216
|
+
|
|
217
|
+
parameter do
|
|
218
|
+
key :name, :id
|
|
219
|
+
key :in, :path
|
|
220
|
+
key :description, 'ID of inventory SKU to remove'
|
|
221
|
+
key :required, true
|
|
222
|
+
key :type, :string
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
response 204 do
|
|
226
|
+
key :description, 'Inventory SKU removed successfully'
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
response 404 do
|
|
230
|
+
key :description, 'Inventory SKU not found'
|
|
231
|
+
schema do
|
|
232
|
+
key :type, :object
|
|
233
|
+
property :problem do
|
|
234
|
+
key :type, :string
|
|
235
|
+
end
|
|
236
|
+
property :params do
|
|
237
|
+
key :type, :object
|
|
238
|
+
key :additionalProperties, true
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
def show
|
|
246
|
+
respond_with inventory_sku: @inventory_sku
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
def update
|
|
250
|
+
@inventory_sku.update_attributes!(params[:inventory_sku])
|
|
251
|
+
respond_with inventory_sku: @inventory_sku
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
swagger_path '/inventory_skus/bulk' do
|
|
255
|
+
operation :patch do
|
|
256
|
+
key :summary, 'Bulk Upsert Inventory SKUs'
|
|
257
|
+
key :description, 'Creates new inventory SKUs or updates existing ones in bulk.'
|
|
258
|
+
key :operationId, 'upsertInventorySkus'
|
|
259
|
+
key :produces, ['application/json']
|
|
260
|
+
|
|
261
|
+
parameter do
|
|
262
|
+
key :name, :body
|
|
263
|
+
key :in, :body
|
|
264
|
+
key :description, 'Array of inventory SKUs to upsert'
|
|
265
|
+
key :required, true
|
|
266
|
+
schema do
|
|
267
|
+
key :type, :object
|
|
268
|
+
property :inventory_skus do
|
|
269
|
+
key :type, :array
|
|
270
|
+
items do
|
|
271
|
+
key :'$ref', 'Workarea::Inventory::Sku'
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
response 204 do
|
|
278
|
+
key :description, 'Upsert received'
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def bulk
|
|
284
|
+
@bulk = Api::Admin::BulkUpsert.create!(
|
|
285
|
+
klass: Inventory::Sku,
|
|
286
|
+
data: params[:inventory_skus].map(&:to_h)
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
head :no_content
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def destroy
|
|
293
|
+
@inventory_sku.destroy
|
|
294
|
+
head :no_content
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
private
|
|
298
|
+
|
|
299
|
+
def find_inventory_sku
|
|
300
|
+
@inventory_sku = Inventory::Sku.find(params[:id])
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
end
|