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
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# One product's quantity terms under a catalog — the grain the
|
|
6
|
+
# agreement editor states them at, over rows stored per variant.
|
|
7
|
+
class CatalogProductTermSerializer < V3::BaseSerializer
|
|
8
|
+
typelize product_id: :string, product_name: 'string | null',
|
|
9
|
+
minimum_order_quantity: ['number | null'],
|
|
10
|
+
order_multiple: ['number | null'],
|
|
11
|
+
mixed: :boolean
|
|
12
|
+
|
|
13
|
+
attribute :id do |term|
|
|
14
|
+
term.product.prefixed_id
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attribute :product_id do |term|
|
|
18
|
+
term.product.prefixed_id
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :product_name do |term|
|
|
22
|
+
term.product.name
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :minimum_order_quantity, &:minimum_order_quantity
|
|
26
|
+
attribute :order_multiple, &:order_multiple
|
|
27
|
+
|
|
28
|
+
# True when the product's variants carry different terms, so the
|
|
29
|
+
# editor shows "mixed" rather than claiming one variant's pair is
|
|
30
|
+
# the product's.
|
|
31
|
+
attribute :mixed do |term|
|
|
32
|
+
term.mixed?
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# One catalog's quantity terms for one variant. Carries enough of the
|
|
6
|
+
# variant to render the row without a second request — a merchant
|
|
7
|
+
# reading a terms table needs to know which SKU each line is about.
|
|
8
|
+
class CatalogQuantityRuleSerializer < V3::BaseSerializer
|
|
9
|
+
typelize variant_id: 'string | null', variant_sku: 'string | null',
|
|
10
|
+
product_name: 'string | null',
|
|
11
|
+
options_text: 'string | null',
|
|
12
|
+
minimum_order_quantity: ['number | null'],
|
|
13
|
+
order_multiple: ['number | null']
|
|
14
|
+
|
|
15
|
+
attributes :minimum_order_quantity, :order_multiple,
|
|
16
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :variant_id do |rule|
|
|
19
|
+
rule.variant&.prefixed_id
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :variant_sku do |rule|
|
|
23
|
+
rule.variant&.sku
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :product_name do |rule|
|
|
27
|
+
rule.variant&.name
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attribute :options_text do |rule|
|
|
31
|
+
rule.variant&.options_text.presence
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin-only: catalogs are merchandising configuration with no
|
|
6
|
+
# storefront surface — buyers see their effects, never the record.
|
|
7
|
+
class CatalogSerializer < V3::BaseSerializer
|
|
8
|
+
typelize name: :string, description: 'string | null',
|
|
9
|
+
active: :boolean, position: [:number, nullable: true],
|
|
10
|
+
products_count: :number, pricing_strategy: :string,
|
|
11
|
+
minimum_order_quantity: ['number | null'], order_multiple: ['number | null'],
|
|
12
|
+
metadata: 'Record<string, unknown> | null'
|
|
13
|
+
|
|
14
|
+
attributes :name, :description, :active, :position, :metadata,
|
|
15
|
+
:minimum_order_quantity, :order_multiple,
|
|
16
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :products_count do |catalog|
|
|
19
|
+
catalog.catalog_products.size
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# One word for how the agreement prices, so a listing can show it
|
|
23
|
+
# without expanding a price list for every row.
|
|
24
|
+
attributes :pricing_strategy
|
|
25
|
+
|
|
26
|
+
# Minimums are few (one per currency) and the card renders them
|
|
27
|
+
# inline, so they ride along rather than costing a second request.
|
|
28
|
+
many :order_minimums,
|
|
29
|
+
resource: proc { Spree.api.admin_catalog_order_minimum_serializer },
|
|
30
|
+
if: proc { expand?('order_minimums') }
|
|
31
|
+
|
|
32
|
+
# The owned list rides along so the agreement editor can render its
|
|
33
|
+
# pricing without a second request — the catalog page is where an
|
|
34
|
+
# owned list is edited (docs/plans/6.0-catalog-agreement-rework.md).
|
|
35
|
+
one :price_list,
|
|
36
|
+
resource: proc { Spree.api.admin_price_list_serializer },
|
|
37
|
+
if: proc { expand?('price_list') }
|
|
38
|
+
|
|
39
|
+
many :catalog_assignments, key: :assignments,
|
|
40
|
+
resource: proc { Spree.api.admin_catalog_assignment_serializer },
|
|
41
|
+
if: proc { expand?('assignments') }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -5,6 +5,8 @@ module Spree
|
|
|
5
5
|
# Admin API Category Serializer
|
|
6
6
|
# Full category data including admin-only fields
|
|
7
7
|
class CategorySerializer < V3::CategorySerializer
|
|
8
|
+
include Concerns::ExternalReferencesAttribute
|
|
9
|
+
|
|
8
10
|
include Spree::Api::V3::Admin::Translatable
|
|
9
11
|
|
|
10
12
|
typelize pretty_name: :string, lft: :number, rgt: :number, products_count: :number,
|
|
@@ -26,8 +28,7 @@ module Spree
|
|
|
26
28
|
resource: proc { Spree.api.admin_category_serializer },
|
|
27
29
|
if: proc { expand?('ancestors') }
|
|
28
30
|
|
|
29
|
-
many :
|
|
30
|
-
key: :custom_fields,
|
|
31
|
+
many :custom_fields,
|
|
31
32
|
resource: proc { Spree.api.admin_custom_field_serializer },
|
|
32
33
|
if: proc { expand?('custom_fields') }
|
|
33
34
|
end
|
|
@@ -6,12 +6,26 @@ module Spree
|
|
|
6
6
|
typelize store_id: :string,
|
|
7
7
|
preferred_order_routing_strategy: [:string, nullable: true],
|
|
8
8
|
preferred_storefront_access: [:string, nullable: true],
|
|
9
|
-
preferred_guest_checkout: [:boolean, nullable: true]
|
|
9
|
+
preferred_guest_checkout: [:boolean, nullable: true],
|
|
10
|
+
stock_location_ids: [:string, multi: true],
|
|
11
|
+
default_catalog_id: [:string, nullable: true]
|
|
10
12
|
|
|
11
13
|
attributes :preferred_order_routing_strategy,
|
|
12
14
|
:preferred_storefront_access,
|
|
13
15
|
:preferred_guest_checkout,
|
|
14
16
|
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
# Fulfillment-origin allowlist; empty means every store location
|
|
19
|
+
# serves this channel.
|
|
20
|
+
attribute :stock_location_ids do |record|
|
|
21
|
+
record.stock_locations.map(&:prefixed_id)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# When set, only the default catalog's products are visible on this
|
|
25
|
+
# channel; unset means every publication.
|
|
26
|
+
attribute :default_catalog_id do |record|
|
|
27
|
+
record.default_catalog&.prefixed_id
|
|
28
|
+
end
|
|
15
29
|
end
|
|
16
30
|
end
|
|
17
31
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Admin
|
|
7
|
+
class ClaimLineItemSerializer < V3::ClaimLineItemSerializer
|
|
8
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
9
|
+
|
|
10
|
+
one :variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('variant') }
|
|
11
|
+
one :replacement_variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('replacement_variant') }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Admin
|
|
7
|
+
class ClaimReasonSerializer < V3::ClaimReasonSerializer
|
|
8
|
+
typelize can_be_deleted: :boolean
|
|
9
|
+
|
|
10
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
11
|
+
|
|
12
|
+
# Lets the dashboard hide destructive controls instead of offering a
|
|
13
|
+
# delete that the model will refuse.
|
|
14
|
+
attribute :can_be_deleted do |reason|
|
|
15
|
+
reason.can_be_deleted?
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Admin
|
|
7
|
+
class ClaimSerializer < V3::ClaimSerializer
|
|
8
|
+
typelize memo: [:string, nullable: true],
|
|
9
|
+
metadata: 'Record<string, unknown>',
|
|
10
|
+
created_by_id: [:string, nullable: true]
|
|
11
|
+
|
|
12
|
+
attributes :memo, :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
13
|
+
|
|
14
|
+
attribute :created_by_id do |claim|
|
|
15
|
+
claim.created_by&.prefixed_id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
many :claim_line_items,
|
|
19
|
+
resource: proc { Spree.api.admin_claim_line_item_serializer },
|
|
20
|
+
if: proc { expand?('claim_line_items') }
|
|
21
|
+
|
|
22
|
+
one :reason, resource: proc { Spree.api.admin_claim_reason_serializer }, if: proc { expand?('reason') }
|
|
23
|
+
one :order, resource: proc { Spree.api.admin_order_serializer }, if: proc { expand?('order') }
|
|
24
|
+
many :refunds, resource: proc { Spree.api.admin_refund_serializer }, if: proc { expand?('refunds') }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Serializes Spree::CollectionRule (and its STI subclasses) for the
|
|
6
|
+
# admin collection editor's `rules` association. Admin-only — automatic
|
|
7
|
+
# collection rules are never exposed by the Store API. `type` is the
|
|
8
|
+
# wire shorthand (e.g. "tag"), matching every other typed-rule
|
|
9
|
+
# serializer and what the writer accepts.
|
|
10
|
+
class CollectionRuleSerializer < BaseSerializer
|
|
11
|
+
typelize type: [:string, comment: 'Rule type. Built-in: tag, available_on, sale. Extensions may register more.'], value: [:string, nullable: true], match_policy: [:string, enum: Spree::CollectionRule::MATCH_POLICIES]
|
|
12
|
+
|
|
13
|
+
attributes :value, :match_policy
|
|
14
|
+
|
|
15
|
+
attribute :type do |rule|
|
|
16
|
+
rule.class.api_type
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Collection serializer — extends the customer-facing serializer
|
|
6
|
+
# with the merchandising config (automatic / rules_match_policy / rules)
|
|
7
|
+
# and back-office fields (metadata, timestamps, admin custom fields).
|
|
8
|
+
class CollectionSerializer < V3::CollectionSerializer
|
|
9
|
+
include Spree::Api::V3::Admin::Translatable
|
|
10
|
+
|
|
11
|
+
typelize automatic: :boolean, rules_match_policy: [:string, enum: Spree::Collection::RULES_MATCH_POLICIES],
|
|
12
|
+
metadata: 'Record<string, unknown>'
|
|
13
|
+
|
|
14
|
+
attributes :automatic, :rules_match_policy, :metadata,
|
|
15
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
16
|
+
|
|
17
|
+
many :rules,
|
|
18
|
+
resource: proc { Spree.api.admin_collection_rule_serializer },
|
|
19
|
+
if: proc { expand?('rules') }
|
|
20
|
+
|
|
21
|
+
# Override inherited custom_fields to use the admin serializer.
|
|
22
|
+
many :custom_fields,
|
|
23
|
+
resource: proc { Spree.api.admin_custom_field_serializer },
|
|
24
|
+
if: proc { expand?('custom_fields') }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Serializes Spree::CommissionLine — what one sale actually earned the
|
|
6
|
+
# marketplace, frozen at placement.
|
|
7
|
+
#
|
|
8
|
+
# Read-only everywhere: a commission line records something that
|
|
9
|
+
# already happened, so it is never written through the API.
|
|
10
|
+
#
|
|
11
|
+
# `amount` and `tax_amount` stay separate rather than being folded into
|
|
12
|
+
# `total`, because they are two different supplies: the fee, and the
|
|
13
|
+
# VAT the platform charges the seller on that fee. A seller's invoice
|
|
14
|
+
# has to show both.
|
|
15
|
+
class CommissionLineSerializer < V3::BaseSerializer
|
|
16
|
+
typelize order_id: :string,
|
|
17
|
+
seller_id: :string,
|
|
18
|
+
seller_name: 'string | null',
|
|
19
|
+
line_item_id: 'string | null',
|
|
20
|
+
fulfillment_id: 'string | null',
|
|
21
|
+
commission_rate_id: 'string | null',
|
|
22
|
+
kind: [:string, enum: Spree::CommissionRate::KINDS],
|
|
23
|
+
rate: :string,
|
|
24
|
+
tax_rate: :string,
|
|
25
|
+
taxability_reason: 'string | null',
|
|
26
|
+
country_code: 'string | null',
|
|
27
|
+
state_code: 'string | null',
|
|
28
|
+
amount: :string,
|
|
29
|
+
tax_amount: :string,
|
|
30
|
+
total: :string,
|
|
31
|
+
currency: :string,
|
|
32
|
+
display_amount: :string,
|
|
33
|
+
display_tax_amount: :string,
|
|
34
|
+
display_total: :string
|
|
35
|
+
|
|
36
|
+
# The treatment, in Spree::TaxLine's vocabulary — a seller's invoice
|
|
37
|
+
# has to explain why its fee was taxed the way it was, and the
|
|
38
|
+
# jurisdiction is the seller's own rather than the shopper's.
|
|
39
|
+
attributes :kind, :currency, :taxability_reason, :country_code, :state_code,
|
|
40
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
41
|
+
|
|
42
|
+
# Strings, so the figures a seller is invoiced round-trip exactly.
|
|
43
|
+
%i[rate tax_rate amount tax_amount total].each do |decimal|
|
|
44
|
+
attribute(decimal) { |line| line.public_send(decimal)&.to_s }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
%i[display_amount display_tax_amount display_total].each do |formatted|
|
|
48
|
+
attribute(formatted) { |line| line.public_send(formatted).to_s }
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
%i[order seller line_item fulfillment commission_rate].each do |association|
|
|
52
|
+
attribute(:"#{association}_id") { |line| line.public_send(association)&.prefixed_id }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# The seller's name, so a commission table reads without expanding.
|
|
56
|
+
attribute :seller_name do |line|
|
|
57
|
+
line.seller&.name
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
one :commission_rate,
|
|
61
|
+
resource: proc { Spree.api.admin_commission_rate_serializer },
|
|
62
|
+
if: proc { expand?('commission_rate') }
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Serializes Spree::CommissionRate — what the marketplace charges, as
|
|
6
|
+
# configuration.
|
|
7
|
+
#
|
|
8
|
+
# Admin-only: a rate is a term of business between the operator and its
|
|
9
|
+
# sellers, so it has no Store API counterpart. Sellers read what they
|
|
10
|
+
# were actually charged (Spree::CommissionLine) on their own branch,
|
|
11
|
+
# never the rules that produced it.
|
|
12
|
+
class CommissionRateSerializer < V3::BaseSerializer
|
|
13
|
+
# Decimals serialize as strings, like every other money-ish field on
|
|
14
|
+
# the admin API: a rate has to round-trip exactly, and a float does
|
|
15
|
+
# not promise that.
|
|
16
|
+
typelize name: :string,
|
|
17
|
+
code: 'string | null',
|
|
18
|
+
enabled: :boolean,
|
|
19
|
+
position: :number,
|
|
20
|
+
global: :boolean,
|
|
21
|
+
kind: [:string, enum: Spree::CommissionRate::KINDS],
|
|
22
|
+
value: :string,
|
|
23
|
+
amounts: 'Record<string, string>',
|
|
24
|
+
bounds: 'Record<string, { min_amount: string | null; max_amount: string | null }>',
|
|
25
|
+
tax_inclusive: :boolean,
|
|
26
|
+
include_shipping: :boolean,
|
|
27
|
+
commission_tax_rate: 'string | null',
|
|
28
|
+
metadata: 'Record<string, unknown> | null',
|
|
29
|
+
deleted_at: 'string | null'
|
|
30
|
+
|
|
31
|
+
attributes :name, :code, :enabled, :position, :kind,
|
|
32
|
+
:tax_inclusive, :include_shipping, :metadata,
|
|
33
|
+
deleted_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
34
|
+
|
|
35
|
+
%i[value commission_tax_rate].each do |decimal|
|
|
36
|
+
attribute(decimal) { |rate| rate.public_send(decimal)&.to_s }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# What a flat fee charges, per currency. Empty on a percentage rate,
|
|
40
|
+
# which needs no amount of its own.
|
|
41
|
+
attribute :amounts do |rate|
|
|
42
|
+
rate.amounts.transform_values(&:to_s)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The floor and cap a percentage charges within, per currency. Each
|
|
46
|
+
# holds only in its own currency, so a rate may bound some and leave
|
|
47
|
+
# others unbounded.
|
|
48
|
+
attribute :bounds do |rate|
|
|
49
|
+
rate.bounds.transform_values do |bound|
|
|
50
|
+
bound.transform_values { |amount| amount&.to_s }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# A rate that names nothing matches every sale, so everything below
|
|
55
|
+
# it in the list is unreachable. The dashboard needs to say so.
|
|
56
|
+
attribute :global, &:global?
|
|
57
|
+
|
|
58
|
+
# Always embedded rather than expand-gated: a rate without its
|
|
59
|
+
# targeting cannot be read (a rate with no rules means something
|
|
60
|
+
# entirely different from one whose rules were not loaded), and
|
|
61
|
+
# they are a handful of rows.
|
|
62
|
+
many :commission_rules,
|
|
63
|
+
key: :rules,
|
|
64
|
+
resource: proc { Spree.api.admin_commission_rule_serializer }
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Serializes Spree::CommissionRule — one condition on a rate.
|
|
6
|
+
#
|
|
7
|
+
# Admin-only, like everything commission: what a marketplace charges is
|
|
8
|
+
# between it and its sellers, so there is no Store API counterpart.
|
|
9
|
+
#
|
|
10
|
+
# Shaped like the price-rule serializer so one generic editor can drive
|
|
11
|
+
# both: the wire `type`, the values, and the schema describing them.
|
|
12
|
+
class CommissionRuleSerializer < V3::BaseSerializer
|
|
13
|
+
typelize type: [:string, comment: 'Rule type. Built-in: seller_rule, category_rule, product_rule, item_total_rule. Extensions may register more.'],
|
|
14
|
+
commission_rate_id: :string,
|
|
15
|
+
preferences: 'Record<string, unknown>',
|
|
16
|
+
preference_schema: 'Array<{ key: string; type: string; default: unknown }>',
|
|
17
|
+
product_ids: 'Array<string> | null',
|
|
18
|
+
seller_ids: 'Array<string> | null',
|
|
19
|
+
category_ids: 'Array<string> | null'
|
|
20
|
+
|
|
21
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
22
|
+
|
|
23
|
+
attribute :type do |rule|
|
|
24
|
+
rule.class.api_type
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
attribute :commission_rate_id do |rule|
|
|
28
|
+
rule.commission_rate&.prefixed_id
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
attribute :preferences, &:serialized_preferences
|
|
32
|
+
attribute :preference_schema, &:serialized_preference_schema
|
|
33
|
+
|
|
34
|
+
# Reference lists are returned as prefixed IDs to match the rest of
|
|
35
|
+
# the API. Product ids are read through a join table; seller and
|
|
36
|
+
# category ids live in preferences server-side but are not exposed
|
|
37
|
+
# that way on the wire — the picker round-trips prefixed ids.
|
|
38
|
+
attribute :product_ids do |rule|
|
|
39
|
+
rule.product_prefixed_ids if rule.respond_to?(:product_prefixed_ids)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
attribute :seller_ids do |rule|
|
|
43
|
+
rule.sellers.map(&:prefixed_id) if rule.respond_to?(:sellers)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
attribute :category_ids do |rule|
|
|
47
|
+
rule.categories.map(&:prefixed_id) if rule.respond_to?(:categories)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
many :sellers,
|
|
51
|
+
resource: proc { Spree.api.admin_seller_serializer },
|
|
52
|
+
if: proc { |rule| rule.respond_to?(:sellers) }
|
|
53
|
+
|
|
54
|
+
many :categories,
|
|
55
|
+
resource: proc { Spree.api.admin_category_serializer },
|
|
56
|
+
if: proc { |rule| rule.respond_to?(:categories) }
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class CompanyInvitationSerializer < V3::CompanyInvitationSerializer
|
|
6
|
+
typelize accepted_at: [:string, nullable: true],
|
|
7
|
+
revoked_at: [:string, nullable: true]
|
|
8
|
+
|
|
9
|
+
attributes accepted_at: :iso8601, revoked_at: :iso8601,
|
|
10
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
class CompanySerializer < V3::CompanySerializer
|
|
6
|
+
include Concerns::ExternalReferencesAttribute
|
|
7
|
+
|
|
8
|
+
typelize children_count: :number, members_count: :number,
|
|
9
|
+
metadata: 'Record<string, unknown> | null'
|
|
10
|
+
|
|
11
|
+
attributes :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
12
|
+
|
|
13
|
+
# Saves the dashboard a request per row just to render the tree
|
|
14
|
+
# expander and "3 members".
|
|
15
|
+
attribute :children_count do |company|
|
|
16
|
+
company.children.size
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# The member count covers the node's whole subtree
|
|
20
|
+
attributes :members_count
|
|
21
|
+
|
|
22
|
+
many :children,
|
|
23
|
+
resource: proc { Spree.api.admin_company_serializer },
|
|
24
|
+
if: proc { expand?('children') }
|
|
25
|
+
|
|
26
|
+
many :addresses,
|
|
27
|
+
resource: proc { Spree.api.admin_address_serializer },
|
|
28
|
+
if: proc { expand?('addresses') }
|
|
29
|
+
|
|
30
|
+
many :memberships,
|
|
31
|
+
resource: proc { Spree.api.admin_company_membership_serializer },
|
|
32
|
+
if: proc { expand?('memberships') }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module Concerns
|
|
6
|
+
# Renders a record's identities in external systems as a flat
|
|
7
|
+
# `{ system => external_id }` map — the shape a connector reads, and
|
|
8
|
+
# the same shape the controllers accept on write.
|
|
9
|
+
#
|
|
10
|
+
# Admin-only: which ERP a merchant runs, and under what key a product
|
|
11
|
+
# lives there, is back-office information.
|
|
12
|
+
#
|
|
13
|
+
# Named for the attribute rather than the feature because the
|
|
14
|
+
# controller concern of the obvious name already sits in the sibling
|
|
15
|
+
# controller namespace, and Alba resolves the shorter constant to it.
|
|
16
|
+
module ExternalReferencesAttribute
|
|
17
|
+
def self.included(base)
|
|
18
|
+
base.class_eval do
|
|
19
|
+
typelize external_references: 'Record<string, string>'
|
|
20
|
+
|
|
21
|
+
attribute :external_references do |resource|
|
|
22
|
+
resource.external_references.each_with_object({}) do |reference, result|
|
|
23
|
+
result[reference.system] = reference.external_id
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Consent Record Serializer
|
|
6
|
+
# The evidence trail behind a customer's consent state.
|
|
7
|
+
class ConsentRecordSerializer < BaseSerializer
|
|
8
|
+
typelize purpose: :string, source: [:string, enum: Spree::ConsentRecord::SOURCES], accepted: :boolean,
|
|
9
|
+
email: [:string, nullable: true],
|
|
10
|
+
ip_address: [:string, nullable: true],
|
|
11
|
+
recorded_at: [:string, nullable: true],
|
|
12
|
+
documents: 'Array<Record<string, unknown>>'
|
|
13
|
+
|
|
14
|
+
attributes :purpose, :source, :accepted, :email, :ip_address,
|
|
15
|
+
created_at: :iso8601
|
|
16
|
+
|
|
17
|
+
attribute :recorded_at do |record|
|
|
18
|
+
record.recorded_at&.iso8601
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :documents do |record|
|
|
22
|
+
record.documents_list
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -2,9 +2,9 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
|
+
# No timestamps: countries are reference data supplied by the countries
|
|
6
|
+
# gem rather than records, so they have no created_at/updated_at.
|
|
5
7
|
class CountrySerializer < V3::CountrySerializer
|
|
6
|
-
attributes created_at: :iso8601, updated_at: :iso8601
|
|
7
|
-
|
|
8
8
|
many :states,
|
|
9
9
|
resource: proc { Spree.api.admin_state_serializer },
|
|
10
10
|
if: proc { params[:expand]&.include?('states') }
|
|
@@ -8,8 +8,8 @@ module Spree
|
|
|
8
8
|
typelize namespace: :string,
|
|
9
9
|
key: :string,
|
|
10
10
|
label: :string,
|
|
11
|
-
field_type: Spree::
|
|
12
|
-
resource_type: :string,
|
|
11
|
+
field_type: Spree::CustomField::FIELD_TYPE_TOKENS,
|
|
12
|
+
resource_type: [:string, comment: 'Class name of the resource the field attaches to, for example Spree::Product, Spree::Order or Spree::Customer. Extensions may register more.'],
|
|
13
13
|
storefront_visible: :boolean,
|
|
14
14
|
searchable: :boolean,
|
|
15
15
|
sortable: :boolean,
|