spree_api 6.0.0.rc1 → 6.0.0.rc3
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/Rakefile +0 -17
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +10 -0
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +26 -4
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +14 -28
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +3 -2
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +48 -2
- data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +6 -6
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +5 -21
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
- data/app/controllers/concerns/spree/api/v3/purchase_serialization.rb +26 -0
- data/app/controllers/concerns/spree/api/v3/request_params.rb +65 -0
- data/app/controllers/concerns/spree/api/v3/store/search_provider_support.rb +8 -3
- data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +10 -1
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +15 -7
- data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -5
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +60 -33
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +4 -1
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +40 -20
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +39 -6
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +4 -1
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +60 -12
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +19 -18
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +21 -11
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -7
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -9
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +35 -7
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +8 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +15 -7
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +92 -57
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +21 -5
- data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +14 -1
- data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +7 -0
- data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +8 -0
- data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +23 -6
- data/app/controllers/spree/api/v3/admin/files_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +20 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +19 -1
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +36 -9
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +9 -2
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +30 -9
- data/app/controllers/spree/api/v3/admin/me_controller.rb +12 -3
- data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +24 -7
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +19 -1
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +29 -5
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +36 -1
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +22 -1
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +66 -7
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +35 -2
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +16 -5
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +6 -0
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +37 -1
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +6 -3
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +74 -60
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +17 -0
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +38 -22
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +8 -4
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +27 -15
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +25 -8
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -14
- data/app/controllers/spree/api/v3/admin/products_controller.rb +121 -70
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +54 -7
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +6 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +15 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +75 -22
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -15
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +38 -9
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +41 -9
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +48 -7
- data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -53
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +1 -7
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +16 -6
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +7 -4
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +21 -3
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/translations/batches_controller.rb +17 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +5 -0
- data/app/controllers/spree/api/v3/admin/updates_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +23 -1
- data/app/controllers/spree/api/v3/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +63 -10
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +8 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +2 -2
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +18 -1
- data/app/controllers/spree/api/v3/seller/files_controller.rb +27 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +25 -9
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +9 -1
- data/app/controllers/spree/api/v3/seller/me_controller.rb +14 -3
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +11 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +12 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +33 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +28 -2
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +22 -1
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +8 -1
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +32 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +35 -14
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +21 -9
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
- data/app/controllers/spree/api/v3/seller/products_controller.rb +114 -28
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +12 -5
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +12 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +44 -13
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +10 -1
- data/app/controllers/spree/api/v3/seller/team_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +8 -1
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +10 -2
- data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +8 -1
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +17 -5
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +20 -6
- data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +24 -26
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +19 -1
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/carts_controller.rb +54 -47
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -4
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +9 -1
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -7
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +17 -0
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -5
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/customers_controller.rb +28 -2
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +22 -0
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +11 -2
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +10 -1
- data/app/controllers/spree/api/v3/store/orders_controller.rb +47 -10
- data/app/controllers/spree/api/v3/store/products_controller.rb +8 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +10 -4
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +12 -4
- data/app/request_schemas/spree/api/v3/address_request_schema.rb +27 -0
- data/app/request_schemas/spree/api/v3/admin/address_request_schema.rb +13 -0
- data/app/request_schemas/spree/api/v3/admin/bulk_tags_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/catalog_order_minimum_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/email_template_language_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/email_template_preview_request_schema.rb +32 -0
- data/app/request_schemas/spree/api/v3/admin/price_adjustment_tier_request_schema.rb +21 -0
- data/app/request_schemas/spree/api/v3/admin/price_list_price_request_schema.rb +21 -0
- data/app/request_schemas/spree/api/v3/admin/price_list_rule_request_schema.rb +19 -0
- data/app/request_schemas/spree/api/v3/admin/product_membership_reposition_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_calculator_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_line_item_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_request_schema.rb +19 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_rule_request_schema.rb +22 -0
- data/app/request_schemas/spree/api/v3/admin/reason_request_schema.rb +14 -0
- data/app/request_schemas/spree/api/v3/admin/tax_identifier_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/custom_field_value_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/file_upload_request_schema.rb +20 -0
- data/app/request_schemas/spree/api/v3/media_request_schema.rb +27 -0
- data/app/request_schemas/spree/api/v3/price_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/stock_level_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/store/address_request_schema.rb +31 -0
- data/app/request_schemas/spree/api/v3/tax_identifier_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/variant_option_request_schema.rb +13 -0
- data/app/request_schemas/spree/api/v3/variant_request_schema.rb +52 -0
- data/app/serializers/concerns/spree/api/v3/purchase_summary.rb +48 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -7
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +7 -18
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +7 -11
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +3 -7
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +14 -10
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/file_upload_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/file_upload_target_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -11
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +12 -12
- data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +33 -33
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -3
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +3 -6
- data/app/serializers/spree/api/v3/admin/price_history_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +1 -5
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +4 -6
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +5 -11
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -3
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +9 -2
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -4
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +3 -5
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +7 -8
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +9 -4
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +17 -98
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +7 -3
- data/app/serializers/spree/api/v3/base_serializer.rb +112 -7
- data/app/serializers/spree/api/v3/cart_serializer.rb +16 -30
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +5 -13
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -12
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/discount_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +2 -8
- data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/file_upload_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/file_upload_target_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/import_serializer.rb +0 -12
- data/app/serializers/spree/api/v3/line_item_serializer.rb +15 -5
- data/app/serializers/spree/api/v3/locale_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/media_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -4
- data/app/serializers/spree/api/v3/order_serializer.rb +5 -23
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/price_history_serializer.rb +11 -6
- data/app/serializers/spree/api/v3/price_serializer.rb +17 -10
- data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
- data/app/serializers/spree/api/v3/product_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/refund_serializer.rb +8 -5
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/return_serializer.rb +3 -6
- data/app/serializers/spree/api/v3/seller/address_serializer.rb +12 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/country_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +4 -8
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +9 -8
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/file_upload_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/file_upload_target_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +16 -16
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +12 -0
- data/app/serializers/spree/api/v3/seller/price_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +7 -7
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +8 -5
- data/app/serializers/spree/api/v3/seller/state_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +6 -7
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -5
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/variant_serializer.rb +3 -3
- data/app/services/spree/api/v3/filter_predicates.rb +29 -0
- data/app/services/spree/api/v3/filter_table.rb +337 -0
- data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
- data/app/services/spree/api/v3/request_schema.rb +430 -0
- data/app/services/spree/webhooks/deliver_webhook.rb +7 -3
- data/config/initializers/typelizer.rb +1 -1
- data/config/routes.rb +5 -3
- data/lib/spree/api/configuration.rb +5 -0
- data/lib/spree/api/dependencies.rb +7 -6
- data/lib/spree/api/middleware/request_size_limit.rb +24 -3
- data/lib/spree/api/openapi/filter_documentation.rb +136 -0
- data/lib/spree/api/openapi/schema_helper.rb +126 -80
- data/lib/spree/api/preference_families.rb +46 -0
- data/lib/spree/api/preference_types.rb +138 -0
- data/lib/spree/api/typelizer_generation.rb +4 -0
- data/lib/tasks/filters.rake +12 -0
- data/lib/typelizer/open_enums.rb +10 -0
- metadata +60 -10
- data/app/controllers/concerns/spree/api/v3/address_params.rb +0 -17
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +0 -35
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +0 -54
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +0 -21
|
@@ -16,16 +16,84 @@ module Spree
|
|
|
16
16
|
object.prefixed_id
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
|
|
19
|
+
# Display strings that are labels, not formatted money.
|
|
20
|
+
FORMATTED_LABELS = %i[display_name display_description display_code display_action].freeze
|
|
21
|
+
|
|
22
|
+
# Back-office serializers leave formatting money to the client, which
|
|
23
|
+
# shows it in the admin's own language (docs/plans/6.0-money-correctness.md,
|
|
24
|
+
# PR E): inherited display_* attributes are dropped, and nested prices
|
|
25
|
+
# are written with the admin price serializers, which carry none.
|
|
26
|
+
#
|
|
27
|
+
# @param surface [Symbol] :admin or :seller, whose price serializers to use
|
|
28
|
+
def self.without_formatted_money(surface = :admin)
|
|
29
|
+
without_display_money
|
|
30
|
+
define_method(:price_serializer) { Spree.api.public_send(:"#{surface}_price_serializer") }
|
|
31
|
+
define_method(:price_history_serializer) { Spree.api.public_send(:"#{surface}_price_history_serializer") }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Drops the inherited display_* money attributes, keeping labels.
|
|
35
|
+
# Emails use it alone: their templates format amounts with the `money`
|
|
36
|
+
# Liquid filter.
|
|
37
|
+
def self.without_display_money
|
|
38
|
+
_attributes.delete_if { |key, _| display_money?(key) }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Declares money attributes, written as decimal strings with exactly
|
|
42
|
+
# the currency's decimal places ("10.00", "1.500", "100"), or up to
|
|
43
|
+
# four for unit prices ("0.0125"). +display_*+ names pass through as
|
|
44
|
+
# formatted. All render +null+ for gated (prices_hidden) guests, keyed
|
|
45
|
+
# off the same +hide_prices+ flag the +price_for+/+price_in+ helpers
|
|
46
|
+
# use, so the whole price surface is gated from one place.
|
|
47
|
+
#
|
|
48
|
+
# @param currency [Symbol, Proc] the record's reader for its currency,
|
|
49
|
+
# or a block taking the record
|
|
50
|
+
# @param unit_price [Boolean]
|
|
51
|
+
# @param descriptions [Hash{Symbol => String}] what each amount is, for
|
|
52
|
+
# the API reference and the SDK types
|
|
53
|
+
def self.money_attributes(*names, currency: :currency, unit_price: false, descriptions: {})
|
|
54
|
+
typelize(**names.index_with do |name|
|
|
55
|
+
next display_money_type(name) if display_money?(name)
|
|
56
|
+
|
|
57
|
+
descriptions[name] ? [:string, nullable: true, comment: descriptions[name]] : [:string, nullable: true]
|
|
58
|
+
end)
|
|
59
|
+
|
|
60
|
+
names.each do |name|
|
|
61
|
+
formatted = display_money?(name)
|
|
62
|
+
attribute(name) do |object|
|
|
63
|
+
next if params[:hide_prices]
|
|
64
|
+
|
|
65
|
+
value = object.public_send(name)
|
|
66
|
+
next value if formatted || value.nil?
|
|
67
|
+
|
|
68
|
+
code = currency.is_a?(Proc) ? currency.call(object) : object.public_send(currency)
|
|
69
|
+
Spree::Money::Rounding.format(value, code, unit_price: unit_price)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# A formatted money copy, as opposed to a label such as +display_name+.
|
|
75
|
+
def self.display_money?(name)
|
|
76
|
+
name.to_s.start_with?('display_') && !FORMATTED_LABELS.include?(name.to_sym)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# The type of a formatted money copy: deprecated in favour of the
|
|
80
|
+
# amount it formats, which clients format in the reader's language.
|
|
81
|
+
def self.display_money_type(name, nullable: true)
|
|
82
|
+
amount = name.to_s.delete_prefix('display_')
|
|
83
|
+
[:string, nullable: nullable,
|
|
84
|
+
comment: "`#{amount}` formatted with its currency symbol in the request's language.",
|
|
85
|
+
deprecated: "Format `#{amount}` with its currency instead. Removed in 6.1."]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Declares rates and percentages, written as decimal strings without
|
|
89
|
+
# trailing zeros ("0.23", "7.25", "10"). A name ending +_percent+ or
|
|
90
|
+
# +_percentage+ holds 0-100; +rate+ or a name ending +_rate+ holds a
|
|
91
|
+
# fraction.
|
|
92
|
+
def self.rate_attributes(*names)
|
|
25
93
|
typelize(**names.index_with { [:string, nullable: true] })
|
|
26
94
|
|
|
27
95
|
names.each do |name|
|
|
28
|
-
attribute(name) { |object| object.public_send(name)
|
|
96
|
+
attribute(name) { |object| Spree::Money::Rounding.format_decimal(object.public_send(name)) }
|
|
29
97
|
end
|
|
30
98
|
end
|
|
31
99
|
|
|
@@ -47,6 +115,39 @@ module Spree
|
|
|
47
115
|
end
|
|
48
116
|
end
|
|
49
117
|
|
|
118
|
+
# Declares a model's settings under their plain names (see
|
|
119
|
+
# `exposes_preferences`) — every exposed one unless named — typed from
|
|
120
|
+
# their declarations so the generated SDK types never drift from the
|
|
121
|
+
# model. Each reads the stored setting, never a reader the model
|
|
122
|
+
# overrides with a fallback.
|
|
123
|
+
#
|
|
124
|
+
# preference_attributes Spree::Store, except: %i[payout_provider]
|
|
125
|
+
def self.preference_attributes(model, *names, except: [])
|
|
126
|
+
names = model.exposed_preference_names.to_a - except if names.empty?
|
|
127
|
+
definitions = model.preference_definitions
|
|
128
|
+
names.each do |name|
|
|
129
|
+
typelize name => preference_type_hint(Spree::PreferenceSchema::JsonSchema.property_schema(definitions.fetch(name)))
|
|
130
|
+
reader = :"preferred_#{name}"
|
|
131
|
+
attribute(name) do |object|
|
|
132
|
+
value = object.public_send(reader)
|
|
133
|
+
value.is_a?(BigDecimal) ? value.to_s('F') : value
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
TYPELIZER_TYPES = { 'string' => :string, 'integer' => :number, 'number' => :number, 'boolean' => :boolean }.freeze
|
|
139
|
+
private_constant :TYPELIZER_TYPES
|
|
140
|
+
|
|
141
|
+
def self.preference_type_hint(schema)
|
|
142
|
+
types = Array(schema['type'])
|
|
143
|
+
hint = TYPELIZER_TYPES.fetch((types - ['null']).first, :unknown)
|
|
144
|
+
options = {}
|
|
145
|
+
options[:nullable] = true if types.include?('null')
|
|
146
|
+
options[:enum] = schema['enum'].compact if schema['enum']
|
|
147
|
+
options.empty? ? hint : [hint, options]
|
|
148
|
+
end
|
|
149
|
+
private_class_method :preference_type_hint
|
|
150
|
+
|
|
50
151
|
# Declares the wire form of an `acted_by` association: the actor's
|
|
51
152
|
# prefixed id, the kind of actor it is, and the expansion. Both
|
|
52
153
|
# halves read off the columns, so naming an actor costs no query and
|
|
@@ -143,6 +244,10 @@ module Spree
|
|
|
143
244
|
product.featured_variant(currency: current_currency)
|
|
144
245
|
end
|
|
145
246
|
|
|
247
|
+
def price_serializer = Spree.api.price_serializer
|
|
248
|
+
|
|
249
|
+
def price_history_serializer = Spree.api.price_history_serializer
|
|
250
|
+
|
|
146
251
|
# Returns price for a variant using full Price List resolution
|
|
147
252
|
# This may return a price from a price list if applicable
|
|
148
253
|
# Memoized per variant to avoid duplicate queries
|
|
@@ -4,19 +4,18 @@ module Spree
|
|
|
4
4
|
# Store API Cart Serializer
|
|
5
5
|
# Pre-purchase cart data with checkout progression info
|
|
6
6
|
class CartSerializer < BaseSerializer
|
|
7
|
-
typelize number: :string, current_step: :string, completed_steps: 'string[]', token: :string,
|
|
7
|
+
typelize number: [:string, deprecated: 'Use `id`; a cart has no order number. Removed in 6.1.'], current_step: :string, completed_steps: 'string[]', token: :string,
|
|
8
8
|
email: [:string, nullable: true], customer_note: [:string, nullable: true],
|
|
9
|
-
market_id: [:string, nullable: true], channel_id: [:string, nullable: true], currency: :string,
|
|
10
|
-
locale: [:string, nullable: true], total_quantity: :number, coupon_code: [:string, nullable: true],
|
|
9
|
+
market_id: [:string, nullable: true], channel_id: [:string, nullable: true], currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
10
|
+
locale: [:string, nullable: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'], total_quantity: :number, coupon_code: [:string, nullable: true],
|
|
11
11
|
preferred_stock_location_id: [:string, nullable: true], company_id: [:string, nullable: true],
|
|
12
12
|
company_name: [:string, nullable: true], po_number: [:string, nullable: true],
|
|
13
13
|
po_number_required: :boolean, po_document_filename: [:string, nullable: true],
|
|
14
|
-
po_document_byte_size: ['number | null'], order_minimum: [
|
|
15
|
-
order_minimum_shortfall: [
|
|
14
|
+
po_document_byte_size: ['number | null'], order_minimum: [:string, nullable: true],
|
|
15
|
+
order_minimum_shortfall: [:string, nullable: true], below_order_minimum: ['boolean | null'],
|
|
16
16
|
freight_summary: [:FreightSummary, nullable: true],
|
|
17
17
|
requirements: 'Array<{step: string, field: string, code: string, message: string}>',
|
|
18
|
-
|
|
19
|
-
covered_by_store_credit: :boolean, shipping_eq_billing_address: :boolean,
|
|
18
|
+
shipping_eq_billing_address: :boolean,
|
|
20
19
|
warnings: 'Array<{code: string, message: string, line_item_id?: string, variant_id?: string, item_index?: number}>',
|
|
21
20
|
billing_address: { nullable: true }, shipping_address: { nullable: true },
|
|
22
21
|
gift_card: { nullable: true }, market: { nullable: true }
|
|
@@ -59,25 +58,9 @@ module Spree
|
|
|
59
58
|
|
|
60
59
|
# Nulled for gated (prices_hidden) guests so the cart can't leak the
|
|
61
60
|
# prices that product/variant serializers already withhold.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
:
|
|
65
|
-
:tax_total, :display_tax_total, :included_tax_total, :display_included_tax_total,
|
|
66
|
-
:additional_tax_total, :display_additional_tax_total, :total, :display_total,
|
|
67
|
-
:gift_card_total, :display_gift_card_total,
|
|
68
|
-
:amount_due, :display_amount_due,
|
|
69
|
-
:delivery_total, :display_delivery_total,
|
|
70
|
-
:fee_total, :display_fee_total
|
|
71
|
-
|
|
72
|
-
attribute :store_credit_total do |order|
|
|
73
|
-
order.total_applied_store_credit.to_s unless params[:hide_prices]
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
attribute :display_store_credit_total do |order|
|
|
77
|
-
order.display_total_applied_store_credit.to_s unless params[:hide_prices]
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
attribute :covered_by_store_credit, &:covered_by_store_credit?
|
|
61
|
+
include Spree::Api::V3::PurchaseSummary
|
|
62
|
+
money_attributes :adjustment_total, :display_adjustment_total,
|
|
63
|
+
descriptions: { adjustment_total: 'Every discount, fee and added tax together, as one amount.' }
|
|
81
64
|
|
|
82
65
|
attribute :current_step do |order|
|
|
83
66
|
order.current_checkout_step
|
|
@@ -91,7 +74,11 @@ module Spree
|
|
|
91
74
|
# it is dropped rather than redacted for a gated guest: a requirement
|
|
92
75
|
# with its numbers stripped tells them nothing they can act on.
|
|
93
76
|
attribute :requirements do |order|
|
|
94
|
-
|
|
77
|
+
# 5.6 storefronts matched the delivery requirement by its field, so
|
|
78
|
+
# it keeps the old name until 6.1; `code` already carries the new one.
|
|
79
|
+
requirements = Spree::Checkout::Requirements.new(order).call.map do |requirement|
|
|
80
|
+
requirement[:field] == 'delivery_method' ? requirement.merge(field: 'shipping_method') : requirement
|
|
81
|
+
end
|
|
95
82
|
next requirements unless params[:hide_prices]
|
|
96
83
|
|
|
97
84
|
requirements.reject { |requirement| requirement[:code] == 'order_minimum_not_met' }
|
|
@@ -106,11 +93,11 @@ module Spree
|
|
|
106
93
|
# shortfall are amounts, and a storefront that hides prices from
|
|
107
94
|
# guests must not hand them "$180 short of $500" instead.
|
|
108
95
|
attribute :order_minimum do |order|
|
|
109
|
-
order.order_minimum_amount
|
|
96
|
+
Spree::Money::Rounding.format(order.order_minimum_amount, order.currency) unless params[:hide_prices]
|
|
110
97
|
end
|
|
111
98
|
|
|
112
99
|
attribute :order_minimum_shortfall do |order|
|
|
113
|
-
order.order_minimum_shortfall
|
|
100
|
+
Spree::Money::Rounding.format(order.order_minimum_shortfall, order.currency) unless params[:hide_prices]
|
|
114
101
|
end
|
|
115
102
|
|
|
116
103
|
attribute :below_order_minimum do |order|
|
|
@@ -136,7 +123,6 @@ module Spree
|
|
|
136
123
|
many :fees, resource: proc { Spree.api.fee_serializer }
|
|
137
124
|
many :line_items, key: :items, resource: proc { Spree.api.line_item_serializer }
|
|
138
125
|
many :fulfillments, resource: proc { Spree.api.fulfillment_serializer }
|
|
139
|
-
many :payments, resource: proc { Spree.api.payment_serializer }
|
|
140
126
|
one :billing_address, resource: proc { Spree.api.address_serializer }
|
|
141
127
|
one :shipping_address, resource: proc { Spree.api.address_serializer }
|
|
142
128
|
|
|
@@ -6,13 +6,6 @@ module Spree
|
|
|
6
6
|
class ClaimLineItemSerializer < BaseSerializer
|
|
7
7
|
typelize quantity: :number,
|
|
8
8
|
send_replacement: :boolean,
|
|
9
|
-
refund_amount: :string,
|
|
10
|
-
display_refund_amount: :string,
|
|
11
|
-
paid_amount: :string,
|
|
12
|
-
pre_tax_amount: :string,
|
|
13
|
-
included_tax_total: :string,
|
|
14
|
-
additional_tax_total: :string,
|
|
15
|
-
tax_total: :string,
|
|
16
9
|
description: [:string, nullable: true],
|
|
17
10
|
variant_id: [:string, nullable: true],
|
|
18
11
|
replacement_variant_id: [:string, nullable: true],
|
|
@@ -20,12 +13,11 @@ module Spree
|
|
|
20
13
|
|
|
21
14
|
attributes :quantity, :send_replacement, :description
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
additional_tax_total: :string, tax_total: :string, display_refund_amount: :string
|
|
16
|
+
# paid_amount is what the customer actually paid for these units, tax
|
|
17
|
+
# included — the ceiling the resolve workflow enforces, and what the
|
|
18
|
+
# dashboard offers when the claim carries no explicit amount.
|
|
19
|
+
money_attributes :refund_amount, :paid_amount, :pre_tax_amount, :included_tax_total,
|
|
20
|
+
:additional_tax_total, :tax_total, :display_refund_amount
|
|
29
21
|
prefixed_id_attributes :variant, :replacement_variant, :line_item
|
|
30
22
|
|
|
31
23
|
one :variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('variant') }
|
|
@@ -10,8 +10,6 @@ module Spree
|
|
|
10
10
|
resolution: [:string, nullable: true],
|
|
11
11
|
order_id: [:string, nullable: true],
|
|
12
12
|
reason_id: [:string, nullable: true],
|
|
13
|
-
refund_total: :string,
|
|
14
|
-
display_refund_total: :string,
|
|
15
13
|
approved_at: [:string, nullable: true],
|
|
16
14
|
resolved_at: [:string, nullable: true],
|
|
17
15
|
denied_at: [:string, nullable: true],
|
|
@@ -21,7 +19,8 @@ module Spree
|
|
|
21
19
|
|
|
22
20
|
prefixed_id_attributes :order, :reason
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
money_attributes :refund_total, :display_refund_total
|
|
23
|
+
|
|
25
24
|
attribute :approved_at do |claim|
|
|
26
25
|
claim.approved_at&.iso8601
|
|
27
26
|
end
|
|
@@ -5,7 +5,8 @@ module Spree
|
|
|
5
5
|
include Alba::Resource
|
|
6
6
|
include Typelizer::DSL
|
|
7
7
|
|
|
8
|
-
typelize iso: :string,
|
|
8
|
+
typelize iso: [:string, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'], iso3: :string,
|
|
9
|
+
name: [:string, deprecated: 'Name the country from `iso` with `Intl.DisplayNames` (type `region`). Removed in 6.1.'],
|
|
9
10
|
states_required: :boolean, zipcode_required: :boolean,
|
|
10
11
|
market: [:Market, nullable: true]
|
|
11
12
|
|
|
@@ -5,9 +5,17 @@ module Spree
|
|
|
5
5
|
include Alba::Resource
|
|
6
6
|
include Typelizer::DSL
|
|
7
7
|
|
|
8
|
-
typelize iso_code: :string, name: :string,
|
|
8
|
+
typelize iso_code: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], name: [:string, deprecated: 'Name the currency from `iso_code` with `Intl.DisplayNames` (type `currency`). Removed in 6.1.'],
|
|
9
|
+
symbol: [:string, deprecated: 'Format amounts with `formatMoney` or `Intl.NumberFormat`, which place the symbol. Removed in 6.1.'],
|
|
10
|
+
decimal_places: :number
|
|
9
11
|
|
|
10
12
|
attributes :iso_code, :name, :symbol
|
|
13
|
+
|
|
14
|
+
# ISO 4217 minor units: the decimals every amount in this currency is
|
|
15
|
+
# written with (2 for USD, 0 for JPY, 3 for KWD).
|
|
16
|
+
attribute :decimal_places do |currency|
|
|
17
|
+
Spree::Money::Rounding.precision(currency)
|
|
18
|
+
end
|
|
11
19
|
end
|
|
12
20
|
end
|
|
13
21
|
end
|
|
@@ -7,7 +7,8 @@ module Spree
|
|
|
7
7
|
typelize email: :string, first_name: [:string, nullable: true], last_name: [:string, nullable: true],
|
|
8
8
|
full_name: :string,
|
|
9
9
|
phone: [:string, nullable: true], accepts_email_marketing: :boolean,
|
|
10
|
-
available_store_credit_total: :string,
|
|
10
|
+
available_store_credit_total: :string,
|
|
11
|
+
display_available_store_credit_total: display_money_type(:display_available_store_credit_total, nullable: false),
|
|
11
12
|
default_billing_address: { nullable: true }, default_shipping_address: { nullable: true },
|
|
12
13
|
newsletter_subscriber: { nullable: true },
|
|
13
14
|
email_marketing_consent_updated_at: [:string, nullable: true]
|
|
@@ -28,7 +29,7 @@ module Spree
|
|
|
28
29
|
attribute :available_store_credit_total do |user, params|
|
|
29
30
|
store = params&.dig(:store) || Spree::Current.store
|
|
30
31
|
currency = params&.dig(:currency) || Spree::Current.currency || store&.default_currency
|
|
31
|
-
user.total_available_store_credit(currency, store)
|
|
32
|
+
Spree::Money::Rounding.format(user.total_available_store_credit(currency, store), currency)
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
attribute :display_available_store_credit_total do |user, params|
|
|
@@ -3,11 +3,6 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
class DeliveryRateSerializer < BaseSerializer
|
|
5
5
|
typelize name: :string, selected: :boolean, delivery_method_id: :string,
|
|
6
|
-
cost: :string, display_cost: :string,
|
|
7
|
-
total: :string, display_total: :string,
|
|
8
|
-
additional_tax_total: :string, display_additional_tax_total: :string,
|
|
9
|
-
included_tax_total: :string, display_included_tax_total: :string,
|
|
10
|
-
tax_total: :string, display_tax_total: :string,
|
|
11
6
|
carrier: [:string, nullable: true],
|
|
12
7
|
service_level: [:string, nullable: true],
|
|
13
8
|
estimated_delivery_date: [:string, nullable: true],
|
|
@@ -19,11 +14,11 @@ module Spree
|
|
|
19
14
|
# Carrier, service level and delivery date come from the rate provider
|
|
20
15
|
# and are what the customer chooses between; nil on calculator-priced
|
|
21
16
|
# methods. Provider metadata stays admin-only.
|
|
22
|
-
attributes :name, :selected
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
attributes :name, :selected
|
|
18
|
+
|
|
19
|
+
money_attributes :cost, :total, :additional_tax_total, :included_tax_total, :tax_total
|
|
20
|
+
|
|
21
|
+
attributes :carrier, :service_level, :estimated_delivery_date,
|
|
27
22
|
:unpriced
|
|
28
23
|
|
|
29
24
|
# What the shipment looks like to a freight forwarder — cartons,
|
|
@@ -33,8 +28,9 @@ module Spree
|
|
|
33
28
|
# froze it here when it quoted.
|
|
34
29
|
one :freight_summary, resource: proc { Spree.api.freight_summary_serializer }
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
money_attributes :display_cost, :display_total, :display_additional_tax_total,
|
|
32
|
+
:display_included_tax_total, :display_tax_total
|
|
33
|
+
|
|
38
34
|
one :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
|
|
39
35
|
end
|
|
40
36
|
end
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
class DeliveryZoneMemberSerializer < BaseSerializer
|
|
5
|
-
typelize member_type: [:string, enum: Spree::DeliveryZoneMember::MEMBER_TYPES], country_code: [:string, nullable: true],
|
|
5
|
+
typelize member_type: [:string, enum: Spree::DeliveryZoneMember::MEMBER_TYPES], country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
6
6
|
country_name: [:string, nullable: true],
|
|
7
7
|
state_code: [:string, nullable: true], state_name: [:string, nullable: true],
|
|
8
8
|
postal_code_prefix: [:string, nullable: true],
|
|
@@ -12,8 +12,11 @@ module Spree
|
|
|
12
12
|
|
|
13
13
|
attributes :label, :kind, :code, :value_type
|
|
14
14
|
|
|
15
|
+
# A percent discount carries a rate; a flat one an amount.
|
|
15
16
|
attribute :value do |record|
|
|
16
|
-
record.value
|
|
17
|
+
next Spree::Money::Rounding.format_decimal(record.value) if record.value_type == 'percent'
|
|
18
|
+
|
|
19
|
+
Spree::Money::Rounding.format(record.value, record.currency) unless params[:hide_prices]
|
|
17
20
|
end
|
|
18
21
|
|
|
19
22
|
prefixed_id_attributes :promotion, :line_item, :fulfillment
|
|
@@ -7,11 +7,6 @@ module Spree
|
|
|
7
7
|
typelize quantity: :number,
|
|
8
8
|
received_quantity: :number,
|
|
9
9
|
resellable: :boolean,
|
|
10
|
-
original_price: :string,
|
|
11
|
-
new_variant_price: :string,
|
|
12
|
-
price_difference: :string,
|
|
13
|
-
original_tax_total: :string,
|
|
14
|
-
new_tax_total: :string,
|
|
15
10
|
original_variant_id: [:string, nullable: true],
|
|
16
11
|
new_variant_id: [:string, nullable: true],
|
|
17
12
|
line_item_id: [:string, nullable: true],
|
|
@@ -21,10 +16,9 @@ module Spree
|
|
|
21
16
|
|
|
22
17
|
# What the customer paid for the units coming back, after discounts
|
|
23
18
|
# and with their tax.
|
|
24
|
-
|
|
19
|
+
money_attributes :original_price
|
|
25
20
|
# The replacement at the same discount, with its own tax.
|
|
26
|
-
|
|
27
|
-
new_tax_total: :string
|
|
21
|
+
money_attributes :new_variant_price, :price_difference, :original_tax_total, :new_tax_total
|
|
28
22
|
prefixed_id_attributes :original_variant, :new_variant, :line_item, :fulfillment_item
|
|
29
23
|
|
|
30
24
|
one :original_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('original_variant') }
|
|
@@ -9,8 +9,6 @@ module Spree
|
|
|
9
9
|
status: [:string, enum: Spree::Exchange.statuses, enum_type_name: 'ExchangeStatus'],
|
|
10
10
|
order_id: [:string, nullable: true],
|
|
11
11
|
reason_id: [:string, nullable: true],
|
|
12
|
-
price_difference: :string,
|
|
13
|
-
display_price_difference: :string,
|
|
14
12
|
approved_at: [:string, nullable: true],
|
|
15
13
|
received_at: [:string, nullable: true],
|
|
16
14
|
fulfilled_at: [:string, nullable: true],
|
|
@@ -20,7 +18,8 @@ module Spree
|
|
|
20
18
|
|
|
21
19
|
prefixed_id_attributes :order, :reason
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
money_attributes :price_difference, :display_price_difference
|
|
22
|
+
|
|
24
23
|
attribute :approved_at do |exchange|
|
|
25
24
|
exchange.approved_at&.iso8601
|
|
26
25
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# A file accepted by an upload endpoint ({Spree::FileUpload}).
|
|
5
|
+
#
|
|
6
|
+
# `signed_id` is opaque: clients pass it back unchanged to the endpoint
|
|
7
|
+
# that uses the file and never parse it. It stops being attachable at
|
|
8
|
+
# `expires_at`. `upload` is where a presigned upload sends its bytes, and
|
|
9
|
+
# null once the file is already stored.
|
|
10
|
+
class FileUploadSerializer < BaseSerializer
|
|
11
|
+
# A value object, not a record — it has no id of its own.
|
|
12
|
+
_attributes.delete(:id)
|
|
13
|
+
|
|
14
|
+
typelize signed_id: :string,
|
|
15
|
+
filename: :string,
|
|
16
|
+
content_type: :string,
|
|
17
|
+
byte_size: :number,
|
|
18
|
+
visibility: [:string, enum: Spree::FileUpload::VISIBILITIES],
|
|
19
|
+
expires_at: :string,
|
|
20
|
+
upload: [:FileUploadTarget, nullable: true]
|
|
21
|
+
|
|
22
|
+
attributes :signed_id, :filename, :content_type, :byte_size, :visibility, expires_at: :iso8601
|
|
23
|
+
|
|
24
|
+
one :upload_target, key: :upload, resource: proc { Spree.api.file_upload_target_serializer }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Where a presigned upload sends its bytes. Clients send them with
|
|
5
|
+
# `method` to `url` carrying exactly `headers`, and treat all three as
|
|
6
|
+
# opaque: the storage service decides them.
|
|
7
|
+
class FileUploadTargetSerializer < BaseSerializer
|
|
8
|
+
_attributes.delete(:id)
|
|
9
|
+
|
|
10
|
+
typelize method: :string, url: :string, headers: 'Record<string, string>'
|
|
11
|
+
|
|
12
|
+
attribute :method, &:http_method
|
|
13
|
+
attributes :url, :headers
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -4,16 +4,14 @@ module Spree
|
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
6
|
class GiftCardBatchSerializer < BaseSerializer
|
|
7
|
-
typelize codes_count: :number,
|
|
7
|
+
typelize codes_count: :number, currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
8
8
|
prefix: [:string, nullable: true], expires_at: [:string, nullable: true],
|
|
9
9
|
created_by_id: [:string, nullable: true]
|
|
10
10
|
|
|
11
11
|
attributes :codes_count, :currency, :prefix,
|
|
12
12
|
created_at: :iso8601, updated_at: :iso8601
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
batch.amount&.to_s
|
|
16
|
-
end
|
|
14
|
+
money_attributes :amount
|
|
17
15
|
|
|
18
16
|
attribute :expires_at do |batch|
|
|
19
17
|
batch.expires_at&.iso8601
|
|
@@ -4,8 +4,10 @@ module Spree
|
|
|
4
4
|
class GiftCardSerializer < BaseSerializer
|
|
5
5
|
typelize code: :string,
|
|
6
6
|
status: [:string, enum: Spree::GiftCard::DISPLAY_STATUSES, enum_type_name: 'GiftCardStatus'],
|
|
7
|
-
display_amount:
|
|
8
|
-
|
|
7
|
+
display_amount: display_money_type(:display_amount),
|
|
8
|
+
display_amount_used: display_money_type(:display_amount_used),
|
|
9
|
+
display_amount_remaining: display_money_type(:display_amount_remaining),
|
|
10
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
9
11
|
expires_at: [:string, nullable: true], redeemed_at: [:string, nullable: true], expired: :boolean,
|
|
10
12
|
active: :boolean
|
|
11
13
|
|
|
@@ -6,7 +6,6 @@ module Spree
|
|
|
6
6
|
class ImportSerializer < BaseSerializer
|
|
7
7
|
typelize number: :string,
|
|
8
8
|
type: [:string, nullable: true, comment: 'Import type. Built-in: products, product_translations, customers, price_list_prices. Extensions may register more.'], status: [:string, enum: Spree::Import.statuses, enum_type_name: 'ImportStatus'],
|
|
9
|
-
owner_type: [:string, nullable: true], owner_id: [:string, nullable: true],
|
|
10
9
|
store_id: [:string, nullable: true], seller_id: [:string, nullable: true],
|
|
11
10
|
user_id: [:string, nullable: true], rows_count: :number
|
|
12
11
|
|
|
@@ -26,17 +25,6 @@ module Spree
|
|
|
26
25
|
# whose it is. A null `seller_id` means the operator's own.
|
|
27
26
|
prefixed_id_attributes :store, :seller
|
|
28
27
|
|
|
29
|
-
# @deprecated Read `store_id` / `seller_id` — removed in 6.1. Emitted
|
|
30
|
-
# from the pair above rather than the dropped columns, so a client
|
|
31
|
-
# still reading them sees the same answer.
|
|
32
|
-
attribute :owner_type do |import|
|
|
33
|
-
Spree::Base.polymorphic_api_type(import.seller_id.present? ? 'Spree::Seller' : 'Spree::Store')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
attribute :owner_id do |import|
|
|
37
|
-
(import.seller || import.store)&.prefixed_id
|
|
38
|
-
end
|
|
39
|
-
|
|
40
28
|
prefixed_id_attributes :user
|
|
41
29
|
end
|
|
42
30
|
end
|
|
@@ -2,8 +2,8 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
class LineItemSerializer < BaseSerializer
|
|
5
|
-
typelize variant_id: :string, quantity: :number, currency: :string, name: :string, slug: :string,
|
|
6
|
-
options_text: :string, compare_at_amount: [:string, nullable: true],
|
|
5
|
+
typelize variant_id: :string, quantity: :number, currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], name: :string, slug: :string,
|
|
6
|
+
options_text: :string, compare_at_amount: [:string, nullable: true, comment: 'The compare-at price times quantity, or null when the variant has none.'],
|
|
7
7
|
thumbnail_url: [:string, nullable: true], preorder: :boolean,
|
|
8
8
|
preorder_ships_at: [:string, nullable: true], seller_id: [:string, nullable: true]
|
|
9
9
|
|
|
@@ -30,21 +30,31 @@ module Spree
|
|
|
30
30
|
|
|
31
31
|
# Nulled for gated (prices_hidden) guests so the cart's line items can't
|
|
32
32
|
# leak the prices that product/variant serializers already withhold.
|
|
33
|
-
money_attributes :price, :display_price, :
|
|
33
|
+
money_attributes :price, :display_price, unit_price: true, descriptions: { price: 'The price of one unit.' }
|
|
34
|
+
money_attributes :total, :display_total,
|
|
34
35
|
:adjustment_total, :display_adjustment_total,
|
|
35
36
|
:additional_tax_total, :display_additional_tax_total,
|
|
36
37
|
:included_tax_total, :display_included_tax_total,
|
|
37
38
|
:discount_total, :display_discount_total,
|
|
38
39
|
:pre_tax_amount, :display_pre_tax_amount,
|
|
39
40
|
:discounted_amount, :display_discounted_amount,
|
|
40
|
-
:display_compare_at_amount
|
|
41
|
+
:display_compare_at_amount,
|
|
42
|
+
descriptions: {
|
|
43
|
+
total: 'What this line costs: price times quantity, with its discounts, fees and added tax.',
|
|
44
|
+
adjustment_total: "This line's discounts, fees and added tax together.",
|
|
45
|
+
additional_tax_total: 'Tax added on top of the price.',
|
|
46
|
+
included_tax_total: 'Tax already included in the price.',
|
|
47
|
+
discount_total: 'What promotions take off this line, as a negative amount.',
|
|
48
|
+
pre_tax_amount: 'This line after discounts, without tax.',
|
|
49
|
+
discounted_amount: 'Price times quantity, after discounts.'
|
|
50
|
+
}
|
|
41
51
|
|
|
42
52
|
# Return compare_at_amount as string, nil if zero
|
|
43
53
|
attribute :compare_at_amount do |line_item|
|
|
44
54
|
next nil if params[:hide_prices]
|
|
45
55
|
|
|
46
56
|
amount = line_item.compare_at_amount
|
|
47
|
-
amount.present? && amount.positive? ? amount.
|
|
57
|
+
amount.present? && amount.positive? ? Spree::Money::Rounding.format(amount, line_item.currency, unit_price: true) : nil
|
|
48
58
|
end
|
|
49
59
|
|
|
50
60
|
# Thumbnail URL for line item (variant thumbnail or product thumbnail)
|
|
@@ -7,7 +7,9 @@ module Spree
|
|
|
7
7
|
include Alba::Resource
|
|
8
8
|
include Typelizer::DSL
|
|
9
9
|
|
|
10
|
-
typelize code: :string,
|
|
10
|
+
typelize code: [:string, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
11
|
+
name: [:string, deprecated: 'Name the locale from `code` with `Intl.DisplayNames`. Removed in 6.1.'],
|
|
12
|
+
default: :boolean, rtl: :boolean
|
|
11
13
|
|
|
12
14
|
attributes :code, :name
|
|
13
15
|
|
|
@@ -2,11 +2,11 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
class MarketSerializer < BaseSerializer
|
|
5
|
-
typelize name: :string, currency: :string,
|
|
6
|
-
default_locale: :string,
|
|
7
|
-
supported_locales: [:string, multi: true],
|
|
8
|
-
country_codes: [:string, multi: true],
|
|
9
|
-
country_isos: [:string, multi: true],
|
|
5
|
+
typelize name: :string, currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
6
|
+
default_locale: [:string, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
7
|
+
supported_locales: [:string, multi: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
8
|
+
country_codes: [:string, multi: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
9
|
+
country_isos: [:string, multi: true, deprecated: 'Use `country_codes`. Removed in 6.1.'],
|
|
10
10
|
tax_inclusive: :boolean,
|
|
11
11
|
default: :boolean
|
|
12
12
|
|