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
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A variant and quantity the `create_line_items` promotion action adds.
6
+ class PromotionActionLineItemRequestSchema < Spree::Api::V3::RequestSchema
7
+ publishes 'PromotionActionLineItemParams'
8
+
9
+ attribute :variant_id, :id, required: true
10
+ attribute :quantity, :integer, required: true
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # The keys of a promotion action beyond `type`, shared by the promotion action endpoints and the `actions` written with a promotion.
6
+ class PromotionActionRequestSchema < Spree::Api::V3::RequestSchema
7
+ attribute :preferences, :hash,
8
+ description: "Values for the action kind's settings schema, from `GET /promotion_actions/types`."
9
+ attribute :calculator, :object, shape: Spree::Api::V3::Admin::PromotionActionCalculatorRequestSchema,
10
+ permit: false,
11
+ description: 'For adjustment actions.'
12
+ attribute :line_items, :array, of: Spree::Api::V3::Admin::PromotionActionLineItemRequestSchema,
13
+ permit: false,
14
+ description: 'For `create_line_items`: the variants to add and their quantities. Variants left out are removed.'
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # The keys of a promotion rule or action beyond `type`, shared by the
6
+ # nested promotion rule and action endpoints and by the `rules` and
7
+ # `actions` written with a promotion. Kind-specific keys are read
8
+ # per kind from its `additional_permitted_attributes`, so they are
9
+ # documented here and left out of the permit list.
10
+ class PromotionRuleRequestSchema < Spree::Api::V3::RequestSchema
11
+ attribute :preferences, :hash,
12
+ description: "Values for the rule kind's settings schema, from `GET /promotion_rules/types`."
13
+ attribute :product_ids, :array, of: :id, permit: false, description: 'For the `product` rule.'
14
+ attribute :category_ids, :array, of: :id, permit: false, description: 'For the `category` rule.'
15
+ attribute :customer_ids, :array, of: :id,
16
+ permit: false,
17
+ description: 'For the `user` rule: the customers who qualify.'
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A reason staff pick from: claim, refund, return and order
6
+ # cancellation reasons all take the same body.
7
+ class ReasonRequestSchema < Spree::Api::V3::RequestSchema
8
+ attribute :name, :string, required: true, on: :create
9
+ attribute :active, :boolean, description: 'Whether the reason is offered on new records.'
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A customer's or a company's tax registration, as staff write it.
6
+ class TaxIdentifierRequestSchema < Spree::Api::V3::RequestSchema
7
+ attribute :kind, :string,
8
+ example: 'gb_vat',
9
+ description: "#{Spree::Api::V3::TaxIdentifierRequestSchema::KIND_DESCRIPTION}"
10
+ attribute :value, :string, example: 'GB123456789'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A custom field value written inline with its owner (product, category, seller…).
5
+ class CustomFieldValueRequestSchema < Spree::Api::V3::RequestSchema
6
+ publishes 'CustomFieldValueParams'
7
+
8
+ attribute :id, :id
9
+ attribute :custom_field_definition_id, :id
10
+ attribute :value, :any,
11
+ description: 'A scalar for text, number and boolean fields; a list or a hash for JSON fields.'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A file sent to `POST /files` (Spree::Api::V3::FileUploads): its
5
+ # details for a direct upload, or its bytes in a multipart request.
6
+ class FileUploadRequestSchema < Spree::Api::V3::RequestSchema
7
+ attribute :filename, :string, required: true, example: 'registration.pdf'
8
+ attribute :content_type, :string, required: true, example: 'application/pdf'
9
+ attribute :byte_size, :integer, example: 51_234
10
+ attribute :checksum, :string,
11
+ example: 'rL0Y20zC+Fzt72VPzMSk2A==',
12
+ description: 'Base64-encoded MD5 digest of the file; the storage service checks the bytes against it.'
13
+ attribute :visibility, :string,
14
+ choices: Spree::FileUpload::VISIBILITIES,
15
+ description: '`public` (the default) for images, videos and CSV files anyone may fetch, `private` for any type.'
16
+ attribute :file, :string, format: :binary, description: 'The bytes, for a multipart upload.'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # What a media row itself carries, whichever endpoint writes it. Not
5
+ # published on its own: each endpoint adds how the file arrives.
6
+ class MediaRequestSchema < Spree::Api::V3::RequestSchema
7
+ attribute :alt, :string, nullable: true, example: 'Front view'
8
+ attribute :position, :integer, example: 1
9
+ attribute :media_type, :string,
10
+ choices: Spree::Media::MEDIA_TYPES,
11
+ example: 'image',
12
+ description: 'Defaults to `image`. `video` needs a `signed_id`; `external_video` needs an `external_video_url`.'
13
+ attribute :external_video_url, :string,
14
+ nullable: true,
15
+ description: 'YouTube or Vimeo link. Required when `media_type` is `external_video`.'
16
+ attribute :poster_signed_id, :string,
17
+ description: "A `signed_id` from `files.upload()` for a video's poster frame."
18
+ attribute :focal_point_x, :number,
19
+ nullable: true,
20
+ description: 'Where the image is anchored when cropped, from 0 to 1.'
21
+ attribute :focal_point_y, :number,
22
+ nullable: true,
23
+ description: 'Where the image is anchored when cropped, from 0 to 1.'
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A variant's price in one currency.
5
+ class PriceRequestSchema < Spree::Api::V3::RequestSchema
6
+ publishes 'PriceParams'
7
+
8
+ attribute :currency, :currency, required: true, example: 'USD'
9
+ attribute :amount, :decimal,
10
+ required: true,
11
+ example: '29.99',
12
+ description: 'A canonical decimal string (`"1234.56"`: period decimal, no grouping). The API does not parse localized input.'
13
+ attribute :compare_at_amount, :decimal, nullable: true, example: '39.99'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A variant's stock at one location.
5
+ class StockLevelRequestSchema < Spree::Api::V3::RequestSchema
6
+ publishes 'StockLevelParams'
7
+
8
+ # Rows are matched by location: an `id` would be ignored.
9
+ attribute :stock_location_id, :id, required: true, description: 'The location holding the stock (`sloc_...`).'
10
+ attribute :count_on_hand, :integer,
11
+ required: true,
12
+ description: 'Units physically at the location, not units available to sell: stock promised to placed orders counts until it ships. Sent as the count the shelf should end at; the API records the difference as an adjustment in the stock history.'
13
+ attribute :backorderable, :boolean,
14
+ description: 'Whether this location sells the variant beyond what it holds.'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Store
5
+ # An address as a shopper writes it on the Store API: on a cart and in
6
+ # their own address book. Not published on its own.
7
+ class AddressRequestSchema < Spree::Api::V3::RequestSchema
8
+ attribute :first_name, :string
9
+ attribute :last_name, :string
10
+ attribute :company, :string
11
+ attribute :address1, :string
12
+ attribute :address2, :string
13
+ attribute :city, :string
14
+ attribute :postal_code, :string
15
+ attribute :phone, :string
16
+ attribute :country_code, :country,
17
+ example: 'US',
18
+ description: 'ISO 3166-1 alpha-2 country code, such as `US` or `DE`.'
19
+ attribute :state_code, :string,
20
+ example: 'NY',
21
+ description: 'ISO 3166-2 subdivision code without the country prefix, such as `CA` or `NY`.'
22
+ attribute :state_name, :string, description: 'The state name, for countries without predefined states.'
23
+ attribute :country_iso, :string, deprecated: 'Use `country_code`. Removed in 6.1.'
24
+ attribute :state_abbr, :string, deprecated: 'Use `state_code`. Removed in 6.1.'
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A tax registration. Each endpoint publishes it under its own name
5
+ # (`TaxIdentifierParams`, `SellerTaxIdentifierParams`). `kind` is
6
+ # registry-driven, so a plain string: any kind is stored, and one with a
7
+ # validator in Spree.tax_identifier_validators is checked by it.
8
+ class TaxIdentifierRequestSchema < Spree::Api::V3::RequestSchema
9
+ KIND_DESCRIPTION = 'The registration the number belongs to, such as `eu_vat` or `gb_vat`. ' \
10
+ 'Any kind is accepted; one with a registered validator is checked by it. ' \
11
+ 'Built-in: `eu_vat`. Extensions may register more.'.freeze
12
+
13
+ attribute :kind, :string, required: true, example: 'eu_vat', description: KIND_DESCRIPTION
14
+ attribute :value, :string, required: true, example: 'DE123456789'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # One option pair of a variant, such as size Small. Option types and values are created when missing.
5
+ class VariantOptionRequestSchema < Spree::Api::V3::RequestSchema
6
+ publishes 'VariantOptionParams'
7
+
8
+ attribute :name, :string, required: true, example: 'size'
9
+ attribute :value, :string, required: true, example: 'Small'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,52 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A variant's own attributes, shared by the variant endpoints and the
5
+ # variants nested in a product payload. Not published on its own: each
6
+ # endpoint includes these fields into its own type.
7
+ class VariantRequestSchema < Spree::Api::V3::RequestSchema
8
+ attribute :sku, :string
9
+ attribute :barcode, :string
10
+ attribute :cost_price, :decimal, nullable: true
11
+ attribute :cost_currency, :currency
12
+ attribute :weight, :number, nullable: true
13
+ attribute :height, :number, nullable: true
14
+ attribute :width, :number, nullable: true
15
+ attribute :depth, :number, nullable: true
16
+ attribute :weight_unit, :string, choices: Spree::Variant::WEIGHT_UNITS
17
+ attribute :dimensions_unit, :string, choices: Spree::Variant::DIMENSION_UNITS
18
+ attribute :hs_code, :string
19
+ attribute :customs_description, :string
20
+ attribute :country_of_origin, :country
21
+ attribute :minimum_order_quantity, :integer, nullable: true
22
+ attribute :order_multiple, :integer, nullable: true
23
+ attribute :purchase_unit, :string
24
+ attribute :units_per_carton, :integer, nullable: true, description: 'How many units fill one carton.'
25
+ attribute :carton_package_type_id, :id,
26
+ nullable: true,
27
+ description: 'The carton this variant is packed into: a package type of kind `carton`. Its dimensions are shared by every product packed the same way, so a corrected carton size fixes all of them at once.'
28
+ attribute :carton_weight, :number,
29
+ nullable: true,
30
+ description: "What one packed carton weighs, in the variant's weight unit."
31
+ attribute :cartons_per_pallet, :integer, nullable: true, description: 'How many cartons stack on one pallet.'
32
+ attribute :seller_id, :id
33
+ attribute :delivery_profile_id, :id, nullable: true
34
+ attribute :track_inventory, :boolean
35
+ attribute :preorderable, :boolean,
36
+ description: "Sell this variant before it's in stock. Adds the pre-order label and ships-by promise; the cap comes from `backorder_limit`, an incoming stock count, or backorder."
37
+ attribute :preorder_ships_at, :datetime,
38
+ nullable: true,
39
+ description: 'The "ships by" date shown to customers while the variant is a pre-order. Once it passes, the variant is no longer a pre-order. Null clears it.'
40
+ attribute :backorder_limit, :integer,
41
+ nullable: true,
42
+ description: 'Maximum units sellable beyond available stock, capping backorders and pre-orders. Null is unlimited.'
43
+ attribute :tax_category_id, :id
44
+ attribute :position, :integer
45
+ attribute :prices, :array, of: Spree::Api::V3::PriceRequestSchema,
46
+ description: 'Per-currency prices. Upserted by currency.'
47
+ attribute :stock_levels, :array, of: Spree::Api::V3::StockLevelRequestSchema,
48
+ description: 'Stock per location. Upserted by location; omitted locations are removed.'
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,48 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The money summary a cart, an order and a multi-seller purchase all
5
+ # carry, declared once so a storefront renders any of them with one
6
+ # component, and a fix to one is a fix to all three.
7
+ #
8
+ # Every amount is nulled for a guest the storefront hides prices from,
9
+ # the payments' own included.
10
+ module PurchaseSummary
11
+ extend ActiveSupport::Concern
12
+
13
+ included do
14
+ typelize covered_by_store_credit: :boolean
15
+
16
+ money_attributes :item_total, :display_item_total,
17
+ :discount_total, :display_discount_total,
18
+ :tax_total, :display_tax_total,
19
+ :included_tax_total, :display_included_tax_total,
20
+ :additional_tax_total, :display_additional_tax_total,
21
+ :delivery_total, :display_delivery_total,
22
+ :fee_total, :display_fee_total,
23
+ :gift_card_total, :display_gift_card_total,
24
+ :store_credit_total, :display_store_credit_total,
25
+ :total, :display_total,
26
+ :amount_due, :display_amount_due,
27
+ descriptions: {
28
+ item_total: 'The line items: each price times its quantity, before discounts, fees and delivery.',
29
+ discount_total: 'What promotions take off, as a negative amount. Manual discounts are not included.',
30
+ tax_total: 'All tax, both included in prices and added on top.',
31
+ included_tax_total: 'Tax already included in the prices, as in a store whose prices are tax-inclusive.',
32
+ additional_tax_total: 'Tax added on top of the prices.',
33
+ delivery_total: 'What delivery costs, before delivery discounts.',
34
+ fee_total: 'Every fee charged, such as handling or a customs duty.',
35
+ gift_card_total: 'What a gift card pays.',
36
+ store_credit_total: 'What store credit pays, apart from gift cards.',
37
+ total: 'What the customer pays in all: items, delivery, fees and added tax, less discounts.',
38
+ amount_due: 'What is left to pay after payments and store credit.'
39
+ }
40
+
41
+ attribute :covered_by_store_credit, &:covered_by_store_credit?
42
+
43
+ many :payments, resource: proc { Spree.api.payment_serializer }
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -6,8 +6,10 @@ module Spree
6
6
  address1: [:string, nullable: true], address2: [:string, nullable: true],
7
7
  city: [:string, nullable: true], postal_code: [:string, nullable: true], phone: [:string, nullable: true],
8
8
  company: [:string, nullable: true], state_code: [:string, nullable: true],
9
- state_abbr: [:string, nullable: true], state_name: [:string, nullable: true],
10
- state_text: [:string, nullable: true], country_code: :string, country_iso: :string,
9
+ state_abbr: [:string, nullable: true, deprecated: 'Use `state_code`. Removed in 6.1.'],
10
+ state_name: [:string, nullable: true],
11
+ state_text: [:string, nullable: true], country_code: [:string, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
12
+ country_iso: [:string, deprecated: 'Use `country_code`. Removed in 6.1.'],
11
13
  country_name: :string,
12
14
  quick_checkout: :boolean, is_default_billing: :boolean, is_default_shipping: :boolean,
13
15
  label: [:string, nullable: true]
@@ -3,6 +3,9 @@ module Spree
3
3
  module V3
4
4
  module Admin
5
5
  class AddressSerializer < V3::AddressSerializer
6
+ # The Store API keeps these deprecated names until 6.1.
7
+ %i[state_abbr country_iso].each { |key| _attributes.delete(key) }
8
+
6
9
  typelize customer_id: [:string, nullable: true],
7
10
  owner_id: [:string, nullable: true],
8
11
  owner_type: [:string, nullable: true],
@@ -24,18 +27,16 @@ module Spree
24
27
  address.longitude&.to_f
25
28
  end
26
29
 
27
- attribute :customer_id do |address|
28
- address.customer_owner&.prefixed_id
29
- end
30
+ prefixed_id_attributes customer_id: :customer_owner
30
31
 
31
32
  # Who the row belongs to — a customer's book, a company node's, or a
32
33
  # seller's billing address. `customer_id` above stays as the
33
34
  # customer-only shorthand the customers surface reads.
34
- attribute :owner_id do |address|
35
- address.owner&.prefixed_id
36
- end
35
+ prefixed_id_attributes :owner
37
36
 
38
- attributes :owner_type
37
+ attribute :owner_type do |address|
38
+ Spree::Base.polymorphic_api_type(address.owner_type)
39
+ end
39
40
  end
40
41
  end
41
42
  end
@@ -27,17 +27,13 @@ module Spree
27
27
  created_at: :iso8601, updated_at: :iso8601,
28
28
  revoked_at: :iso8601, last_used_at: :iso8601
29
29
 
30
- attribute :channel_id do |key|
31
- key.channel&.prefixed_id
32
- end
30
+ prefixed_id_attributes :channel
33
31
 
34
32
  # Returned only on the create response — `plaintext_token` is held in
35
33
  # memory on the model after `generate_token` and is never persisted
36
34
  # for secret keys, so we serialize it whenever it's available rather
37
35
  # than gating on the action.
38
- attribute :plaintext_token do |key|
39
- key.plaintext_token
40
- end
36
+ attributes :plaintext_token
41
37
 
42
38
  # A key can be minted by another key, which has no email — so the
43
39
  # address is answered only for the actors that have one, and
@@ -3,9 +3,11 @@ module Spree
3
3
  module V3
4
4
  module Admin
5
5
  class AppliedPromotionSerializer < V3::AppliedPromotionSerializer
6
+ without_formatted_money
7
+
6
8
  # The Admin API has no guest gating — money fields inherited from the
7
9
  # store serializer are always present, so override their nullability.
8
- typelize amount: [:string, nullable: false], display_amount: [:string, nullable: false]
10
+ typelize amount: [:string, nullable: false]
9
11
 
10
12
  attributes created_at: :iso8601, updated_at: :iso8601
11
13
  end
@@ -12,7 +12,9 @@ module Spree
12
12
  # are redeclared with admin counterparts — admin serializers never
13
13
  # reference store serializers.
14
14
  class CartSerializer < V3::CartSerializer
15
- %i[fulfillments payments payment_methods gift_card discounts fees].each { |key| _attributes.delete(key) }
15
+ without_formatted_money
16
+
17
+ %i[fulfillments payments payment_methods gift_card discounts fees number].each { |key| _attributes.delete(key) }
16
18
 
17
19
  typelize completed_at: [:string, nullable: true]
18
20
 
@@ -18,9 +18,7 @@ module Spree
18
18
  assignment.assignable_type.demodulize.underscore
19
19
  end
20
20
 
21
- attribute :assignable_id do |assignment|
22
- assignment.assignable&.prefixed_id
23
- end
21
+ prefixed_id_attributes :assignable
24
22
 
25
23
  attribute :assignable_name do |assignment|
26
24
  assignment.assignable.try(:name)
@@ -5,17 +5,12 @@ module Spree
5
5
  # The least a whole order must come to under a catalog's agreement,
6
6
  # in one currency.
7
7
  class CatalogOrderMinimumSerializer < V3::BaseSerializer
8
- typelize currency: :string, amount: :string, display_amount: :string
8
+ typelize currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode']
9
9
 
10
10
  attributes :currency, created_at: :iso8601, updated_at: :iso8601
11
11
 
12
- attribute :amount do |minimum|
13
- minimum.amount.to_s
14
- end
15
-
16
- attribute :display_amount do |minimum|
17
- minimum.display_amount.to_s
18
- end
12
+ money_attributes :amount
13
+ typelize amount: [:string, nullable: false]
19
14
  end
20
15
  end
21
16
  end
@@ -17,8 +17,7 @@ module Spree
17
17
  _attributes.delete(:id)
18
18
 
19
19
  typelize id: 'string | null', label: 'string | null', sku: 'string | null',
20
- amount: :string, display_amount: :string,
21
- currency: :string, source: [:string, enum: Spree::CatalogPrice::SOURCES], break_count: :number
20
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], source: [:string, enum: Spree::CatalogPrice::SOURCES], break_count: :number
22
21
 
23
22
  # The variant this prices, so a row can name what it is showing —
24
23
  # a product's variants can be priced differently, and one figure
@@ -33,9 +32,9 @@ module Spree
33
32
  # though it were the only one.
34
33
  attributes :currency, :source, :break_count
35
34
 
36
- attribute :amount, &:display_value
35
+ money_attributes :amount, unit_price: true
36
+ typelize amount: [:string, nullable: false]
37
37
 
38
- attributes :display_amount
39
38
 
40
39
  # The ladder itself, so the agreement page can show what a buyer
41
40
  # pays at each threshold without opening the price sheet
@@ -11,11 +11,12 @@ module Spree
11
11
  class CatalogPriceTierSerializer < V3::BaseSerializer
12
12
  _attributes.delete(:id)
13
13
 
14
- typelize min_quantity: :number, amount: :string, display_amount: :string
14
+ typelize min_quantity: :number
15
15
 
16
- attributes :min_quantity, :display_amount
16
+ attributes :min_quantity
17
17
 
18
- attribute :amount, &:display_value
18
+ money_attributes :amount, unit_price: true
19
+ typelize amount: [:string, nullable: false]
19
20
  end
20
21
  end
21
22
  end
@@ -28,9 +28,7 @@ module Spree
28
28
  # True when the product's variants carry different terms, so the
29
29
  # editor shows "mixed" rather than claiming one variant's pair is
30
30
  # the product's.
31
- attribute :mixed do |term|
32
- term.mixed?
33
- end
31
+ attribute :mixed, &:mixed?
34
32
  end
35
33
  end
36
34
  end
@@ -15,9 +15,7 @@ module Spree
15
15
  attributes :minimum_order_quantity, :order_multiple,
16
16
  created_at: :iso8601, updated_at: :iso8601
17
17
 
18
- attribute :variant_id do |rule|
19
- rule.variant&.prefixed_id
20
- end
18
+ prefixed_id_attributes :variant
21
19
 
22
20
  attribute :variant_sku do |rule|
23
21
  rule.variant&.sku
@@ -4,16 +4,15 @@ module Spree
4
4
  module Admin
5
5
  class ChannelSerializer < V3::ChannelSerializer
6
6
  typelize store_id: :string,
7
- preferred_order_routing_strategy: [:string, nullable: true],
8
- preferred_storefront_access: [:string, nullable: true],
9
- preferred_guest_checkout: [:boolean, nullable: true],
7
+ order_routing_strategy: [:string, nullable: true, comment: 'Order routing strategy; null inherits the store setting. Built-in: rules. Extensions may register more.'],
10
8
  stock_location_ids: [:string, multi: true],
11
9
  default_catalog_id: [:string, nullable: true]
12
10
 
13
- attributes :preferred_order_routing_strategy,
14
- :preferred_storefront_access,
15
- :preferred_guest_checkout,
16
- created_at: :iso8601, updated_at: :iso8601
11
+ attributes created_at: :iso8601, updated_at: :iso8601
12
+
13
+ preference_attributes Spree::Channel, except: %i[order_routing_strategy]
14
+
15
+ api_type_attributes :order_routing_strategy
17
16
 
18
17
  # Fulfillment-origin allowlist; empty means every store location
19
18
  # serves this channel.
@@ -23,9 +22,7 @@ module Spree
23
22
 
24
23
  # When set, only the default catalog's products are visible on this
25
24
  # channel; unset means every publication.
26
- attribute :default_catalog_id do |record|
27
- record.default_catalog&.prefixed_id
28
- end
25
+ prefixed_id_attributes :default_catalog
29
26
  end
30
27
  end
31
28
  end
@@ -5,6 +5,13 @@ module Spree
5
5
  module V3
6
6
  module Admin
7
7
  class ClaimLineItemSerializer < V3::ClaimLineItemSerializer
8
+ without_formatted_money
9
+
10
+ # No guest price gating here, so the inherited money fields are always present.
11
+ typelize refund_amount: [:string, nullable: false], paid_amount: [:string, nullable: false],
12
+ pre_tax_amount: [:string, nullable: false], included_tax_total: [:string, nullable: false],
13
+ additional_tax_total: [:string, nullable: false], tax_total: [:string, nullable: false]
14
+
8
15
  attributes created_at: :iso8601, updated_at: :iso8601
9
16
 
10
17
  one :variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('variant') }
@@ -11,9 +11,7 @@ module Spree
11
11
 
12
12
  # Lets the dashboard hide destructive controls instead of offering a
13
13
  # delete that the model will refuse.
14
- attribute :can_be_deleted do |reason|
15
- reason.can_be_deleted?
16
- end
14
+ attribute :can_be_deleted, &:can_be_deleted?
17
15
  end
18
16
  end
19
17
  end
@@ -5,6 +5,11 @@ module Spree
5
5
  module V3
6
6
  module Admin
7
7
  class ClaimSerializer < V3::ClaimSerializer
8
+ without_formatted_money
9
+
10
+ # No guest price gating here, so the inherited money fields are always present.
11
+ typelize refund_total: [:string, nullable: false]
12
+
8
13
  typelize memo: [:string, nullable: true],
9
14
  metadata: 'Record<string, unknown>',
10
15
  created_by_id: [:string, nullable: true],