spree_api 6.0.0.beta4 → 6.0.0.rc2

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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -48
  3. data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +10 -0
  5. data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +26 -4
  6. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
  7. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +15 -29
  8. data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +10 -2
  10. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +3 -3
  11. data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
  12. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
  13. data/app/controllers/concerns/spree/api/v3/error_handler.rb +55 -4
  14. data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
  15. data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
  16. data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
  17. data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
  18. data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
  19. data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
  20. data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
  21. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +7 -11
  22. data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
  23. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +3 -15
  24. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
  25. data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +1 -4
  26. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +8 -28
  27. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
  28. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
  29. data/app/controllers/concerns/spree/api/v3/purchase_serialization.rb +26 -0
  30. data/app/controllers/concerns/spree/api/v3/request_params.rb +65 -0
  31. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
  32. data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
  33. data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
  34. data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
  35. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +8 -4
  36. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
  37. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -8
  38. data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
  39. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +2 -6
  40. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -9
  41. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +61 -34
  42. data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +4 -1
  43. data/app/controllers/spree/api/v3/admin/categories_controller.rb +40 -20
  44. data/app/controllers/spree/api/v3/admin/channels_controller.rb +39 -10
  45. data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
  46. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +5 -3
  47. data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
  48. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +62 -14
  49. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -4
  50. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
  51. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -5
  52. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +20 -27
  53. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -5
  54. data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -7
  55. data/app/controllers/spree/api/v3/admin/countries_controller.rb +6 -2
  56. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
  57. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +22 -4
  58. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -9
  59. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -5
  60. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -11
  61. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
  62. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -13
  63. data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
  64. data/app/controllers/spree/api/v3/admin/customers_controller.rb +37 -9
  65. data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +8 -0
  66. data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +1 -1
  67. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +16 -8
  68. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +95 -62
  69. data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +8 -1
  70. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +14 -7
  71. data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +21 -5
  72. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +53 -0
  73. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +34 -0
  74. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +37 -0
  75. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +42 -0
  76. data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
  77. data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
  78. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +44 -0
  79. data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
  80. data/app/controllers/spree/api/v3/admin/exports_controller.rb +23 -6
  81. data/app/controllers/spree/api/v3/admin/files_controller.rb +29 -0
  82. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +20 -1
  83. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +19 -1
  84. data/app/controllers/spree/api/v3/admin/imports_controller.rb +37 -11
  85. data/app/controllers/spree/api/v3/admin/integrations_controller.rb +13 -1
  86. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +9 -2
  87. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +8 -8
  88. data/app/controllers/spree/api/v3/admin/locales_controller.rb +1 -1
  89. data/app/controllers/spree/api/v3/admin/markets_controller.rb +30 -9
  90. data/app/controllers/spree/api/v3/admin/me_controller.rb +13 -4
  91. data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
  92. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +9 -5
  93. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +24 -7
  94. data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +5 -1
  95. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +13 -5
  96. data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
  97. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +20 -6
  98. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +6 -2
  99. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +30 -6
  100. data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +36 -1
  101. data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +22 -1
  102. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +83 -22
  103. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +9 -5
  104. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
  105. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +37 -12
  106. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +18 -19
  107. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +7 -5
  108. data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +37 -1
  109. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +6 -3
  110. data/app/controllers/spree/api/v3/admin/orders_controller.rb +76 -62
  111. data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
  112. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +26 -7
  113. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +38 -22
  114. data/app/controllers/spree/api/v3/admin/policies_controller.rb +8 -4
  115. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +32 -67
  116. data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -8
  117. data/app/controllers/spree/api/v3/admin/product_types_controller.rb +25 -8
  118. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +29 -16
  119. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -18
  120. data/app/controllers/spree/api/v3/admin/products_controller.rb +122 -71
  121. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -6
  122. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -5
  123. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
  124. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +55 -8
  125. data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +5 -1
  126. data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +9 -1
  127. data/app/controllers/spree/api/v3/admin/reporting_controller.rb +34 -0
  128. data/app/controllers/spree/api/v3/admin/resource_controller.rb +2 -1
  129. data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +5 -1
  130. data/app/controllers/spree/api/v3/admin/roles_controller.rb +13 -1
  131. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +7 -9
  132. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +17 -10
  133. data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
  134. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
  135. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
  136. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
  137. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +77 -32
  138. data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -23
  139. data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +38 -9
  140. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +41 -9
  141. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +49 -8
  142. data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -48
  143. data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +1 -7
  144. data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +16 -6
  145. data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
  146. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +7 -4
  147. data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +21 -3
  148. data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +4 -0
  149. data/app/controllers/spree/api/v3/admin/translations/batches_controller.rb +17 -9
  150. data/app/controllers/spree/api/v3/admin/translations_controller.rb +4 -0
  151. data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +5 -0
  152. data/app/controllers/spree/api/v3/admin/updates_controller.rb +39 -0
  153. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +40 -13
  154. data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
  155. data/app/controllers/spree/api/v3/base_controller.rb +12 -0
  156. data/app/controllers/spree/api/v3/resource_controller.rb +99 -3
  157. data/app/controllers/spree/api/v3/seller/auth_controller.rb +10 -2
  158. data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
  159. data/app/controllers/spree/api/v3/seller/countries_controller.rb +3 -3
  160. data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
  161. data/app/controllers/spree/api/v3/seller/exports_controller.rb +21 -4
  162. data/app/controllers/spree/api/v3/seller/files_controller.rb +27 -0
  163. data/app/controllers/spree/api/v3/seller/imports_controller.rb +25 -9
  164. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +12 -4
  165. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
  166. data/app/controllers/spree/api/v3/seller/me_controller.rb +15 -4
  167. data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +11 -0
  168. data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +35 -0
  169. data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +12 -0
  170. data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +33 -0
  171. data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +28 -2
  172. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +23 -2
  173. data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +8 -1
  174. data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +32 -0
  175. data/app/controllers/spree/api/v3/seller/orders_controller.rb +35 -14
  176. data/app/controllers/spree/api/v3/seller/package_types_controller.rb +21 -9
  177. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +20 -11
  178. data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
  179. data/app/controllers/spree/api/v3/seller/products_controller.rb +115 -28
  180. data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
  181. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +13 -6
  182. data/app/controllers/spree/api/v3/seller/resource_controller.rb +12 -0
  183. data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +44 -13
  184. data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +10 -1
  185. data/app/controllers/spree/api/v3/seller/team_controller.rb +5 -1
  186. data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
  187. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +9 -2
  188. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +11 -11
  189. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +13 -4
  190. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +23 -7
  191. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +21 -7
  192. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +16 -3
  193. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +26 -28
  194. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +9 -1
  195. data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +5 -1
  196. data/app/controllers/spree/api/v3/store/carts_controller.rb +64 -52
  197. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -8
  198. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
  199. data/app/controllers/spree/api/v3/store/companies/members_controller.rb +4 -0
  200. data/app/controllers/spree/api/v3/store/companies_controller.rb +5 -1
  201. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +10 -2
  202. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -11
  203. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
  204. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -5
  205. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
  206. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
  207. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
  208. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +25 -6
  209. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -9
  210. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
  211. data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +5 -1
  212. data/app/controllers/spree/api/v3/store/customers_controller.rb +28 -2
  213. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
  214. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
  215. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +27 -14
  216. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +12 -7
  217. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +11 -6
  218. data/app/controllers/spree/api/v3/store/orders_controller.rb +47 -10
  219. data/app/controllers/spree/api/v3/store/products_controller.rb +8 -0
  220. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +10 -8
  221. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +12 -4
  222. data/app/request_schemas/spree/api/v3/address_request_schema.rb +27 -0
  223. data/app/request_schemas/spree/api/v3/admin/address_request_schema.rb +13 -0
  224. data/app/request_schemas/spree/api/v3/admin/bulk_tags_request_schema.rb +17 -0
  225. data/app/request_schemas/spree/api/v3/admin/catalog_order_minimum_request_schema.rb +17 -0
  226. data/app/request_schemas/spree/api/v3/admin/email_template_language_request_schema.rb +17 -0
  227. data/app/request_schemas/spree/api/v3/admin/email_template_preview_request_schema.rb +32 -0
  228. data/app/request_schemas/spree/api/v3/admin/price_adjustment_tier_request_schema.rb +21 -0
  229. data/app/request_schemas/spree/api/v3/admin/price_list_price_request_schema.rb +21 -0
  230. data/app/request_schemas/spree/api/v3/admin/price_list_rule_request_schema.rb +19 -0
  231. data/app/request_schemas/spree/api/v3/admin/product_membership_reposition_request_schema.rb +17 -0
  232. data/app/request_schemas/spree/api/v3/admin/promotion_action_calculator_request_schema.rb +18 -0
  233. data/app/request_schemas/spree/api/v3/admin/promotion_action_line_item_request_schema.rb +15 -0
  234. data/app/request_schemas/spree/api/v3/admin/promotion_action_request_schema.rb +19 -0
  235. data/app/request_schemas/spree/api/v3/admin/promotion_rule_request_schema.rb +22 -0
  236. data/app/request_schemas/spree/api/v3/admin/reason_request_schema.rb +14 -0
  237. data/app/request_schemas/spree/api/v3/admin/tax_identifier_request_schema.rb +15 -0
  238. data/app/request_schemas/spree/api/v3/custom_field_value_request_schema.rb +15 -0
  239. data/app/request_schemas/spree/api/v3/file_upload_request_schema.rb +20 -0
  240. data/app/request_schemas/spree/api/v3/media_request_schema.rb +27 -0
  241. data/app/request_schemas/spree/api/v3/price_request_schema.rb +17 -0
  242. data/app/request_schemas/spree/api/v3/stock_level_request_schema.rb +18 -0
  243. data/app/request_schemas/spree/api/v3/store/address_request_schema.rb +29 -0
  244. data/app/request_schemas/spree/api/v3/tax_identifier_request_schema.rb +18 -0
  245. data/app/request_schemas/spree/api/v3/variant_option_request_schema.rb +13 -0
  246. data/app/request_schemas/spree/api/v3/variant_request_schema.rb +52 -0
  247. data/app/serializers/concerns/spree/api/v3/purchase_summary.rb +48 -0
  248. data/app/serializers/spree/api/v3/address_serializer.rb +4 -2
  249. data/app/serializers/spree/api/v3/admin/address_serializer.rb +8 -7
  250. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
  251. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +3 -1
  252. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +3 -1
  253. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
  254. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -8
  255. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +3 -4
  256. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +4 -3
  257. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
  258. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
  259. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +7 -10
  260. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
  261. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
  262. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +5 -0
  263. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +7 -18
  264. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +7 -11
  265. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -5
  266. data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
  267. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
  268. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
  269. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
  270. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +5 -17
  271. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
  272. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +0 -2
  273. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +20 -30
  274. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
  275. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
  276. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
  277. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
  278. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
  279. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
  280. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
  281. data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
  282. data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
  283. data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
  284. data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
  285. data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
  286. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
  287. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +6 -3
  288. data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
  289. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +3 -1
  290. data/app/serializers/spree/api/v3/admin/file_upload_serializer.rb +11 -0
  291. data/app/serializers/spree/api/v3/admin/file_upload_target_serializer.rb +10 -0
  292. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
  293. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -17
  294. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +4 -10
  295. data/app/serializers/spree/api/v3/admin/import_serializer.rb +2 -2
  296. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +1 -3
  297. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +14 -18
  298. data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
  299. data/app/serializers/spree/api/v3/admin/market_serializer.rb +7 -2
  300. data/app/serializers/spree/api/v3/admin/media_serializer.rb +4 -5
  301. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
  302. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +5 -9
  303. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  304. data/app/serializers/spree/api/v3/admin/order_serializer.rb +38 -48
  305. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
  306. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -4
  307. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -8
  308. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
  309. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
  310. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +3 -6
  311. data/app/serializers/spree/api/v3/admin/price_history_serializer.rb +5 -2
  312. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +1 -5
  313. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -6
  314. data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
  315. data/app/serializers/spree/api/v3/admin/product_serializer.rb +4 -10
  316. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
  317. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
  318. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +5 -9
  319. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -5
  320. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +6 -25
  321. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -17
  322. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
  323. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -0
  324. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +9 -2
  325. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +9 -0
  326. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
  327. data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -12
  328. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
  329. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
  330. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +7 -7
  331. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
  332. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
  333. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +8 -16
  334. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +11 -10
  335. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +8 -21
  336. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
  337. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +4 -3
  338. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +3 -9
  339. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
  340. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
  341. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
  342. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
  343. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +6 -3
  344. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -20
  345. data/app/serializers/spree/api/v3/admin/store_serializer.rb +21 -84
  346. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +2 -4
  347. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +6 -10
  348. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
  349. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +9 -3
  350. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +3 -19
  351. data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
  352. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +13 -10
  353. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
  354. data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
  355. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
  356. data/app/serializers/spree/api/v3/base_serializer.rb +132 -7
  357. data/app/serializers/spree/api/v3/cart_serializer.rb +20 -66
  358. data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
  359. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +6 -29
  360. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -16
  361. data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
  362. data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
  363. data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
  364. data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
  365. data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
  366. data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
  367. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -32
  368. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
  369. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
  370. data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
  371. data/app/serializers/spree/api/v3/discount_serializer.rb +4 -12
  372. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +6 -30
  373. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -16
  374. data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
  375. data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
  376. data/app/serializers/spree/api/v3/file_upload_serializer.rb +28 -0
  377. data/app/serializers/spree/api/v3/file_upload_target_serializer.rb +17 -0
  378. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
  379. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +3 -7
  380. data/app/serializers/spree/api/v3/gift_card_serializer.rb +7 -17
  381. data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
  382. data/app/serializers/spree/api/v3/import_serializer.rb +3 -26
  383. data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
  384. data/app/serializers/spree/api/v3/line_item_serializer.rb +19 -23
  385. data/app/serializers/spree/api/v3/locale_serializer.rb +3 -1
  386. data/app/serializers/spree/api/v3/market_serializer.rb +5 -5
  387. data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
  388. data/app/serializers/spree/api/v3/media_serializer.rb +8 -5
  389. data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
  390. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
  391. data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
  392. data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -25
  393. data/app/serializers/spree/api/v3/order_serializer.rb +14 -58
  394. data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
  395. data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
  396. data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
  397. data/app/serializers/spree/api/v3/payment_session_serializer.rb +5 -13
  398. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
  399. data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
  400. data/app/serializers/spree/api/v3/price_history_serializer.rb +6 -8
  401. data/app/serializers/spree/api/v3/price_serializer.rb +7 -12
  402. data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
  403. data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
  404. data/app/serializers/spree/api/v3/product_serializer.rb +10 -24
  405. data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
  406. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
  407. data/app/serializers/spree/api/v3/refund_serializer.rb +11 -16
  408. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +6 -21
  409. data/app/serializers/spree/api/v3/return_serializer.rb +4 -16
  410. data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
  411. data/app/serializers/spree/api/v3/seller/address_serializer.rb +12 -0
  412. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +15 -10
  413. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +7 -0
  414. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +5 -0
  415. data/app/serializers/spree/api/v3/seller/country_serializer.rb +19 -0
  416. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +1 -3
  417. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +5 -15
  418. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +8 -13
  419. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
  420. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
  421. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
  422. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +6 -3
  423. data/app/serializers/spree/api/v3/seller/file_upload_serializer.rb +11 -0
  424. data/app/serializers/spree/api/v3/seller/file_upload_target_serializer.rb +10 -0
  425. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
  426. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
  427. data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
  428. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
  429. data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
  430. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +8 -13
  431. data/app/serializers/spree/api/v3/seller/order_serializer.rb +19 -40
  432. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
  433. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +6 -6
  434. data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +11 -0
  435. data/app/serializers/spree/api/v3/seller/price_serializer.rb +11 -0
  436. data/app/serializers/spree/api/v3/seller/product_serializer.rb +3 -7
  437. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
  438. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +9 -13
  439. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
  440. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +8 -0
  441. data/app/serializers/spree/api/v3/seller/return_serializer.rb +8 -17
  442. data/app/serializers/spree/api/v3/seller/state_serializer.rb +10 -0
  443. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +3 -0
  444. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +10 -9
  445. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
  446. data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
  447. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
  448. data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
  449. data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
  450. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
  451. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
  452. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
  453. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -13
  454. data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -27
  455. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
  456. data/app/serializers/spree/api/v3/tax_line_serializer.rb +11 -23
  457. data/app/serializers/spree/api/v3/variant_serializer.rb +10 -24
  458. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
  459. data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
  460. data/app/services/spree/api/v3/filter_predicates.rb +29 -0
  461. data/app/services/spree/api/v3/filter_table.rb +337 -0
  462. data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
  463. data/app/services/spree/api/v3/request_schema.rb +430 -0
  464. data/app/services/spree/webhooks/deliver_webhook.rb +7 -3
  465. data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
  466. data/config/initializers/pagy.rb +1 -1
  467. data/config/initializers/typelizer.rb +7 -9
  468. data/config/locales/ar.yml +15 -0
  469. data/config/locales/be.yml +15 -0
  470. data/config/locales/bg.yml +15 -0
  471. data/config/locales/ca.yml +15 -0
  472. data/config/locales/cs.yml +15 -0
  473. data/config/locales/da.yml +15 -0
  474. data/config/locales/de-CH.yml +11 -0
  475. data/config/locales/de.yml +15 -0
  476. data/config/locales/el.yml +15 -0
  477. data/config/locales/en.yml +5 -40
  478. data/config/locales/es-CL.yml +10 -0
  479. data/config/locales/es-EC.yml +11 -0
  480. data/config/locales/es-MX.yml +12 -0
  481. data/config/locales/es.yml +15 -0
  482. data/config/locales/et.yml +15 -0
  483. data/config/locales/fa.yml +15 -0
  484. data/config/locales/fi.yml +15 -0
  485. data/config/locales/fr.yml +15 -0
  486. data/config/locales/hu.yml +15 -0
  487. data/config/locales/id.yml +15 -0
  488. data/config/locales/it.yml +15 -0
  489. data/config/locales/ja.yml +15 -0
  490. data/config/locales/km.yml +15 -0
  491. data/config/locales/ko.yml +15 -0
  492. data/config/locales/ku.yml +15 -0
  493. data/config/locales/lt.yml +15 -0
  494. data/config/locales/lv.yml +15 -0
  495. data/config/locales/nb.yml +15 -0
  496. data/config/locales/ne.yml +15 -0
  497. data/config/locales/nl.yml +15 -0
  498. data/config/locales/pl.yml +15 -0
  499. data/config/locales/pt-BR.yml +13 -0
  500. data/config/locales/pt.yml +15 -0
  501. data/config/locales/ro.yml +15 -0
  502. data/config/locales/ru.yml +15 -0
  503. data/config/locales/sk.yml +15 -0
  504. data/config/locales/sl-SI.yml +15 -0
  505. data/config/locales/sv.yml +15 -0
  506. data/config/locales/th.yml +15 -0
  507. data/config/locales/tr.yml +15 -0
  508. data/config/locales/uk.yml +15 -0
  509. data/config/locales/vi.yml +15 -0
  510. data/config/locales/zh-CN.yml +15 -0
  511. data/config/locales/zh-TW.yml +15 -0
  512. data/config/routes.rb +54 -102
  513. data/lib/spree/api/configuration.rb +5 -0
  514. data/lib/spree/api/dependencies.rb +54 -274
  515. data/lib/spree/api/middleware/request_size_limit.rb +24 -3
  516. data/lib/spree/api/openapi/filter_documentation.rb +136 -0
  517. data/lib/spree/api/openapi/schema_helper.rb +127 -81
  518. data/lib/spree/api/preference_families.rb +46 -0
  519. data/lib/spree/api/preference_types.rb +138 -0
  520. data/lib/spree/api/typelizer_generation.rb +39 -0
  521. data/lib/spree/api/webhook_event_types.rb +140 -0
  522. data/lib/spree/api.rb +0 -2
  523. data/lib/tasks/filters.rake +12 -0
  524. data/lib/typelizer/open_enums.rb +10 -0
  525. metadata +125 -40
  526. data/app/controllers/concerns/spree/api/v3/address_params.rb +0 -17
  527. data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +0 -35
  528. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +0 -54
  529. data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +0 -21
  530. data/config/i18n-tasks.yml +0 -40
  531. data/config/initializers/alba.rb +0 -5
@@ -21,34 +21,13 @@ module Spree
21
21
  # the one contact detail that lets a marketplace's customer be taken
22
22
  # off it, and it is not needed to pack, post or invoice.
23
23
  class OrderSerializer < V3::BaseSerializer
24
- typelize number: :string,
25
- customer_note: [:string, nullable: true],
26
- currency: :string,
24
+ typelize number: :string, customer_note: [:string, nullable: true], currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
27
25
  total_quantity: :number,
28
26
  fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
29
27
  payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
30
- status: [:string, enum: Spree::Order::STATUSES],
31
- item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
32
- delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
33
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
34
- adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
35
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
36
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
37
- tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
38
- total: [:string, nullable: true], display_total: [:string, nullable: true],
39
- payment_total: [:string, nullable: true], display_payment_total: [:string, nullable: true],
40
- amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
41
- commission_amount_total: [:string, nullable: true],
42
- display_commission_amount_total: [:string, nullable: true],
43
- commission_tax_total: [:string, nullable: true],
44
- display_commission_tax_total: [:string, nullable: true],
45
- commission_total: [:string, nullable: true],
46
- display_commission_total: [:string, nullable: true],
47
- canceled_at: [:string, nullable: true],
48
- cancel_reason_name: [:string, nullable: true],
49
- cancel_note: [:string, nullable: true],
50
- internal_note: [:string, nullable: true],
51
- internal_note_html: [:string, nullable: true]
28
+ status: [:string, enum: Spree::Order::STATUSES], canceled_at: [:string, nullable: true],
29
+ cancel_reason_name: [:string, nullable: true], cancel_note: [:string, nullable: true],
30
+ internal_note: [:string, nullable: true], internal_note_html: [:string, nullable: true]
52
31
 
53
32
  attributes :number, :customer_note, :currency, :total_quantity,
54
33
  :status, :fulfillment_status, :payment_status,
@@ -68,16 +47,16 @@ module Spree
68
47
  # What this seller is owed for the goods, and what the buyer paid for
69
48
  # them. Deliberately not the whole money surface: gift cards, store
70
49
  # credit and the payment breakdown belong to the marketplace.
71
- money_attributes :item_total, :display_item_total,
72
- :delivery_total, :display_delivery_total,
73
- :discount_total, :display_discount_total,
74
- :adjustment_total, :display_adjustment_total,
75
- :included_tax_total, :display_included_tax_total,
76
- :additional_tax_total, :display_additional_tax_total,
77
- :tax_total, :display_tax_total,
78
- :total, :display_total,
79
- :payment_total, :display_payment_total,
80
- :amount_due, :display_amount_due
50
+ money_attributes :item_total,
51
+ :delivery_total,
52
+ :discount_total,
53
+ :adjustment_total,
54
+ :included_tax_total,
55
+ :additional_tax_total,
56
+ :tax_total,
57
+ :total,
58
+ :payment_total,
59
+ :amount_due
81
60
 
82
61
  # What the marketplace charged the seller on this sale, and the tax
83
62
  # on that charge. The ledger remains where a seller sees what they
@@ -85,9 +64,9 @@ module Spree
85
64
  # commission is a B2B supply from the platform, so this is the
86
65
  # seller's input tax to reclaim, and it has to be attributable to
87
66
  # the sale that produced it.
88
- money_attributes :commission_amount_total, :display_commission_amount_total,
89
- :commission_tax_total, :display_commission_tax_total,
90
- :commission_total, :display_commission_total
67
+ money_attributes :commission_amount_total,
68
+ :commission_tax_total,
69
+ :commission_total
91
70
 
92
71
  # Why the sale was called off, when it was. The reason is the
93
72
  # marketplace's vocabulary, so it is rendered as a name rather than
@@ -110,8 +89,8 @@ module Spree
110
89
  many :payment_splits, resource: proc { Spree.api.seller_payment_split_serializer },
111
90
  if: proc { expand?('payment_splits') }
112
91
  many :fulfillments, resource: proc { Spree.api.seller_fulfillment_serializer }
113
- one :shipping_address, resource: proc { Spree.api.address_serializer }
114
- one :billing_address, resource: proc { Spree.api.address_serializer }
92
+ one :shipping_address, resource: proc { Spree.api.seller_address_serializer }
93
+ one :billing_address, resource: proc { Spree.api.seller_address_serializer }
115
94
  end
116
95
  end
117
96
  end
@@ -13,19 +13,18 @@ module Spree
13
13
  AMOUNTS = %i[authorized_amount captured_amount refunded_amount claimed_amount
14
14
  net_captured_amount refundable_amount].freeze
15
15
 
16
- typelize currency: :string,
17
- authorized_amount: :string, display_authorized_amount: :string,
18
- captured_amount: :string, display_captured_amount: :string,
19
- refunded_amount: :string, display_refunded_amount: :string,
20
- claimed_amount: :string, display_claimed_amount: :string,
21
- net_captured_amount: :string, display_net_captured_amount: :string,
22
- refundable_amount: :string, display_refundable_amount: :string
16
+ typelize currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
17
+ authorized_amount: :string,
18
+ captured_amount: :string,
19
+ refunded_amount: :string,
20
+ claimed_amount: :string,
21
+ net_captured_amount: :string,
22
+ refundable_amount: :string
23
23
 
24
24
  attributes :currency, created_at: :iso8601
25
25
 
26
26
  AMOUNTS.each do |amount|
27
- attribute(amount) { |split| split.public_send(amount).to_s }
28
- attribute(:"display_#{amount}") { |split| split.public_send(:"display_#{amount}").to_s }
27
+ attribute(amount) { |split| Spree::Money::Rounding.format(split.public_send(amount), split.currency) }
29
28
  end
30
29
  end
31
30
  end
@@ -5,21 +5,19 @@ module Spree
5
5
  # One settlement to this seller, as the seller reads it.
6
6
  class PayoutSerializer < V3::BaseSerializer
7
7
  typelize status: :string,
8
- currency: :string,
9
- provider: :string,
8
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
9
+ provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
10
10
  amount: :string,
11
- display_amount: :string,
12
11
  reference: 'string | null',
13
12
  period_start: 'string | null',
14
13
  period_end: 'string | null',
15
14
  transfers_count: :number
16
15
 
17
- attributes :status, :currency, :provider, :reference,
16
+ attributes :status, :currency, :reference,
18
17
  period_start: :iso8601, period_end: :iso8601,
19
18
  created_at: :iso8601, updated_at: :iso8601
20
19
 
21
- attribute(:amount) { |payout| payout.amount&.to_s }
22
- attribute(:display_amount) { |payout| payout.display_amount.to_s }
20
+ attribute(:amount) { |payout| Spree::Money::Rounding.format(payout.amount, payout.currency) }
23
21
 
24
22
  # How many earnings this settlement covers. Read from a count the
25
23
  # controller made for the whole page when there is one; a single
@@ -29,6 +27,8 @@ module Spree
29
27
 
30
28
  counts ? counts.fetch(payout.id, 0) : payout.transfers.count
31
29
  end
30
+
31
+ api_type_attributes :provider
32
32
  end
33
33
  end
34
34
  end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Seller
5
+ class PriceHistorySerializer < V3::PriceHistorySerializer
6
+ without_formatted_money(:seller)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Seller
5
+ class PriceSerializer < V3::PriceSerializer
6
+ without_formatted_money(:seller)
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -13,6 +13,8 @@ module Spree
13
13
  # both from the marketplace's list
14
14
  # (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
15
15
  class ProductSerializer < V3::ProductSerializer
16
+ without_formatted_money(:seller)
17
+
16
18
  typelize status: [:string, enum: Spree::Product.statuses, enum_type_name: 'ProductStatus'], metadata: 'Record<string, unknown>',
17
19
  product_type_id: [:string, nullable: true],
18
20
  delivery_profile_id: [:string, nullable: true],
@@ -20,13 +22,7 @@ module Spree
20
22
 
21
23
  attributes :status, :metadata, created_at: :iso8601, updated_at: :iso8601
22
24
 
23
- attribute :product_type_id do |product|
24
- product.product_type&.prefixed_id
25
- end
26
-
27
- attribute :delivery_profile_id do |product|
28
- product.delivery_profile&.prefixed_id
29
- end
25
+ prefixed_id_attributes :product_type, :delivery_profile
30
26
 
31
27
  many :variants,
32
28
  resource: proc { Spree.api.seller_variant_serializer },
@@ -2,27 +2,7 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  module Seller
5
- # The marketplace's answer on a listing, as the seller sees it.
6
- #
7
- # The reviewer's identity is deliberately absent: a seller needs to
8
- # know what to change, not which member of the marketplace's staff
9
- # decided (docs/plans/6.0-seller-product-submission.md).
10
- class ProductSubmissionSerializer < BaseSerializer
11
- typelize status: [:string, enum: Spree::ProductSubmission.statuses, enum_type_name: 'ProductSubmissionStatus'],
12
- product_id: :string,
13
- review_note: [:string, nullable: true],
14
- reviewed_at: [:string, nullable: true]
15
-
16
- attributes :status, :review_note,
17
- reviewed_at: :iso8601,
18
- created_at: :iso8601
19
-
20
- # Carried for the event payload, which is this serializer's other
21
- # job: a subscriber holding only the submission id would have to
22
- # fetch the row back to learn which product was decided on.
23
- attribute :product_id do |submission|
24
- submission.product&.prefixed_id
25
- end
5
+ class ProductSubmissionSerializer < V3::ProductSubmissionSerializer
26
6
  end
27
7
  end
28
8
  end
@@ -15,11 +15,11 @@ module Spree
15
15
  terms_accepted_at: [:string, nullable: true],
16
16
  on_holiday: :boolean, sellable: :boolean,
17
17
  products_count: :number,
18
- default_currency: :string,
19
- supported_currencies: [:string, multi: true],
20
- preferred_timezone: [:string, nullable: true]
18
+ default_currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
19
+ supported_currencies: [:string, multi: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
20
+ timezone: [:string, nullable: true]
21
21
 
22
- attributes :preferred_timezone,
22
+ attributes :timezone,
23
23
  :status, :legal_name, :registration_number,
24
24
  :contact_email, :billing_email,
25
25
  :tax_remittance, :payouts_schedule_interval,
@@ -28,7 +28,7 @@ module Spree
28
28
  created_at: :iso8601
29
29
 
30
30
  attribute :minimum_payout_amount do |seller|
31
- seller.minimum_payout_amount&.to_s
31
+ Spree::Money::Rounding.format(seller.minimum_payout_amount, seller.store&.default_currency, unit_price: true)
32
32
  end
33
33
 
34
34
  # Rebound from the inherited store declaration to this branch's own
@@ -40,13 +40,9 @@ module Spree
40
40
  resource: proc { Spree.api.seller_policy_serializer },
41
41
  if: proc { expand?('policies') }
42
42
 
43
- attribute :on_holiday do |seller|
44
- seller.on_holiday?
45
- end
43
+ attribute :on_holiday, &:on_holiday?
46
44
 
47
- attribute :sellable do |seller|
48
- seller.sellable?
49
- end
45
+ attribute :sellable, &:sellable?
50
46
 
51
47
  # What this seller prices in. Theirs by way of the marketplace: a
52
48
  # seller has no currency of their own, so the store's is the answer
@@ -64,11 +60,11 @@ module Spree
64
60
  end
65
61
 
66
62
  one :billing_address,
67
- resource: proc { Spree.api.address_serializer },
63
+ resource: proc { Spree.api.seller_address_serializer },
68
64
  if: proc { |seller| seller.billing_address.present? }
69
65
 
70
66
  one :returns_address,
71
- resource: proc { Spree.api.address_serializer },
67
+ resource: proc { Spree.api.seller_address_serializer },
72
68
  if: proc { |seller| seller.returns_address.present? }
73
69
  end
74
70
  end
@@ -18,9 +18,7 @@ module Spree
18
18
 
19
19
  attributes :id, :kind, :name, :description, :required, :position, :status, :action_url, :blocker
20
20
 
21
- attribute :blocking do |status|
22
- status.blocking?
23
- end
21
+ attribute :blocking, &:blocking?
24
22
 
25
23
  attribute :accepts_submissions do |status|
26
24
  status.requirement.class.accepts_submissions?
@@ -36,15 +34,11 @@ module Spree
36
34
 
37
35
  # The document this line asks for, so the panel can offer to create
38
36
  # exactly that policy. Null for every other kind.
39
- attribute :required_policy_name do |status|
40
- status.required_policy_name
41
- end
37
+ attributes :required_policy_name
42
38
 
43
39
  # The marketplace terms this line asks the seller to accept. Null
44
40
  # for every other kind, and null while nothing has been written.
45
- attribute :terms_html do |status|
46
- status.terms_html
47
- end
41
+ attributes :terms_html
48
42
 
49
43
  one :submission,
50
44
  resource: proc { Spree.api.seller_requirement_submission_serializer },
@@ -10,6 +10,14 @@ module Spree
10
10
  # its option values but no product name, so a card built from the
11
11
  # variant alone would show a bare id for anything unSKU'd.
12
12
  class ReturnLineItemSerializer < V3::ReturnLineItemSerializer
13
+ without_formatted_money(:seller)
14
+
15
+ # No guest price gating here, so the inherited money fields are always present.
16
+ typelize pre_tax_amount: [:string, nullable: false],
17
+ included_tax_total: [:string, nullable: false], additional_tax_total: [:string, nullable: false],
18
+ tax_total: [:string, nullable: false],
19
+ refund_amount: [:string, nullable: false]
20
+
13
21
  typelize name: [:string, nullable: true]
14
22
 
15
23
  attribute :name do |line|
@@ -13,31 +13,22 @@ module Spree
13
13
  # What it adds over the shared one is the pair of figures a seller
14
14
  # needs to settle: what has already gone back, and what may still.
15
15
  class ReturnSerializer < V3::ReturnSerializer
16
+ without_formatted_money(:seller)
17
+
16
18
  typelize memo: [:string, nullable: true],
17
19
  stock_location_id: [:string, nullable: true],
18
- refunded_total: :string,
19
- refundable_total: :string,
20
- display_refunded_total: :string
20
+ refund_total: [:string, nullable: false],
21
+ refund_tax_total: [:string, nullable: false]
21
22
 
22
23
  attributes :memo
23
24
 
24
- attribute :stock_location_id do |return_record|
25
- return_record.stock_location&.prefixed_id
26
- end
27
-
28
- attribute :refunded_total do |return_record|
29
- return_record.refunded_total.to_s
30
- end
25
+ prefixed_id_attributes :stock_location
31
26
 
27
+ money_attributes :refunded_total
32
28
  # What the refund dialog opens on — never more than this may be
33
29
  # given back, whatever amount is typed.
34
- attribute :refundable_total do |return_record|
35
- return_record.refundable_total.to_s
36
- end
37
-
38
- attribute :display_refunded_total do |return_record|
39
- return_record.display_refunded_total.to_s
40
- end
30
+ money_attributes :refundable_total
31
+ typelize refunded_total: [:string, nullable: false], refundable_total: [:string, nullable: false]
41
32
 
42
33
  many :return_line_items,
43
34
  resource: proc { Spree.api.seller_return_line_item_serializer },
@@ -0,0 +1,10 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Seller
5
+ class StateSerializer < V3::StateSerializer
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
@@ -3,6 +3,9 @@ module Spree
3
3
  module V3
4
4
  module Seller
5
5
  class StockLocationSerializer < V3::StockLocationSerializer
6
+ # The Store API keeps these deprecated names until 6.1.
7
+ %i[country_iso state_abbr].each { |key| _attributes.delete(key) }
8
+
6
9
  typelize address2: [:string, nullable: true], state_name: [:string, nullable: true],
7
10
  phone: [:string, nullable: true], company: [:string, nullable: true],
8
11
  active: :boolean, default: :boolean, kind: [:string, enum: Spree::StockLocation::KINDS, enum_type_name: 'StockLocationKind'],
@@ -11,29 +11,28 @@ module Spree
11
11
  class TransferSerializer < V3::BaseSerializer
12
12
  typelize kind: :string,
13
13
  status: :string,
14
- currency: :string,
15
- provider: :string,
14
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
15
+ provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
16
16
  amount: :string,
17
17
  settled_amount: 'string | null',
18
- settled_currency: 'string | null',
18
+ settled_currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
19
19
  converted: :boolean,
20
- display_amount: :string,
21
20
  reference: 'string | null',
22
21
  order_id: 'string | null',
23
22
  order_number: 'string | null',
24
23
  payout_id: 'string | null',
25
24
  reversed_from_id: 'string | null'
26
25
 
27
- attributes :kind, :status, :currency, :provider, :reference,
26
+ attributes :kind, :status, :currency, :reference,
28
27
  created_at: :iso8601, updated_at: :iso8601
29
28
 
30
- # A string, so the figure a seller is paid round-trips exactly.
31
- attribute(:amount) { |transfer| transfer.amount&.to_s }
32
- attribute(:display_amount) { |transfer| transfer.display_amount.to_s }
29
+ attribute(:amount) { |transfer| Spree::Money::Rounding.format(transfer.amount, transfer.currency) }
33
30
 
34
31
  # What this seller's account received, when the provider converted
35
32
  # on the way in. Null when it settled in the currency of the sale.
36
- attribute(:settled_amount) { |transfer| transfer.settled_amount&.to_s }
33
+ attribute(:settled_amount) do |transfer|
34
+ Spree::Money::Rounding.format(transfer.settled_amount, transfer.settled_currency || transfer.currency)
35
+ end
37
36
  attribute(:settled_currency) { |transfer| transfer.settled_currency }
38
37
  attribute(:converted) { |transfer| transfer.converted? }
39
38
 
@@ -42,6 +41,8 @@ module Spree
42
41
  end
43
42
 
44
43
  attribute(:order_number) { |transfer| transfer.order&.number }
44
+
45
+ api_type_attributes :provider
45
46
  end
46
47
  end
47
48
  end
@@ -10,9 +10,11 @@ module Spree
10
10
  # those are marketplace configuration and the seller cannot write them,
11
11
  # so showing them would invite an edit that silently does nothing.
12
12
  class VariantSerializer < V3::VariantSerializer
13
+ without_formatted_money(:seller)
14
+
13
15
  typelize position: :number,
14
16
  cost_price: [:string, nullable: true],
15
- cost_currency: [:string, nullable: true],
17
+ cost_currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
16
18
  barcode: [:string, nullable: true],
17
19
  available_stock: [:number, nullable: true],
18
20
  total_on_hand: [:number, nullable: true],
@@ -20,18 +22,20 @@ module Spree
20
22
  preorder_ships_at: [:string, nullable: true],
21
23
  backorder_limit: [:number, nullable: true],
22
24
  hs_code: [:string, nullable: true],
23
- country_of_origin: [:string, nullable: true],
25
+ country_of_origin: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
24
26
  customs_description: [:string, nullable: true],
25
27
  minimum_order_quantity: ['number | null'], order_multiple: ['number | null'],
26
28
  purchase_unit: [:string, nullable: true, enum: Spree::Variant::PURCHASE_UNITS],
27
29
  metadata: 'Record<string, unknown>'
28
30
 
29
- attributes :metadata, :position, :cost_price, :cost_currency,
31
+ attributes :metadata, :position, :cost_currency,
30
32
  :barcode, :backorder_limit,
31
33
  :hs_code, :country_of_origin, :customs_description,
32
34
  preorder_ships_at: :iso8601,
33
35
  created_at: :iso8601, updated_at: :iso8601
34
36
 
37
+ money_attributes :cost_price, currency: :cost_currency, unit_price: true
38
+
35
39
  # The variant's own stored rules, not a buyer's resolved ones — a
36
40
  # seller edits the row.
37
41
  attribute :minimum_order_quantity, &:minimum_order_quantity
@@ -58,7 +62,7 @@ module Spree
58
62
  if: proc { expand?('media') }
59
63
 
60
64
  many :prices,
61
- resource: proc { Spree.api.price_serializer },
65
+ resource: proc { Spree.api.seller_price_serializer },
62
66
  if: proc { expand?('prices') }
63
67
 
64
68
  many :stock_levels,
@@ -21,9 +21,7 @@ module Spree
21
21
  Spree::RichTextHelper.to_plain_text(seller.about)
22
22
  end
23
23
 
24
- attribute :about_html do |seller|
25
- seller.about_html
26
- end
24
+ attributes :about_html
27
25
 
28
26
  attribute :logo_url do |seller|
29
27
  image_url_for(seller.logo)
@@ -1,10 +1,28 @@
1
1
  module Spree
2
2
  module Api
3
3
  module V3
4
- # Payload of the shipping_label.* events. Labels have no storefront
5
- # serializer — a customer never sees one — so the event shape is
6
- # declared here rather than found by convention.
7
- class ShippingLabelEventSerializer < Admin::ShippingLabelSerializer
4
+ # Payload of the shipping_label.* events: the tracking a customer is
5
+ # also shown. What the carrier charged, the provider's ids and the file
6
+ # stay behind the Admin API.
7
+ class ShippingLabelEventSerializer < BaseSerializer
8
+ typelize owner_id: :string,
9
+ owner_type: [:string, enum: %w[fulfillment return]],
10
+ status: [:string, enum: Spree::ShippingLabel.statuses, enum_type_name: 'ShippingLabelStatus'],
11
+ carrier: [:string, nullable: true],
12
+ service: [:string, nullable: true],
13
+ tracking_number: [:string, nullable: true],
14
+ refunded_at: [:string, nullable: true]
15
+
16
+ attributes :status, :carrier, :service, :tracking_number,
17
+ refunded_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
18
+
19
+ attribute :owner_id do |shipping_label|
20
+ shipping_label.owner&.prefixed_id
21
+ end
22
+
23
+ attribute :owner_type do |shipping_label|
24
+ Spree::Base.polymorphic_api_type(shipping_label.owner_type)
25
+ end
8
26
  end
9
27
  end
10
28
  end
@@ -9,13 +9,7 @@ module Spree
9
9
 
10
10
  attributes :count_on_hand, :backorderable
11
11
 
12
- attribute :stock_location_id do |stock_level|
13
- stock_level.stock_location&.prefixed_id
14
- end
15
-
16
- attribute :variant_id do |stock_level|
17
- stock_level.variant&.prefixed_id
18
- end
12
+ prefixed_id_attributes :stock_location, :variant
19
13
  end
20
14
  end
21
15
  end
@@ -3,14 +3,21 @@ module Spree
3
3
  module V3
4
4
  class StockLocationSerializer < BaseSerializer
5
5
  typelize name: :string, address1: [:string, nullable: true], city: [:string, nullable: true],
6
- zipcode: [:string, nullable: true], country_code: [:string, nullable: true],
6
+ zipcode: [:string, nullable: true], country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
7
7
  country_name: [:string, nullable: true], state_code: [:string, nullable: true],
8
8
  state_text: [:string, nullable: true],
9
+ country_iso: [:string, nullable: true, deprecated: 'Use `country_code`. Removed in 6.1.'],
10
+ state_abbr: [:string, nullable: true, deprecated: 'Use `state_code`. Removed in 6.1.'],
9
11
  pickup_ready_in_minutes: [:number, nullable: true],
10
12
  pickup_instructions: [:string, nullable: true]
11
13
 
12
14
  attributes :name, :address1, :city, :zipcode, :country_code, :country_name, :state_code, :state_text
13
15
 
16
+ # @deprecated Storefronts shipped against these names; use +country_code+
17
+ # and +state_code+. Removed in 6.1.
18
+ attribute :country_iso, &:country_code
19
+ attribute :state_abbr, &:state_code
20
+
14
21
  # Collection details the customer needs when choosing a counter: how
15
22
  # long until the order is ready, and where to go. This serializer
16
23
  # backs the pickup-locations endpoint, so without them the two
@@ -13,9 +13,7 @@ module Spree
13
13
  attributes :quantity, :kind, :reason,
14
14
  created_at: :iso8601, updated_at: :iso8601
15
15
 
16
- attribute :stock_level_id do |movement|
17
- movement.stock_level&.prefixed_id
18
- end
16
+ prefixed_id_attributes :stock_level
19
17
  end
20
18
  end
21
19
  end
@@ -1,10 +1,26 @@
1
1
  module Spree
2
2
  module Api
3
3
  module V3
4
- # Payload of the stock_receipt.* events. Stock receipts have no
5
- # storefront serializer, so the event shape is declared here rather than
6
- # found by convention.
7
- class StockReceiptEventSerializer < Admin::StockReceiptSerializer
4
+ # Payload of the stock_receipt.* events. The counted lines and who
5
+ # received them stay behind the Admin API.
6
+ class StockReceiptEventSerializer < BaseSerializer
7
+ typelize number: :string,
8
+ received_at: :string,
9
+ receivable_type: [:string, enum: %w[purchase_order stock_transfer]],
10
+ receivable_id: :string,
11
+ quantity_accepted_total: :number,
12
+ quantity_rejected_total: :number
13
+
14
+ attributes :number, :quantity_accepted_total, :quantity_rejected_total,
15
+ received_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
16
+
17
+ attribute :receivable_type do |receipt|
18
+ receipt.receivable_type.demodulize.underscore
19
+ end
20
+
21
+ attribute :receivable_id do |receipt|
22
+ receipt.receivable&.prefixed_id
23
+ end
8
24
  end
9
25
  end
10
26
  end
@@ -15,13 +15,7 @@ module Spree
15
15
  attributes :number, :reference,
16
16
  created_at: :iso8601, updated_at: :iso8601
17
17
 
18
- attribute :source_location_id do |transfer|
19
- transfer.source_location&.prefixed_id
20
- end
21
-
22
- attribute :destination_location_id do |transfer|
23
- transfer.destination_location&.prefixed_id
24
- end
18
+ prefixed_id_attributes :source_location, :destination_location
25
19
  end
26
20
  end
27
21
  end