spree_api 6.0.0.rc1 → 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 (370) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -17
  3. data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +10 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +26 -4
  5. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +14 -28
  6. data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
  7. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +3 -2
  8. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
  10. data/app/controllers/concerns/spree/api/v3/error_handler.rb +48 -2
  11. data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
  12. data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
  13. data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
  14. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +6 -6
  15. data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
  16. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +1 -5
  17. data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +1 -4
  18. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +5 -21
  19. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
  20. data/app/controllers/concerns/spree/api/v3/purchase_serialization.rb +26 -0
  21. data/app/controllers/concerns/spree/api/v3/request_params.rb +65 -0
  22. data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
  23. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +10 -1
  24. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
  25. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +15 -7
  26. data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
  27. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +3 -1
  28. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -5
  29. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +60 -33
  30. data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +4 -1
  31. data/app/controllers/spree/api/v3/admin/categories_controller.rb +40 -20
  32. data/app/controllers/spree/api/v3/admin/channels_controller.rb +39 -6
  33. data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
  34. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +4 -1
  35. data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
  36. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +60 -12
  37. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -0
  38. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -1
  39. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +19 -18
  40. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -1
  41. data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -3
  42. data/app/controllers/spree/api/v3/admin/countries_controller.rb +5 -1
  43. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +21 -11
  44. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -5
  45. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -1
  46. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -7
  47. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -9
  48. data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
  49. data/app/controllers/spree/api/v3/admin/customers_controller.rb +35 -7
  50. data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +8 -0
  51. data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +1 -1
  52. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +15 -7
  53. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +92 -57
  54. data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +8 -1
  55. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +13 -1
  56. data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +21 -5
  57. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +14 -1
  58. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +4 -0
  59. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +7 -0
  60. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +8 -0
  61. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +4 -0
  62. data/app/controllers/spree/api/v3/admin/exports_controller.rb +23 -6
  63. data/app/controllers/spree/api/v3/admin/files_controller.rb +29 -0
  64. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +20 -1
  65. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +19 -1
  66. data/app/controllers/spree/api/v3/admin/imports_controller.rb +36 -9
  67. data/app/controllers/spree/api/v3/admin/integrations_controller.rb +13 -1
  68. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +9 -2
  69. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +8 -1
  70. data/app/controllers/spree/api/v3/admin/locales_controller.rb +1 -1
  71. data/app/controllers/spree/api/v3/admin/markets_controller.rb +30 -9
  72. data/app/controllers/spree/api/v3/admin/me_controller.rb +12 -3
  73. data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
  74. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +4 -0
  75. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +24 -7
  76. data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +5 -1
  77. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +13 -1
  78. data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
  79. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +19 -1
  80. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +5 -1
  81. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +29 -5
  82. data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +36 -1
  83. data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +22 -1
  84. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +66 -7
  85. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +6 -2
  86. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
  87. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +35 -2
  88. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +16 -5
  89. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +6 -0
  90. data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +37 -1
  91. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +6 -3
  92. data/app/controllers/spree/api/v3/admin/orders_controller.rb +74 -60
  93. data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
  94. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +17 -0
  95. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +38 -22
  96. data/app/controllers/spree/api/v3/admin/policies_controller.rb +8 -4
  97. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +27 -15
  98. data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -4
  99. data/app/controllers/spree/api/v3/admin/product_types_controller.rb +25 -8
  100. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +27 -10
  101. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -14
  102. data/app/controllers/spree/api/v3/admin/products_controller.rb +121 -70
  103. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -2
  104. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -1
  105. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
  106. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +54 -7
  107. data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +5 -1
  108. data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +9 -1
  109. data/app/controllers/spree/api/v3/admin/reporting_controller.rb +34 -0
  110. data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -0
  111. data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +5 -1
  112. data/app/controllers/spree/api/v3/admin/roles_controller.rb +13 -1
  113. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +6 -0
  114. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +15 -0
  115. data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
  116. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +75 -22
  117. data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -15
  118. data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +38 -9
  119. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +41 -9
  120. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +48 -7
  121. data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -53
  122. data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +1 -7
  123. data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +16 -6
  124. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +7 -4
  125. data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +21 -3
  126. data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +4 -0
  127. data/app/controllers/spree/api/v3/admin/translations/batches_controller.rb +17 -9
  128. data/app/controllers/spree/api/v3/admin/translations_controller.rb +4 -0
  129. data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +5 -0
  130. data/app/controllers/spree/api/v3/admin/updates_controller.rb +39 -0
  131. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +23 -1
  132. data/app/controllers/spree/api/v3/base_controller.rb +2 -0
  133. data/app/controllers/spree/api/v3/resource_controller.rb +63 -10
  134. data/app/controllers/spree/api/v3/seller/auth_controller.rb +8 -0
  135. data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
  136. data/app/controllers/spree/api/v3/seller/countries_controller.rb +2 -2
  137. data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
  138. data/app/controllers/spree/api/v3/seller/exports_controller.rb +18 -1
  139. data/app/controllers/spree/api/v3/seller/files_controller.rb +27 -0
  140. data/app/controllers/spree/api/v3/seller/imports_controller.rb +25 -9
  141. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +9 -1
  142. data/app/controllers/spree/api/v3/seller/me_controller.rb +14 -3
  143. data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +11 -0
  144. data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +35 -0
  145. data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +12 -0
  146. data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +33 -0
  147. data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +28 -2
  148. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +22 -1
  149. data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +8 -1
  150. data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +32 -0
  151. data/app/controllers/spree/api/v3/seller/orders_controller.rb +35 -14
  152. data/app/controllers/spree/api/v3/seller/package_types_controller.rb +21 -9
  153. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -0
  154. data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
  155. data/app/controllers/spree/api/v3/seller/products_controller.rb +114 -28
  156. data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
  157. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +12 -5
  158. data/app/controllers/spree/api/v3/seller/resource_controller.rb +12 -0
  159. data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +44 -13
  160. data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +10 -1
  161. data/app/controllers/spree/api/v3/seller/team_controller.rb +4 -0
  162. data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
  163. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +8 -1
  164. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +10 -2
  165. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +8 -1
  166. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +17 -5
  167. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +20 -6
  168. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +11 -0
  169. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +24 -26
  170. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +7 -1
  171. data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +5 -1
  172. data/app/controllers/spree/api/v3/store/carts_controller.rb +56 -47
  173. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -4
  174. data/app/controllers/spree/api/v3/store/companies/members_controller.rb +4 -0
  175. data/app/controllers/spree/api/v3/store/companies_controller.rb +5 -1
  176. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +9 -1
  177. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -7
  178. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -0
  179. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +17 -0
  180. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -5
  181. data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +5 -1
  182. data/app/controllers/spree/api/v3/store/customers_controller.rb +28 -2
  183. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +22 -0
  184. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +11 -2
  185. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +10 -1
  186. data/app/controllers/spree/api/v3/store/orders_controller.rb +47 -10
  187. data/app/controllers/spree/api/v3/store/products_controller.rb +8 -0
  188. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +10 -4
  189. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +12 -4
  190. data/app/request_schemas/spree/api/v3/address_request_schema.rb +27 -0
  191. data/app/request_schemas/spree/api/v3/admin/address_request_schema.rb +13 -0
  192. data/app/request_schemas/spree/api/v3/admin/bulk_tags_request_schema.rb +17 -0
  193. data/app/request_schemas/spree/api/v3/admin/catalog_order_minimum_request_schema.rb +17 -0
  194. data/app/request_schemas/spree/api/v3/admin/email_template_language_request_schema.rb +17 -0
  195. data/app/request_schemas/spree/api/v3/admin/email_template_preview_request_schema.rb +32 -0
  196. data/app/request_schemas/spree/api/v3/admin/price_adjustment_tier_request_schema.rb +21 -0
  197. data/app/request_schemas/spree/api/v3/admin/price_list_price_request_schema.rb +21 -0
  198. data/app/request_schemas/spree/api/v3/admin/price_list_rule_request_schema.rb +19 -0
  199. data/app/request_schemas/spree/api/v3/admin/product_membership_reposition_request_schema.rb +17 -0
  200. data/app/request_schemas/spree/api/v3/admin/promotion_action_calculator_request_schema.rb +18 -0
  201. data/app/request_schemas/spree/api/v3/admin/promotion_action_line_item_request_schema.rb +15 -0
  202. data/app/request_schemas/spree/api/v3/admin/promotion_action_request_schema.rb +19 -0
  203. data/app/request_schemas/spree/api/v3/admin/promotion_rule_request_schema.rb +22 -0
  204. data/app/request_schemas/spree/api/v3/admin/reason_request_schema.rb +14 -0
  205. data/app/request_schemas/spree/api/v3/admin/tax_identifier_request_schema.rb +15 -0
  206. data/app/request_schemas/spree/api/v3/custom_field_value_request_schema.rb +15 -0
  207. data/app/request_schemas/spree/api/v3/file_upload_request_schema.rb +20 -0
  208. data/app/request_schemas/spree/api/v3/media_request_schema.rb +27 -0
  209. data/app/request_schemas/spree/api/v3/price_request_schema.rb +17 -0
  210. data/app/request_schemas/spree/api/v3/stock_level_request_schema.rb +18 -0
  211. data/app/request_schemas/spree/api/v3/store/address_request_schema.rb +29 -0
  212. data/app/request_schemas/spree/api/v3/tax_identifier_request_schema.rb +18 -0
  213. data/app/request_schemas/spree/api/v3/variant_option_request_schema.rb +13 -0
  214. data/app/request_schemas/spree/api/v3/variant_request_schema.rb +52 -0
  215. data/app/serializers/concerns/spree/api/v3/purchase_summary.rb +48 -0
  216. data/app/serializers/spree/api/v3/address_serializer.rb +4 -2
  217. data/app/serializers/spree/api/v3/admin/address_serializer.rb +3 -0
  218. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +3 -1
  219. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +3 -1
  220. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -2
  221. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +3 -4
  222. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +4 -3
  223. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -7
  224. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
  225. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +5 -0
  226. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +7 -18
  227. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +7 -11
  228. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +0 -2
  229. data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
  230. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +3 -7
  231. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +0 -2
  232. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +14 -10
  233. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
  234. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
  235. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
  236. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
  237. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +5 -0
  238. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +3 -1
  239. data/app/serializers/spree/api/v3/admin/file_upload_serializer.rb +11 -0
  240. data/app/serializers/spree/api/v3/admin/file_upload_target_serializer.rb +10 -0
  241. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -11
  242. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +3 -3
  243. data/app/serializers/spree/api/v3/admin/import_serializer.rb +2 -2
  244. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +1 -3
  245. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +12 -12
  246. data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
  247. data/app/serializers/spree/api/v3/admin/market_serializer.rb +3 -0
  248. data/app/serializers/spree/api/v3/admin/media_serializer.rb +3 -2
  249. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +2 -0
  250. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
  251. data/app/serializers/spree/api/v3/admin/order_serializer.rb +33 -33
  252. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +1 -4
  253. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -3
  254. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
  255. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +3 -6
  256. data/app/serializers/spree/api/v3/admin/price_history_serializer.rb +5 -2
  257. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +1 -5
  258. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
  259. data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
  260. data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -0
  261. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +4 -6
  262. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +0 -2
  263. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +5 -11
  264. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -4
  265. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -3
  266. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +9 -2
  267. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +8 -0
  268. data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -4
  269. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
  270. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +3 -5
  271. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +3 -1
  272. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +7 -8
  273. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +4 -4
  274. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +3 -0
  275. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +2 -6
  276. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +5 -0
  277. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +9 -4
  278. data/app/serializers/spree/api/v3/admin/store_serializer.rb +17 -98
  279. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -1
  280. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -1
  281. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +4 -2
  282. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +2 -12
  283. data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
  284. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +7 -3
  285. data/app/serializers/spree/api/v3/base_serializer.rb +112 -7
  286. data/app/serializers/spree/api/v3/cart_serializer.rb +11 -29
  287. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +5 -13
  288. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -3
  289. data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
  290. data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
  291. data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
  292. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -12
  293. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
  294. data/app/serializers/spree/api/v3/discount_serializer.rb +4 -1
  295. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +2 -8
  296. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -3
  297. data/app/serializers/spree/api/v3/file_upload_serializer.rb +28 -0
  298. data/app/serializers/spree/api/v3/file_upload_target_serializer.rb +17 -0
  299. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +2 -4
  300. data/app/serializers/spree/api/v3/gift_card_serializer.rb +4 -2
  301. data/app/serializers/spree/api/v3/import_serializer.rb +0 -12
  302. data/app/serializers/spree/api/v3/line_item_serializer.rb +15 -5
  303. data/app/serializers/spree/api/v3/locale_serializer.rb +3 -1
  304. data/app/serializers/spree/api/v3/market_serializer.rb +5 -5
  305. data/app/serializers/spree/api/v3/media_serializer.rb +7 -2
  306. data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -4
  307. data/app/serializers/spree/api/v3/order_serializer.rb +5 -23
  308. data/app/serializers/spree/api/v3/payment_session_serializer.rb +2 -4
  309. data/app/serializers/spree/api/v3/price_history_serializer.rb +5 -5
  310. data/app/serializers/spree/api/v3/price_serializer.rb +6 -9
  311. data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
  312. data/app/serializers/spree/api/v3/product_serializer.rb +3 -3
  313. data/app/serializers/spree/api/v3/refund_serializer.rb +8 -5
  314. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +3 -11
  315. data/app/serializers/spree/api/v3/return_serializer.rb +3 -6
  316. data/app/serializers/spree/api/v3/seller/address_serializer.rb +12 -0
  317. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +15 -10
  318. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +7 -0
  319. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +5 -0
  320. data/app/serializers/spree/api/v3/seller/country_serializer.rb +19 -0
  321. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +1 -3
  322. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +4 -8
  323. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +9 -8
  324. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
  325. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +5 -0
  326. data/app/serializers/spree/api/v3/seller/file_upload_serializer.rb +11 -0
  327. data/app/serializers/spree/api/v3/seller/file_upload_target_serializer.rb +10 -0
  328. data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
  329. data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
  330. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +4 -3
  331. data/app/serializers/spree/api/v3/seller/order_serializer.rb +16 -16
  332. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
  333. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +2 -4
  334. data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +11 -0
  335. data/app/serializers/spree/api/v3/seller/price_serializer.rb +11 -0
  336. data/app/serializers/spree/api/v3/seller/product_serializer.rb +2 -0
  337. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +7 -7
  338. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +8 -0
  339. data/app/serializers/spree/api/v3/seller/return_serializer.rb +8 -5
  340. data/app/serializers/spree/api/v3/seller/state_serializer.rb +10 -0
  341. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +3 -0
  342. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +6 -7
  343. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
  344. data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
  345. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +1 -3
  346. data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -5
  347. data/app/serializers/spree/api/v3/tax_line_serializer.rb +2 -4
  348. data/app/serializers/spree/api/v3/variant_serializer.rb +3 -3
  349. data/app/services/spree/api/v3/filter_predicates.rb +29 -0
  350. data/app/services/spree/api/v3/filter_table.rb +337 -0
  351. data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
  352. data/app/services/spree/api/v3/request_schema.rb +430 -0
  353. data/app/services/spree/webhooks/deliver_webhook.rb +7 -3
  354. data/config/initializers/typelizer.rb +1 -1
  355. data/config/routes.rb +5 -3
  356. data/lib/spree/api/configuration.rb +5 -0
  357. data/lib/spree/api/dependencies.rb +7 -6
  358. data/lib/spree/api/middleware/request_size_limit.rb +24 -3
  359. data/lib/spree/api/openapi/filter_documentation.rb +136 -0
  360. data/lib/spree/api/openapi/schema_helper.rb +126 -80
  361. data/lib/spree/api/preference_families.rb +46 -0
  362. data/lib/spree/api/preference_types.rb +138 -0
  363. data/lib/spree/api/typelizer_generation.rb +4 -0
  364. data/lib/tasks/filters.rake +12 -0
  365. data/lib/typelizer/open_enums.rb +10 -0
  366. metadata +60 -10
  367. data/app/controllers/concerns/spree/api/v3/address_params.rb +0 -17
  368. data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +0 -35
  369. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +0 -54
  370. data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +0 -21
@@ -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,10 +5,9 @@ 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,
8
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
9
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',
@@ -18,8 +17,7 @@ module Spree
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
@@ -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],
@@ -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
@@ -60,11 +60,11 @@ module Spree
60
60
  end
61
61
 
62
62
  one :billing_address,
63
- resource: proc { Spree.api.address_serializer },
63
+ resource: proc { Spree.api.seller_address_serializer },
64
64
  if: proc { |seller| seller.billing_address.present? }
65
65
 
66
66
  one :returns_address,
67
- resource: proc { Spree.api.address_serializer },
67
+ resource: proc { Spree.api.seller_address_serializer },
68
68
  if: proc { |seller| seller.returns_address.present? }
69
69
  end
70
70
  end
@@ -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,20 +13,23 @@ 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
25
  prefixed_id_attributes :stock_location
25
26
 
26
- attributes refunded_total: :string
27
+ money_attributes :refunded_total
27
28
  # What the refund dialog opens on — never more than this may be
28
29
  # given back, whatever amount is typed.
29
- attributes refundable_total: :string, display_refunded_total: :string
30
+ money_attributes :refundable_total
31
+ typelize refunded_total: [:string, nullable: false], refundable_total: [:string, nullable: false]
32
+
30
33
  many :return_line_items,
31
34
  resource: proc { Spree.api.seller_return_line_item_serializer },
32
35
  if: proc { expand?('return_line_items') }
@@ -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,13 +11,12 @@ module Spree
11
11
  class TransferSerializer < V3::BaseSerializer
12
12
  typelize kind: :string,
13
13
  status: :string,
14
- currency: :string,
14
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
15
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',
@@ -27,13 +26,13 @@ module Spree
27
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
 
@@ -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,
@@ -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
@@ -4,15 +4,13 @@ module Spree
4
4
  class StoreCreditEventSerializer < BaseSerializer
5
5
  typelize action: :string,
6
6
  display_action: [:string, nullable: true],
7
- amount: :string,
8
- display_amount: :string,
9
7
  authorization_code: [:string, nullable: true]
10
8
 
11
9
  attributes :action, :authorization_code
12
10
 
13
11
  attributes :display_action
14
12
 
15
- attributes amount: :string, display_amount: :string
13
+ money_attributes :amount, :display_amount
16
14
  attributes created_at: :iso8601
17
15
  end
18
16
  end
@@ -2,12 +2,10 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class StoreCreditSerializer < BaseSerializer
5
- typelize amount: :string, amount_used: :string, amount_remaining: :string,
6
- display_amount: :string, display_amount_used: :string, display_amount_remaining: :string,
7
- currency: :string
5
+ typelize currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode']
8
6
 
9
- attributes amount: :string, amount_used: :string, amount_remaining: :string, display_amount: :string,
10
- display_amount_used: :string, display_amount_remaining: :string
7
+ money_attributes :amount, :amount_used, :amount_remaining, :display_amount,
8
+ :display_amount_used, :display_amount_remaining
11
9
  attributes :currency
12
10
  end
13
11
  end
@@ -5,7 +5,7 @@ module Spree
5
5
  # or, after the sale, the tax a return, claim or exchange line gives
6
6
  # back (`credit`) or charges on an exchange's replacement.
7
7
  class TaxLineSerializer < BaseSerializer
8
- typelize label: :string, rate: :string, included: :boolean, credit: :boolean,
8
+ typelize label: :string, included: :boolean, credit: :boolean,
9
9
  tax_rate_id: [:string, nullable: true], line_item_id: [:string, nullable: true],
10
10
  fulfillment_id: [:string, nullable: true], fee_id: [:string, nullable: true],
11
11
  return_line_item_id: [:string, nullable: true], claim_line_item_id: [:string, nullable: true],
@@ -13,9 +13,7 @@ module Spree
13
13
 
14
14
  attributes :label, :included, :credit
15
15
 
16
- attribute :rate do |record|
17
- record.rate&.to_s
18
- end
16
+ rate_attributes :rate
19
17
 
20
18
  prefixed_id_attributes :tax_rate, :line_item, :fulfillment, :fee, :return_line_item, :claim_line_item,
21
19
  :exchange_line_item
@@ -88,7 +88,7 @@ module Spree
88
88
  # Price object - calculated price with price list resolution
89
89
  attribute :price do |variant|
90
90
  price = price_for(variant)
91
- Spree.api.price_serializer.new(price, params: params).to_h if price.present?
91
+ price_serializer.new(price, params: params).to_h if price.present?
92
92
  end
93
93
 
94
94
  # Original price - base price without price list resolution (for showing strikethrough)
@@ -98,7 +98,7 @@ module Spree
98
98
  base = price_in(variant)
99
99
 
100
100
  if calculated.present? && base.present? && calculated.id != base.id
101
- Spree.api.price_serializer.new(base, params: params).to_h
101
+ price_serializer.new(base, params: params).to_h
102
102
  end
103
103
  end
104
104
 
@@ -137,7 +137,7 @@ module Spree
137
137
  attribute :prior_price,
138
138
  if: proc { expand?('prior_price') } do |variant|
139
139
  record = price_in(variant)&.prior_price
140
- Spree.api.price_history_serializer.new(record, params: params).to_h if record
140
+ price_history_serializer.new(record, params: params).to_h if record
141
141
  end
142
142
  end
143
143
  end
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The Ransack predicates the v3 API accepts, per kind of value. Ransack
5
+ # itself would take far more; this is the published contract, so a
6
+ # non-Ruby implementation needs to support exactly these.
7
+ module FilterPredicates
8
+ EQUALITY = %w[eq not_eq in not_in].freeze
9
+ NULLITY = %w[null not_null].freeze
10
+ RANGE = (EQUALITY + %w[lt lteq gt gteq] + NULLITY).freeze
11
+ IDENTITY = (EQUALITY + NULLITY).freeze
12
+
13
+ BY_KIND = {
14
+ 'text' => (EQUALITY + %w[cont i_cont not_cont start end] + NULLITY + %w[present blank]).freeze,
15
+ 'decimal' => RANGE,
16
+ 'integer' => RANGE,
17
+ 'date' => RANGE,
18
+ 'datetime' => RANGE,
19
+ 'enum' => IDENTITY,
20
+ 'id' => IDENTITY,
21
+ 'type' => IDENTITY,
22
+ 'boolean' => (EQUALITY + %w[true false null]).freeze
23
+ }.freeze
24
+
25
+ KINDS = BY_KIND.keys.freeze
26
+ end
27
+ end
28
+ end
29
+ end