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,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Admin
|
|
7
|
+
class ReturnSerializer < V3::ReturnSerializer
|
|
8
|
+
typelize memo: [:string, nullable: true],
|
|
9
|
+
metadata: 'Record<string, unknown>',
|
|
10
|
+
documents: "Array<{ kind: string; url: string }>",
|
|
11
|
+
stock_location_id: [:string, nullable: true],
|
|
12
|
+
created_by_id: [:string, nullable: true],
|
|
13
|
+
refunded_total: :string,
|
|
14
|
+
refundable_total: :string
|
|
15
|
+
|
|
16
|
+
attributes :memo, :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :stock_location_id do |return_record|
|
|
19
|
+
return_record.stock_location&.prefixed_id
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :created_by_id do |return_record|
|
|
23
|
+
return_record.created_by&.prefixed_id
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :refunded_total do |return_record|
|
|
27
|
+
return_record.refunded_total.to_s
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attribute :refundable_total do |return_record|
|
|
31
|
+
return_record.refundable_total.to_s
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
many :return_line_items,
|
|
35
|
+
resource: proc { Spree.api.admin_return_line_item_serializer },
|
|
36
|
+
if: proc { expand?('return_line_items') }
|
|
37
|
+
|
|
38
|
+
one :reason, resource: proc { Spree.api.admin_return_reason_serializer }, if: proc { expand?('reason') }
|
|
39
|
+
one :order, resource: proc { Spree.api.admin_order_serializer }, if: proc { expand?('order') }
|
|
40
|
+
one :stock_location, resource: proc { Spree.api.admin_stock_location_serializer }, if: proc { expand?('stock_location') }
|
|
41
|
+
many :refunds, resource: proc { Spree.api.admin_refund_serializer }, if: proc { expand?('refunds') }
|
|
42
|
+
|
|
43
|
+
# Paperwork the provider produced beside the label: a cross-border
|
|
44
|
+
# return is declared like any other export.
|
|
45
|
+
attribute :documents do |return_record|
|
|
46
|
+
return_record.provider.documents(return_record).map(&:as_json)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# The prepaid label for the parcel coming back, refunded ones
|
|
50
|
+
# included — the postage history of the return.
|
|
51
|
+
many :shipping_labels, key: :labels, resource: proc { Spree.api.admin_shipping_label_serializer }
|
|
52
|
+
|
|
53
|
+
# Where the inbound parcel is, as the carrier last reported it.
|
|
54
|
+
many :deliveries, resource: proc { Spree.api.admin_delivery_serializer }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -2,14 +2,32 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
|
-
# Admin API serializer for {Spree::Role}.
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
5
|
+
# Admin API serializer for {Spree::Role}. A role belongs to the store
|
|
6
|
+
# it governs; permissions are flat catalog keys (see the
|
|
7
|
+
# `/admin/permissions` discovery endpoint). `mutable: false` marks the
|
|
8
|
+
# protected admin role and host-locked rows — the dashboard renders
|
|
9
|
+
# those read-only.
|
|
9
10
|
class RoleSerializer < V3::BaseSerializer
|
|
10
|
-
typelize name: :string
|
|
11
|
+
typelize name: :string, description: 'string | null', mutable: :boolean,
|
|
12
|
+
users_count: :number
|
|
13
|
+
typelize permissions: [:string, multi: true]
|
|
11
14
|
|
|
12
|
-
attributes :name, created_at: :iso8601, updated_at: :iso8601
|
|
15
|
+
attributes :name, :description, created_at: :iso8601, updated_at: :iso8601
|
|
16
|
+
|
|
17
|
+
# The admin role ignores its stored list and grants everything — so
|
|
18
|
+
# it reports every key its own audience may hold, which is what the
|
|
19
|
+
# role grid renders and what a duplicate of it copies.
|
|
20
|
+
attribute(:permissions) do |role|
|
|
21
|
+
role.name == Spree::Role::ADMIN_ROLE ? Spree.permissions.grantable_keys(role.audience) : role.permissions
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
attribute(:mutable, &:mutable?)
|
|
25
|
+
|
|
26
|
+
# Staff assignments. The role belongs to one store already, so every
|
|
27
|
+
# assignment it has is on that store.
|
|
28
|
+
attribute :users_count do |role|
|
|
29
|
+
role.role_users.size
|
|
30
|
+
end
|
|
13
31
|
end
|
|
14
32
|
end
|
|
15
33
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API serializer for {Spree::SavedReport}: the reporting contract
|
|
6
|
+
# query and its attribution.
|
|
7
|
+
class SavedReportSerializer < V3::BaseSerializer
|
|
8
|
+
typelize name: :string,
|
|
9
|
+
description: [:string, nullable: true],
|
|
10
|
+
query: 'Record<string, unknown>',
|
|
11
|
+
seeded: :boolean,
|
|
12
|
+
user_id: [:string, nullable: true],
|
|
13
|
+
author_name: [:string, nullable: true],
|
|
14
|
+
created_at: :string,
|
|
15
|
+
updated_at: :string
|
|
16
|
+
|
|
17
|
+
attributes :name, :description, :query, :seeded, :created_at, :updated_at
|
|
18
|
+
|
|
19
|
+
attribute :user_id do |report|
|
|
20
|
+
report.user&.prefixed_id
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
attribute :author_name do |report|
|
|
24
|
+
user = report.user
|
|
25
|
+
next nil unless user
|
|
26
|
+
|
|
27
|
+
user.full_name.presence || user.email
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# A seller's position in one currency (Spree::SellerBalance), for the
|
|
6
|
+
# operator. A computed value rather than a record, so it carries no id.
|
|
7
|
+
class SellerBalanceSerializer < V3::BaseSerializer
|
|
8
|
+
typelize seller_id: :string,
|
|
9
|
+
currency: :string,
|
|
10
|
+
settlement_currency: :string,
|
|
11
|
+
converted: :boolean,
|
|
12
|
+
earned: :string, display_earned: :string,
|
|
13
|
+
payable: :string, display_payable: :string,
|
|
14
|
+
paid: :string, display_paid: :string,
|
|
15
|
+
balance: :string, display_balance: :string,
|
|
16
|
+
pending: :string, display_pending: :string
|
|
17
|
+
|
|
18
|
+
_attributes.delete(:id)
|
|
19
|
+
|
|
20
|
+
# Two sides when the account settles in another currency: what the
|
|
21
|
+
# sales were worth, and what the account received once the provider
|
|
22
|
+
# converted. Never added together.
|
|
23
|
+
attributes :currency, :settlement_currency
|
|
24
|
+
|
|
25
|
+
attribute(:converted) { |balance| balance.converted? }
|
|
26
|
+
|
|
27
|
+
attribute(:seller_id) { |balance| balance.seller&.prefixed_id }
|
|
28
|
+
|
|
29
|
+
%i[earned payable paid balance pending].each do |figure|
|
|
30
|
+
attribute(figure) { |balance| balance.public_send(figure).to_s }
|
|
31
|
+
attribute(:"display_#{figure}") { |balance| balance.public_send(:"display_#{figure}").to_s }
|
|
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
|
+
# Serializes Spree::SellerPayout — one settlement to one seller.
|
|
6
|
+
#
|
|
7
|
+
# Created by the sweep rather than by a caller, so the API offers no
|
|
8
|
+
# create or update. The one thing an operator does to a payout is say
|
|
9
|
+
# it landed, which is its own member action.
|
|
10
|
+
class SellerPayoutSerializer < V3::BaseSerializer
|
|
11
|
+
typelize seller_id: :string,
|
|
12
|
+
seller_name: 'string | null',
|
|
13
|
+
status: [:string, enum: Spree::SellerPayout.statuses, enum_type_name: 'SellerPayoutStatus'],
|
|
14
|
+
provider: [:string, comment: 'Payout provider class name. Built-in: Spree::PayoutProvider::System. Provider gems register more.'],
|
|
15
|
+
amount: :string,
|
|
16
|
+
currency: :string,
|
|
17
|
+
reference: 'string | null',
|
|
18
|
+
period_start: 'string | null',
|
|
19
|
+
period_end: 'string | null',
|
|
20
|
+
transfers_count: :number,
|
|
21
|
+
display_amount: :string
|
|
22
|
+
|
|
23
|
+
attributes :status, :currency, :provider, :reference, :metadata,
|
|
24
|
+
period_start: :iso8601, period_end: :iso8601,
|
|
25
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
26
|
+
|
|
27
|
+
attribute(:amount) { |payout| payout.amount&.to_s }
|
|
28
|
+
attribute(:display_amount) { |payout| payout.display_amount.to_s }
|
|
29
|
+
attribute(:seller_id) { |payout| payout.seller&.prefixed_id }
|
|
30
|
+
attribute(:seller_name) { |payout| payout.seller&.name }
|
|
31
|
+
|
|
32
|
+
# How many earnings this settlement covers, so a list answers "what
|
|
33
|
+
# is in this deposit" without loading every transfer.
|
|
34
|
+
#
|
|
35
|
+
# Read from a count the controller made for the whole page when there
|
|
36
|
+
# is one; a single payout read falls back to asking for its own.
|
|
37
|
+
attribute(:transfers_count) do |payout, params|
|
|
38
|
+
counts = params && params[:transfer_counts]
|
|
39
|
+
|
|
40
|
+
counts ? counts.fetch(payout.id, 0) : payout.transfers.count
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# A configured requirement, as the operator manages it. Admin-only:
|
|
6
|
+
# what a marketplace asks of its sellers is between the operator and
|
|
7
|
+
# the seller, and never appears on the store surface.
|
|
8
|
+
class SellerRequirementSerializer < BaseSerializer
|
|
9
|
+
typelize kind: [:string, comment: 'Requirement kind. Built-in: accept_terms, complete_profile, billing_address, returns_address, delivery_method, package_type, minimum_products, payout_account, required_custom_fields, policy, attestation, operator_review, document. Extensions may register more.'], name: :string, description: [:string, nullable: true],
|
|
10
|
+
position: :number, active: :boolean, required: :boolean,
|
|
11
|
+
allow_multiple: :boolean, accepts_submissions: :boolean,
|
|
12
|
+
reviewed_by_operator: :boolean,
|
|
13
|
+
preferences: 'Record<string, unknown>',
|
|
14
|
+
custom_field_definition_ids: [:string, multi: true],
|
|
15
|
+
metadata: 'Record<string, unknown> | null'
|
|
16
|
+
|
|
17
|
+
attributes :position, :active, :required, :metadata,
|
|
18
|
+
created_at: :iso8601,
|
|
19
|
+
updated_at: :iso8601
|
|
20
|
+
|
|
21
|
+
# The kind, so a dashboard can key presentation off it without
|
|
22
|
+
# parsing the Ruby class name.
|
|
23
|
+
attribute :kind do |requirement|
|
|
24
|
+
requirement.class.api_type
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# What the seller sees — the operator's wording, or the kind's own.
|
|
28
|
+
attribute :name do |requirement|
|
|
29
|
+
requirement.display_name
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
attribute :description do |requirement|
|
|
33
|
+
requirement.display_description
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attribute :preferences do |requirement|
|
|
37
|
+
requirement.serialized_preferences
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# The definitions a requirement asks for, when its kind takes any.
|
|
41
|
+
# Read through the association, so one the operator deleted is gone
|
|
42
|
+
# rather than echoed back as an id nothing can address.
|
|
43
|
+
attribute :custom_field_definition_ids do |requirement|
|
|
44
|
+
if requirement.respond_to?(:custom_field_definition_prefixed_ids)
|
|
45
|
+
requirement.custom_field_definition_prefixed_ids
|
|
46
|
+
else
|
|
47
|
+
[]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Capabilities of the kind, so the operator's form knows whether to
|
|
52
|
+
# offer a second row of it and whether sellers can submit anything.
|
|
53
|
+
attribute :allow_multiple do |requirement|
|
|
54
|
+
requirement.class.allow_multiple?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
attribute :accepts_submissions do |requirement|
|
|
58
|
+
requirement.class.accepts_submissions?
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
attribute :reviewed_by_operator do |requirement|
|
|
62
|
+
requirement.class.reviewed_by_operator?
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# One line of a seller's onboarding checklist — a requirement
|
|
6
|
+
# evaluated against them. A value object, so no id of its own: the
|
|
7
|
+
# `id` here is the requirement it came from, which is what a caller
|
|
8
|
+
# acts on.
|
|
9
|
+
class SellerRequirementStatusSerializer
|
|
10
|
+
include Alba::Resource
|
|
11
|
+
include Typelizer::DSL
|
|
12
|
+
|
|
13
|
+
typelize id: :string, kind: [:string, comment: 'Requirement kind. Built-in: accept_terms, complete_profile, billing_address, returns_address, delivery_method, package_type, minimum_products, payout_account, required_custom_fields, policy, attestation, operator_review, document. Extensions may register more.'], name: :string,
|
|
14
|
+
description: [:string, nullable: true],
|
|
15
|
+
required: :boolean, position: :number, status: [:string, enum: Spree::SellerRequirementStatus::STATUSES],
|
|
16
|
+
blocking: :boolean, action_url: [:string, nullable: true],
|
|
17
|
+
blocker: ['{ state: string; message: string | null } | null'],
|
|
18
|
+
required_policy_name: [:string, nullable: true]
|
|
19
|
+
|
|
20
|
+
attributes :id, :kind, :name, :description, :required, :position, :status, :action_url, :blocker
|
|
21
|
+
|
|
22
|
+
# Whether this stands between the seller and approval. Serialized
|
|
23
|
+
# rather than left to each client to derive, so the dashboard's
|
|
24
|
+
# override warning and the approval gate cannot disagree.
|
|
25
|
+
attribute :blocking do |status|
|
|
26
|
+
status.blocking?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# The document this line asks for, and what the seller published
|
|
30
|
+
# against it. Embedded rather than left to a second request: the
|
|
31
|
+
# operator is deciding whether to approve, and a line that says
|
|
32
|
+
# "Done" without showing the text is not something to approve on.
|
|
33
|
+
attribute :required_policy_name do |status|
|
|
34
|
+
status.required_policy_name
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
one :submission,
|
|
38
|
+
resource: proc { Spree.api.admin_seller_requirement_submission_serializer },
|
|
39
|
+
if: proc { |status| status.submission.present? }
|
|
40
|
+
|
|
41
|
+
one :published_policy,
|
|
42
|
+
resource: proc { Spree.api.admin_policy_serializer },
|
|
43
|
+
if: proc { |status| status.published_policy.present? }
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# What a seller submitted about one requirement, and what was made of
|
|
6
|
+
# it. The file is exposed as a URL rather than a blob id — it is what
|
|
7
|
+
# the reviewer opens.
|
|
8
|
+
class SellerRequirementSubmissionSerializer < BaseSerializer
|
|
9
|
+
typelize status: [:string, enum: Spree::SellerRequirementSubmission.statuses, enum_type_name: 'SellerRequirementSubmissionStatus'], note: [:string, nullable: true],
|
|
10
|
+
review_note: [:string, nullable: true],
|
|
11
|
+
reference: [:string, nullable: true],
|
|
12
|
+
reviewed_at: [:string, nullable: true],
|
|
13
|
+
file_url: [:string, nullable: true],
|
|
14
|
+
file_name: [:string, nullable: true],
|
|
15
|
+
seller_id: :string, requirement_id: :string,
|
|
16
|
+
requirement_name: :string,
|
|
17
|
+
metadata: 'Record<string, unknown> | null'
|
|
18
|
+
|
|
19
|
+
attributes :status, :note, :review_note, :reference, :metadata,
|
|
20
|
+
reviewed_at: :iso8601,
|
|
21
|
+
created_at: :iso8601,
|
|
22
|
+
updated_at: :iso8601
|
|
23
|
+
|
|
24
|
+
attribute :seller_id do |submission|
|
|
25
|
+
submission.seller&.prefixed_id
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :requirement_id do |submission|
|
|
29
|
+
submission.requirement&.prefixed_id
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# The reviewer is looking at a queue of these and needs to know what
|
|
33
|
+
# each one answers without fetching the requirement.
|
|
34
|
+
attribute :requirement_name do |submission|
|
|
35
|
+
submission.requirement&.display_name
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# A path to this API's own download action rather than a storage
|
|
39
|
+
# URL: these are identity documents, and the download is authorized
|
|
40
|
+
# per request instead of being readable by anyone holding a link.
|
|
41
|
+
attribute :file_url do |submission|
|
|
42
|
+
next nil unless submission.file.attached?
|
|
43
|
+
|
|
44
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_admin_seller_requirement_submission_path(
|
|
45
|
+
seller_id: submission.seller.prefixed_id,
|
|
46
|
+
id: submission.prefixed_id
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
attribute :file_name do |submission|
|
|
51
|
+
submission.file.attached? ? submission.file.filename.to_s : nil
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# A seller as the marketplace operator sees it: the public profile the
|
|
6
|
+
# shopper also gets, plus the operational state and the settlement and
|
|
7
|
+
# tax configuration only the operator sets.
|
|
8
|
+
class SellerSerializer < V3::SellerSerializer
|
|
9
|
+
typelize status: [:string, enum: Spree::Seller.statuses, enum_type_name: 'SellerStatus'],
|
|
10
|
+
legal_name: [:string, nullable: true],
|
|
11
|
+
registration_number: [:string, nullable: true],
|
|
12
|
+
contact_email: [:string, nullable: true], billing_email: [:string, nullable: true],
|
|
13
|
+
tax_remittance: :string,
|
|
14
|
+
payouts_schedule_interval: [:string, nullable: true],
|
|
15
|
+
minimum_payout_amount: [:string, nullable: true],
|
|
16
|
+
holiday_mode_until: [:string, nullable: true],
|
|
17
|
+
terms_accepted_at: [:string, nullable: true],
|
|
18
|
+
deleted_at: [:string, nullable: true],
|
|
19
|
+
on_holiday: :boolean, sellable: :boolean,
|
|
20
|
+
products_count: :number, users_count: :number,
|
|
21
|
+
onboarding_progress: '{ done: number; total: number }',
|
|
22
|
+
onboarding_complete: :boolean,
|
|
23
|
+
metadata: 'Record<string, unknown> | null'
|
|
24
|
+
|
|
25
|
+
attributes :status, :contact_email, :billing_email,
|
|
26
|
+
:tax_remittance, :payouts_schedule_interval, :metadata,
|
|
27
|
+
holiday_mode_until: :iso8601,
|
|
28
|
+
terms_accepted_at: :iso8601,
|
|
29
|
+
created_at: :iso8601,
|
|
30
|
+
updated_at: :iso8601,
|
|
31
|
+
deleted_at: :iso8601
|
|
32
|
+
|
|
33
|
+
# A seller's policies are the seller's own, managed on the seller
|
|
34
|
+
# branch — the operator neither edits nor lists them in 6.0. The
|
|
35
|
+
# inherited declaration is dropped rather than shadowed, since
|
|
36
|
+
# keeping it would render a store serializer inside an admin
|
|
37
|
+
# response.
|
|
38
|
+
_attributes.delete(:policies)
|
|
39
|
+
|
|
40
|
+
attribute :minimum_payout_amount do |seller|
|
|
41
|
+
seller.minimum_payout_amount&.to_s
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Approved but away still cannot sell, and the list has to say so
|
|
45
|
+
# without the dashboard re-deriving the rule.
|
|
46
|
+
attribute :on_holiday do |seller|
|
|
47
|
+
seller.on_holiday?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
attribute :sellable do |seller|
|
|
51
|
+
seller.sellable?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Saves the dashboard a request per row for the two counts its list
|
|
55
|
+
# and header show. Read off the seller, which memoizes the SQL count
|
|
56
|
+
# so the minimum-products requirement asks the same question free.
|
|
57
|
+
attribute :products_count do |seller|
|
|
58
|
+
seller.products_count
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
attribute :users_count do |seller|
|
|
62
|
+
seller.users.size
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# How far through the marketplace's checklist this seller is — what
|
|
66
|
+
# the list's progress column and the profile's badge render. The
|
|
67
|
+
# requirements themselves, with their submissions, stay on the
|
|
68
|
+
# heavier `onboarding` action; a list of sellers needs the number,
|
|
69
|
+
# not the rows behind it.
|
|
70
|
+
attribute :onboarding_progress do |seller|
|
|
71
|
+
seller.onboarding_progress
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
attribute :onboarding_complete do |seller|
|
|
75
|
+
seller.onboarding_complete?
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
attribute :legal_name, &:legal_name
|
|
79
|
+
attribute :registration_number, &:registration_number
|
|
80
|
+
|
|
81
|
+
one :billing_address,
|
|
82
|
+
resource: proc { Spree.api.admin_address_serializer },
|
|
83
|
+
if: proc { |seller| seller.billing_address.present? }
|
|
84
|
+
|
|
85
|
+
one :returns_address,
|
|
86
|
+
resource: proc { Spree.api.admin_address_serializer },
|
|
87
|
+
if: proc { |seller| seller.returns_address.present? }
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# A person who runs one of the marketplace's sellers.
|
|
6
|
+
#
|
|
7
|
+
# Deliberately not `AdminUserSerializer`: its `roles` attribute keeps
|
|
8
|
+
# only the roles held on the current *store*, and a seller's team hold
|
|
9
|
+
# theirs on the seller — so every member would read as having none. The
|
|
10
|
+
# role is not worth reporting anyway, since a seller's team all hold
|
|
11
|
+
# the one seeded role that carries the whole seller vocabulary.
|
|
12
|
+
class SellerTeamMemberSerializer < V3::BaseSerializer
|
|
13
|
+
typelize email: :string,
|
|
14
|
+
first_name: [:string, nullable: true],
|
|
15
|
+
last_name: [:string, nullable: true],
|
|
16
|
+
full_name: [:string, nullable: true],
|
|
17
|
+
avatar_url: [:string, nullable: true]
|
|
18
|
+
|
|
19
|
+
attributes :email, :first_name, :last_name, :full_name,
|
|
20
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
21
|
+
|
|
22
|
+
attribute :avatar_url do |user|
|
|
23
|
+
image_url_for(user.avatar)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Serializes Spree::SellerTransfer — what one order earned one seller.
|
|
6
|
+
#
|
|
7
|
+
# Read-only: a transfer records money that moved, or is moving. What
|
|
8
|
+
# corrects it is a reversal, which is another row rather than an edit.
|
|
9
|
+
class SellerTransferSerializer < V3::BaseSerializer
|
|
10
|
+
typelize seller_id: :string,
|
|
11
|
+
order_id: 'string | null',
|
|
12
|
+
payout_id: 'string | null',
|
|
13
|
+
reversed_from_id: 'string | null',
|
|
14
|
+
refund_id: 'string | null',
|
|
15
|
+
seller_name: 'string | null',
|
|
16
|
+
order_number: 'string | null',
|
|
17
|
+
kind: [:string, enum: Spree::SellerTransfer::KINDS],
|
|
18
|
+
status: [:string, enum: Spree::SellerTransfer.statuses, enum_type_name: 'SellerTransferStatus'],
|
|
19
|
+
provider: [:string, comment: 'Payout provider class name. Built-in: Spree::PayoutProvider::System. Provider gems register more.'],
|
|
20
|
+
amount: :string,
|
|
21
|
+
currency: :string,
|
|
22
|
+
settled_amount: 'string | null',
|
|
23
|
+
settled_currency: 'string | null',
|
|
24
|
+
converted: :boolean,
|
|
25
|
+
reference: 'string | null',
|
|
26
|
+
display_amount: :string
|
|
27
|
+
|
|
28
|
+
attributes :kind, :status, :currency, :provider, :reference, :metadata,
|
|
29
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
30
|
+
|
|
31
|
+
# A string, so the figure a seller is paid round-trips exactly.
|
|
32
|
+
attribute(:amount) { |transfer| transfer.amount&.to_s }
|
|
33
|
+
attribute(:display_amount) { |transfer| transfer.display_amount.to_s }
|
|
34
|
+
|
|
35
|
+
# What the seller's account received, when the provider converted on
|
|
36
|
+
# the way in. Null when it settled in the currency of the sale.
|
|
37
|
+
attribute(:settled_amount) { |transfer| transfer.settled_amount&.to_s }
|
|
38
|
+
attribute(:settled_currency) { |transfer| transfer.settled_currency }
|
|
39
|
+
attribute(:converted) { |transfer| transfer.converted? }
|
|
40
|
+
|
|
41
|
+
%i[seller order payout reversed_from refund].each do |association|
|
|
42
|
+
attribute(:"#{association}_id") { |transfer| transfer.public_send(association)&.prefixed_id }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Both readable without expanding, since a ledger table is read row
|
|
46
|
+
# by row and these are what identify a row to an operator.
|
|
47
|
+
attribute(:seller_name) { |transfer| transfer.seller&.name }
|
|
48
|
+
attribute(:order_number) { |transfer| transfer.order&.number }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# A bought or uploaded carrier label. Admin-only by design: the cost is
|
|
6
|
+
# what the merchant paid the carrier, and the ids are the provider's.
|
|
7
|
+
# The file is streamed through +download_url+, never linked to storage.
|
|
8
|
+
class ShippingLabelSerializer < V3::BaseSerializer
|
|
9
|
+
typelize owner_id: :string,
|
|
10
|
+
owner_type: [:string, enum: Spree::ShippingLabel::OWNER_TYPES],
|
|
11
|
+
source: [:string, enum: Spree::ShippingLabel::SOURCES],
|
|
12
|
+
status: [:string, enum: Spree::ShippingLabel.statuses, enum_type_name: 'ShippingLabelStatus'],
|
|
13
|
+
carrier: [:string, nullable: true],
|
|
14
|
+
carrier_name: [:string, nullable: true],
|
|
15
|
+
service: [:string, nullable: true],
|
|
16
|
+
tracking_number: [:string, nullable: true],
|
|
17
|
+
cost: :string,
|
|
18
|
+
currency: [:string, nullable: true],
|
|
19
|
+
display_cost: :string,
|
|
20
|
+
format: [:string, nullable: true],
|
|
21
|
+
external_id: [:string, nullable: true],
|
|
22
|
+
integration_id: [:string, nullable: true],
|
|
23
|
+
download_url: [:string, nullable: true],
|
|
24
|
+
file_pending: :boolean,
|
|
25
|
+
refunded_at: [:string, nullable: true],
|
|
26
|
+
metadata: 'Record<string, unknown>'
|
|
27
|
+
|
|
28
|
+
attributes :source, :status, :carrier, :carrier_name, :service, :tracking_number, :currency, :format,
|
|
29
|
+
:external_id, :metadata, refunded_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
30
|
+
|
|
31
|
+
attribute :owner_id do |shipping_label|
|
|
32
|
+
shipping_label.owner&.prefixed_id
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
attribute :owner_type do |shipping_label|
|
|
36
|
+
shipping_label.owner_type == 'Spree::Return' ? 'return' : 'fulfillment'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
attribute :cost do |shipping_label|
|
|
40
|
+
shipping_label.cost.to_s
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
attribute :display_cost do |shipping_label|
|
|
44
|
+
shipping_label.display_cost.to_s
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attribute :integration_id do |shipping_label|
|
|
48
|
+
shipping_label.integration&.prefixed_id
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Whether the file is still being fetched from the carrier; the
|
|
52
|
+
# download proxies the provider's copy meanwhile.
|
|
53
|
+
attribute :file_pending do |shipping_label|
|
|
54
|
+
shipping_label.file_pending?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Our own endpoint rather than a storage URL: the controller streams
|
|
58
|
+
# the bytes, so admin auth runs on every print.
|
|
59
|
+
attribute :download_url do |shipping_label|
|
|
60
|
+
next nil unless shipping_label.file.attached? || shipping_label.file_pending?
|
|
61
|
+
|
|
62
|
+
helpers = Spree::Core::Engine.routes.url_helpers
|
|
63
|
+
owner = shipping_label.owner
|
|
64
|
+
# Both paths are nested under an order; a fulfillment still on a
|
|
65
|
+
# cart has none, so there is nowhere to download it from yet.
|
|
66
|
+
next nil if owner.order.nil?
|
|
67
|
+
|
|
68
|
+
if owner.is_a?(Spree::Return)
|
|
69
|
+
helpers.download_api_v3_admin_order_return_label_path(
|
|
70
|
+
order_id: owner.order.prefixed_id, return_id: owner.prefixed_id, id: shipping_label.prefixed_id
|
|
71
|
+
)
|
|
72
|
+
else
|
|
73
|
+
helpers.download_api_v3_admin_order_fulfillment_label_path(
|
|
74
|
+
order_id: owner.order.prefixed_id, fulfillment_id: owner.prefixed_id, id: shipping_label.prefixed_id
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|