spree_api 5.3.4 → 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 (332) 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/serializers/spree/api/v3/address_serializer.rb +22 -0
  44. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +43 -0
  45. data/app/serializers/spree/api/v3/admin/metafield_serializer.rb +15 -0
  46. data/app/serializers/spree/api/v3/admin/order_serializer.rb +39 -0
  47. data/app/serializers/spree/api/v3/admin/price_serializer.rb +21 -0
  48. data/app/serializers/spree/api/v3/admin/product_serializer.rb +47 -0
  49. data/app/serializers/spree/api/v3/admin/taxon_serializer.rb +20 -0
  50. data/app/serializers/spree/api/v3/admin/taxonomy_serializer.rb +15 -0
  51. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +44 -0
  52. data/app/serializers/spree/api/v3/asset_serializer.rb +20 -0
  53. data/app/serializers/spree/api/v3/base_serializer.rb +98 -0
  54. data/app/serializers/spree/api/v3/country_serializer.rb +35 -0
  55. data/app/serializers/spree/api/v3/credit_card_serializer.rb +12 -0
  56. data/app/serializers/spree/api/v3/currency_serializer.rb +14 -0
  57. data/app/serializers/spree/api/v3/customer_return_serializer.rb +17 -0
  58. data/app/serializers/spree/api/v3/customer_serializer.rb +19 -0
  59. data/app/serializers/spree/api/v3/digital_link_serializer.rb +30 -0
  60. data/app/serializers/spree/api/v3/digital_serializer.rb +17 -0
  61. data/app/serializers/spree/api/v3/export_serializer.rb +19 -0
  62. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +28 -0
  63. data/app/serializers/spree/api/v3/gift_card_serializer.rb +78 -0
  64. data/app/serializers/spree/api/v3/image_serializer.rb +43 -0
  65. data/app/serializers/spree/api/v3/import_row_serializer.rb +24 -0
  66. data/app/serializers/spree/api/v3/import_serializer.rb +32 -0
  67. data/app/serializers/spree/api/v3/invitation_serializer.rb +47 -0
  68. data/app/serializers/spree/api/v3/line_item_serializer.rb +48 -0
  69. data/app/serializers/spree/api/v3/locale_serializer.rb +14 -0
  70. data/app/serializers/spree/{v2/storefront → api/v3}/metafield_serializer.rb +5 -3
  71. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +27 -0
  72. data/app/serializers/spree/api/v3/option_type_serializer.rb +11 -0
  73. data/app/serializers/spree/api/v3/option_value_serializer.rb +24 -0
  74. data/app/serializers/spree/api/v3/order_promotion_serializer.rb +16 -0
  75. data/app/serializers/spree/api/v3/order_serializer.rb +39 -0
  76. data/app/serializers/spree/api/v3/payment_method_serializer.rb +15 -0
  77. data/app/serializers/spree/api/v3/payment_serializer.rb +54 -0
  78. data/app/serializers/spree/api/v3/payment_session_serializer.rb +32 -0
  79. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +33 -0
  80. data/app/serializers/spree/api/v3/payment_source_serializer.rb +18 -0
  81. data/app/serializers/spree/api/v3/post_category_serializer.rb +13 -0
  82. data/app/serializers/spree/api/v3/post_serializer.rb +25 -0
  83. data/app/serializers/spree/api/v3/price_serializer.rb +34 -0
  84. data/app/serializers/spree/api/v3/product_serializer.rb +108 -0
  85. data/app/serializers/spree/api/v3/promotion_serializer.rb +28 -0
  86. data/app/serializers/spree/api/v3/refund_serializer.rb +31 -0
  87. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +28 -0
  88. data/app/serializers/spree/api/v3/report_serializer.rb +29 -0
  89. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +31 -0
  90. data/app/serializers/spree/api/v3/return_item_serializer.rb +53 -0
  91. data/app/serializers/spree/api/v3/shipment_serializer.rb +19 -0
  92. data/app/serializers/spree/api/v3/shipping_method_serializer.rb +11 -0
  93. data/app/serializers/spree/api/v3/shipping_rate_serializer.rb +26 -0
  94. data/app/serializers/spree/api/v3/state_serializer.rb +14 -0
  95. data/app/serializers/spree/api/v3/stock_item_serializer.rb +23 -0
  96. data/app/serializers/spree/api/v3/stock_location_serializer.rb +18 -0
  97. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +24 -0
  98. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +25 -0
  99. data/app/serializers/spree/api/v3/store_credit_serializer.rb +37 -0
  100. data/app/serializers/spree/api/v3/store_serializer.rb +38 -0
  101. data/app/serializers/spree/api/v3/taxon_serializer.rb +78 -0
  102. data/app/serializers/spree/api/v3/taxonomy_serializer.rb +33 -0
  103. data/app/serializers/spree/api/v3/variant_serializer.rb +86 -0
  104. data/app/serializers/spree/api/v3/wished_item_serializer.rb +22 -0
  105. data/app/serializers/spree/api/v3/wishlist_serializer.rb +25 -0
  106. data/app/services/spree/api/v3/filters_aggregator.rb +156 -0
  107. data/app/services/spree/api/v3/orders/update.rb +103 -0
  108. data/config/initializers/alba.rb +5 -0
  109. data/config/initializers/pagy.rb +10 -0
  110. data/config/initializers/typelizer.rb +25 -0
  111. data/config/locales/en.yml +1 -0
  112. data/config/routes.rb +63 -196
  113. data/lib/spree/api/dependencies.rb +68 -0
  114. data/lib/spree/api/engine.rb +0 -5
  115. data/lib/spree/api/openapi/schema_helper.rb +177 -0
  116. data/lib/spree/api/testing_support/factories.rb +1 -3
  117. data/lib/spree/api/testing_support/v3/base.rb +118 -0
  118. data/lib/spree/api.rb +7 -4
  119. metadata +131 -264
  120. data/LICENSE.md +0 -57
  121. data/app/controllers/concerns/spree/api/v2/caching.rb +0 -40
  122. data/app/controllers/concerns/spree/api/v2/coupon_codes_helper.rb +0 -29
  123. data/app/controllers/concerns/spree/api/v2/number_resource.rb +0 -11
  124. data/app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb +0 -37
  125. data/app/controllers/concerns/spree/api/v2/platform/promotion_calculator_params.rb +0 -17
  126. data/app/controllers/concerns/spree/api/v2/platform/promotion_rule_params.rb +0 -16
  127. data/app/controllers/concerns/spree/api/v2/product_list_includes.rb +0 -21
  128. data/app/controllers/concerns/spree/api/v2/storefront/metadata_controller_concern.rb +0 -18
  129. data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +0 -49
  130. data/app/controllers/spree/api/v2/base_controller.rb +0 -233
  131. data/app/controllers/spree/api/v2/data_feeds/google_controller.rb +0 -24
  132. data/app/controllers/spree/api/v2/platform/addresses_controller.rb +0 -23
  133. data/app/controllers/spree/api/v2/platform/adjustments_controller.rb +0 -23
  134. data/app/controllers/spree/api/v2/platform/classifications_controller.rb +0 -26
  135. data/app/controllers/spree/api/v2/platform/countries_controller.rb +0 -23
  136. data/app/controllers/spree/api/v2/platform/data_feeds_controller.rb +0 -19
  137. data/app/controllers/spree/api/v2/platform/digital_links_controller.rb +0 -29
  138. data/app/controllers/spree/api/v2/platform/digitals_controller.rb +0 -23
  139. data/app/controllers/spree/api/v2/platform/gift_cards_controller.rb +0 -23
  140. data/app/controllers/spree/api/v2/platform/line_items_controller.rb +0 -63
  141. data/app/controllers/spree/api/v2/platform/option_types_controller.rb +0 -19
  142. data/app/controllers/spree/api/v2/platform/option_values_controller.rb +0 -23
  143. data/app/controllers/spree/api/v2/platform/orders_controller.rb +0 -167
  144. data/app/controllers/spree/api/v2/platform/payment_methods_controller.rb +0 -31
  145. data/app/controllers/spree/api/v2/platform/payments_controller.rb +0 -21
  146. data/app/controllers/spree/api/v2/platform/products_controller.rb +0 -41
  147. data/app/controllers/spree/api/v2/platform/promotion_actions_controller.rb +0 -34
  148. data/app/controllers/spree/api/v2/platform/promotion_categories_controller.rb +0 -23
  149. data/app/controllers/spree/api/v2/platform/promotion_rules_controller.rb +0 -29
  150. data/app/controllers/spree/api/v2/platform/promotions_controller.rb +0 -35
  151. data/app/controllers/spree/api/v2/platform/resource_controller.rb +0 -154
  152. data/app/controllers/spree/api/v2/platform/roles_controller.rb +0 -19
  153. data/app/controllers/spree/api/v2/platform/shipments_controller.rb +0 -147
  154. data/app/controllers/spree/api/v2/platform/shipping_categories_controller.rb +0 -19
  155. data/app/controllers/spree/api/v2/platform/shipping_methods_controller.rb +0 -28
  156. data/app/controllers/spree/api/v2/platform/states_controller.rb +0 -23
  157. data/app/controllers/spree/api/v2/platform/stock_items_controller.rb +0 -23
  158. data/app/controllers/spree/api/v2/platform/stock_locations_controller.rb +0 -23
  159. data/app/controllers/spree/api/v2/platform/store_credit_categories_controller.rb +0 -19
  160. data/app/controllers/spree/api/v2/platform/store_credit_types_controller.rb +0 -19
  161. data/app/controllers/spree/api/v2/platform/store_credits_controller.rb +0 -23
  162. data/app/controllers/spree/api/v2/platform/tax_categories_controller.rb +0 -23
  163. data/app/controllers/spree/api/v2/platform/tax_rates_controller.rb +0 -27
  164. data/app/controllers/spree/api/v2/platform/taxonomies_controller.rb +0 -23
  165. data/app/controllers/spree/api/v2/platform/taxons_controller.rb +0 -59
  166. data/app/controllers/spree/api/v2/platform/users_controller.rb +0 -37
  167. data/app/controllers/spree/api/v2/platform/variants_controller.rb +0 -23
  168. data/app/controllers/spree/api/v2/platform/wished_items_controller.rb +0 -23
  169. data/app/controllers/spree/api/v2/platform/wishlists_controller.rb +0 -23
  170. data/app/controllers/spree/api/v2/platform/zones_controller.rb +0 -23
  171. data/app/controllers/spree/api/v2/resource_controller.rb +0 -79
  172. data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +0 -77
  173. data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +0 -52
  174. data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +0 -50
  175. data/app/controllers/spree/api/v2/storefront/account_controller.rb +0 -52
  176. data/app/controllers/spree/api/v2/storefront/cart_controller.rb +0 -246
  177. data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +0 -183
  178. data/app/controllers/spree/api/v2/storefront/countries_controller.rb +0 -57
  179. data/app/controllers/spree/api/v2/storefront/digitals_controller.rb +0 -58
  180. data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +0 -34
  181. data/app/controllers/spree/api/v2/storefront/policies_controller.rb +0 -31
  182. data/app/controllers/spree/api/v2/storefront/post_categories_controller.rb +0 -35
  183. data/app/controllers/spree/api/v2/storefront/posts_controller.rb +0 -51
  184. data/app/controllers/spree/api/v2/storefront/products_controller.rb +0 -66
  185. data/app/controllers/spree/api/v2/storefront/stores_controller.rb +0 -27
  186. data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +0 -51
  187. data/app/controllers/spree/api/v2/storefront/variants_controller.rb +0 -41
  188. data/app/controllers/spree/api/v2/storefront/wishlists_controller.rb +0 -214
  189. data/app/helpers/spree/api/v2/collection_options_helpers.rb +0 -46
  190. data/app/helpers/spree/api/v2/display_money_helper.rb +0 -63
  191. data/app/helpers/spree/api/v2/store_media_serializer_images_concern.rb +0 -30
  192. data/app/models/concerns/spree/user_api_authentication.rb +0 -19
  193. data/app/models/concerns/spree/user_api_methods.rb +0 -7
  194. data/app/models/spree/oauth_access_grant.rb +0 -7
  195. data/app/models/spree/oauth_access_token.rb +0 -7
  196. data/app/models/spree/oauth_application.rb +0 -22
  197. data/app/paginators/spree/api/paginate.rb +0 -68
  198. data/app/presenters/spree/api/products/filters_presenter.rb +0 -39
  199. data/app/serializers/concerns/spree/api/v2/image_transformation_concern.rb +0 -15
  200. data/app/serializers/concerns/spree/api/v2/public_metafields_concern.rb +0 -15
  201. data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +0 -42
  202. data/app/serializers/concerns/spree/api/v2/taxon_image_transformation_concern.rb +0 -15
  203. data/app/serializers/spree/api/v2/base_serializer.rb +0 -43
  204. data/app/serializers/spree/api/v2/platform/address_serializer.rb +0 -15
  205. data/app/serializers/spree/api/v2/platform/adjustment_serializer.rb +0 -20
  206. data/app/serializers/spree/api/v2/platform/admin_user_serializer.rb +0 -11
  207. data/app/serializers/spree/api/v2/platform/asset_serializer.rb +0 -13
  208. data/app/serializers/spree/api/v2/platform/base_serializer.rb +0 -10
  209. data/app/serializers/spree/api/v2/platform/calculator_serializer.rb +0 -17
  210. data/app/serializers/spree/api/v2/platform/classification_serializer.rb +0 -14
  211. data/app/serializers/spree/api/v2/platform/country_serializer.rb +0 -13
  212. data/app/serializers/spree/api/v2/platform/credit_card_serializer.rb +0 -14
  213. data/app/serializers/spree/api/v2/platform/customer_return_serializer.rb +0 -17
  214. data/app/serializers/spree/api/v2/platform/data_feed_serializer.rb +0 -13
  215. data/app/serializers/spree/api/v2/platform/digital_link_serializer.rb +0 -16
  216. data/app/serializers/spree/api/v2/platform/digital_serializer.rb +0 -29
  217. data/app/serializers/spree/api/v2/platform/gift_card_serializer.rb +0 -17
  218. data/app/serializers/spree/api/v2/platform/image_serializer.rb +0 -17
  219. data/app/serializers/spree/api/v2/platform/inventory_unit_serializer.rb +0 -19
  220. data/app/serializers/spree/api/v2/platform/line_item_serializer.rb +0 -19
  221. data/app/serializers/spree/api/v2/platform/log_entry_serializer.rb +0 -13
  222. data/app/serializers/spree/api/v2/platform/metafield_serializer.rb +0 -21
  223. data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +0 -13
  224. data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +0 -13
  225. data/app/serializers/spree/api/v2/platform/order_promotion_serializer.rb +0 -14
  226. data/app/serializers/spree/api/v2/platform/order_serializer.rb +0 -31
  227. data/app/serializers/spree/api/v2/platform/payment_capture_event_serializer.rb +0 -13
  228. data/app/serializers/spree/api/v2/platform/payment_method_serializer.rb +0 -18
  229. data/app/serializers/spree/api/v2/platform/payment_serializer.rb +0 -22
  230. data/app/serializers/spree/api/v2/platform/payment_source_serializer.rb +0 -12
  231. data/app/serializers/spree/api/v2/platform/price_serializer.rb +0 -19
  232. data/app/serializers/spree/api/v2/platform/product_property_serializer.rb +0 -11
  233. data/app/serializers/spree/api/v2/platform/product_serializer.rb +0 -90
  234. data/app/serializers/spree/api/v2/platform/promotion_action_line_item_serializer.rb +0 -14
  235. data/app/serializers/spree/api/v2/platform/promotion_action_serializer.rb +0 -19
  236. data/app/serializers/spree/api/v2/platform/promotion_category_serializer.rb +0 -13
  237. data/app/serializers/spree/api/v2/platform/promotion_rule_serializer.rb +0 -21
  238. data/app/serializers/spree/api/v2/platform/promotion_serializer.rb +0 -17
  239. data/app/serializers/spree/api/v2/platform/property_serializer.rb +0 -11
  240. data/app/serializers/spree/api/v2/platform/prototype_serializer.rb +0 -15
  241. data/app/serializers/spree/api/v2/platform/refund_reason_serializer.rb +0 -11
  242. data/app/serializers/spree/api/v2/platform/refund_serializer.rb +0 -17
  243. data/app/serializers/spree/api/v2/platform/reimbursement_credit_serializer.rb +0 -10
  244. data/app/serializers/spree/api/v2/platform/reimbursement_serializer.rb +0 -19
  245. data/app/serializers/spree/api/v2/platform/reimbursement_type_serializer.rb +0 -11
  246. data/app/serializers/spree/api/v2/platform/return_authorization_reason_serializer.rb +0 -11
  247. data/app/serializers/spree/api/v2/platform/return_authorization_serializer.rb +0 -17
  248. data/app/serializers/spree/api/v2/platform/return_item_serializer.rb +0 -16
  249. data/app/serializers/spree/api/v2/platform/role_serializer.rb +0 -11
  250. data/app/serializers/spree/api/v2/platform/shipment_serializer.rb +0 -22
  251. data/app/serializers/spree/api/v2/platform/shipping_category_serializer.rb +0 -11
  252. data/app/serializers/spree/api/v2/platform/shipping_method_serializer.rb +0 -16
  253. data/app/serializers/spree/api/v2/platform/shipping_rate_serializer.rb +0 -15
  254. data/app/serializers/spree/api/v2/platform/state_change_serializer.rb +0 -13
  255. data/app/serializers/spree/api/v2/platform/state_serializer.rb +0 -13
  256. data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +0 -18
  257. data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +0 -14
  258. data/app/serializers/spree/api/v2/platform/stock_movement_serializer.rb +0 -11
  259. data/app/serializers/spree/api/v2/platform/stock_transfer_serializer.rb +0 -15
  260. data/app/serializers/spree/api/v2/platform/store_credit_category_serializer.rb +0 -12
  261. data/app/serializers/spree/api/v2/platform/store_credit_event_serializer.rb +0 -14
  262. data/app/serializers/spree/api/v2/platform/store_credit_serializer.rb +0 -18
  263. data/app/serializers/spree/api/v2/platform/store_credit_type_serializer.rb +0 -12
  264. data/app/serializers/spree/api/v2/platform/store_serializer.rb +0 -14
  265. data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +0 -13
  266. data/app/serializers/spree/api/v2/platform/tax_rate_serializer.rb +0 -14
  267. data/app/serializers/spree/api/v2/platform/taxon_image_serializer.rb +0 -15
  268. data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +0 -47
  269. data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +0 -14
  270. data/app/serializers/spree/api/v2/platform/user_serializer.rb +0 -37
  271. data/app/serializers/spree/api/v2/platform/variant_serializer.rb +0 -66
  272. data/app/serializers/spree/api/v2/platform/wished_item_serializer.rb +0 -29
  273. data/app/serializers/spree/api/v2/platform/wishlist_serializer.rb +0 -19
  274. data/app/serializers/spree/api/v2/platform/zone_member_serializer.rb +0 -13
  275. data/app/serializers/spree/api/v2/platform/zone_serializer.rb +0 -13
  276. data/app/serializers/spree/v2/storefront/address_serializer.rb +0 -22
  277. data/app/serializers/spree/v2/storefront/base_serializer.rb +0 -10
  278. data/app/serializers/spree/v2/storefront/cart_serializer.rb +0 -67
  279. data/app/serializers/spree/v2/storefront/country_serializer.rb +0 -24
  280. data/app/serializers/spree/v2/storefront/credit_card_serializer.rb +0 -15
  281. data/app/serializers/spree/v2/storefront/digital_link_serializer.rb +0 -11
  282. data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +0 -35
  283. data/app/serializers/spree/v2/storefront/gift_card_serializer.rb +0 -16
  284. data/app/serializers/spree/v2/storefront/image_serializer.rb +0 -13
  285. data/app/serializers/spree/v2/storefront/line_item_serializer.rb +0 -23
  286. data/app/serializers/spree/v2/storefront/option_type_serializer.rb +0 -15
  287. data/app/serializers/spree/v2/storefront/option_value_serializer.rb +0 -13
  288. data/app/serializers/spree/v2/storefront/order_promotion_serializer.rb +0 -14
  289. data/app/serializers/spree/v2/storefront/order_serializer.rb +0 -11
  290. data/app/serializers/spree/v2/storefront/payment_method_serializer.rb +0 -17
  291. data/app/serializers/spree/v2/storefront/payment_serializer.rb +0 -20
  292. data/app/serializers/spree/v2/storefront/payment_source_serializer.rb +0 -12
  293. data/app/serializers/spree/v2/storefront/policy_serializer.rb +0 -19
  294. data/app/serializers/spree/v2/storefront/post_category_serializer.rb +0 -23
  295. data/app/serializers/spree/v2/storefront/post_serializer.rb +0 -51
  296. data/app/serializers/spree/v2/storefront/product_property_serializer.rb +0 -19
  297. data/app/serializers/spree/v2/storefront/product_serializer.rb +0 -92
  298. data/app/serializers/spree/v2/storefront/shipment_serializer.rb +0 -26
  299. data/app/serializers/spree/v2/storefront/shipping_category_serializer.rb +0 -10
  300. data/app/serializers/spree/v2/storefront/shipping_method_serializer.rb +0 -12
  301. data/app/serializers/spree/v2/storefront/shipping_rate_serializer.rb +0 -26
  302. data/app/serializers/spree/v2/storefront/state_serializer.rb +0 -11
  303. data/app/serializers/spree/v2/storefront/stock_location_serializer.rb +0 -11
  304. data/app/serializers/spree/v2/storefront/store_credit_category_serializer.rb +0 -11
  305. data/app/serializers/spree/v2/storefront/store_credit_event_serializer.rb +0 -15
  306. data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +0 -19
  307. data/app/serializers/spree/v2/storefront/store_credit_type_serializer.rb +0 -11
  308. data/app/serializers/spree/v2/storefront/store_serializer.rb +0 -18
  309. data/app/serializers/spree/v2/storefront/taxon_image_serializer.rb +0 -13
  310. data/app/serializers/spree/v2/storefront/taxon_serializer.rb +0 -55
  311. data/app/serializers/spree/v2/storefront/taxonomy_serializer.rb +0 -13
  312. data/app/serializers/spree/v2/storefront/user_serializer.rb +0 -33
  313. data/app/serializers/spree/v2/storefront/variant_serializer.rb +0 -58
  314. data/app/serializers/spree/v2/storefront/wished_item_serializer.rb +0 -29
  315. data/app/serializers/spree/v2/storefront/wishlist_serializer.rb +0 -17
  316. data/config/initializers/doorkeeper.rb +0 -50
  317. data/config/initializers/json_api_mime_types.rb +0 -8
  318. data/config/initializers/user_class_extensions.rb +0 -7
  319. data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +0 -7
  320. data/db/migrate/20120411123334_resize_api_key_field.rb +0 -7
  321. data/db/migrate/20120530054546_rename_api_key_to_spree_api_key.rb +0 -7
  322. data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +0 -7
  323. data/db/migrate/20180320110726_create_doorkeeper_tables.rb +0 -69
  324. data/db/migrate/20210727102516_change_integer_id_columns_type.rb +0 -9
  325. data/db/migrate/20210919183228_enable_polymorphic_resource_owner.rb +0 -21
  326. data/lib/generators/spree/api/install/install_generator.rb +0 -24
  327. data/lib/spree/api/testing_support/factories/oauth_application_factory.rb +0 -6
  328. data/lib/spree/api/testing_support/serializers.rb +0 -15
  329. data/lib/spree/api/testing_support/v2/base.rb +0 -13
  330. data/lib/spree/api/testing_support/v2/current_order.rb +0 -116
  331. data/lib/spree/api/testing_support/v2/platform_contexts.rb +0 -272
  332. data/lib/spree/api/testing_support/v2/serializers_params.rb +0 -16
@@ -0,0 +1,78 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class GiftCardSerializer < BaseSerializer
5
+ typelize code: :string,
6
+ state: :string,
7
+ amount: :number,
8
+ amount_used: :number,
9
+ amount_authorized: :number,
10
+ amount_remaining: :number,
11
+ display_amount: :string,
12
+ display_amount_used: :string,
13
+ display_amount_remaining: :string,
14
+ currency: :string,
15
+ expires_at: [:string, nullable: true],
16
+ redeemed_at: [:string, nullable: true],
17
+ expired: :boolean,
18
+ active: :boolean
19
+
20
+ attribute :code do |gift_card|
21
+ gift_card.display_code
22
+ end
23
+
24
+ attribute :state do |gift_card|
25
+ gift_card.display_state
26
+ end
27
+
28
+ attributes :currency
29
+
30
+ attribute :amount do |gift_card|
31
+ gift_card.amount.to_f
32
+ end
33
+
34
+ attribute :amount_used do |gift_card|
35
+ gift_card.amount_used.to_f
36
+ end
37
+
38
+ attribute :amount_authorized do |gift_card|
39
+ gift_card.amount_authorized.to_f
40
+ end
41
+
42
+ attribute :amount_remaining do |gift_card|
43
+ gift_card.amount_remaining.to_f
44
+ end
45
+
46
+ attribute :display_amount do |gift_card|
47
+ gift_card.display_amount.to_s
48
+ end
49
+
50
+ attribute :display_amount_used do |gift_card|
51
+ gift_card.display_amount_used.to_s
52
+ end
53
+
54
+ attribute :display_amount_remaining do |gift_card|
55
+ gift_card.display_amount_remaining.to_s
56
+ end
57
+
58
+ attribute :expires_at do |gift_card|
59
+ gift_card.expires_at&.iso8601
60
+ end
61
+
62
+ attribute :redeemed_at do |gift_card|
63
+ gift_card.redeemed_at&.iso8601
64
+ end
65
+
66
+ attribute :expired do |gift_card|
67
+ gift_card.expired?
68
+ end
69
+
70
+ attribute :active do |gift_card|
71
+ gift_card.active?
72
+ end
73
+
74
+ attributes created_at: :iso8601, updated_at: :iso8601
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,43 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class ImageSerializer < AssetSerializer
5
+ typelize position: :number, alt: [:string, nullable: true], viewable_type: :string, viewable_id: :string,
6
+ original_url: [:string, nullable: true], mini_url: [:string, nullable: true],
7
+ small_url: [:string, nullable: true], medium_url: [:string, nullable: true],
8
+ large_url: [:string, nullable: true], xlarge_url: [:string, nullable: true],
9
+ og_image_url: [:string, nullable: true]
10
+
11
+ attribute :viewable_id do |image|
12
+ image.viewable&.prefixed_id
13
+ end
14
+
15
+ attributes :position, :alt, :viewable_type,
16
+ created_at: :iso8601, updated_at: :iso8601
17
+
18
+ attribute :original_url do |image|
19
+ image_url_for(image)
20
+ end
21
+
22
+ # Dynamically define attributes for each configured image variant
23
+ # Uses named variants from Spree::Config.product_image_variant_sizes
24
+ # (e.g., mini, small, medium, large, xlarge)
25
+ Spree::Config.product_image_variant_sizes.each_key do |variant_name|
26
+ attribute :"#{variant_name}_url" do |image|
27
+ variant_url(image, variant_name)
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def variant_url(image, variant_name)
34
+ return nil unless image&.attachment&.attached?
35
+
36
+ Rails.application.routes.url_helpers.cdn_image_url(
37
+ image.attachment.variant(variant_name)
38
+ )
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class ImportRowSerializer < BaseSerializer
7
+ typelize import_id: [:string, nullable: true], row_number: :number,
8
+ status: :string, validation_errors: 'unknown',
9
+ item_type: [:string, nullable: true], item_id: [:string, nullable: true]
10
+
11
+ attributes :row_number, :status, :validation_errors, :item_type,
12
+ created_at: :iso8601, updated_at: :iso8601
13
+
14
+ attribute :import_id do |row|
15
+ row.import&.prefixed_id
16
+ end
17
+
18
+ attribute :item_id do |row|
19
+ row.item&.prefixed_id
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class ImportSerializer < BaseSerializer
7
+ typelize number: :string, type: [:string, nullable: true], status: :string,
8
+ owner_type: [:string, nullable: true], owner_id: [:string, nullable: true],
9
+ user_id: [:string, nullable: true], rows_count: :number
10
+
11
+ attributes :number, :type, :rows_count,
12
+ created_at: :iso8601, updated_at: :iso8601
13
+
14
+ attribute :status do |import|
15
+ import.status.to_s
16
+ end
17
+
18
+ attribute :owner_type do |import|
19
+ import.owner_type
20
+ end
21
+
22
+ attribute :owner_id do |import|
23
+ import.owner&.prefixed_id
24
+ end
25
+
26
+ attribute :user_id do |import|
27
+ import.user&.prefixed_id
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class InvitationSerializer < BaseSerializer
7
+ typelize email: :string, status: :string,
8
+ resource_type: [:string, nullable: true], resource_id: [:string, nullable: true],
9
+ inviter_type: [:string, nullable: true], inviter_id: [:string, nullable: true],
10
+ invitee_type: [:string, nullable: true], invitee_id: [:string, nullable: true],
11
+ role_id: [:string, nullable: true],
12
+ expires_at: [:string, nullable: true], accepted_at: [:string, nullable: true]
13
+
14
+ attributes :email, :resource_type, :inviter_type, :invitee_type,
15
+ created_at: :iso8601, updated_at: :iso8601
16
+
17
+ attribute :status do |invitation|
18
+ invitation.status.to_s
19
+ end
20
+
21
+ attribute :resource_id do |invitation|
22
+ invitation.resource&.prefixed_id
23
+ end
24
+
25
+ attribute :inviter_id do |invitation|
26
+ invitation.inviter&.prefixed_id
27
+ end
28
+
29
+ attribute :invitee_id do |invitation|
30
+ invitation.invitee&.prefixed_id
31
+ end
32
+
33
+ attribute :role_id do |invitation|
34
+ invitation.role&.prefixed_id
35
+ end
36
+
37
+ attribute :expires_at do |invitation|
38
+ invitation.expires_at&.iso8601
39
+ end
40
+
41
+ attribute :accepted_at do |invitation|
42
+ invitation.accepted_at&.iso8601
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,48 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class LineItemSerializer < BaseSerializer
5
+ typelize variant_id: :string, quantity: :number, currency: :string,
6
+ name: :string, slug: :string, options_text: :string,
7
+ price: :string, display_price: :string, total: :string, display_total: :string,
8
+ adjustment_total: :string, display_adjustment_total: :string,
9
+ additional_tax_total: :string, display_additional_tax_total: :string,
10
+ included_tax_total: :string, display_included_tax_total: :string,
11
+ promo_total: :string, display_promo_total: :string,
12
+ pre_tax_amount: :string, display_pre_tax_amount: :string,
13
+ discounted_amount: :string, display_discounted_amount: :string,
14
+ compare_at_amount: [:string, nullable: true], display_compare_at_amount: [:string, nullable: true],
15
+ thumbnail_url: [:string, nullable: true]
16
+
17
+ attribute :variant_id do |line_item|
18
+ line_item.variant&.prefixed_id
19
+ end
20
+
21
+ attributes :quantity, :currency, :name, :slug, :options_text,
22
+ :price, :display_price, :total, :display_total,
23
+ :adjustment_total, :display_adjustment_total,
24
+ :additional_tax_total, :display_additional_tax_total,
25
+ :included_tax_total, :display_included_tax_total,
26
+ :promo_total, :display_promo_total,
27
+ :pre_tax_amount, :display_pre_tax_amount,
28
+ :discounted_amount, :display_discounted_amount,
29
+ :display_compare_at_amount,
30
+ created_at: :iso8601, updated_at: :iso8601
31
+
32
+ # Return compare_at_amount as string, nil if zero
33
+ attribute :compare_at_amount do |line_item|
34
+ amount = line_item.compare_at_amount
35
+ amount.present? && amount.positive? ? amount.to_s : nil
36
+ end
37
+
38
+ # Thumbnail URL for line item (variant thumbnail or product thumbnail)
39
+ attribute :thumbnail_url do |line_item|
40
+ image_url_for(line_item.thumbnail)
41
+ end
42
+
43
+ many :option_values, resource: Spree.api.option_value_serializer
44
+ many :digital_links, resource: Spree.api.digital_link_serializer
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,14 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class LocaleSerializer
5
+ include Alba::Resource
6
+ include Typelizer::DSL
7
+
8
+ typelize code: :string, name: :string
9
+
10
+ attributes :code, :name
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,8 +1,10 @@
1
1
  module Spree
2
- module V2
3
- module Storefront
2
+ module Api
3
+ module V3
4
+ # Store API Metafield Serializer
5
+ # Customer-facing metafield data (public metafields only)
4
6
  class MetafieldSerializer < BaseSerializer
5
- set_type :metafield
7
+ typelize key: :string, name: :string, type: :string, value: :any
6
8
 
7
9
  attributes :name, :type
8
10
 
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class NewsletterSubscriberSerializer < BaseSerializer
7
+ typelize email: :string, verified: :boolean,
8
+ verified_at: [:string, nullable: true],
9
+ user_id: [:string, nullable: true]
10
+
11
+ attributes :email, created_at: :iso8601, updated_at: :iso8601
12
+
13
+ attribute :verified do |subscriber|
14
+ subscriber.verified?
15
+ end
16
+
17
+ attribute :verified_at do |subscriber|
18
+ subscriber.verified_at&.iso8601
19
+ end
20
+
21
+ attribute :user_id do |subscriber|
22
+ subscriber.user&.prefixed_id
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class OptionTypeSerializer < BaseSerializer
5
+ typelize name: :string, presentation: :string, position: :number
6
+
7
+ attributes :name, :presentation, :position
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class OptionValueSerializer < BaseSerializer
5
+ typelize name: :string, presentation: :string, position: :number, option_type_id: :string,
6
+ option_type_name: :string, option_type_presentation: :string
7
+
8
+ attribute :option_type_id do |option_value|
9
+ option_value.option_type&.prefixed_id
10
+ end
11
+
12
+ attributes :name, :presentation, :position
13
+
14
+ attribute :option_type_name do |option_value|
15
+ option_value.option_type.name
16
+ end
17
+
18
+ attribute :option_type_presentation do |option_value|
19
+ option_value.option_type.presentation
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class OrderPromotionSerializer < BaseSerializer
5
+ typelize name: :string, description: [:string, nullable: true], code: [:string, nullable: true],
6
+ amount: :string, display_amount: :string, promotion_id: :string
7
+
8
+ attribute :promotion_id do |order_promotion|
9
+ order_promotion.promotion&.prefixed_id
10
+ end
11
+
12
+ attributes :name, :description, :code, :amount, :display_amount
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Store API Order Serializer
5
+ # Customer-facing order data
6
+ class OrderSerializer < BaseSerializer
7
+ typelize number: :string, state: :string, token: :string, email: [:string, nullable: true],
8
+ special_instructions: [:string, nullable: true], currency: :string, item_count: :number,
9
+ shipment_state: [:string, nullable: true], payment_state: [:string, nullable: true],
10
+ item_total: :string, display_item_total: :string,
11
+ ship_total: :string, display_ship_total: :string,
12
+ adjustment_total: :string, display_adjustment_total: :string,
13
+ promo_total: :string, display_promo_total: :string,
14
+ tax_total: :string, display_tax_total: :string,
15
+ included_tax_total: :string, display_included_tax_total: :string,
16
+ additional_tax_total: :string, display_additional_tax_total: :string,
17
+ total: :string, display_total: :string, completed_at: [:string, nullable: true],
18
+ bill_address: { nullable: true }, ship_address: { nullable: true }
19
+
20
+ attributes :number, :state, :token, :email, :special_instructions,
21
+ :currency, :item_count, :shipment_state, :payment_state,
22
+ :item_total, :display_item_total, :ship_total, :display_ship_total,
23
+ :adjustment_total, :display_adjustment_total, :promo_total, :display_promo_total,
24
+ :tax_total, :display_tax_total, :included_tax_total, :display_included_tax_total,
25
+ :additional_tax_total, :display_additional_tax_total, :total, :display_total,
26
+ completed_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
27
+
28
+ many :order_promotions, resource: Spree.api.order_promotion_serializer
29
+ many :line_items, resource: Spree.api.line_item_serializer
30
+ many :shipments, resource: Spree.api.shipment_serializer
31
+ many :payments, resource: Spree.api.payment_serializer
32
+ one :bill_address, resource: Spree.api.address_serializer
33
+ one :ship_address, resource: Spree.api.address_serializer
34
+
35
+ many :payment_methods, resource: Spree.api.payment_method_serializer
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class PaymentMethodSerializer < BaseSerializer
5
+ typelize name: :string, description: [:string, nullable: true], type: :string, session_required: :boolean
6
+
7
+ attributes :name, :description, :type
8
+
9
+ attribute :session_required do |payment_method|
10
+ payment_method.session_required?
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,54 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class PaymentSerializer < BaseSerializer
5
+ typelize state: :string, payment_method_id: :string, response_code: [:string, nullable: true],
6
+ number: :string, amount: :string, display_amount: :string,
7
+ source_type: [:string, nullable: true, enum: %w[credit_card store_credit payment_source]],
8
+ source_id: [:string, nullable: true],
9
+ source: 'StoreCreditCard | StoreStoreCredit | StorePaymentSource | null'
10
+
11
+ attribute :payment_method_id do |payment|
12
+ payment.payment_method&.prefixed_id
13
+ end
14
+
15
+ attributes :state, :response_code, :number, :amount, :display_amount,
16
+ created_at: :iso8601, updated_at: :iso8601
17
+
18
+ attribute :source_type do |payment|
19
+ case payment.source_type
20
+ when 'Spree::CreditCard'
21
+ 'credit_card'
22
+ when 'Spree::StoreCredit'
23
+ 'store_credit'
24
+ when nil
25
+ nil
26
+ else
27
+ 'payment_source'
28
+ end
29
+ end
30
+
31
+ attribute :source_id do |payment|
32
+ payment.source&.prefixed_id
33
+ end
34
+
35
+ attribute :source do |payment|
36
+ next nil if payment.source.blank?
37
+
38
+ serializer = case payment.source_type
39
+ when 'Spree::CreditCard'
40
+ Spree.api.credit_card_serializer
41
+ when 'Spree::StoreCredit'
42
+ Spree.api.store_credit_serializer
43
+ else
44
+ Spree.api.payment_source_serializer
45
+ end
46
+
47
+ serializer.new(payment.source).to_h
48
+ end
49
+
50
+ one :payment_method, resource: Spree.api.payment_method_serializer
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,32 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class PaymentSessionSerializer < BaseSerializer
5
+ typelize status: :string, amount: :string, currency: :string,
6
+ external_id: :string, external_data: 'Record<string, unknown>',
7
+ expires_at: [:string, nullable: true], customer_external_id: [:string, nullable: true],
8
+ payment_method_id: :string, order_id: :string
9
+
10
+ attributes :status, :currency, :external_id, :external_data,
11
+ :customer_external_id,
12
+ expires_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
13
+
14
+ attribute :amount do |session|
15
+ session.amount&.to_s
16
+ end
17
+
18
+ attribute :payment_method_id do |session|
19
+ session.payment_method&.prefixed_id
20
+ end
21
+
22
+ attribute :order_id do |session|
23
+ session.order&.prefixed_id
24
+ end
25
+
26
+ one :payment_method, resource: Spree.api.payment_method_serializer
27
+ one :payment, resource: Spree.api.payment_serializer,
28
+ if: proc { |session| session.payment.present? }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class PaymentSetupSessionSerializer < BaseSerializer
5
+ typelize status: :string, external_id: [:string, nullable: true], external_client_secret: [:string, nullable: true],
6
+ external_data: 'Record<string, unknown>',
7
+ payment_method_id: [:string, nullable: true], payment_source_id: [:string, nullable: true],
8
+ payment_source_type: [:string, nullable: true], customer_id: [:string, nullable: true]
9
+
10
+ attributes :status, :external_id, :external_client_secret, :external_data,
11
+ created_at: :iso8601, updated_at: :iso8601
12
+
13
+ attribute :payment_method_id do |session|
14
+ session.payment_method&.prefixed_id
15
+ end
16
+
17
+ attribute :payment_source_id do |session|
18
+ session.payment_source&.prefixed_id
19
+ end
20
+
21
+ attribute :payment_source_type do |session|
22
+ session.payment_source_type
23
+ end
24
+
25
+ attribute :customer_id do |session|
26
+ session.customer&.prefixed_id
27
+ end
28
+
29
+ one :payment_method, resource: Spree.api.payment_method_serializer
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class PaymentSourceSerializer < BaseSerializer
5
+ typelize gateway_payment_profile_id: [:string, nullable: true],
6
+ public_metadata: ['Record<string, unknown>', nullable: true]
7
+
8
+ attribute :gateway_payment_profile_id do |source|
9
+ source.try(:gateway_payment_profile_id)
10
+ end
11
+
12
+ attribute :public_metadata do |source|
13
+ source.try(:public_metadata)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class PostCategorySerializer < BaseSerializer
7
+ typelize title: :string, slug: :string
8
+
9
+ attributes :title, :slug, created_at: :iso8601, updated_at: :iso8601
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class PostSerializer < BaseSerializer
7
+ typelize title: :string, slug: :string,
8
+ meta_title: [:string, nullable: true], meta_description: [:string, nullable: true],
9
+ published_at: [:string, nullable: true],
10
+ author_id: [:string, nullable: true], post_category_id: [:string, nullable: true]
11
+
12
+ attributes :title, :slug, :meta_title, :meta_description,
13
+ published_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
14
+
15
+ attribute :author_id do |post|
16
+ post.author&.prefixed_id
17
+ end
18
+
19
+ attribute :post_category_id do |post|
20
+ post.post_category&.prefixed_id
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Store API Price Serializer
5
+ # Represents a resolved/calculated price for storefront display
6
+ # Can represent either a calculated price (with price list resolution) or a base price
7
+ class PriceSerializer < BaseSerializer
8
+ typelize amount: [:string, nullable: true],
9
+ amount_in_cents: [:number, nullable: true],
10
+ display_amount: [:string, nullable: true],
11
+ compare_at_amount: [:string, nullable: true],
12
+ compare_at_amount_in_cents: [:number, nullable: true],
13
+ display_compare_at_amount: [:string, nullable: true],
14
+ currency: [:string, nullable: true],
15
+ price_list_id: [:string, nullable: true]
16
+
17
+ attributes :amount, :amount_in_cents, :compare_at_amount,
18
+ :compare_at_amount_in_cents, :currency
19
+
20
+ attribute :display_amount do |price|
21
+ price.display_amount&.to_s
22
+ end
23
+
24
+ attribute :display_compare_at_amount do |price|
25
+ price.display_compare_at_amount&.to_s
26
+ end
27
+
28
+ attribute :price_list_id do |price|
29
+ price.price_list&.prefixed_id
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end