spree_api 5.6.1 → 6.0.0.beta2

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 (542) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +28 -0
  3. data/Rakefile +1 -1
  4. data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
  5. data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
  6. data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
  7. data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
  8. data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
  9. data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
  10. data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
  11. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
  12. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
  13. data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
  14. data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +20 -5
  15. data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
  16. data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
  17. data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
  18. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
  19. data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
  20. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
  21. data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
  22. data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
  23. data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
  24. data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
  25. data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
  26. data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
  27. data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
  28. data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
  29. data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
  30. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
  31. data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
  32. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
  33. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
  34. data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
  35. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
  36. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
  37. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
  38. data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
  39. data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
  40. data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
  41. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
  42. data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
  43. data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
  44. data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
  45. data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
  46. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
  47. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
  48. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +18 -9
  49. data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
  50. data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
  51. data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
  52. data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
  53. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
  54. data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
  55. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
  56. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
  57. data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
  58. data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
  59. data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
  60. data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
  61. data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
  62. data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
  63. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
  64. data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
  65. data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
  66. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
  67. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
  68. data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
  69. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
  70. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
  71. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
  72. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
  73. data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
  74. data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
  75. data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
  76. data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
  77. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
  78. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
  79. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
  80. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
  81. data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
  82. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
  83. data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
  84. data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
  85. data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
  86. data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
  87. data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
  88. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
  89. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
  90. data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
  91. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
  92. data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
  93. data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
  94. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
  95. data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
  96. data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
  97. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
  98. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
  99. data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
  100. data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
  101. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
  102. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
  103. data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
  104. data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
  105. data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
  106. data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
  107. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
  108. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
  109. data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
  110. data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
  111. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
  112. data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
  113. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
  114. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
  115. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
  116. data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
  117. data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
  118. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
  119. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
  120. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
  121. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
  122. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
  123. data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
  124. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
  125. data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
  126. data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
  127. data/app/controllers/spree/api/v3/admin/orders_controller.rb +164 -33
  128. data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
  129. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
  130. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
  131. data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
  132. data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
  133. data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
  134. data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
  135. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
  136. data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
  137. data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
  138. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
  139. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
  140. data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
  141. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
  142. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
  143. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
  144. data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
  145. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
  146. data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
  147. data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
  148. data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
  149. data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
  150. data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
  151. data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
  152. data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
  153. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
  154. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
  155. data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
  156. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
  157. data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
  158. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
  159. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
  160. data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
  161. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
  162. data/app/controllers/spree/api/v3/admin/setup_controller.rb +239 -0
  163. data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
  164. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
  165. data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
  166. data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
  167. data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
  168. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
  169. data/app/controllers/spree/api/v3/admin/store_controller.rb +66 -0
  170. data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
  171. data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
  172. data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
  173. data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
  174. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
  175. data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
  176. data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
  177. data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
  178. data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
  179. data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
  180. data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
  181. data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
  182. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
  183. data/app/controllers/spree/api/v3/base_controller.rb +74 -16
  184. data/app/controllers/spree/api/v3/resource_controller.rb +170 -39
  185. data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
  186. data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
  187. data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
  188. data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
  189. data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
  190. data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
  191. data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
  192. data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
  193. data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
  194. data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
  195. data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
  196. data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
  197. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
  198. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
  199. data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
  200. data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
  201. data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
  202. data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
  203. data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
  204. data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
  205. data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
  206. data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
  207. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
  208. data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
  209. data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
  210. data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
  211. data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
  212. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
  213. data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
  214. data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
  215. data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
  216. data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
  217. data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
  218. data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
  219. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
  220. data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
  221. data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
  222. data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
  223. data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
  224. data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
  225. data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
  226. data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
  227. data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
  228. data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
  229. data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
  230. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
  231. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
  232. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
  233. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
  234. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
  235. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
  236. data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
  237. data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
  238. data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
  239. data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
  240. data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
  241. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
  242. data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
  243. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
  244. data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
  245. data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
  246. data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
  247. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
  248. data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
  249. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
  250. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
  251. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
  252. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
  253. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
  254. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
  255. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
  256. data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
  257. data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
  258. data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
  259. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
  260. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
  261. data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
  262. data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
  263. data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
  264. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
  265. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
  266. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
  267. data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
  268. data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
  269. data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
  270. data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
  271. data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
  272. data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
  273. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
  274. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
  275. data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
  276. data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
  277. data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
  278. data/app/models/spree/api/data_request_urls.rb +25 -0
  279. data/app/models/spree/api/digital_link_urls.rb +26 -0
  280. data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
  281. data/app/serializers/spree/api/v3/admin/actor_serializer.rb +28 -0
  282. data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
  283. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
  284. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +15 -2
  285. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
  286. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
  287. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
  288. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
  289. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
  290. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
  291. data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
  292. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
  293. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
  294. data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
  295. data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
  296. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
  297. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
  298. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
  299. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +28 -0
  300. data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
  301. data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
  302. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
  303. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
  304. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
  305. data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
  306. data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
  307. data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
  308. data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
  309. data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
  310. data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
  311. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
  312. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
  313. data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
  314. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
  315. data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
  316. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
  317. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
  318. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
  319. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
  320. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
  321. data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
  322. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
  323. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
  324. data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
  325. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
  326. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
  327. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
  328. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
  329. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +34 -0
  330. data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
  331. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
  332. data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
  333. data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
  334. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
  335. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
  336. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
  337. data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
  338. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
  339. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
  340. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +46 -5
  341. data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
  342. data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
  343. data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
  344. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
  345. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
  346. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  347. data/app/serializers/spree/api/v3/admin/order_serializer.rb +126 -31
  348. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
  349. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
  350. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
  351. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
  352. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
  353. data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
  354. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
  355. data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
  356. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
  357. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
  358. data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
  359. data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
  360. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
  361. data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
  362. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
  363. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
  364. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
  365. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
  366. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
  367. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
  368. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +6 -5
  369. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
  370. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
  371. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
  372. data/app/serializers/spree/api/v3/admin/return_serializer.rb +58 -0
  373. data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
  374. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +32 -0
  375. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
  376. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
  377. data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
  378. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
  379. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
  380. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
  381. data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
  382. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
  383. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
  384. data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
  385. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
  386. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
  387. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
  388. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
  389. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +48 -0
  390. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
  391. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
  392. data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
  393. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
  394. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
  395. data/app/serializers/spree/api/v3/admin/store_serializer.rb +65 -1
  396. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
  397. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
  398. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
  399. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
  400. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
  401. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
  402. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
  403. data/app/serializers/spree/api/v3/base_serializer.rb +61 -2
  404. data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
  405. data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
  406. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
  407. data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
  408. data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
  409. data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
  410. data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
  411. data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
  412. data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
  413. data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
  414. data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
  415. data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
  416. data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
  417. data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
  418. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
  419. data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
  420. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
  421. data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
  422. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
  423. data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
  424. data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
  425. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
  426. data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
  427. data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
  428. data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
  429. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
  430. data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
  431. data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
  432. data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
  433. data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
  434. data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
  435. data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
  436. data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
  437. data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
  438. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
  439. data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
  440. data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
  441. data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
  442. data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
  443. data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
  444. data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
  445. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
  446. data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
  447. data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
  448. data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
  449. data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
  450. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
  451. data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
  452. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
  453. data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
  454. data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
  455. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
  456. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
  457. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
  458. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
  459. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
  460. data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
  461. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
  462. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
  463. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
  464. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
  465. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
  466. data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
  467. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
  468. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
  469. data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
  470. data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
  471. data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
  472. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
  473. data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
  474. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
  475. data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
  476. data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
  477. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
  478. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
  479. data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
  480. data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
  481. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
  482. data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
  483. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
  484. data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
  485. data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
  486. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
  487. data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
  488. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
  489. data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
  490. data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
  491. data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
  492. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
  493. data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
  494. data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
  495. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
  496. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
  497. data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
  498. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
  499. data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
  500. data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
  501. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
  502. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
  503. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
  504. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
  505. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
  506. data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
  507. data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
  508. data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
  509. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
  510. data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
  511. data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
  512. data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
  513. data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
  514. data/config/brakeman.ignore +1 -1
  515. data/config/initializers/typelizer.rb +51 -4
  516. data/config/locales/en.yml +5 -0
  517. data/config/routes.rb +730 -22
  518. data/lib/spree/api/configuration.rb +19 -19
  519. data/lib/spree/api/dependencies.rb +174 -227
  520. data/lib/spree/api/engine.rb +6 -0
  521. data/lib/spree/api/openapi/schema_helper.rb +179 -13
  522. data/lib/spree/api/testing_support/v3/base.rb +45 -15
  523. data/lib/spree/api.rb +10 -4
  524. data/lib/typelizer/open_enums.rb +35 -0
  525. metadata +342 -27
  526. data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
  527. data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
  528. data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
  529. data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
  530. data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
  531. data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
  532. data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
  533. data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
  534. data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
  535. data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
  536. data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
  537. data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
  538. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
  539. data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
  540. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
  541. data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
  542. data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
@@ -7,7 +7,16 @@ module Spree
7
7
  typelize number: :string, current_step: :string, completed_steps: 'string[]', token: :string, email: [:string, nullable: true],
8
8
  customer_note: [:string, nullable: true], market_id: [:string, nullable: true], channel_id: [:string, nullable: true],
9
9
  currency: :string, locale: [:string, nullable: true], total_quantity: :number,
10
- requirements: 'Array<{step: string, field: string, message: string}>',
10
+ coupon_code: [:string, nullable: true],
11
+ preferred_stock_location_id: [:string, nullable: true],
12
+ company_id: [:string, nullable: true], company_name: [:string, nullable: true],
13
+ po_number: [:string, nullable: true], po_number_required: :boolean,
14
+ po_document_filename: [:string, nullable: true],
15
+ po_document_byte_size: ['number | null'],
16
+ order_minimum: ['number | null'], order_minimum_shortfall: ['number | null'],
17
+ below_order_minimum: ['boolean | null'],
18
+ freight_summary: [:FreightSummary, nullable: true],
19
+ requirements: 'Array<{step: string, field: string, code: string, message: string}>',
11
20
  item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
12
21
  delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
13
22
  adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
@@ -15,21 +24,17 @@ module Spree
15
24
  tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
16
25
  included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
17
26
  additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
27
+ fee_total: [:string, nullable: true], display_fee_total: [:string, nullable: true],
18
28
  store_credit_total: [:string, nullable: true], display_store_credit_total: [:string, nullable: true],
19
29
  gift_card_total: [:string, nullable: true], display_gift_card_total: [:string, nullable: true],
20
30
  covered_by_store_credit: :boolean,
21
31
  total: [:string, nullable: true], display_total: [:string, nullable: true],
22
32
  amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
23
33
  shipping_eq_billing_address: :boolean,
24
- warnings: 'Array<{code: string, message: string, line_item_id?: string, variant_id?: string}>',
34
+ warnings: 'Array<{code: string, message: string, line_item_id?: string, variant_id?: string, item_index?: number}>',
25
35
  billing_address: { nullable: true }, shipping_address: { nullable: true },
26
36
  gift_card: { nullable: true }, market: { nullable: true }
27
37
 
28
- # Override ID to use cart_ prefix
29
- attribute :id do |order|
30
- "cart_#{Spree::PrefixedId::SQIDS.encode([order.id])}"
31
- end
32
-
33
38
  attribute :market_id do |order|
34
39
  order.market&.prefixed_id
35
40
  end
@@ -41,8 +46,40 @@ module Spree
41
46
  order.channel&.prefixed_id
42
47
  end
43
48
 
44
- attributes :number, :token, :email, :customer_note,
45
- :currency, :locale, :total_quantity, :warnings
49
+ # Pickup selection — mirrors the writable param on cart update.
50
+ attribute :preferred_stock_location_id do |cart|
51
+ cart.preferred_stock_location&.prefixed_id
52
+ end
53
+
54
+ # Which company node the purchase is for — mirrors the writable
55
+ # `company_id` param. Read from the column, never re-resolved.
56
+ attribute :company_id do |cart|
57
+ cart.company&.prefixed_id
58
+ end
59
+
60
+ attribute :company_name do |cart|
61
+ cart.company&.name
62
+ end
63
+
64
+ # The buyer's own purchase-order reference, and whether their company
65
+ # demands one — the storefront marks the field required from this
66
+ # rather than fetching the company to ask.
67
+ attribute :po_number_required do |cart|
68
+ cart.po_number_required?
69
+ end
70
+
71
+ attribute :po_document_filename do |cart|
72
+ cart.po_document.blob&.filename&.to_s if cart.po_document.attached?
73
+ end
74
+
75
+ attribute :po_document_byte_size do |cart|
76
+ cart.po_document.blob&.byte_size if cart.po_document.attached?
77
+ end
78
+
79
+ # @deprecated `number` mirrors `id` (carts have no order-style
80
+ # number) — kept one release for 5.x clients; removed in 6.1.
81
+ attributes :number, :token, :email, :customer_note, :po_number,
82
+ :currency, :locale, :total_quantity, :warnings, :coupon_code
46
83
 
47
84
  # Nulled for gated (prices_hidden) guests so the cart can't leak the
48
85
  # prices that product/variant serializers already withhold.
@@ -53,7 +90,8 @@ module Spree
53
90
  :additional_tax_total, :display_additional_tax_total, :total, :display_total,
54
91
  :gift_card_total, :display_gift_card_total,
55
92
  :amount_due, :display_amount_due,
56
- :delivery_total, :display_delivery_total
93
+ :delivery_total, :display_delivery_total,
94
+ :fee_total, :display_fee_total
57
95
 
58
96
  attribute :store_credit_total do |order|
59
97
  order.total_applied_store_credit.to_s unless params[:hide_prices]
@@ -75,15 +113,55 @@ module Spree
75
113
  order.completed_checkout_steps
76
114
  end
77
115
 
116
+ # The order-minimum requirement names both amounts in its message, so
117
+ # it is dropped rather than redacted for a gated guest: a requirement
118
+ # with its numbers stripped tells them nothing they can act on.
78
119
  attribute :requirements do |order|
79
- Spree::Checkout::Requirements.new(order).call
120
+ requirements = Spree::Checkout::Requirements.new(order).call
121
+ next requirements unless params[:hide_prices]
122
+
123
+ requirements.reject { |requirement| requirement[:code] == 'order_minimum_not_met' }
124
+ end
125
+
126
+ # The order minimum in force for this buyer, or nil when their
127
+ # agreements state none. Exposed alongside the shortfall so a
128
+ # storefront can render "$180 to reach the $500 minimum" without
129
+ # doing the arithmetic or knowing where the number came from.
130
+ #
131
+ # Gated with the rest of the price surface: a threshold and a
132
+ # shortfall are amounts, and a storefront that hides prices from
133
+ # guests must not hand them "$180 short of $500" instead.
134
+ attribute :order_minimum do |order|
135
+ order.order_minimum_amount&.to_f unless params[:hide_prices]
80
136
  end
81
137
 
138
+ attribute :order_minimum_shortfall do |order|
139
+ order.order_minimum_shortfall&.to_f unless params[:hide_prices]
140
+ end
141
+
142
+ attribute :below_order_minimum do |order|
143
+ order.below_order_minimum? unless params[:hide_prices]
144
+ end
145
+
146
+ # The shipment as a freight forwarder reads it: cartons, pallets,
147
+ # cubic meters, gross weight. Null for anything the store never
148
+ # measured that way, which is every retail cart.
149
+ #
150
+ # The totals are logistics rather than amounts, so they survive a
151
+ # storefront that hides prices; the per-line SKU and product name do
152
+ # not, being the catalog identity such a storefront exists to
153
+ # withhold.
154
+ one :freight_summary, resource: proc { Spree.api.freight_summary_serializer }
155
+
82
156
  attribute :shipping_eq_billing_address do |order|
83
157
  order.shipping_eq_billing_address?
84
158
  end
85
159
 
86
- many :discounts, resource: proc { Spree.api.discount_serializer }
160
+ many :order_promotions, key: :discounts, resource: proc { Spree.api.applied_promotion_serializer }
161
+ # Itemized charges (duties, surcharges, COD, handling). Storefronts
162
+ # group and label these themselves — cross-border duty in particular
163
+ # has to be shown broken out rather than folded into a total.
164
+ many :fees, resource: proc { Spree.api.fee_serializer }
87
165
  many :line_items, key: :items, resource: proc { Spree.api.line_item_serializer }
88
166
  many :fulfillments, resource: proc { Spree.api.fulfillment_serializer }
89
167
  many :payments, resource: proc { Spree.api.payment_serializer }
@@ -18,11 +18,11 @@ module Spree
18
18
  end
19
19
 
20
20
  attribute :description do |category|
21
- category.description&.to_plain_text.to_s
21
+ Spree::RichTextHelper.to_plain_text(category.description)
22
22
  end
23
23
 
24
24
  attribute :description_html do |category|
25
- category.description&.body&.to_s.to_s
25
+ category.description_html
26
26
  end
27
27
 
28
28
  attribute :image_url do |category|
@@ -60,7 +60,7 @@ module Spree
60
60
  resource: proc { Spree.api.category_serializer },
61
61
  if: proc { expand?('ancestors') }
62
62
 
63
- many :public_metafields,
63
+ many :storefront_custom_fields,
64
64
  key: :custom_fields,
65
65
  resource: proc { Spree.api.custom_field_serializer },
66
66
  if: proc { expand?('custom_fields') }
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class ClaimLineItemSerializer < BaseSerializer
7
+ typelize quantity: :number,
8
+ send_replacement: :boolean,
9
+ refund_amount: :string,
10
+ display_refund_amount: :string,
11
+ paid_amount: :string,
12
+ description: [:string, nullable: true],
13
+ variant_id: [:string, nullable: true],
14
+ replacement_variant_id: [:string, nullable: true],
15
+ line_item_id: [:string, nullable: true]
16
+
17
+ attributes :quantity, :send_replacement, :description
18
+
19
+ attribute :refund_amount do |line|
20
+ line.refund_amount.to_s
21
+ end
22
+
23
+ # What the customer actually paid for these units — the ceiling the
24
+ # resolve workflow enforces, and what the dashboard offers when the
25
+ # claim carries no explicit amount.
26
+ attribute :paid_amount do |line|
27
+ line.paid_amount.to_s
28
+ end
29
+
30
+ attribute :display_refund_amount do |line|
31
+ line.display_refund_amount.to_s
32
+ end
33
+
34
+ attribute :variant_id do |line|
35
+ line.variant&.prefixed_id
36
+ end
37
+
38
+ attribute :replacement_variant_id do |line|
39
+ line.replacement_variant&.prefixed_id
40
+ end
41
+
42
+ attribute :line_item_id do |line|
43
+ line.line_item&.prefixed_id
44
+ end
45
+
46
+ one :variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('variant') }
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ # What went wrong with a delivery. Embedded in claims so a customer sees
7
+ # the reason's name rather than only its id; the vocabulary itself has
8
+ # no Store API controller of its own.
9
+ #
10
+ # Parallel to ReturnReasonSerializer rather than sharing a base class:
11
+ # Typelizer emits one TS type per serializer, so a shared parent would
12
+ # publish an abstract `Reason` type that no endpoint returns.
13
+ class ClaimReasonSerializer < BaseSerializer
14
+ typelize name: :string, active: :boolean
15
+
16
+ attributes :name, :active
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ # Customer-facing view of a claim.
7
+ class ClaimSerializer < BaseSerializer
8
+ typelize number: :string,
9
+ status: [:string, enum: Spree::Claim.statuses, enum_type_name: 'ClaimStatus'],
10
+ resolution: [:string, nullable: true],
11
+ order_id: [:string, nullable: true],
12
+ reason_id: [:string, nullable: true],
13
+ refund_total: :string,
14
+ display_refund_total: :string,
15
+ approved_at: [:string, nullable: true],
16
+ resolved_at: [:string, nullable: true],
17
+ denied_at: [:string, nullable: true],
18
+ canceled_at: [:string, nullable: true]
19
+
20
+ attributes :number, :status, :resolution
21
+
22
+ attribute :order_id do |claim|
23
+ claim.order&.prefixed_id
24
+ end
25
+
26
+ attribute :reason_id do |claim|
27
+ claim.reason&.prefixed_id
28
+ end
29
+
30
+ attribute :refund_total do |claim|
31
+ claim.refund_total.to_s
32
+ end
33
+
34
+ attribute :display_refund_total do |claim|
35
+ claim.display_refund_total.to_s
36
+ end
37
+
38
+ attribute :approved_at do |claim|
39
+ claim.approved_at&.iso8601
40
+ end
41
+
42
+ attribute :resolved_at do |claim|
43
+ claim.resolved_at&.iso8601
44
+ end
45
+
46
+ attribute :denied_at do |claim|
47
+ claim.denied_at&.iso8601
48
+ end
49
+
50
+ attribute :canceled_at do |claim|
51
+ claim.canceled_at&.iso8601
52
+ end
53
+
54
+ one :reason, resource: proc { Spree.api.claim_reason_serializer }, if: proc { expand?('reason') }
55
+
56
+ many :claim_line_items,
57
+ resource: proc { Spree.api.claim_line_item_serializer },
58
+ if: proc { expand?('claim_line_items') }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,41 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Store (customer-facing) collection serializer. Deliberately omits the
5
+ # merchandising config — automatic / rules_match_policy / rules — which is
6
+ # back-office state exposed only by the Admin serializer.
7
+ class CollectionSerializer < BaseSerializer
8
+ typelize name: :string, permalink: :string, position: :number,
9
+ sort_order: :string,
10
+ meta_title: [:string, nullable: true], meta_description: [:string, nullable: true], meta_keywords: [:string, nullable: true],
11
+ description: :string, description_html: :string,
12
+ image_url: [:string, nullable: true], square_image_url: [:string, nullable: true],
13
+ products_count: :number
14
+
15
+ attributes :name, :permalink, :position, :sort_order,
16
+ :meta_title, :meta_description, :meta_keywords, :products_count
17
+
18
+ attribute :description do |collection|
19
+ Spree::RichTextHelper.to_plain_text(collection.description)
20
+ end
21
+
22
+ attribute :description_html do |collection|
23
+ collection.description_html
24
+ end
25
+
26
+ attribute :image_url do |collection|
27
+ image_url_for(collection.image)
28
+ end
29
+
30
+ attribute :square_image_url do |collection|
31
+ image_url_for(collection.square_image)
32
+ end
33
+
34
+ many :storefront_custom_fields,
35
+ key: :custom_fields,
36
+ resource: proc { Spree.api.custom_field_serializer },
37
+ if: proc { expand?('custom_fields') }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A pending (or spent) invitation into a company node. The token is
5
+ # deliberately absent — it travels only in the invite email.
6
+ class CompanyInvitationSerializer < BaseSerializer
7
+ typelize email: :string, company_id: :string, status: [:string, enum: %w[pending accepted revoked expired]],
8
+ expires_at: [:string, nullable: true]
9
+
10
+ attributes :email, expires_at: :iso8601
11
+
12
+ attribute :company_id do |invitation|
13
+ invitation.company.prefixed_id
14
+ end
15
+
16
+ # Derived, not a column: expiry is a date fact, acceptance and
17
+ # revocation are stamps.
18
+ attribute :status do |invitation|
19
+ if invitation.accepted? then 'accepted'
20
+ elsif invitation.revoked? then 'revoked'
21
+ elsif invitation.expired? then 'expired'
22
+ else 'pending'
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A person with standing over a company node, as the storefront
5
+ # self-service surface lists them. Within a company OSS trusts every
6
+ # member, so members see each other.
7
+ class CompanyMembershipSerializer < BaseSerializer
8
+ typelize company_id: :string, customer_id: :string,
9
+ email: [:string, nullable: true]
10
+
11
+ # Both associations are required, so these are never null and the
12
+ # types above say so.
13
+ attribute :company_id do |membership|
14
+ membership.company.prefixed_id
15
+ end
16
+
17
+ attribute :customer_id do |membership|
18
+ membership.customer.prefixed_id
19
+ end
20
+
21
+ # Lists members by who they are without a customer request per row.
22
+ attribute :email do |membership|
23
+ membership.customer.email
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The company node as members and event subscribers see it: the
5
+ # storefront self-service surface renders it directly, lifecycle events
6
+ # use it as their payload, and the admin serializer extends it so
7
+ # back-office fields stay in one place.
8
+ class CompanySerializer < BaseSerializer
9
+ typelize name: :string,
10
+ kind: [:string, enum: Spree::Company::KINDS], parent_id: [:string, nullable: true],
11
+ po_number_required: :boolean,
12
+ ancestors: 'Array<{id: string, name: string, kind: string}>'
13
+
14
+ # `po_number_required` is buyer-facing by design: the checkout marks
15
+ # the PO field required from it.
16
+ attributes :name, :kind, :po_number_required
17
+
18
+ attribute :parent_id do |company|
19
+ company.parent&.prefixed_id
20
+ end
21
+
22
+ # The path above this node, root first — lets a client render
23
+ # "Acme / EMEA / Berlin" without a request per level. Bounded by the
24
+ # tree's depth cap.
25
+ attribute :ancestors do |company|
26
+ company.ancestors.reverse.map do |node|
27
+ { 'id' => node.prefixed_id, 'name' => node.name, 'kind' => node.kind }
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -6,8 +6,8 @@ module Spree
6
6
  class CustomFieldSerializer < BaseSerializer
7
7
  typelize key: :string,
8
8
  label: :string,
9
- type: [:string, deprecated: 'Use `field_type` instead. The legacy `type` field returns the Ruby STI class name (e.g. `Spree::Metafields::ShortText`) and will be removed in a future minor.'],
10
- field_type: Spree::Metafield::FIELD_TYPE_TOKENS,
9
+ type: [:string, deprecated: 'Use `field_type` instead. The legacy `type` field returns the Ruby STI class name (e.g. `Spree::CustomFields::ShortText`) and will be removed in a future minor.'],
10
+ field_type: Spree::CustomField::FIELD_TYPE_TOKENS,
11
11
  value: :any
12
12
 
13
13
  attributes :label, :type, :field_type
@@ -9,10 +9,18 @@ module Spree
9
9
  phone: [:string, nullable: true], accepts_email_marketing: :boolean,
10
10
  available_store_credit_total: :string, display_available_store_credit_total: :string,
11
11
  default_billing_address: { nullable: true }, default_shipping_address: { nullable: true },
12
- newsletter_subscriber: { nullable: true }
12
+ newsletter_subscriber: { nullable: true },
13
+ email_marketing_consent_updated_at: [:string, nullable: true]
13
14
 
14
15
  attributes :email, :first_name, :last_name, :phone, :accepts_email_marketing
15
16
 
17
+ # When the opt-in last moved. Customer-facing because a person asking
18
+ # "when did I agree to this?" is exercising a right, not reading
19
+ # operational data.
20
+ attribute :email_marketing_consent_updated_at do |user|
21
+ user.email_marketing_consent_updated_at&.iso8601
22
+ end
23
+
16
24
  attribute :full_name do |user|
17
25
  user.full_name.presence || user.email
18
26
  end
@@ -0,0 +1,30 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # The event shape for `data_request.*`.
5
+ #
6
+ # Deliberately not the store serializer: that one carries `download_url`,
7
+ # a working unauthenticated link to a person's entire personal-data
8
+ # export. An event goes to every subscribed endpoint and is persisted in
9
+ # the delivery log, so a subscriber would receive the credential and a
10
+ # copy would sit in a queryable admin-readable column for the life of the
11
+ # log. Subscribers get the fact that a request finished; fetching the
12
+ # file stays an authenticated act by the person it belongs to.
13
+ class DataRequestEventSerializer < BaseSerializer
14
+ typelize number: :string, kind: [:string, enum: Spree::DataRequest::KINDS], status: [:string, enum: Spree::DataRequest.statuses, enum_type_name: 'DataRequestStatus'],
15
+ requested_at: [:string, nullable: true],
16
+ completed_at: [:string, nullable: true]
17
+
18
+ attributes :number, :kind, :status
19
+
20
+ attribute :requested_at do |data_request|
21
+ data_request.requested_at&.iso8601
22
+ end
23
+
24
+ attribute :completed_at do |data_request|
25
+ data_request.completed_at&.iso8601
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,40 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Store API Data Request Serializer
5
+ # A customer's own GDPR access or erasure request.
6
+ class DataRequestSerializer < BaseSerializer
7
+ typelize number: :string, kind: [:string, enum: Spree::DataRequest::KINDS], status: [:string, enum: Spree::DataRequest.statuses, enum_type_name: 'DataRequestStatus'],
8
+ requested_at: [:string, nullable: true],
9
+ completed_at: [:string, nullable: true],
10
+ expires_at: [:string, nullable: true],
11
+ download_url: [:string, nullable: true]
12
+
13
+ attributes :number, :kind, :status
14
+
15
+ attribute :requested_at do |data_request|
16
+ data_request.requested_at&.iso8601
17
+ end
18
+
19
+ attribute :completed_at do |data_request|
20
+ data_request.completed_at&.iso8601
21
+ end
22
+
23
+ attribute :expires_at do |data_request|
24
+ data_request.expires_at&.iso8601
25
+ end
26
+
27
+ # Present only while the file is still there — a link the storefront
28
+ # can render without having to reason about expiry itself.
29
+ attribute :download_url do |data_request, params|
30
+ next nil unless data_request.downloadable?
31
+
32
+ host = (params&.dig(:store) || data_request.store)&.formatted_url
33
+ next nil if host.blank?
34
+
35
+ Spree::Api::DataRequestUrls.download_url(data_request, host)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -2,9 +2,19 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class DeliveryMethodSerializer < BaseSerializer
5
- typelize name: :string, code: [:string, nullable: true]
5
+ typelize name: :string, code: [:string, nullable: true],
6
+ digital: :boolean, pickup: :boolean, pickup_point: :boolean,
7
+ estimated_transit_business_days_min: [:number, nullable: true],
8
+ estimated_transit_business_days_max: [:number, nullable: true]
6
9
 
7
- attributes :name, :code
10
+ attributes :name, :code,
11
+ :estimated_transit_business_days_min, :estimated_transit_business_days_max
12
+
13
+ # Derived from the fulfillment provider class — the storefront needs
14
+ # the delivery kind to render the right checkout affordances.
15
+ attribute :digital, &:digital?
16
+ attribute :pickup, &:pickup?
17
+ attribute :pickup_point, &:pickup_point?
8
18
  end
9
19
  end
10
20
  end
@@ -7,38 +7,55 @@ module Spree
7
7
  total: :string, display_total: :string,
8
8
  additional_tax_total: :string, display_additional_tax_total: :string,
9
9
  included_tax_total: :string, display_included_tax_total: :string,
10
- tax_total: :string, display_tax_total: :string
11
-
12
- attribute :delivery_method_id do |shipping_rate|
13
- shipping_rate.shipping_method&.prefixed_id
10
+ tax_total: :string, display_tax_total: :string,
11
+ carrier: [:string, nullable: true],
12
+ service_level: [:string, nullable: true],
13
+ estimated_delivery_date: [:string, nullable: true],
14
+ unpriced: :boolean,
15
+ freight_summary: [:FreightSummary, nullable: true]
16
+
17
+ attribute :delivery_method_id do |deliver_rate|
18
+ deliver_rate.delivery_method&.prefixed_id
14
19
  end
15
20
 
21
+ # Carrier, service level and delivery date come from the rate provider
22
+ # and are what the customer chooses between; nil on calculator-priced
23
+ # methods. Provider metadata stays admin-only.
16
24
  attributes :name, :selected,
17
25
  :cost, :total,
18
26
  :additional_tax_total, :included_tax_total,
19
- :tax_total
20
-
21
- attribute :display_cost do |shipping_rate|
22
- shipping_rate.display_cost.to_s
27
+ :tax_total,
28
+ :carrier, :service_level, :estimated_delivery_date,
29
+ :unpriced
30
+
31
+ # What the shipment looks like to a freight forwarder — cartons,
32
+ # pallets, cubic meters, gross weight. Present only on freight rates;
33
+ # it is what a buyer sees in place of a price they cannot be quoted
34
+ # yet, and stays readable on the placed order because the provider
35
+ # froze it here when it quoted.
36
+ one :freight_summary, resource: proc { Spree.api.freight_summary_serializer }
37
+
38
+ attribute :display_cost do |deliver_rate|
39
+ deliver_rate.display_cost.to_s
23
40
  end
24
41
 
25
- attribute :display_total do |shipping_rate|
26
- shipping_rate.display_total.to_s
42
+ attribute :display_total do |deliver_rate|
43
+ deliver_rate.display_total.to_s
27
44
  end
28
45
 
29
- attribute :display_additional_tax_total do |shipping_rate|
30
- shipping_rate.display_additional_tax_total.to_s
46
+ attribute :display_additional_tax_total do |deliver_rate|
47
+ deliver_rate.display_additional_tax_total.to_s
31
48
  end
32
49
 
33
- attribute :display_included_tax_total do |shipping_rate|
34
- shipping_rate.display_included_tax_total.to_s
50
+ attribute :display_included_tax_total do |deliver_rate|
51
+ deliver_rate.display_included_tax_total.to_s
35
52
  end
36
53
 
37
- attribute :display_tax_total do |shipping_rate|
38
- shipping_rate.display_tax_total.to_s
54
+ attribute :display_tax_total do |deliver_rate|
55
+ deliver_rate.display_tax_total.to_s
39
56
  end
40
57
 
41
- one :shipping_method, key: :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
58
+ one :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
42
59
  end
43
60
  end
44
61
  end