spree_api 5.3.5 → 5.4.0.beta

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 (335) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +71 -33
  3. data/Rakefile +25 -0
  4. data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +51 -0
  5. data/app/controllers/concerns/spree/api/v3/error_handler.rb +255 -0
  6. data/app/controllers/concerns/spree/api/v3/http_caching.rb +90 -0
  7. data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +95 -0
  8. data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +73 -0
  9. data/app/controllers/concerns/spree/api/v3/order_concern.rb +51 -0
  10. data/app/controllers/concerns/spree/api/v3/resource_serializer.rb +41 -0
  11. data/app/controllers/spree/api/v3/base_controller.rb +42 -0
  12. data/app/controllers/spree/api/v3/resource_controller.rb +210 -0
  13. data/app/controllers/spree/api/v3/store/auth_controller.rb +140 -0
  14. data/app/controllers/spree/api/v3/store/base_controller.rb +12 -0
  15. data/app/controllers/spree/api/v3/store/cart_controller.rb +82 -0
  16. data/app/controllers/spree/api/v3/store/countries_controller.rb +31 -0
  17. data/app/controllers/spree/api/v3/store/currencies_controller.rb +18 -0
  18. data/app/controllers/spree/api/v3/store/customer/account_controller.rb +38 -0
  19. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +85 -0
  20. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +31 -0
  21. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +36 -0
  22. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +35 -0
  23. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +83 -0
  24. data/app/controllers/spree/api/v3/store/digitals_controller.rb +37 -0
  25. data/app/controllers/spree/api/v3/store/locales_controller.rb +24 -0
  26. data/app/controllers/spree/api/v3/store/orders/coupon_codes_controller.rb +68 -0
  27. data/app/controllers/spree/api/v3/store/orders/line_items_controller.rb +87 -0
  28. data/app/controllers/spree/api/v3/store/orders/payment_methods_controller.rb +43 -0
  29. data/app/controllers/spree/api/v3/store/orders/payment_sessions_controller.rb +96 -0
  30. data/app/controllers/spree/api/v3/store/orders/payments_controller.rb +45 -0
  31. data/app/controllers/spree/api/v3/store/orders/shipments_controller.rb +53 -0
  32. data/app/controllers/spree/api/v3/store/orders/store_credits_controller.rb +42 -0
  33. data/app/controllers/spree/api/v3/store/orders_controller.rb +125 -0
  34. data/app/controllers/spree/api/v3/store/products/filters_controller.rb +38 -0
  35. data/app/controllers/spree/api/v3/store/products_controller.rb +74 -0
  36. data/app/controllers/spree/api/v3/store/resource_controller.rb +12 -0
  37. data/app/controllers/spree/api/v3/store/stores_controller.rb +26 -0
  38. data/app/controllers/spree/api/v3/store/taxonomies_controller.rb +19 -0
  39. data/app/controllers/spree/api/v3/store/taxons/products_controller.rb +37 -0
  40. data/app/controllers/spree/api/v3/store/taxons_controller.rb +34 -0
  41. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +33 -0
  42. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +41 -0
  43. data/app/jobs/spree/webhook_delivery_job.rb +1 -4
  44. data/app/serializers/spree/api/v3/address_serializer.rb +22 -0
  45. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +43 -0
  46. data/app/serializers/spree/api/v3/admin/metafield_serializer.rb +15 -0
  47. data/app/serializers/spree/api/v3/admin/order_serializer.rb +39 -0
  48. data/app/serializers/spree/api/v3/admin/price_serializer.rb +21 -0
  49. data/app/serializers/spree/api/v3/admin/product_serializer.rb +47 -0
  50. data/app/serializers/spree/api/v3/admin/taxon_serializer.rb +20 -0
  51. data/app/serializers/spree/api/v3/admin/taxonomy_serializer.rb +15 -0
  52. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +44 -0
  53. data/app/serializers/spree/api/v3/asset_serializer.rb +20 -0
  54. data/app/serializers/spree/api/v3/base_serializer.rb +98 -0
  55. data/app/serializers/spree/api/v3/country_serializer.rb +35 -0
  56. data/app/serializers/spree/api/v3/credit_card_serializer.rb +12 -0
  57. data/app/serializers/spree/api/v3/currency_serializer.rb +14 -0
  58. data/app/serializers/spree/api/v3/customer_return_serializer.rb +17 -0
  59. data/app/serializers/spree/api/v3/customer_serializer.rb +19 -0
  60. data/app/serializers/spree/api/v3/digital_link_serializer.rb +30 -0
  61. data/app/serializers/spree/api/v3/digital_serializer.rb +17 -0
  62. data/app/serializers/spree/api/v3/export_serializer.rb +19 -0
  63. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +28 -0
  64. data/app/serializers/spree/api/v3/gift_card_serializer.rb +78 -0
  65. data/app/serializers/spree/api/v3/image_serializer.rb +43 -0
  66. data/app/serializers/spree/api/v3/import_row_serializer.rb +24 -0
  67. data/app/serializers/spree/api/v3/import_serializer.rb +32 -0
  68. data/app/serializers/spree/api/v3/invitation_serializer.rb +47 -0
  69. data/app/serializers/spree/api/v3/line_item_serializer.rb +48 -0
  70. data/app/serializers/spree/api/v3/locale_serializer.rb +14 -0
  71. data/app/serializers/spree/{v2/storefront → api/v3}/metafield_serializer.rb +5 -3
  72. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +27 -0
  73. data/app/serializers/spree/api/v3/option_type_serializer.rb +11 -0
  74. data/app/serializers/spree/api/v3/option_value_serializer.rb +24 -0
  75. data/app/serializers/spree/api/v3/order_promotion_serializer.rb +16 -0
  76. data/app/serializers/spree/api/v3/order_serializer.rb +39 -0
  77. data/app/serializers/spree/api/v3/payment_method_serializer.rb +15 -0
  78. data/app/serializers/spree/api/v3/payment_serializer.rb +54 -0
  79. data/app/serializers/spree/api/v3/payment_session_serializer.rb +32 -0
  80. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +33 -0
  81. data/app/serializers/spree/api/v3/payment_source_serializer.rb +18 -0
  82. data/app/serializers/spree/api/v3/post_category_serializer.rb +13 -0
  83. data/app/serializers/spree/api/v3/post_serializer.rb +25 -0
  84. data/app/serializers/spree/api/v3/price_serializer.rb +34 -0
  85. data/app/serializers/spree/api/v3/product_serializer.rb +108 -0
  86. data/app/serializers/spree/api/v3/promotion_serializer.rb +28 -0
  87. data/app/serializers/spree/api/v3/refund_serializer.rb +31 -0
  88. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +28 -0
  89. data/app/serializers/spree/api/v3/report_serializer.rb +29 -0
  90. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +31 -0
  91. data/app/serializers/spree/api/v3/return_item_serializer.rb +53 -0
  92. data/app/serializers/spree/api/v3/shipment_serializer.rb +19 -0
  93. data/app/serializers/spree/api/v3/shipping_method_serializer.rb +11 -0
  94. data/app/serializers/spree/api/v3/shipping_rate_serializer.rb +26 -0
  95. data/app/serializers/spree/api/v3/state_serializer.rb +14 -0
  96. data/app/serializers/spree/api/v3/stock_item_serializer.rb +23 -0
  97. data/app/serializers/spree/api/v3/stock_location_serializer.rb +18 -0
  98. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +24 -0
  99. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +25 -0
  100. data/app/serializers/spree/api/v3/store_credit_serializer.rb +37 -0
  101. data/app/serializers/spree/api/v3/store_serializer.rb +38 -0
  102. data/app/serializers/spree/api/v3/taxon_serializer.rb +78 -0
  103. data/app/serializers/spree/api/v3/taxonomy_serializer.rb +33 -0
  104. data/app/serializers/spree/api/v3/variant_serializer.rb +86 -0
  105. data/app/serializers/spree/api/v3/wished_item_serializer.rb +22 -0
  106. data/app/serializers/spree/api/v3/wishlist_serializer.rb +25 -0
  107. data/app/services/spree/api/v3/filters_aggregator.rb +156 -0
  108. data/app/services/spree/api/v3/orders/update.rb +103 -0
  109. data/app/services/spree/webhooks/deliver_webhook.rb +16 -16
  110. data/app/subscribers/spree/webhook_event_subscriber.rb +1 -1
  111. data/config/initializers/alba.rb +5 -0
  112. data/config/initializers/pagy.rb +10 -0
  113. data/config/initializers/typelizer.rb +25 -0
  114. data/config/locales/en.yml +1 -0
  115. data/config/routes.rb +63 -196
  116. data/lib/spree/api/dependencies.rb +68 -0
  117. data/lib/spree/api/engine.rb +0 -5
  118. data/lib/spree/api/openapi/schema_helper.rb +177 -0
  119. data/lib/spree/api/testing_support/factories.rb +1 -3
  120. data/lib/spree/api/testing_support/v3/base.rb +118 -0
  121. data/lib/spree/api.rb +7 -4
  122. metadata +131 -264
  123. data/LICENSE.md +0 -57
  124. data/app/controllers/concerns/spree/api/v2/caching.rb +0 -40
  125. data/app/controllers/concerns/spree/api/v2/coupon_codes_helper.rb +0 -29
  126. data/app/controllers/concerns/spree/api/v2/number_resource.rb +0 -11
  127. data/app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb +0 -37
  128. data/app/controllers/concerns/spree/api/v2/platform/promotion_calculator_params.rb +0 -17
  129. data/app/controllers/concerns/spree/api/v2/platform/promotion_rule_params.rb +0 -16
  130. data/app/controllers/concerns/spree/api/v2/product_list_includes.rb +0 -21
  131. data/app/controllers/concerns/spree/api/v2/storefront/metadata_controller_concern.rb +0 -18
  132. data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +0 -49
  133. data/app/controllers/spree/api/v2/base_controller.rb +0 -233
  134. data/app/controllers/spree/api/v2/data_feeds/google_controller.rb +0 -24
  135. data/app/controllers/spree/api/v2/platform/addresses_controller.rb +0 -23
  136. data/app/controllers/spree/api/v2/platform/adjustments_controller.rb +0 -23
  137. data/app/controllers/spree/api/v2/platform/classifications_controller.rb +0 -26
  138. data/app/controllers/spree/api/v2/platform/countries_controller.rb +0 -23
  139. data/app/controllers/spree/api/v2/platform/data_feeds_controller.rb +0 -19
  140. data/app/controllers/spree/api/v2/platform/digital_links_controller.rb +0 -29
  141. data/app/controllers/spree/api/v2/platform/digitals_controller.rb +0 -23
  142. data/app/controllers/spree/api/v2/platform/gift_cards_controller.rb +0 -23
  143. data/app/controllers/spree/api/v2/platform/line_items_controller.rb +0 -63
  144. data/app/controllers/spree/api/v2/platform/option_types_controller.rb +0 -19
  145. data/app/controllers/spree/api/v2/platform/option_values_controller.rb +0 -23
  146. data/app/controllers/spree/api/v2/platform/orders_controller.rb +0 -167
  147. data/app/controllers/spree/api/v2/platform/payment_methods_controller.rb +0 -31
  148. data/app/controllers/spree/api/v2/platform/payments_controller.rb +0 -21
  149. data/app/controllers/spree/api/v2/platform/products_controller.rb +0 -41
  150. data/app/controllers/spree/api/v2/platform/promotion_actions_controller.rb +0 -34
  151. data/app/controllers/spree/api/v2/platform/promotion_categories_controller.rb +0 -23
  152. data/app/controllers/spree/api/v2/platform/promotion_rules_controller.rb +0 -29
  153. data/app/controllers/spree/api/v2/platform/promotions_controller.rb +0 -35
  154. data/app/controllers/spree/api/v2/platform/resource_controller.rb +0 -154
  155. data/app/controllers/spree/api/v2/platform/roles_controller.rb +0 -19
  156. data/app/controllers/spree/api/v2/platform/shipments_controller.rb +0 -147
  157. data/app/controllers/spree/api/v2/platform/shipping_categories_controller.rb +0 -19
  158. data/app/controllers/spree/api/v2/platform/shipping_methods_controller.rb +0 -28
  159. data/app/controllers/spree/api/v2/platform/states_controller.rb +0 -23
  160. data/app/controllers/spree/api/v2/platform/stock_items_controller.rb +0 -23
  161. data/app/controllers/spree/api/v2/platform/stock_locations_controller.rb +0 -23
  162. data/app/controllers/spree/api/v2/platform/store_credit_categories_controller.rb +0 -19
  163. data/app/controllers/spree/api/v2/platform/store_credit_types_controller.rb +0 -19
  164. data/app/controllers/spree/api/v2/platform/store_credits_controller.rb +0 -23
  165. data/app/controllers/spree/api/v2/platform/tax_categories_controller.rb +0 -23
  166. data/app/controllers/spree/api/v2/platform/tax_rates_controller.rb +0 -27
  167. data/app/controllers/spree/api/v2/platform/taxonomies_controller.rb +0 -23
  168. data/app/controllers/spree/api/v2/platform/taxons_controller.rb +0 -59
  169. data/app/controllers/spree/api/v2/platform/users_controller.rb +0 -37
  170. data/app/controllers/spree/api/v2/platform/variants_controller.rb +0 -23
  171. data/app/controllers/spree/api/v2/platform/wished_items_controller.rb +0 -23
  172. data/app/controllers/spree/api/v2/platform/wishlists_controller.rb +0 -23
  173. data/app/controllers/spree/api/v2/platform/zones_controller.rb +0 -23
  174. data/app/controllers/spree/api/v2/resource_controller.rb +0 -79
  175. data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +0 -77
  176. data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +0 -52
  177. data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +0 -50
  178. data/app/controllers/spree/api/v2/storefront/account_controller.rb +0 -52
  179. data/app/controllers/spree/api/v2/storefront/cart_controller.rb +0 -246
  180. data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +0 -183
  181. data/app/controllers/spree/api/v2/storefront/countries_controller.rb +0 -57
  182. data/app/controllers/spree/api/v2/storefront/digitals_controller.rb +0 -58
  183. data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +0 -34
  184. data/app/controllers/spree/api/v2/storefront/policies_controller.rb +0 -31
  185. data/app/controllers/spree/api/v2/storefront/post_categories_controller.rb +0 -35
  186. data/app/controllers/spree/api/v2/storefront/posts_controller.rb +0 -51
  187. data/app/controllers/spree/api/v2/storefront/products_controller.rb +0 -66
  188. data/app/controllers/spree/api/v2/storefront/stores_controller.rb +0 -27
  189. data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +0 -51
  190. data/app/controllers/spree/api/v2/storefront/variants_controller.rb +0 -41
  191. data/app/controllers/spree/api/v2/storefront/wishlists_controller.rb +0 -214
  192. data/app/helpers/spree/api/v2/collection_options_helpers.rb +0 -46
  193. data/app/helpers/spree/api/v2/display_money_helper.rb +0 -63
  194. data/app/helpers/spree/api/v2/store_media_serializer_images_concern.rb +0 -30
  195. data/app/models/concerns/spree/user_api_authentication.rb +0 -19
  196. data/app/models/concerns/spree/user_api_methods.rb +0 -7
  197. data/app/models/spree/oauth_access_grant.rb +0 -7
  198. data/app/models/spree/oauth_access_token.rb +0 -7
  199. data/app/models/spree/oauth_application.rb +0 -22
  200. data/app/paginators/spree/api/paginate.rb +0 -68
  201. data/app/presenters/spree/api/products/filters_presenter.rb +0 -39
  202. data/app/serializers/concerns/spree/api/v2/image_transformation_concern.rb +0 -15
  203. data/app/serializers/concerns/spree/api/v2/public_metafields_concern.rb +0 -15
  204. data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +0 -42
  205. data/app/serializers/concerns/spree/api/v2/taxon_image_transformation_concern.rb +0 -15
  206. data/app/serializers/spree/api/v2/base_serializer.rb +0 -43
  207. data/app/serializers/spree/api/v2/platform/address_serializer.rb +0 -15
  208. data/app/serializers/spree/api/v2/platform/adjustment_serializer.rb +0 -20
  209. data/app/serializers/spree/api/v2/platform/admin_user_serializer.rb +0 -11
  210. data/app/serializers/spree/api/v2/platform/asset_serializer.rb +0 -13
  211. data/app/serializers/spree/api/v2/platform/base_serializer.rb +0 -10
  212. data/app/serializers/spree/api/v2/platform/calculator_serializer.rb +0 -17
  213. data/app/serializers/spree/api/v2/platform/classification_serializer.rb +0 -14
  214. data/app/serializers/spree/api/v2/platform/country_serializer.rb +0 -13
  215. data/app/serializers/spree/api/v2/platform/credit_card_serializer.rb +0 -14
  216. data/app/serializers/spree/api/v2/platform/customer_return_serializer.rb +0 -17
  217. data/app/serializers/spree/api/v2/platform/data_feed_serializer.rb +0 -13
  218. data/app/serializers/spree/api/v2/platform/digital_link_serializer.rb +0 -16
  219. data/app/serializers/spree/api/v2/platform/digital_serializer.rb +0 -29
  220. data/app/serializers/spree/api/v2/platform/gift_card_serializer.rb +0 -17
  221. data/app/serializers/spree/api/v2/platform/image_serializer.rb +0 -17
  222. data/app/serializers/spree/api/v2/platform/inventory_unit_serializer.rb +0 -19
  223. data/app/serializers/spree/api/v2/platform/line_item_serializer.rb +0 -19
  224. data/app/serializers/spree/api/v2/platform/log_entry_serializer.rb +0 -13
  225. data/app/serializers/spree/api/v2/platform/metafield_serializer.rb +0 -21
  226. data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +0 -13
  227. data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +0 -13
  228. data/app/serializers/spree/api/v2/platform/order_promotion_serializer.rb +0 -14
  229. data/app/serializers/spree/api/v2/platform/order_serializer.rb +0 -31
  230. data/app/serializers/spree/api/v2/platform/payment_capture_event_serializer.rb +0 -13
  231. data/app/serializers/spree/api/v2/platform/payment_method_serializer.rb +0 -18
  232. data/app/serializers/spree/api/v2/platform/payment_serializer.rb +0 -22
  233. data/app/serializers/spree/api/v2/platform/payment_source_serializer.rb +0 -12
  234. data/app/serializers/spree/api/v2/platform/price_serializer.rb +0 -19
  235. data/app/serializers/spree/api/v2/platform/product_property_serializer.rb +0 -11
  236. data/app/serializers/spree/api/v2/platform/product_serializer.rb +0 -90
  237. data/app/serializers/spree/api/v2/platform/promotion_action_line_item_serializer.rb +0 -14
  238. data/app/serializers/spree/api/v2/platform/promotion_action_serializer.rb +0 -19
  239. data/app/serializers/spree/api/v2/platform/promotion_category_serializer.rb +0 -13
  240. data/app/serializers/spree/api/v2/platform/promotion_rule_serializer.rb +0 -21
  241. data/app/serializers/spree/api/v2/platform/promotion_serializer.rb +0 -17
  242. data/app/serializers/spree/api/v2/platform/property_serializer.rb +0 -11
  243. data/app/serializers/spree/api/v2/platform/prototype_serializer.rb +0 -15
  244. data/app/serializers/spree/api/v2/platform/refund_reason_serializer.rb +0 -11
  245. data/app/serializers/spree/api/v2/platform/refund_serializer.rb +0 -17
  246. data/app/serializers/spree/api/v2/platform/reimbursement_credit_serializer.rb +0 -10
  247. data/app/serializers/spree/api/v2/platform/reimbursement_serializer.rb +0 -19
  248. data/app/serializers/spree/api/v2/platform/reimbursement_type_serializer.rb +0 -11
  249. data/app/serializers/spree/api/v2/platform/return_authorization_reason_serializer.rb +0 -11
  250. data/app/serializers/spree/api/v2/platform/return_authorization_serializer.rb +0 -17
  251. data/app/serializers/spree/api/v2/platform/return_item_serializer.rb +0 -16
  252. data/app/serializers/spree/api/v2/platform/role_serializer.rb +0 -11
  253. data/app/serializers/spree/api/v2/platform/shipment_serializer.rb +0 -22
  254. data/app/serializers/spree/api/v2/platform/shipping_category_serializer.rb +0 -11
  255. data/app/serializers/spree/api/v2/platform/shipping_method_serializer.rb +0 -16
  256. data/app/serializers/spree/api/v2/platform/shipping_rate_serializer.rb +0 -15
  257. data/app/serializers/spree/api/v2/platform/state_change_serializer.rb +0 -13
  258. data/app/serializers/spree/api/v2/platform/state_serializer.rb +0 -13
  259. data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +0 -18
  260. data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +0 -14
  261. data/app/serializers/spree/api/v2/platform/stock_movement_serializer.rb +0 -11
  262. data/app/serializers/spree/api/v2/platform/stock_transfer_serializer.rb +0 -15
  263. data/app/serializers/spree/api/v2/platform/store_credit_category_serializer.rb +0 -12
  264. data/app/serializers/spree/api/v2/platform/store_credit_event_serializer.rb +0 -14
  265. data/app/serializers/spree/api/v2/platform/store_credit_serializer.rb +0 -18
  266. data/app/serializers/spree/api/v2/platform/store_credit_type_serializer.rb +0 -12
  267. data/app/serializers/spree/api/v2/platform/store_serializer.rb +0 -14
  268. data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +0 -13
  269. data/app/serializers/spree/api/v2/platform/tax_rate_serializer.rb +0 -14
  270. data/app/serializers/spree/api/v2/platform/taxon_image_serializer.rb +0 -15
  271. data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +0 -47
  272. data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +0 -14
  273. data/app/serializers/spree/api/v2/platform/user_serializer.rb +0 -37
  274. data/app/serializers/spree/api/v2/platform/variant_serializer.rb +0 -66
  275. data/app/serializers/spree/api/v2/platform/wished_item_serializer.rb +0 -29
  276. data/app/serializers/spree/api/v2/platform/wishlist_serializer.rb +0 -19
  277. data/app/serializers/spree/api/v2/platform/zone_member_serializer.rb +0 -13
  278. data/app/serializers/spree/api/v2/platform/zone_serializer.rb +0 -13
  279. data/app/serializers/spree/v2/storefront/address_serializer.rb +0 -22
  280. data/app/serializers/spree/v2/storefront/base_serializer.rb +0 -10
  281. data/app/serializers/spree/v2/storefront/cart_serializer.rb +0 -67
  282. data/app/serializers/spree/v2/storefront/country_serializer.rb +0 -24
  283. data/app/serializers/spree/v2/storefront/credit_card_serializer.rb +0 -15
  284. data/app/serializers/spree/v2/storefront/digital_link_serializer.rb +0 -11
  285. data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +0 -35
  286. data/app/serializers/spree/v2/storefront/gift_card_serializer.rb +0 -16
  287. data/app/serializers/spree/v2/storefront/image_serializer.rb +0 -13
  288. data/app/serializers/spree/v2/storefront/line_item_serializer.rb +0 -23
  289. data/app/serializers/spree/v2/storefront/option_type_serializer.rb +0 -15
  290. data/app/serializers/spree/v2/storefront/option_value_serializer.rb +0 -13
  291. data/app/serializers/spree/v2/storefront/order_promotion_serializer.rb +0 -14
  292. data/app/serializers/spree/v2/storefront/order_serializer.rb +0 -11
  293. data/app/serializers/spree/v2/storefront/payment_method_serializer.rb +0 -17
  294. data/app/serializers/spree/v2/storefront/payment_serializer.rb +0 -20
  295. data/app/serializers/spree/v2/storefront/payment_source_serializer.rb +0 -12
  296. data/app/serializers/spree/v2/storefront/policy_serializer.rb +0 -19
  297. data/app/serializers/spree/v2/storefront/post_category_serializer.rb +0 -23
  298. data/app/serializers/spree/v2/storefront/post_serializer.rb +0 -51
  299. data/app/serializers/spree/v2/storefront/product_property_serializer.rb +0 -19
  300. data/app/serializers/spree/v2/storefront/product_serializer.rb +0 -92
  301. data/app/serializers/spree/v2/storefront/shipment_serializer.rb +0 -26
  302. data/app/serializers/spree/v2/storefront/shipping_category_serializer.rb +0 -10
  303. data/app/serializers/spree/v2/storefront/shipping_method_serializer.rb +0 -12
  304. data/app/serializers/spree/v2/storefront/shipping_rate_serializer.rb +0 -26
  305. data/app/serializers/spree/v2/storefront/state_serializer.rb +0 -11
  306. data/app/serializers/spree/v2/storefront/stock_location_serializer.rb +0 -11
  307. data/app/serializers/spree/v2/storefront/store_credit_category_serializer.rb +0 -11
  308. data/app/serializers/spree/v2/storefront/store_credit_event_serializer.rb +0 -15
  309. data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +0 -19
  310. data/app/serializers/spree/v2/storefront/store_credit_type_serializer.rb +0 -11
  311. data/app/serializers/spree/v2/storefront/store_serializer.rb +0 -18
  312. data/app/serializers/spree/v2/storefront/taxon_image_serializer.rb +0 -13
  313. data/app/serializers/spree/v2/storefront/taxon_serializer.rb +0 -55
  314. data/app/serializers/spree/v2/storefront/taxonomy_serializer.rb +0 -13
  315. data/app/serializers/spree/v2/storefront/user_serializer.rb +0 -33
  316. data/app/serializers/spree/v2/storefront/variant_serializer.rb +0 -58
  317. data/app/serializers/spree/v2/storefront/wished_item_serializer.rb +0 -29
  318. data/app/serializers/spree/v2/storefront/wishlist_serializer.rb +0 -17
  319. data/config/initializers/doorkeeper.rb +0 -50
  320. data/config/initializers/json_api_mime_types.rb +0 -8
  321. data/config/initializers/user_class_extensions.rb +0 -7
  322. data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +0 -7
  323. data/db/migrate/20120411123334_resize_api_key_field.rb +0 -7
  324. data/db/migrate/20120530054546_rename_api_key_to_spree_api_key.rb +0 -7
  325. data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +0 -7
  326. data/db/migrate/20180320110726_create_doorkeeper_tables.rb +0 -69
  327. data/db/migrate/20210727102516_change_integer_id_columns_type.rb +0 -9
  328. data/db/migrate/20210919183228_enable_polymorphic_resource_owner.rb +0 -21
  329. data/lib/generators/spree/api/install/install_generator.rb +0 -24
  330. data/lib/spree/api/testing_support/factories/oauth_application_factory.rb +0 -6
  331. data/lib/spree/api/testing_support/serializers.rb +0 -15
  332. data/lib/spree/api/testing_support/v2/base.rb +0 -13
  333. data/lib/spree/api/testing_support/v2/current_order.rb +0 -116
  334. data/lib/spree/api/testing_support/v2/platform_contexts.rb +0 -272
  335. data/lib/spree/api/testing_support/v2/serializers_params.rb +0 -16
@@ -1,46 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module CollectionOptionsHelpers
5
- def collection_links(collection)
6
- {
7
- self: request.original_url,
8
- next: pagination_url(collection.next_page || collection.total_pages),
9
- prev: pagination_url(collection.prev_page || 1),
10
- last: pagination_url(collection.total_pages),
11
- first: pagination_url(1)
12
- }
13
- end
14
-
15
- def collection_meta(collection)
16
- {
17
- count: collection.size,
18
- total_count: collection.total_count,
19
- total_pages: collection.total_pages
20
- }
21
- end
22
-
23
- # leaving this method in public scope so it's still possible to modify
24
- # those params to support non-standard non-JSON API parameters
25
- def collection_permitted_params
26
- params.permit(:format, :page, :per_page, :sort, :include, :locale, fields: {}, filter: {})
27
- end
28
-
29
- private
30
-
31
- def pagination_url(page)
32
- url_for(collection_permitted_params.merge(page: page))
33
- end
34
-
35
- def collection_options(collection)
36
- {
37
- links: collection_links(collection),
38
- meta: collection_meta(collection),
39
- include: resource_includes,
40
- fields: sparse_fields
41
- }
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,63 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module DisplayMoneyHelper
5
- extend ActiveSupport::Concern
6
-
7
- class_methods do
8
- def find_price(product_or_variant, currency, context_options = {})
9
- variant = product_or_variant.is_a?(Spree::Product) ? product_or_variant.default_variant : product_or_variant
10
-
11
- if context_options.present?
12
- context = build_pricing_context(variant, currency, context_options)
13
- variant.price_for(context)
14
- else
15
- variant.price_in(currency)
16
- end
17
- end
18
-
19
- def price(product_or_variant, currency, context_options = {})
20
- price = find_price(product_or_variant, currency, context_options)
21
- return nil if price.new_record?
22
-
23
- price.amount
24
- end
25
-
26
- def display_price(product_or_variant, currency, context_options = {})
27
- price = find_price(product_or_variant, currency, context_options)
28
- return nil if price.new_record?
29
-
30
- Spree::Money.new(price.amount, currency: currency).to_s
31
- end
32
-
33
- def compare_at_price(product_or_variant, currency, context_options = {})
34
- price = find_price(product_or_variant, currency, context_options)
35
- return nil if price.new_record? || price.compare_at_amount.blank?
36
-
37
- price.compare_at_amount
38
- end
39
-
40
- def display_compare_at_price(product_or_variant, currency, context_options = {})
41
- price = find_price(product_or_variant, currency, context_options)
42
- return nil if price.new_record? || price.compare_at_amount.blank?
43
-
44
- Spree::Money.new(price.compare_at_amount, currency: currency).to_s
45
- end
46
-
47
- private
48
-
49
- def build_pricing_context(variant, currency, options)
50
- Spree::Pricing::Context.new(
51
- variant: variant,
52
- currency: currency,
53
- store: options[:store],
54
- zone: options[:tax_zone] || options[:zone],
55
- user: options[:user],
56
- quantity: options[:quantity]
57
- )
58
- end
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,30 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module StoreMediaSerializerImagesConcern
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- def self.store_image_url_for(store, attribute_name)
9
- attachment = store.send(attribute_name)
10
- return unless attachment.attached?
11
-
12
- url_helpers.cdn_image_url(attachment)
13
- end
14
-
15
- attribute :logo do |store|
16
- store_image_url_for store, :logo
17
- end
18
-
19
- attribute :mailer_logo do |store|
20
- store_image_url_for store, :mailer_logo
21
- end
22
-
23
- attribute :favicon_path do |store|
24
- store_image_url_for store, :favicon_image
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,19 +0,0 @@
1
- module Spree
2
- module UserApiAuthentication
3
- def generate_spree_api_key!
4
- self.spree_api_key = generate_spree_api_key
5
- save!
6
- end
7
-
8
- def clear_spree_api_key!
9
- self.spree_api_key = nil
10
- save!
11
- end
12
-
13
- private
14
-
15
- def generate_spree_api_key
16
- SecureRandom.hex(24)
17
- end
18
- end
19
- end
@@ -1,7 +0,0 @@
1
- module Spree
2
- module UserApiMethods
3
- extend ActiveSupport::Concern
4
-
5
- include Spree::UserApiAuthentication
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Spree
2
- class OauthAccessGrant < Spree.base_class
3
- include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessGrant
4
-
5
- self.table_name = 'spree_oauth_access_grants'
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- module Spree
2
- class OauthAccessToken < Spree.base_class
3
- include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken
4
-
5
- self.table_name = 'spree_oauth_access_tokens'
6
- end
7
- end
@@ -1,22 +0,0 @@
1
- module Spree
2
- class OauthApplication < Spree.base_class
3
- include ::Doorkeeper::Orm::ActiveRecord::Mixins::Application
4
-
5
- self.table_name = 'spree_oauth_applications'
6
-
7
- before_validation :set_blank_for_redirect_uri
8
-
9
- # returns the last someone used this application
10
- #
11
- # @return [DateTime]
12
- def last_used_at
13
- access_tokens.order(:created_at).last&.created_at
14
- end
15
-
16
- private
17
-
18
- def set_blank_for_redirect_uri
19
- self.redirect_uri = '' if redirect_uri.nil?
20
- end
21
- end
22
- end
@@ -1,68 +0,0 @@
1
- require 'pagy'
2
-
3
- module Spree
4
- module Api
5
- class Paginate
6
- include Pagy::Method
7
-
8
- def initialize(collection, params)
9
- @collection = collection
10
- @params = params
11
-
12
- per_page_limit = Spree::Api::Config[:api_v2_per_page_limit]
13
- @per_page = if params[:per_page].to_i.between?(1, per_page_limit)
14
- params[:per_page].to_i
15
- else
16
- 25
17
- end
18
- end
19
-
20
- def call
21
- # Pass params as a hash-based request object for Pagy
22
- # Pagy::Request accepts a hash with :params key
23
- # Use to_unsafe_h for ActionController::Parameters, fallback to to_h for regular hashes
24
- params_hash = @params.respond_to?(:to_unsafe_h) ? @params.to_unsafe_h : @params.to_h
25
- request_hash = { params: params_hash }
26
-
27
- # Uses countish paginator which is faster as it avoids COUNT queries
28
- pagy, records = pagy(:countish, @collection, limit: @per_page, request: request_hash)
29
-
30
- PagyCollection.new(records, pagy)
31
- end
32
- end
33
-
34
- # Wrapper providing Kaminari-compatible interface for CollectionOptionsHelpers
35
- # Includes Enumerable so jsonapi-serializer detects it as a collection
36
- class PagyCollection < SimpleDelegator
37
- include Enumerable
38
-
39
- attr_reader :pagy
40
-
41
- def initialize(records, pagy)
42
- super(records)
43
- @pagy = pagy
44
- end
45
-
46
- # Enumerable requires #each to be defined
47
- def each(&block)
48
- __getobj__.each(&block)
49
- end
50
-
51
- def next_page
52
- @pagy.next
53
- end
54
-
55
- def prev_page
56
- @pagy.previous
57
- end
58
-
59
- def total_pages
60
- @pagy.pages
61
- end
62
-
63
- def total_count
64
- @pagy.count
65
- end
66
- end
67
- end
68
- end
@@ -1,39 +0,0 @@
1
- module Spree
2
- module Api
3
- module Products
4
- class FiltersPresenter
5
- def initialize(current_store, current_currency, params)
6
- @products_for_filters = find_products_for_filters(current_store, current_currency, params)
7
- end
8
-
9
- def to_h
10
- option_values = Spree::OptionValues::FindAvailable.new(products_scope: products_for_filters).execute
11
- option_values_presenters = Spree::Filters::OptionsPresenter.new(option_values_scope: option_values).to_a
12
- product_properties = Spree::ProductProperties::FindAvailable.new(products_scope: products_for_filters).execute
13
- product_properties_presenters = Spree::Filters::PropertiesPresenter.new(product_properties_scope: product_properties).to_a
14
- {
15
- option_types: option_values_presenters.map(&:to_h),
16
- product_properties: product_properties_presenters.map(&:to_h)
17
- }
18
- end
19
-
20
- private
21
-
22
- attr_reader :products_for_filters
23
-
24
- def find_products_for_filters(current_store, current_currency, params)
25
- current_taxons = find_current_taxons(current_store, params)
26
- current_store.products.active(current_currency).in_taxons(current_taxons)
27
- end
28
-
29
- def find_current_taxons(current_store, params)
30
- taxons_param = params.dig(:filter, :taxons)
31
- return nil if taxons_param.nil? || taxons_param.to_s.blank?
32
-
33
- taxon_ids = taxons_param.to_s.split(',')
34
- current_store.taxons.where(id: taxon_ids)
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module ImageTransformationConcern
5
- extend ActiveSupport::Concern
6
-
7
- def self.included(base)
8
- base.attribute :transformed_url do |image, params|
9
- image.generate_url(size: params.dig(:image_transformation, :size))
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module PublicMetafieldsConcern
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- has_many :metafields, serializer: Spree.api.storefront_metafield_serializer,
9
- record_type: :metafield,
10
- object_method_name: :public_metafields
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,42 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module ResourceSerializerConcern
5
- extend ActiveSupport::Concern
6
-
7
- def self.included(base)
8
- serializer_base_name = base.to_s.sub(/^Spree::Api::V2::Platform::/, '').sub(/Serializer$/, '')
9
- model_klazz = "Spree::#{serializer_base_name}".constantize
10
-
11
- base.set_type model_klazz.json_api_type
12
- # include standard attributes
13
- base.attributes(*model_klazz.json_api_columns)
14
- # include money attributes
15
- display_getter_methods(model_klazz).each do |method_name|
16
- base.attribute(method_name) do |object|
17
- object.public_send(method_name).to_s
18
- end
19
- end
20
-
21
- metafield_enabled_resources = Spree::MetafieldDefinition.available_resources || []
22
- if metafield_enabled_resources.map(&:name).include?(model_klazz.name) && model_klazz.method_defined?(:metafields)
23
- base.has_many :metafields, serializer: Spree.api.platform_metafield_serializer,
24
- record_type: :metafield,
25
- object_method_name: :metafields
26
- end
27
- end
28
-
29
- def self.display_getter_methods(model_klazz)
30
- model_klazz.new.methods.find_all do |method_name|
31
- next if method_name.to_s.start_with?('display_on')
32
- next unless method_name.to_s.start_with?('display_')
33
- next if method_name.to_s.end_with?('=')
34
- next if [Spree::Product, Spree::Variant].include?(model_klazz) && method_name == :display_amount
35
-
36
- method_name
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module TaxonImageTransformationConcern
5
- extend ActiveSupport::Concern
6
-
7
- def self.included(base)
8
- base.attribute :transformed_url do |image, params|
9
- image.generate_url(size: params.dig(:taxon_image_transformation, :size))
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,43 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- class BaseSerializer
5
- include JSONAPI::Serializer
6
-
7
- # to learn more about caching, please refer to:
8
- # https://github.com/jsonapi-serializer/jsonapi-serializer#caching
9
- # https://guides.rubyonrails.org/caching_with_rails.html#low-level-caching
10
- cache_options(store: Rails.cache, namespace: 'jsonapi-serializer', expires_in: Spree::Api::Config[:api_v2_serializers_cache_ttl])
11
-
12
- def self.record_cache_options(options, fieldset, include_list, params)
13
- opts = options.dup
14
-
15
- params_cache_key = params.map do |param|
16
- value = param.last
17
- next if param.nil? || value.nil?
18
-
19
- if value.respond_to?(:cache_key_with_version)
20
- value.cache_key_with_version
21
- elsif value.is_a?(Hash)
22
- # covers the current_price_options cases:
23
- # { price_options: { tax_zone: Spree::Zone... } } or
24
- # { price_options: { tax_zone: nil } }
25
- only_key = value.keys.first
26
- value[only_key]&.cache_key_with_version
27
- else
28
- value.to_s.downcase
29
- end
30
- end.compact.reject(&:blank?).join('-')
31
-
32
- opts[:namespace] += "-#{params_cache_key}"
33
-
34
- super(opts, fieldset, include_list, params)
35
- end
36
-
37
- def self.url_helpers
38
- Rails.application.routes.url_helpers
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,15 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class AddressSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :country, serializer: Spree.api.platform_country_serializer
9
- belongs_to :state, serializer: Spree.api.platform_state_serializer
10
- belongs_to :user, serializer: Spree.api.platform_user_serializer
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,20 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class AdjustmentSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :order, serializer: Spree.api.platform_order_serializer
9
- belongs_to :adjustable, polymorphic: true
10
- belongs_to :source, polymorphic: {
11
- Spree::Promotion::Actions::FreeShipping => Spree.api.platform_promotion_action_serializer,
12
- Spree::Promotion::Actions::CreateAdjustment => Spree.api.platform_promotion_action_serializer,
13
- Spree::Promotion::Actions::CreateItemAdjustments => Spree.api.platform_promotion_action_serializer,
14
- Spree::Promotion::Actions::CreateLineItems => Spree.api.platform_promotion_action_serializer
15
- }
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,11 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class AdminUserSerializer < UserSerializer
6
- set_type :admin_user
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,13 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class AssetSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :viewable, polymorphic: true
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,10 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class BaseSerializer < ::Spree::Api::V2::BaseSerializer
6
- end
7
- end
8
- end
9
- end
10
- end
@@ -1,17 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class CalculatorSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- attributes :type
9
-
10
- attribute :preferences do |calculator|
11
- calculator.preferences
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,14 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class ClassificationSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :product, serializer: Spree.api.platform_product_serializer
9
- belongs_to :taxon, serializer: Spree.api.platform_taxon_serializer
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,13 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class CountrySerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- has_many :states, serializer: Spree.api.platform_state_serializer
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,14 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class CreditCardSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :payment_method, serializer: Spree.api.platform_payment_method_serializer
9
- belongs_to :user, serializer: Spree.api.platform_user_serializer
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,17 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class CustomerReturnSerializer < BaseSerializer
6
- include ResourceSerializerConcern
7
-
8
- belongs_to :stock_location, serializer: Spree.api.platform_stock_location_serializer
9
-
10
- has_many :reimbursements, serializer: Spree.api.platform_reimbursement_serializer
11
- has_many :return_items, serializer: Spree.api.platform_return_item_serializer
12
- has_many :return_authorizations, serializer: Spree.api.platform_return_authorization_serializer
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,13 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class DataFeedSerializer < BaseSerializer
6
- set_type :data_feed
7
-
8
- attributes :name, :type, :slug, :active
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class DigitalLinkSerializer < BaseSerializer
6
- set_type :digital_link
7
-
8
- attributes :token, :access_counter
9
-
10
- belongs_to :digital, serializer: Spree.api.platform_digital_serializer
11
- belongs_to :line_item, serializer: Spree.api.platform_line_item_serializer
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,29 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Platform
5
- class DigitalSerializer < BaseSerializer
6
- set_type :digital
7
-
8
- attribute :url do |digital|
9
- url_helpers.polymorphic_url(digital.attachment, only_path: true)
10
- end
11
-
12
- attribute :content_type do |digital|
13
- digital.attachment.content_type.to_s
14
- end
15
-
16
- attribute :filename do |digital|
17
- digital.attachment.filename.to_s
18
- end
19
-
20
- attribute :byte_size do |digital|
21
- digital.attachment.byte_size.to_i
22
- end
23
-
24
- belongs_to :variant, serializer: Spree.api.platform_variant_serializer
25
- end
26
- end
27
- end
28
- end
29
- end