spree_api 6.0.0.beta4 → 6.0.0.rc2
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 -48
- data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
- 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/store_context.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +15 -29
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +10 -2
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +55 -4
- data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
- 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/money_params.rb +52 -0
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +7 -11
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +3 -15
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
- 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 +8 -28
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
- 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/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/concerns/spree/api/v3/strict_money_params.rb +94 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +8 -4
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -8
- data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +2 -6
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -9
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +61 -34
- 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 -10
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +5 -3
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +62 -14
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -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 +9 -5
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +20 -27
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -5
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -7
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +6 -2
- 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 +22 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -9
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -11
- 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 +11 -13
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +37 -9
- 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 +16 -8
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +95 -62
- 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 +14 -7
- 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 +53 -0
- data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +42 -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 +44 -0
- data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -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 +37 -11
- 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 -8
- 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 +13 -4
- data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +9 -5
- 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 -5
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +20 -6
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +30 -6
- 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 +83 -22
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +37 -12
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +18 -19
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +7 -5
- 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 +76 -62
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +26 -7
- 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 +32 -67
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -8
- 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 +29 -16
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -18
- data/app/controllers/spree/api/v3/admin/products_controller.rb +122 -71
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -6
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +55 -8
- 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 +2 -1
- 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 +7 -9
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +17 -10
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
- 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 +77 -32
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -23
- 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 +49 -8
- data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -48
- 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/tags_controller.rb +8 -5
- 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 +40 -13
- data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
- data/app/controllers/spree/api/v3/base_controller.rb +12 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +99 -3
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +10 -2
- data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +3 -3
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +21 -4
- 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 +12 -4
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/me_controller.rb +15 -4
- 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 +23 -2
- 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 +20 -11
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
- data/app/controllers/spree/api/v3/seller/products_controller.rb +115 -28
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +13 -6
- 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 +5 -1
- data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +9 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +11 -11
- data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +13 -4
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +23 -7
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +21 -7
- data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +16 -3
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +26 -28
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +9 -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 +64 -52
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -8
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
- 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 +10 -2
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -11
- 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 +5 -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 +25 -6
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -9
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -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/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 +27 -14
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +12 -7
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +11 -6
- 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 -8
- 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 +29 -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 +8 -7
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
- 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_assignment_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -8
- 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/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 +7 -10
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
- 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 +1 -5
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
- 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 +5 -17
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
- 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 +20 -30
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
- 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/discount_serializer.rb +3 -1
- 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_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +6 -3
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
- 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_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -17
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +4 -10
- 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 +14 -18
- data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +4 -5
- 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 +5 -9
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +38 -48
- 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 -4
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -8
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
- 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 +5 -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 +2 -6
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +4 -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 +5 -9
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -5
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +6 -25
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -17
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -0
- 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 +9 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -12
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +7 -7
- 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 +8 -16
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +11 -10
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +8 -21
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +3 -9
- 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 +6 -3
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -20
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +21 -84
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +6 -10
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +3 -19
- data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +13 -10
- 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 +132 -7
- data/app/serializers/spree/api/v3/cart_serializer.rb +20 -66
- data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +6 -29
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -16
- 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/country_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -32
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
- 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 +4 -12
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +6 -30
- data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -16
- 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/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/fulfillment_serializer.rb +4 -11
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +3 -7
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +7 -17
- data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/import_serializer.rb +3 -26
- data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
- data/app/serializers/spree/api/v3/line_item_serializer.rb +19 -23
- 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_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/media_serializer.rb +8 -5
- 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 +12 -25
- data/app/serializers/spree/api/v3/order_serializer.rb +14 -58
- 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 +5 -13
- 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 +6 -8
- data/app/serializers/spree/api/v3/price_serializer.rb +7 -12
- data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
- data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/product_serializer.rb +10 -24
- 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 +11 -16
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +6 -21
- data/app/serializers/spree/api/v3/return_serializer.rb +4 -16
- data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
- 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 +5 -15
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +8 -13
- 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_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +6 -3
- 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/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/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +8 -13
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +19 -40
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/price_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +3 -7
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +9 -13
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
- 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 -17
- 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 +10 -9
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
- 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_location_serializer.rb +8 -1
- 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 -13
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -27
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +11 -23
- data/app/serializers/spree/api/v3/variant_serializer.rb +10 -24
- 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/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/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
- data/config/initializers/pagy.rb +1 -1
- data/config/initializers/typelizer.rb +7 -9
- 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 +54 -102
- data/lib/spree/api/configuration.rb +5 -0
- data/lib/spree/api/dependencies.rb +54 -274
- 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 +127 -81
- 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 +39 -0
- data/lib/spree/api/webhook_event_types.rb +140 -0
- data/lib/spree/api.rb +0 -2
- data/lib/tasks/filters.rake +12 -0
- data/lib/typelizer/open_enums.rb +10 -0
- metadata +125 -40
- 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
- data/config/i18n-tasks.yml +0 -40
- data/config/initializers/alba.rb +0 -5
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
request_params 'EmailTemplateVersionParams' do |body|
|
|
10
|
+
body.include_attributes Spree::Api::V3::Admin::EmailTemplateLanguageRequestSchema
|
|
11
|
+
body.attribute :lock_version, :integer,
|
|
12
|
+
permit: false,
|
|
13
|
+
description: "The draft's `lock_version` as reviewed. A draft saved since is refused with 409."
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
before_action :authorize_sample_data!
|
|
17
|
+
|
|
18
|
+
# POST /api/v3/admin/email_templates/:email_template_id/publication
|
|
19
|
+
#
|
|
20
|
+
# Makes the draft live. A draft that does not render with sample data
|
|
21
|
+
# (for the layout or a partial: in any email using it) is refused with
|
|
22
|
+
# 422 and each problem's email and line.
|
|
23
|
+
def create
|
|
24
|
+
authorize! :update, Spree::EmailTemplate
|
|
25
|
+
|
|
26
|
+
result = Spree.email_template_publish_workflow.call(
|
|
27
|
+
store: current_store, key: email_template.key, locale: language, actor: current_actor,
|
|
28
|
+
lock_version: params[:lock_version].presence
|
|
29
|
+
)
|
|
30
|
+
render_email_template_result(result, status: :created)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
request_params 'EmailTemplateRestoreParams' do |body|
|
|
10
|
+
body.include_attributes Spree::Api::V3::Admin::EmailTemplateLanguageRequestSchema
|
|
11
|
+
body.attribute :lock_version, :integer,
|
|
12
|
+
nullable: true,
|
|
13
|
+
permit: false,
|
|
14
|
+
description: "The open draft's `lock_version`, or null when there is none; checked as when saving."
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# POST /api/v3/admin/email_templates/:email_template_id/revisions/:revision_id/restoration
|
|
18
|
+
#
|
|
19
|
+
# Copies the revision into the language's draft, to be published
|
|
20
|
+
# like any change. A language without a version of its own can
|
|
21
|
+
# restore one of the version for every language its customers get.
|
|
22
|
+
def create
|
|
23
|
+
authorize! :update, Spree::EmailTemplate
|
|
24
|
+
|
|
25
|
+
revision = Spree::EmailTemplateRevision.where(
|
|
26
|
+
email_template: current_store.email_templates.where(
|
|
27
|
+
key: email_template.key, locale: [language, Spree::EmailTemplate::ANY_LOCALE]
|
|
28
|
+
)
|
|
29
|
+
).find_by_prefix_id!(params[:revision_id])
|
|
30
|
+
|
|
31
|
+
result = Spree.email_template_restore_revision_workflow.call(
|
|
32
|
+
revision: revision, actor: current_actor, locale: language,
|
|
33
|
+
draft_version: params.key?(:lock_version) ? { lock_version: params[:lock_version] } : {}
|
|
34
|
+
)
|
|
35
|
+
render_email_template_result(result, status: :created)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
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
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class TestEmailsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
request_params 'EmailTemplatePreviewParams' do |body|
|
|
10
|
+
body.include_attributes Spree::Api::V3::Admin::EmailTemplatePreviewRequestSchema
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
before_action :authorize_sample_data!
|
|
14
|
+
|
|
15
|
+
# POST /api/v3/admin/email_templates/:email_template_id/test_email
|
|
16
|
+
#
|
|
17
|
+
# Sends the template, rendered as the preview renders it, to the
|
|
18
|
+
# signed-in admin. Never to another address: the sample data comes
|
|
19
|
+
# from a real customer's records.
|
|
20
|
+
def create
|
|
21
|
+
authorize! :update, Spree::EmailTemplate
|
|
22
|
+
return render_no_recipient unless current_user
|
|
23
|
+
|
|
24
|
+
build_preview.call
|
|
25
|
+
Spree::EmailTemplateMailer.test_email(current_store, current_user.email, email_template.key, **preview_arguments).deliver_later
|
|
26
|
+
|
|
27
|
+
render json: { sent_to: current_user.email }, status: :accepted
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def render_no_recipient
|
|
33
|
+
render_error(
|
|
34
|
+
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:invalid_request],
|
|
35
|
+
message: I18n.t('spree.email_templates.test_email_needs_admin'),
|
|
36
|
+
status: :unprocessable_content
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# The customer email templates, layout and shared partials merchants
|
|
6
|
+
# may edit, addressed by their key with dots
|
|
7
|
+
# (`spree.order_mailer.confirm_email`). `language` picks the version:
|
|
8
|
+
# a language code, or `any` (the default) for every language.
|
|
9
|
+
class EmailTemplatesController < Admin::BaseController
|
|
10
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
11
|
+
|
|
12
|
+
skip_before_action :load_email_template, only: :index
|
|
13
|
+
|
|
14
|
+
# GET /api/v3/admin/email_templates
|
|
15
|
+
def index
|
|
16
|
+
authorize! :read, Spree::EmailTemplate
|
|
17
|
+
|
|
18
|
+
entries = Spree::EmailTemplates::Entry.all(current_store, locale: language)
|
|
19
|
+
render json: { data: serialize_collection(entries), meta: {} }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# GET /api/v3/admin/email_templates/:id
|
|
23
|
+
def show
|
|
24
|
+
authorize! :read, Spree::EmailTemplate
|
|
25
|
+
|
|
26
|
+
render json: serialize_email_template
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# DELETE /api/v3/admin/email_templates/:id
|
|
30
|
+
#
|
|
31
|
+
# Goes back to Spree's default for this language. The store's version
|
|
32
|
+
# and its history are kept, so a revision can still be restored.
|
|
33
|
+
def destroy
|
|
34
|
+
authorize! :update, Spree::EmailTemplate
|
|
35
|
+
|
|
36
|
+
result = Spree.email_template_revert_workflow.call(
|
|
37
|
+
store: current_store, key: email_template.key, locale: language, actor: current_actor,
|
|
38
|
+
lock_version: params[:lock_version].presence
|
|
39
|
+
)
|
|
40
|
+
render_email_template_result(result)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -16,6 +16,26 @@ module Spree
|
|
|
16
16
|
# readable ones instead of gating on a single scope.
|
|
17
17
|
skip_scope_check! only: :index
|
|
18
18
|
|
|
19
|
+
request_params :export do |body|
|
|
20
|
+
body.attribute :type, :string,
|
|
21
|
+
required: true, on: :create,
|
|
22
|
+
example: 'products',
|
|
23
|
+
description: 'Which dataset to export, as its shorthand: `products`, `orders`, `customers`, `product_translations`, `gift_cards`, `coupon_codes`, `newsletter_subscribers`, `price_list_prices`, `purchase_orders`, or a type an extension registers.'
|
|
24
|
+
body.attribute :record_selection, :string,
|
|
25
|
+
choices: %w[filtered all],
|
|
26
|
+
example: 'filtered',
|
|
27
|
+
description: '`filtered` (the default) keeps `search_params`; `all` ignores them and exports every record in scope.'
|
|
28
|
+
body.attribute :results_url, :string,
|
|
29
|
+
example: 'https://admin.example.com/store_abc/exports',
|
|
30
|
+
description: "Absolute URL of your admin exports view; the export-done email uses it as the download button target. Only honored when it matches one of the store's allowed origins."
|
|
31
|
+
# Read from the raw params: a Ransack hash nests groupings, which
|
|
32
|
+
# `permit(search_params: {})` rejects.
|
|
33
|
+
body.attribute :search_params, :hash,
|
|
34
|
+
permit: false,
|
|
35
|
+
example: { name_cont: 'shirt' },
|
|
36
|
+
description: 'A Ransack query, with the predicates the list endpoint accepts. A `price_list_prices` export requires `price_list_id_eq` naming a price list of the current store, and refuses `record_selection: "all"`.'
|
|
37
|
+
end
|
|
38
|
+
|
|
19
39
|
# We stream the CSV inline rather than redirecting to ActiveStorage's
|
|
20
40
|
# signed-URL endpoint because the SPA's Vite proxy only forwards
|
|
21
41
|
# `/api/*`. A cross-origin redirect to `/rails/active_storage/...`
|
|
@@ -92,13 +112,10 @@ module Spree
|
|
|
92
112
|
klass.new(attrs)
|
|
93
113
|
end
|
|
94
114
|
|
|
95
|
-
# `
|
|
96
|
-
#
|
|
97
|
-
# rejects nested hashes, so we extract via `to_unsafe_h`. `:format`
|
|
98
|
-
# is intentionally dropped — only CSV is supported and Rails' request
|
|
99
|
-
# format would otherwise overwrite the model's enum.
|
|
115
|
+
# `:format` is intentionally dropped — only CSV is supported and Rails'
|
|
116
|
+
# request format would otherwise overwrite the model's enum.
|
|
100
117
|
def permitted_params
|
|
101
|
-
attrs = params.permit(*
|
|
118
|
+
attrs = params.permit(*permitted_attributes)
|
|
102
119
|
raw = params[:search_params]
|
|
103
120
|
attrs[:search_params] = raw.respond_to?(:to_unsafe_h) ? raw.to_unsafe_h : raw if raw.present?
|
|
104
121
|
attrs
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class FilesController < Admin::BaseController
|
|
6
|
+
include Spree::Api::V3::FileUploads
|
|
7
|
+
|
|
8
|
+
# The endpoint that uses a file checks its own scope (`write_customers`
|
|
9
|
+
# for an avatar, and so on), so this gate is the floor, not the only
|
|
10
|
+
# check. `write_products` covers the dominant flow, product media.
|
|
11
|
+
scoped_resource :products
|
|
12
|
+
|
|
13
|
+
skip_before_action :authenticate_user
|
|
14
|
+
|
|
15
|
+
# Permitted by Spree::Api::V3::FileUploads, shared with the seller branch.
|
|
16
|
+
request_params 'FileUploadCreateParams', action: :create do |body|
|
|
17
|
+
body.include_attributes Spree::Api::V3::FileUploadRequestSchema
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def file_upload_serializer
|
|
23
|
+
Spree.api.admin_file_upload_serializer
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -11,6 +11,25 @@ module Spree
|
|
|
11
11
|
class GiftCardBatchesController < ResourceController
|
|
12
12
|
scoped_resource :gift_cards
|
|
13
13
|
|
|
14
|
+
request_params :gift_card_batch do |body|
|
|
15
|
+
body.attribute :prefix, :string,
|
|
16
|
+
required: true, on: :create,
|
|
17
|
+
example: 'WELCOME',
|
|
18
|
+
description: 'Lowercased and prepended to every generated code.'
|
|
19
|
+
body.attribute :amount, :decimal,
|
|
20
|
+
required: true, on: :create,
|
|
21
|
+
example: '25.00',
|
|
22
|
+
description: 'The amount of each card, greater than zero.'
|
|
23
|
+
body.attribute :codes_count, :integer,
|
|
24
|
+
required: true, on: :create,
|
|
25
|
+
example: 100,
|
|
26
|
+
description: 'How many cards to generate. Capped at `gift_card_batch_limit`; batches over `gift_card_batch_web_limit` generate in the background.'
|
|
27
|
+
body.attribute :currency, :currency,
|
|
28
|
+
example: 'USD',
|
|
29
|
+
description: 'ISO 4217 currency code. Defaults to the store currency.'
|
|
30
|
+
body.attribute :expires_at, :date, nullable: true, example: '2030-12-31'
|
|
31
|
+
end
|
|
32
|
+
|
|
14
33
|
protected
|
|
15
34
|
|
|
16
35
|
def model_class
|
|
@@ -22,7 +41,7 @@ module Spree
|
|
|
22
41
|
end
|
|
23
42
|
|
|
24
43
|
def permitted_params
|
|
25
|
-
params.permit(*
|
|
44
|
+
params.permit(*permitted_attributes)
|
|
26
45
|
end
|
|
27
46
|
end
|
|
28
47
|
end
|
|
@@ -13,6 +13,24 @@ module Spree
|
|
|
13
13
|
class GiftCardsController < ResourceController
|
|
14
14
|
scoped_resource :gift_cards
|
|
15
15
|
|
|
16
|
+
request_params :gift_card do |body|
|
|
17
|
+
body.attribute :amount, :decimal,
|
|
18
|
+
required: true, on: :create,
|
|
19
|
+
example: '25.00',
|
|
20
|
+
description: 'Greater than zero.'
|
|
21
|
+
body.attribute :currency, :currency,
|
|
22
|
+
example: 'USD',
|
|
23
|
+
description: 'ISO 4217 currency code. Defaults to the store currency.'
|
|
24
|
+
body.attribute :code, :string, example: 'WELCOME50', description: 'Generated when omitted.'
|
|
25
|
+
body.attribute :expires_at, :date, nullable: true, example: '2030-12-31'
|
|
26
|
+
# Resolved through the caller's ability by `resolve_customer`.
|
|
27
|
+
body.attribute :customer_id, :id,
|
|
28
|
+
nullable: true,
|
|
29
|
+
permit: false,
|
|
30
|
+
example: 'cus_UkLWZg9DAJ',
|
|
31
|
+
description: 'The customer the card belongs to. Needs the `read_customers` permission; null detaches it.'
|
|
32
|
+
end
|
|
33
|
+
|
|
16
34
|
before_action :resolve_customer, only: [:create, :update]
|
|
17
35
|
|
|
18
36
|
protected
|
|
@@ -26,7 +44,7 @@ module Spree
|
|
|
26
44
|
end
|
|
27
45
|
|
|
28
46
|
def permitted_params
|
|
29
|
-
params.permit(*
|
|
47
|
+
params.permit(*permitted_attributes).tap do |attributes|
|
|
30
48
|
attributes[:customer] = @customer if params.key?(:customer_id)
|
|
31
49
|
end
|
|
32
50
|
end
|
|
@@ -17,10 +17,43 @@ module Spree
|
|
|
17
17
|
# writable ones instead of gating on a single scope.
|
|
18
18
|
skip_scope_check! only: :index
|
|
19
19
|
|
|
20
|
+
request_params :import do |body|
|
|
21
|
+
body.attribute :type, :string,
|
|
22
|
+
required: true, on: :create,
|
|
23
|
+
example: 'products',
|
|
24
|
+
description: 'Which dataset to import, as its shorthand: `products`, `customers`, `product_translations`, `price_list_prices`, `purchase_orders`, or a type an extension registers.'
|
|
25
|
+
body.attribute :attachment_signed_id, :string,
|
|
26
|
+
required: true, on: :create,
|
|
27
|
+
description: 'The `signed_id` of the uploaded CSV, from `files.upload()` with `visibility: "private"`.'
|
|
28
|
+
body.attribute :delimiter, :string,
|
|
29
|
+
choices: [',', ';', '|', "\t"],
|
|
30
|
+
example: ',',
|
|
31
|
+
description: 'CSV column separator. Defaults to a comma.'
|
|
32
|
+
body.attribute :results_url, :string,
|
|
33
|
+
example: 'https://admin.example.com/store_abc/settings/imports',
|
|
34
|
+
description: "Absolute URL of your admin imports view; the import-done email links back to it with `?import=<id>` appended. Only honored when it matches one of the store's allowed origins."
|
|
35
|
+
body.attribute :price_list_id, :id,
|
|
36
|
+
description: 'For `price_list_prices` imports: the price list the rows are merged into. Must belong to the current store; other types ignore it.'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
request_params 'ImportCompleteMappingParams', action: :complete_mapping do |body|
|
|
40
|
+
body.attribute :mappings, :array,
|
|
41
|
+
description: 'Column assignments to apply before processing starts. Omit to accept the ones assigned on create.' do |mapping|
|
|
42
|
+
mapping.attribute :schema_field, :string,
|
|
43
|
+
required: true,
|
|
44
|
+
example: 'slug',
|
|
45
|
+
description: "A schema field name from the import's `schema_fields`."
|
|
46
|
+
mapping.attribute :file_column, :string,
|
|
47
|
+
nullable: true,
|
|
48
|
+
example: 'Product Handle',
|
|
49
|
+
description: 'The CSV header to read the field from; null unmaps the field.'
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
20
53
|
# POST /api/v3/admin/imports
|
|
21
54
|
#
|
|
22
|
-
# `
|
|
23
|
-
# POST /api/v3/admin/
|
|
55
|
+
# `attachment_signed_id` is a signed id obtained from
|
|
56
|
+
# POST /api/v3/admin/files. On success the import advances
|
|
24
57
|
# straight into `mapping` (auto-assigning file columns from the CSV
|
|
25
58
|
# headers), so the response already carries the mapping payload.
|
|
26
59
|
def create
|
|
@@ -48,12 +81,6 @@ module Spree
|
|
|
48
81
|
else
|
|
49
82
|
render_errors(@resource.errors)
|
|
50
83
|
end
|
|
51
|
-
rescue ActiveSupport::MessageVerifier::InvalidSignature
|
|
52
|
-
render_error(
|
|
53
|
-
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
54
|
-
message: 'Invalid attachment signed id',
|
|
55
|
-
status: :unprocessable_content
|
|
56
|
-
)
|
|
57
84
|
end
|
|
58
85
|
|
|
59
86
|
# PATCH /api/v3/admin/imports/:id/complete_mapping
|
|
@@ -259,7 +286,7 @@ module Spree
|
|
|
259
286
|
end
|
|
260
287
|
|
|
261
288
|
def permitted_params
|
|
262
|
-
params.permit(*
|
|
289
|
+
params.permit(*permitted_attributes)
|
|
263
290
|
end
|
|
264
291
|
|
|
265
292
|
# A price-list import writes into one list, named by its prefixed id.
|
|
@@ -312,8 +339,7 @@ module Spree
|
|
|
312
339
|
|
|
313
340
|
render_error(
|
|
314
341
|
code: Spree::Api::V3::ErrorHandler::ERROR_CODES[:validation_error],
|
|
315
|
-
message:
|
|
316
|
-
default: "This import belongs to a seller. It can be viewed here, but only the seller can retry or delete it."),
|
|
342
|
+
message: I18n.t('spree.api.cannot_modify_seller_import'),
|
|
317
343
|
status: :unprocessable_content
|
|
318
344
|
)
|
|
319
345
|
true
|
|
@@ -15,6 +15,18 @@ module Spree
|
|
|
15
15
|
subclassed_via -> { Spree::Integration.registered_classes },
|
|
16
16
|
unknown_type_error: 'unknown_integration_type'
|
|
17
17
|
|
|
18
|
+
request_params :integration do |body|
|
|
19
|
+
body.attribute :type, :string,
|
|
20
|
+
required: true,
|
|
21
|
+
only: :create,
|
|
22
|
+
example: 'carrier',
|
|
23
|
+
description: 'Wire shorthand from the integration types endpoint.'
|
|
24
|
+
body.attribute :active, :boolean,
|
|
25
|
+
description: 'Activating runs the connection check, and a failed check is a 422.'
|
|
26
|
+
body.attribute :preferences, :hash,
|
|
27
|
+
description: 'Credential values. Secret preferences come back masked, and sending a masked value back keeps the stored secret.'
|
|
28
|
+
end
|
|
29
|
+
|
|
18
30
|
# GET /api/v3/admin/integrations/types
|
|
19
31
|
# Pure registry discovery — which integrations are installed and how
|
|
20
32
|
# they're configured. Deliberately carries no per-store connected
|
|
@@ -47,7 +59,7 @@ module Spree
|
|
|
47
59
|
end
|
|
48
60
|
|
|
49
61
|
def permitted_params
|
|
50
|
-
params.permit(*
|
|
62
|
+
params.permit(*permitted_attributes)
|
|
51
63
|
end
|
|
52
64
|
|
|
53
65
|
# `types` is read-only discovery — maps to the read scope.
|
|
@@ -10,6 +10,14 @@ module Spree
|
|
|
10
10
|
skip_scope_check!
|
|
11
11
|
skip_before_action :authenticate_admin!, only: [:lookup, :accept]
|
|
12
12
|
|
|
13
|
+
request_params 'InvitationAcceptParams', action: :accept do |body|
|
|
14
|
+
body.attribute :password, :string,
|
|
15
|
+
description: 'Required when the invitee has no account yet: it creates one. An existing account signs in without it.'
|
|
16
|
+
body.attribute :password_confirmation, :string
|
|
17
|
+
body.attribute :first_name, :string
|
|
18
|
+
body.attribute :last_name, :string
|
|
19
|
+
end
|
|
20
|
+
|
|
13
21
|
rate_limit to: Spree::Api::Config[:rate_limit_login],
|
|
14
22
|
within: Spree::Api::Config[:rate_limit_window].seconds,
|
|
15
23
|
store: Rails.cache,
|
|
@@ -24,7 +32,6 @@ module Spree
|
|
|
24
32
|
end
|
|
25
33
|
|
|
26
34
|
# POST /api/v3/admin/auth/invitations/:id/accept?token=:token
|
|
27
|
-
# Body: { password?, password_confirmation?, first_name?, last_name? }
|
|
28
35
|
def accept
|
|
29
36
|
return unless load_invitation
|
|
30
37
|
|
|
@@ -99,7 +106,7 @@ module Spree
|
|
|
99
106
|
end
|
|
100
107
|
|
|
101
108
|
def signup_params(invitation)
|
|
102
|
-
params.permit(
|
|
109
|
+
params.permit(*declared_permitted_attributes).
|
|
103
110
|
merge(email: invitation.email)
|
|
104
111
|
end
|
|
105
112
|
|
|
@@ -13,6 +13,13 @@ module Spree
|
|
|
13
13
|
# grantable separately from store configuration (6.0-admin-rbac.md).
|
|
14
14
|
scoped_resource :staff
|
|
15
15
|
|
|
16
|
+
request_params :invitation do |body|
|
|
17
|
+
body.attribute :email, :string, required: true, on: :create
|
|
18
|
+
body.attribute :role_id, :id,
|
|
19
|
+
required: true, on: :create,
|
|
20
|
+
description: 'The role (`role_...`) the invitee gets on accepting.'
|
|
21
|
+
end
|
|
22
|
+
|
|
16
23
|
# POST /api/v3/admin/invitations
|
|
17
24
|
# Guards against inviting a new staff member straight into the admin
|
|
18
25
|
# super-role unless the inviter already holds it.
|
|
@@ -34,13 +41,6 @@ module Spree
|
|
|
34
41
|
render json: serialize_resource(@resource)
|
|
35
42
|
end
|
|
36
43
|
|
|
37
|
-
# Invitations are immutable post-create — UI calls `resend` for
|
|
38
|
-
# token rotation, `destroy` to revoke. Clearing the action set
|
|
39
|
-
# keeps the surface honest if a client ever fires PATCH directly.
|
|
40
|
-
def update
|
|
41
|
-
head :method_not_allowed
|
|
42
|
-
end
|
|
43
|
-
|
|
44
44
|
protected
|
|
45
45
|
|
|
46
46
|
def model_class
|
|
@@ -72,7 +72,7 @@ module Spree
|
|
|
72
72
|
# No extension union: an invitation carries only the role grant, which is
|
|
73
73
|
# the authorization surface itself, not extensible resource data.
|
|
74
74
|
def permitted_params
|
|
75
|
-
attrs = params.permit(
|
|
75
|
+
attrs = params.permit(*declared_permitted_attributes)
|
|
76
76
|
if attrs[:role_id].present? && Spree::PrefixedId.prefixed_id?(attrs[:role_id])
|
|
77
77
|
attrs[:role_id] = Spree::PrefixedId.decode_prefixed_id(attrs[:role_id])
|
|
78
78
|
end
|
|
@@ -13,6 +13,36 @@ module Spree
|
|
|
13
13
|
class MarketsController < ResourceController
|
|
14
14
|
scoped_resource :settings
|
|
15
15
|
|
|
16
|
+
request_params :market do |body|
|
|
17
|
+
body.attribute :name, :string,
|
|
18
|
+
required: true, on: :create,
|
|
19
|
+
example: 'Europe',
|
|
20
|
+
description: 'Display name, unique within the store.'
|
|
21
|
+
body.attribute :currency, :currency,
|
|
22
|
+
required: true, on: :create,
|
|
23
|
+
example: 'EUR',
|
|
24
|
+
description: 'ISO 4217 currency code.'
|
|
25
|
+
body.attribute :default_locale, :locale,
|
|
26
|
+
required: true, on: :create,
|
|
27
|
+
example: 'de',
|
|
28
|
+
description: 'Locale used as the market default. Always part of `supported_locales`.'
|
|
29
|
+
body.attribute :tax_inclusive, :boolean, description: 'Display prices with tax included.'
|
|
30
|
+
body.attribute :tax_provider, :string,
|
|
31
|
+
nullable: true,
|
|
32
|
+
example: 'internal',
|
|
33
|
+
description: 'Shorthand of the tax engine that prices this market, from the tax providers endpoint. Null uses the installation default.'
|
|
34
|
+
body.attribute :default, :boolean,
|
|
35
|
+
description: 'Setting true demotes the previous default market of the store.'
|
|
36
|
+
body.attribute :position, :integer, description: 'Sort order within the store; lower comes first.'
|
|
37
|
+
body.attribute :supported_locales, :array, of: :locale,
|
|
38
|
+
example: %w[de en],
|
|
39
|
+
description: 'Locales available in this market. The default locale is always included.'
|
|
40
|
+
body.attribute :country_codes, :array, of: :country,
|
|
41
|
+
required: true, on: :create,
|
|
42
|
+
example: %w[DE FR],
|
|
43
|
+
description: 'ISO 3166-1 alpha-2 codes of the countries in this market. At least one is required.'
|
|
44
|
+
end
|
|
45
|
+
|
|
16
46
|
protected
|
|
17
47
|
|
|
18
48
|
def model_class
|
|
@@ -30,15 +60,6 @@ module Spree
|
|
|
30
60
|
def scope
|
|
31
61
|
super.ordered
|
|
32
62
|
end
|
|
33
|
-
|
|
34
|
-
def permitted_params
|
|
35
|
-
normalize_params(
|
|
36
|
-
params.permit(
|
|
37
|
-
:name, :currency, :default_locale, :tax_inclusive, :tax_provider,
|
|
38
|
-
:default, :position, supported_locales: [], country_codes: []
|
|
39
|
-
)
|
|
40
|
-
)
|
|
41
|
-
end
|
|
42
63
|
end
|
|
43
64
|
end
|
|
44
65
|
end
|
|
@@ -7,6 +7,15 @@ module Spree
|
|
|
7
7
|
|
|
8
8
|
skip_scope_check!
|
|
9
9
|
|
|
10
|
+
request_params :me do |body|
|
|
11
|
+
body.attribute :selected_locale, :string, example: 'de', description: 'The dashboard display language.'
|
|
12
|
+
body.attribute :first_name, :string
|
|
13
|
+
body.attribute :last_name, :string
|
|
14
|
+
body.attribute :avatar_signed_id, :string,
|
|
15
|
+
nullable: true,
|
|
16
|
+
description: 'A `signed_id` from `files.upload()` to set the avatar, or null to remove it. Omit it to keep the current photo.'
|
|
17
|
+
end
|
|
18
|
+
|
|
10
19
|
before_action :require_current_user!
|
|
11
20
|
|
|
12
21
|
# GET /api/v3/admin/me
|
|
@@ -33,8 +42,8 @@ module Spree
|
|
|
33
42
|
# name, admin UI language, and avatar) — it operates on `current_user`
|
|
34
43
|
# directly, so it needs no per-record authorization. Distinct from
|
|
35
44
|
# PATCH /admin_users/:id, which is store-scoped staff management of
|
|
36
|
-
# *other* users. `
|
|
37
|
-
#
|
|
45
|
+
# *other* users. `avatar_signed_id` takes a signed id from
|
|
46
|
+
# POST /files to set the photo, or `null` to remove it.
|
|
38
47
|
def update
|
|
39
48
|
if current_user.update(permitted_params)
|
|
40
49
|
render json: me_response
|
|
@@ -53,7 +62,7 @@ module Spree
|
|
|
53
62
|
|
|
54
63
|
render_error(
|
|
55
64
|
code: ERROR_CODES[:record_not_found],
|
|
56
|
-
message:
|
|
65
|
+
message: I18n.t('spree.me_no_current_user'),
|
|
57
66
|
status: :not_found
|
|
58
67
|
)
|
|
59
68
|
end
|
|
@@ -70,7 +79,7 @@ module Spree
|
|
|
70
79
|
end
|
|
71
80
|
|
|
72
81
|
def permitted_params
|
|
73
|
-
params.permit(
|
|
82
|
+
params.permit(*declared_permitted_attributes)
|
|
74
83
|
end
|
|
75
84
|
|
|
76
85
|
def me_response
|