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.
- checksums.yaml +4 -4
- data/LICENSE +28 -0
- data/Rakefile +1 -1
- data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
- data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
- data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
- data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
- data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
- data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +20 -5
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
- data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
- data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
- data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
- data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
- data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
- data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
- data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
- data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
- data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
- data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
- data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +18 -9
- data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
- data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
- data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
- data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
- data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
- data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
- data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
- data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
- data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +164 -33
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
- data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
- data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
- data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +239 -0
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
- data/app/controllers/spree/api/v3/admin/store_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
- data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
- data/app/controllers/spree/api/v3/base_controller.rb +74 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +170 -39
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
- data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
- data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
- data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
- data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
- data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
- data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
- data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
- data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
- data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
- data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
- data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
- data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
- data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
- data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
- data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
- data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
- data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
- data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
- data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
- data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
- data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
- data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
- data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
- data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
- data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
- data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
- data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
- data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
- data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
- data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
- data/app/models/spree/api/data_request_urls.rb +25 -0
- data/app/models/spree/api/digital_link_urls.rb +26 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
- data/app/serializers/spree/api/v3/admin/actor_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
- data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
- data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +46 -5
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
- data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +126 -31
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +6 -5
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +58 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
- data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
- data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +65 -1
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/base_serializer.rb +61 -2
- data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
- data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
- data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
- data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
- data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
- data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
- data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
- data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
- data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
- data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
- data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
- data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
- data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
- data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
- data/config/brakeman.ignore +1 -1
- data/config/initializers/typelizer.rb +51 -4
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +730 -22
- data/lib/spree/api/configuration.rb +19 -19
- data/lib/spree/api/dependencies.rb +174 -227
- data/lib/spree/api/engine.rb +6 -0
- data/lib/spree/api/openapi/schema_helper.rb +179 -13
- data/lib/spree/api/testing_support/v3/base.rb +45 -15
- data/lib/spree/api.rb +10 -4
- data/lib/typelizer/open_enums.rb +35 -0
- metadata +342 -27
- data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
- data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
- data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
- data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
- data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
- data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
- data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
- data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
- data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
- data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
|
@@ -5,10 +5,14 @@ module Spree
|
|
|
5
5
|
typelize position: :number, alt: [:string, nullable: true],
|
|
6
6
|
product_id: [:string, nullable: true],
|
|
7
7
|
variant_ids: [:string, multi: true],
|
|
8
|
-
media_type: :string,
|
|
8
|
+
media_type: [:string, enum: Spree::Media::MEDIA_TYPES],
|
|
9
9
|
focal_point_x: [:number, nullable: true],
|
|
10
10
|
focal_point_y: [:number, nullable: true],
|
|
11
11
|
external_video_url: [:string, nullable: true],
|
|
12
|
+
video_provider: [:string, nullable: true],
|
|
13
|
+
video_embed_url: [:string, nullable: true],
|
|
14
|
+
video_url: [:string, nullable: true],
|
|
15
|
+
poster_url: [:string, nullable: true],
|
|
12
16
|
original_url: [:string, nullable: true], mini_url: [:string, nullable: true],
|
|
13
17
|
small_url: [:string, nullable: true], medium_url: [:string, nullable: true],
|
|
14
18
|
large_url: [:string, nullable: true], xlarge_url: [:string, nullable: true],
|
|
@@ -33,7 +37,36 @@ module Spree
|
|
|
33
37
|
attributes :position, :alt, :media_type,
|
|
34
38
|
:focal_point_x, :focal_point_y, :external_video_url
|
|
35
39
|
|
|
40
|
+
# Spree parses the YouTube/Vimeo link once, here, so no storefront has
|
|
41
|
+
# to reimplement it. Nil on anything that isn't an external video.
|
|
42
|
+
attribute :video_provider do |asset|
|
|
43
|
+
asset.external_video&.provider
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
attribute :video_embed_url do |asset|
|
|
47
|
+
asset.external_video&.embed_url
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# The uploaded video file itself. Served as-is — Spree does not
|
|
51
|
+
# transcode.
|
|
52
|
+
attribute :video_url do |asset|
|
|
53
|
+
next nil unless asset.video? && asset.attachment.attached?
|
|
54
|
+
|
|
55
|
+
url_helpers.cdn_image_url(asset.attachment)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Still frame for a video tile: the merchant's upload when there is one,
|
|
59
|
+
# otherwise the provider's own thumbnail.
|
|
60
|
+
attribute :poster_url do |asset|
|
|
61
|
+
next nil unless asset.playable_video?
|
|
62
|
+
|
|
63
|
+
still_url(asset)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Nil for video rows — there is no image to size.
|
|
36
67
|
attribute :original_url do |asset|
|
|
68
|
+
next nil if asset.playable_video?
|
|
69
|
+
|
|
37
70
|
image_url_for(asset)
|
|
38
71
|
end
|
|
39
72
|
|
|
@@ -42,18 +75,26 @@ module Spree
|
|
|
42
75
|
# (e.g., mini, small, medium, large, xlarge)
|
|
43
76
|
Spree::Config.product_image_variant_sizes.each_key do |variant_name|
|
|
44
77
|
attribute :"#{variant_name}_url" do |asset|
|
|
45
|
-
|
|
78
|
+
still_url(asset, variant_name)
|
|
46
79
|
end
|
|
47
80
|
end
|
|
48
81
|
|
|
49
82
|
private
|
|
50
83
|
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
# The row's still frame, sized when it's an attachment we control — an
|
|
85
|
+
# image's own file, or a video's poster, so a gallery that only knows
|
|
86
|
+
# how to draw an image still renders the right picture. A provider's
|
|
87
|
+
# thumbnail is served as-is: it isn't ours to resize, so every size
|
|
88
|
+
# resolves to the same URL.
|
|
89
|
+
def still_url(asset, variant_name = nil)
|
|
90
|
+
source = asset&.still_image
|
|
91
|
+
return asset&.provider_still_url if source.nil?
|
|
92
|
+
|
|
93
|
+
url_helpers.cdn_image_url(variant_name ? source.variant(variant_name) : source)
|
|
94
|
+
end
|
|
53
95
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
96
|
+
def url_helpers
|
|
97
|
+
Rails.application.routes.url_helpers
|
|
57
98
|
end
|
|
58
99
|
end
|
|
59
100
|
end
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
class OptionTypeSerializer < BaseSerializer
|
|
5
|
-
typelize name: :string, label: :string, position: :number, kind: :string
|
|
5
|
+
typelize name: :string, label: :string, position: :number, kind: [:string, enum: Spree::OptionType::KINDS]
|
|
6
6
|
|
|
7
7
|
attributes :name, :label, :position, :kind
|
|
8
8
|
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Store API Order Group Serializer
|
|
5
|
+
#
|
|
6
|
+
# What the customer bought in one checkout, when it was fulfilled by more
|
|
7
|
+
# than one seller. They made one purchase and paid once, so this is what
|
|
8
|
+
# their order history shows them — with the per-seller orders nested
|
|
9
|
+
# inside it, each carrying its own items, delivery and tracking.
|
|
10
|
+
class OrderGroupSerializer < BaseSerializer
|
|
11
|
+
typelize number: :string, email: [:string, nullable: true], currency: :string,
|
|
12
|
+
total: [:string, nullable: true], display_total: [:string, nullable: true],
|
|
13
|
+
item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
|
|
14
|
+
fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
|
|
15
|
+
payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
|
|
16
|
+
completed_at: [:string, nullable: true],
|
|
17
|
+
billing_address: { nullable: true }, shipping_address: { nullable: true }
|
|
18
|
+
|
|
19
|
+
attributes :number, :email, :currency
|
|
20
|
+
|
|
21
|
+
attribute :total do |group|
|
|
22
|
+
group.total.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :display_total do |group|
|
|
26
|
+
group.display_total.to_s
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
attribute :item_total do |group|
|
|
30
|
+
group.item_total.to_s
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attribute :display_item_total do |group|
|
|
34
|
+
group.display_item_total.to_s
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Rolled up across the children rather than stored, so it can never
|
|
38
|
+
# disagree with the orders it describes.
|
|
39
|
+
attribute :fulfillment_status do |group|
|
|
40
|
+
group.fulfillment_status
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
attribute :payment_status do |group|
|
|
44
|
+
group.payment_status
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attribute :completed_at do |group|
|
|
48
|
+
group.created_at
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
one :billing_address, resource: proc { Spree.api.address_serializer }
|
|
52
|
+
one :shipping_address, resource: proc { Spree.api.address_serializer }
|
|
53
|
+
|
|
54
|
+
# The whole point of the group: the customer sees one purchase, and the
|
|
55
|
+
# seller orders inside it are how it will arrive.
|
|
56
|
+
many :orders, resource: proc { Spree.api.order_serializer }
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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.
|
|
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.
|
|
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
|
|
11
|
+
Spree::RichTextHelper.to_plain_text(policy.body)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
attribute :body_html do |policy|
|
|
15
|
-
policy.
|
|
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
|
|
@@ -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
|
|
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
|
|
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 :
|
|
116
|
-
proc { |
|
|
117
|
-
|
|
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 :
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|