spree_api 6.0.0.beta4 → 6.0.0.rc1

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 (342) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -31
  3. data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
  5. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +1 -1
  6. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +7 -0
  7. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +2 -2
  8. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/error_handler.rb +7 -2
  10. data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
  11. data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
  12. data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
  13. data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
  14. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +1 -5
  15. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +2 -10
  16. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
  17. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +4 -8
  18. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
  19. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
  20. data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
  21. data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
  22. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +0 -5
  23. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +1 -1
  24. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +0 -6
  25. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +0 -4
  26. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +1 -1
  27. data/app/controllers/spree/api/v3/admin/channels_controller.rb +0 -4
  28. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +1 -2
  29. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +2 -2
  30. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +0 -4
  31. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
  32. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +0 -4
  33. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +1 -9
  34. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +0 -4
  35. data/app/controllers/spree/api/v3/admin/companies_controller.rb +0 -4
  36. data/app/controllers/spree/api/v3/admin/countries_controller.rb +1 -1
  37. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
  38. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +9 -1
  39. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +0 -4
  40. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +0 -4
  41. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +0 -4
  42. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
  43. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +0 -4
  44. data/app/controllers/spree/api/v3/admin/customers_controller.rb +2 -2
  45. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +1 -1
  46. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +3 -5
  47. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +1 -6
  48. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +40 -0
  49. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +30 -0
  50. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +30 -0
  51. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +34 -0
  52. data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
  53. data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
  54. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +40 -0
  55. data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
  56. data/app/controllers/spree/api/v3/admin/imports_controller.rb +1 -2
  57. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +0 -7
  58. data/app/controllers/spree/api/v3/admin/me_controller.rb +1 -1
  59. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +5 -5
  60. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +0 -4
  61. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +1 -5
  62. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +1 -1
  63. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +1 -1
  64. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +18 -16
  65. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +3 -3
  66. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +2 -10
  67. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +2 -14
  68. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +1 -5
  69. data/app/controllers/spree/api/v3/admin/orders_controller.rb +3 -3
  70. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +9 -7
  71. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +6 -53
  72. data/app/controllers/spree/api/v3/admin/prices_controller.rb +0 -4
  73. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +2 -6
  74. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +0 -4
  75. data/app/controllers/spree/api/v3/admin/products_controller.rb +1 -1
  76. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +0 -4
  77. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +0 -4
  78. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +1 -1
  79. data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -1
  80. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +1 -9
  81. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +2 -10
  82. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
  83. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
  84. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
  85. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +2 -10
  86. data/app/controllers/spree/api/v3/admin/setup_controller.rb +3 -11
  87. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +1 -1
  88. data/app/controllers/spree/api/v3/admin/store_controller.rb +6 -1
  89. data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
  90. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +17 -12
  91. data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
  92. data/app/controllers/spree/api/v3/base_controller.rb +10 -0
  93. data/app/controllers/spree/api/v3/resource_controller.rb +44 -1
  94. data/app/controllers/spree/api/v3/seller/auth_controller.rb +2 -2
  95. data/app/controllers/spree/api/v3/seller/countries_controller.rb +1 -1
  96. data/app/controllers/spree/api/v3/seller/exports_controller.rb +3 -3
  97. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +3 -3
  98. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
  99. data/app/controllers/spree/api/v3/seller/me_controller.rb +1 -1
  100. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +1 -1
  101. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -11
  102. data/app/controllers/spree/api/v3/seller/products_controller.rb +2 -1
  103. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +1 -1
  104. data/app/controllers/spree/api/v3/seller/team_controller.rb +1 -1
  105. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +1 -1
  106. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +3 -11
  107. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +5 -3
  108. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +6 -2
  109. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +1 -1
  110. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +5 -3
  111. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +2 -2
  112. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -0
  113. data/app/controllers/spree/api/v3/store/carts_controller.rb +9 -6
  114. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +0 -4
  115. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
  116. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +1 -1
  117. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +0 -4
  118. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
  119. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +0 -5
  120. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
  121. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
  122. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
  123. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +8 -6
  124. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +0 -4
  125. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
  126. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
  127. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
  128. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +5 -14
  129. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +1 -5
  130. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +1 -5
  131. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +0 -4
  132. data/app/serializers/spree/api/v3/admin/address_serializer.rb +5 -7
  133. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
  134. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
  135. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +1 -7
  136. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
  137. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
  138. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -6
  139. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
  140. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -3
  141. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
  142. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
  143. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
  144. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +2 -10
  145. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
  146. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +8 -22
  147. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
  148. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
  149. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
  150. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
  151. data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
  152. data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
  153. data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
  154. data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
  155. data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
  156. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +1 -3
  157. data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
  158. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
  159. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -7
  160. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +1 -7
  161. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +2 -6
  162. data/app/serializers/spree/api/v3/admin/market_serializer.rb +4 -2
  163. data/app/serializers/spree/api/v3/admin/media_serializer.rb +1 -3
  164. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
  165. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +3 -9
  166. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
  167. data/app/serializers/spree/api/v3/admin/order_serializer.rb +5 -15
  168. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
  169. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -1
  170. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -7
  171. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
  172. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
  173. data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -10
  174. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
  175. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
  176. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +1 -3
  177. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -3
  178. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +2 -15
  179. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +2 -15
  180. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
  181. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -1
  182. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +1 -0
  183. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
  184. data/app/serializers/spree/api/v3/admin/return_serializer.rb +3 -11
  185. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
  186. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +4 -2
  187. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
  188. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
  189. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +5 -15
  190. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +4 -2
  191. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +6 -19
  192. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
  193. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +1 -3
  194. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +1 -3
  195. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
  196. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
  197. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
  198. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
  199. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +1 -3
  200. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +4 -18
  201. data/app/serializers/spree/api/v3/admin/store_serializer.rb +24 -6
  202. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -3
  203. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -9
  204. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
  205. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +5 -1
  206. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +1 -7
  207. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +6 -7
  208. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
  209. data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
  210. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
  211. data/app/serializers/spree/api/v3/base_serializer.rb +20 -0
  212. data/app/serializers/spree/api/v3/cart_serializer.rb +17 -45
  213. data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
  214. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +11 -26
  215. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -15
  216. data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
  217. data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
  218. data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
  219. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +3 -23
  220. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
  221. data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
  222. data/app/serializers/spree/api/v3/discount_serializer.rb +1 -12
  223. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +9 -27
  224. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -15
  225. data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
  226. data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
  227. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
  228. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +1 -3
  229. data/app/serializers/spree/api/v3/gift_card_serializer.rb +5 -17
  230. data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
  231. data/app/serializers/spree/api/v3/import_serializer.rb +3 -14
  232. data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
  233. data/app/serializers/spree/api/v3/line_item_serializer.rb +6 -20
  234. data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
  235. data/app/serializers/spree/api/v3/media_serializer.rb +1 -3
  236. data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
  237. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
  238. data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
  239. data/app/serializers/spree/api/v3/order_group_serializer.rb +2 -23
  240. data/app/serializers/spree/api/v3/order_serializer.rb +12 -38
  241. data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
  242. data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
  243. data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
  244. data/app/serializers/spree/api/v3/payment_session_serializer.rb +3 -9
  245. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
  246. data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
  247. data/app/serializers/spree/api/v3/price_history_serializer.rb +1 -3
  248. data/app/serializers/spree/api/v3/price_serializer.rb +1 -3
  249. data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
  250. data/app/serializers/spree/api/v3/product_serializer.rb +7 -21
  251. data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
  252. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
  253. data/app/serializers/spree/api/v3/refund_serializer.rb +3 -11
  254. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +12 -19
  255. data/app/serializers/spree/api/v3/return_serializer.rb +6 -15
  256. data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
  257. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +1 -7
  258. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +1 -7
  259. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
  260. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
  261. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +1 -3
  262. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
  263. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
  264. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
  265. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +7 -13
  266. data/app/serializers/spree/api/v3/seller/order_serializer.rb +4 -25
  267. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +4 -2
  268. data/app/serializers/spree/api/v3/seller/product_serializer.rb +1 -7
  269. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
  270. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +2 -6
  271. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
  272. data/app/serializers/spree/api/v3/seller/return_serializer.rb +3 -15
  273. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +4 -2
  274. data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
  275. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
  276. data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
  277. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
  278. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
  279. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
  280. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -11
  281. data/app/serializers/spree/api/v3/store_credit_serializer.rb +2 -24
  282. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
  283. data/app/serializers/spree/api/v3/tax_line_serializer.rb +10 -20
  284. data/app/serializers/spree/api/v3/variant_serializer.rb +7 -21
  285. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
  286. data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
  287. data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
  288. data/config/initializers/pagy.rb +1 -1
  289. data/config/initializers/typelizer.rb +6 -8
  290. data/config/locales/ar.yml +15 -0
  291. data/config/locales/be.yml +15 -0
  292. data/config/locales/bg.yml +15 -0
  293. data/config/locales/ca.yml +15 -0
  294. data/config/locales/cs.yml +15 -0
  295. data/config/locales/da.yml +15 -0
  296. data/config/locales/de-CH.yml +11 -0
  297. data/config/locales/de.yml +15 -0
  298. data/config/locales/el.yml +15 -0
  299. data/config/locales/en.yml +5 -40
  300. data/config/locales/es-CL.yml +10 -0
  301. data/config/locales/es-EC.yml +11 -0
  302. data/config/locales/es-MX.yml +12 -0
  303. data/config/locales/es.yml +15 -0
  304. data/config/locales/et.yml +15 -0
  305. data/config/locales/fa.yml +15 -0
  306. data/config/locales/fi.yml +15 -0
  307. data/config/locales/fr.yml +15 -0
  308. data/config/locales/hu.yml +15 -0
  309. data/config/locales/id.yml +15 -0
  310. data/config/locales/it.yml +15 -0
  311. data/config/locales/ja.yml +15 -0
  312. data/config/locales/km.yml +15 -0
  313. data/config/locales/ko.yml +15 -0
  314. data/config/locales/ku.yml +15 -0
  315. data/config/locales/lt.yml +15 -0
  316. data/config/locales/lv.yml +15 -0
  317. data/config/locales/nb.yml +15 -0
  318. data/config/locales/ne.yml +15 -0
  319. data/config/locales/nl.yml +15 -0
  320. data/config/locales/pl.yml +15 -0
  321. data/config/locales/pt-BR.yml +13 -0
  322. data/config/locales/pt.yml +15 -0
  323. data/config/locales/ro.yml +15 -0
  324. data/config/locales/ru.yml +15 -0
  325. data/config/locales/sk.yml +15 -0
  326. data/config/locales/sl-SI.yml +15 -0
  327. data/config/locales/sv.yml +15 -0
  328. data/config/locales/th.yml +15 -0
  329. data/config/locales/tr.yml +15 -0
  330. data/config/locales/uk.yml +15 -0
  331. data/config/locales/vi.yml +15 -0
  332. data/config/locales/zh-CN.yml +15 -0
  333. data/config/locales/zh-TW.yml +15 -0
  334. data/config/routes.rb +49 -99
  335. data/lib/spree/api/dependencies.rb +53 -274
  336. data/lib/spree/api/openapi/schema_helper.rb +1 -1
  337. data/lib/spree/api/typelizer_generation.rb +35 -0
  338. data/lib/spree/api/webhook_event_types.rb +140 -0
  339. data/lib/spree/api.rb +0 -2
  340. metadata +71 -36
  341. data/config/i18n-tasks.yml +0 -40
  342. data/config/initializers/alba.rb +0 -5
@@ -10,6 +10,8 @@ module Spree
10
10
  original_price: :string,
11
11
  new_variant_price: :string,
12
12
  price_difference: :string,
13
+ original_tax_total: :string,
14
+ new_tax_total: :string,
13
15
  original_variant_id: [:string, nullable: true],
14
16
  new_variant_id: [:string, nullable: true],
15
17
  line_item_id: [:string, nullable: true],
@@ -17,33 +19,13 @@ module Spree
17
19
 
18
20
  attributes :quantity, :received_quantity, :resellable
19
21
 
20
- attribute :original_price do |line|
21
- line.original_price.to_s
22
- end
23
-
24
- attribute :new_variant_price do |line|
25
- line.new_variant_price.to_s
26
- end
27
-
28
- attribute :price_difference do |line|
29
- line.price_difference.to_s
30
- end
31
-
32
- attribute :original_variant_id do |line|
33
- line.original_variant&.prefixed_id
34
- end
35
-
36
- attribute :new_variant_id do |line|
37
- line.new_variant&.prefixed_id
38
- end
39
-
40
- attribute :line_item_id do |line|
41
- line.line_item&.prefixed_id
42
- end
43
-
44
- attribute :fulfillment_item_id do |line|
45
- line.fulfillment_item&.prefixed_id
46
- end
22
+ # What the customer paid for the units coming back, after discounts
23
+ # and with their tax.
24
+ attributes original_price: :string
25
+ # The replacement at the same discount, with its own tax.
26
+ attributes new_variant_price: :string, price_difference: :string, original_tax_total: :string,
27
+ new_tax_total: :string
28
+ prefixed_id_attributes :original_variant, :new_variant, :line_item, :fulfillment_item
47
29
 
48
30
  one :original_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('original_variant') }
49
31
  one :new_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('new_variant') }
@@ -18,22 +18,9 @@ module Spree
18
18
 
19
19
  attributes :number, :status
20
20
 
21
- attribute :order_id do |exchange|
22
- exchange.order&.prefixed_id
23
- end
24
-
25
- attribute :reason_id do |exchange|
26
- exchange.reason&.prefixed_id
27
- end
28
-
29
- attribute :price_difference do |exchange|
30
- exchange.price_difference.to_s
31
- end
32
-
33
- attribute :display_price_difference do |exchange|
34
- exchange.display_price_difference.to_s
35
- end
21
+ prefixed_id_attributes :order, :reason
36
22
 
23
+ attributes price_difference: :string, display_price_difference: :string
37
24
  attribute :approved_at do |exchange|
38
25
  exchange.approved_at&.iso8601
39
26
  end
@@ -18,9 +18,7 @@ module Spree
18
18
  Spree::Export.api_type_for(export.type)
19
19
  end
20
20
 
21
- attribute :user_id do |export|
22
- export.user&.prefixed_id
23
- end
21
+ prefixed_id_attributes :user
24
22
  end
25
23
  end
26
24
  end
@@ -5,20 +5,12 @@ module Spree
5
5
  # Order-level when both adjustable IDs are null.
6
6
  class FeeSerializer < BaseSerializer
7
7
  typelize label: :string,
8
- kind: [:string, enum: Spree::Fee::KINDS, enum_type_name: 'FeeKind',
9
- comment: 'What sort of charge this is. `duty` is a customs duty on a cross-border order and is not taxed; the other kinds are. Extensions may register further kinds.'],
10
- amount: [:string, nullable: true], display_amount: [:string, nullable: true],
8
+ kind: [:string, enum: Spree::Fee::KINDS, enum_type_name: 'FeeKind', comment: 'What sort of charge this is. `duty` is a customs duty on a cross-border order and is not taxed; the other kinds are. Extensions may register further kinds.'],
11
9
  line_item_id: [:string, nullable: true], fulfillment_id: [:string, nullable: true]
12
10
 
13
11
  attributes :label, :kind
14
12
 
15
- attribute :line_item_id do |record|
16
- record.line_item&.prefixed_id
17
- end
18
-
19
- attribute :fulfillment_id do |record|
20
- record.fulfillment&.prefixed_id
21
- end
13
+ prefixed_id_attributes :line_item, :fulfillment
22
14
 
23
15
  money_attributes :amount, :display_amount
24
16
  end
@@ -2,18 +2,11 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class FulfillmentSerializer < BaseSerializer
5
- typelize number: :string, status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
5
+ typelize number: :string,
6
+ status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
6
7
  fulfillment_type: [:string, enum: %w[shipping digital pickup pickup_point]],
7
- tracking: [:string, nullable: true],
8
- tracking_url: [:string, nullable: true], fulfilled_at: [:string, nullable: true],
9
- delivered_at: [:string, nullable: true],
10
- cost: [:string, nullable: true], display_cost: [:string, nullable: true],
11
- unpriced: :boolean,
12
- total: [:string, nullable: true], display_total: [:string, nullable: true],
13
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
14
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
15
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
16
- tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
8
+ tracking: [:string, nullable: true], tracking_url: [:string, nullable: true],
9
+ fulfilled_at: [:string, nullable: true], delivered_at: [:string, nullable: true], unpriced: :boolean,
17
10
  items: 'Array<{ item_id: string; variant_id: string; quantity: number }>',
18
11
  pickup_point_data: ['Record<string, unknown>', nullable: true],
19
12
  selected_delivery_rate_id: [:string, nullable: true]
@@ -19,9 +19,7 @@ module Spree
19
19
  batch.expires_at&.iso8601
20
20
  end
21
21
 
22
- attribute :created_by_id do |batch|
23
- batch.created_by&.prefixed_id
24
- end
22
+ prefixed_id_attributes :created_by
25
23
  end
26
24
  end
27
25
  end
@@ -4,17 +4,9 @@ module Spree
4
4
  class GiftCardSerializer < BaseSerializer
5
5
  typelize code: :string,
6
6
  status: [:string, enum: Spree::GiftCard::DISPLAY_STATUSES, enum_type_name: 'GiftCardStatus'],
7
- amount: [:string, nullable: true],
8
- amount_used: [:string, nullable: true],
9
- amount_authorized: [:string, nullable: true],
10
- amount_remaining: [:string, nullable: true],
11
- display_amount: [:string, nullable: true],
12
- display_amount_used: [:string, nullable: true],
13
- display_amount_remaining: [:string, nullable: true],
14
- currency: :string,
15
- expires_at: [:string, nullable: true],
16
- redeemed_at: [:string, nullable: true],
17
- expired: :boolean,
7
+ display_amount: [:string, nullable: true], display_amount_used: [:string, nullable: true],
8
+ display_amount_remaining: [:string, nullable: true], currency: :string,
9
+ expires_at: [:string, nullable: true], redeemed_at: [:string, nullable: true], expired: :boolean,
18
10
  active: :boolean
19
11
 
20
12
  # A bearer credential: masked when the order is shown to someone other
@@ -53,13 +45,9 @@ module Spree
53
45
  gift_card.redeemed_at&.iso8601
54
46
  end
55
47
 
56
- attribute :expired do |gift_card|
57
- gift_card.expired?
58
- end
48
+ attribute :expired, &:expired?
59
49
 
60
- attribute :active do |gift_card|
61
- gift_card.active?
62
- end
50
+ attribute :active, &:active?
63
51
 
64
52
  end
65
53
  end
@@ -11,18 +11,14 @@ module Spree
11
11
  attributes :row_number, :status, :validation_errors,
12
12
  created_at: :iso8601, updated_at: :iso8601
13
13
 
14
- attribute :import_id do |row|
15
- row.import&.prefixed_id
16
- end
14
+ prefixed_id_attributes :import
17
15
 
18
16
  # `"product"` / `"variant"`, not the polymorphic class name.
19
17
  attribute :item_type do |row|
20
18
  Spree::Base.polymorphic_api_type(row.item_type)
21
19
  end
22
20
 
23
- attribute :item_id do |row|
24
- row.item&.prefixed_id
25
- end
21
+ prefixed_id_attributes :item
26
22
  end
27
23
  end
28
24
  end
@@ -21,19 +21,10 @@ module Spree
21
21
  Spree::Import.api_type_for(import.type)
22
22
  end
23
23
 
24
- attribute :status do |import|
25
- import.status.to_s
26
- end
27
-
24
+ attributes status: :string
28
25
  # Which marketplace this import belongs to, and — when a seller ran it —
29
26
  # whose it is. A null `seller_id` means the operator's own.
30
- attribute :store_id do |import|
31
- import.store&.prefixed_id
32
- end
33
-
34
- attribute :seller_id do |import|
35
- import.seller&.prefixed_id
36
- end
27
+ prefixed_id_attributes :store, :seller
37
28
 
38
29
  # @deprecated Read `store_id` / `seller_id` — removed in 6.1. Emitted
39
30
  # from the pair above rather than the dropped columns, so a client
@@ -46,9 +37,7 @@ module Spree
46
37
  (import.seller || import.store)&.prefixed_id
47
38
  end
48
39
 
49
- attribute :user_id do |import|
50
- import.user&.prefixed_id
51
- end
40
+ prefixed_id_attributes :user
52
41
  end
53
42
  end
54
43
  end
@@ -14,10 +14,7 @@ module Spree
14
14
  attributes :email,
15
15
  created_at: :iso8601, updated_at: :iso8601
16
16
 
17
- attribute :status do |invitation|
18
- invitation.status.to_s
19
- end
20
-
17
+ attributes status: :string
21
18
  # `"store"` / `"admin_user"`, not the polymorphic class names.
22
19
  attribute :resource_type do |invitation|
23
20
  Spree::Base.polymorphic_api_type(invitation.resource_type)
@@ -31,21 +28,7 @@ module Spree
31
28
  Spree::Base.polymorphic_api_type(invitation.invitee_type)
32
29
  end
33
30
 
34
- attribute :resource_id do |invitation|
35
- invitation.resource&.prefixed_id
36
- end
37
-
38
- attribute :inviter_id do |invitation|
39
- invitation.inviter&.prefixed_id
40
- end
41
-
42
- attribute :invitee_id do |invitation|
43
- invitation.invitee&.prefixed_id
44
- end
45
-
46
- attribute :role_id do |invitation|
47
- invitation.role&.prefixed_id
48
- end
31
+ prefixed_id_attributes :resource, :inviter, :invitee, :role
49
32
 
50
33
  attribute :expires_at do |invitation|
51
34
  invitation.expires_at&.iso8601
@@ -2,32 +2,18 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class LineItemSerializer < BaseSerializer
5
- typelize variant_id: :string, quantity: :number, currency: :string,
6
- name: :string, slug: :string, options_text: :string,
7
- price: [:string, nullable: true], display_price: [:string, nullable: true],
8
- total: [:string, nullable: true], display_total: [:string, nullable: true],
9
- adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
10
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
11
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
12
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
13
- pre_tax_amount: [:string, nullable: true], display_pre_tax_amount: [:string, nullable: true],
14
- discounted_amount: [:string, nullable: true], display_discounted_amount: [:string, nullable: true],
15
- compare_at_amount: [:string, nullable: true], display_compare_at_amount: [:string, nullable: true],
16
- thumbnail_url: [:string, nullable: true],
17
- preorder: :boolean, preorder_ships_at: [:string, nullable: true],
18
- seller_id: [:string, nullable: true]
5
+ typelize variant_id: :string, quantity: :number, currency: :string, name: :string, slug: :string,
6
+ options_text: :string, compare_at_amount: [:string, nullable: true],
7
+ thumbnail_url: [:string, nullable: true], preorder: :boolean,
8
+ preorder_ships_at: [:string, nullable: true], seller_id: [:string, nullable: true]
19
9
 
20
- attribute :variant_id do |line_item|
21
- line_item.variant&.prefixed_id
22
- end
10
+ prefixed_id_attributes :variant
23
11
 
24
12
  # Which seller this line was bought from, snapshotted when it was
25
13
  # added — nil is the operator's own first-party item. Always present
26
14
  # so a storefront can group a multi-seller cart without paying for the
27
15
  # expand; `?expand=seller` adds the public profile.
28
- attribute :seller_id do |line_item|
29
- line_item.seller&.prefixed_id
30
- end
16
+ prefixed_id_attributes :seller
31
17
 
32
18
  # True when the line item's variant is currently a pre-order, so the
33
19
  # cart/checkout can flag it as shipping later.
@@ -11,9 +11,7 @@ module Spree
11
11
  viewable_id: :string, position: [:number, nullable: true],
12
12
  alt: [:string, nullable: true]
13
13
 
14
- attribute :viewable_id do |asset|
15
- asset.viewable&.prefixed_id
16
- end
14
+ prefixed_id_attributes :viewable
17
15
 
18
16
  # `"product"` / `"variant"`, not the polymorphic class name.
19
17
  attribute :viewable_type do |asset|
@@ -18,9 +18,7 @@ module Spree
18
18
  large_url: [:string, nullable: true], xlarge_url: [:string, nullable: true],
19
19
  og_image_url: [:string, nullable: true]
20
20
 
21
- attribute :product_id do |asset|
22
- asset.product&.prefixed_id
23
- end
21
+ prefixed_id_attributes :product
24
22
 
25
23
  # Returns prefixed IDs of variants this media is associated with.
26
24
  # Two paths coexist in 5.5:
@@ -0,0 +1,35 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The event shape for `newsletter_subscriber.subscription_requested` and
5
+ # `newsletter_subscriber.unsubscribe_requested`: the tokens a storefront
6
+ # needs to build the confirmation or unsubscribe link itself.
7
+ # `verification_token` is present only on a subscription request.
8
+ class NewsletterSubscriberRequestEventSerializer < BaseSerializer
9
+ typelize email: :string, unsubscribe_token: :string, verification_token: [:string, optional: true],
10
+ store_id: [:string, nullable: true], customer_id: [:string, nullable: true],
11
+ redirect_url: [:string, optional: true]
12
+
13
+ attributes :email
14
+
15
+ attribute :verification_token, if: proc { params[:include_verification_token] }, &:verification_token
16
+
17
+ attribute :unsubscribe_token do |subscriber|
18
+ subscriber.generate_token_for(:unsubscribe)
19
+ end
20
+
21
+ attribute :store_id do
22
+ params[:store]&.prefixed_id
23
+ end
24
+
25
+ attribute :customer_id do |subscriber|
26
+ subscriber.customer&.prefixed_id
27
+ end
28
+
29
+ attribute :redirect_url, if: proc { params[:redirect_url].present? } do
30
+ params[:redirect_url]
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -10,17 +10,13 @@ module Spree
10
10
 
11
11
  attributes :email, created_at: :iso8601, updated_at: :iso8601
12
12
 
13
- attribute :verified do |subscriber|
14
- subscriber.verified?
15
- end
13
+ attribute :verified, &:verified?
16
14
 
17
15
  attribute :verified_at do |subscriber|
18
16
  subscriber.verified_at&.iso8601
19
17
  end
20
18
 
21
- attribute :customer_id do |subscriber|
22
- subscriber.customer&.prefixed_id
23
- end
19
+ prefixed_id_attributes :customer
24
20
  end
25
21
  end
26
22
  end
@@ -6,9 +6,7 @@ module Spree
6
6
  option_type_name: :string, option_type_label: :string,
7
7
  color_code: 'string | null', image_url: 'string | null'
8
8
 
9
- attribute :option_type_id do |option_value|
10
- option_value.option_type&.prefixed_id
11
- end
9
+ prefixed_id_attributes :option_type
12
10
 
13
11
  attributes :name, :label, :position, :color_code
14
12
 
@@ -18,31 +18,10 @@ module Spree
18
18
 
19
19
  attributes :number, :email, :currency
20
20
 
21
- attribute :total do |group|
22
- group.total.to_s
23
- end
24
-
25
- attribute :display_total do |group|
26
- group.display_total.to_s
27
- end
28
-
29
- attribute :item_total do |group|
30
- group.item_total.to_s
31
- end
32
-
33
- attribute :display_item_total do |group|
34
- group.display_item_total.to_s
35
- end
36
-
21
+ attributes total: :string, display_total: :string, item_total: :string, display_item_total: :string
37
22
  # Rolled up across the children rather than stored, so it can never
38
23
  # disagree with the orders it describes.
39
- attribute :fulfillment_status do |group|
40
- group.fulfillment_status
41
- end
42
-
43
- attribute :payment_status do |group|
44
- group.payment_status
45
- end
24
+ attributes :fulfillment_status, :payment_status
46
25
 
47
26
  attribute :completed_at do |group|
48
27
  group.created_at
@@ -4,40 +4,22 @@ module Spree
4
4
  # Store API Order Serializer
5
5
  # Post-purchase order data (completed orders)
6
6
  class OrderSerializer < BaseSerializer
7
- typelize cart_id: [:string, nullable: true],
8
- number: :string, email: :string,
9
- customer_note: [:string, nullable: true],
10
- market_id: [:string, nullable: true], channel_id: [:string, nullable: true],
11
- company_id: [:string, nullable: true], company_name: [:string, nullable: true],
12
- po_number: [:string, nullable: true],
13
- po_document_filename: [:string, nullable: true],
14
- po_document_byte_size: ['number | null'],
7
+ typelize cart_id: [:string, nullable: true], number: :string, email: :string,
8
+ customer_note: [:string, nullable: true], market_id: [:string, nullable: true],
9
+ channel_id: [:string, nullable: true], company_id: [:string, nullable: true],
10
+ company_name: [:string, nullable: true], po_number: [:string, nullable: true],
11
+ po_document_filename: [:string, nullable: true], po_document_byte_size: ['number | null'],
15
12
  currency: :string, locale: [:string, nullable: true], total_quantity: :number,
16
13
  coupon_code: [:string, nullable: true],
17
14
  fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
18
15
  payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
19
- item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
20
- delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
21
- adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
22
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
23
- tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
24
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
25
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
26
- fee_total: [:string, nullable: true], display_fee_total: [:string, nullable: true],
27
16
  store_credit_total: [:string, nullable: true], display_store_credit_total: [:string, nullable: true],
28
- gift_card_total: [:string, nullable: true], display_gift_card_total: [:string, nullable: true],
29
- covered_by_store_credit: :boolean,
30
- total: [:string, nullable: true], display_total: [:string, nullable: true],
31
- amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
32
- completed_at: [:string, nullable: true],
33
- withdrawal_period_ends_at: [:string, nullable: true],
34
- within_withdrawal_period: :boolean,
17
+ covered_by_store_credit: :boolean, completed_at: [:string, nullable: true],
18
+ withdrawal_period_ends_at: [:string, nullable: true], within_withdrawal_period: :boolean,
35
19
  billing_address: { nullable: true }, shipping_address: { nullable: true },
36
20
  gift_card: { nullable: true }, market: { nullable: true }
37
21
 
38
- attribute :market_id do |order|
39
- order.market&.prefixed_id
40
- end
22
+ prefixed_id_attributes :market
41
23
 
42
24
  # The EU cooling-off deadline. Customer-facing by design: a buyer
43
25
  # deciding whether they can still send something back should not have
@@ -46,9 +28,7 @@ module Spree
46
28
  order.withdrawal_period_ends_at&.iso8601
47
29
  end
48
30
 
49
- attribute :within_withdrawal_period do |order|
50
- order.within_withdrawal_period?
51
- end
31
+ attribute :within_withdrawal_period, &:within_withdrawal_period?
52
32
 
53
33
  # The checkout handle this order was born from (nil for admin drafts).
54
34
  # Lets abandonment tooling match cart.* events to the conversion.
@@ -58,14 +38,10 @@ module Spree
58
38
  Spree::Cart.prefixed_id_for(order.cart_id)
59
39
  end
60
40
 
61
- attribute :channel_id do |order|
62
- order.channel&.prefixed_id
63
- end
41
+ prefixed_id_attributes :channel
64
42
 
65
43
  # Which company node the order was placed for — frozen at completion.
66
- attribute :company_id do |order|
67
- order.company&.prefixed_id
68
- end
44
+ prefixed_id_attributes :company
69
45
 
70
46
  attribute :company_name do |order|
71
47
  order.company&.name
@@ -106,9 +82,7 @@ module Spree
106
82
  order.display_total_applied_store_credit.to_s unless params[:hide_prices]
107
83
  end
108
84
 
109
- attribute :covered_by_store_credit do |order|
110
- order.covered_by_store_credit?
111
- end
85
+ attribute :covered_by_store_credit, &:covered_by_store_credit?
112
86
 
113
87
  many :order_promotions, key: :discounts, resource: proc { Spree.api.applied_promotion_serializer }
114
88
  # Itemized charges (duties, surcharges, COD, handling) — see the cart
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The event shape for `customer.password_reset_requested`,
5
+ # `admin_user.password_reset_requested` and
6
+ # `seller_user.password_reset_requested`: what a storefront or back office
7
+ # needs to email the reset link itself. `reset_token` is a live credential,
8
+ # so these events reach only endpoints that name them.
9
+ class PasswordResetRequestedEventSerializer < BaseSerializer
10
+ typelize email: :string, reset_token: :string, store_id: [:string, nullable: true],
11
+ redirect_url: [:string, optional: true]
12
+
13
+ attributes :email
14
+
15
+ attribute :reset_token do
16
+ params[:reset_token]
17
+ end
18
+
19
+ attribute :store_id do
20
+ params[:store]&.prefixed_id
21
+ end
22
+
23
+ attribute :redirect_url, if: proc { params[:redirect_url].present? } do
24
+ params[:redirect_url]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -11,13 +11,9 @@ module Spree
11
11
  payment_method.class.api_type
12
12
  end
13
13
 
14
- attribute :session_required do |payment_method|
15
- payment_method.session_required?
16
- end
14
+ attribute :session_required, &:session_required?
17
15
 
18
- attribute :source_required do |payment_method|
19
- payment_method.source_required?
20
- end
16
+ attribute :source_required, &:source_required?
21
17
  end
22
18
  end
23
19
  end
@@ -2,15 +2,12 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class PaymentSerializer < BaseSerializer
5
- typelize status: [:string, enum: Spree::Payment.statuses, enum_type_name: 'PaymentStatus'], payment_method_id: :string, response_code: [:string, nullable: true],
6
- number: :string, amount: [:string, nullable: true], display_amount: [:string, nullable: true],
5
+ typelize status: [:string, enum: Spree::Payment.statuses, enum_type_name: 'PaymentStatus'],
6
+ payment_method_id: :string, response_code: [:string, nullable: true], number: :string,
7
7
  source_type: [:string, nullable: true, enum: %w[credit_card store_credit payment_source]],
8
- source_id: [:string, nullable: true],
9
- source: 'CreditCard | StoreCredit | PaymentSource | null'
8
+ source_id: [:string, nullable: true], source: 'CreditCard | StoreCredit | PaymentSource | null'
10
9
 
11
- attribute :payment_method_id do |payment|
12
- payment.payment_method&.prefixed_id
13
- end
10
+ prefixed_id_attributes :payment_method
14
11
 
15
12
  attributes :response_code, :number, :status
16
13
 
@@ -31,9 +28,7 @@ module Spree
31
28
  end
32
29
  end
33
30
 
34
- attribute :source_id do |payment|
35
- payment.source&.prefixed_id
36
- end
31
+ prefixed_id_attributes :source
37
32
 
38
33
  attribute :source do |payment|
39
34
  next nil if payment.source.blank?
@@ -16,19 +16,13 @@ module Spree
16
16
  session.amount&.to_s
17
17
  end
18
18
 
19
- attribute :payment_method_id do |session|
20
- session.payment_method&.prefixed_id
21
- end
19
+ prefixed_id_attributes :payment_method
22
20
 
23
21
  # Bridge: reports the owner (cart during checkout, order after
24
22
  # completion) until clients migrate to cart_id/order_id.
25
- attribute :order_id do |session|
26
- session.owner&.prefixed_id
27
- end
23
+ prefixed_id_attributes order_id: :owner
28
24
 
29
- attribute :cart_id do |session|
30
- session.cart&.prefixed_id
31
- end
25
+ prefixed_id_attributes :cart
32
26
 
33
27
  one :payment_method, resource: proc { Spree.api.payment_method_serializer }
34
28
  one :payment, resource: proc { Spree.api.payment_serializer },