spree_api 6.0.0.beta4 → 6.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -31
  3. data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
  5. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +1 -1
  6. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +7 -0
  7. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +2 -2
  8. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/error_handler.rb +7 -2
  10. data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
  11. data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
  12. data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
  13. data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
  14. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +1 -5
  15. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +2 -10
  16. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
  17. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +4 -8
  18. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
  19. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
  20. data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
  21. data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
  22. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +0 -5
  23. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +1 -1
  24. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +0 -6
  25. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +0 -4
  26. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +1 -1
  27. data/app/controllers/spree/api/v3/admin/channels_controller.rb +0 -4
  28. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +1 -2
  29. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +2 -2
  30. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +0 -4
  31. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
  32. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +0 -4
  33. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +1 -9
  34. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +0 -4
  35. data/app/controllers/spree/api/v3/admin/companies_controller.rb +0 -4
  36. data/app/controllers/spree/api/v3/admin/countries_controller.rb +1 -1
  37. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
  38. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +9 -1
  39. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +0 -4
  40. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +0 -4
  41. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +0 -4
  42. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
  43. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +0 -4
  44. data/app/controllers/spree/api/v3/admin/customers_controller.rb +2 -2
  45. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +1 -1
  46. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +3 -5
  47. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +1 -6
  48. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +40 -0
  49. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +30 -0
  50. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +30 -0
  51. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +34 -0
  52. data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
  53. data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
  54. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +40 -0
  55. data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
  56. data/app/controllers/spree/api/v3/admin/imports_controller.rb +1 -2
  57. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +0 -7
  58. data/app/controllers/spree/api/v3/admin/me_controller.rb +1 -1
  59. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +5 -5
  60. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +0 -4
  61. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +1 -5
  62. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +1 -1
  63. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +1 -1
  64. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +18 -16
  65. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +3 -3
  66. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +2 -10
  67. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +2 -14
  68. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +1 -5
  69. data/app/controllers/spree/api/v3/admin/orders_controller.rb +3 -3
  70. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +9 -7
  71. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +6 -53
  72. data/app/controllers/spree/api/v3/admin/prices_controller.rb +0 -4
  73. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +2 -6
  74. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +0 -4
  75. data/app/controllers/spree/api/v3/admin/products_controller.rb +1 -1
  76. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +0 -4
  77. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +0 -4
  78. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +1 -1
  79. data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -1
  80. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +1 -9
  81. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +2 -10
  82. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
  83. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
  84. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
  85. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +2 -10
  86. data/app/controllers/spree/api/v3/admin/setup_controller.rb +3 -11
  87. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +1 -1
  88. data/app/controllers/spree/api/v3/admin/store_controller.rb +6 -1
  89. data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
  90. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +17 -12
  91. data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
  92. data/app/controllers/spree/api/v3/base_controller.rb +10 -0
  93. data/app/controllers/spree/api/v3/resource_controller.rb +44 -1
  94. data/app/controllers/spree/api/v3/seller/auth_controller.rb +2 -2
  95. data/app/controllers/spree/api/v3/seller/countries_controller.rb +1 -1
  96. data/app/controllers/spree/api/v3/seller/exports_controller.rb +3 -3
  97. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +3 -3
  98. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
  99. data/app/controllers/spree/api/v3/seller/me_controller.rb +1 -1
  100. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +1 -1
  101. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -11
  102. data/app/controllers/spree/api/v3/seller/products_controller.rb +2 -1
  103. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +1 -1
  104. data/app/controllers/spree/api/v3/seller/team_controller.rb +1 -1
  105. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +1 -1
  106. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +3 -11
  107. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +5 -3
  108. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +6 -2
  109. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +1 -1
  110. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +5 -3
  111. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +2 -2
  112. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -0
  113. data/app/controllers/spree/api/v3/store/carts_controller.rb +9 -6
  114. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +0 -4
  115. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
  116. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +1 -1
  117. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +0 -4
  118. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
  119. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +0 -5
  120. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
  121. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
  122. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
  123. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +8 -6
  124. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +0 -4
  125. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
  126. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
  127. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
  128. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +5 -14
  129. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +1 -5
  130. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +1 -5
  131. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +0 -4
  132. data/app/serializers/spree/api/v3/admin/address_serializer.rb +5 -7
  133. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
  134. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
  135. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +1 -7
  136. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
  137. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
  138. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -6
  139. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
  140. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -3
  141. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
  142. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
  143. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
  144. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +2 -10
  145. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
  146. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +8 -22
  147. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
  148. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
  149. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
  150. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
  151. data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
  152. data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
  153. data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
  154. data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
  155. data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
  156. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +1 -3
  157. data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
  158. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
  159. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -7
  160. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +1 -7
  161. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +2 -6
  162. data/app/serializers/spree/api/v3/admin/market_serializer.rb +4 -2
  163. data/app/serializers/spree/api/v3/admin/media_serializer.rb +1 -3
  164. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
  165. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +3 -9
  166. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
  167. data/app/serializers/spree/api/v3/admin/order_serializer.rb +5 -15
  168. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
  169. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -1
  170. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -7
  171. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
  172. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
  173. data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -10
  174. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
  175. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
  176. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +1 -3
  177. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -3
  178. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +2 -15
  179. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +2 -15
  180. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
  181. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -1
  182. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +1 -0
  183. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
  184. data/app/serializers/spree/api/v3/admin/return_serializer.rb +3 -11
  185. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
  186. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +4 -2
  187. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
  188. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
  189. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +5 -15
  190. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +4 -2
  191. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +6 -19
  192. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
  193. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +1 -3
  194. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +1 -3
  195. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
  196. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
  197. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
  198. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
  199. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +1 -3
  200. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +4 -18
  201. data/app/serializers/spree/api/v3/admin/store_serializer.rb +24 -6
  202. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -3
  203. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -9
  204. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
  205. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +5 -1
  206. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +1 -7
  207. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +6 -7
  208. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
  209. data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
  210. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
  211. data/app/serializers/spree/api/v3/base_serializer.rb +20 -0
  212. data/app/serializers/spree/api/v3/cart_serializer.rb +17 -45
  213. data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
  214. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +11 -26
  215. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -15
  216. data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
  217. data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
  218. data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
  219. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +3 -23
  220. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
  221. data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
  222. data/app/serializers/spree/api/v3/discount_serializer.rb +1 -12
  223. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +9 -27
  224. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -15
  225. data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
  226. data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
  227. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
  228. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +1 -3
  229. data/app/serializers/spree/api/v3/gift_card_serializer.rb +5 -17
  230. data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
  231. data/app/serializers/spree/api/v3/import_serializer.rb +3 -14
  232. data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
  233. data/app/serializers/spree/api/v3/line_item_serializer.rb +6 -20
  234. data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
  235. data/app/serializers/spree/api/v3/media_serializer.rb +1 -3
  236. data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
  237. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
  238. data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
  239. data/app/serializers/spree/api/v3/order_group_serializer.rb +2 -23
  240. data/app/serializers/spree/api/v3/order_serializer.rb +12 -38
  241. data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
  242. data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
  243. data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
  244. data/app/serializers/spree/api/v3/payment_session_serializer.rb +3 -9
  245. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
  246. data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
  247. data/app/serializers/spree/api/v3/price_history_serializer.rb +1 -3
  248. data/app/serializers/spree/api/v3/price_serializer.rb +1 -3
  249. data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
  250. data/app/serializers/spree/api/v3/product_serializer.rb +7 -21
  251. data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
  252. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
  253. data/app/serializers/spree/api/v3/refund_serializer.rb +3 -11
  254. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +12 -19
  255. data/app/serializers/spree/api/v3/return_serializer.rb +6 -15
  256. data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
  257. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +1 -7
  258. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +1 -7
  259. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
  260. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
  261. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +1 -3
  262. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
  263. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
  264. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
  265. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +7 -13
  266. data/app/serializers/spree/api/v3/seller/order_serializer.rb +4 -25
  267. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +4 -2
  268. data/app/serializers/spree/api/v3/seller/product_serializer.rb +1 -7
  269. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
  270. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +2 -6
  271. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
  272. data/app/serializers/spree/api/v3/seller/return_serializer.rb +3 -15
  273. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +4 -2
  274. data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
  275. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
  276. data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
  277. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
  278. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
  279. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
  280. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -11
  281. data/app/serializers/spree/api/v3/store_credit_serializer.rb +2 -24
  282. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
  283. data/app/serializers/spree/api/v3/tax_line_serializer.rb +10 -20
  284. data/app/serializers/spree/api/v3/variant_serializer.rb +7 -21
  285. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
  286. data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
  287. data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
  288. data/config/initializers/pagy.rb +1 -1
  289. data/config/initializers/typelizer.rb +6 -8
  290. data/config/locales/ar.yml +15 -0
  291. data/config/locales/be.yml +15 -0
  292. data/config/locales/bg.yml +15 -0
  293. data/config/locales/ca.yml +15 -0
  294. data/config/locales/cs.yml +15 -0
  295. data/config/locales/da.yml +15 -0
  296. data/config/locales/de-CH.yml +11 -0
  297. data/config/locales/de.yml +15 -0
  298. data/config/locales/el.yml +15 -0
  299. data/config/locales/en.yml +5 -40
  300. data/config/locales/es-CL.yml +10 -0
  301. data/config/locales/es-EC.yml +11 -0
  302. data/config/locales/es-MX.yml +12 -0
  303. data/config/locales/es.yml +15 -0
  304. data/config/locales/et.yml +15 -0
  305. data/config/locales/fa.yml +15 -0
  306. data/config/locales/fi.yml +15 -0
  307. data/config/locales/fr.yml +15 -0
  308. data/config/locales/hu.yml +15 -0
  309. data/config/locales/id.yml +15 -0
  310. data/config/locales/it.yml +15 -0
  311. data/config/locales/ja.yml +15 -0
  312. data/config/locales/km.yml +15 -0
  313. data/config/locales/ko.yml +15 -0
  314. data/config/locales/ku.yml +15 -0
  315. data/config/locales/lt.yml +15 -0
  316. data/config/locales/lv.yml +15 -0
  317. data/config/locales/nb.yml +15 -0
  318. data/config/locales/ne.yml +15 -0
  319. data/config/locales/nl.yml +15 -0
  320. data/config/locales/pl.yml +15 -0
  321. data/config/locales/pt-BR.yml +13 -0
  322. data/config/locales/pt.yml +15 -0
  323. data/config/locales/ro.yml +15 -0
  324. data/config/locales/ru.yml +15 -0
  325. data/config/locales/sk.yml +15 -0
  326. data/config/locales/sl-SI.yml +15 -0
  327. data/config/locales/sv.yml +15 -0
  328. data/config/locales/th.yml +15 -0
  329. data/config/locales/tr.yml +15 -0
  330. data/config/locales/uk.yml +15 -0
  331. data/config/locales/vi.yml +15 -0
  332. data/config/locales/zh-CN.yml +15 -0
  333. data/config/locales/zh-TW.yml +15 -0
  334. data/config/routes.rb +49 -99
  335. data/lib/spree/api/dependencies.rb +53 -274
  336. data/lib/spree/api/openapi/schema_helper.rb +1 -1
  337. data/lib/spree/api/typelizer_generation.rb +35 -0
  338. data/lib/spree/api/webhook_event_types.rb +140 -0
  339. data/lib/spree/api.rb +0 -2
  340. metadata +71 -36
  341. data/config/i18n-tasks.yml +0 -40
  342. data/config/initializers/alba.rb +0 -5
@@ -4,7 +4,7 @@ module Spree
4
4
  module Admin
5
5
  # Serializes one permission catalog entry
6
6
  # (Spree::PermissionConfiguration::Entry) for the discovery endpoint.
7
- # Labels and descriptions resolve through Spree.t so backend extensions
7
+ # Labels and descriptions resolve through I18n so backend extensions
8
8
  # localize without shipping dashboard translations.
9
9
  class PermissionSerializer
10
10
  include Alba::Resource
@@ -20,17 +20,17 @@ module Spree
20
20
  attribute(:group) { |entry| entry.scope.group.to_s }
21
21
 
22
22
  attribute(:group_label) do |entry|
23
- Spree.t("permissions_catalog.groups.#{entry.scope.group}",
23
+ I18n.t("spree.permissions_catalog.groups.#{entry.scope.group}",
24
24
  default: entry.scope.group.to_s.humanize)
25
25
  end
26
26
 
27
27
  attribute(:label) do |entry|
28
- Spree.t("permissions_catalog.resources.#{entry.scope.name}.label",
28
+ I18n.t("spree.permissions_catalog.resources.#{entry.scope.name}.label",
29
29
  default: entry.scope.name.to_s.humanize)
30
30
  end
31
31
 
32
32
  attribute(:description) do |entry|
33
- Spree.t("permissions_catalog.resources.#{entry.scope.name}.description", default: '')
33
+ I18n.t("spree.permissions_catalog.resources.#{entry.scope.name}.description", default: '')
34
34
  end
35
35
  end
36
36
  end
@@ -17,9 +17,7 @@ module Spree
17
17
  rule.class.api_type
18
18
  end
19
19
 
20
- attribute :price_list_id do |rule|
21
- rule.price_list&.prefixed_id
22
- end
20
+ prefixed_id_attributes :price_list
23
21
 
24
22
  attribute :preferences, &:serialized_preferences
25
23
  attribute :preference_schema, &:serialized_preference_schema
@@ -24,9 +24,7 @@ module Spree
24
24
  :metadata, deleted_at: :iso8601,
25
25
  created_at: :iso8601, updated_at: :iso8601
26
26
 
27
- attribute :delivery_profile_id do |product|
28
- product.delivery_profile&.prefixed_id
29
- end
27
+ prefixed_id_attributes :delivery_profile
30
28
 
31
29
  # The live row in the review trail: who submitted, who decided,
32
30
  # when, and what the seller was told. Expanded rather than always
@@ -47,13 +45,7 @@ module Spree
47
45
  resource: proc { Spree.api.admin_seller_serializer },
48
46
  if: proc { expand?('seller') }
49
47
 
50
- attribute :product_type_id do |product|
51
- product.product_type&.prefixed_id
52
- end
53
-
54
- attribute :tax_category_id do |product|
55
- product.tax_category&.prefixed_id
56
- end
48
+ prefixed_id_attributes :product_type, :tax_category
57
49
 
58
50
  attribute :price do |product|
59
51
  price = price_for(product.default_variant)
@@ -14,13 +14,7 @@ module Spree
14
14
 
15
15
  attributes :metadata, updated_at: :iso8601
16
16
 
17
- attribute :submitted_by_id do |submission|
18
- submission.submitted_by&.prefixed_id
19
- end
20
-
21
- attribute :reviewed_by_id do |submission|
22
- submission.reviewed_by&.prefixed_id
23
- end
17
+ prefixed_id_attributes :submitted_by, :reviewed_by
24
18
 
25
19
  # An operator reading the trail wants a name, not an id to resolve.
26
20
  attribute :reviewed_by_name do |submission|
@@ -29,9 +23,7 @@ module Spree
29
23
 
30
24
  # Distinguishes "the store approves listings automatically" from a
31
25
  # decision whose author we failed to record.
32
- attribute :auto_approved do |submission|
33
- submission.auto_approved?
34
- end
26
+ attribute :auto_approved, &:auto_approved?
35
27
  end
36
28
  end
37
29
  end
@@ -15,9 +15,7 @@ module Spree
15
15
 
16
16
  # The creation-time template: stamped onto products at creation,
17
17
  # never synced afterwards.
18
- attribute :delivery_profile_id do |record|
19
- record.delivery_profile&.prefixed_id
20
- end
18
+ prefixed_id_attributes :delivery_profile
21
19
 
22
20
  # Prefixed ids of the option types and categories this type seeds onto
23
21
  # new products — the same payload the client sends back on PATCH.
@@ -22,9 +22,7 @@ module Spree
22
22
  action.class.api_type
23
23
  end
24
24
 
25
- attribute :promotion_id do |action|
26
- action.promotion&.prefixed_id
27
- end
25
+ prefixed_id_attributes :promotion
28
26
 
29
27
  attribute :preferences, &:serialized_preferences
30
28
  attribute :preference_schema, &:serialized_preference_schema
@@ -23,9 +23,7 @@ module Spree
23
23
  rule.class.api_type
24
24
  end
25
25
 
26
- attribute :promotion_id do |rule|
27
- rule.promotion&.prefixed_id
28
- end
26
+ prefixed_id_attributes :promotion
29
27
 
30
28
  attribute :preferences, &:serialized_preferences
31
29
  attribute :preference_schema, &:serialized_preference_schema
@@ -32,25 +32,12 @@ module Spree
32
32
  item.unit_cost&.to_s
33
33
  end
34
34
 
35
- attribute :total_cost do |item|
36
- item.total_cost.to_s
37
- end
38
-
39
- attribute :display_unit_cost do |item|
40
- item.display_unit_cost.to_s
41
- end
42
-
43
- attribute :display_total_cost do |item|
44
- item.display_total_cost.to_s
45
- end
46
-
35
+ attributes total_cost: :string, display_unit_cost: :string, display_total_cost: :string
47
36
  attribute :purchase_order_id do |item|
48
37
  Spree::PurchaseOrder.prefixed_id_for(item.purchase_order_id)
49
38
  end
50
39
 
51
- attribute :variant_id do |item|
52
- item.variant&.prefixed_id
53
- end
40
+ prefixed_id_attributes :variant
54
41
 
55
42
  # The product the line's variant belongs to, so a line can link
56
43
  # straight to the screen where that SKU's stock lives.
@@ -56,21 +56,8 @@ module Spree
56
56
 
57
57
  attribute :editable, &:editable?
58
58
 
59
- attribute :subtotal do |purchase_order|
60
- purchase_order.subtotal.to_s
61
- end
62
-
63
- attribute :display_subtotal do |purchase_order|
64
- purchase_order.display_subtotal.to_s
65
- end
66
-
67
- attribute :supplier_id do |purchase_order|
68
- purchase_order.supplier&.prefixed_id
69
- end
70
-
71
- attribute :destination_location_id do |purchase_order|
72
- purchase_order.destination_location&.prefixed_id
73
- end
59
+ attributes subtotal: :string, display_subtotal: :string
60
+ prefixed_id_attributes :supplier, :destination_location
74
61
 
75
62
  many :items,
76
63
  resource: proc { Spree.api.admin_purchase_order_item_serializer },
@@ -17,9 +17,7 @@ module Spree
17
17
 
18
18
  # Lets the dashboard hide destructive controls instead of offering a
19
19
  # delete that the model will refuse.
20
- attribute :can_be_deleted do |reason|
21
- reason.can_be_deleted?
22
- end
20
+ attribute :can_be_deleted, &:can_be_deleted?
23
21
  end
24
22
  end
25
23
  end
@@ -7,11 +7,14 @@ module Spree
7
7
  refund_reason_id: [:string, nullable: true],
8
8
  refunder_id: [:string, nullable: true],
9
9
  refunder_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind'],
10
- metadata: 'Record<string, unknown>'
10
+ metadata: 'Record<string, unknown>',
11
+ tax_amount: :string
11
12
 
12
13
  attributes :metadata,
13
14
  created_at: :iso8601, updated_at: :iso8601
14
15
 
16
+ # The tax inside the amount, when what was refunded carried tax.
17
+ attributes tax_amount: :string
15
18
  # Who issued it — an admin user, or the API key an integration
16
19
  # refunded through.
17
20
  actor_attributes :refunder
@@ -9,6 +9,7 @@ module Spree
9
9
 
10
10
  one :variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('variant') }
11
11
  one :line_item, resource: proc { Spree.api.admin_line_item_serializer }, if: proc { expand?('line_item') }
12
+ many :tax_lines, resource: proc { Spree.api.admin_tax_line_serializer }, if: proc { expand?('tax_lines') }
12
13
  end
13
14
  end
14
15
  end
@@ -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
@@ -12,24 +12,16 @@ module Spree
12
12
  created_by_id: [:string, nullable: true],
13
13
  created_by_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind'],
14
14
  refunded_total: :string,
15
+ display_refunded_total: :string,
15
16
  refundable_total: :string
16
17
 
17
18
  attributes :memo, :metadata, created_at: :iso8601, updated_at: :iso8601
18
19
 
19
- attribute :stock_location_id do |return_record|
20
- return_record.stock_location&.prefixed_id
21
- end
20
+ prefixed_id_attributes :stock_location
22
21
 
23
22
  actor_attributes :created_by
24
23
 
25
- attribute :refunded_total do |return_record|
26
- return_record.refunded_total.to_s
27
- end
28
-
29
- attribute :refundable_total do |return_record|
30
- return_record.refundable_total.to_s
31
- end
32
-
24
+ attributes refunded_total: :string, display_refunded_total: :string, refundable_total: :string
33
25
  many :return_line_items,
34
26
  resource: proc { Spree.api.admin_return_line_item_serializer },
35
27
  if: proc { expand?('return_line_items') }
@@ -16,9 +16,7 @@ module Spree
16
16
 
17
17
  attributes :name, :description, :query, :seeded, :created_at, :updated_at
18
18
 
19
- attribute :user_id do |report|
20
- report.user&.prefixed_id
21
- end
19
+ prefixed_id_attributes :user
22
20
 
23
21
  # The same "name, else email" rule every actor answers, so a report's
24
22
  # author and an order's canceler read alike.
@@ -11,7 +11,7 @@ module Spree
11
11
  typelize seller_id: :string,
12
12
  seller_name: 'string | null',
13
13
  status: [:string, enum: Spree::SellerPayout.statuses, enum_type_name: 'SellerPayoutStatus'],
14
- provider: [:string, comment: 'Payout provider class name. Built-in: Spree::PayoutProvider::System. Provider gems register more.'],
14
+ provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
15
15
  amount: :string,
16
16
  currency: :string,
17
17
  reference: 'string | null',
@@ -20,7 +20,7 @@ module Spree
20
20
  transfers_count: :number,
21
21
  display_amount: :string
22
22
 
23
- attributes :status, :currency, :provider, :reference, :metadata,
23
+ attributes :status, :currency, :reference, :metadata,
24
24
  period_start: :iso8601, period_end: :iso8601,
25
25
  created_at: :iso8601, updated_at: :iso8601
26
26
 
@@ -39,6 +39,8 @@ module Spree
39
39
 
40
40
  counts ? counts.fetch(payout.id, 0) : payout.transfers.count
41
41
  end
42
+
43
+ api_type_attributes :provider
42
44
  end
43
45
  end
44
46
  end
@@ -22,17 +22,13 @@ module Spree
22
22
  # Whether this stands between the seller and approval. Serialized
23
23
  # rather than left to each client to derive, so the dashboard's
24
24
  # override warning and the approval gate cannot disagree.
25
- attribute :blocking do |status|
26
- status.blocking?
27
- end
25
+ attribute :blocking, &:blocking?
28
26
 
29
27
  # The document this line asks for, and what the seller published
30
28
  # against it. Embedded rather than left to a second request: the
31
29
  # operator is deciding whether to approve, and a line that says
32
30
  # "Done" without showing the text is not something to approve on.
33
- attribute :required_policy_name do |status|
34
- status.required_policy_name
35
- end
31
+ attributes :required_policy_name
36
32
 
37
33
  one :submission,
38
34
  resource: proc { Spree.api.admin_seller_requirement_submission_serializer },
@@ -21,13 +21,7 @@ module Spree
21
21
  created_at: :iso8601,
22
22
  updated_at: :iso8601
23
23
 
24
- attribute :seller_id do |submission|
25
- submission.seller&.prefixed_id
26
- end
27
-
28
- attribute :requirement_id do |submission|
29
- submission.requirement&.prefixed_id
30
- end
24
+ prefixed_id_attributes :seller, :requirement
31
25
 
32
26
  # The reviewer is looking at a queue of these and needs to know what
33
27
  # each one answers without fetching the requirement.
@@ -43,20 +43,14 @@ module Spree
43
43
 
44
44
  # Approved but away still cannot sell, and the list has to say so
45
45
  # without the dashboard re-deriving the rule.
46
- attribute :on_holiday do |seller|
47
- seller.on_holiday?
48
- end
46
+ attribute :on_holiday, &:on_holiday?
49
47
 
50
- attribute :sellable do |seller|
51
- seller.sellable?
52
- end
48
+ attribute :sellable, &:sellable?
53
49
 
54
50
  # Saves the dashboard a request per row for the two counts its list
55
51
  # and header show. Read off the seller, which memoizes the SQL count
56
52
  # so the minimum-products requirement asks the same question free.
57
- attribute :products_count do |seller|
58
- seller.products_count
59
- end
53
+ attributes :products_count
60
54
 
61
55
  attribute :users_count do |seller|
62
56
  seller.users.size
@@ -67,13 +61,9 @@ module Spree
67
61
  # requirements themselves, with their submissions, stay on the
68
62
  # heavier `onboarding` action; a list of sellers needs the number,
69
63
  # not the rows behind it.
70
- attribute :onboarding_progress do |seller|
71
- seller.onboarding_progress
72
- end
64
+ attributes :onboarding_progress
73
65
 
74
- attribute :onboarding_complete do |seller|
75
- seller.onboarding_complete?
76
- end
66
+ attribute :onboarding_complete, &:onboarding_complete?
77
67
 
78
68
  attribute :legal_name, &:legal_name
79
69
  attribute :registration_number, &:registration_number
@@ -16,7 +16,7 @@ module Spree
16
16
  order_number: 'string | null',
17
17
  kind: [:string, enum: Spree::SellerTransfer::KINDS],
18
18
  status: [:string, enum: Spree::SellerTransfer.statuses, enum_type_name: 'SellerTransferStatus'],
19
- provider: [:string, comment: 'Payout provider class name. Built-in: Spree::PayoutProvider::System. Provider gems register more.'],
19
+ provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
20
20
  amount: :string,
21
21
  currency: :string,
22
22
  settled_amount: 'string | null',
@@ -25,7 +25,7 @@ module Spree
25
25
  reference: 'string | null',
26
26
  display_amount: :string
27
27
 
28
- attributes :kind, :status, :currency, :provider, :reference, :metadata,
28
+ attributes :kind, :status, :currency, :reference, :metadata,
29
29
  created_at: :iso8601, updated_at: :iso8601
30
30
 
31
31
  # A string, so the figure a seller is paid round-trips exactly.
@@ -46,6 +46,8 @@ module Spree
46
46
  # by row and these are what identify a row to an operator.
47
47
  attribute(:seller_name) { |transfer| transfer.seller&.name }
48
48
  attribute(:order_number) { |transfer| transfer.order&.number }
49
+
50
+ api_type_attributes :provider
49
51
  end
50
52
  end
51
53
  end
@@ -7,7 +7,7 @@ module Spree
7
7
  # The file is streamed through +download_url+, never linked to storage.
8
8
  class ShippingLabelSerializer < V3::BaseSerializer
9
9
  typelize owner_id: :string,
10
- owner_type: [:string, enum: Spree::ShippingLabel::OWNER_TYPES],
10
+ owner_type: [:string, enum: Spree::ShippingLabel::OWNER_TYPES.map { |type| Spree::Base.polymorphic_api_type(type) }],
11
11
  source: [:string, enum: Spree::ShippingLabel::SOURCES],
12
12
  status: [:string, enum: Spree::ShippingLabel.statuses, enum_type_name: 'ShippingLabelStatus'],
13
13
  carrier: [:string, nullable: true],
@@ -28,31 +28,18 @@ module Spree
28
28
  attributes :source, :status, :carrier, :carrier_name, :service, :tracking_number, :currency, :format,
29
29
  :external_id, :metadata, refunded_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
30
30
 
31
- attribute :owner_id do |shipping_label|
32
- shipping_label.owner&.prefixed_id
33
- end
31
+ prefixed_id_attributes :owner
34
32
 
35
33
  attribute :owner_type do |shipping_label|
36
- shipping_label.owner_type == 'Spree::Return' ? 'return' : 'fulfillment'
37
- end
38
-
39
- attribute :cost do |shipping_label|
40
- shipping_label.cost.to_s
34
+ Spree::Base.polymorphic_api_type(shipping_label.owner_type)
41
35
  end
42
36
 
43
- attribute :display_cost do |shipping_label|
44
- shipping_label.display_cost.to_s
45
- end
46
-
47
- attribute :integration_id do |shipping_label|
48
- shipping_label.integration&.prefixed_id
49
- end
37
+ attributes cost: :string, display_cost: :string
38
+ prefixed_id_attributes :integration
50
39
 
51
40
  # Whether the file is still being fetched from the carrier; the
52
41
  # download proxies the provider's copy meanwhile.
53
- attribute :file_pending do |shipping_label|
54
- shipping_label.file_pending?
55
- end
42
+ attribute :file_pending, &:file_pending?
56
43
 
57
44
  # Our own endpoint rather than a storage URL: the controller streams
58
45
  # the bytes, so admin auth runs on every print.
@@ -27,9 +27,7 @@ module Spree
27
27
  stock_level.stock_location&.name
28
28
  end
29
29
 
30
- attribute :product_id do |stock_level|
31
- stock_level.product&.prefixed_id
32
- end
30
+ prefixed_id_attributes :product
33
31
 
34
32
  attribute :options_text do |stock_level|
35
33
  stock_level.variant&.options_text.presence
@@ -22,9 +22,7 @@ module Spree
22
22
  :pickup_ready_in_minutes, :pickup_instructions,
23
23
  created_at: :iso8601, updated_at: :iso8601
24
24
 
25
- attribute :seller_id do |stock_location|
26
- stock_location.seller&.prefixed_id
27
- end
25
+ prefixed_id_attributes :seller
28
26
 
29
27
  attribute :seller_name do |stock_location|
30
28
  stock_location.seller&.name
@@ -68,9 +68,7 @@ module Spree
68
68
  Spree::StockTransfer.prefixed_id_for(movement.stock_transfer_id)
69
69
  end
70
70
 
71
- attribute :stock_receipt_id do |movement|
72
- movement.stock_receipt&.prefixed_id
73
- end
71
+ prefixed_id_attributes :stock_receipt
74
72
 
75
73
  attribute :purchase_order_id do |movement|
76
74
  Spree::PurchaseOrder.prefixed_id_for(movement.purchase_order_id)
@@ -25,13 +25,7 @@ module Spree
25
25
  item.line_type.demodulize.underscore
26
26
  end
27
27
 
28
- attribute :line_id do |item|
29
- item.line&.prefixed_id
30
- end
31
-
32
- attribute :variant_id do |item|
33
- item.variant&.prefixed_id
34
- end
28
+ prefixed_id_attributes :line, :variant
35
29
 
36
30
  # The product the line's variant belongs to, so a delivery's line
37
31
  # can link to the screen where that SKU's stock lives.
@@ -28,9 +28,7 @@ module Spree
28
28
  receipt.receivable_type.demodulize.underscore
29
29
  end
30
30
 
31
- attribute :receivable_id do |receipt|
32
- receipt.receivable&.prefixed_id
33
- end
31
+ prefixed_id_attributes :receivable
34
32
 
35
33
  actor_attributes :received_by
36
34
 
@@ -34,9 +34,7 @@ module Spree
34
34
 
35
35
  attributes :quantity, expires_at: :iso8601
36
36
 
37
- attribute :active do |reservation|
38
- reservation.active?
39
- end
37
+ attribute :active, &:active?
40
38
 
41
39
  attributes created_at: :iso8601, updated_at: :iso8601
42
40
  end
@@ -25,9 +25,7 @@ module Spree
25
25
  Spree::StockTransfer.prefixed_id_for(item.stock_transfer_id)
26
26
  end
27
27
 
28
- attribute :variant_id do |item|
29
- item.variant&.prefixed_id
30
- end
28
+ prefixed_id_attributes :variant
31
29
 
32
30
  # The product the line's variant belongs to, so a line can link
33
31
  # straight to the screen where that SKU's stock lives.
@@ -11,9 +11,7 @@ module Spree
11
11
 
12
12
  attributes updated_at: :iso8601
13
13
 
14
- attribute :store_credit_id do |event|
15
- event.store_credit&.prefixed_id
16
- end
14
+ prefixed_id_attributes :store_credit
17
15
 
18
16
  attribute :originator_type do |event|
19
17
  Spree::Base.polymorphic_api_type(event.originator_type)
@@ -16,27 +16,13 @@ module Spree
16
16
  attributes :memo, :metadata,
17
17
  created_at: :iso8601, updated_at: :iso8601
18
18
 
19
- attribute :amount_authorized do |store_credit|
20
- store_credit.amount_authorized.to_s
21
- end
22
-
19
+ attributes amount_authorized: :string
23
20
  # Answers the same question as the `outstanding` filter, so the row
24
21
  # and the filter cannot disagree.
25
- attribute :outstanding do |store_credit|
26
- store_credit.outstanding?
27
- end
28
-
29
- attribute :display_amount_authorized do |store_credit|
30
- store_credit.display_amount_authorized.to_s
31
- end
32
-
33
- attribute :customer_id do |store_credit|
34
- store_credit.customer&.prefixed_id
35
- end
22
+ attribute :outstanding, &:outstanding?
36
23
 
37
- attribute :created_by_id do |store_credit|
38
- store_credit.created_by&.prefixed_id
39
- end
24
+ attributes display_amount_authorized: :string
25
+ prefixed_id_attributes :customer, :created_by
40
26
 
41
27
  # Why the credit exists: the return, exchange, claim or gift card
42
28
  # that issued it, or null when an admin issued it by hand. The type