workarea-api 4.4.7 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (311) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +35 -0
  3. data/.github/workflows/ci.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +2 -0
  6. data/.stylelintrc.json +8 -0
  7. data/CHANGELOG.md +15 -11
  8. data/Gemfile +3 -2
  9. data/README.md +13 -0
  10. data/Rakefile +14 -5
  11. data/admin/app/controllers/workarea/api/admin/categories_controller.rb +6 -0
  12. data/admin/app/controllers/workarea/api/admin/content_assets_controller.rb +6 -0
  13. data/admin/app/controllers/workarea/api/admin/content_controller.rb +6 -0
  14. data/admin/app/controllers/workarea/api/admin/discounts_controller.rb +7 -0
  15. data/admin/app/controllers/workarea/api/admin/email_signups_controller.rb +20 -4
  16. data/admin/app/controllers/workarea/api/admin/fulfillments_controller.rb +6 -1
  17. data/admin/app/controllers/workarea/api/admin/inventory_skus_controller.rb +7 -0
  18. data/admin/app/controllers/workarea/api/admin/navigation_menus_controller.rb +7 -0
  19. data/admin/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +7 -0
  20. data/admin/app/controllers/workarea/api/admin/orders_controller.rb +19 -1
  21. data/admin/app/controllers/workarea/api/admin/pages_controller.rb +7 -0
  22. data/admin/app/controllers/workarea/api/admin/payment_profiles_controller.rb +7 -0
  23. data/admin/app/controllers/workarea/api/admin/payment_transactions_controller.rb +7 -0
  24. data/admin/app/controllers/workarea/api/admin/payments_controller.rb +7 -0
  25. data/admin/app/controllers/workarea/api/admin/pricing_skus_controller.rb +7 -0
  26. data/admin/app/controllers/workarea/api/admin/products_controller.rb +11 -4
  27. data/admin/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +7 -0
  28. data/admin/app/controllers/workarea/api/admin/redirects_controller.rb +7 -0
  29. data/admin/app/controllers/workarea/api/admin/releases_controller.rb +7 -0
  30. data/admin/app/controllers/workarea/api/admin/shipping_services_controller.rb +7 -0
  31. data/admin/app/controllers/workarea/api/admin/shippings_controller.rb +7 -0
  32. data/admin/app/controllers/workarea/api/admin/swagger_controller.rb +33 -0
  33. data/admin/app/controllers/workarea/api/admin/tax_categories_controller.rb +2 -0
  34. data/admin/app/controllers/workarea/api/admin/users_controller.rb +28 -14
  35. data/admin/app/models/workarea/api/admin/date_filtering.rb +27 -0
  36. data/admin/lib/workarea/api/admin/engine.rb +11 -0
  37. data/admin/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +14 -2
  38. data/admin/test/documentation/workarea/api/admin/global_functionality_documentation_test.rb +140 -0
  39. data/admin/test/documentation/workarea/api/admin/orders_documentation_test.rb +13 -6
  40. data/admin/test/documentation/workarea/api/admin/users_documentation_test.rb +14 -2
  41. data/admin/test/dummy/config/initializers/session_store.rb +3 -1
  42. data/admin/test/integration/workarea/api/admin/categories_integration_test.rb +32 -0
  43. data/admin/test/integration/workarea/api/admin/content_assets_integration_test.rb +32 -0
  44. data/admin/test/integration/workarea/api/admin/content_integration_test.rb +32 -0
  45. data/admin/test/integration/workarea/api/admin/discounts_integration_test.rb +32 -0
  46. data/admin/test/integration/workarea/api/admin/email_signups_integration_test.rb +38 -1
  47. data/admin/test/integration/workarea/api/admin/fulfillments_integration_test.rb +22 -0
  48. data/admin/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +32 -0
  49. data/admin/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +32 -0
  50. data/admin/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +32 -0
  51. data/admin/test/integration/workarea/api/admin/orders_integration_test.rb +41 -2
  52. data/admin/test/integration/workarea/api/admin/pages_integration_test.rb +32 -0
  53. data/admin/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +32 -0
  54. data/admin/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +32 -0
  55. data/admin/test/integration/workarea/api/admin/payments_integration_test.rb +32 -0
  56. data/admin/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +32 -0
  57. data/admin/test/integration/workarea/api/admin/products_integration_test.rb +35 -0
  58. data/admin/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +31 -0
  59. data/admin/test/integration/workarea/api/admin/redirects_integration_test.rb +31 -0
  60. data/admin/test/integration/workarea/api/admin/releases_integration_test.rb +31 -0
  61. data/admin/test/integration/workarea/api/admin/shipping_services_integration_test.rb +31 -0
  62. data/admin/test/integration/workarea/api/admin/shippings_integration_test.rb +31 -0
  63. data/admin/test/integration/workarea/api/admin/tax_categories_integration_test.rb +31 -0
  64. data/admin/test/integration/workarea/api/admin/users_integration_test.rb +44 -1
  65. data/app/views/workarea/api/docs/nav.haml +12 -0
  66. data/doc/api/admin/categories/bulk_upserting_categories.json +8 -4
  67. data/doc/api/admin/categories/creating_a_category.json +11 -8
  68. data/doc/api/admin/categories/listing_categories.json +8 -5
  69. data/doc/api/admin/categories/removing_a_category.json +8 -4
  70. data/doc/api/admin/categories/showing_a_category.json +10 -7
  71. data/doc/api/admin/categories/updating_a_category.json +9 -5
  72. data/doc/api/admin/category_product_rules/creating_a_category_product_rule.json +11 -8
  73. data/doc/api/admin/category_product_rules/listing_category_product_rules.json +10 -7
  74. data/doc/api/admin/category_product_rules/removing_a_category_product_rule.json +8 -4
  75. data/doc/api/admin/category_product_rules/updating_a_category_product_rule.json +8 -4
  76. data/doc/api/admin/content/bulk_upserting_content.json +8 -4
  77. data/doc/api/admin/content/creating_content.json +11 -8
  78. data/doc/api/admin/content/listing_content.json +8 -5
  79. data/doc/api/admin/content/showing_content.json +10 -7
  80. data/doc/api/admin/content/updating_content.json +8 -4
  81. data/doc/api/admin/content_assets/bulk_upserting_content_assets.json +8 -4
  82. data/doc/api/admin/content_assets/creating_a_content_asset.json +11 -8
  83. data/doc/api/admin/content_assets/listing_content_assets.json +8 -5
  84. data/doc/api/admin/content_assets/removing_a_content_asset.json +8 -4
  85. data/doc/api/admin/content_assets/showing_a_content_asset.json +10 -7
  86. data/doc/api/admin/content_assets/updating_a_content_asset.json +9 -5
  87. data/doc/api/admin/discounts/creating_a_discount.json +11 -8
  88. data/doc/api/admin/discounts/listing_discounts.json +8 -5
  89. data/doc/api/admin/discounts/removing_a_discount.json +8 -4
  90. data/doc/api/admin/discounts/showing_a_discount.json +10 -7
  91. data/doc/api/admin/discounts/updating_discounts.json +8 -4
  92. data/doc/api/admin/email_signups/listing_email_signups.json +7 -4
  93. data/doc/api/admin/email_signups/showing_an_email_signup.json +10 -12
  94. data/doc/api/admin/fulfillment/listing_fulfillments.json +7 -4
  95. data/doc/api/admin/fulfillment/marking_items_as_canceled.json +9 -6
  96. data/doc/api/admin/fulfillment/marking_items_as_shipped.json +9 -6
  97. data/doc/api/admin/fulfillment/showing_fulfillment.json +7 -4
  98. data/doc/api/admin/index.json +653 -578
  99. data/doc/api/admin/inventory_skus/bulk_upserting_inventory_skus.json +8 -4
  100. data/doc/api/admin/inventory_skus/creating_an_inventory_sku.json +9 -6
  101. data/doc/api/admin/inventory_skus/listing_inventory_skus.json +7 -4
  102. data/doc/api/admin/inventory_skus/removing_an_inventory_sku.json +6 -2
  103. data/doc/api/admin/inventory_skus/showing_an_inventory_sku.json +7 -4
  104. data/doc/api/admin/inventory_skus/updating_an_inventory_sku.json +6 -2
  105. data/doc/api/admin/navigation_menus/creating_a_menu.json +11 -8
  106. data/doc/api/admin/navigation_menus/listing_menus.json +8 -5
  107. data/doc/api/admin/navigation_menus/removing_a_navigation_menu.json +8 -4
  108. data/doc/api/admin/navigation_menus/showing_a_navigation_menu.json +10 -7
  109. data/doc/api/admin/navigation_menus/updating_a_navigation_menus.json +8 -4
  110. data/doc/api/admin/navigation_taxonomy/bulk_upserting_navigation_taxons.json +8 -4
  111. data/doc/api/admin/navigation_taxonomy/creating_a_taxon.json +10 -7
  112. data/doc/api/admin/navigation_taxonomy/listing_taxons.json +7 -4
  113. data/doc/api/admin/navigation_taxonomy/removing_a_navigation_taxon.json +8 -4
  114. data/doc/api/admin/navigation_taxonomy/showing_a_navigation_taxon.json +9 -6
  115. data/doc/api/admin/navigation_taxonomy/updating_a_navigation_taxons.json +8 -4
  116. data/doc/api/admin/orders/listing_orders.json +8 -5
  117. data/doc/api/admin/orders/showing_an_order.json +8 -5
  118. data/doc/api/admin/pages/bulk_upserting_pages.json +8 -4
  119. data/doc/api/admin/pages/creating_a_page.json +11 -8
  120. data/doc/api/admin/pages/listing_pages.json +8 -5
  121. data/doc/api/admin/pages/removing_a_page.json +8 -4
  122. data/doc/api/admin/pages/showing_a_page.json +10 -7
  123. data/doc/api/admin/pages/updating_a_page.json +9 -5
  124. data/doc/api/admin/payment_profiles/bulk_upserting_payment_profiles.json +8 -4
  125. data/doc/api/admin/payment_profiles/creating_a_payment_profile.json +10 -7
  126. data/doc/api/admin/payment_profiles/listing_payment_profiles.json +7 -4
  127. data/doc/api/admin/payment_profiles/removing_a_payment_profile.json +8 -4
  128. data/doc/api/admin/payment_profiles/showing_a_payment_profile.json +9 -6
  129. data/doc/api/admin/payment_profiles/updating_a_payment_profiles.json +8 -4
  130. data/doc/api/admin/payment_transactions/listing_payment_transactions.json +7 -4
  131. data/doc/api/admin/payment_transactions/showing_a_payment_transaction.json +9 -6
  132. data/doc/api/admin/payments/listing_payments.json +7 -4
  133. data/doc/api/admin/payments/showing_an_payment.json +7 -4
  134. data/doc/api/admin/prices/creating_a_pricing_sku_price.json +8 -5
  135. data/doc/api/admin/prices/listing_pricing_sku_prices.json +8 -5
  136. data/doc/api/admin/prices/removing_a_pricing_sku_price.json +8 -4
  137. data/doc/api/admin/prices/updating_a_pricing_sku_price.json +8 -4
  138. data/doc/api/admin/pricing_skus/bulk_upserting_pricing_skus.json +8 -4
  139. data/doc/api/admin/pricing_skus/creating_an_pricing_sku.json +10 -7
  140. data/doc/api/admin/pricing_skus/listing_pricing_skus.json +8 -5
  141. data/doc/api/admin/pricing_skus/removing_an_pricing_sku.json +6 -2
  142. data/doc/api/admin/pricing_skus/showing_an_pricing_sku.json +8 -5
  143. data/doc/api/admin/pricing_skus/updating_an_pricing_sku.json +6 -2
  144. data/doc/api/admin/product_images/creating_a_product_image_from_base64.json +11 -8
  145. data/doc/api/admin/product_images/creating_a_product_image_from_url.json +11 -8
  146. data/doc/api/admin/product_images/listing_product_images.json +10 -7
  147. data/doc/api/admin/product_images/removing_a_product_image.json +8 -4
  148. data/doc/api/admin/product_images/updating_a_product_image.json +8 -4
  149. data/doc/api/admin/products/bulk_upserting_products.json +8 -4
  150. data/doc/api/admin/products/creating_a_product.json +11 -8
  151. data/doc/api/admin/products/listing_products.json +8 -5
  152. data/doc/api/admin/products/removing_a_product.json +8 -4
  153. data/doc/api/admin/products/showing_a_product.json +10 -7
  154. data/doc/api/admin/products/updating_a_product.json +9 -5
  155. data/doc/api/admin/promo_code_lists/bulk_upserting_promo_code_lists.json +8 -4
  156. data/doc/api/admin/promo_code_lists/creating_a_promo_code_list.json +10 -7
  157. data/doc/api/admin/promo_code_lists/listing_promo_code_lists.json +7 -4
  158. data/doc/api/admin/promo_code_lists/removing_a_promo_code_list.json +8 -4
  159. data/doc/api/admin/promo_code_lists/showing_a_promo_code_list.json +9 -6
  160. data/doc/api/admin/promo_code_lists/updating_a_promo_code_list.json +8 -4
  161. data/doc/api/admin/recommendation_settings/showing_recommendation_settings.json +9 -6
  162. data/doc/api/admin/recommendation_settings/updating_recommendation_settings.json +8 -4
  163. data/doc/api/admin/redirects/bulk_upserting_redirects.json +8 -4
  164. data/doc/api/admin/redirects/creating_a_redirect.json +10 -7
  165. data/doc/api/admin/redirects/listing_redirects.json +7 -4
  166. data/doc/api/admin/redirects/removing_a_redirect.json +8 -4
  167. data/doc/api/admin/redirects/showing_a_redirect.json +9 -6
  168. data/doc/api/admin/redirects/updating_a_redirects.json +8 -4
  169. data/doc/api/admin/release_changes/adding_changes_to_a_release.json +10 -6
  170. data/doc/api/admin/releases/bulk_upserting_releases.json +8 -4
  171. data/doc/api/admin/releases/creating_a_release.json +11 -8
  172. data/doc/api/admin/releases/listing_releases.json +8 -5
  173. data/doc/api/admin/releases/removing_a_release.json +8 -4
  174. data/doc/api/admin/releases/showing_a_release.json +10 -7
  175. data/doc/api/admin/releases/updating_a_release.json +9 -5
  176. data/doc/api/admin/saved_addresses/creating_a_saved_address.json +10 -7
  177. data/doc/api/admin/saved_addresses/listing_saved_address.json +9 -6
  178. data/doc/api/admin/saved_addresses/removing_a_saved_address.json +8 -4
  179. data/doc/api/admin/saved_addresses/updating_a_saved_address.json +8 -4
  180. data/doc/api/admin/saved_credit_cards/creating_a_saved_credit_card.json +11 -8
  181. data/doc/api/admin/saved_credit_cards/listing_saved_credit_cards.json +9 -6
  182. data/doc/api/admin/saved_credit_cards/removing_a_saved_credit_card.json +8 -4
  183. data/doc/api/admin/saved_credit_cards/updating_a_saved_credit_card.json +8 -4
  184. data/doc/api/admin/shipping/listing_shipments.json +7 -4
  185. data/doc/api/admin/shipping/showing_a_shipment.json +9 -6
  186. data/doc/api/admin/shipping_rates/creating_a_shipping_rate.json +10 -7
  187. data/doc/api/admin/shipping_rates/listing_shipping_rates.json +9 -6
  188. data/doc/api/admin/shipping_rates/removing_a_shipping_rate.json +8 -4
  189. data/doc/api/admin/shipping_rates/updating_a_shipping_rate.json +8 -4
  190. data/doc/api/admin/shipping_services/bulk_upserting_shipping_services.json +8 -4
  191. data/doc/api/admin/shipping_services/creating_a_shipping_service.json +10 -7
  192. data/doc/api/admin/shipping_services/listing_shipping_services.json +7 -4
  193. data/doc/api/admin/shipping_services/removing_a_shipping_service.json +8 -4
  194. data/doc/api/admin/shipping_services/showing_a_shipping_service.json +9 -6
  195. data/doc/api/admin/shipping_services/updating_a_shipping_service.json +9 -5
  196. data/doc/api/admin/tax_categories/bulk_upserting_tax_categories.json +8 -4
  197. data/doc/api/admin/tax_categories/creating_a_tax_category.json +10 -7
  198. data/doc/api/admin/tax_categories/listing_tax_categories.json +7 -4
  199. data/doc/api/admin/tax_categories/removing_a_tax_category.json +8 -4
  200. data/doc/api/admin/tax_categories/showing_a_tax_category.json +9 -6
  201. data/doc/api/admin/tax_categories/updating_a_tax_categories.json +8 -4
  202. data/doc/api/admin/tax_rates/creating_a_tax_rate.json +12 -9
  203. data/doc/api/admin/tax_rates/listing_tax_rates.json +10 -7
  204. data/doc/api/admin/tax_rates/removing_a_tax_rate.json +8 -4
  205. data/doc/api/admin/tax_rates/updating_a_tax_rate.json +8 -4
  206. data/doc/api/admin/users/bulk_upserting_users.json +8 -4
  207. data/doc/api/admin/users/creating_a_user.json +11 -8
  208. data/doc/api/admin/users/listing_users.json +8 -5
  209. data/doc/api/admin/users/removing_a_user.json +8 -4
  210. data/doc/api/admin/users/showing_a_user.json +10 -12
  211. data/doc/api/admin/users/updating_a_user.json +9 -5
  212. data/doc/api/admin/variants/creating_a_product_variant.json +11 -8
  213. data/doc/api/admin/variants/listing_product_variants.json +10 -7
  214. data/doc/api/admin/variants/removing_a_product_variant.json +8 -4
  215. data/doc/api/admin/variants/updating_a_product_variant.json +8 -4
  216. data/doc/api/storefront/accounts/creating_an_account.json +8 -7
  217. data/doc/api/storefront/accounts/getting_account_details.json +9 -8
  218. data/doc/api/storefront/accounts/updating_an_account.json +9 -8
  219. data/doc/api/storefront/analytics/saving_a_category_view.json +19 -6
  220. data/doc/api/storefront/analytics/saving_a_product_view.json +19 -6
  221. data/doc/api/storefront/analytics/saving_a_search.json +19 -6
  222. data/doc/api/storefront/assets/showing_an_asset.json +10 -9
  223. data/doc/api/storefront/authentication/creating_an_authentication_token.json +10 -9
  224. data/doc/api/storefront/authentication/refreshing_an_authentication_token.json +10 -9
  225. data/doc/api/storefront/authentication/using_an_authentication_token.json +11 -10
  226. data/doc/api/storefront/cart/adding_a_promo_code.json +11 -10
  227. data/doc/api/storefront/cart/adding_an_item.json +11 -10
  228. data/doc/api/storefront/cart/creating_a_new_cart_for_a_user.json +10 -9
  229. data/doc/api/storefront/cart/creating_a_new_guest_cart.json +8 -7
  230. data/doc/api/storefront/cart/delete_an_item.json +11 -10
  231. data/doc/api/storefront/cart/listing_user_s_carts.json +10 -9
  232. data/doc/api/storefront/cart/showing_cart.json +11 -10
  233. data/doc/api/storefront/cart/updating_an_item.json +11 -10
  234. data/doc/api/storefront/categories/showing_a_category.json +9 -8
  235. data/doc/api/storefront/categories/showing_a_listing_of_categories.json +9 -8
  236. data/doc/api/storefront/checkout/completing_a_checkout.json +10 -9
  237. data/doc/api/storefront/checkout/showing_a_checkout.json +11 -10
  238. data/doc/api/storefront/checkout/updating_a_checkout.json +10 -9
  239. data/doc/api/storefront/contacts/creating_a_contact.json +8 -7
  240. data/doc/api/storefront/email_signups/creating_an_email_signup.json +8 -7
  241. data/doc/api/storefront/email_signups/showing_an_email_signup_content.json +8 -7
  242. data/doc/api/storefront/index.json +263 -258
  243. data/doc/api/storefront/menus/listing_menus.json +9 -8
  244. data/doc/api/storefront/menus/showing_a_menu.json +11 -10
  245. data/doc/api/storefront/orders/listing_the_user_s_orders.json +10 -9
  246. data/doc/api/storefront/orders/showing_an_order.json +11 -10
  247. data/doc/api/storefront/pages/showing_a_page.json +9 -8
  248. data/doc/api/storefront/password_resets/sending_a_forgot_password_email.json +9 -7
  249. data/doc/api/storefront/personalized_recommendations/showing_recommendations_with_a_session_id.json +12 -12
  250. data/doc/api/storefront/personalized_recommendations/showing_recommendations_with_authentication.json +11 -10
  251. data/doc/api/storefront/products/showing_a_product.json +9 -8
  252. data/doc/api/storefront/products/showing_a_product_with_a_specific_sku_selected.json +9 -8
  253. data/doc/api/storefront/recent_views/showing_recent_views_from_authentication.json +11 -10
  254. data/doc/api/storefront/recent_views/showing_recent_views_with_a_session_id.json +12 -12
  255. data/doc/api/storefront/recent_views/updating_recent_views_with_a_session_id.json +7 -5
  256. data/doc/api/storefront/recent_views/updating_recent_views_with_authentication.json +9 -7
  257. data/doc/api/storefront/saved_addresses/creating_a_saved_address.json +8 -7
  258. data/doc/api/storefront/saved_addresses/deleting_a_saved_address.json +8 -6
  259. data/doc/api/storefront/saved_addresses/listing_the_user_s_saved_addresses.json +10 -9
  260. data/doc/api/storefront/saved_addresses/showing_a_saved_address.json +9 -8
  261. data/doc/api/storefront/saved_addresses/updating_a_saved_address.json +9 -8
  262. data/doc/api/storefront/saved_credit_cards/creating_a_saved_credit_card.json +8 -7
  263. data/doc/api/storefront/saved_credit_cards/deleting_a_saved_credit_card.json +8 -6
  264. data/doc/api/storefront/saved_credit_cards/listing_the_user_s_saved_credit_cards.json +10 -9
  265. data/doc/api/storefront/saved_credit_cards/showing_a_saved_credit_card.json +9 -8
  266. data/doc/api/storefront/saved_credit_cards/updating_a_saved_credit_card.json +9 -8
  267. data/doc/api/storefront/searches/showing_search_autocomplete_suggestions.json +10 -9
  268. data/doc/api/storefront/searches/showing_search_results.json +9 -8
  269. data/doc/api/storefront/segmentation/specifying_session_count_for_segmentation.json +93 -0
  270. data/doc/api/storefront/segmentation/using_session_ids_for_segmenting_non_authenticated_users.json +93 -0
  271. data/doc/api/storefront/system_content/showing_system_content.json +9 -8
  272. data/doc/api/storefront/system_content/showing_the_home_page.json +9 -8
  273. data/doc/api/storefront/taxons/showing_a_taxon.json +11 -10
  274. data/doc/api/storefront/validation_errors/checkout_validation_errors.json +10 -9
  275. data/doc/api/storefront/validation_errors/general_validation_errors.json +5 -4
  276. data/lib/workarea/api/documentation_test.rb +10 -1
  277. data/lib/workarea/api/version.rb +1 -1
  278. data/storefront/app/controllers/workarea/api/storefront/analytics_controller.rb +31 -19
  279. data/storefront/app/controllers/workarea/api/storefront/application_controller.rb +15 -2
  280. data/storefront/app/controllers/workarea/api/storefront/authentication.rb +6 -9
  281. data/storefront/app/controllers/workarea/api/storefront/categories_controller.rb +3 -1
  282. data/storefront/app/controllers/workarea/api/storefront/checkouts_controller.rb +0 -1
  283. data/storefront/app/controllers/workarea/api/storefront/menus_controller.rb +3 -1
  284. data/storefront/app/controllers/workarea/api/storefront/pages_controller.rb +3 -1
  285. data/storefront/app/controllers/workarea/api/storefront/products_controller.rb +3 -1
  286. data/storefront/app/controllers/workarea/api/storefront/recent_views_controller.rb +13 -26
  287. data/storefront/app/controllers/workarea/api/storefront/recommendations_controller.rb +2 -8
  288. data/storefront/app/controllers/workarea/api/storefront/searches_controller.rb +0 -12
  289. data/storefront/app/views/workarea/api/storefront/categories/show.json.jbuilder +1 -1
  290. data/storefront/app/views/workarea/api/storefront/email_signups/show.json.jbuilder +1 -1
  291. data/storefront/app/views/workarea/api/storefront/menus/_menu.json.jbuilder +1 -1
  292. data/storefront/app/views/workarea/api/storefront/pages/show.json.jbuilder +1 -1
  293. data/storefront/app/views/workarea/api/storefront/recent_views/show.json.jbuilder +0 -1
  294. data/storefront/app/views/workarea/api/storefront/searches/show.json.jbuilder +1 -1
  295. data/storefront/app/views/workarea/api/storefront/system_content/show.json.jbuilder +1 -1
  296. data/storefront/config/initializers/config.rb +19 -0
  297. data/storefront/lib/workarea/api/storefront/visit.decorator +52 -0
  298. data/storefront/lib/workarea/api/storefront.rb +1 -0
  299. data/storefront/test/documentation/workarea/api/storefront/segmentation_documentation_test.rb +104 -0
  300. data/storefront/test/dummy/config/initializers/session_store.rb +3 -1
  301. data/storefront/test/integration/workarea/api/storefront/analytics_integration_test.rb +12 -7
  302. data/storefront/test/integration/workarea/api/storefront/recent_views_integration_test.rb +38 -33
  303. data/storefront/test/integration/workarea/api/storefront/recommendations_integration_test.rb +1 -1
  304. data/storefront/test/integration/workarea/api/storefront/searches_integration_test.rb +0 -36
  305. data/storefront/test/integration/workarea/api/storefront/segments_integration_test.rb +218 -0
  306. metadata +18 -12
  307. data/doc/api/admin/orders/viewing_orders_by_date_range.json +0 -68
  308. data/doc/api/storefront/analytics/saving_a_search_abandonment.json +0 -38
  309. data/doc/api/storefront/analytics/saving_filters.json +0 -38
  310. data/storefront/app/controllers/workarea/api/storefront/user_activity.rb +0 -36
  311. data/storefront/app/view_models/workarea/api/storefront/search_suggestion_view_model.rb +0 -21
@@ -0,0 +1,93 @@
1
+ {
2
+ "parameters": [
3
+
4
+ ],
5
+ "response_fields": [
6
+
7
+ ],
8
+ "requests": [
9
+ {
10
+ "request_headers": {
11
+ },
12
+ "request_query_parameters": {
13
+ "sessions": "1"
14
+ },
15
+ "response_headers": {
16
+ "X-Frame-Options": "SAMEORIGIN",
17
+ "X-XSS-Protection": "1; mode=block",
18
+ "X-Content-Type-Options": "nosniff",
19
+ "X-Download-Options": "noopen",
20
+ "X-Permitted-Cross-Domain-Policies": "none",
21
+ "Referrer-Policy": "strict-origin-when-cross-origin",
22
+ "Date": "Wed, 27 Nov 2019 00:51:37 GMT",
23
+ "Content-Type": "application/json; charset=utf-8",
24
+ "Access-Control-Allow-Origin": "*",
25
+ "Access-Control-Allow-Headers": "*",
26
+ "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
27
+ "X-Workarea-Segmented-Content": "true",
28
+ "X-Requested-With": "",
29
+ "Vary": "X-Requested-With, X-Workarea-Segments",
30
+ "Last-Modified": "Wed, 27 Nov 2019 00:51:37 GMT",
31
+ "Cache-Control": "no-cache, no-store, must-revalidate",
32
+ "X-Request-Id": "78e758bb-111a-45e9-b45c-38b616e0c18b",
33
+ "X-Runtime": "0.006550",
34
+ "X-Workarea-Segments": "first_time_visitor",
35
+ "Expires": "0",
36
+ "Content-Length": "1014"
37
+ },
38
+ "request_method": "GET",
39
+ "request_path": "/api/storefront/system_content/home_page?sessions=1",
40
+ "request_body": null,
41
+ "request_content_type": null,
42
+ "response_status": 200,
43
+ "response_status_text": "OK",
44
+ "response_body": "{\n \"id\": \"5dddc8991241596aa5204b57\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8991241596aa5204b58\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Hello visitor!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8991241596aa5204b58\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8991241596aa5204b58&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Hello visitor!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Hello visitor!</div>\\n</div>\\n\"\n }\n ]\n}",
45
+ "response_content_type": "application/json",
46
+ "curl": "curl -g \"https://www.example.com/api/storefront/system_content/home_page?sessions=1\" -X GET "
47
+ },
48
+ {
49
+ "request_headers": {
50
+ },
51
+ "request_query_parameters": {
52
+ "sessions": "2"
53
+ },
54
+ "response_headers": {
55
+ "X-Frame-Options": "SAMEORIGIN",
56
+ "X-XSS-Protection": "1; mode=block",
57
+ "X-Content-Type-Options": "nosniff",
58
+ "X-Download-Options": "noopen",
59
+ "X-Permitted-Cross-Domain-Policies": "none",
60
+ "Referrer-Policy": "strict-origin-when-cross-origin",
61
+ "Date": "Wed, 27 Nov 2019 00:51:37 GMT",
62
+ "Content-Type": "application/json; charset=utf-8",
63
+ "Access-Control-Allow-Origin": "*",
64
+ "Access-Control-Allow-Headers": "*",
65
+ "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
66
+ "X-Workarea-Segmented-Content": "true",
67
+ "X-Requested-With": "",
68
+ "Vary": "X-Requested-With, X-Workarea-Segments",
69
+ "Last-Modified": "Wed, 27 Nov 2019 00:51:37 GMT",
70
+ "Cache-Control": "no-cache, no-store, must-revalidate",
71
+ "X-Request-Id": "30666cef-8a67-4268-a8cf-eb13f27a4bec",
72
+ "X-Runtime": "0.006299",
73
+ "X-Workarea-Segments": "returning_visitor",
74
+ "Expires": "0",
75
+ "Content-Length": "1011"
76
+ },
77
+ "request_method": "GET",
78
+ "request_path": "/api/storefront/system_content/home_page?sessions=2",
79
+ "request_body": null,
80
+ "request_content_type": null,
81
+ "response_status": 200,
82
+ "response_status_text": "OK",
83
+ "response_body": "{\n \"id\": \"5dddc8991241596aa5204b57\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8991241596aa5204b59\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Welcome back!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 1,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8991241596aa5204b59\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8991241596aa5204b59&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:1,&quot;data&quot;:{&quot;text&quot;:&quot;Welcome back!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Welcome back!</div>\\n</div>\\n\"\n }\n ]\n}",
84
+ "response_content_type": "application/json",
85
+ "curl": "curl -g \"https://www.example.com/api/storefront/system_content/home_page?sessions=2\" -X GET "
86
+ }
87
+ ],
88
+ "resource": "Segmentation",
89
+ "description": "Specifying session count for segmentation",
90
+ "route": "/api/storefront/system_content/home_page",
91
+ "explanation": "<p>Workarea supports segmenting users by number of sessions, e.g.<br>\nfirst-time vs returning visitors. To support this in the storefront<br>\nAPI, the client will be responsible for managing this since the API<br>\nis stateless (doesn&#39;t have cookies/session).</p>\n\n<p>To get session-based segments functioning, you need to pass a<br>\n<code>sessions</code> parameter in each request. Workarea will use that as<br>\nthe number of sessions for determing the segments for the response.<br>\nThis works for all requests across the storefront API.</p>\n\n<p>This example shows getting a home page with segmented content based<br>\non the number of sessions.</p>\n",
92
+ "http_method": "GET"
93
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "parameters": [
3
+
4
+ ],
5
+ "response_fields": [
6
+
7
+ ],
8
+ "requests": [
9
+ {
10
+ "request_headers": {
11
+ },
12
+ "request_query_parameters": {
13
+ "session_id": "session_1"
14
+ },
15
+ "response_headers": {
16
+ "X-Frame-Options": "SAMEORIGIN",
17
+ "X-XSS-Protection": "1; mode=block",
18
+ "X-Content-Type-Options": "nosniff",
19
+ "X-Download-Options": "noopen",
20
+ "X-Permitted-Cross-Domain-Policies": "none",
21
+ "Referrer-Policy": "strict-origin-when-cross-origin",
22
+ "Date": "Wed, 27 Nov 2019 00:51:36 GMT",
23
+ "Content-Type": "application/json; charset=utf-8",
24
+ "Access-Control-Allow-Origin": "*",
25
+ "Access-Control-Allow-Headers": "*",
26
+ "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
27
+ "X-Workarea-Segmented-Content": "true",
28
+ "X-Requested-With": "",
29
+ "Vary": "X-Requested-With, X-Workarea-Segments",
30
+ "Last-Modified": "Wed, 27 Nov 2019 00:51:36 GMT",
31
+ "Cache-Control": "no-cache, no-store, must-revalidate",
32
+ "X-Request-Id": "f4a84544-444b-49ed-b271-bca835333e42",
33
+ "X-Runtime": "0.006377",
34
+ "X-Workarea-Segments": "first_time_customer",
35
+ "Expires": "0",
36
+ "Content-Length": "1038"
37
+ },
38
+ "request_method": "GET",
39
+ "request_path": "/api/storefront/system_content/home_page?session_id=session_1",
40
+ "request_body": null,
41
+ "request_content_type": null,
42
+ "response_status": 200,
43
+ "response_status_text": "OK",
44
+ "response_body": "{\n \"id\": \"5dddc8971241596aa5204b4f\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8981241596aa5204b50\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Thanks for your order!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8981241596aa5204b50\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8981241596aa5204b50&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Thanks for your order!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Thanks for your order!</div>\\n</div>\\n\"\n }\n ]\n}",
45
+ "response_content_type": "application/json",
46
+ "curl": "curl -g \"https://www.example.com/api/storefront/system_content/home_page?session_id=session_1\" -X GET "
47
+ },
48
+ {
49
+ "request_headers": {
50
+ },
51
+ "request_query_parameters": {
52
+ "session_id": "session_2"
53
+ },
54
+ "response_headers": {
55
+ "X-Frame-Options": "SAMEORIGIN",
56
+ "X-XSS-Protection": "1; mode=block",
57
+ "X-Content-Type-Options": "nosniff",
58
+ "X-Download-Options": "noopen",
59
+ "X-Permitted-Cross-Domain-Policies": "none",
60
+ "Referrer-Policy": "strict-origin-when-cross-origin",
61
+ "Date": "Wed, 27 Nov 2019 00:51:36 GMT",
62
+ "Content-Type": "application/json; charset=utf-8",
63
+ "Access-Control-Allow-Origin": "*",
64
+ "Access-Control-Allow-Headers": "*",
65
+ "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
66
+ "X-Workarea-Segmented-Content": "true",
67
+ "X-Requested-With": "",
68
+ "Vary": "X-Requested-With, X-Workarea-Segments",
69
+ "Last-Modified": "Wed, 27 Nov 2019 00:51:36 GMT",
70
+ "Cache-Control": "no-cache, no-store, must-revalidate",
71
+ "X-Request-Id": "11d049a0-74f8-48c0-b300-b71ff108f751",
72
+ "X-Runtime": "0.006377",
73
+ "X-Workarea-Segments": "returning_customer",
74
+ "Expires": "0",
75
+ "Content-Length": "1059"
76
+ },
77
+ "request_method": "GET",
78
+ "request_path": "/api/storefront/system_content/home_page?session_id=session_2",
79
+ "request_body": null,
80
+ "request_content_type": null,
81
+ "response_status": 200,
82
+ "response_status_text": "OK",
83
+ "response_body": "{\n \"id\": \"5dddc8971241596aa5204b4f\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8981241596aa5204b51\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Welcome back repeat customer!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 1,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8981241596aa5204b51\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8981241596aa5204b51&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:1,&quot;data&quot;:{&quot;text&quot;:&quot;Welcome back repeat customer!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Welcome back repeat customer!</div>\\n</div>\\n\"\n }\n ]\n}",
84
+ "response_content_type": "application/json",
85
+ "curl": "curl -g \"https://www.example.com/api/storefront/system_content/home_page?session_id=session_2\" -X GET "
86
+ }
87
+ ],
88
+ "resource": "Segmentation",
89
+ "description": "Using session IDs for segmenting non-authenticated users",
90
+ "route": "/api/storefront/system_content/home_page",
91
+ "explanation": "<p>Workarea supports segmenting users by number of orders, revenue, etc.<br>\nFor this functionality to work for users without accounts, you&#39;ll<br>\nneed to maintain and pass a <code>session_id</code> consistently throughout calls<br>\nto the API.</p>\n\n<p>An instance of <code>Metrics::User</code> will be found or created for that<br>\n<code>session_id</code>, and data about the user will be tracked there.</p>\n\n<p>Assuming use of the <code>session_id</code> consistently through checkout, this<br>\nexample shows getting home page content for two different anonymous<br>\nusers and getting segmented content back.</p>\n",
92
+ "http_method": "GET"
93
+ }
@@ -18,17 +18,18 @@
18
18
  "X-Download-Options": "noopen",
19
19
  "X-Permitted-Cross-Domain-Policies": "none",
20
20
  "Referrer-Policy": "strict-origin-when-cross-origin",
21
- "Date": "Thu, 22 Aug 2019 16:58:57 GMT",
21
+ "Date": "Wed, 27 Nov 2019 00:52:48 GMT",
22
22
  "Content-Type": "application/json; charset=utf-8",
23
23
  "Access-Control-Allow-Origin": "*",
24
24
  "Access-Control-Allow-Headers": "*",
25
25
  "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
26
26
  "X-Requested-With": "",
27
- "Vary": "X-Requested-With, X-Flash-Messages",
27
+ "Vary": "X-Requested-With, X-Workarea-Segments",
28
+ "Last-Modified": "Wed, 27 Nov 2019 00:52:48 GMT",
28
29
  "Cache-Control": "no-cache, no-store, must-revalidate",
29
- "ETag": "W/\"80e99c9a4189f1075fe29a655c4f5d4c\"",
30
- "X-Request-Id": "8c0d811f-3856-4390-9274-617f125c362d",
31
- "X-Runtime": "0.010637",
30
+ "X-Request-Id": "f3d9d3a1-842e-422e-b717-5c29b14889e8",
31
+ "X-Runtime": "0.008132",
32
+ "X-Workarea-Segments": "",
32
33
  "Expires": "0",
33
34
  "Content-Length": "1981"
34
35
  },
@@ -38,7 +39,7 @@
38
39
  "request_content_type": null,
39
40
  "response_status": 200,
40
41
  "response_status_text": "OK",
41
- "response_body": "{\n \"id\": \"5d5ec9d1d4322a04dfbf633e\",\n \"name\": \"Layout\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Layout\",\n \"browser_title\": \"Layout\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5d5ec9d1d4322a04dfbf633f\",\n \"type\": \"text\",\n \"area\": \"header_promo\",\n \"data\": {\n \"text\": \"Don't miss our sizzling summer deals!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5d5ec9d1d4322a04dfbf633f\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5d5ec9d1d4322a04dfbf633f&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Don&#39;t miss our sizzling summer deals!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Don't miss our sizzling summer deals!</div>\\n</div>\\n\"\n },\n {\n \"id\": \"5d5ec9d1d4322a04dfbf6340\",\n \"type\": \"text\",\n \"area\": \"footer_navigation\",\n \"data\": {\n \"text\": \"Be the first to received our exclusive discounts\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5d5ec9d1d4322a04dfbf6340\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5d5ec9d1d4322a04dfbf6340&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Be the first to received our exclusive discounts&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Be the first to received our exclusive discounts</div>\\n</div>\\n\"\n }\n ]\n}",
42
+ "response_body": "{\n \"id\": \"5dddc8e01241596aa5204ce3\",\n \"name\": \"Layout\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Layout\",\n \"browser_title\": \"Layout\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8e01241596aa5204ce4\",\n \"type\": \"text\",\n \"area\": \"header_promo\",\n \"data\": {\n \"text\": \"Don't miss our sizzling summer deals!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8e01241596aa5204ce4\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8e01241596aa5204ce4&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Don&#39;t miss our sizzling summer deals!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Don't miss our sizzling summer deals!</div>\\n</div>\\n\"\n },\n {\n \"id\": \"5dddc8e01241596aa5204ce5\",\n \"type\": \"text\",\n \"area\": \"footer_navigation\",\n \"data\": {\n \"text\": \"Be the first to received our exclusive discounts\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8e01241596aa5204ce5\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8e01241596aa5204ce5&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Be the first to received our exclusive discounts&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Be the first to received our exclusive discounts</div>\\n</div>\\n\"\n }\n ]\n}",
42
43
  "response_content_type": "application/json",
43
44
  "curl": "curl -g \"https://www.example.com/api/storefront/system_content/layout\" -X GET "
44
45
  }
@@ -46,6 +47,6 @@
46
47
  "resource": "System Content",
47
48
  "description": "Showing system content",
48
49
  "route": "/api/storefront/system_content/:name",
49
- "http_method": "GET",
50
- "explanation": " System content is content for an area of site not configured by the\n CMS. Examples would be content for the cart page, content for\n checkout, site layout content, etc. The home page is also an example\n of system content and shown in a separate example.\n"
50
+ "explanation": "<p>System content is content for an area of site not configured by the<br>\nCMS. Examples would be content for the cart page, content for<br>\ncheckout, site layout content, etc. The home page is also an example<br>\nof system content and shown in a separate example.</p>\n",
51
+ "http_method": "GET"
51
52
  }
@@ -18,17 +18,18 @@
18
18
  "X-Download-Options": "noopen",
19
19
  "X-Permitted-Cross-Domain-Policies": "none",
20
20
  "Referrer-Policy": "strict-origin-when-cross-origin",
21
- "Date": "Thu, 22 Aug 2019 16:58:57 GMT",
21
+ "Date": "Wed, 27 Nov 2019 00:52:48 GMT",
22
22
  "Content-Type": "application/json; charset=utf-8",
23
23
  "Access-Control-Allow-Origin": "*",
24
24
  "Access-Control-Allow-Headers": "*",
25
25
  "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
26
26
  "X-Requested-With": "",
27
- "Vary": "X-Requested-With, X-Flash-Messages",
27
+ "Vary": "X-Requested-With, X-Workarea-Segments",
28
+ "Last-Modified": "Wed, 27 Nov 2019 00:52:48 GMT",
28
29
  "Cache-Control": "no-cache, no-store, must-revalidate",
29
- "ETag": "W/\"0cb889e813b55f6fa624cf1cacf1b257\"",
30
- "X-Request-Id": "cf0fb6d8-3f87-4ad8-8961-79a3dc6c1cd1",
31
- "X-Runtime": "0.009229",
30
+ "X-Request-Id": "f924549d-136a-4b93-b820-e6149f37bfc2",
31
+ "X-Runtime": "0.008772",
32
+ "X-Workarea-Segments": "",
32
33
  "Expires": "0",
33
34
  "Content-Length": "1830"
34
35
  },
@@ -38,7 +39,7 @@
38
39
  "request_content_type": null,
39
40
  "response_status": 200,
40
41
  "response_status_text": "OK",
41
- "response_body": "{\n \"id\": \"5d5ec9d1d4322a04dfbf6342\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5d5ec9d1d4322a04dfbf6343\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Summer is here!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5d5ec9d1d4322a04dfbf6343\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5d5ec9d1d4322a04dfbf6343&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Summer is here!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Summer is here!</div>\\n</div>\\n\"\n },\n {\n \"id\": \"5d5ec9d1d4322a04dfbf6344\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Get 20% off all swimwear\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 1,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5d5ec9d1d4322a04dfbf6344\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5d5ec9d1d4322a04dfbf6344&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:1,&quot;data&quot;:{&quot;text&quot;:&quot;Get 20% off all swimwear&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Get 20% off all swimwear</div>\\n</div>\\n\"\n }\n ]\n}",
42
+ "response_body": "{\n \"id\": \"5dddc8df1241596aa5204cde\",\n \"name\": \"Home Page\",\n \"url\": \"http://www.example.com/api/storefront/system_content/Home%20Page\",\n \"browser_title\": \"Home Page\",\n \"meta_description\": \"Shop online for Workarea API products\",\n \"content_blocks\": [\n {\n \"id\": \"5dddc8df1241596aa5204cdf\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Summer is here!\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 0,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8df1241596aa5204cdf\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8df1241596aa5204cdf&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:0,&quot;data&quot;:{&quot;text&quot;:&quot;Summer is here!&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Summer is here!</div>\\n</div>\\n\"\n },\n {\n \"id\": \"5dddc8df1241596aa5204ce0\",\n \"type\": \"text\",\n \"area\": \"default\",\n \"data\": {\n \"text\": \"Get 20% off all swimwear\"\n },\n \"hidden_breakpoints\": [\n\n ],\n \"position\": 1,\n \"html\": \"<div class=\\\"content-block content-block--text\\\" id=\\\"content_block_5dddc8df1241596aa5204ce0\\\" data-analytics=\\\"{&quot;event&quot;:&quot;contentBlockDisplay&quot;,&quot;payload&quot;:{&quot;id&quot;:&quot;5dddc8df1241596aa5204ce0&quot;,&quot;type&quot;:&quot;text&quot;,&quot;position&quot;:1,&quot;data&quot;:{&quot;text&quot;:&quot;Get 20% off all swimwear&quot;}}}\\\" data-hidden-block-css-content=\\\"Block hidden at this breakpoint\\\"><div class='text-content-block'>Get 20% off all swimwear</div>\\n</div>\\n\"\n }\n ]\n}",
42
43
  "response_content_type": "application/json",
43
44
  "curl": "curl -g \"https://www.example.com/api/storefront/system_content/home_page\" -X GET "
44
45
  }
@@ -46,6 +47,6 @@
46
47
  "resource": "System Content",
47
48
  "description": "Showing the home page",
48
49
  "route": "/api/storefront/system_content/home_page",
49
- "http_method": "GET",
50
- "explanation": " This endpoint returns everything you'll need to render the home\n page.\n"
50
+ "explanation": "<p>This endpoint returns everything you&#39;ll need to render the home<br>\npage.</p>\n",
51
+ "http_method": "GET"
51
52
  }
@@ -18,34 +18,35 @@
18
18
  "X-Download-Options": "noopen",
19
19
  "X-Permitted-Cross-Domain-Policies": "none",
20
20
  "Referrer-Policy": "strict-origin-when-cross-origin",
21
- "Date": "Thu, 22 Aug 2019 17:02:10 GMT",
21
+ "Date": "Wed, 27 Nov 2019 00:52:46 GMT",
22
22
  "Content-Type": "application/json; charset=utf-8",
23
23
  "Access-Control-Allow-Origin": "*",
24
24
  "Access-Control-Allow-Headers": "*",
25
25
  "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
26
26
  "X-Requested-With": "",
27
- "Vary": "X-Requested-With, X-Flash-Messages",
27
+ "Vary": "X-Requested-With, X-Workarea-Segments",
28
+ "Last-Modified": "Wed, 27 Nov 2019 00:52:46 GMT",
28
29
  "Cache-Control": "no-cache, no-store, must-revalidate",
29
- "ETag": "W/\"68a6afbf1d116813312ea2a8cb13646d\"",
30
- "X-Request-Id": "335b1d1a-a625-4d60-b1d5-774f0d1d5b7b",
31
- "X-Runtime": "0.009750",
30
+ "X-Request-Id": "5ceec41f-08e9-4933-a1f9-788147b25053",
31
+ "X-Runtime": "0.007104",
32
+ "X-Workarea-Segments": "",
32
33
  "Expires": "0",
33
34
  "Content-Length": "534"
34
35
  },
35
36
  "request_method": "GET",
36
- "request_path": "/api/storefront/taxons/5d5eca92d4322a04dfbf6f44",
37
+ "request_path": "/api/storefront/taxons/5dddc8dd1241596aa5204cd9",
37
38
  "request_body": null,
38
39
  "request_content_type": null,
39
40
  "response_status": 200,
40
41
  "response_status_text": "OK",
41
- "response_body": "{\n \"taxon\": {\n \"id\": \"5d5eca92d4322a04dfbf6f44\",\n \"url\": \"/api/storefront/taxons/5d5eca92d4322a04dfbf6f44\",\n \"name\": \"Mens\",\n \"depth\": 1,\n \"navigable_url\": \"http://example.com/pages/mens\",\n \"parent_id\": \"5d5eca92d4322a04dfbf6f45\",\n \"parent_ids\": [\n \"5d5eca92d4322a04dfbf6f45\"\n ],\n \"position\": 0\n },\n \"children\": [\n {\n \"id\": \"5d5eca92d4322a04dfbf6f46\",\n \"url\": \"/api/storefront/taxons/5d5eca92d4322a04dfbf6f46\",\n \"name\": \"Sale\",\n \"depth\": 2,\n \"navigable_url\": null,\n \"parent_id\": \"5d5eca92d4322a04dfbf6f44\",\n \"parent_ids\": [\n \"5d5eca92d4322a04dfbf6f45\",\n \"5d5eca92d4322a04dfbf6f44\"\n ],\n \"position\": 0\n }\n ]\n}",
42
+ "response_body": "{\n \"taxon\": {\n \"id\": \"5dddc8dd1241596aa5204cd9\",\n \"url\": \"/api/storefront/taxons/5dddc8dd1241596aa5204cd9\",\n \"name\": \"Mens\",\n \"depth\": 1,\n \"navigable_url\": \"http://example.com/pages/mens\",\n \"parent_id\": \"5dddc8dd1241596aa5204cda\",\n \"parent_ids\": [\n \"5dddc8dd1241596aa5204cda\"\n ],\n \"position\": 0\n },\n \"children\": [\n {\n \"id\": \"5dddc8de1241596aa5204cdb\",\n \"url\": \"/api/storefront/taxons/5dddc8de1241596aa5204cdb\",\n \"name\": \"Sale\",\n \"depth\": 2,\n \"navigable_url\": null,\n \"parent_id\": \"5dddc8dd1241596aa5204cd9\",\n \"parent_ids\": [\n \"5dddc8dd1241596aa5204cda\",\n \"5dddc8dd1241596aa5204cd9\"\n ],\n \"position\": 0\n }\n ]\n}",
42
43
  "response_content_type": "application/json",
43
- "curl": "curl -g \"https://www.example.com/api/storefront/taxons/5d5eca92d4322a04dfbf6f44\" -X GET "
44
+ "curl": "curl -g \"https://www.example.com/api/storefront/taxons/5dddc8dd1241596aa5204cd9\" -X GET "
44
45
  }
45
46
  ],
46
47
  "resource": "Taxons",
47
48
  "description": "Showing a taxon",
48
49
  "route": "/api/storefront/taxons/:id",
49
- "http_method": "GET",
50
- "explanation": " This endpoint will show details on a particular node (or taxon) of\n the site taxonomy, along with its children.\n"
50
+ "explanation": "<p>This endpoint will show details on a particular node (or taxon) of<br>\nthe site taxonomy, along with its children.</p>\n",
51
+ "http_method": "GET"
51
52
  }
@@ -24,28 +24,29 @@
24
24
  "Access-Control-Allow-Headers": "*",
25
25
  "Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
26
26
  "X-Requested-With": "",
27
- "Vary": "X-Requested-With, X-Flash-Messages",
28
- "ETag": "W/\"1c738b755ccc1b901b10d9fd9e7b24de\"",
27
+ "Vary": "X-Requested-With, X-Workarea-Segments",
28
+ "Last-Modified": "Wed, 27 Nov 2019 00:51:33 GMT",
29
29
  "Cache-Control": "no-cache, no-store, must-revalidate",
30
- "X-Request-Id": "df8c92ae-b1f8-48d9-9497-d49dd15b9f03",
31
- "X-Runtime": "0.491660",
30
+ "X-Request-Id": "1f3d729a-7f8d-47cc-a170-f6dbf096a0bf",
31
+ "X-Runtime": "0.447104",
32
+ "X-Workarea-Segments": "",
32
33
  "Expires": "0",
33
34
  "Content-Length": "3271"
34
35
  },
35
36
  "request_method": "PATCH",
36
- "request_path": "/api/storefront/checkouts/B90394D2D5",
37
+ "request_path": "/api/storefront/checkouts/65CBE75A6F",
37
38
  "request_body": "{\"email\":\"susanb@\",\"shipping_address\":{\"first_name\":\"\",\"last_name\":\"Baker\",\"street\":\"350 Fifth Avenue\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"},\"billing_address\":{\"first_name\":\"Susan\",\"last_name\":\"Baker\",\"street\":\"\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"}}",
38
39
  "request_content_type": "application/json",
39
40
  "response_status": 200,
40
41
  "response_status_text": "OK",
41
- "response_body": "{\n \"order\": {\n \"id\": \"B90394D2D5\",\n \"url\": \"http://www.example.com/api/storefront/orders/B90394D2D5\",\n \"user_id\": null,\n \"email\": \"susanb@\",\n \"placed_at\": null,\n \"canceled_at\": null,\n \"promo_codes\": [\n\n ],\n \"requires_shipping\": true,\n \"items\": [\n {\n \"id\": \"5d5eca6ed4322a04dfbf6d7a\",\n \"product_id\": \"VINTEE\",\n \"sku\": \"VT001\",\n \"quantity\": 2,\n \"product_url\": \"http://www.example.com/api/storefront/products/vintage-tee?sku=VT001\",\n \"options\": {\n },\n \"customizations\": {\n },\n \"product_image\": {\n \"urls\": [\n {\n \"type\": \"small\",\n \"url\": \"http://www.example.com/product_images/placeholder/small.jpg?c=1566493120\"\n },\n {\n \"type\": \"medium\",\n \"url\": \"http://www.example.com/product_images/placeholder/medium.jpg?c=1566493120\"\n },\n {\n \"type\": \"small_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/small_thumb.jpg?c=1566493120\"\n },\n {\n \"type\": \"medium_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/medium_thumb.jpg?c=1566493120\"\n },\n {\n \"type\": \"large_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/large_thumb.jpg?c=1566493120\"\n },\n {\n \"type\": \"detail\",\n \"url\": \"http://www.example.com/product_images/placeholder/detail.jpg?c=1566493120\"\n },\n {\n \"type\": \"zoom\",\n \"url\": \"http://www.example.com/product_images/placeholder/zoom.jpg?c=1566493120\"\n },\n {\n \"type\": \"super_zoom\",\n \"url\": \"http://www.example.com/product_images/placeholder/super_zoom.jpg?c=1566493120\"\n },\n {\n \"type\": \"favicon\",\n \"url\": \"http://www.example.com/product_images/placeholder/favicon.jpg?c=1566493120\"\n },\n {\n \"type\": \"favicon_ico\",\n \"url\": \"http://www.example.com/product_images/placeholder/favicon_ico.jpg?c=1566493120\"\n }\n ]\n },\n \"pricing\": {\n \"price_adjustments\": [\n {\n \"description\": \"Item Subtotal\",\n \"discount\": false,\n \"amount\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n }\n }\n ],\n \"total_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"on_sale\": false,\n \"original_unit_price\": {\n \"cents\": 500.0,\n \"currency_iso\": \"USD\"\n },\n \"original_price\": {\n \"cents\": 500.0,\n \"currency_iso\": \"USD\"\n },\n \"customized\": false,\n \"customizations_unit_price\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n }\n }\n }\n ],\n \"pricing\": {\n \"price_adjustments\": [\n\n ],\n \"shipping_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"tax_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"subtotal_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"total_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"paid_amount\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n }\n },\n \"shipping_service\": null,\n \"tenders\": [\n\n ]\n },\n \"checkout\": {\n \"url\": \"http://www.example.com/api/storefront/checkouts/B90394D2D5\",\n \"started_at\": \"2019-08-22T17:01:34.556Z\",\n \"shippable\": false,\n \"complete\": false,\n \"addresses\": {\n \"complete\": false,\n \"email\": \"susanb@\",\n \"problems\": [\n \"Email is invalid\"\n ],\n \"shipping_address\": {\n \"id\": \"5d5eca6fd4322a04dfbf6d81\",\n \"first_name\": \"\",\n \"last_name\": \"Baker\",\n \"company\": null,\n \"street\": \"350 Fifth Avenue\",\n \"street_2\": null,\n \"city\": \"New York\",\n \"country\": \"US\",\n \"region\": \"NY\",\n \"postal_code\": \"10118\",\n \"phone_number\": null,\n \"phone_extension\": null,\n \"problems\": [\n \"First name can't be blank\"\n ]\n },\n \"billing_address\": {\n \"id\": \"5d5eca6fd4322a04dfbf6d82\",\n \"first_name\": \"Susan\",\n \"last_name\": \"Baker\",\n \"company\": null,\n \"street\": \"\",\n \"street_2\": null,\n \"city\": \"New York\",\n \"country\": \"US\",\n \"region\": \"NY\",\n \"postal_code\": \"10118\",\n \"phone_number\": null,\n \"phone_extension\": null,\n \"problems\": [\n \"Street can't be blank\"\n ]\n }\n },\n \"shipping\": {\n \"complete\": false,\n \"problems\": [\n \"Address is invalid\"\n ],\n \"shipping_service\": null,\n \"shipping_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"shipping_options\": [\n\n ]\n },\n \"payment\": {\n \"complete\": false,\n \"problems\": [\n \"Address is invalid\"\n ],\n \"tenders\": [\n\n ]\n }\n }\n}",
42
+ "response_body": "{\n \"order\": {\n \"id\": \"65CBE75A6F\",\n \"url\": \"http://www.example.com/api/storefront/orders/65CBE75A6F\",\n \"user_id\": null,\n \"email\": \"susanb@\",\n \"placed_at\": null,\n \"canceled_at\": null,\n \"promo_codes\": [\n\n ],\n \"requires_shipping\": true,\n \"items\": [\n {\n \"id\": \"5dddc8951241596aa5204b41\",\n \"product_id\": \"VINTEE\",\n \"sku\": \"VT001\",\n \"quantity\": 2,\n \"product_url\": \"http://www.example.com/api/storefront/products/vintage-tee?sku=VT001\",\n \"options\": {\n },\n \"customizations\": {\n },\n \"product_image\": {\n \"urls\": [\n {\n \"type\": \"small\",\n \"url\": \"http://www.example.com/product_images/placeholder/small.jpg?c=1574815751\"\n },\n {\n \"type\": \"medium\",\n \"url\": \"http://www.example.com/product_images/placeholder/medium.jpg?c=1574815751\"\n },\n {\n \"type\": \"small_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/small_thumb.jpg?c=1574815751\"\n },\n {\n \"type\": \"medium_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/medium_thumb.jpg?c=1574815751\"\n },\n {\n \"type\": \"large_thumb\",\n \"url\": \"http://www.example.com/product_images/placeholder/large_thumb.jpg?c=1574815751\"\n },\n {\n \"type\": \"detail\",\n \"url\": \"http://www.example.com/product_images/placeholder/detail.jpg?c=1574815751\"\n },\n {\n \"type\": \"zoom\",\n \"url\": \"http://www.example.com/product_images/placeholder/zoom.jpg?c=1574815751\"\n },\n {\n \"type\": \"super_zoom\",\n \"url\": \"http://www.example.com/product_images/placeholder/super_zoom.jpg?c=1574815751\"\n },\n {\n \"type\": \"favicon\",\n \"url\": \"http://www.example.com/product_images/placeholder/favicon.jpg?c=1574815751\"\n },\n {\n \"type\": \"favicon_ico\",\n \"url\": \"http://www.example.com/product_images/placeholder/favicon_ico.jpg?c=1574815751\"\n }\n ]\n },\n \"pricing\": {\n \"price_adjustments\": [\n {\n \"description\": \"Item Subtotal\",\n \"discount\": false,\n \"amount\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n }\n }\n ],\n \"total_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"on_sale\": false,\n \"original_unit_price\": {\n \"cents\": 500.0,\n \"currency_iso\": \"USD\"\n },\n \"original_price\": {\n \"cents\": 500.0,\n \"currency_iso\": \"USD\"\n },\n \"customized\": false,\n \"customizations_unit_price\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n }\n }\n }\n ],\n \"pricing\": {\n \"price_adjustments\": [\n\n ],\n \"shipping_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"tax_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"subtotal_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"total_price\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n },\n \"paid_amount\": {\n \"cents\": 1000.0,\n \"currency_iso\": \"USD\"\n }\n },\n \"shipping_service\": null,\n \"tenders\": [\n\n ]\n },\n \"checkout\": {\n \"url\": \"http://www.example.com/api/storefront/checkouts/65CBE75A6F\",\n \"started_at\": \"2019-11-27T00:51:33.506Z\",\n \"shippable\": false,\n \"complete\": false,\n \"addresses\": {\n \"complete\": false,\n \"email\": \"susanb@\",\n \"problems\": [\n \"Email is invalid\"\n ],\n \"shipping_address\": {\n \"id\": \"5dddc8951241596aa5204b48\",\n \"first_name\": \"\",\n \"last_name\": \"Baker\",\n \"company\": null,\n \"street\": \"350 Fifth Avenue\",\n \"street_2\": null,\n \"city\": \"New York\",\n \"country\": \"US\",\n \"region\": \"NY\",\n \"postal_code\": \"10118\",\n \"phone_number\": null,\n \"phone_extension\": null,\n \"problems\": [\n \"First name can't be blank\"\n ]\n },\n \"billing_address\": {\n \"id\": \"5dddc8951241596aa5204b49\",\n \"first_name\": \"Susan\",\n \"last_name\": \"Baker\",\n \"company\": null,\n \"street\": \"\",\n \"street_2\": null,\n \"city\": \"New York\",\n \"country\": \"US\",\n \"region\": \"NY\",\n \"postal_code\": \"10118\",\n \"phone_number\": null,\n \"phone_extension\": null,\n \"problems\": [\n \"Street can't be blank\"\n ]\n }\n },\n \"shipping\": {\n \"complete\": false,\n \"problems\": [\n \"Address is invalid\"\n ],\n \"shipping_service\": null,\n \"shipping_total\": {\n \"cents\": 0.0,\n \"currency_iso\": \"USD\"\n },\n \"shipping_options\": [\n\n ]\n },\n \"payment\": {\n \"complete\": false,\n \"problems\": [\n \"Address is invalid\"\n ],\n \"tenders\": [\n\n ]\n }\n }\n}",
42
43
  "response_content_type": "application/json",
43
- "curl": "curl \"https://www.example.com/api/storefront/checkouts/B90394D2D5\" -d '{\"email\":\"susanb@\",\"shipping_address\":{\"first_name\":\"\",\"last_name\":\"Baker\",\"street\":\"350 Fifth Avenue\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"},\"billing_address\":{\"first_name\":\"Susan\",\"last_name\":\"Baker\",\"street\":\"\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"}}' -X PATCH \\\n\t-H \"Content-Type: application/json\""
44
+ "curl": "curl \"https://www.example.com/api/storefront/checkouts/65CBE75A6F\" -d '{\"email\":\"susanb@\",\"shipping_address\":{\"first_name\":\"\",\"last_name\":\"Baker\",\"street\":\"350 Fifth Avenue\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"},\"billing_address\":{\"first_name\":\"Susan\",\"last_name\":\"Baker\",\"street\":\"\",\"city\":\"New York\",\"region\":\"NY\",\"country\":\"US\",\"postal_code\":\"10118\"}}' -X PATCH \\\n\t-H \"Content-Type: application/json\""
44
45
  }
45
46
  ],
46
47
  "resource": "Validation Errors",
47
48
  "description": "Checkout validation errors",
48
49
  "route": "/api/storefront/checkouts/:id",
49
- "http_method": "PATCH",
50
- "explanation": " Due to the more complex nature of checkout updates and data,\n checkout validation errors are returned inline with the resource\n they are coming from as shown below. Note the response status can be\n 200 OK, due to some data being persisted properly.\n"
50
+ "explanation": "<p>Due to the more complex nature of checkout updates and data,<br>\ncheckout validation errors are returned inline with the resource<br>\nthey are coming from as shown below. Note the response status can be<br>\n200 OK, due to some data being persisted properly.</p>\n",
51
+ "http_method": "PATCH"
51
52
  }
@@ -21,8 +21,9 @@
21
21
  "Referrer-Policy": "strict-origin-when-cross-origin",
22
22
  "Content-Type": "application/json; charset=utf-8",
23
23
  "Cache-Control": "no-cache, no-store, must-revalidate",
24
- "X-Request-Id": "9cf31710-98e2-4a0e-a0e9-8c98d3044773",
25
- "X-Runtime": "0.008732",
24
+ "X-Request-Id": "ba73618c-7816-4930-b249-c07a150c0e9c",
25
+ "X-Runtime": "0.007253",
26
+ "X-Workarea-Segments": "",
26
27
  "Expires": "0",
27
28
  "Content-Length": "59"
28
29
  },
@@ -40,6 +41,6 @@
40
41
  "resource": "Validation Errors",
41
42
  "description": "General validation errors",
42
43
  "route": "/api/storefront/account",
43
- "http_method": "POST",
44
- "explanation": " This demonstrates API responses when invalid data is submitted.\n"
44
+ "explanation": "<p>This demonstrates API responses when invalid data is submitted.</p>\n",
45
+ "http_method": "POST"
45
46
  }
@@ -10,7 +10,7 @@ end
10
10
  module Workarea
11
11
  module Api
12
12
  class DocumentationTest < Workarea::IntegrationTest
13
- IGNORED_HEADERS = %w(Host Accept)
13
+ IGNORED_HEADERS = %w(Host Accept X-Workarea-Segments)
14
14
 
15
15
  class Example
16
16
  attr_accessor :resource, :http_method, :route, :description,
@@ -22,6 +22,12 @@ module Workarea
22
22
  @requests = []
23
23
  end
24
24
 
25
+ def explanation=(value)
26
+ @explanation = Redcarpet::Markdown
27
+ .new(Redcarpet::Render::HTML.new(hard_wrap: true))
28
+ .render(value.strip_heredoc)
29
+ end
30
+
25
31
  def file_name
26
32
  name = @description.presence || "#{@http_method} #{@route}"
27
33
  "#{name.systemize}.json"
@@ -103,6 +109,9 @@ module Workarea
103
109
  end
104
110
  end
105
111
 
112
+ results['resources'].sort_by! { |r| r['name'] }
113
+ results['resources'].each { |r| r['examples'].sort_by! { |e| e['description'] } }
114
+
106
115
  File.open(root.join('index.json'), 'w') do |file|
107
116
  file.write(JSON.pretty_generate(results))
108
117
  end
@@ -1,5 +1,5 @@
1
1
  module Workarea
2
2
  module Api
3
- VERSION = '4.4.7'.freeze
3
+ VERSION = '4.5.0'.freeze
4
4
  end
5
5
  end
@@ -1,38 +1,50 @@
1
1
  module Workarea
2
2
  module Api
3
3
  module Storefront
4
- class AnalyticsController < ActionController::Metal
5
- include ActionController::Head
6
- include ActionController::Instrumentation
7
-
4
+ class AnalyticsController < Api::Storefront::ApplicationController
8
5
  def category_view
9
6
  Metrics::CategoryByDay.inc(key: { category_id: params[:category_id] }, views: 1)
7
+
8
+ if current_metrics_id.present?
9
+ Metrics::User.save_affinity(
10
+ id: current_metrics_id,
11
+ action: 'viewed',
12
+ category_ids: params[:category_id]
13
+ )
14
+ end
15
+
10
16
  head :ok
11
17
  end
12
18
 
13
19
  def product_view
14
20
  Metrics::ProductByDay.inc(key: { product_id: params[:product_id] }, views: 1)
21
+
22
+ if current_metrics_id.present?
23
+ Metrics::User.save_affinity(
24
+ id: current_metrics_id,
25
+ action: 'viewed',
26
+ product_ids: params[:product_id]
27
+ )
28
+ end
29
+
15
30
  head :ok
16
31
  end
17
32
 
18
33
  def search
19
- Metrics::SearchByDay.save_search(params[:q], params[:total_results])
20
- head :ok
21
- end
34
+ query_string = QueryString.new(params[:q])
22
35
 
23
- def search_abandonment
24
- warn <<~eos
25
- DEPRECATION WARNING: Search abandonment tracking is deprecated and will be removed \
26
- in Workarea 3.5.
27
- eos
28
- head :ok
29
- end
36
+ if query_string.present? && !query_string.short?
37
+ Metrics::SearchByDay.save_search(params[:q], params[:total_results])
38
+
39
+ if current_metrics_id.present?
40
+ Metrics::User.save_affinity(
41
+ id: current_metrics_id,
42
+ action: 'viewed',
43
+ search_ids: query_string.id
44
+ )
45
+ end
46
+ end
30
47
 
31
- def filters
32
- warn <<~eos
33
- DEPRECATION WARNING: Filter analytics tracking is deprecated and will be removed \
34
- in Workarea 3.5.
35
- eos
36
48
  head :ok
37
49
  end
38
50
  end
@@ -2,15 +2,15 @@ module Workarea
2
2
  module Api
3
3
  module Storefront
4
4
  class ApplicationController < Workarea::ApplicationController
5
- include Workarea::Storefront::HttpCaching
5
+ include HttpCaching
6
6
  include Api::Storefront::Authentication
7
- include Api::Storefront::UserActivity
8
7
 
9
8
  respond_to :json
10
9
 
11
10
  before_action :set_json_format
12
11
  before_action :skip_session
13
12
  before_action { params.permit! }
13
+ around_action :apply_segments
14
14
  after_action :disable_cors_protection
15
15
 
16
16
  rescue_from Mongoid::Errors::DocumentNotFound, with: :handle_not_found
@@ -28,6 +28,19 @@ module Workarea
28
28
  request.session_options[:skip] = true
29
29
  end
30
30
 
31
+ def assert_current_metrics_id
32
+ if current_metrics_id.blank?
33
+ render(
34
+ json: {
35
+ problem: t('workarea.api.storefront.recent_views.missing_id')
36
+ },
37
+ status: :unprocessable_entity
38
+ )
39
+
40
+ return false
41
+ end
42
+ end
43
+
31
44
  private
32
45
 
33
46
  def set_json_format