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,256 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class SavedCreditCardsController < Admin::ApplicationController
5
+ before_action :find_payment_profile
6
+ before_action :find_saved_credit_card, except: [:index, :create, :bulk]
7
+
8
+ swagger_path '/payment_profiles/{id}/saved_credit_cards' do
9
+ operation :get do
10
+ key :summary, 'All Saved Credit Cards'
11
+ key :description, 'Returns all saved credit cards for a payment profile'
12
+ key :operationId, 'listSavedCreditCards'
13
+ key :produces, ['application/json']
14
+
15
+ parameter do
16
+ key :name, :id
17
+ key :in, :path
18
+ key :description, 'payment profile ID'
19
+ key :required, true
20
+ key :type, :string
21
+ end
22
+
23
+ response 200 do
24
+ key :description, 'Saved credit cards'
25
+ schema do
26
+ key :type, :object
27
+ property :saved_credit_cards do
28
+ key :type, :array
29
+ items do
30
+ key :'$ref', 'Workarea::Payment::SavedCreditCard'
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ operation :post do
38
+ key :summary, 'Create Saved Credit Card'
39
+ key :description, 'Creates a new saved credit card'
40
+ key :operationId, 'addSavedCreditCard'
41
+ key :produces, ['application/json']
42
+
43
+ parameter do
44
+ key :name, :id
45
+ key :in, :path
46
+ key :description, 'saved credit card 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, 'Saved credit card to add'
55
+ key :required, true
56
+ schema do
57
+ key :type, :object
58
+ property :saved_credit_card do
59
+ key :'$ref', 'Workarea::Payment::SavedCreditCard'
60
+ end
61
+ end
62
+ end
63
+
64
+ response 201 do
65
+ key :description, 'Saved credit card created'
66
+ schema do
67
+ key :type, :object
68
+ property :saved_credit_card do
69
+ key :'$ref', 'Workarea::Payment::SavedCreditCard'
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::Payment::SavedCreditCard'
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ def index
90
+ @saved_credit_cards = @payment_profile.credit_cards.page(params[:page])
91
+ respond_with saved_credit_cards: @saved_credit_cards
92
+ end
93
+
94
+ def create
95
+ @saved_credit_card = @payment_profile.credit_cards.create!(
96
+ params[:saved_credit_card]
97
+ )
98
+
99
+ respond_with(
100
+ { saved_credit_card: @saved_credit_card },
101
+ { status: :created,
102
+ location: payment_profile_saved_credit_card_path(
103
+ @payment_profile,
104
+ @saved_credit_card
105
+ ) }
106
+ )
107
+ end
108
+
109
+ def show
110
+ respond_with saved_credit_card: @saved_credit_card
111
+ end
112
+
113
+ swagger_path '/payment_profiles/{payment_profile_id}/saved_credit_cards/{id}' do
114
+ operation :patch do
115
+ key :summary, 'Update a Saved Credit Card'
116
+ key :description, 'Updates attributes on a saved credit card'
117
+ key :operationId, 'updateSavedCreditCard'
118
+
119
+ parameter do
120
+ key :name, :payment_profile_id
121
+ key :in, :path
122
+ key :description, 'ID of payment profile'
123
+ key :required, true
124
+ key :type, :string
125
+ end
126
+
127
+ parameter do
128
+ key :name, :id
129
+ key :in, :path
130
+ key :description, 'ID of saved credit card to update'
131
+ key :required, true
132
+ key :type, :string
133
+ end
134
+
135
+ parameter do
136
+ key :name, :body
137
+ key :in, :body
138
+ key :description, 'New attributes'
139
+ key :required, true
140
+ schema do
141
+ key :type, :object
142
+ property :saved_credit_card do
143
+ key :'$ref', 'Workarea::Payment::SavedCreditCard'
144
+ end
145
+ end
146
+ end
147
+
148
+ response 204 do
149
+ key :description, 'Saved credit card updated successfully'
150
+ end
151
+
152
+ response 422 do
153
+ key :description, 'Validation failure'
154
+ schema do
155
+ key :type, :object
156
+ property :problem do
157
+ key :type, :string
158
+ end
159
+ property :document do
160
+ key :'$ref', 'Workarea::Payment::SavedCreditCard'
161
+ end
162
+ end
163
+ end
164
+
165
+ response 404 do
166
+ key :description, 'Payment profile or saved credit card not found'
167
+ schema do
168
+ key :type, :object
169
+ property :problem do
170
+ key :type, :string
171
+ end
172
+ property :params do
173
+ key :type, :object
174
+ key :additionalProperties, true
175
+ end
176
+ end
177
+ end
178
+ end
179
+
180
+ operation :delete do
181
+ key :summary, 'Remove a Saved Credit Card'
182
+ key :description, 'Remove a saved credit card'
183
+ key :operationId, 'removeSavedCreditCard'
184
+
185
+ parameter do
186
+ key :name, :payment_profile_id
187
+ key :in, :path
188
+ key :description, 'ID of payment profile'
189
+ key :required, true
190
+ key :type, :string
191
+ end
192
+
193
+ parameter do
194
+ key :name, :id
195
+ key :in, :path
196
+ key :description, 'ID of saved credit card to update'
197
+ key :required, true
198
+ key :type, :string
199
+ end
200
+
201
+ response 204 do
202
+ key :description, 'Saved credit card removed successfully'
203
+ end
204
+
205
+ response 404 do
206
+ key :description, 'Payment profile or saved credit card not found'
207
+ schema do
208
+ key :type, :object
209
+ property :problem do
210
+ key :type, :string
211
+ end
212
+ property :params do
213
+ key :type, :object
214
+ key :additionalProperties, true
215
+ end
216
+ end
217
+ end
218
+ end
219
+ end
220
+
221
+ def update
222
+ @saved_credit_card.update_attributes!(params[:saved_credit_card])
223
+ respond_with saved_credit_card: @saved_credit_card
224
+ end
225
+
226
+ def bulk
227
+ data = params[:saved_credit_cards].presence || []
228
+ data.map!(&:to_h)
229
+ data.map! { |attrs| attrs.merge(profile_id: @payment_profile.id) }
230
+
231
+ @bulk = Api::Admin::BulkUpsert.create!(
232
+ klass: Payment::SavedCreditCard,
233
+ data: data
234
+ )
235
+
236
+ head :no_content
237
+ end
238
+
239
+ def destroy
240
+ @saved_credit_card.destroy
241
+ head :no_content
242
+ end
243
+
244
+ private
245
+
246
+ def find_payment_profile
247
+ @payment_profile = Payment::Profile.find(params[:payment_profile_id])
248
+ end
249
+
250
+ def find_saved_credit_card
251
+ @saved_credit_card = @payment_profile.credit_cards.find(params[:id])
252
+ end
253
+ end
254
+ end
255
+ end
256
+ end
@@ -0,0 +1,232 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class ShippingRatesController < Admin::ApplicationController
5
+ before_action :find_shipping_service
6
+ before_action :find_rate, except: [:index, :create]
7
+
8
+ swagger_path '/shipping_services/{id}/rates' do
9
+ operation :get do
10
+ key :summary, 'All Shipping Service Rates'
11
+ key :description, 'Returns all rates for a shipping service'
12
+ key :operationId, 'listShippingServiceRates'
13
+ key :produces, ['application/json']
14
+
15
+ parameter do
16
+ key :name, :id
17
+ key :in, :path
18
+ key :description, 'shipping service ID'
19
+ key :required, true
20
+ key :type, :string
21
+ end
22
+
23
+ response 200 do
24
+ key :description, 'Shipping service rates'
25
+ schema do
26
+ key :type, :object
27
+ property :rates do
28
+ key :type, :array
29
+ items do
30
+ key :'$ref', 'Workarea::Shipping::Rate'
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ operation :post do
38
+ key :summary, 'Create Shipping Service Rate'
39
+ key :description, 'Creates a new shipping service rate.'
40
+ key :operationId, 'addShippingServiceRate'
41
+ key :produces, ['application/json']
42
+
43
+ parameter do
44
+ key :name, :id
45
+ key :in, :path
46
+ key :description, 'shipping service 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, 'Rate to add'
55
+ key :required, true
56
+ schema do
57
+ key :type, :object
58
+ property :rate do
59
+ key :'$ref', 'Workarea::Shipping::Rate'
60
+ end
61
+ end
62
+ end
63
+
64
+ response 201 do
65
+ key :description, 'Tax rate created'
66
+ schema do
67
+ key :type, :object
68
+ property :rate do
69
+ key :'$ref', 'Workarea::Shipping::Rate'
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::Shipping::Rate'
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+
89
+ def index
90
+ respond_with rates: @shipping_service.rates
91
+ end
92
+
93
+ def create
94
+ @rate = @shipping_service.rates.create!(params[:rate])
95
+ respond_with(
96
+ { rate: @rate },
97
+ { status: :created,
98
+ location: shipping_service_rates_path(@shipping_service) }
99
+ )
100
+ end
101
+
102
+ swagger_path '/shipping_services/{shipping_service_id}/rates/{id}' do
103
+ operation :patch do
104
+ key :summary, 'Update a shipping service rate'
105
+ key :description, 'Updates attributes on a shipping service rate'
106
+ key :operationId, 'updateShippingServiceRate'
107
+
108
+ parameter do
109
+ key :name, :shipping_service_id
110
+ key :in, :path
111
+ key :description, 'ID of shipping service to update'
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 shipping service rate 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 :rate do
132
+ key :'$ref', 'Workarea::Shipping::Rate'
133
+ end
134
+ end
135
+ end
136
+
137
+ response 204 do
138
+ key :description, 'Shipping service rate 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::Shipping::Rate'
150
+ end
151
+ end
152
+ end
153
+
154
+ response 404 do
155
+ key :description, 'Shipping service or rate 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 Shipping Service Rate'
171
+ key :description, 'Remove a shipping service rate'
172
+ key :operationId, 'removeShippingServiceRate'
173
+
174
+ parameter do
175
+ key :name, :shipping_service_id
176
+ key :in, :path
177
+ key :description, 'ID of shipping service'
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 rate to update'
186
+ key :required, true
187
+ key :type, :string
188
+ end
189
+
190
+ response 204 do
191
+ key :description, 'Shipping service rate removed successfully'
192
+ end
193
+
194
+ response 404 do
195
+ key :description, 'Shipping service or rate 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
+ @rate.update_attributes!(params[:rate])
212
+ respond_with rate: @rate
213
+ end
214
+
215
+ def destroy
216
+ @rate.destroy
217
+ head :no_content
218
+ end
219
+
220
+ private
221
+
222
+ def find_shipping_service
223
+ @shipping_service = Shipping::Service.find(params[:shipping_service_id])
224
+ end
225
+
226
+ def find_rate
227
+ @rate = @shipping_service.rates.find(params[:id])
228
+ end
229
+ end
230
+ end
231
+ end
232
+ end