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
|
@@ -41,12 +41,18 @@ module Spree
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
# Renders a 401 with the shared +authentication_required+ error code.
|
|
44
|
-
# @param
|
|
45
|
-
# @param
|
|
46
|
-
|
|
44
|
+
# @param message [String] translated error message
|
|
45
|
+
# @param legacy_default [String, nil] deprecated: the two-argument form
|
|
46
|
+
# (key under +spree.+, fallback text) is removed in Spree 6.1
|
|
47
|
+
def render_authentication_required(message, legacy_default = nil)
|
|
48
|
+
unless legacy_default.nil?
|
|
49
|
+
Spree::Deprecation.warn('render_authentication_required(key, default) is deprecated and will be removed in Spree 6.1. Pass the translated message instead.')
|
|
50
|
+
message = I18n.t("spree.#{message}", default: legacy_default)
|
|
51
|
+
end
|
|
52
|
+
|
|
47
53
|
render_error(
|
|
48
54
|
code: ErrorHandler::ERROR_CODES[:authentication_required],
|
|
49
|
-
message:
|
|
55
|
+
message: message,
|
|
50
56
|
status: :unauthorized
|
|
51
57
|
)
|
|
52
58
|
end
|
|
@@ -57,7 +63,7 @@ module Spree
|
|
|
57
63
|
return if try_spree_current_user.present?
|
|
58
64
|
return unless current_channel&.storefront_login_required?
|
|
59
65
|
|
|
60
|
-
render_authentication_required('api.errors.storefront_login_required'
|
|
66
|
+
render_authentication_required(I18n.t('spree.api.errors.storefront_login_required'))
|
|
61
67
|
end
|
|
62
68
|
end
|
|
63
69
|
end
|
|
@@ -14,11 +14,6 @@ module Spree
|
|
|
14
14
|
# grantable separately from store configuration (6.0-admin-rbac.md).
|
|
15
15
|
scoped_resource :staff
|
|
16
16
|
|
|
17
|
-
# POST is not exposed — staff are created via invitations.
|
|
18
|
-
def create
|
|
19
|
-
head :method_not_allowed
|
|
20
|
-
end
|
|
21
|
-
|
|
22
17
|
# DELETE /api/v3/admin/admin_users/:id
|
|
23
18
|
# Removes role assignments for the current store rather than deleting
|
|
24
19
|
# the account globally. The user keeps access to any other stores.
|
|
@@ -9,7 +9,6 @@ module Spree
|
|
|
9
9
|
class OrderMinimumsController < BaseController
|
|
10
10
|
before_action :authorize_parent_access!
|
|
11
11
|
|
|
12
|
-
|
|
13
12
|
protected
|
|
14
13
|
|
|
15
14
|
def model_class
|
|
@@ -24,14 +23,9 @@ module Spree
|
|
|
24
23
|
@parent.order_minimums
|
|
25
24
|
end
|
|
26
25
|
|
|
27
|
-
def parent_association
|
|
28
|
-
:order_minimums
|
|
29
|
-
end
|
|
30
|
-
|
|
31
26
|
def permitted_params
|
|
32
27
|
params.permit(:currency, :amount)
|
|
33
28
|
end
|
|
34
|
-
|
|
35
29
|
end
|
|
36
30
|
end
|
|
37
31
|
end
|
|
@@ -22,7 +22,7 @@ module Spree
|
|
|
22
22
|
if @resource.price_list.nil?
|
|
23
23
|
return render_error(
|
|
24
24
|
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
25
|
-
message:
|
|
25
|
+
message: I18n.t('spree.catalogs.no_price_list_to_import'),
|
|
26
26
|
status: :unprocessable_content
|
|
27
27
|
)
|
|
28
28
|
end
|
|
@@ -60,10 +60,6 @@ module Spree
|
|
|
60
60
|
Spree.api.admin_channel_serializer
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
def scope
|
|
64
|
-
super.for_store(current_store)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
63
|
def permitted_params
|
|
68
64
|
params.permit(*model_additional_permitted_attributes, :name, :code, :active, :default, :preferred_order_routing_strategy,
|
|
69
65
|
:preferred_storefront_access, :preferred_guest_checkout,
|
|
@@ -80,8 +80,7 @@ module Spree
|
|
|
80
80
|
|
|
81
81
|
render_error(
|
|
82
82
|
code: ERROR_CODES[:validation_error],
|
|
83
|
-
message:
|
|
84
|
-
default: "Products of an automatic collection are managed by its rules and can't be curated manually"),
|
|
83
|
+
message: I18n.t('spree.api.errors.automatic_collection_curation'),
|
|
85
84
|
status: :unprocessable_content
|
|
86
85
|
)
|
|
87
86
|
end
|
|
@@ -26,7 +26,7 @@ module Spree
|
|
|
26
26
|
{
|
|
27
27
|
type: klass.api_type,
|
|
28
28
|
name: klass.human_name,
|
|
29
|
-
description: klass.
|
|
29
|
+
description: klass.human_description,
|
|
30
30
|
preference_schema: klass.serialized_preference_schema,
|
|
31
31
|
# Config a rule takes beyond its preferences — a catalog-scale
|
|
32
32
|
# reference list lives in its own table, not the blob, and an
|
|
@@ -139,7 +139,7 @@ module Spree
|
|
|
139
139
|
errors = ActiveModel::Errors.new(Spree::CommissionRate.new)
|
|
140
140
|
unknown.each do |type|
|
|
141
141
|
errors.add(:rules, :invalid_commission_rule_type, type: type,
|
|
142
|
-
message:
|
|
142
|
+
message: I18n.t('spree.errors.messages.invalid_commission_rule_type', type: type))
|
|
143
143
|
end
|
|
144
144
|
render_validation_error(errors)
|
|
145
145
|
|
|
@@ -17,7 +17,7 @@ module Spree
|
|
|
17
17
|
else
|
|
18
18
|
render_error(
|
|
19
19
|
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
20
|
-
message:
|
|
20
|
+
message: I18n.t('spree.company_invitations.not_pending'),
|
|
21
21
|
status: :unprocessable_content
|
|
22
22
|
)
|
|
23
23
|
end
|
|
@@ -44,10 +44,6 @@ module Spree
|
|
|
44
44
|
def scope
|
|
45
45
|
action_name == 'index' ? @parent.invitations.pending : @parent.invitations
|
|
46
46
|
end
|
|
47
|
-
|
|
48
|
-
def parent_association
|
|
49
|
-
:invitations
|
|
50
|
-
end
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
49
|
end
|
|
@@ -24,11 +24,7 @@ module Spree
|
|
|
24
24
|
verified_by: try_spree_current_user
|
|
25
25
|
)
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
render json: serialize_resource(result.value)
|
|
29
|
-
else
|
|
30
|
-
render_result_error(result)
|
|
31
|
-
end
|
|
27
|
+
render_result(result)
|
|
32
28
|
end
|
|
33
29
|
|
|
34
30
|
# PATCH .../:id/revoke — withdrawing evidence that was accepted.
|
|
@@ -88,10 +84,6 @@ module Spree
|
|
|
88
84
|
@parent.tax_exemption_certificates
|
|
89
85
|
end
|
|
90
86
|
|
|
91
|
-
def parent_association
|
|
92
|
-
:tax_exemption_certificates
|
|
93
|
-
end
|
|
94
|
-
|
|
95
87
|
def collection_includes
|
|
96
88
|
[{ document_attachment: :blob }]
|
|
97
89
|
end
|
|
@@ -11,7 +11,7 @@ module Spree
|
|
|
11
11
|
|
|
12
12
|
# Override base index to skip pagination — there are ~250 countries
|
|
13
13
|
# and address-form dropdowns need them all at once. Pagy's global
|
|
14
|
-
#
|
|
14
|
+
# client_limit (100) prevents using the paginated path for this.
|
|
15
15
|
#
|
|
16
16
|
# Countries are reference data rather than records, so this reads
|
|
17
17
|
# from the registry and needs no authorization beyond the admin
|
|
@@ -4,7 +4,7 @@ module Spree
|
|
|
4
4
|
module Admin
|
|
5
5
|
# Schema-side metadata for custom fields. Definitions are per resource
|
|
6
6
|
# *type* (every Spree::Product shares the same definitions), so this is
|
|
7
|
-
# a flat top-level endpoint. Filter by
|
|
7
|
+
# a flat top-level endpoint. Filter by `q[resource_type_eq]=product`
|
|
8
8
|
# (or any other registered custom-field-bearing resource) to scope the
|
|
9
9
|
# list to one parent type.
|
|
10
10
|
class CustomFieldDefinitionsController < ResourceController
|
|
@@ -39,6 +39,14 @@ module Spree
|
|
|
39
39
|
:searchable, :sortable)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
# `resource_type` is a plain column rather than a polymorphic
|
|
43
|
+
# association, so its filter goes through the model's own normalizer.
|
|
44
|
+
def api_type_resolver(attribute)
|
|
45
|
+
return super unless attribute == 'resource_type'
|
|
46
|
+
|
|
47
|
+
->(api_type) { model_class.normalize_value_for(:resource_type, api_type) }
|
|
48
|
+
end
|
|
49
|
+
|
|
42
50
|
# Pure registry discovery — maps to the read scope.
|
|
43
51
|
def read_actions
|
|
44
52
|
super + %w[resource_types]
|
|
@@ -43,10 +43,6 @@ module Spree
|
|
|
43
43
|
Spree.api.admin_custom_field_serializer
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def parent_association
|
|
47
|
-
:custom_fields
|
|
48
|
-
end
|
|
49
|
-
|
|
50
46
|
def set_parent
|
|
51
47
|
# Routes always mount this controller under a recognized parent, so
|
|
52
48
|
# `parent_lookup` matches in normal flows. The explicit raise is a
|
|
@@ -6,10 +6,6 @@ module Spree
|
|
|
6
6
|
class CreditCardsController < BaseController
|
|
7
7
|
protected
|
|
8
8
|
|
|
9
|
-
def parent_association
|
|
10
|
-
:credit_cards
|
|
11
|
-
end
|
|
12
|
-
|
|
13
9
|
# Customers are global; a saved card belongs to the store-scoped
|
|
14
10
|
# payment method it was created against, so the nested collection is
|
|
15
11
|
# bound to the current store's payment methods.
|
|
@@ -51,7 +51,7 @@ module Spree
|
|
|
51
51
|
rescue Spree::Core::DestroyWithOrdersError => e
|
|
52
52
|
render_error(
|
|
53
53
|
code: 'customer_has_orders',
|
|
54
|
-
message: e.message.presence ||
|
|
54
|
+
message: e.message.presence || I18n.t('spree.error_user_destroy_with_orders'),
|
|
55
55
|
status: :unprocessable_content
|
|
56
56
|
)
|
|
57
57
|
end
|
|
@@ -108,7 +108,7 @@ module Spree
|
|
|
108
108
|
if @resource.anonymized?
|
|
109
109
|
return render_error(
|
|
110
110
|
code: ERROR_CODES[:validation_error],
|
|
111
|
-
message:
|
|
111
|
+
message: I18n.t('spree.data_request_errors.already_anonymized'),
|
|
112
112
|
status: :unprocessable_content
|
|
113
113
|
)
|
|
114
114
|
end
|
|
@@ -16,7 +16,7 @@ module Spree
|
|
|
16
16
|
if rule_class.nil?
|
|
17
17
|
return render_error(
|
|
18
18
|
code: ERROR_CODES[:validation_error],
|
|
19
|
-
message:
|
|
19
|
+
message: I18n.t('spree.errors.messages.invalid_delivery_method_rule'),
|
|
20
20
|
status: :unprocessable_entity
|
|
21
21
|
)
|
|
22
22
|
end
|
|
@@ -31,9 +31,8 @@ module Spree
|
|
|
31
31
|
|
|
32
32
|
data = Spree.fulfillment_providers.map do |provider_class|
|
|
33
33
|
{
|
|
34
|
-
type: provider_class.
|
|
34
|
+
type: provider_class.api_type,
|
|
35
35
|
name: provider_class.provider_name,
|
|
36
|
-
integration_class: provider_class.integration_class,
|
|
37
36
|
integration_type: integration_api_type(provider_class),
|
|
38
37
|
available: provider_class.available_for_store?(current_store),
|
|
39
38
|
digital: provider_class.digital?,
|
|
@@ -61,9 +60,8 @@ module Spree
|
|
|
61
60
|
catalog = provider_class.service_catalog(integration)
|
|
62
61
|
|
|
63
62
|
{
|
|
64
|
-
type: provider_class.
|
|
63
|
+
type: provider_class.api_type,
|
|
65
64
|
name: provider_class.provider_name,
|
|
66
|
-
integration_class: provider_class.integration_class,
|
|
67
65
|
integration_type: integration_api_type(provider_class),
|
|
68
66
|
available: provider_class.available_for_store?(current_store),
|
|
69
67
|
requires_address: provider_class.requires_address?,
|
|
@@ -76,7 +74,7 @@ module Spree
|
|
|
76
74
|
}
|
|
77
75
|
end
|
|
78
76
|
|
|
79
|
-
render json: { data: data, default: Spree::DeliveryMethod::DEFAULT_RATE_PROVIDER }
|
|
77
|
+
render json: { data: data, default: Spree::ApiTyped.api_type_for(Spree::DeliveryMethod::DEFAULT_RATE_PROVIDER) }
|
|
80
78
|
end
|
|
81
79
|
|
|
82
80
|
def create
|
|
@@ -15,12 +15,7 @@ module Spree
|
|
|
15
15
|
def kinds
|
|
16
16
|
authorize! :create, model_class
|
|
17
17
|
|
|
18
|
-
data = Spree.delivery_profile_types.map
|
|
19
|
-
{
|
|
20
|
-
type: profile_class.to_s,
|
|
21
|
-
kind: profile_class.api_type
|
|
22
|
-
}
|
|
23
|
-
end
|
|
18
|
+
data = Spree.delivery_profile_types.map { |profile_class| { kind: profile_class.api_type } }
|
|
24
19
|
|
|
25
20
|
render json: { data: data }
|
|
26
21
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
# The draft of an editable email template: saved in any state, while
|
|
7
|
+
# customers keep receiving the published version.
|
|
8
|
+
class DraftsController < Admin::BaseController
|
|
9
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
10
|
+
|
|
11
|
+
# PUT /api/v3/admin/email_templates/:email_template_id/draft
|
|
12
|
+
#
|
|
13
|
+
# Send the `lock_version` the draft was loaded with: a save made from
|
|
14
|
+
# an older copy is refused with 409, naming who saved last. `rebase`
|
|
15
|
+
# marks the draft as based on Spree's current default.
|
|
16
|
+
def update
|
|
17
|
+
authorize! :update, Spree::EmailTemplate
|
|
18
|
+
|
|
19
|
+
result = Spree.email_template_save_draft_workflow.call(
|
|
20
|
+
store: current_store, key: email_template.key, locale: language, actor: current_actor,
|
|
21
|
+
attributes: params.permit(:subject, :body, :lock_version, :rebase).to_h.symbolize_keys
|
|
22
|
+
)
|
|
23
|
+
render_email_template_result(result)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# DELETE /api/v3/admin/email_templates/:email_template_id/draft
|
|
27
|
+
def destroy
|
|
28
|
+
authorize! :update, Spree::EmailTemplate
|
|
29
|
+
|
|
30
|
+
result = Spree.email_template_discard_draft_workflow.call(
|
|
31
|
+
store: current_store, key: email_template.key, locale: language, lock_version: params[:lock_version].presence
|
|
32
|
+
)
|
|
33
|
+
render_email_template_result(result)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class PreviewsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
before_action :authorize_sample_data!
|
|
10
|
+
|
|
11
|
+
# POST /api/v3/admin/email_templates/:email_template_id/preview
|
|
12
|
+
#
|
|
13
|
+
# Renders the template with sample data built from the store's latest
|
|
14
|
+
# matching record, or the one `record_id` names. An unsaved `subject`
|
|
15
|
+
# and `body` take the place of the current version. Returns the
|
|
16
|
+
# rendered email and the variables it was rendered with.
|
|
17
|
+
def create
|
|
18
|
+
authorize! :update, Spree::EmailTemplate
|
|
19
|
+
|
|
20
|
+
preview = build_preview
|
|
21
|
+
preview.call
|
|
22
|
+
|
|
23
|
+
render json: Spree.api.admin_email_template_preview_serializer.new(preview, params: serializer_params).to_h
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class PublicationsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
before_action :authorize_sample_data!
|
|
10
|
+
|
|
11
|
+
# POST /api/v3/admin/email_templates/:email_template_id/publication
|
|
12
|
+
#
|
|
13
|
+
# Makes the draft live. A draft that does not render with sample data
|
|
14
|
+
# (for the layout or a partial: in any email using it) is refused with
|
|
15
|
+
# 422 and each problem's email and line.
|
|
16
|
+
def create
|
|
17
|
+
authorize! :update, Spree::EmailTemplate
|
|
18
|
+
|
|
19
|
+
result = Spree.email_template_publish_workflow.call(
|
|
20
|
+
store: current_store, key: email_template.key, locale: language, actor: current_actor,
|
|
21
|
+
lock_version: params[:lock_version].presence
|
|
22
|
+
)
|
|
23
|
+
render_email_template_result(result, status: :created)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class RestorationsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
# POST /api/v3/admin/email_templates/:email_template_id/revisions/:revision_id/restoration
|
|
10
|
+
#
|
|
11
|
+
# Copies the revision into the language's draft, to be published
|
|
12
|
+
# like any change. A language without a version of its own can
|
|
13
|
+
# restore one of the version for every language its customers get.
|
|
14
|
+
def create
|
|
15
|
+
authorize! :update, Spree::EmailTemplate
|
|
16
|
+
|
|
17
|
+
revision = Spree::EmailTemplateRevision.where(
|
|
18
|
+
email_template: current_store.email_templates.where(
|
|
19
|
+
key: email_template.key, locale: [language, Spree::EmailTemplate::ANY_LOCALE]
|
|
20
|
+
)
|
|
21
|
+
).find_by_prefix_id!(params[:revision_id])
|
|
22
|
+
|
|
23
|
+
result = Spree.email_template_restore_revision_workflow.call(
|
|
24
|
+
revision: revision, actor: current_actor, locale: language,
|
|
25
|
+
draft_version: params.key?(:lock_version) ? { lock_version: params[:lock_version] } : {}
|
|
26
|
+
)
|
|
27
|
+
render_email_template_result(result, status: :created)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
# The published versions of an email template in one language, newest
|
|
7
|
+
# first. Reverting keeps them, so they outlive the published version.
|
|
8
|
+
class RevisionsController < ResourceController
|
|
9
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
10
|
+
|
|
11
|
+
before_action { authorize! :read, Spree::EmailTemplate }
|
|
12
|
+
|
|
13
|
+
protected
|
|
14
|
+
|
|
15
|
+
def model_class
|
|
16
|
+
Spree::EmailTemplateRevision
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def serializer_class
|
|
20
|
+
Spree.api.admin_email_template_revision_serializer
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def scope
|
|
24
|
+
email_template_revisions.order(created_at: :desc)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def collection_includes
|
|
28
|
+
[:published_by]
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class SampleRecordsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
before_action :authorize_sample_data!
|
|
10
|
+
|
|
11
|
+
# GET /api/v3/admin/email_templates/:email_template_id/sample_records
|
|
12
|
+
#
|
|
13
|
+
# The store's five latest records the template can be previewed
|
|
14
|
+
# with (for the layout and partials, those of the email `email_key`
|
|
15
|
+
# names). Empty for an email that needs no record.
|
|
16
|
+
def index
|
|
17
|
+
authorize! :update, Spree::EmailTemplate
|
|
18
|
+
|
|
19
|
+
records = build_preview.email.sample_class.new(store: current_store).recent_records
|
|
20
|
+
render json: { data: records.map { |record| serializer_class.new(record, params: serializer_params).to_h } }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def serializer_class
|
|
26
|
+
Spree.api.admin_email_template_sample_record_serializer
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|