spree_api 6.0.0.beta3 → 6.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +4 -31
- data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
- data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +7 -0
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +2 -2
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +7 -2
- data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +2 -10
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +4 -8
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
- data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
- data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +0 -5
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +0 -6
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +1 -2
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +1 -9
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +3 -5
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +1 -6
- data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
- data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +1 -2
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +0 -7
- data/app/controllers/spree/api/v3/admin/me_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +18 -16
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +3 -3
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +2 -10
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +2 -14
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +3 -3
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +9 -7
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +6 -53
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +2 -6
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/products_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +1 -9
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +2 -10
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +2 -10
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +8 -12
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/store_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +17 -12
- data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
- data/app/controllers/spree/api/v3/base_controller.rb +10 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +44 -1
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +2 -2
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +3 -3
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +3 -3
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/me_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -11
- data/app/controllers/spree/api/v3/seller/products_controller.rb +2 -1
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/team_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +3 -11
- data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +5 -3
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +6 -2
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +5 -3
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +9 -6
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +0 -5
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +8 -6
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
- data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +5 -14
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +1 -5
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +1 -5
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +0 -4
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +5 -7
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -6
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +2 -10
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +8 -22
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
- data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +5 -15
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -1
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -7
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -10
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +2 -15
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +2 -15
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +1 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +5 -15
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +6 -19
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +4 -18
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +5 -1
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +6 -7
- data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/base_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/cart_serializer.rb +17 -45
- data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +11 -26
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -15
- data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +3 -23
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/discount_serializer.rb +1 -12
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +9 -27
- data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -15
- data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +5 -17
- data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/import_serializer.rb +3 -14
- data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
- data/app/serializers/spree/api/v3/line_item_serializer.rb +6 -20
- data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/media_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/order_group_serializer.rb +2 -23
- data/app/serializers/spree/api/v3/order_serializer.rb +12 -38
- data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/price_history_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/price_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/product_serializer.rb +7 -21
- data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
- data/app/serializers/spree/api/v3/refund_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +12 -19
- data/app/serializers/spree/api/v3/return_serializer.rb +6 -15
- data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +7 -13
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +4 -25
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +3 -15
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
- data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -11
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +2 -24
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +10 -20
- data/app/serializers/spree/api/v3/variant_serializer.rb +7 -21
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
- data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
- data/config/initializers/pagy.rb +1 -1
- data/config/initializers/typelizer.rb +6 -8
- data/config/locales/ar.yml +15 -0
- data/config/locales/be.yml +15 -0
- data/config/locales/bg.yml +15 -0
- data/config/locales/ca.yml +15 -0
- data/config/locales/cs.yml +15 -0
- data/config/locales/da.yml +15 -0
- data/config/locales/de-CH.yml +11 -0
- data/config/locales/de.yml +15 -0
- data/config/locales/el.yml +15 -0
- data/config/locales/en.yml +5 -40
- data/config/locales/es-CL.yml +10 -0
- data/config/locales/es-EC.yml +11 -0
- data/config/locales/es-MX.yml +12 -0
- data/config/locales/es.yml +15 -0
- data/config/locales/et.yml +15 -0
- data/config/locales/fa.yml +15 -0
- data/config/locales/fi.yml +15 -0
- data/config/locales/fr.yml +15 -0
- data/config/locales/hu.yml +15 -0
- data/config/locales/id.yml +15 -0
- data/config/locales/it.yml +15 -0
- data/config/locales/ja.yml +15 -0
- data/config/locales/km.yml +15 -0
- data/config/locales/ko.yml +15 -0
- data/config/locales/ku.yml +15 -0
- data/config/locales/lt.yml +15 -0
- data/config/locales/lv.yml +15 -0
- data/config/locales/nb.yml +15 -0
- data/config/locales/ne.yml +15 -0
- data/config/locales/nl.yml +15 -0
- data/config/locales/pl.yml +15 -0
- data/config/locales/pt-BR.yml +13 -0
- data/config/locales/pt.yml +15 -0
- data/config/locales/ro.yml +15 -0
- data/config/locales/ru.yml +15 -0
- data/config/locales/sk.yml +15 -0
- data/config/locales/sl-SI.yml +15 -0
- data/config/locales/sv.yml +15 -0
- data/config/locales/th.yml +15 -0
- data/config/locales/tr.yml +15 -0
- data/config/locales/uk.yml +15 -0
- data/config/locales/vi.yml +15 -0
- data/config/locales/zh-CN.yml +15 -0
- data/config/locales/zh-TW.yml +15 -0
- data/config/routes.rb +49 -99
- data/lib/spree/api/dependencies.rb +53 -274
- data/lib/spree/api/openapi/schema_helper.rb +1 -1
- data/lib/spree/api/typelizer_generation.rb +35 -0
- data/lib/spree/api/webhook_event_types.rb +140 -0
- data/lib/spree/api.rb +0 -2
- metadata +71 -36
- data/config/i18n-tasks.yml +0 -40
- data/config/initializers/alba.rb +0 -5
|
@@ -18,6 +18,7 @@ module Spree
|
|
|
18
18
|
result = @cart.apply_gift_card(gift_card)
|
|
19
19
|
|
|
20
20
|
if result.success?
|
|
21
|
+
sweep_unavailable_coupon_code!
|
|
21
22
|
render_cart(status: :created)
|
|
22
23
|
else
|
|
23
24
|
render_service_error(result.error)
|
|
@@ -31,6 +32,7 @@ module Spree
|
|
|
31
32
|
result = @cart.remove_gift_card
|
|
32
33
|
|
|
33
34
|
if result.success?
|
|
35
|
+
sweep_unavailable_coupon_code!
|
|
34
36
|
render_cart
|
|
35
37
|
else
|
|
36
38
|
render_service_error(result.error)
|
|
@@ -44,17 +46,17 @@ module Spree
|
|
|
44
46
|
gift_card = @cart.store.gift_cards.find_by(code: permitted_params[:code]&.downcase)
|
|
45
47
|
|
|
46
48
|
if gift_card.nil?
|
|
47
|
-
render_error(code: ERROR_CODES[:gift_card_not_found], message:
|
|
49
|
+
render_error(code: ERROR_CODES[:gift_card_not_found], message: I18n.t('spree.gift_card_not_found'), status: :not_found)
|
|
48
50
|
return
|
|
49
51
|
end
|
|
50
52
|
|
|
51
53
|
if gift_card.expired?
|
|
52
|
-
render_error(code: ERROR_CODES[:gift_card_expired], message:
|
|
54
|
+
render_error(code: ERROR_CODES[:gift_card_expired], message: I18n.t('spree.gift_card_expired'), status: :unprocessable_content)
|
|
53
55
|
return
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
if gift_card.redeemed?
|
|
57
|
-
render_error(code: ERROR_CODES[:gift_card_already_redeemed], message:
|
|
59
|
+
render_error(code: ERROR_CODES[:gift_card_already_redeemed], message: I18n.t('spree.gift_card_already_redeemed'), status: :unprocessable_content)
|
|
58
60
|
return
|
|
59
61
|
end
|
|
60
62
|
|
|
@@ -21,6 +21,7 @@ module Spree
|
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
if result.success?
|
|
24
|
+
sweep_unavailable_coupon_code!
|
|
24
25
|
render_cart(status: :created)
|
|
25
26
|
else
|
|
26
27
|
render_result_error(result)
|
|
@@ -41,7 +42,7 @@ module Spree
|
|
|
41
42
|
if permitted_params[:quantity].to_i < 1
|
|
42
43
|
return render_error(
|
|
43
44
|
code: ERROR_CODES[:invalid_quantity],
|
|
44
|
-
message:
|
|
45
|
+
message: I18n.t('spree.cart_line_item.quantity_must_be_positive'),
|
|
45
46
|
status: :unprocessable_content
|
|
46
47
|
)
|
|
47
48
|
end
|
|
@@ -56,6 +57,7 @@ module Spree
|
|
|
56
57
|
)
|
|
57
58
|
|
|
58
59
|
if result.success?
|
|
60
|
+
sweep_unavailable_coupon_code!
|
|
59
61
|
render_cart
|
|
60
62
|
else
|
|
61
63
|
render_result_error(result)
|
|
@@ -67,6 +69,7 @@ module Spree
|
|
|
67
69
|
@line_item.update!(metadata: @line_item.metadata.merge(permitted_params[:metadata].to_h))
|
|
68
70
|
end
|
|
69
71
|
|
|
72
|
+
sweep_unavailable_coupon_code!
|
|
70
73
|
render_cart
|
|
71
74
|
end
|
|
72
75
|
end
|
|
@@ -83,6 +86,7 @@ module Spree
|
|
|
83
86
|
)
|
|
84
87
|
|
|
85
88
|
if result.success?
|
|
89
|
+
sweep_unavailable_coupon_code!
|
|
86
90
|
render_cart
|
|
87
91
|
else
|
|
88
92
|
render_result_error(result)
|
|
@@ -93,7 +97,7 @@ module Spree
|
|
|
93
97
|
private
|
|
94
98
|
|
|
95
99
|
def variant
|
|
96
|
-
@variant ||=
|
|
100
|
+
@variant ||= @cart.orderable_variants.find_by_prefix_id!(permitted_params[:variant_id])
|
|
97
101
|
end
|
|
98
102
|
|
|
99
103
|
# Extension attributes ride in `options`, which is how AddItem
|
|
@@ -19,7 +19,7 @@ module Spree
|
|
|
19
19
|
unless payment_method.available_for_order?(@cart)
|
|
20
20
|
return render_error(
|
|
21
21
|
code: 'payment_method_unavailable',
|
|
22
|
-
message:
|
|
22
|
+
message: I18n.t('spree.api.v3.payments.method_unavailable'),
|
|
23
23
|
status: :unprocessable_content
|
|
24
24
|
)
|
|
25
25
|
end
|
|
@@ -20,15 +20,17 @@ module Spree
|
|
|
20
20
|
if payment_method.session_required?
|
|
21
21
|
return render_error(
|
|
22
22
|
code: 'payment_session_required',
|
|
23
|
-
message:
|
|
23
|
+
message: I18n.t('spree.api.v3.payments.session_required'),
|
|
24
24
|
status: :unprocessable_content
|
|
25
25
|
)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
# Store credit passes the lookup above but has its own endpoint, so
|
|
29
|
+
# it is never among the methods the cart offers.
|
|
30
|
+
unless @cart.payment_methods.include?(payment_method)
|
|
29
31
|
return render_error(
|
|
30
32
|
code: 'payment_method_unavailable',
|
|
31
|
-
message:
|
|
33
|
+
message: I18n.t('spree.api.v3.payments.method_unavailable'),
|
|
32
34
|
status: :unprocessable_content
|
|
33
35
|
)
|
|
34
36
|
end
|
|
@@ -94,8 +94,8 @@ module Spree
|
|
|
94
94
|
def render_po_document_invalid
|
|
95
95
|
render_error(
|
|
96
96
|
code: ERROR_CODES[:parameter_invalid],
|
|
97
|
-
message:
|
|
98
|
-
|
|
97
|
+
message: I18n.t(
|
|
98
|
+
'spree.po_document_invalid',
|
|
99
99
|
size: ActiveSupport::NumberHelper.number_to_human_size(
|
|
100
100
|
Spree::Purchase::PurchaseOrder::MAX_PO_DOCUMENT_SIZE
|
|
101
101
|
)
|
|
@@ -19,6 +19,7 @@ module Spree
|
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
if result.success?
|
|
22
|
+
sweep_unavailable_coupon_code!
|
|
22
23
|
render_cart
|
|
23
24
|
else
|
|
24
25
|
render_service_error(result.error)
|
|
@@ -32,6 +33,7 @@ module Spree
|
|
|
32
33
|
result = Spree.store_credit_remove_service.call(order: @cart)
|
|
33
34
|
|
|
34
35
|
if result.success?
|
|
36
|
+
sweep_unavailable_coupon_code!
|
|
35
37
|
render_cart
|
|
36
38
|
else
|
|
37
39
|
render_service_error(result.error)
|
|
@@ -26,12 +26,13 @@ module Spree
|
|
|
26
26
|
# with_order_lock, and a read must not 409 against the fence.
|
|
27
27
|
if @cart.ship_address_id.present? && @cart.fulfillments.empty? && !@cart.completion_claimed?
|
|
28
28
|
ActiveRecord::Base.connected_to(role: :writing) do
|
|
29
|
-
with_order_lock { Spree
|
|
29
|
+
with_order_lock { Spree.checkout_advance_service.call(order: @cart) }
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
# The customer is returning to a cart that may have sat for days.
|
|
34
34
|
sweep_unbuyable_lines!
|
|
35
|
+
sweep_unavailable_coupon_code!
|
|
35
36
|
render_cart
|
|
36
37
|
end
|
|
37
38
|
|
|
@@ -39,9 +40,9 @@ module Spree
|
|
|
39
40
|
# Creates a new shopping cart (order)
|
|
40
41
|
# Can be created by guests or authenticated customers
|
|
41
42
|
def create
|
|
42
|
-
result = Spree
|
|
43
|
+
result = Spree.carts_create_service.call(
|
|
43
44
|
params: permitted_params.merge(
|
|
44
|
-
|
|
45
|
+
customer: current_user,
|
|
45
46
|
store: current_store,
|
|
46
47
|
channel: current_channel,
|
|
47
48
|
currency: current_currency,
|
|
@@ -64,12 +65,13 @@ module Spree
|
|
|
64
65
|
find_cart!
|
|
65
66
|
|
|
66
67
|
with_order_lock do
|
|
67
|
-
result = Spree
|
|
68
|
+
result = Spree.carts_update_service.call(
|
|
68
69
|
cart: @cart,
|
|
69
70
|
params: permitted_params
|
|
70
71
|
)
|
|
71
72
|
|
|
72
73
|
if result.success?
|
|
74
|
+
sweep_unavailable_coupon_code!
|
|
73
75
|
render_cart
|
|
74
76
|
else
|
|
75
77
|
render_service_error(result.error, code: ERROR_CODES[:validation_error])
|
|
@@ -107,6 +109,7 @@ module Spree
|
|
|
107
109
|
if result.success?
|
|
108
110
|
# Signing in hands back a cart built earlier, possibly long ago.
|
|
109
111
|
sweep_unbuyable_lines!
|
|
112
|
+
sweep_unavailable_coupon_code!
|
|
110
113
|
render_cart
|
|
111
114
|
else
|
|
112
115
|
render_service_error(result.error.to_s)
|
|
@@ -121,7 +124,7 @@ module Spree
|
|
|
121
124
|
find_cart!(include_completed: true)
|
|
122
125
|
|
|
123
126
|
if @cart.guest_checkout_disallowed?
|
|
124
|
-
return render_authentication_required('api.errors.guest_checkout_not_allowed'
|
|
127
|
+
return render_authentication_required(I18n.t('spree.api.errors.guest_checkout_not_allowed'))
|
|
125
128
|
end
|
|
126
129
|
|
|
127
130
|
result = Spree::Dependencies.carts_complete_workflow.constantize.call(cart: @cart)
|
|
@@ -184,7 +187,7 @@ module Spree
|
|
|
184
187
|
def render_invalid_po_document
|
|
185
188
|
render_error(
|
|
186
189
|
code: ERROR_CODES[:validation_error],
|
|
187
|
-
message:
|
|
190
|
+
message: I18n.t('spree.po_document_invalid_signed_id'),
|
|
188
191
|
status: :unprocessable_content
|
|
189
192
|
)
|
|
190
193
|
end
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
else
|
|
16
16
|
render_error(
|
|
17
17
|
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
18
|
-
message:
|
|
18
|
+
message: I18n.t('spree.company_invitations.not_pending'),
|
|
19
19
|
status: :unprocessable_content
|
|
20
20
|
)
|
|
21
21
|
end
|
|
@@ -38,10 +38,6 @@ module Spree
|
|
|
38
38
|
def scope
|
|
39
39
|
action_name == 'index' ? @parent.invitations.pending : @parent.invitations
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
def parent_association
|
|
43
|
-
:invitations
|
|
44
|
-
end
|
|
45
41
|
end
|
|
46
42
|
end
|
|
47
43
|
end
|
|
@@ -52,7 +52,7 @@ module Spree
|
|
|
52
52
|
else
|
|
53
53
|
render_error(
|
|
54
54
|
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
55
|
-
message:
|
|
55
|
+
message: I18n.t('spree.company_invitations.not_pending'),
|
|
56
56
|
status: :unprocessable_content
|
|
57
57
|
)
|
|
58
58
|
end
|
|
@@ -12,10 +12,6 @@ module Spree
|
|
|
12
12
|
@parent = current_user
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def parent_association
|
|
16
|
-
:credit_cards
|
|
17
|
-
end
|
|
18
|
-
|
|
19
15
|
# Customers are global; a saved card belongs to the store-scoped
|
|
20
16
|
# payment method it was created against, so the nested collection is
|
|
21
17
|
# bound to the current store's payment methods.
|
|
@@ -46,10 +46,6 @@ module Spree
|
|
|
46
46
|
@parent = current_user
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
def parent_association
|
|
50
|
-
:data_requests
|
|
51
|
-
end
|
|
52
|
-
|
|
53
49
|
# A person sees their own requests and no one else's. The store
|
|
54
50
|
# narrowing is restated because the parent branch of the base scope
|
|
55
51
|
# replaces `for_store` with the association, and a customer is
|
|
@@ -69,7 +65,6 @@ module Spree
|
|
|
69
65
|
def erasure?
|
|
70
66
|
params[:kind].to_s == Spree::DataRequest::ERASURE
|
|
71
67
|
end
|
|
72
|
-
|
|
73
68
|
end
|
|
74
69
|
end
|
|
75
70
|
end
|
|
@@ -23,10 +23,6 @@ module Spree
|
|
|
23
23
|
@parent = current_user
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def parent_association
|
|
27
|
-
:digital_links
|
|
28
|
-
end
|
|
29
|
-
|
|
30
26
|
# The `digital_links` association reaches links through orders and
|
|
31
27
|
# line items, so it carries a DISTINCT and inherits an ORDER BY on
|
|
32
28
|
# the line items' table. PostgreSQL rejects DISTINCT combined with
|
|
@@ -32,14 +32,16 @@ module Spree
|
|
|
32
32
|
user = Spree.customer_class.find_by(email: params[:email])
|
|
33
33
|
|
|
34
34
|
if user
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
event_name = 'customer.password_reset_requested'
|
|
36
|
+
payload = user.event_payload_for(
|
|
37
|
+
event_name,
|
|
38
|
+
reset_token: user.generate_token_for(:password_reset), store: current_store, redirect_url: redirect_url.presence
|
|
39
|
+
)
|
|
40
|
+
user.publish_event(event_name, payload)
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
# Always return 202 to prevent email enumeration
|
|
42
|
-
render json: { message:
|
|
44
|
+
render json: { message: I18n.t('spree.api.password_reset_requested') }, status: :accepted
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
# PATCH /api/v3/store/password_resets/:id
|
|
@@ -49,7 +51,7 @@ module Spree
|
|
|
49
51
|
unless user
|
|
50
52
|
return render_error(
|
|
51
53
|
code: ERROR_CODES[:password_reset_token_invalid],
|
|
52
|
-
message:
|
|
54
|
+
message: I18n.t('spree.api.password_reset_token_invalid'),
|
|
53
55
|
status: :unprocessable_content
|
|
54
56
|
)
|
|
55
57
|
end
|
|
@@ -12,10 +12,6 @@ module Spree
|
|
|
12
12
|
@parent = current_user
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def parent_association
|
|
16
|
-
:store_credits
|
|
17
|
-
end
|
|
18
|
-
|
|
19
15
|
def scope
|
|
20
16
|
super.for_store(current_store).where(currency: current_currency)
|
|
21
17
|
end
|
|
@@ -27,7 +23,6 @@ module Spree
|
|
|
27
23
|
def serializer_class
|
|
28
24
|
Spree.api.store_credit_serializer
|
|
29
25
|
end
|
|
30
|
-
|
|
31
26
|
end
|
|
32
27
|
end
|
|
33
28
|
end
|
|
@@ -30,7 +30,7 @@ module Spree
|
|
|
30
30
|
unless data_request&.downloadable?
|
|
31
31
|
return render_error(
|
|
32
32
|
code: 'data_request_expired',
|
|
33
|
-
message:
|
|
33
|
+
message: I18n.t('spree.data_request_errors.download_unavailable'),
|
|
34
34
|
status: :forbidden
|
|
35
35
|
)
|
|
36
36
|
end
|
|
@@ -26,7 +26,7 @@ module Spree
|
|
|
26
26
|
def pickup_points
|
|
27
27
|
provider = find_resource.pickup_point_provider_instance
|
|
28
28
|
if provider.nil?
|
|
29
|
-
return render_error(code: ERROR_CODES[:record_not_found], message:
|
|
29
|
+
return render_error(code: ERROR_CODES[:record_not_found], message: I18n.t('spree.errors.messages.no_pickup_point_provider'), status: :not_found)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
latitude = params[:latitude].presence&.to_f
|
|
@@ -43,7 +43,7 @@ module Spree
|
|
|
43
43
|
unless subscriber
|
|
44
44
|
return render_error(
|
|
45
45
|
code: ERROR_CODES[:invalid_token],
|
|
46
|
-
message:
|
|
46
|
+
message: I18n.t('spree.api.newsletter_verification_token_invalid'),
|
|
47
47
|
status: :unprocessable_content
|
|
48
48
|
)
|
|
49
49
|
end
|
|
@@ -64,7 +64,7 @@ module Spree
|
|
|
64
64
|
if subscriber.blank?
|
|
65
65
|
return render_error(
|
|
66
66
|
code: ERROR_CODES[:invalid_token],
|
|
67
|
-
message:
|
|
67
|
+
message: I18n.t('spree.api.newsletter_unsubscribe_token_invalid'),
|
|
68
68
|
status: :unprocessable_content
|
|
69
69
|
)
|
|
70
70
|
end
|
|
@@ -87,18 +87,9 @@ module Spree
|
|
|
87
87
|
subscriber = Spree::NewsletterSubscriber.for_store(current_store).find_by(email: params[:email])
|
|
88
88
|
|
|
89
89
|
if subscriber
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
unsubscribe_token: subscriber.generate_token_for(:unsubscribe),
|
|
94
|
-
store_id: current_store.prefixed_id,
|
|
95
|
-
customer_id: subscriber.customer&.prefixed_id
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
redirect_url = validated_redirect_url
|
|
99
|
-
payload[:redirect_url] = redirect_url if redirect_url.present?
|
|
100
|
-
|
|
101
|
-
subscriber.publish_event('newsletter_subscriber.unsubscribe_requested', payload)
|
|
90
|
+
event_name = 'newsletter_subscriber.unsubscribe_requested'
|
|
91
|
+
payload = subscriber.event_payload_for(event_name, store: current_store, redirect_url: validated_redirect_url.presence)
|
|
92
|
+
subscriber.publish_event(event_name, payload)
|
|
102
93
|
end
|
|
103
94
|
|
|
104
95
|
head :accepted
|
|
@@ -18,11 +18,7 @@ module Spree
|
|
|
18
18
|
memo: create_params[:memo]
|
|
19
19
|
)
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
render json: serialize_resource(result.value), status: :created
|
|
23
|
-
else
|
|
24
|
-
render_result_error(result)
|
|
25
|
-
end
|
|
21
|
+
render_result(result, status: :created)
|
|
26
22
|
end
|
|
27
23
|
|
|
28
24
|
protected
|
|
@@ -37,11 +37,7 @@ module Spree
|
|
|
37
37
|
memo: create_params[:memo]
|
|
38
38
|
)
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
render json: serialize_resource(result.value), status: :created
|
|
42
|
-
else
|
|
43
|
-
render_result_error(result)
|
|
44
|
-
end
|
|
40
|
+
render_result(result, status: :created)
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
protected
|
|
@@ -24,18 +24,16 @@ module Spree
|
|
|
24
24
|
address.longitude&.to_f
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
address.customer_owner&.prefixed_id
|
|
29
|
-
end
|
|
27
|
+
prefixed_id_attributes customer_id: :customer_owner
|
|
30
28
|
|
|
31
29
|
# Who the row belongs to — a customer's book, a company node's, or a
|
|
32
30
|
# seller's billing address. `customer_id` above stays as the
|
|
33
31
|
# customer-only shorthand the customers surface reads.
|
|
34
|
-
|
|
35
|
-
address.owner&.prefixed_id
|
|
36
|
-
end
|
|
32
|
+
prefixed_id_attributes :owner
|
|
37
33
|
|
|
38
|
-
|
|
34
|
+
attribute :owner_type do |address|
|
|
35
|
+
Spree::Base.polymorphic_api_type(address.owner_type)
|
|
36
|
+
end
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
end
|
|
@@ -27,17 +27,13 @@ module Spree
|
|
|
27
27
|
created_at: :iso8601, updated_at: :iso8601,
|
|
28
28
|
revoked_at: :iso8601, last_used_at: :iso8601
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
key.channel&.prefixed_id
|
|
32
|
-
end
|
|
30
|
+
prefixed_id_attributes :channel
|
|
33
31
|
|
|
34
32
|
# Returned only on the create response — `plaintext_token` is held in
|
|
35
33
|
# memory on the model after `generate_token` and is never persisted
|
|
36
34
|
# for secret keys, so we serialize it whenever it's available rather
|
|
37
35
|
# than gating on the action.
|
|
38
|
-
|
|
39
|
-
key.plaintext_token
|
|
40
|
-
end
|
|
36
|
+
attributes :plaintext_token
|
|
41
37
|
|
|
42
38
|
# A key can be minted by another key, which has no email — so the
|
|
43
39
|
# address is answered only for the actors that have one, and
|
|
@@ -18,9 +18,7 @@ module Spree
|
|
|
18
18
|
assignment.assignable_type.demodulize.underscore
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
assignment.assignable&.prefixed_id
|
|
23
|
-
end
|
|
21
|
+
prefixed_id_attributes :assignable
|
|
24
22
|
|
|
25
23
|
attribute :assignable_name do |assignment|
|
|
26
24
|
assignment.assignable.try(:name)
|
|
@@ -9,13 +9,7 @@ module Spree
|
|
|
9
9
|
|
|
10
10
|
attributes :currency, created_at: :iso8601, updated_at: :iso8601
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
minimum.amount.to_s
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
attribute :display_amount do |minimum|
|
|
17
|
-
minimum.display_amount.to_s
|
|
18
|
-
end
|
|
12
|
+
attributes amount: :string, display_amount: :string
|
|
19
13
|
end
|
|
20
14
|
end
|
|
21
15
|
end
|
|
@@ -28,9 +28,7 @@ module Spree
|
|
|
28
28
|
# True when the product's variants carry different terms, so the
|
|
29
29
|
# editor shows "mixed" rather than claiming one variant's pair is
|
|
30
30
|
# the product's.
|
|
31
|
-
attribute :mixed
|
|
32
|
-
term.mixed?
|
|
33
|
-
end
|
|
31
|
+
attribute :mixed, &:mixed?
|
|
34
32
|
end
|
|
35
33
|
end
|
|
36
34
|
end
|
|
@@ -15,9 +15,7 @@ module Spree
|
|
|
15
15
|
attributes :minimum_order_quantity, :order_multiple,
|
|
16
16
|
created_at: :iso8601, updated_at: :iso8601
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
rule.variant&.prefixed_id
|
|
20
|
-
end
|
|
18
|
+
prefixed_id_attributes :variant
|
|
21
19
|
|
|
22
20
|
attribute :variant_sku do |rule|
|
|
23
21
|
rule.variant&.sku
|
|
@@ -4,17 +4,18 @@ module Spree
|
|
|
4
4
|
module Admin
|
|
5
5
|
class ChannelSerializer < V3::ChannelSerializer
|
|
6
6
|
typelize store_id: :string,
|
|
7
|
-
preferred_order_routing_strategy: [:string, nullable: true],
|
|
7
|
+
preferred_order_routing_strategy: [:string, nullable: true, comment: 'Order routing strategy; null inherits the store setting. Built-in: rules. Extensions may register more.'],
|
|
8
8
|
preferred_storefront_access: [:string, nullable: true],
|
|
9
9
|
preferred_guest_checkout: [:boolean, nullable: true],
|
|
10
10
|
stock_location_ids: [:string, multi: true],
|
|
11
11
|
default_catalog_id: [:string, nullable: true]
|
|
12
12
|
|
|
13
|
-
attributes :
|
|
14
|
-
:preferred_storefront_access,
|
|
13
|
+
attributes :preferred_storefront_access,
|
|
15
14
|
:preferred_guest_checkout,
|
|
16
15
|
created_at: :iso8601, updated_at: :iso8601
|
|
17
16
|
|
|
17
|
+
api_type_attributes :preferred_order_routing_strategy
|
|
18
|
+
|
|
18
19
|
# Fulfillment-origin allowlist; empty means every store location
|
|
19
20
|
# serves this channel.
|
|
20
21
|
attribute :stock_location_ids do |record|
|
|
@@ -23,9 +24,7 @@ module Spree
|
|
|
23
24
|
|
|
24
25
|
# When set, only the default catalog's products are visible on this
|
|
25
26
|
# channel; unset means every publication.
|
|
26
|
-
|
|
27
|
-
record.default_catalog&.prefixed_id
|
|
28
|
-
end
|
|
27
|
+
prefixed_id_attributes :default_catalog
|
|
29
28
|
end
|
|
30
29
|
end
|
|
31
30
|
end
|
|
@@ -11,9 +11,7 @@ module Spree
|
|
|
11
11
|
|
|
12
12
|
# Lets the dashboard hide destructive controls instead of offering a
|
|
13
13
|
# delete that the model will refuse.
|
|
14
|
-
attribute :can_be_deleted
|
|
15
|
-
reason.can_be_deleted?
|
|
16
|
-
end
|
|
14
|
+
attribute :can_be_deleted, &:can_be_deleted?
|
|
17
15
|
end
|
|
18
16
|
end
|
|
19
17
|
end
|