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.
Files changed (178) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/README.md +82 -0
  4. data/Rakefile +10 -0
  5. data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
  6. data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
  7. data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
  8. data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
  9. data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
  10. data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
  11. data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
  12. data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
  13. data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
  14. data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
  15. data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
  16. data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
  17. data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
  18. data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
  19. data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
  20. data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
  21. data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
  22. data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
  23. data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
  24. data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
  25. data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
  26. data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
  27. data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
  28. data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
  29. data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
  30. data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
  31. data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
  32. data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
  33. data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
  34. data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
  35. data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
  36. data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
  37. data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
  38. data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
  39. data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
  40. data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
  41. data/app/models/workarea/user.decorator +7 -0
  42. data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
  43. data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
  44. data/bin/rails +18 -0
  45. data/config/initializers/append_points.rb +4 -0
  46. data/config/initializers/config.rb +15 -0
  47. data/config/locales/en.yml +9 -0
  48. data/config/routes.rb +81 -0
  49. data/lib/workarea/api/admin.rb +21 -0
  50. data/lib/workarea/api/admin/engine.rb +14 -0
  51. data/lib/workarea/api/admin/swagger.rb +106 -0
  52. data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
  53. data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
  54. data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
  55. data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
  56. data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
  57. data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
  58. data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
  59. data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
  60. data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
  61. data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
  62. data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
  63. data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
  64. data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
  65. data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
  66. data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
  67. data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
  68. data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
  69. data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
  70. data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
  71. data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
  72. data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
  73. data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
  74. data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
  75. data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
  76. data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
  77. data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
  78. data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
  79. data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
  80. data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
  81. data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
  82. data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
  83. data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
  84. data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
  85. data/test/dummy/Rakefile +7 -0
  86. data/test/dummy/app/assets/config/manifest.js +4 -0
  87. data/test/dummy/app/assets/images/.keep +0 -0
  88. data/test/dummy/app/assets/javascripts/application.js +13 -0
  89. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  90. data/test/dummy/app/controllers/application_controller.rb +3 -0
  91. data/test/dummy/app/controllers/concerns/.keep +0 -0
  92. data/test/dummy/app/helpers/application_helper.rb +2 -0
  93. data/test/dummy/app/jobs/application_job.rb +2 -0
  94. data/test/dummy/app/mailers/.keep +0 -0
  95. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  96. data/test/dummy/app/models/.keep +0 -0
  97. data/test/dummy/app/models/concerns/.keep +0 -0
  98. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  99. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  100. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  101. data/test/dummy/bin/bundle +3 -0
  102. data/test/dummy/bin/rails +4 -0
  103. data/test/dummy/bin/rake +4 -0
  104. data/test/dummy/bin/setup +34 -0
  105. data/test/dummy/bin/update +29 -0
  106. data/test/dummy/config.ru +4 -0
  107. data/test/dummy/config/application.rb +25 -0
  108. data/test/dummy/config/boot.rb +5 -0
  109. data/test/dummy/config/cable.yml +9 -0
  110. data/test/dummy/config/environment.rb +5 -0
  111. data/test/dummy/config/environments/development.rb +55 -0
  112. data/test/dummy/config/environments/production.rb +86 -0
  113. data/test/dummy/config/environments/test.rb +43 -0
  114. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  115. data/test/dummy/config/initializers/assets.rb +11 -0
  116. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  117. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  118. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  119. data/test/dummy/config/initializers/inflections.rb +16 -0
  120. data/test/dummy/config/initializers/mime_types.rb +4 -0
  121. data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
  122. data/test/dummy/config/initializers/session_store.rb +3 -0
  123. data/test/dummy/config/initializers/workarea.rb +8 -0
  124. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  125. data/test/dummy/config/locales/en.yml +23 -0
  126. data/test/dummy/config/puma.rb +47 -0
  127. data/test/dummy/config/routes.rb +6 -0
  128. data/test/dummy/config/secrets.yml +22 -0
  129. data/test/dummy/config/spring.rb +6 -0
  130. data/test/dummy/db/seeds.rb +2 -0
  131. data/test/dummy/log/.keep +0 -0
  132. data/test/dummy/public/404.html +67 -0
  133. data/test/dummy/public/422.html +67 -0
  134. data/test/dummy/public/500.html +66 -0
  135. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  136. data/test/dummy/public/apple-touch-icon.png +0 -0
  137. data/test/dummy/public/favicon.ico +1 -0
  138. data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
  139. data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
  140. data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
  141. data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
  142. data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
  143. data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
  144. data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
  145. data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
  146. data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
  147. data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
  148. data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
  149. data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
  150. data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
  151. data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
  152. data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
  153. data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
  154. data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
  155. data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
  156. data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
  157. data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
  158. data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
  159. data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
  160. data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
  161. data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
  162. data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
  163. data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
  164. data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
  165. data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
  166. data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
  167. data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
  168. data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
  169. data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
  170. data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
  171. data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
  172. data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
  173. data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
  174. data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
  175. data/test/test_helper.rb +10 -0
  176. data/test/vcr_cassettes/product_image_from_url.yml +43 -0
  177. data/workarea-api-admin.gemspec +18 -0
  178. metadata +252 -0
@@ -0,0 +1,232 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class VariantsController < Admin::ApplicationController
5
+ before_action :find_product
6
+ before_action :find_variant, except: [:index, :create]
7
+
8
+ swagger_path '/products/{id}/variants' do
9
+ operation :get do
10
+ key :summary, 'All Product Variants'
11
+ key :description, 'Returns all variants for a product'
12
+ key :operationId, 'listProductVariants'
13
+ key :produces, ['application/json']
14
+
15
+ parameter do
16
+ key :name, :id
17
+ key :in, :path
18
+ key :description, 'product ID'
19
+ key :required, true
20
+ key :type, :string
21
+ end
22
+
23
+ response 200 do
24
+ key :description, 'Product variants'
25
+ schema do
26
+ key :type, :object
27
+ property :variants do
28
+ key :type, :array
29
+ items do
30
+ key :'$ref', 'Workarea::Catalog::Variant'
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ operation :post do
38
+ key :summary, 'Create Product Variant'
39
+ key :description, 'Creates a new produt variant'
40
+ key :operationId, 'addProductVariant'
41
+ key :produces, ['application/json']
42
+
43
+ parameter do
44
+ key :name, :id
45
+ key :in, :path
46
+ key :description, 'product ID'
47
+ key :required, true
48
+ key :type, :string
49
+ end
50
+
51
+ parameter do
52
+ key :name, :body
53
+ key :in, :body
54
+ key :description, 'Variant to add'
55
+ key :required, true
56
+ schema do
57
+ key :type, :object
58
+ property :variant do
59
+ key :'$ref', 'Workarea::Catalog::Variant'
60
+ end
61
+ end
62
+ end
63
+
64
+ response 201 do
65
+ key :description, 'Variant created'
66
+ schema do
67
+ key :type, :object
68
+ property :variant do
69
+ key :'$ref', 'Workarea::Catalog::Variant'
70
+ end
71
+ end
72
+ end
73
+
74
+ response 422 do
75
+ key :description, 'Validation failure'
76
+ schema do
77
+ key :type, :object
78
+ property :problem do
79
+ key :type, :string
80
+ end
81
+ property :document do
82
+ key :'$ref', 'Workarea::Catalog::Variant'
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ def index
90
+ respond_with variants: @product.variants
91
+ end
92
+
93
+ def create
94
+ @variant = @product.variants.create!(params[:variant])
95
+ respond_with(
96
+ { variant: @variant },
97
+ { status: :created,
98
+ location: product_variants_path(@product) }
99
+ )
100
+ end
101
+
102
+ swagger_path '/products/{product_id}/variants/{id}' do
103
+ operation :patch do
104
+ key :summary, 'Update a product variant'
105
+ key :description, 'Updates attributes on a product variant'
106
+ key :operationId, 'updateProductVariant'
107
+
108
+ parameter do
109
+ key :name, :product_id
110
+ key :in, :path
111
+ key :description, 'ID of product'
112
+ key :required, true
113
+ key :type, :string
114
+ end
115
+
116
+ parameter do
117
+ key :name, :id
118
+ key :in, :path
119
+ key :description, 'ID of variant to update'
120
+ key :required, true
121
+ key :type, :string
122
+ end
123
+
124
+ parameter do
125
+ key :name, :body
126
+ key :in, :body
127
+ key :description, 'New attributes'
128
+ key :required, true
129
+ schema do
130
+ key :type, :object
131
+ property :variant do
132
+ key :'$ref', 'Workarea::Catalog::Variant'
133
+ end
134
+ end
135
+ end
136
+
137
+ response 204 do
138
+ key :description, 'Variant updated successfully'
139
+ end
140
+
141
+ response 422 do
142
+ key :description, 'Validation failure'
143
+ schema do
144
+ key :type, :object
145
+ property :problem do
146
+ key :type, :string
147
+ end
148
+ property :document do
149
+ key :'$ref', 'Workarea::Catalog::Variant'
150
+ end
151
+ end
152
+ end
153
+
154
+ response 404 do
155
+ key :description, 'Product or variant not found'
156
+ schema do
157
+ key :type, :object
158
+ property :problem do
159
+ key :type, :string
160
+ end
161
+ property :params do
162
+ key :type, :object
163
+ key :additionalProperties, true
164
+ end
165
+ end
166
+ end
167
+ end
168
+
169
+ operation :delete do
170
+ key :summary, 'Remove a Product Variant'
171
+ key :description, 'Remove a product variant'
172
+ key :operationId, 'removeProductVariant'
173
+
174
+ parameter do
175
+ key :name, :product_id
176
+ key :in, :path
177
+ key :description, 'ID of product'
178
+ key :required, true
179
+ key :type, :string
180
+ end
181
+
182
+ parameter do
183
+ key :name, :id
184
+ key :in, :path
185
+ key :description, 'ID of variant to remove'
186
+ key :required, true
187
+ key :type, :string
188
+ end
189
+
190
+ response 204 do
191
+ key :description, 'Variant removed successfully'
192
+ end
193
+
194
+ response 404 do
195
+ key :description, 'Product or variant not found'
196
+ schema do
197
+ key :type, :object
198
+ property :problem do
199
+ key :type, :string
200
+ end
201
+ property :params do
202
+ key :type, :object
203
+ key :additionalProperties, true
204
+ end
205
+ end
206
+ end
207
+ end
208
+ end
209
+
210
+ def update
211
+ @variant.update_attributes!(params[:variant])
212
+ respond_with variant: @variant
213
+ end
214
+
215
+ def destroy
216
+ @variant.destroy
217
+ head :no_content
218
+ end
219
+
220
+ private
221
+
222
+ def find_product
223
+ @product = Catalog::Product.find(params[:product_id])
224
+ end
225
+
226
+ def find_variant
227
+ @variant = @product.variants.find(params[:id])
228
+ end
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,74 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class BulkUpsert
5
+ include ApplicationDocument
6
+
7
+ field :klass, type: String
8
+ field :data, type: Array, default: []
9
+ field :data_errors, type: Hash, default: {}
10
+ field :started_at, type: DateTime
11
+ field :completed_at, type: DateTime
12
+
13
+ validates :data,
14
+ presence: true,
15
+ length: {
16
+ maximum: Workarea.config.max_api_bulk_data_size,
17
+ message: I18n.t('workarea.api.admin.bulk_upserts.data_too_large')
18
+ }
19
+
20
+ validate :model_validity
21
+
22
+ def perform!
23
+ update_attribute(:started_at, Time.now)
24
+
25
+ data.each_with_index do |attrs, i|
26
+ instance = find_updated_model_for(attrs)
27
+ instance.save
28
+
29
+ if instance.errors.present?
30
+ data_errors[i.to_s] = instance.errors.as_json
31
+ end
32
+ end
33
+
34
+ if data_errors.blank?
35
+ destroy!
36
+ else
37
+ self.completed_at = Time.now
38
+ save!(validate: false)
39
+ end
40
+ end
41
+
42
+ def model_class
43
+ @model_class ||= klass.constantize
44
+ end
45
+
46
+ private
47
+
48
+ def model_validity
49
+ data.each_with_index do |attrs, i|
50
+ instance = find_updated_model_for(attrs)
51
+
52
+ next if instance.valid?
53
+ instance.errors.full_messages.each do |message|
54
+ errors.add(i.to_s, message)
55
+ end
56
+ end
57
+ end
58
+
59
+ def find_updated_model_for(attrs)
60
+ id = attrs['_id'].presence || attrs['id'].presence ||
61
+ attrs[:_id].presence || attrs[:id]
62
+
63
+ if id.present?
64
+ result = model_class.find_or_initialize_by(id: id)
65
+ result.attributes = attrs
66
+ result
67
+ else
68
+ model_class.new(attrs)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,7 @@
1
+ module Workarea
2
+ decorate User, with: 'admin_api' do
3
+ decorated do
4
+ field :api_access, type: Boolean, default: false
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ .grid__cell.grid__cell--50
2
+ .property
3
+ = check_box :user, :api_access
4
+ = label_tag 'user_api_access', class: 'property__name' do
5
+ = inline_svg('workarea/api/admin/icons/api.svg', class: 'svg-icon')
6
+ %span= t('workarea.api.admin.users.permissions.api')
@@ -0,0 +1,15 @@
1
+ module Workarea
2
+ class PerformApiBulkUpsert
3
+ include Sidekiq::Worker
4
+ include Sidekiq::CallbacksWorker
5
+
6
+ sidekiq_options(
7
+ enqueue_on: { Api::Admin::BulkUpsert => :create },
8
+ retry: false
9
+ )
10
+
11
+ def perform(id)
12
+ Api::Admin::BulkUpsert.find(id).perform!
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
+ ENGINE_PATH = File.expand_path('../../lib/workarea/api/admin/engine', __FILE__)
7
+
8
+ # Set up gems listed in the Gemfile.
9
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __FILE__)
10
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
11
+
12
+ require 'action_controller/railtie'
13
+ require 'action_view/railtie'
14
+ require 'action_mailer/railtie'
15
+ require 'rails/test_unit/railtie'
16
+ require 'sprockets/railtie'
17
+
18
+ require 'rails/engine/commands'
@@ -0,0 +1,4 @@
1
+ Workarea::Plugin.append_partials(
2
+ 'admin.user_permissions',
3
+ 'workarea/admin/users/api_permissions'
4
+ )
@@ -0,0 +1,15 @@
1
+ Workarea.config.permissions_fields << 'api_access'
2
+ Workarea.config.max_api_bulk_data_size ||= 1_000
3
+ Workarea.config.api_admin_ignore_definitions ||= [
4
+ /^Workarea::Metrics/,
5
+ /^Workarea::Insights/,
6
+ /^Workarea::Reports/,
7
+ /^Workarea::BulkAction/,
8
+ /^Workarea::Help/,
9
+ /Workarea::User::AdminBookmark/,
10
+ /Workarea::User::RecentPassword/,
11
+ /Workarea::User::PasswordReset/,
12
+ /Workarea::User::AuthenticationToken/,
13
+ /Workarea::Api::Admin::BulkUpsert/,
14
+ /Workarea::User::AdminVisit/
15
+ ]
@@ -0,0 +1,9 @@
1
+ en:
2
+ workarea:
3
+ api:
4
+ admin:
5
+ users:
6
+ permissions:
7
+ api: API
8
+ bulk_upserts:
9
+ data_too_large: has too many objects
@@ -0,0 +1,81 @@
1
+ Workarea::Api::Admin::Engine.routes.draw do
2
+ basic_crud = [:index, :create, :show, :update, :destroy]
3
+ embedded_crud = basic_crud - [:show]
4
+ read_only = basic_crud - [:create, :update, :destroy]
5
+
6
+ get '/', to: 'application#root', as: :root # hack because Rails doesn't have a way to get engine root path
7
+ get '/swagger', to: 'swagger#index'
8
+
9
+ resources :content_assets, only: basic_crud do
10
+ collection { patch 'bulk' }
11
+ end
12
+ resources :categories, only: basic_crud do
13
+ collection { patch 'bulk' }
14
+ resources :product_rules, only: embedded_crud, controller: 'category_product_rules'
15
+ end
16
+ resources :content, only: basic_crud - [:destroy] do
17
+ collection { patch 'bulk' }
18
+ end
19
+ resources :discounts, only: basic_crud
20
+ resources :email_shares, only: read_only
21
+ resources :email_signups, only: read_only
22
+ resources :fulfillments, only: read_only do
23
+ member do
24
+ post 'ship_items'
25
+ post 'cancel_items'
26
+ end
27
+ end
28
+ resources :inventory_skus, only: basic_crud do
29
+ collection { patch 'bulk' }
30
+ end
31
+ resources :navigation_taxons, only: basic_crud do
32
+ collection { patch 'bulk' }
33
+ end
34
+ resources :navigation_menus, only: basic_crud
35
+ resources :orders, only: read_only
36
+ resources :pages, only: basic_crud do
37
+ collection { patch 'bulk' }
38
+ end
39
+ resources :payments, only: read_only
40
+ resources :payment_profiles, only: basic_crud do
41
+ collection { patch 'bulk' }
42
+ resources :saved_credit_cards, only: basic_crud do
43
+ collection { patch 'bulk' }
44
+ end
45
+ end
46
+ resources :payment_transactions, only: read_only
47
+ resources :pricing_skus, only: basic_crud do
48
+ collection { patch 'bulk' }
49
+ resources :prices, only: embedded_crud
50
+ end
51
+ resources :products, only: basic_crud do
52
+ collection { patch 'bulk' }
53
+ resources :variants, only: embedded_crud
54
+ resources :images, only: embedded_crud, controller: 'product_images'
55
+ resource :recommendation_settings, only: [:show, :update]
56
+ end
57
+ resources :promo_code_lists, only: basic_crud do
58
+ collection { patch 'bulk' }
59
+ end
60
+ resources :redirects, only: basic_crud do
61
+ collection { patch 'bulk' }
62
+ end
63
+ resources :releases, only: basic_crud do
64
+ collection { patch 'bulk' }
65
+ end
66
+ resources :shippings, only: read_only
67
+ resources :shipping_services, only: basic_crud do
68
+ collection { patch 'bulk' }
69
+ resources :rates, only: embedded_crud, controller: 'shipping_rates'
70
+ end
71
+ resources :tax_categories, only: basic_crud do
72
+ collection { patch 'bulk' }
73
+ resources :rates, only: basic_crud, controller: 'tax_rates' do
74
+ collection { patch 'bulk' }
75
+ end
76
+ end
77
+ resources :users, only: basic_crud do
78
+ collection { patch 'bulk' }
79
+ resources :saved_addresses, only: embedded_crud
80
+ end
81
+ end