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
|
@@ -97,15 +97,6 @@ module Spree
|
|
|
97
97
|
},
|
|
98
98
|
required: %w[allow actions subjects has_conditions]
|
|
99
99
|
},
|
|
100
|
-
MeResponse: {
|
|
101
|
-
type: :object,
|
|
102
|
-
description: 'Current admin user profile and serialized permissions',
|
|
103
|
-
properties: {
|
|
104
|
-
user: { '$ref' => '#/components/schemas/AdminUser' },
|
|
105
|
-
permissions: { type: :array, items: { '$ref' => '#/components/schemas/PermissionRule' } }
|
|
106
|
-
},
|
|
107
|
-
required: %w[user permissions]
|
|
108
|
-
},
|
|
109
100
|
ImportSchemaField: {
|
|
110
101
|
type: :object,
|
|
111
102
|
description: 'A canonical column of an import type, including per-store custom field columns',
|
|
@@ -132,7 +123,13 @@ module Spree
|
|
|
132
123
|
code: { type: :string, description: 'Machine-readable warning code', example: 'line_item_removed' },
|
|
133
124
|
message: { type: :string, description: 'Human-readable warning message', example: 'Blue T-Shirt was removed because it was sold out' },
|
|
134
125
|
line_item_id: { type: :string, nullable: true, description: 'Prefixed line item ID (when applicable)', example: 'li_abc123' },
|
|
135
|
-
variant_id: { type: :string, nullable: true, description: 'Prefixed variant ID (when applicable)', example: 'variant_abc123' }
|
|
126
|
+
variant_id: { type: :string, nullable: true, description: 'Prefixed variant ID (when applicable)', example: 'variant_abc123' },
|
|
127
|
+
item_index: {
|
|
128
|
+
type: :integer,
|
|
129
|
+
nullable: true,
|
|
130
|
+
description: 'Position in the submitted items array, for warnings raised while applying a batch of item changes',
|
|
131
|
+
example: 1
|
|
132
|
+
}
|
|
136
133
|
},
|
|
137
134
|
required: %w[code message]
|
|
138
135
|
},
|
|
@@ -215,6 +212,20 @@ module Spree
|
|
|
215
212
|
def admin_schemas
|
|
216
213
|
schemas = common_schemas
|
|
217
214
|
|
|
215
|
+
# Only here: it points at `AdminUser`, which no other branch
|
|
216
|
+
# publishes — the store has no such user and a seller's team member
|
|
217
|
+
# is `TeamMember`. Declared in the shared set it became an
|
|
218
|
+
# unresolvable `$ref` in both of their specs.
|
|
219
|
+
schemas[:MeResponse] = {
|
|
220
|
+
type: :object,
|
|
221
|
+
description: 'Current admin user profile and serialized permissions',
|
|
222
|
+
properties: {
|
|
223
|
+
user: { '$ref' => '#/components/schemas/AdminUser' },
|
|
224
|
+
permissions: { type: :array, items: { '$ref' => '#/components/schemas/PermissionRule' } }
|
|
225
|
+
},
|
|
226
|
+
required: %w[user permissions]
|
|
227
|
+
}
|
|
228
|
+
|
|
218
229
|
# Override AuthResponse for admin: reference AdminUser, and drop refresh_token from the body
|
|
219
230
|
# (admin sets the refresh token as an HttpOnly cookie, not in the JSON response).
|
|
220
231
|
schemas[:AuthResponse] = {
|
|
@@ -235,6 +246,160 @@ module Spree
|
|
|
235
246
|
schemas
|
|
236
247
|
end
|
|
237
248
|
|
|
249
|
+
# Get all seller schemas (Typelizer + common).
|
|
250
|
+
#
|
|
251
|
+
# The seller branch has no API-key credential, so its AuthResponse is
|
|
252
|
+
# neither the store's nor the admin's: signing in returns the JWT, the
|
|
253
|
+
# team member who signed in, and the sellers they may act for — the
|
|
254
|
+
# panel cannot make another request until it has picked one.
|
|
255
|
+
def seller_schemas
|
|
256
|
+
schemas = common_schemas
|
|
257
|
+
|
|
258
|
+
schemas[:AuthResponse] = {
|
|
259
|
+
type: :object,
|
|
260
|
+
properties: {
|
|
261
|
+
token: { type: :string, description: 'JWT access token, `seller_api` audience' },
|
|
262
|
+
user: { '$ref' => '#/components/schemas/TeamMember' },
|
|
263
|
+
sellers: {
|
|
264
|
+
type: :array,
|
|
265
|
+
description: 'The sellers this user may act for. Pick one and send its `id` as `X-Spree-Seller-Id` on every subsequent request.',
|
|
266
|
+
items: { '$ref' => '#/components/schemas/SellerSummary' }
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
required: %w[token user sellers]
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
schemas.merge!(seller_common_schemas)
|
|
273
|
+
|
|
274
|
+
begin
|
|
275
|
+
schemas.merge!(typelizer_schemas(:seller))
|
|
276
|
+
rescue StandardError => e
|
|
277
|
+
Rails.logger.warn "Failed to load Typelizer seller schemas: #{e.message}"
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
schemas
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Hand-written shapes the seller branch answers with that no serializer
|
|
284
|
+
# produces — bespoke controller hashes rather than Alba output.
|
|
285
|
+
def seller_common_schemas
|
|
286
|
+
{
|
|
287
|
+
SellerSummary: {
|
|
288
|
+
type: :object,
|
|
289
|
+
description: 'A seller the signed-in user may act for',
|
|
290
|
+
properties: {
|
|
291
|
+
id: { type: :string, description: 'Prefixed seller ID — send as `X-Spree-Seller-Id`', example: 'sel_abc123' },
|
|
292
|
+
name: { type: :string, example: 'Acme Supplies' },
|
|
293
|
+
status: { type: :string, example: 'approved', description: 'Seller lifecycle status' }
|
|
294
|
+
},
|
|
295
|
+
required: %w[id name status]
|
|
296
|
+
},
|
|
297
|
+
SellerMeSummary: {
|
|
298
|
+
type: :object,
|
|
299
|
+
description: 'A seller the signed-in user may act for, as `/me` reports it — the login response carries the same fields without `slug`.',
|
|
300
|
+
properties: {
|
|
301
|
+
id: { type: :string, description: 'Prefixed seller ID — send as `X-Spree-Seller-Id`', example: 'sel_abc123' },
|
|
302
|
+
name: { type: :string, example: 'Acme Supplies' },
|
|
303
|
+
slug: { type: :string, example: 'acme-supplies' },
|
|
304
|
+
status: { type: :string, example: 'approved', description: 'Seller lifecycle status' }
|
|
305
|
+
},
|
|
306
|
+
required: %w[id name slug status]
|
|
307
|
+
},
|
|
308
|
+
SellerMeResponse: {
|
|
309
|
+
type: :object,
|
|
310
|
+
description: 'The signed-in user, the sellers they may act for, and what they may do on the selected one',
|
|
311
|
+
properties: {
|
|
312
|
+
user: { '$ref' => '#/components/schemas/TeamMember' },
|
|
313
|
+
sellers: { type: :array, items: { '$ref' => '#/components/schemas/SellerMeSummary' } },
|
|
314
|
+
permissions: { type: :array, items: { '$ref' => '#/components/schemas/PermissionRule' } },
|
|
315
|
+
permission_keys: {
|
|
316
|
+
type: :array,
|
|
317
|
+
items: { type: :string },
|
|
318
|
+
description: 'Permission keys on the selected seller. Empty until `X-Spree-Seller-Id` names one — capability is per seller.',
|
|
319
|
+
example: %w[read_products write_products]
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
required: %w[user sellers permissions permission_keys]
|
|
323
|
+
},
|
|
324
|
+
OnboardingProgress: {
|
|
325
|
+
type: :object,
|
|
326
|
+
description: <<~DESC,
|
|
327
|
+
How far along the checklist is — not how close to approval, since
|
|
328
|
+
optional requirements count towards it too.
|
|
329
|
+
|
|
330
|
+
Deliberately just the two counts. A percentage is arithmetic over
|
|
331
|
+
them, which a client can do and which would otherwise be a second
|
|
332
|
+
definition of the same fact.
|
|
333
|
+
DESC
|
|
334
|
+
properties: {
|
|
335
|
+
done: { type: :integer, example: 3 },
|
|
336
|
+
total: { type: :integer, example: 5 }
|
|
337
|
+
},
|
|
338
|
+
required: %w[done total]
|
|
339
|
+
},
|
|
340
|
+
SellerOnboardingResponse: {
|
|
341
|
+
type: :object,
|
|
342
|
+
description: "What the marketplace asks of this seller before it will admit them",
|
|
343
|
+
properties: {
|
|
344
|
+
status: { type: :string, example: 'onboarding', description: "The seller's lifecycle status" },
|
|
345
|
+
progress: { '$ref' => '#/components/schemas/OnboardingProgress' },
|
|
346
|
+
requirements: { type: :array, items: { '$ref' => '#/components/schemas/RequirementStatus' } }
|
|
347
|
+
},
|
|
348
|
+
required: %w[status progress requirements]
|
|
349
|
+
},
|
|
350
|
+
SellerCountry: {
|
|
351
|
+
type: :object,
|
|
352
|
+
description: "A country as the panel's address forms need it",
|
|
353
|
+
properties: {
|
|
354
|
+
iso: { type: :string, example: 'US' },
|
|
355
|
+
iso3: { type: :string, example: 'USA' },
|
|
356
|
+
name: { type: :string, example: 'United States' },
|
|
357
|
+
states_required: { type: :boolean, example: true },
|
|
358
|
+
zipcode_required: { type: :boolean, example: true },
|
|
359
|
+
states: {
|
|
360
|
+
type: :array,
|
|
361
|
+
items: {
|
|
362
|
+
type: :object,
|
|
363
|
+
properties: {
|
|
364
|
+
abbr: { type: :string, example: 'CA' },
|
|
365
|
+
name: { type: :string, example: 'California' }
|
|
366
|
+
},
|
|
367
|
+
required: %w[abbr name]
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
required: %w[iso iso3 name]
|
|
372
|
+
},
|
|
373
|
+
DirectUploadResponse: {
|
|
374
|
+
type: :object,
|
|
375
|
+
description: 'A presigned upload target. PUT the file to `direct_upload.url` with the given headers, then send `signed_id` as the submission\'s `file`.',
|
|
376
|
+
properties: {
|
|
377
|
+
signed_id: { type: :string, description: 'Send this as a submission\'s `file`', example: 'eyJfcmFpbHMiOnsibWVzc2FnZSI6...' },
|
|
378
|
+
direct_upload: {
|
|
379
|
+
type: :object,
|
|
380
|
+
properties: {
|
|
381
|
+
url: { type: :string, example: 'https://storage.example.com/uploads/abc123' },
|
|
382
|
+
headers: { type: :object, additionalProperties: { type: :string } }
|
|
383
|
+
},
|
|
384
|
+
required: %w[url headers]
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
required: %w[signed_id direct_upload]
|
|
388
|
+
},
|
|
389
|
+
AuthProvidersResponse: {
|
|
390
|
+
type: :object,
|
|
391
|
+
description: 'Sign-in methods this marketplace offers sellers, for the login page',
|
|
392
|
+
properties: {
|
|
393
|
+
providers: {
|
|
394
|
+
type: :array,
|
|
395
|
+
items: { type: :object, additionalProperties: true }
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
required: %w[providers]
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
end
|
|
402
|
+
|
|
238
403
|
private
|
|
239
404
|
|
|
240
405
|
def typelizer_schemas(writer_name)
|
|
@@ -332,7 +497,7 @@ module Spree
|
|
|
332
497
|
rule = schemas['PromotionRule'] || schemas[:PromotionRule]
|
|
333
498
|
return unless rule
|
|
334
499
|
|
|
335
|
-
patch_id_arrays(rule, %w[product_ids category_ids customer_ids])
|
|
500
|
+
patch_id_arrays(rule, %w[product_ids category_ids customer_ids option_value_ids])
|
|
336
501
|
patch_preference_schema(rule)
|
|
337
502
|
end
|
|
338
503
|
|
|
@@ -419,13 +584,14 @@ module Spree
|
|
|
419
584
|
|
|
420
585
|
# Typelizer adds nil to enum arrays for nullable fields.
|
|
421
586
|
# OpenAPI 3.0 handles nullability via `nullable: true`, so the nil entry is redundant
|
|
422
|
-
# and causes issues with code generators.
|
|
587
|
+
# and causes issues with code generators. The array is often a model's
|
|
588
|
+
# frozen constant (`Spree::Fee::KINDS`), so it is replaced, never mutated.
|
|
423
589
|
def strip_null_from_enums(schema)
|
|
424
590
|
properties = schema[:properties] || {}
|
|
425
591
|
properties.each_value do |prop|
|
|
426
592
|
next unless prop.is_a?(Hash) && prop[:enum].is_a?(Array)
|
|
427
593
|
|
|
428
|
-
prop[:enum].
|
|
594
|
+
prop[:enum] = prop[:enum].compact
|
|
429
595
|
end
|
|
430
596
|
end
|
|
431
597
|
|
|
@@ -34,7 +34,13 @@ shared_context 'API v3 Store' do
|
|
|
34
34
|
let(:bearer_headers) { api_key_headers.merge('Authorization' => "Bearer #{jwt_token}") }
|
|
35
35
|
|
|
36
36
|
before do
|
|
37
|
+
# Stubbed on both branch anchors, not just the shared base — the anchors
|
|
38
|
+
# define their own `current_store` (KeyStoreContext), which would shadow
|
|
39
|
+
# a stub installed on the base class. Specs stub methods on this exact
|
|
40
|
+
# `store` instance, so resolution must return it by identity.
|
|
37
41
|
allow_any_instance_of(Spree::Api::V3::BaseController).to receive(:current_store).and_return(store)
|
|
42
|
+
allow_any_instance_of(Spree::Api::V3::Store::BaseController).to receive(:current_store).and_return(store)
|
|
43
|
+
allow_any_instance_of(Spree::Api::V3::Store::ResourceController).to receive(:current_store).and_return(store)
|
|
38
44
|
end
|
|
39
45
|
end
|
|
40
46
|
|
|
@@ -60,7 +66,11 @@ shared_context 'API v3 Admin' do
|
|
|
60
66
|
let(:bearer_headers) { api_key_headers.merge('Authorization' => "Bearer #{admin_jwt_token}") }
|
|
61
67
|
|
|
62
68
|
before do
|
|
69
|
+
# See the 'API v3 Store' context — the admin anchors define their own
|
|
70
|
+
# `current_store` (Admin::StoreContext), which shadows a base-class stub.
|
|
63
71
|
allow_any_instance_of(Spree::Api::V3::BaseController).to receive(:current_store).and_return(store)
|
|
72
|
+
allow_any_instance_of(Spree::Api::V3::Admin::BaseController).to receive(:current_store).and_return(store)
|
|
73
|
+
allow_any_instance_of(Spree::Api::V3::Admin::ResourceController).to receive(:current_store).and_return(store)
|
|
64
74
|
end
|
|
65
75
|
end
|
|
66
76
|
|
|
@@ -70,23 +80,44 @@ shared_context 'API v3 Admin authenticated' do
|
|
|
70
80
|
let(:headers) { bearer_headers }
|
|
71
81
|
end
|
|
72
82
|
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
# The marketplace seller panel. Deliberately no `current_seller` stub: the
|
|
84
|
+
# header and the membership lookup behind it are what these specs exist to
|
|
85
|
+
# exercise, so stubbing them would test nothing.
|
|
86
|
+
shared_context 'API v3 Seller' do
|
|
87
|
+
let(:store) { @default_store || create(:store, default: true) }
|
|
88
|
+
let(:seller) { create(:seller, :approved, store: store) }
|
|
89
|
+
let(:seller_role) { create(:role, name: 'Seller', resource: seller, permissions: %w[write_products]) }
|
|
90
|
+
let(:seller_user) do
|
|
91
|
+
create(:admin_user, :without_admin_role).tap { |user| seller.add_user(user, seller_role) }
|
|
92
|
+
end
|
|
80
93
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
let(:seller_jwt_token) do
|
|
95
|
+
Spree::Api::V3::TestingSupport.generate_jwt(
|
|
96
|
+
seller_user, audience: Spree::Api::V3::JwtAuthentication::JWT_AUDIENCE_SELLER
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
let(:seller_headers) do
|
|
100
|
+
{ 'Authorization' => "Bearer #{seller_jwt_token}", 'X-Spree-Seller-Id' => seller.prefixed_id }
|
|
87
101
|
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
shared_context 'API v3 Seller authenticated' do
|
|
105
|
+
include_context 'API v3 Seller'
|
|
106
|
+
|
|
107
|
+
let(:headers) { seller_headers }
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Authenticates as an admin whose ability is restricted to specific catalog
|
|
111
|
+
# permission keys, so authorization specs can assert what a limited role can
|
|
112
|
+
# and cannot do. Define `custom_permissions` (an array of catalog keys, e.g.
|
|
113
|
+
# `%w[read_orders write_products]`) in the including example. Roles are data,
|
|
114
|
+
# so nothing global is mutated.
|
|
115
|
+
shared_context 'API v3 Admin with custom permissions' do
|
|
116
|
+
include_context 'API v3 Admin'
|
|
88
117
|
|
|
89
|
-
let(:
|
|
118
|
+
let(:custom_permissions) { [] }
|
|
119
|
+
# A role belongs to what it governs, so it must be the store under test.
|
|
120
|
+
let(:custom_role) { create(:role, name: 'limited', permissions: custom_permissions, resource: store) }
|
|
90
121
|
let(:custom_admin) { create(:admin_user, :without_admin_role) }
|
|
91
122
|
let(:headers) do
|
|
92
123
|
{ 'Authorization' => "Bearer #{Spree::Api::V3::TestingSupport.generate_jwt(custom_admin, audience: Spree::Api::V3::JwtAuthentication::JWT_AUDIENCE_ADMIN)}" }
|
|
@@ -94,7 +125,6 @@ shared_context 'API v3 Admin with custom permissions' do
|
|
|
94
125
|
|
|
95
126
|
before do
|
|
96
127
|
custom_admin.spree_roles << custom_role
|
|
97
|
-
Spree.permissions.assign(:limited, custom_permission_set)
|
|
98
128
|
end
|
|
99
129
|
end
|
|
100
130
|
|
data/lib/spree/api.rb
CHANGED
|
@@ -4,6 +4,7 @@ require 'alba'
|
|
|
4
4
|
require 'oj'
|
|
5
5
|
require 'typelizer'
|
|
6
6
|
require 'typelizer/proc_resource_resolution'
|
|
7
|
+
require 'typelizer/open_enums'
|
|
7
8
|
|
|
8
9
|
module Spree
|
|
9
10
|
module Api
|
|
@@ -12,10 +13,10 @@ module Spree
|
|
|
12
13
|
# API dependencies accessor for cleaner access to API dependencies
|
|
13
14
|
#
|
|
14
15
|
# @example Getting a dependency (returns resolved class)
|
|
15
|
-
# Spree.api.
|
|
16
|
+
# Spree.api.product_serializer.render(product)
|
|
16
17
|
#
|
|
17
18
|
# @example Setting a dependency
|
|
18
|
-
# Spree.api.
|
|
19
|
+
# Spree.api.product_serializer = MyApp::ProductSerializer
|
|
19
20
|
#
|
|
20
21
|
# @return [Spree::ApiDependenciesAccessor] the API dependencies accessor
|
|
21
22
|
def self.api
|
|
@@ -51,8 +52,13 @@ module Spree
|
|
|
51
52
|
def api_dependency?(name)
|
|
52
53
|
return false unless defined?(Spree::Api::Dependencies)
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
dependencies = Spree::Api::Dependencies.class
|
|
56
|
+
|
|
57
|
+
# Check V3, dynamically added V2, and the pre-rename names that forward
|
|
58
|
+
# to their replacement for one release.
|
|
59
|
+
dependencies::INJECTION_POINTS.include?(name) ||
|
|
60
|
+
(dependencies.const_defined?(:LEGACY_SERIALIZER_KEYS) &&
|
|
61
|
+
dependencies::LEGACY_SERIALIZER_KEYS.key?(name))
|
|
56
62
|
end
|
|
57
63
|
end
|
|
58
64
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Typelizer
|
|
2
|
+
# A `typelize` entry with `enum:` alone is a closed list — the right shape
|
|
3
|
+
# for values nothing outside core can grow (units, match policies). Adding
|
|
4
|
+
# `enum_type_name:` marks the list as one an extension may extend
|
|
5
|
+
# (`has_status` values, `Spree::Fee::KINDS`), and both generated contracts
|
|
6
|
+
# follow suit: the TypeScript type becomes a named, exported union that stays
|
|
7
|
+
# open, and the OpenAPI property becomes an open enum, so a client generated
|
|
8
|
+
# from either still accepts an added value while every built-in value stays
|
|
9
|
+
# documented and autocompletable.
|
|
10
|
+
module OpenEnums
|
|
11
|
+
module Property
|
|
12
|
+
def enum_definition(...)
|
|
13
|
+
definition = super
|
|
14
|
+
definition && "#{definition} | (string & {})"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module Schema
|
|
19
|
+
OPEN_ENUM_DESCRIPTION = 'The values listed are the built-in ones; extensions may add more.'.freeze
|
|
20
|
+
|
|
21
|
+
def inline_schema(definition, property, openapi_version:)
|
|
22
|
+
return super unless property.enum_type_name && property.enum.is_a?(Array) && !property.multi
|
|
23
|
+
|
|
24
|
+
open = { anyOf: [{ type: :string, enum: property.enum.compact }, { type: :string }] }
|
|
25
|
+
apply_nullable(open, property, openapi_version: openapi_version)
|
|
26
|
+
apply_metadata(open, property)
|
|
27
|
+
open[:description] ||= OPEN_ENUM_DESCRIPTION
|
|
28
|
+
open
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
Typelizer::Property.prepend(Typelizer::OpenEnums::Property)
|
|
35
|
+
Typelizer::OpenAPI.singleton_class.prepend(Typelizer::OpenEnums::Schema)
|