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,305 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class PaymentProfilesController < Admin::ApplicationController
5
+ before_action :find_payment_profile, except: [:index, :create, :bulk]
6
+
7
+ swagger_path '/payment_profiles' do
8
+ operation :get do
9
+ key :summary, 'All Payment Profiles'
10
+ key :description, 'Returns all payment profiles from the system'
11
+ key :operationId, 'listPaymentProfiles'
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, 'Payment profiles'
41
+ schema do
42
+ key :type, :object
43
+ property :payment_profiles do
44
+ key :type, :array
45
+ items do
46
+ key :'$ref', 'Workarea::Payment::Profile'
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ operation :post do
54
+ key :summary, 'Create Payment Profile'
55
+ key :description, 'Creates a new payment profile'
56
+ key :operationId, 'addPaymentProfile'
57
+ key :produces, ['application/json']
58
+
59
+ parameter do
60
+ key :name, :body
61
+ key :in, :body
62
+ key :description, 'Payment profile to add'
63
+ key :required, true
64
+ schema do
65
+ key :type, :object
66
+ property :payment_profile do
67
+ key :'$ref', 'Workarea::Payment::Profile'
68
+ end
69
+ end
70
+ end
71
+
72
+ response 201 do
73
+ key :description, 'Payment profile created'
74
+ schema do
75
+ key :type, :object
76
+ property :payment_profile do
77
+ key :'$ref', 'Workarea::Payment::Profile'
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::Payment::Profile'
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ def index
98
+ @payment_profiles = Payment::Profile
99
+ .all
100
+ .order_by(sort_field => sort_direction)
101
+ .page(params[:page])
102
+
103
+ respond_with payment_profiles: @payment_profiles
104
+ end
105
+
106
+ def create
107
+ @payment_profile = Payment::Profile.create!(params[:payment_profile])
108
+ respond_with(
109
+ { payment_profile: @payment_profile },
110
+ { status: :created,
111
+ location: payment_profile_path(@payment_profile) }
112
+ )
113
+ end
114
+
115
+ swagger_path '/payment_profiles/{id}' do
116
+ operation :get do
117
+ key :summary, 'Find Payment Profile by ID'
118
+ key :description, 'Returns a single payment profile'
119
+ key :operationId, 'showPaymentProfile'
120
+
121
+ parameter do
122
+ key :name, :id
123
+ key :in, :path
124
+ key :description, 'ID of payment profile to fetch'
125
+ key :required, true
126
+ key :type, :string
127
+ end
128
+
129
+ response 200 do
130
+ key :description, 'Payment profile details'
131
+ schema do
132
+ key :type, :object
133
+ property :payment_profile do
134
+ key :'$ref', 'Workarea::Payment::Profile'
135
+ end
136
+ end
137
+ end
138
+
139
+ response 404 do
140
+ key :description, 'Payment profile 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 a Payment Profile'
156
+ key :description, 'Updates attributes on a payment profile'
157
+ key :operationId, 'updatePaymentProfile'
158
+
159
+ parameter do
160
+ key :name, :id
161
+ key :in, :path
162
+ key :description, 'ID of payment profile 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 :payment_profile do
174
+ key :description, 'New attributes'
175
+ key :'$ref', 'Workarea::Payment::Profile'
176
+ end
177
+ end
178
+ end
179
+
180
+ response 204 do
181
+ key :description, 'Payment profile 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::Payment::Profile'
193
+ end
194
+ end
195
+ end
196
+
197
+ response 404 do
198
+ key :description, 'Payment profile 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 a Payment Profile'
214
+ key :description, 'Remove a payment profile'
215
+ key :operationId, 'removePaymentProfile'
216
+
217
+ parameter do
218
+ key :name, :id
219
+ key :in, :path
220
+ key :description, 'ID of payment profile to remove'
221
+ key :required, true
222
+ key :type, :string
223
+ end
224
+
225
+ response 204 do
226
+ key :description, 'Payment profile removed successfully'
227
+ end
228
+
229
+ response 404 do
230
+ key :description, 'Payment profile 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 payment_profile: @payment_profile
247
+ end
248
+
249
+ def update
250
+ @payment_profile.update_attributes!(params[:payment_profile])
251
+ respond_with payment_profile: @payment_profile
252
+ end
253
+
254
+ swagger_path '/payment_profiles/bulk' do
255
+ operation :patch do
256
+ key :summary, 'Bulk Upsert Payment Profile'
257
+ key :description, 'Creates new payment profiles or updates existing ones in bulk.'
258
+ key :operationId, 'upsertPaymentProfiles'
259
+ key :produces, ['application/json']
260
+
261
+ parameter do
262
+ key :name, :body
263
+ key :in, :body
264
+ key :description, 'Array of payment profiles to upsert'
265
+ key :required, true
266
+ schema do
267
+ key :type, :object
268
+ property :payment_profiles do
269
+ key :type, :array
270
+ items do
271
+ key :'$ref', 'Workarea::Payment::Profile'
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: Payment::Profile,
286
+ data: params[:payment_profiles].map(&:to_h)
287
+ )
288
+
289
+ head :no_content
290
+ end
291
+
292
+ def destroy
293
+ @payment_profile.destroy
294
+ head :no_content
295
+ end
296
+
297
+ private
298
+
299
+ def find_payment_profile
300
+ @payment_profile = Payment::Profile.find(params[:id])
301
+ end
302
+ end
303
+ end
304
+ end
305
+ end
@@ -0,0 +1,108 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class PaymentTransactionsController < Admin::ApplicationController
5
+ swagger_path '/payment_transactions' do
6
+ operation :get do
7
+ key :summary, 'All Payment Transactions'
8
+ key :description, 'Returns all payment transactions from the system'
9
+ key :operationId, 'listPaymentTransactions'
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, 'Payment transactions'
39
+ schema do
40
+ key :type, :object
41
+ property :transactions do
42
+ key :type, :array
43
+ items do
44
+ key :'$ref', 'Workarea::Payment::Transaction'
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ def index
53
+ @transactions = Payment::Transaction
54
+ .all
55
+ .order_by(sort_field => sort_direction)
56
+ .page(params[:page])
57
+
58
+ respond_with transactions: @transactions
59
+ end
60
+
61
+ swagger_path '/payment_transactions/{id}' do
62
+ operation :get do
63
+ key :summary, 'Find Payment Transaction by ID'
64
+ key :description, 'Returns a single payment transaction'
65
+ key :operationId, 'showPaymentTransaction'
66
+
67
+ parameter do
68
+ key :name, :id
69
+ key :in, :path
70
+ key :description, 'ID of payment transaction to fetch'
71
+ key :required, true
72
+ key :type, :string
73
+ end
74
+
75
+ response 200 do
76
+ key :description, 'Payment transaction details'
77
+ schema do
78
+ key :type, :object
79
+ property :transaction do
80
+ key :'$ref', 'Workarea::Payment::Transaction'
81
+ end
82
+ end
83
+ end
84
+
85
+ response 404 do
86
+ key :description, 'Payment transaction 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
+ @transaction = Payment::Transaction.find(params[:id])
103
+ respond_with transaction: @transaction
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,115 @@
1
+ module Workarea
2
+ module Api
3
+ module Admin
4
+ class PaymentsController < Admin::ApplicationController
5
+ swagger_path '/payments' do
6
+ operation :get do
7
+ key :summary, 'All Payments'
8
+ key :description, 'Returns all payments from the system'
9
+ key :operationId, 'listPayments'
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, 'Payments'
39
+ schema do
40
+ key :type, :object
41
+ property :payments do
42
+ key :type, :array
43
+ items do
44
+ key :'$ref', 'Workarea::Payment'
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ def index
53
+ @payments = Payment
54
+ .all
55
+ .order_by(sort_field => sort_direction)
56
+ .page(params[:page])
57
+
58
+ respond_with payments: @payments
59
+ end
60
+
61
+ swagger_path '/payments/{id}' do
62
+ operation :get do
63
+ key :summary, 'Find Payment by ID'
64
+ key :description, 'Returns a single payment'
65
+ key :operationId, 'showPayment'
66
+
67
+ parameter do
68
+ key :name, :id
69
+ key :in, :path
70
+ key :description, 'ID of payment to fetch'
71
+ key :required, true
72
+ key :type, :string
73
+ end
74
+
75
+ response 200 do
76
+ key :description, 'Payment details'
77
+ schema do
78
+ key :type, :object
79
+ property :payment do
80
+ key :'$ref', 'Workarea::Payment'
81
+ end
82
+ property :payment_transactions do
83
+ key :type, :array
84
+ items do
85
+ key :'$ref', 'Workarea::Payment::Transaction'
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ response 404 do
92
+ key :description, 'Payment not found'
93
+ schema do
94
+ key :type, :object
95
+ property :problem do
96
+ key :type, :string
97
+ end
98
+ property :params do
99
+ key :type, :object
100
+ key :additionalProperties, true
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ def show
108
+ @payment = Payment.find(params[:id])
109
+ respond_with payment: @payment,
110
+ payment_transactions: @payment.transactions
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end