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,232 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class CategoryProductRulesController < Admin::ApplicationController
|
|
5
|
+
before_action :find_category
|
|
6
|
+
before_action :find_product_rule, except: [:index, :create]
|
|
7
|
+
|
|
8
|
+
swagger_path '/categories/{id}/product_rules' do
|
|
9
|
+
operation :get do
|
|
10
|
+
key :summary, 'All Category Product Rules'
|
|
11
|
+
key :description, 'Returns all product rules for a category'
|
|
12
|
+
key :operationId, 'listCategoryProductRules'
|
|
13
|
+
key :produces, ['application/json']
|
|
14
|
+
|
|
15
|
+
parameter do
|
|
16
|
+
key :name, :id
|
|
17
|
+
key :in, :path
|
|
18
|
+
key :description, 'category ID'
|
|
19
|
+
key :required, true
|
|
20
|
+
key :type, :string
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
response 200 do
|
|
24
|
+
key :description, 'Category product rules'
|
|
25
|
+
schema do
|
|
26
|
+
key :type, :object
|
|
27
|
+
property :product_rules do
|
|
28
|
+
key :type, :array
|
|
29
|
+
items do
|
|
30
|
+
key :'$ref', 'Workarea::ProductRule'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
operation :post do
|
|
38
|
+
key :summary, 'Create Category Product Rule'
|
|
39
|
+
key :description, 'Creates a new category product rule.'
|
|
40
|
+
key :operationId, 'addCategoryProductRule'
|
|
41
|
+
key :produces, ['application/json']
|
|
42
|
+
|
|
43
|
+
parameter do
|
|
44
|
+
key :name, :id
|
|
45
|
+
key :in, :path
|
|
46
|
+
key :description, 'category 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, 'Rule to add'
|
|
55
|
+
key :required, true
|
|
56
|
+
schema do
|
|
57
|
+
key :type, :object
|
|
58
|
+
property :product_rule do
|
|
59
|
+
key :'$ref', 'Workarea::ProductRule'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
response 201 do
|
|
65
|
+
key :description, 'Product rule created'
|
|
66
|
+
schema do
|
|
67
|
+
key :type, :object
|
|
68
|
+
property :product_rule do
|
|
69
|
+
key :'$ref', 'Workarea::ProductRule'
|
|
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::ProductRule'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def index
|
|
90
|
+
respond_with product_rules: @category.product_rules
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def create
|
|
94
|
+
@product_rule = @category.product_rules.create!(params[:product_rule])
|
|
95
|
+
respond_with(
|
|
96
|
+
{ product_rule: @product_rule },
|
|
97
|
+
{ status: :created,
|
|
98
|
+
location: category_product_rules_path(@category.id) }
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
swagger_path '/categories/{category_id}/product_rules/{id}' do
|
|
103
|
+
operation :patch do
|
|
104
|
+
key :summary, 'Update a category product rule'
|
|
105
|
+
key :description, 'Updates attributes on a category product rule'
|
|
106
|
+
key :operationId, 'updateCategoryProductRule'
|
|
107
|
+
|
|
108
|
+
parameter do
|
|
109
|
+
key :name, :category_id
|
|
110
|
+
key :in, :path
|
|
111
|
+
key :description, 'ID of category'
|
|
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 category product rule 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 :product_rule do
|
|
132
|
+
key :'$ref', 'Workarea::ProductRule'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
response 204 do
|
|
138
|
+
key :description, 'Category product rule 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::ProductRule'
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
response 404 do
|
|
155
|
+
key :description, 'Category or product rule 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 Category Product Rule'
|
|
171
|
+
key :description, 'Remove a category product rule'
|
|
172
|
+
key :operationId, 'removeCategoryProductRule'
|
|
173
|
+
|
|
174
|
+
parameter do
|
|
175
|
+
key :name, :category_id
|
|
176
|
+
key :in, :path
|
|
177
|
+
key :description, 'ID of category'
|
|
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 category product rule to remove'
|
|
186
|
+
key :required, true
|
|
187
|
+
key :type, :string
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
response 204 do
|
|
191
|
+
key :description, 'Category product rule removed successfully'
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
response 404 do
|
|
195
|
+
key :description, 'Category or product rule 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
|
+
@product_rule.update_attributes!(params[:product_rule])
|
|
212
|
+
respond_with product_rule: @product_rule
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def destroy
|
|
216
|
+
@product_rule.destroy
|
|
217
|
+
head :no_content
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
private
|
|
221
|
+
|
|
222
|
+
def find_category
|
|
223
|
+
@category = Catalog::Category.find(params[:category_id])
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def find_product_rule
|
|
227
|
+
@product_rule = @category.product_rules.find(params[:id])
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class ContentAssetsController < Admin::ApplicationController
|
|
5
|
+
before_action :find_asset, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/content_assets' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Content Assets'
|
|
10
|
+
key :description, 'Returns all content assets from the system'
|
|
11
|
+
key :operationId, 'listContentAssets'
|
|
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, 'Content assets'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :assets do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
operation :post do
|
|
54
|
+
key :summary, 'Create Content Asset'
|
|
55
|
+
key :description, 'Creates a new content asset.'
|
|
56
|
+
key :operationId, 'addContentAsset'
|
|
57
|
+
key :produces, ['application/json']
|
|
58
|
+
|
|
59
|
+
parameter do
|
|
60
|
+
key :name, :body
|
|
61
|
+
key :in, :body
|
|
62
|
+
key :description, 'Content asset to add'
|
|
63
|
+
key :required, true
|
|
64
|
+
schema do
|
|
65
|
+
key :type, :object
|
|
66
|
+
property :asset do
|
|
67
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
response 201 do
|
|
73
|
+
key :description, 'Content asset created'
|
|
74
|
+
schema do
|
|
75
|
+
key :type, :object
|
|
76
|
+
property :asset do
|
|
77
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
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::Content::Asset'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def index
|
|
98
|
+
@assets = Content::Asset
|
|
99
|
+
.all
|
|
100
|
+
.order_by(sort_field => sort_direction)
|
|
101
|
+
.page(params[:page])
|
|
102
|
+
|
|
103
|
+
respond_with assets: @assets
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def create
|
|
107
|
+
@asset = Content::Asset.create!(params[:asset])
|
|
108
|
+
respond_with(
|
|
109
|
+
{ asset: @asset },
|
|
110
|
+
{ status: :created,
|
|
111
|
+
location: content_asset_path(@asset) }
|
|
112
|
+
)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
swagger_path '/content_assets/{id}' do
|
|
116
|
+
operation :get do
|
|
117
|
+
key :summary, 'Find Content Asset by ID'
|
|
118
|
+
key :description, 'Returns a single content asset'
|
|
119
|
+
key :operationId, 'showContentAsset'
|
|
120
|
+
|
|
121
|
+
parameter do
|
|
122
|
+
key :name, :id
|
|
123
|
+
key :in, :path
|
|
124
|
+
key :description, 'ID of content asset to fetch'
|
|
125
|
+
key :required, true
|
|
126
|
+
key :type, :string
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
response 200 do
|
|
130
|
+
key :description, 'Content asset details'
|
|
131
|
+
schema do
|
|
132
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
response 404 do
|
|
137
|
+
key :description, 'Content asset not found'
|
|
138
|
+
schema do
|
|
139
|
+
key :type, :object
|
|
140
|
+
property :problem do
|
|
141
|
+
key :type, :string
|
|
142
|
+
end
|
|
143
|
+
property :params do
|
|
144
|
+
key :type, :object
|
|
145
|
+
key :additionalProperties, true
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
operation :patch do
|
|
152
|
+
key :summary, 'Update a Content Asset'
|
|
153
|
+
key :description, 'Updates attributes on a content asset'
|
|
154
|
+
key :operationId, 'updateContentAsset'
|
|
155
|
+
|
|
156
|
+
parameter do
|
|
157
|
+
key :name, :id
|
|
158
|
+
key :in, :path
|
|
159
|
+
key :description, 'ID of content asset to update'
|
|
160
|
+
key :required, true
|
|
161
|
+
key :type, :string
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
parameter do
|
|
165
|
+
key :name, :body
|
|
166
|
+
key :in, :body
|
|
167
|
+
key :description, 'New attributes'
|
|
168
|
+
key :required, true
|
|
169
|
+
schema do
|
|
170
|
+
key :type, :object
|
|
171
|
+
property :asset do
|
|
172
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
response 204 do
|
|
178
|
+
key :description, 'Content asset updated successfully'
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
response 422 do
|
|
182
|
+
key :description, 'Validation failure'
|
|
183
|
+
schema do
|
|
184
|
+
key :type, :object
|
|
185
|
+
property :problem do
|
|
186
|
+
key :type, :string
|
|
187
|
+
end
|
|
188
|
+
property :document do
|
|
189
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
response 404 do
|
|
195
|
+
key :description, 'Content asset 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
|
+
|
|
209
|
+
operation :delete do
|
|
210
|
+
key :summary, 'Remove a Content Asset'
|
|
211
|
+
key :description, 'Remove a content asset'
|
|
212
|
+
key :operationId, 'removeContentAsset'
|
|
213
|
+
|
|
214
|
+
parameter do
|
|
215
|
+
key :name, :id
|
|
216
|
+
key :in, :path
|
|
217
|
+
key :description, 'ID of content asset to remove'
|
|
218
|
+
key :required, true
|
|
219
|
+
key :type, :string
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
response 204 do
|
|
223
|
+
key :description, 'Content asset removed successfully'
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
response 404 do
|
|
227
|
+
key :description, 'Content asset not found'
|
|
228
|
+
schema do
|
|
229
|
+
key :type, :object
|
|
230
|
+
property :problem do
|
|
231
|
+
key :type, :string
|
|
232
|
+
end
|
|
233
|
+
property :params do
|
|
234
|
+
key :type, :object
|
|
235
|
+
key :additionalProperties, true
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def show
|
|
243
|
+
respond_with asset: @asset
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def update
|
|
247
|
+
@asset.update_attributes!(params[:asset])
|
|
248
|
+
respond_with asset: @asset
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
swagger_path '/content_assets/bulk' do
|
|
252
|
+
operation :patch do
|
|
253
|
+
key :summary, 'Bulk Upsert Content Assets'
|
|
254
|
+
key :description, 'Creates new content assets or updates existing ones in bulk.'
|
|
255
|
+
key :operationId, 'upsertContentAssets'
|
|
256
|
+
key :produces, ['application/json']
|
|
257
|
+
|
|
258
|
+
parameter do
|
|
259
|
+
key :name, :body
|
|
260
|
+
key :in, :body
|
|
261
|
+
key :description, 'Array of content assets to upsert'
|
|
262
|
+
key :required, true
|
|
263
|
+
schema do
|
|
264
|
+
key :type, :array
|
|
265
|
+
items do
|
|
266
|
+
key :'$ref', 'Workarea::Content::Asset'
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
response 204 do
|
|
272
|
+
key :description, 'Upsert received'
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def bulk
|
|
278
|
+
@bulk = Api::Admin::BulkUpsert.create!(
|
|
279
|
+
klass: Content::Asset,
|
|
280
|
+
data: params[:assets].map(&:to_h)
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
head :no_content
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def destroy
|
|
287
|
+
@asset.destroy
|
|
288
|
+
head :no_content
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
private
|
|
292
|
+
|
|
293
|
+
def find_asset
|
|
294
|
+
@asset = Content::Asset.find(params[:id])
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
end
|