spree_api 5.6.1 → 6.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +28 -0
- data/Rakefile +1 -1
- data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
- data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
- data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
- data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
- data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
- data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +9 -5
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
- data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
- data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
- data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
- data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
- data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
- data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
- data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
- data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
- data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
- data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
- data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
- data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
- data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
- data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
- data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
- data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
- data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
- data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
- data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +157 -32
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
- data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
- data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
- data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +231 -0
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
- data/app/controllers/spree/api/v3/admin/store_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
- data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
- data/app/controllers/spree/api/v3/base_controller.rb +59 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +154 -38
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
- data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
- data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
- data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
- data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
- data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
- data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
- data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
- data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
- data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
- data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
- data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
- data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
- data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
- data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
- data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
- data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
- data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
- data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
- data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
- data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
- data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
- data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
- data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
- data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
- data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
- data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
- data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
- data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
- data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
- data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
- data/app/models/spree/api/data_request_urls.rb +25 -0
- data/app/models/spree/api/digital_link_urls.rb +26 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
- data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
- data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +19 -5
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
- data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +131 -19
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +0 -5
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
- data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
- data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +63 -1
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/base_serializer.rb +39 -2
- data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
- data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
- data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
- data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
- data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
- data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
- data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
- data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
- data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
- data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
- data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
- data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
- data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
- data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
- data/config/brakeman.ignore +1 -1
- data/config/initializers/typelizer.rb +51 -4
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +730 -22
- data/lib/spree/api/configuration.rb +2 -7
- data/lib/spree/api/dependencies.rb +173 -227
- data/lib/spree/api/openapi/schema_helper.rb +179 -13
- data/lib/spree/api/testing_support/v3/base.rb +45 -15
- data/lib/spree/api.rb +10 -4
- data/lib/typelizer/open_enums.rb +35 -0
- metadata +341 -27
- data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
- data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
- data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
- data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
- data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
- data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
- data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
- data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
- data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
- data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
data/config/routes.rb
CHANGED
|
@@ -29,7 +29,14 @@ Spree::Core::Engine.add_routes do
|
|
|
29
29
|
get :filters, to: 'products/filters#index'
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
|
+
# Public seller profiles. Read-only, and only sellers a shopper can
|
|
33
|
+
# actually buy from — see Store::SellersController.
|
|
34
|
+
resources :sellers, only: [:index, :show], id: /.+/
|
|
35
|
+
|
|
32
36
|
resources :categories, only: [:index, :show], id: /.+/
|
|
37
|
+
resources :collections, only: [:index, :show] do
|
|
38
|
+
resources :products, controller: 'collections/products', only: [:index]
|
|
39
|
+
end
|
|
33
40
|
|
|
34
41
|
# Carts
|
|
35
42
|
resources :carts, only: [:index, :show, :create, :update, :destroy] do
|
|
@@ -48,10 +55,31 @@ Spree::Core::Engine.add_routes do
|
|
|
48
55
|
end
|
|
49
56
|
end
|
|
50
57
|
resource :store_credits, only: [:create, :destroy], controller: 'carts/store_credits'
|
|
58
|
+
resource :tax_identifier, only: [:show, :update, :destroy], controller: 'carts/tax_identifiers'
|
|
59
|
+
resource :po_document, only: [:show, :create, :destroy], controller: 'carts/po_documents'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Delivery methods (pickup discovery)
|
|
63
|
+
resources :delivery_methods, only: [:index, :show] do
|
|
64
|
+
member do
|
|
65
|
+
get :pickup_locations
|
|
66
|
+
get :pickup_points
|
|
67
|
+
end
|
|
51
68
|
end
|
|
52
69
|
|
|
53
70
|
# Orders (single order lookup, guest-accessible via order token)
|
|
54
|
-
resources :orders, only: [:show]
|
|
71
|
+
resources :orders, only: [:show] do
|
|
72
|
+
# Customer self-service returns — opening and viewing only; the
|
|
73
|
+
# merchant approves, receives and refunds through the Admin API.
|
|
74
|
+
resources :returns, only: [:index, :show, :create], controller: 'orders/returns' do
|
|
75
|
+
member do
|
|
76
|
+
get :label
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
resources :claims, only: [:index, :show, :create], controller: 'orders/claims'
|
|
80
|
+
# Read-only — the registration frozen onto the order at completion.
|
|
81
|
+
resource :tax_identifier, only: [:show], controller: 'orders/tax_identifiers'
|
|
82
|
+
end
|
|
55
83
|
|
|
56
84
|
# Policies (return policy, privacy policy, terms of service, etc.)
|
|
57
85
|
resources :policies, only: [:index, :show]
|
|
@@ -84,6 +112,14 @@ Spree::Core::Engine.add_routes do
|
|
|
84
112
|
resources :credit_cards, only: [:index, :show, :destroy]
|
|
85
113
|
resources :gift_cards, only: [:index, :show]
|
|
86
114
|
resources :store_credits, only: [:index, :show]
|
|
115
|
+
# Plural for the list a checkout page offers; singular for reading or
|
|
116
|
+
# upserting one kind without knowing whether it exists yet.
|
|
117
|
+
resources :tax_identifiers, only: [:index], controller: 'tax_identifiers'
|
|
118
|
+
resource :tax_identifier, only: [:show, :update, :destroy], controller: 'tax_identifiers'
|
|
119
|
+
resources :digital_links, only: [:index, :show]
|
|
120
|
+
# GDPR subject rights the customer exercises for themselves — a copy
|
|
121
|
+
# of their data, or its erasure.
|
|
122
|
+
resources :data_requests, only: [:index, :show, :create]
|
|
87
123
|
resources :payment_setup_sessions, only: [:create, :show] do
|
|
88
124
|
member do
|
|
89
125
|
patch :complete
|
|
@@ -91,6 +127,29 @@ Spree::Core::Engine.add_routes do
|
|
|
91
127
|
end
|
|
92
128
|
end
|
|
93
129
|
|
|
130
|
+
# Company self-service — the buyer's organization directory
|
|
131
|
+
# (docs/plans/6.0-b2b-companies-and-catalogs.md). Authorization is
|
|
132
|
+
# standing + the storefront access policy, never roles.
|
|
133
|
+
get 'account/companies', to: 'account/companies#index'
|
|
134
|
+
|
|
135
|
+
resources :companies, only: [:show, :update] do
|
|
136
|
+
resources :addresses, only: [:index, :create, :update, :destroy],
|
|
137
|
+
controller: 'companies/addresses'
|
|
138
|
+
# POST takes customer_email — a membership for an existing customer,
|
|
139
|
+
# an invitation otherwise.
|
|
140
|
+
resources :members, only: [:index, :create, :destroy], controller: 'companies/members'
|
|
141
|
+
# DELETE revokes the invitation rather than erasing the record.
|
|
142
|
+
resources :invitations, only: [:index, :destroy], controller: 'companies/invitations'
|
|
143
|
+
# Completed purchases across the node's subtree.
|
|
144
|
+
resources :orders, only: [:index], controller: 'companies/orders'
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# The invitee has no company yet — and no account — so the token flow
|
|
148
|
+
# is deliberately top-level and unauthenticated, unlike everything
|
|
149
|
+
# else about a company, which is reached through the node.
|
|
150
|
+
get 'company_invitations/:token', to: 'company_invitations#show', as: :company_invitation_lookup
|
|
151
|
+
post 'company_invitations/:token/accept', to: 'company_invitations#accept'
|
|
152
|
+
|
|
94
153
|
# Wishlists
|
|
95
154
|
resources :wishlists do
|
|
96
155
|
resources :items, only: [:create, :update, :destroy], controller: 'wishlist_items'
|
|
@@ -98,7 +157,12 @@ Spree::Core::Engine.add_routes do
|
|
|
98
157
|
|
|
99
158
|
# Digital Downloads
|
|
100
159
|
# Access via token in URL
|
|
101
|
-
get '
|
|
160
|
+
get 'digital_links/:token', to: 'digital_links#show', as: :digital_link_download
|
|
161
|
+
# Token-addressed so the emailed link works from a device that was
|
|
162
|
+
# never signed in.
|
|
163
|
+
get 'data_requests/:token/download', to: 'data_request_downloads#show', as: :data_request_download
|
|
164
|
+
# Legacy path — emailed and bookmarked URLs outlive the rename. Removed in 6.1.
|
|
165
|
+
get 'digitals/:token', to: 'digital_links#show', as: :digital_download
|
|
102
166
|
|
|
103
167
|
# Data Feeds (public, no auth required)
|
|
104
168
|
resources :feeds, only: [:show], controller: 'data_feeds', param: :slug
|
|
@@ -106,7 +170,7 @@ Spree::Core::Engine.add_routes do
|
|
|
106
170
|
|
|
107
171
|
namespace :admin do
|
|
108
172
|
# Mounts a nested `custom_fields` resource on parents that include
|
|
109
|
-
# Spree::
|
|
173
|
+
# Spree::HasCustomFields. See docs/plans/5.4-6.0-custom-fields-rename.md.
|
|
110
174
|
concern :custom_fieldable do
|
|
111
175
|
resources :custom_fields
|
|
112
176
|
end
|
|
@@ -119,8 +183,26 @@ Spree::Core::Engine.add_routes do
|
|
|
119
183
|
resources :translations, only: [:index], controller: 'translations'
|
|
120
184
|
end
|
|
121
185
|
|
|
186
|
+
# Mounts the uniform nested products surface on parents that curate
|
|
187
|
+
# products (categories, collections, catalogs, price lists). Bulk by
|
|
188
|
+
# design: POST adds and DELETE removes any number of products in one
|
|
189
|
+
# request. `positioned: true` adds per-member reposition where the
|
|
190
|
+
# membership carries a manual order. See
|
|
191
|
+
# Spree::Api::V3::Admin::ProductMembership.
|
|
192
|
+
concern :product_membership do |options|
|
|
193
|
+
resources :products, controller: options.fetch(:controller), only: [:index, :create] do
|
|
194
|
+
patch :reposition, on: :member if options[:positioned]
|
|
195
|
+
end
|
|
196
|
+
delete 'products', to: "#{options.fetch(:controller)}#destroy"
|
|
197
|
+
end
|
|
198
|
+
|
|
122
199
|
# Definitions are per resource type, not per instance.
|
|
123
|
-
resources :custom_field_definitions
|
|
200
|
+
resources :custom_field_definitions do
|
|
201
|
+
collection do
|
|
202
|
+
# What a definition can be attached to, from the registry.
|
|
203
|
+
get :resource_types
|
|
204
|
+
end
|
|
205
|
+
end
|
|
124
206
|
|
|
125
207
|
# Translation discovery: the translatable-resources registry and the
|
|
126
208
|
# store's supported locales. See docs/plans/5.5-6.0-resource-translations-api.md.
|
|
@@ -131,26 +213,48 @@ Spree::Core::Engine.add_routes do
|
|
|
131
213
|
# option values in one save). Flat list of independent registry writes.
|
|
132
214
|
post 'translations/batch', to: 'translations/batches#create'
|
|
133
215
|
|
|
216
|
+
# Translation coverage across a whole resource type (?resource_type=),
|
|
217
|
+
# driving the centralized Translations page's grid.
|
|
218
|
+
get 'translations', to: 'translations_coverage#index'
|
|
219
|
+
|
|
134
220
|
# Authentication
|
|
135
221
|
post 'auth/login', to: 'auth#create'
|
|
136
222
|
post 'auth/refresh', to: 'auth#refresh'
|
|
137
223
|
post 'auth/logout', to: 'auth#logout'
|
|
138
224
|
|
|
225
|
+
# Provider discovery + SSO callback — unauthenticated; both are used
|
|
226
|
+
# before a session exists. Discovery drives the dashboard login page.
|
|
227
|
+
get 'auth/providers', to: 'auth#providers'
|
|
228
|
+
get 'auth/callback/:provider', to: 'auth#callback'
|
|
229
|
+
|
|
139
230
|
# Public invitation acceptance — unauthenticated; the prefixed ID +
|
|
140
231
|
# token in the URL act as the credential. Mounted under `auth/` so
|
|
141
232
|
# the issued refresh-token cookie's path matches `/auth/refresh`.
|
|
142
233
|
get 'auth/invitations/:id/lookup', to: 'invitation_acceptances#lookup'
|
|
143
234
|
post 'auth/invitations/:id/accept', to: 'invitation_acceptances#accept'
|
|
144
235
|
|
|
236
|
+
# First-run setup — unauthenticated; the one-time setup token is the
|
|
237
|
+
# credential, and the flow self-disables once any admin user exists.
|
|
238
|
+
get 'auth/setup', to: 'setup#show'
|
|
239
|
+
get 'auth/setup/countries', to: 'setup#countries'
|
|
240
|
+
post 'auth/setup', to: 'setup#create'
|
|
241
|
+
|
|
145
242
|
# Public password reset — unauthenticated; the token is the credential.
|
|
146
243
|
# Mounted under `auth/` so the refresh-token cookie issued on success
|
|
147
244
|
# shares its path with `/auth/refresh`.
|
|
148
245
|
post 'auth/password_resets', to: 'password_resets#create'
|
|
149
246
|
patch 'auth/password_resets/:id', to: 'password_resets#update'
|
|
150
247
|
|
|
151
|
-
#
|
|
248
|
+
# Semantic reporting (docs/plans/6.0-analytics-semantic-layer.md)
|
|
249
|
+
namespace :reporting do
|
|
250
|
+
post :query
|
|
251
|
+
get :schema
|
|
252
|
+
resources :saved_reports, only: %i[index show create update destroy]
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
# Dashboard (point-in-time counts registered on Spree.reporting)
|
|
152
256
|
namespace :dashboard do
|
|
153
|
-
get :
|
|
257
|
+
get :counters
|
|
154
258
|
end
|
|
155
259
|
|
|
156
260
|
# Current admin user + permissions (for UI permission checks)
|
|
@@ -159,7 +263,9 @@ Spree::Core::Engine.add_routes do
|
|
|
159
263
|
patch 'me', to: 'me#update'
|
|
160
264
|
|
|
161
265
|
# Store Settings
|
|
162
|
-
resource :store, only: [:show, :update], controller: 'store'
|
|
266
|
+
resource :store, only: [:show, :update], controller: 'store' do
|
|
267
|
+
get :data_sources
|
|
268
|
+
end
|
|
163
269
|
|
|
164
270
|
# Staff & access (invitations, admin users, roles, API keys)
|
|
165
271
|
resources :admin_users, only: [:index, :show, :update, :destroy]
|
|
@@ -189,7 +295,8 @@ Spree::Core::Engine.add_routes do
|
|
|
189
295
|
end
|
|
190
296
|
end
|
|
191
297
|
end
|
|
192
|
-
resources :roles, only: [:index, :show]
|
|
298
|
+
resources :roles, only: [:index, :show, :create, :update, :destroy]
|
|
299
|
+
resources :permissions, only: [:index]
|
|
193
300
|
|
|
194
301
|
# Direct Uploads (Active Storage)
|
|
195
302
|
resources :direct_uploads, only: [:create]
|
|
@@ -216,14 +323,25 @@ Spree::Core::Engine.add_routes do
|
|
|
216
323
|
end
|
|
217
324
|
|
|
218
325
|
# Products
|
|
326
|
+
resources :product_types do
|
|
327
|
+
member do
|
|
328
|
+
post :apply_to_products
|
|
329
|
+
end
|
|
330
|
+
end
|
|
219
331
|
resources :products, concerns: [:custom_fieldable, :translatable] do
|
|
220
332
|
member do
|
|
221
333
|
post :clone
|
|
334
|
+
# Closing a review a seller opened
|
|
335
|
+
# (docs/plans/6.0-seller-product-submission.md).
|
|
336
|
+
patch :approve
|
|
337
|
+
patch :reject
|
|
222
338
|
end
|
|
223
339
|
collection do
|
|
224
340
|
post :bulk_status_update
|
|
225
341
|
post :bulk_add_to_categories
|
|
226
342
|
post :bulk_remove_from_categories
|
|
343
|
+
post :bulk_add_to_collections
|
|
344
|
+
post :bulk_remove_from_collections
|
|
227
345
|
post :bulk_add_to_channels
|
|
228
346
|
post :bulk_remove_from_channels
|
|
229
347
|
post :bulk_add_tags
|
|
@@ -234,6 +352,29 @@ Spree::Core::Engine.add_routes do
|
|
|
234
352
|
resources :media, controller: 'media', only: [:index, :create, :update, :destroy]
|
|
235
353
|
end
|
|
236
354
|
resources :media, controller: 'media', only: [:index, :create, :update, :destroy]
|
|
355
|
+
resources :digital_assets, controller: 'products/digital_assets',
|
|
356
|
+
only: [:index, :create, :show, :update, :destroy] do
|
|
357
|
+
collection do
|
|
358
|
+
get :providers
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
# Digital download grants — read and reset only; they are created by
|
|
364
|
+
# order completion, never by hand.
|
|
365
|
+
resources :digital_links, only: [:index, :show] do
|
|
366
|
+
member do
|
|
367
|
+
patch :reset
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
# Media library — every file in the store, placed or not. Files are put
|
|
372
|
+
# ON a product through the nested media routes above; this is where they
|
|
373
|
+
# are uploaded, browsed and deleted.
|
|
374
|
+
resources :media, controller: 'media_library', only: [:index, :show, :create, :update, :destroy] do
|
|
375
|
+
member do
|
|
376
|
+
get :usage
|
|
377
|
+
end
|
|
237
378
|
end
|
|
238
379
|
|
|
239
380
|
# Categories
|
|
@@ -243,39 +384,122 @@ Spree::Core::Engine.add_routes do
|
|
|
243
384
|
end
|
|
244
385
|
|
|
245
386
|
# Manual product membership + ordering within the category.
|
|
246
|
-
|
|
247
|
-
resources :products, controller: 'categories/products', only: [:index, :create, :destroy] do
|
|
248
|
-
member do
|
|
249
|
-
patch :reposition
|
|
250
|
-
end
|
|
251
|
-
end
|
|
387
|
+
concerns :product_membership, controller: 'categories/products', positioned: true
|
|
252
388
|
end
|
|
253
389
|
|
|
390
|
+
# Collections (flat, merchandising). Reordering the collection itself is a
|
|
391
|
+
# plain `position` update (acts_as_list reorders on save), so there is no
|
|
392
|
+
# top-level reposition action — only the nested membership has one.
|
|
393
|
+
resources :collections, concerns: [:custom_fieldable, :translatable] do
|
|
394
|
+
# Manual product membership + ordering within the collection.
|
|
395
|
+
concerns :product_membership, controller: 'collections/products', positioned: true
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
# Subclass discovery for the collection rules editor, mirroring
|
|
399
|
+
# `/promotion_rules/types`. Top-level (and read-only) because rules are
|
|
400
|
+
# written through the collection's own `rules` setter, not nested CRUD.
|
|
401
|
+
get 'collection_rules/types', to: 'collection_rules#types'
|
|
402
|
+
|
|
254
403
|
# Option Types (with nested option_values in payload)
|
|
255
404
|
resources :option_types, concerns: [:custom_fieldable, :translatable]
|
|
256
405
|
|
|
406
|
+
# Store policies (terms of service, privacy, returns, shipping, …)
|
|
407
|
+
resources :policies, concerns: [:translatable]
|
|
408
|
+
|
|
257
409
|
# Tax Categories
|
|
258
410
|
resources :tax_categories
|
|
259
411
|
|
|
412
|
+
# Tax Rates — the internal tax provider's configuration
|
|
413
|
+
resources :tax_rates
|
|
414
|
+
|
|
415
|
+
# Selectable tax engines and their declared limits (discovery only)
|
|
416
|
+
resources :tax_providers, only: [:index]
|
|
417
|
+
# How sellers get paid. Discovery only — the choice itself is a store
|
|
418
|
+
# preference, so there is nothing here to create.
|
|
419
|
+
resources :payout_providers, only: [:index]
|
|
420
|
+
|
|
421
|
+
# Return / claim / refund / cancellation reasons (dropdowns + settings management)
|
|
422
|
+
resources :return_reasons
|
|
423
|
+
resources :claim_reasons
|
|
424
|
+
resources :refund_reasons
|
|
425
|
+
resources :order_cancellation_reasons
|
|
426
|
+
|
|
260
427
|
# Markets
|
|
261
428
|
resources :markets
|
|
262
429
|
|
|
263
|
-
# Store Credit Categories (read-only — for store credit dropdowns)
|
|
264
|
-
resources :store_credit_categories, only: [:index, :show]
|
|
265
|
-
|
|
266
430
|
# Inventory
|
|
267
431
|
resources :stock_locations
|
|
268
432
|
resources :stock_reservations, only: [:index, :show]
|
|
269
|
-
resources :
|
|
270
|
-
|
|
433
|
+
resources :stock_levels, only: [:index, :show, :update, :destroy] do
|
|
434
|
+
collection do
|
|
435
|
+
post :bulk_upsert
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
resources :stock_movements, only: [:index, :show]
|
|
439
|
+
resources :stock_transfers do
|
|
440
|
+
member do
|
|
441
|
+
patch :mark_ready
|
|
442
|
+
patch :mark_in_transit
|
|
443
|
+
patch :mark_draft
|
|
444
|
+
patch :close
|
|
445
|
+
patch :cancel
|
|
446
|
+
end
|
|
447
|
+
resources :stock_receipts, only: [:index, :show, :create], module: :stock_transfers
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
# Purchasing
|
|
451
|
+
resources :suppliers
|
|
452
|
+
resources :purchase_orders do
|
|
453
|
+
member do
|
|
454
|
+
patch :mark_ordered
|
|
455
|
+
patch :mark_draft
|
|
456
|
+
patch :close
|
|
457
|
+
patch :cancel
|
|
458
|
+
end
|
|
459
|
+
resources :stock_receipts, only: [:index, :show, :create], module: :purchase_orders
|
|
460
|
+
end
|
|
271
461
|
|
|
272
462
|
# Payment Methods
|
|
463
|
+
resources :delivery_methods do
|
|
464
|
+
collection do
|
|
465
|
+
get :calculators
|
|
466
|
+
get :fulfillment_providers
|
|
467
|
+
get :rate_providers
|
|
468
|
+
end
|
|
469
|
+
resources :rules, controller: 'delivery_methods/rules', only: [:index, :show, :create, :update, :destroy]
|
|
470
|
+
end
|
|
471
|
+
resources :tracking_carriers, only: [:index]
|
|
472
|
+
resources :delivery_method_rules, only: [] do
|
|
473
|
+
collection do
|
|
474
|
+
get :types
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
resources :delivery_zones
|
|
478
|
+
resources :package_types
|
|
479
|
+
|
|
480
|
+
resources :delivery_profiles do
|
|
481
|
+
collection do
|
|
482
|
+
get :kinds
|
|
483
|
+
end
|
|
484
|
+
resources :origin_groups, controller: 'delivery_profiles/origin_groups',
|
|
485
|
+
only: [:index, :show, :create, :update, :destroy]
|
|
486
|
+
end
|
|
487
|
+
|
|
273
488
|
resources :payment_methods do
|
|
274
489
|
collection do
|
|
275
490
|
get :types
|
|
276
491
|
end
|
|
277
492
|
end
|
|
278
493
|
|
|
494
|
+
resources :integrations do
|
|
495
|
+
collection do
|
|
496
|
+
get :types
|
|
497
|
+
end
|
|
498
|
+
member do
|
|
499
|
+
post :test
|
|
500
|
+
end
|
|
501
|
+
end
|
|
502
|
+
|
|
279
503
|
# Promotions, with nested actions/rules/coupon codes.
|
|
280
504
|
resources :promotions do
|
|
281
505
|
resources :promotion_actions, only: [:index, :show, :create, :update, :destroy]
|
|
@@ -305,6 +529,19 @@ Spree::Core::Engine.add_routes do
|
|
|
305
529
|
resources :addresses, controller: 'customers/addresses'
|
|
306
530
|
resources :credit_cards, controller: 'customers/credit_cards', only: [:index, :show, :destroy]
|
|
307
531
|
resources :store_credits, controller: 'customers/store_credits'
|
|
532
|
+
resources :tax_identifiers, controller: 'customers/tax_identifiers' do
|
|
533
|
+
member do
|
|
534
|
+
post :validate
|
|
535
|
+
end
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
member do
|
|
539
|
+
# GDPR: answer a subject access request, or carry out an erasure.
|
|
540
|
+
# Both are how these requests actually arrive — by email to the
|
|
541
|
+
# merchant, from people who often can no longer sign in.
|
|
542
|
+
get :export
|
|
543
|
+
post :anonymize
|
|
544
|
+
end
|
|
308
545
|
|
|
309
546
|
collection do
|
|
310
547
|
post :bulk_add_to_groups
|
|
@@ -314,9 +551,164 @@ Spree::Core::Engine.add_routes do
|
|
|
314
551
|
end
|
|
315
552
|
end
|
|
316
553
|
|
|
554
|
+
# GDPR compliance log. Requests are records of what happened, so they
|
|
555
|
+
# are created and read but never edited or deleted — an editable audit
|
|
556
|
+
# trail is not one.
|
|
557
|
+
resources :data_requests, only: [:index, :show, :create]
|
|
558
|
+
resources :consent_records, only: [:index, :show]
|
|
559
|
+
|
|
317
560
|
# Customer groups (segmentation; used by promotion rules + bulk customer ops)
|
|
318
561
|
resources :customer_groups
|
|
319
562
|
|
|
563
|
+
# Marketplace sellers. Each status change is its own member action
|
|
564
|
+
# because each one is a workflow with its own arguments — mass
|
|
565
|
+
# assignment would skip the mail and the extension hooks.
|
|
566
|
+
resources :sellers, concerns: :custom_fieldable do
|
|
567
|
+
member do
|
|
568
|
+
post :invite
|
|
569
|
+
patch :approve
|
|
570
|
+
patch :suspend
|
|
571
|
+
patch :reject
|
|
572
|
+
# Where the seller stands against the marketplace's checklist,
|
|
573
|
+
# and the way back to onboarding when something has to be redone.
|
|
574
|
+
get :onboarding
|
|
575
|
+
patch :reopen_onboarding
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
# Where the seller stands on the ledger, one row per currency.
|
|
579
|
+
resources :balances, only: [:index], controller: 'sellers/balances'
|
|
580
|
+
|
|
581
|
+
# Settling this seller by hand. The scheduled sweep skips anyone on
|
|
582
|
+
# the `manual` interval — this is where the operator decides.
|
|
583
|
+
resources :payouts, only: [:create], controller: 'sellers/payouts'
|
|
584
|
+
|
|
585
|
+
# Who runs this seller, and the offers nobody has accepted yet.
|
|
586
|
+
# The operator is the only one who can repair a seller whose team
|
|
587
|
+
# has locked itself out, which the seller's own panel cannot do.
|
|
588
|
+
resources :team, only: [:index, :destroy], controller: 'sellers/team'
|
|
589
|
+
resources :invitations, only: [:index, :destroy], controller: 'sellers/invitations' do
|
|
590
|
+
member do
|
|
591
|
+
patch :resend
|
|
592
|
+
end
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
# What this seller submitted about the requirements, and the
|
|
596
|
+
# operator's decisions on it. Nested, because a submission means
|
|
597
|
+
# nothing outside the seller it belongs to.
|
|
598
|
+
resources :requirement_submissions, only: [:index, :show, :create],
|
|
599
|
+
controller: 'seller_requirement_submissions' do
|
|
600
|
+
member do
|
|
601
|
+
patch :accept
|
|
602
|
+
patch :reject
|
|
603
|
+
get :download
|
|
604
|
+
end
|
|
605
|
+
end
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
# What this marketplace asks of a seller before it will let them
|
|
609
|
+
# trade. Configuration, so it hangs off the store rather than a
|
|
610
|
+
# seller.
|
|
611
|
+
resources :seller_requirements do
|
|
612
|
+
collection do
|
|
613
|
+
get :types
|
|
614
|
+
end
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
# Commissions — what the marketplace charges its sellers. Rates are
|
|
618
|
+
# configuration; lines are the record of what was charged, so they are
|
|
619
|
+
# read-only.
|
|
620
|
+
resources :commission_rates do
|
|
621
|
+
collection do
|
|
622
|
+
get :rule_types
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
resources :commission_lines, only: [:index, :show]
|
|
626
|
+
|
|
627
|
+
# The fund ledger — what sellers earned, and what has been sent them.
|
|
628
|
+
# Both are written by fulfilment and by the sweep rather than by a
|
|
629
|
+
# caller, so both are read-only. The one thing an operator does is say
|
|
630
|
+
# a settlement landed, which the built-in provider depends on: it
|
|
631
|
+
# records what to send and waits to be told it went.
|
|
632
|
+
resources :seller_transfers, only: [:index, :show]
|
|
633
|
+
resources :seller_payouts, only: [:index, :show] do
|
|
634
|
+
member do
|
|
635
|
+
patch :complete
|
|
636
|
+
end
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
# What one checkout produced when it reached several sellers. Read-only:
|
|
640
|
+
# everything an operator acts on lives on the orders inside it.
|
|
641
|
+
resources :order_groups, only: [:index, :show]
|
|
642
|
+
|
|
643
|
+
# Business customers — a tree of company nodes. Nested collections are
|
|
644
|
+
# listed and created under their node and then addressed directly, so
|
|
645
|
+
# a caller holding an entry id does not have to know its company.
|
|
646
|
+
resources :companies do
|
|
647
|
+
# The node's address book.
|
|
648
|
+
resources :addresses, controller: 'companies/addresses'
|
|
649
|
+
|
|
650
|
+
# The people with standing over the node. Creation takes an email:
|
|
651
|
+
# a membership for an existing customer, an invitation otherwise.
|
|
652
|
+
resources :memberships, controller: 'companies/memberships',
|
|
653
|
+
only: [:index, :show, :create, :destroy]
|
|
654
|
+
# DELETE revokes the invitation rather than erasing the record.
|
|
655
|
+
resources :invitations, controller: 'companies/invitations',
|
|
656
|
+
only: [:index, :show, :destroy]
|
|
657
|
+
|
|
658
|
+
# The business's own registration — the number on its invoices, which
|
|
659
|
+
# outranks the buyer's own. Same shape as the customer's.
|
|
660
|
+
resources :tax_identifiers, controller: 'companies/tax_identifiers' do
|
|
661
|
+
member do
|
|
662
|
+
post :validate
|
|
663
|
+
end
|
|
664
|
+
end
|
|
665
|
+
|
|
666
|
+
# Exemption evidence. Accepting or withdrawing one is its own action —
|
|
667
|
+
# never mass assignment — and a verified certificate is revoked
|
|
668
|
+
# rather than deleted.
|
|
669
|
+
resources :tax_exemption_certificates, controller: 'companies/tax_exemption_certificates' do
|
|
670
|
+
member do
|
|
671
|
+
patch :verify
|
|
672
|
+
patch :revoke
|
|
673
|
+
get :download
|
|
674
|
+
end
|
|
675
|
+
end
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
# Catalogs — assortment + optional price list, assigned to a buyer
|
|
680
|
+
# audience (customer group, or company subtree).
|
|
681
|
+
resources :catalogs do
|
|
682
|
+
member do
|
|
683
|
+
post :assign
|
|
684
|
+
post :import_products
|
|
685
|
+
# Going live is its own act, not a column write: an agreement is
|
|
686
|
+
# checked before it starts reaching buyers, and what has to happen
|
|
687
|
+
# alongside hangs off the workflow's hooks.
|
|
688
|
+
patch :activate
|
|
689
|
+
patch :deactivate
|
|
690
|
+
end
|
|
691
|
+
# Assortment membership. Unordered: a catalog decides what a buyer
|
|
692
|
+
# sees, never the order they see it in.
|
|
693
|
+
concerns :product_membership, controller: 'catalogs/products'
|
|
694
|
+
|
|
695
|
+
# Commercial terms. Typed per grain rather than one rules endpoint:
|
|
696
|
+
# quantity rules are per variant, minimums are per currency.
|
|
697
|
+
#
|
|
698
|
+
# Quantity rules are written as a whole set, because the agreement
|
|
699
|
+
# editor stages every term behind the catalog's Save: a half-applied
|
|
700
|
+
# agreement is not a state to leave a merchant in. They are read
|
|
701
|
+
# back on the assortment rows themselves (`expand=quantity_rule` on
|
|
702
|
+
# this catalog's products), where the variants they roll up are
|
|
703
|
+
# already loaded (docs/plans/6.0-volume-pricing.md).
|
|
704
|
+
resources :quantity_rules, controller: 'catalogs/quantity_rules', only: [] do
|
|
705
|
+
collection { put :upsert, path: '' }
|
|
706
|
+
end
|
|
707
|
+
resources :order_minimums, controller: 'catalogs/order_minimums',
|
|
708
|
+
only: [:index, :show, :create, :update, :destroy]
|
|
709
|
+
end
|
|
710
|
+
resources :catalog_assignments, only: [:show, :destroy]
|
|
711
|
+
|
|
320
712
|
# Price lists
|
|
321
713
|
resources :price_lists do
|
|
322
714
|
collection do
|
|
@@ -326,6 +718,9 @@ Spree::Core::Engine.add_routes do
|
|
|
326
718
|
patch :activate
|
|
327
719
|
patch :deactivate
|
|
328
720
|
end
|
|
721
|
+
# Which products the list prices. Adding materializes placeholder
|
|
722
|
+
# prices per variant x currency; removing hard-deletes the rows.
|
|
723
|
+
concerns :product_membership, controller: 'price_lists/products'
|
|
329
724
|
end
|
|
330
725
|
|
|
331
726
|
# Prices (generic — covers base prices AND price-list overrides).
|
|
@@ -340,6 +735,18 @@ Spree::Core::Engine.add_routes do
|
|
|
340
735
|
resources :gift_cards
|
|
341
736
|
resources :gift_card_batches, only: [:index, :show, :create]
|
|
342
737
|
|
|
738
|
+
# Store credits across all customers. Read-only: issuing, editing and
|
|
739
|
+
# deleting a credit stays nested under the customer that holds it.
|
|
740
|
+
resources :store_credits, only: [:index, :show] do
|
|
741
|
+
resources :events, only: [:index], controller: 'store_credits/events'
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
# Post-sale, across all orders. Read-only — creating any of these
|
|
745
|
+
# needs an order, so writes live under /orders/:order_id/...
|
|
746
|
+
resources :returns, only: [:index, :show]
|
|
747
|
+
resources :exchanges, only: [:index, :show]
|
|
748
|
+
resources :claims, only: [:index, :show]
|
|
749
|
+
|
|
343
750
|
# Channels (per-store distribution surfaces)
|
|
344
751
|
resources :channels do
|
|
345
752
|
member do
|
|
@@ -367,18 +774,64 @@ Spree::Core::Engine.add_routes do
|
|
|
367
774
|
patch :complete
|
|
368
775
|
patch :cancel
|
|
369
776
|
patch :approve
|
|
370
|
-
patch :resume
|
|
371
777
|
post :resend_confirmation
|
|
778
|
+
post :resend_digital_links
|
|
779
|
+
# The buyer's purchase order, streamed through the API so it is
|
|
780
|
+
# never reachable without admin credentials.
|
|
781
|
+
get :po_document
|
|
372
782
|
end
|
|
373
783
|
|
|
374
784
|
resources :items, only: [:index, :show, :create, :update, :destroy], controller: 'orders/items'
|
|
375
785
|
resources :fulfillments, controller: 'orders/fulfillments', only: [:index, :show, :create, :update] do
|
|
376
786
|
member do
|
|
377
787
|
patch :fulfill
|
|
788
|
+
patch :mark_delivered
|
|
378
789
|
patch :cancel
|
|
379
|
-
patch :resume
|
|
380
790
|
patch :split
|
|
381
791
|
end
|
|
792
|
+
|
|
793
|
+
resources :labels, controller: 'orders/labels', only: [:index, :show, :create, :destroy] do
|
|
794
|
+
member do
|
|
795
|
+
get :download
|
|
796
|
+
patch :refund
|
|
797
|
+
end
|
|
798
|
+
end
|
|
799
|
+
resources :deliveries, controller: 'orders/deliveries', only: [:index, :show, :create, :update, :destroy] do
|
|
800
|
+
member do
|
|
801
|
+
patch :mark_delivered
|
|
802
|
+
end
|
|
803
|
+
end
|
|
804
|
+
end
|
|
805
|
+
resources :returns, controller: 'orders/returns', only: [:index, :show, :create, :update] do
|
|
806
|
+
member do
|
|
807
|
+
patch :approve
|
|
808
|
+
patch :receive
|
|
809
|
+
patch :refund
|
|
810
|
+
patch :cancel
|
|
811
|
+
end
|
|
812
|
+
|
|
813
|
+
resources :labels, controller: 'orders/labels', only: [:index, :show, :create, :destroy] do
|
|
814
|
+
member do
|
|
815
|
+
get :download
|
|
816
|
+
patch :refund
|
|
817
|
+
end
|
|
818
|
+
end
|
|
819
|
+
end
|
|
820
|
+
resources :exchanges, controller: 'orders/exchanges', only: [:index, :show, :create, :update] do
|
|
821
|
+
member do
|
|
822
|
+
patch :approve
|
|
823
|
+
patch :receive
|
|
824
|
+
patch :fulfill
|
|
825
|
+
patch :cancel
|
|
826
|
+
end
|
|
827
|
+
end
|
|
828
|
+
resources :claims, controller: 'orders/claims', only: [:index, :show, :create, :update] do
|
|
829
|
+
member do
|
|
830
|
+
patch :approve
|
|
831
|
+
patch :resolve
|
|
832
|
+
patch :deny
|
|
833
|
+
patch :cancel
|
|
834
|
+
end
|
|
382
835
|
end
|
|
383
836
|
resources :payments, controller: 'orders/payments', only: [:index, :show, :create] do
|
|
384
837
|
member do
|
|
@@ -387,15 +840,270 @@ Spree::Core::Engine.add_routes do
|
|
|
387
840
|
end
|
|
388
841
|
end
|
|
389
842
|
resources :refunds, controller: 'orders/refunds', only: [:index, :create]
|
|
390
|
-
resources :
|
|
843
|
+
resources :tax_lines, controller: 'orders/tax_lines', only: [:index, :show]
|
|
844
|
+
# Read-only — the registration frozen onto the order at completion.
|
|
845
|
+
resource :tax_identifier, controller: 'orders/tax_identifiers', only: [:show]
|
|
846
|
+
resources :discounts, controller: 'orders/discounts', only: [:index, :show, :create, :update, :destroy]
|
|
847
|
+
resources :discount_codes, controller: 'orders/discount_codes', only: [:create, :destroy]
|
|
848
|
+
resources :fees, controller: 'orders/fees', only: [:index, :show, :create, :update, :destroy]
|
|
391
849
|
resources :gift_cards, controller: 'orders/gift_cards', only: [:create, :destroy]
|
|
392
850
|
resource :store_credits, controller: 'orders/store_credits', only: [:create, :destroy]
|
|
393
851
|
end
|
|
394
852
|
end
|
|
395
853
|
|
|
854
|
+
# The marketplace seller panel. A branch of its own rather than a
|
|
855
|
+
# narrowing of :admin — every endpoint here scope-fetches through
|
|
856
|
+
# current_seller, which is what makes cross-seller access impossible by
|
|
857
|
+
# construction rather than by rule.
|
|
858
|
+
namespace :seller do
|
|
859
|
+
# Everything unauthenticated lives under auth/, so the refresh
|
|
860
|
+
# cookie's path covers it and nothing else.
|
|
861
|
+
post 'auth/login', to: 'auth#create'
|
|
862
|
+
post 'auth/refresh', to: 'auth#refresh'
|
|
863
|
+
post 'auth/logout', to: 'auth#logout'
|
|
864
|
+
get 'auth/providers', to: 'auth#providers'
|
|
865
|
+
|
|
866
|
+
# Public invitation acceptance — unauthenticated; the prefixed ID +
|
|
867
|
+
# token in the emailed link are the credential.
|
|
868
|
+
get 'auth/invitations/:id/lookup', to: 'invitation_acceptances#lookup'
|
|
869
|
+
post 'auth/invitations/:id/accept', to: 'invitation_acceptances#accept'
|
|
870
|
+
|
|
871
|
+
# Public password reset — unauthenticated; the emailed token is the
|
|
872
|
+
# credential. Under `auth/` so the refresh cookie issued on success
|
|
873
|
+
# shares its path with `/auth/refresh`.
|
|
874
|
+
post 'auth/password_resets', to: 'password_resets#create'
|
|
875
|
+
patch 'auth/password_resets/:id', to: 'password_resets#update'
|
|
876
|
+
|
|
877
|
+
get 'me', to: 'me#show'
|
|
878
|
+
|
|
879
|
+
# Singular: the seller in play is always `current_seller`.
|
|
880
|
+
resource :profile, only: [:show, :update], controller: 'profile'
|
|
881
|
+
|
|
882
|
+
# The seller's own registrations — a collection, like a company's: a
|
|
883
|
+
# business trading in several regimes holds one in each.
|
|
884
|
+
resources :tax_identifiers, only: [:index, :create, :update, :destroy],
|
|
885
|
+
controller: 'tax_identifiers' do
|
|
886
|
+
member do
|
|
887
|
+
post :validate
|
|
888
|
+
end
|
|
889
|
+
end
|
|
890
|
+
|
|
891
|
+
resources :team, only: [:index, :create, :destroy], controller: 'team'
|
|
892
|
+
|
|
893
|
+
# Creating an invitation is hiring, so it lives on `team`; chasing or
|
|
894
|
+
# withdrawing one is bookkeeping on the offer.
|
|
895
|
+
resources :invitations, only: [:index, :destroy], controller: 'invitations' do
|
|
896
|
+
member do
|
|
897
|
+
patch :resend
|
|
898
|
+
end
|
|
899
|
+
end
|
|
900
|
+
|
|
901
|
+
resources :products, only: [:index, :show, :create, :update, :destroy] do
|
|
902
|
+
# Status moves are actions, not an attribute: putting a product on
|
|
903
|
+
# sale is the marketplace's call, so a seller asks rather than sets.
|
|
904
|
+
member do
|
|
905
|
+
patch :submit
|
|
906
|
+
patch :draft
|
|
907
|
+
patch :archive
|
|
908
|
+
end
|
|
909
|
+
|
|
910
|
+
# The same three moves over a selection. Only the ones a seller may
|
|
911
|
+
# make alone: there is no bulk route onto `active`, because reaching
|
|
912
|
+
# it is the operator's decision on one listing at a time.
|
|
913
|
+
collection do
|
|
914
|
+
post :bulk_submit
|
|
915
|
+
post :bulk_status_update
|
|
916
|
+
delete :bulk_destroy
|
|
917
|
+
end
|
|
918
|
+
end
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
# What this seller has sold. Cancelling is a member action because it
|
|
922
|
+
# is a workflow with its own arguments, and fulfilling is nested: a
|
|
923
|
+
# parcel means nothing outside the order it belongs to.
|
|
924
|
+
#
|
|
925
|
+
# No `update`: an order is created by a shopper checking out and its
|
|
926
|
+
# terms are the marketplace's, so the branch routes no general write.
|
|
927
|
+
# Correcting a delivery address is the one exception a merchant of
|
|
928
|
+
# record needs, and it is its own named action rather than a PATCH
|
|
929
|
+
# that would accept whatever the order serializer happens to permit.
|
|
930
|
+
resources :orders, only: [:index, :show] do
|
|
931
|
+
member do
|
|
932
|
+
patch :cancel
|
|
933
|
+
patch :address
|
|
934
|
+
end
|
|
935
|
+
|
|
936
|
+
# Singular: an order has one set of notes, so they are a resource to
|
|
937
|
+
# read and update rather than a verb on the order.
|
|
938
|
+
resource :notes, only: [:show, :update], controller: 'orders/notes'
|
|
939
|
+
|
|
940
|
+
# No `mark_delivered`: that a parcel arrived is the buyer's word,
|
|
941
|
+
# not the sender's, so confirming receipt stays with the operator
|
|
942
|
+
# and the carrier feed.
|
|
943
|
+
resources :fulfillments, only: [:index, :show, :update], controller: 'orders/fulfillments' do
|
|
944
|
+
member do
|
|
945
|
+
patch :fulfill
|
|
946
|
+
patch :cancel
|
|
947
|
+
patch :split
|
|
948
|
+
end
|
|
949
|
+
|
|
950
|
+
# A parcel's consignments and its postage. Both hang off the
|
|
951
|
+
# fulfillment because that is what actually travels.
|
|
952
|
+
resources :deliveries, controller: 'orders/deliveries', only: [:index, :show, :create, :update, :destroy]
|
|
953
|
+
resources :labels, controller: 'orders/labels', only: [:index, :show, :create, :destroy] do
|
|
954
|
+
member do
|
|
955
|
+
get :download
|
|
956
|
+
end
|
|
957
|
+
end
|
|
958
|
+
end
|
|
959
|
+
|
|
960
|
+
# Putting a sale right. The seller is merchant of record for their
|
|
961
|
+
# own child order, so taking the goods back and giving the money
|
|
962
|
+
# back are theirs (docs/plans/6.0-seller-order-management.md).
|
|
963
|
+
# Every status move is its own action, because each carries
|
|
964
|
+
# arguments of its own — receiving records what actually arrived,
|
|
965
|
+
# refunding names a method and an amount.
|
|
966
|
+
resources :returns, only: [:index, :show, :create], controller: 'orders/returns' do
|
|
967
|
+
member do
|
|
968
|
+
patch :approve
|
|
969
|
+
patch :receive
|
|
970
|
+
patch :refund
|
|
971
|
+
patch :cancel
|
|
972
|
+
end
|
|
973
|
+
end
|
|
974
|
+
|
|
975
|
+
resources :exchanges, only: [:index, :show, :create], controller: 'orders/exchanges' do
|
|
976
|
+
member do
|
|
977
|
+
patch :approve
|
|
978
|
+
patch :receive
|
|
979
|
+
patch :fulfill
|
|
980
|
+
patch :cancel
|
|
981
|
+
end
|
|
982
|
+
end
|
|
983
|
+
|
|
984
|
+
resources :claims, only: [:index, :show, :create], controller: 'orders/claims' do
|
|
985
|
+
member do
|
|
986
|
+
patch :approve
|
|
987
|
+
patch :resolve
|
|
988
|
+
patch :deny
|
|
989
|
+
patch :cancel
|
|
990
|
+
end
|
|
991
|
+
end
|
|
992
|
+
end
|
|
993
|
+
|
|
994
|
+
# The marketplace's own vocabularies. Read-only: a seller picks a
|
|
995
|
+
# reason, the operator decides what the reasons are.
|
|
996
|
+
resources :return_reasons, only: [:index]
|
|
997
|
+
resources :claim_reasons, only: [:index]
|
|
998
|
+
resources :order_cancellation_reasons, only: [:index]
|
|
999
|
+
|
|
1000
|
+
# Registry data — which carriers a tracking number can be pinned to.
|
|
1001
|
+
resources :tracking_carriers, only: [:index]
|
|
1002
|
+
|
|
1003
|
+
resources :direct_uploads, only: [:create]
|
|
1004
|
+
|
|
1005
|
+
# CSV of what this seller sold, or of their catalogue. Created, polled
|
|
1006
|
+
# and downloaded — no index, since a seller has no history page to
|
|
1007
|
+
# list, and no destroy, since retention is the marketplace's business.
|
|
1008
|
+
resources :exports, only: [:create, :show] do
|
|
1009
|
+
member do
|
|
1010
|
+
get :download
|
|
1011
|
+
end
|
|
1012
|
+
end
|
|
1013
|
+
|
|
1014
|
+
# Bulk-listing a catalog by CSV. The operator's pipeline, narrowed to
|
|
1015
|
+
# this seller: rows may only resolve onto their own products, and the
|
|
1016
|
+
# products they create are theirs and land as drafts for review
|
|
1017
|
+
# (docs/plans/5.6-admin-spa-csv-import.md).
|
|
1018
|
+
resources :imports, only: [:index, :show, :create, :destroy] do
|
|
1019
|
+
collection do
|
|
1020
|
+
get :template
|
|
1021
|
+
get :example
|
|
1022
|
+
end
|
|
1023
|
+
member do
|
|
1024
|
+
patch :complete_mapping
|
|
1025
|
+
patch :retry_failed_rows
|
|
1026
|
+
get :download
|
|
1027
|
+
end
|
|
1028
|
+
resources :rows, only: [:index], controller: 'import_rows'
|
|
1029
|
+
end
|
|
1030
|
+
|
|
1031
|
+
# The types a seller may list against. Read only — defining a type is
|
|
1032
|
+
# the operator's (docs/plans/6.0-seller-product-submission.md).
|
|
1033
|
+
resources :product_types, only: [:index, :show]
|
|
1034
|
+
|
|
1035
|
+
# The marketplace's delivery vocabulary, for the product form's picker.
|
|
1036
|
+
# Read only: a seller assigns a profile, never creates one
|
|
1037
|
+
# (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
|
|
1038
|
+
resources :delivery_profiles, only: [:index]
|
|
1039
|
+
|
|
1040
|
+
# The marketplace's zones, for the destination picker on a seller's
|
|
1041
|
+
# own method. Read only for the same reason profiles are: where the
|
|
1042
|
+
# marketplace ships is its own decision
|
|
1043
|
+
# (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
|
|
1044
|
+
resources :delivery_zones, only: [:index]
|
|
1045
|
+
|
|
1046
|
+
# How this seller ships. The listing carries the marketplace methods
|
|
1047
|
+
# shared with sellers alongside the seller's own; only the seller's
|
|
1048
|
+
# own can be written.
|
|
1049
|
+
resources :delivery_methods do
|
|
1050
|
+
collection do
|
|
1051
|
+
get :calculators
|
|
1052
|
+
get :rule_types
|
|
1053
|
+
end
|
|
1054
|
+
end
|
|
1055
|
+
|
|
1056
|
+
# What this seller packs into. The listing carries the marketplace's
|
|
1057
|
+
# own packaging alongside the seller's; only the seller's own can be
|
|
1058
|
+
# written (docs/plans/6.0-seller-package-types.md).
|
|
1059
|
+
resources :package_types
|
|
1060
|
+
|
|
1061
|
+
# No destroy: a location holds stock levels and is named on historical
|
|
1062
|
+
# fulfillments, so a seller retires one by deactivating it.
|
|
1063
|
+
resources :stock_locations, only: [:index, :show, :create, :update]
|
|
1064
|
+
|
|
1065
|
+
resources :countries, only: [:index]
|
|
1066
|
+
|
|
1067
|
+
# The seller's own policy documents.
|
|
1068
|
+
resources :policies
|
|
1069
|
+
|
|
1070
|
+
# The seller's own books, read-only: where they stand, what each
|
|
1071
|
+
# order earned them, and what has been sent. Written by fulfilment
|
|
1072
|
+
# and the sweep, never by the seller.
|
|
1073
|
+
resources :balances, only: [:index]
|
|
1074
|
+
resources :transfers, only: [:index, :show]
|
|
1075
|
+
resources :payouts, only: [:index, :show]
|
|
1076
|
+
|
|
1077
|
+
# Singular: the checklist is always `current_seller`'s.
|
|
1078
|
+
resource :onboarding, only: [:show], controller: 'onboarding' do
|
|
1079
|
+
post :submit_for_review
|
|
1080
|
+
# A fresh link to the payout provider's own onboarding. A POST
|
|
1081
|
+
# because asking for one creates the account at the provider if the
|
|
1082
|
+
# seller has none.
|
|
1083
|
+
post :payout_account
|
|
1084
|
+
end
|
|
1085
|
+
|
|
1086
|
+
resources :requirements, only: [] do
|
|
1087
|
+
resources :submissions, only: [:create], controller: 'requirement_submissions'
|
|
1088
|
+
end
|
|
1089
|
+
resources :requirement_submissions, only: [] do
|
|
1090
|
+
member do
|
|
1091
|
+
get :download
|
|
1092
|
+
end
|
|
1093
|
+
end
|
|
1094
|
+
end
|
|
1095
|
+
|
|
396
1096
|
# Webhooks (outside of store namespace — no API key authentication)
|
|
397
1097
|
namespace :webhooks do
|
|
398
1098
|
post 'payments/:payment_method_id', to: 'payments#create', as: :payment_webhook
|
|
1099
|
+
post 'fulfillments/:integration_id', to: 'fulfillments#create', as: :fulfillment_webhook
|
|
1100
|
+
# Marketplace events about sellers rather than about a payment —
|
|
1101
|
+
# whether a seller may be paid, and whether a payout reached their
|
|
1102
|
+
# bank. A separate endpoint because providers scope these separately:
|
|
1103
|
+
# events originating in a seller's own account arrive on a different
|
|
1104
|
+
# subscription, with a different signing secret, than the
|
|
1105
|
+
# marketplace's own payment events.
|
|
1106
|
+
post 'payouts/:payment_method_id', to: 'payouts#create', as: :payout_webhook
|
|
399
1107
|
end
|
|
400
1108
|
end
|
|
401
1109
|
end
|