spree_api 5.6.1 → 6.0.0.beta1

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 (540) 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 +9 -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 +16 -7
  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 +157 -32
  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 +231 -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 +65 -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 +59 -16
  184. data/app/controllers/spree/api/v3/resource_controller.rb +154 -38
  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/address_serializer.rb +27 -4
  282. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
  283. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +1 -1
  284. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
  285. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
  286. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
  287. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
  288. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
  289. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
  290. data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
  291. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
  292. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
  293. data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
  294. data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
  295. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
  296. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
  297. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
  298. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +29 -0
  299. data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
  300. data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
  301. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
  302. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
  303. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
  304. data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
  305. data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
  306. data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
  307. data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
  308. data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
  309. data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
  310. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
  311. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
  312. data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
  313. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
  314. data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
  315. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
  316. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
  317. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
  318. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
  319. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
  320. data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
  321. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
  322. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
  323. data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
  324. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
  325. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
  326. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
  327. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
  328. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +35 -0
  329. data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
  330. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
  331. data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
  332. data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
  333. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
  334. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
  335. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
  336. data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
  337. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
  338. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
  339. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +19 -5
  340. data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
  341. data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
  342. data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
  343. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
  344. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
  345. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  346. data/app/serializers/spree/api/v3/admin/order_serializer.rb +131 -19
  347. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
  348. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
  349. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
  350. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
  351. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
  352. data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
  353. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
  354. data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
  355. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
  356. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
  357. data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
  358. data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
  359. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
  360. data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
  361. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
  362. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
  363. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
  364. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
  365. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
  366. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
  367. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +0 -5
  368. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
  369. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
  370. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
  371. data/app/serializers/spree/api/v3/admin/return_serializer.rb +59 -0
  372. data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
  373. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +33 -0
  374. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
  375. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
  376. data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
  377. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
  378. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
  379. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
  380. data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
  381. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
  382. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
  383. data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
  384. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
  385. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
  386. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
  387. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
  388. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +49 -0
  389. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
  390. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
  391. data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
  392. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
  393. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
  394. data/app/serializers/spree/api/v3/admin/store_serializer.rb +63 -1
  395. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
  396. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
  397. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
  398. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
  399. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
  400. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
  401. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
  402. data/app/serializers/spree/api/v3/base_serializer.rb +39 -2
  403. data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
  404. data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
  405. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
  406. data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
  407. data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
  408. data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
  409. data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
  410. data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
  411. data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
  412. data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
  413. data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
  414. data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
  415. data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
  416. data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
  417. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
  418. data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
  419. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
  420. data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
  421. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
  422. data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
  423. data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
  424. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
  425. data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
  426. data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
  427. data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
  428. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
  429. data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
  430. data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
  431. data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
  432. data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
  433. data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
  434. data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
  435. data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
  436. data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
  437. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
  438. data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
  439. data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
  440. data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
  441. data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
  442. data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
  443. data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
  444. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
  445. data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
  446. data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
  447. data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
  448. data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
  449. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
  450. data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
  451. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
  452. data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
  453. data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
  454. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
  455. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
  456. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
  457. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
  458. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
  459. data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
  460. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
  461. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
  462. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
  463. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
  464. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
  465. data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
  466. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
  467. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
  468. data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
  469. data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
  470. data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
  471. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
  472. data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
  473. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
  474. data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
  475. data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
  476. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
  477. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
  478. data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
  479. data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
  480. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
  481. data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
  482. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
  483. data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
  484. data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
  485. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
  486. data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
  487. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
  488. data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
  489. data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
  490. data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
  491. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
  492. data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
  493. data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
  494. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
  495. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
  496. data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
  497. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
  498. data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
  499. data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
  500. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
  501. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
  502. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
  503. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
  504. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
  505. data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
  506. data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
  507. data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
  508. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
  509. data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
  510. data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
  511. data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
  512. data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
  513. data/config/brakeman.ignore +1 -1
  514. data/config/initializers/typelizer.rb +51 -4
  515. data/config/locales/en.yml +5 -0
  516. data/config/routes.rb +730 -22
  517. data/lib/spree/api/configuration.rb +2 -7
  518. data/lib/spree/api/dependencies.rb +173 -227
  519. data/lib/spree/api/openapi/schema_helper.rb +179 -13
  520. data/lib/spree/api/testing_support/v3/base.rb +45 -15
  521. data/lib/spree/api.rb +10 -4
  522. data/lib/typelizer/open_enums.rb +35 -0
  523. metadata +341 -27
  524. data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
  525. data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
  526. data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
  527. data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
  528. data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
  529. data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
  530. data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
  531. data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
  532. data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
  533. data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
  534. data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
  535. data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
  536. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
  537. data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
  538. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
  539. data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
  540. data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
@@ -4,11 +4,18 @@ module Spree
4
4
  # Store API Order Serializer
5
5
  # Post-purchase order data (completed orders)
6
6
  class OrderSerializer < BaseSerializer
7
- typelize number: :string, email: :string,
7
+ typelize cart_id: [:string, nullable: true],
8
+ number: :string, email: :string,
8
9
  customer_note: [:string, nullable: true],
9
10
  market_id: [:string, nullable: true], channel_id: [:string, nullable: true],
11
+ company_id: [:string, nullable: true], company_name: [:string, nullable: true],
12
+ po_number: [:string, nullable: true],
13
+ po_document_filename: [:string, nullable: true],
14
+ po_document_byte_size: ['number | null'],
10
15
  currency: :string, locale: [:string, nullable: true], total_quantity: :number,
11
- fulfillment_status: [:string, nullable: true], payment_status: [:string, nullable: true],
16
+ coupon_code: [:string, nullable: true],
17
+ fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
18
+ payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
12
19
  item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
13
20
  delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
14
21
  adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
@@ -16,12 +23,15 @@ module Spree
16
23
  tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
17
24
  included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
18
25
  additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
26
+ fee_total: [:string, nullable: true], display_fee_total: [:string, nullable: true],
19
27
  store_credit_total: [:string, nullable: true], display_store_credit_total: [:string, nullable: true],
20
28
  gift_card_total: [:string, nullable: true], display_gift_card_total: [:string, nullable: true],
21
29
  covered_by_store_credit: :boolean,
22
30
  total: [:string, nullable: true], display_total: [:string, nullable: true],
23
31
  amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
24
32
  completed_at: [:string, nullable: true],
33
+ withdrawal_period_ends_at: [:string, nullable: true],
34
+ within_withdrawal_period: :boolean,
25
35
  billing_address: { nullable: true }, shipping_address: { nullable: true },
26
36
  gift_card: { nullable: true }, market: { nullable: true }
27
37
 
@@ -29,12 +39,50 @@ module Spree
29
39
  order.market&.prefixed_id
30
40
  end
31
41
 
42
+ # The EU cooling-off deadline. Customer-facing by design: a buyer
43
+ # deciding whether they can still send something back should not have
44
+ # to work the date out from a policy page.
45
+ attribute :withdrawal_period_ends_at do |order|
46
+ order.withdrawal_period_ends_at&.iso8601
47
+ end
48
+
49
+ attribute :within_withdrawal_period do |order|
50
+ order.within_withdrawal_period?
51
+ end
52
+
53
+ # The checkout handle this order was born from (nil for admin drafts).
54
+ # Lets abandonment tooling match cart.* events to the conversion.
55
+ # Encoded from the FK — loading the cart row just for its id would be
56
+ # an N+1 on order lists.
57
+ attribute :cart_id do |order|
58
+ Spree::Cart.prefixed_id_for(order.cart_id)
59
+ end
60
+
32
61
  attribute :channel_id do |order|
33
62
  order.channel&.prefixed_id
34
63
  end
35
64
 
36
- attributes :number, :email, :customer_note,
37
- :currency, :locale, :total_quantity,
65
+ # Which company node the order was placed for — frozen at completion.
66
+ attribute :company_id do |order|
67
+ order.company&.prefixed_id
68
+ end
69
+
70
+ attribute :company_name do |order|
71
+ order.company&.name
72
+ end
73
+
74
+ # The buyer's own purchase-order reference, carried from the cart. Their
75
+ # accounting reconciles against it, so it stays on the order forever.
76
+ attribute :po_document_filename do |order|
77
+ order.po_document.blob&.filename&.to_s if order.po_document.attached?
78
+ end
79
+
80
+ attribute :po_document_byte_size do |order|
81
+ order.po_document.blob&.byte_size if order.po_document.attached?
82
+ end
83
+
84
+ attributes :number, :email, :customer_note, :po_number,
85
+ :currency, :locale, :total_quantity, :coupon_code,
38
86
  :fulfillment_status, :payment_status,
39
87
  completed_at: :iso8601
40
88
 
@@ -47,7 +95,8 @@ module Spree
47
95
  :additional_tax_total, :display_additional_tax_total, :total, :display_total,
48
96
  :gift_card_total, :display_gift_card_total,
49
97
  :amount_due, :display_amount_due,
50
- :delivery_total, :display_delivery_total
98
+ :delivery_total, :display_delivery_total,
99
+ :fee_total, :display_fee_total
51
100
 
52
101
  attribute :store_credit_total do |order|
53
102
  order.total_applied_store_credit.to_s unless params[:hide_prices]
@@ -61,7 +110,10 @@ module Spree
61
110
  order.covered_by_store_credit?
62
111
  end
63
112
 
64
- many :discounts, resource: proc { Spree.api.discount_serializer }
113
+ many :order_promotions, key: :discounts, resource: proc { Spree.api.applied_promotion_serializer }
114
+ # Itemized charges (duties, surcharges, COD, handling) — see the cart
115
+ # serializer; the order keeps them visible after placement.
116
+ many :fees, resource: proc { Spree.api.fee_serializer }
65
117
  many :line_items, key: :items, resource: proc { Spree.api.line_item_serializer }
66
118
  many :fulfillments, resource: proc { Spree.api.fulfillment_serializer }
67
119
  many :payments, resource: proc { Spree.api.payment_serializer }
@@ -2,7 +2,7 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class PaymentMethodSerializer < BaseSerializer
5
- typelize name: :string, description: [:string, nullable: true], type: :string,
5
+ typelize name: :string, description: [:string, nullable: true], type: [:string, comment: 'Payment method type. Built-in: check, store_credit, custom_payment_source_method, bogus (test only); payment provider gems register their own, for example stripe.'],
6
6
  session_required: :boolean, source_required: :boolean
7
7
 
8
8
  attributes :name, :description
@@ -2,7 +2,7 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class PaymentSerializer < BaseSerializer
5
- typelize status: :string, payment_method_id: :string, response_code: [:string, nullable: true],
5
+ typelize status: [:string, enum: Spree::Payment.statuses, enum_type_name: 'PaymentStatus'], payment_method_id: :string, response_code: [:string, nullable: true],
6
6
  number: :string, amount: [:string, nullable: true], display_amount: [:string, nullable: true],
7
7
  source_type: [:string, nullable: true, enum: %w[credit_card store_credit payment_source]],
8
8
  source_id: [:string, nullable: true],
@@ -12,16 +12,12 @@ module Spree
12
12
  payment.payment_method&.prefixed_id
13
13
  end
14
14
 
15
- attributes :response_code, :number
15
+ attributes :response_code, :number, :status
16
16
 
17
17
  # Nulled for gated (prices_hidden) guests so a payment can't leak the
18
18
  # amount the cart/order totals already withhold.
19
19
  money_attributes :amount, :display_amount
20
20
 
21
- attribute :status do |payment|
22
- payment.state
23
- end
24
-
25
21
  attribute :source_type do |payment|
26
22
  case payment.source_type
27
23
  when 'Spree::CreditCard'
@@ -2,10 +2,11 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class PaymentSessionSerializer < BaseSerializer
5
- typelize status: :string, amount: :string, currency: :string,
5
+ typelize status: [:string, enum: Spree::PaymentSession.statuses, enum_type_name: 'PaymentSessionStatus'], amount: :string, currency: :string,
6
6
  external_id: :string, external_data: 'Record<string, unknown>',
7
7
  expires_at: [:string, nullable: true], customer_external_id: [:string, nullable: true],
8
- payment_method_id: :string, order_id: :string
8
+ payment_method_id: :string, order_id: [:string, nullable: true],
9
+ cart_id: [:string, nullable: true]
9
10
 
10
11
  attributes :status, :currency, :external_id, :external_data,
11
12
  :customer_external_id,
@@ -19,8 +20,14 @@ module Spree
19
20
  session.payment_method&.prefixed_id
20
21
  end
21
22
 
23
+ # Bridge: reports the owner (cart during checkout, order after
24
+ # completion) until clients migrate to cart_id/order_id.
22
25
  attribute :order_id do |session|
23
- session.order&.prefixed_id
26
+ session.owner&.prefixed_id
27
+ end
28
+
29
+ attribute :cart_id do |session|
30
+ session.cart&.prefixed_id
24
31
  end
25
32
 
26
33
  one :payment_method, resource: proc { Spree.api.payment_method_serializer }
@@ -2,7 +2,7 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class PaymentSetupSessionSerializer < BaseSerializer
5
- typelize status: :string, external_id: [:string, nullable: true], external_client_secret: [:string, nullable: true],
5
+ typelize status: [:string, enum: Spree::PaymentSetupSession.statuses, enum_type_name: 'PaymentSetupSessionStatus'], external_id: [:string, nullable: true], external_client_secret: [:string, nullable: true],
6
6
  external_data: 'Record<string, unknown>',
7
7
  payment_method_id: [:string, nullable: true], payment_source_id: [:string, nullable: true],
8
8
  payment_source_type: [:string, nullable: true], customer_id: [:string, nullable: true]
@@ -8,13 +8,18 @@ module Spree
8
8
  attributes :name, :slug
9
9
 
10
10
  attribute :body do |policy|
11
- policy.body&.to_plain_text
11
+ Spree::RichTextHelper.to_plain_text(policy.body)
12
12
  end
13
13
 
14
14
  attribute :body_html do |policy|
15
- policy.body&.body&.to_s.to_s
15
+ policy.body_html
16
16
  end
17
17
 
18
+ # The one timestamp a store serializer carries. When a legal document
19
+ # last changed is what a shopper is entitled to see on the page —
20
+ # "last updated" is the convention for policies — not operational
21
+ # detail. `created_at` stays admin-only.
22
+ attributes updated_at: :iso8601
18
23
  end
19
24
  end
20
25
  end
@@ -6,7 +6,7 @@ module Spree
6
6
  type: "'option'",
7
7
  name: :string,
8
8
  label: :string,
9
- kind: :string,
9
+ kind: [:string, enum: Spree::OptionType::KINDS],
10
10
  options: [:ProductFilterOptionValue, multi: true]
11
11
 
12
12
  attributes :id, :type, :name, :label, :kind
@@ -9,6 +9,7 @@ module Spree
9
9
  meta_description: [:string, nullable: true], meta_keywords: [:string, nullable: true],
10
10
  variant_count: :number,
11
11
  default_variant_id: :string,
12
+ buy_box_variant_id: [:string, nullable: true],
12
13
  thumbnail_url: [:string, nullable: true],
13
14
  available_on: [:string, nullable: true],
14
15
  preorder_ships_at: [:string, nullable: true],
@@ -55,10 +56,23 @@ module Spree
55
56
  product.description
56
57
  end
57
58
 
59
+ # The product's stable identity for add-to-cart. Deliberately NOT the
60
+ # buy-box winner: that moves with price and stock, and a client that
61
+ # cached or linked this id must not find it pointing at a different
62
+ # row tomorrow. On a single-seller catalog the two coincide anyway.
58
63
  attribute :default_variant_id do |product|
59
64
  product.default_variant&.prefixed_id
60
65
  end
61
66
 
67
+ # The offer a storefront should lead with when several sellers share
68
+ # the listing — the buy-box winner in the request's currency. Nil when
69
+ # nothing wins. Separate from `default_variant_id` so a storefront opts
70
+ # into the marketplace behaviour without the identity field moving
71
+ # under it; storefronts that ignore it lose nothing.
72
+ attribute :buy_box_variant_id do |product|
73
+ product.buy_box_variant(currency: current_currency)&.prefixed_id
74
+ end
75
+
62
76
  # Main product image URL for listings (cached primary_media)
63
77
  attribute :thumbnail_url do |product|
64
78
  image_url_for(product.primary_media)
@@ -68,16 +82,22 @@ module Spree
68
82
  product.tags.map(&:name) # not pluck as we preload tags
69
83
  end
70
84
 
71
- # Price object - calculated price with price list resolution
85
+ # Price object - calculated price with price list resolution.
86
+ #
87
+ # Priced off the buy-box winner, not `default_variant_id`. Price is a
88
+ # display fact that already moves with price lists and currency, so it
89
+ # is not an identity — and it must agree with `buy_box_variant_id`: the
90
+ # price a shopper sees is the price of the offer they are shown. On a
91
+ # single-seller catalog winner and default variant are the same row.
72
92
  attribute :price do |product|
73
- price = price_for(product.default_variant)
93
+ price = price_for(featured_variant(product))
74
94
  Spree.api.price_serializer.new(price, params: params).to_h if price.present?
75
95
  end
76
96
 
77
97
  # Original price - base price without price list resolution (for showing strikethrough)
78
98
  # Returns null when same as calculated price, only populated when a price list discount is applied
79
99
  attribute :original_price do |product|
80
- variant = product.default_variant
100
+ variant = featured_variant(product)
81
101
  calculated = price_for(variant)
82
102
  base = price_in(variant)
83
103
 
@@ -86,7 +106,18 @@ module Spree
86
106
  end
87
107
  end
88
108
 
109
+ # Nil on the marketplace's own first-party products. The id is always
110
+ # present so a storefront can group or link by seller without paying
111
+ # for the expand; `?expand=seller` adds the public profile.
112
+ attribute :seller_id do |product|
113
+ product.seller&.prefixed_id
114
+ end
115
+
89
116
  # Conditional associations
117
+ one :seller,
118
+ resource: proc { Spree.api.seller_serializer },
119
+ if: proc { expand?('seller') }
120
+
90
121
  one :primary_media,
91
122
  resource: proc { Spree.api.media_serializer },
92
123
  if: proc { expand?('primary_media') }
@@ -112,24 +143,25 @@ module Spree
112
143
  resource: proc { Spree.api.option_value_serializer },
113
144
  if: proc { expand?('option_values') }
114
145
 
115
- many :taxons,
116
- proc { |taxons, params|
117
- taxons.select { |t| t.taxonomy.store_id == params[:store].id }
146
+ many :categories,
147
+ proc { |categories, params|
148
+ store_id = params[:store].id
149
+ categories.select { |c| c.store_id == store_id }
118
150
  },
119
- key: :categories,
120
151
  resource: proc { Spree.api.category_serializer },
121
152
  if: proc { expand?('categories') }
122
153
 
123
- many :public_metafields,
154
+ many :storefront_custom_fields,
124
155
  key: :custom_fields,
125
156
  resource: proc { Spree.api.custom_field_serializer },
126
157
  if: proc { expand?('custom_fields') }
127
158
 
128
- typelize prior_price: ['PriceHistory', nullable: true]
159
+ typelize prior_price: ['PriceHistory', nullable: true],
160
+ seller_id: [:string, nullable: true]
129
161
 
130
162
  attribute :prior_price,
131
163
  if: proc { expand?('prior_price') } do |product|
132
- record = price_in(product.default_variant)&.prior_price
164
+ record = price_in(featured_variant(product))&.prior_price
133
165
  Spree.api.price_history_serializer.new(record, params: params).to_h if record
134
166
  end
135
167
  end
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Base Product Type Serializer.
5
+ #
6
+ # ProductType is back-office vocabulary and is NOT exposed on the Store
7
+ # API — no endpoint, no expand, no filter. This class exists solely as the
8
+ # parent of the Admin serializer, per the house convention that every
9
+ # admin serializer extends a store-namespace base.
10
+ class ProductTypeSerializer < BaseSerializer
11
+ typelize name: :string
12
+
13
+ attributes :name
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Payload of the purchase_order.* events. Purchase orders have no
5
+ # storefront serializer, so the event shape is declared here rather than
6
+ # found by convention.
7
+ class PurchaseOrderEventSerializer < Admin::PurchaseOrderSerializer
8
+ end
9
+ end
10
+ end
11
+ end
@@ -6,7 +6,7 @@ module Spree
6
6
  class RefundSerializer < BaseSerializer
7
7
  typelize amount: [:string, nullable: true], transaction_id: [:string, nullable: true],
8
8
  payment_id: [:string, nullable: true], refund_reason_id: [:string, nullable: true],
9
- reimbursement_id: [:string, nullable: true]
9
+ originator_id: [:string, nullable: true], originator_type: [:string, nullable: true]
10
10
 
11
11
  attributes :transaction_id
12
12
 
@@ -22,8 +22,14 @@ module Spree
22
22
  refund.reason&.prefixed_id
23
23
  end
24
24
 
25
- attribute :reimbursement_id do |refund|
26
- refund.reimbursement&.prefixed_id
25
+ # What triggered this refund — a Return, Exchange or Claim; nil for a
26
+ # manual refund.
27
+ attribute :originator_id do |refund|
28
+ refund.originator&.prefixed_id
29
+ end
30
+
31
+ attribute :originator_type do |refund|
32
+ refund.originator_type
27
33
  end
28
34
  end
29
35
  end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class ReturnLineItemSerializer < BaseSerializer
7
+ typelize quantity: :number,
8
+ received_quantity: :number,
9
+ resellable: :boolean,
10
+ pre_tax_amount: :string,
11
+ display_pre_tax_amount: :string,
12
+ variant_id: [:string, nullable: true],
13
+ line_item_id: [:string, nullable: true],
14
+ fulfillment_item_id: [:string, nullable: true]
15
+
16
+ attributes :quantity, :received_quantity, :resellable
17
+
18
+ attribute :pre_tax_amount do |line|
19
+ line.pre_tax_amount.to_s
20
+ end
21
+
22
+ attribute :display_pre_tax_amount do |line|
23
+ line.display_pre_tax_amount.to_s
24
+ end
25
+
26
+ attribute :variant_id do |line|
27
+ line.variant&.prefixed_id
28
+ end
29
+
30
+ attribute :line_item_id do |line|
31
+ line.line_item&.prefixed_id
32
+ end
33
+
34
+ attribute :fulfillment_item_id do |line|
35
+ line.fulfillment_item&.prefixed_id
36
+ end
37
+
38
+ one :variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('variant') }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ # Why a customer sent something back. Embedded in returns and exchanges
7
+ # so a customer sees the reason's name rather than only its id; the
8
+ # vocabulary itself has no Store API controller of its own.
9
+ #
10
+ # Parallel to ClaimReasonSerializer 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 ReturnReasonSerializer < 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 return. No timestamps, no internal notes,
7
+ # no staff attribution — see the serializer rules in CLAUDE.md.
8
+ class ReturnSerializer < BaseSerializer
9
+ typelize number: :string,
10
+ status: [:string, enum: Spree::Return.statuses, enum_type_name: 'ReturnStatus'],
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
+ received_at: [:string, nullable: true],
17
+ refunded_at: [:string, nullable: true],
18
+ canceled_at: [:string, nullable: true]
19
+
20
+ attributes :number, :status
21
+
22
+ attribute :order_id do |return_record|
23
+ return_record.order&.prefixed_id
24
+ end
25
+
26
+ attribute :reason_id do |return_record|
27
+ return_record.reason&.prefixed_id
28
+ end
29
+
30
+ attribute :refund_total do |return_record|
31
+ return_record.refund_total.to_s
32
+ end
33
+
34
+ attribute :display_refund_total do |return_record|
35
+ return_record.display_refund_total.to_s
36
+ end
37
+
38
+ attribute :approved_at do |return_record|
39
+ return_record.approved_at&.iso8601
40
+ end
41
+
42
+ attribute :received_at do |return_record|
43
+ return_record.received_at&.iso8601
44
+ end
45
+
46
+ attribute :refunded_at do |return_record|
47
+ return_record.refunded_at&.iso8601
48
+ end
49
+
50
+ attribute :canceled_at do |return_record|
51
+ return_record.canceled_at&.iso8601
52
+ end
53
+
54
+ one :reason, resource: proc { Spree.api.return_reason_serializer }, if: proc { expand?('reason') }
55
+
56
+ many :return_line_items,
57
+ resource: proc { Spree.api.return_line_item_serializer },
58
+ if: proc { expand?('return_line_items') }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,35 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Seller
5
+ # This seller's position in one currency (Spree::SellerBalance).
6
+ #
7
+ # A computed value rather than a record, so it carries no id.
8
+ class BalanceSerializer < V3::BaseSerializer
9
+ typelize currency: :string,
10
+ settlement_currency: :string,
11
+ converted: :boolean,
12
+ earned: :string, display_earned: :string,
13
+ payable: :string, display_payable: :string,
14
+ paid: :string, display_paid: :string,
15
+ balance: :string, display_balance: :string,
16
+ pending: :string, display_pending: :string
17
+
18
+ _attributes.delete(:id)
19
+
20
+ # Two sides when the account settles in another currency: what the
21
+ # sales were worth, and what the account received once the provider
22
+ # converted. Never added together.
23
+ attributes :currency, :settlement_currency
24
+
25
+ attribute(:converted) { |balance| balance.converted? }
26
+
27
+ %i[earned payable paid balance pending].each do |figure|
28
+ attribute(figure) { |balance| balance.public_send(figure).to_s }
29
+ attribute(:"display_#{figure}") { |balance| balance.public_send(:"display_#{figure}").to_s }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ module Seller
7
+ # One line of a claim — what went wrong, and what is being sent or
8
+ # refunded to put it right.
9
+ class ClaimLineItemSerializer < V3::ClaimLineItemSerializer
10
+ typelize name: [:string, nullable: true]
11
+
12
+ attribute :name do |line|
13
+ line.line_item&.name || line.variant&.name
14
+ end
15
+
16
+ one :variant, resource: proc { Spree.api.seller_variant_serializer }, if: proc { expand?('variant') }
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ module Seller
7
+ # A claim on one of this seller's orders.
8
+ #
9
+ # Built on the shared V3 serializer rather than the admin one, which
10
+ # expands the order and the customer behind it.
11
+ class ClaimSerializer < V3::ClaimSerializer
12
+ typelize memo: [:string, nullable: true]
13
+
14
+ attributes :memo
15
+
16
+ many :claim_line_items,
17
+ resource: proc { Spree.api.seller_claim_line_item_serializer },
18
+ if: proc { expand?('claim_line_items') }
19
+
20
+ one :reason, resource: proc { Spree.api.seller_reason_serializer }, if: proc { expand?('reason') }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Seller
5
+ # One condition on a seller's delivery method — "orders over $50",
6
+ # "under 20kg".
7
+ #
8
+ # Declared rather than subclassed from the admin serializer, like
9
+ # every serializer on this branch. `product_ids` is absent: the rules
10
+ # a seller may use are preference-only (see the seller delivery
11
+ # methods controller), so no rule here carries an association.
12
+ class DeliveryMethodRuleSerializer < BaseSerializer
13
+ typelize type: [:string, comment: 'Rule type. Built-in: item_total_rule, weight_rule, excluded_products_rule, channel_rule, volume_rule, company_rule. Extensions may register more.'],
14
+ active: :boolean,
15
+ preferences: 'Record<string, unknown>',
16
+ preference_schema: "Array<{ key: string; type: string; default: unknown; choices?: string[] }>"
17
+
18
+ attributes :active
19
+
20
+ # Wire shorthand (e.g. `item_total_rule`), matching the types
21
+ # discovery endpoint.
22
+ attribute :type do |rule|
23
+ rule.class.api_type
24
+ end
25
+
26
+ attribute :preferences, &:serialized_preferences
27
+ attribute :preference_schema, &:serialized_preference_schema
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end