Class: Spree::Api::V2::Storefront::QueueDraftOrdersController
- Inherits:
-
ResourceController
- Object
- ResourceController
- Spree::Api::V2::Storefront::QueueDraftOrdersController
- Includes:
- SpreeCmCommissioner::LoadTestBypassable
- Defined in:
- app/controllers/spree/api/v2/storefront/queue_draft_orders_controller.rb
Instance Method Summary collapse
-
#create ⇒ Object
Accepts a draft order request without building it: writes a queued Firestore status document and schedules the real build (SpreeCmCommissioner::DraftOrders::Create) on a background job.
Instance Method Details
#create ⇒ Object
Accepts a draft order request without building it: writes a queued Firestore status document and schedules the real build (SpreeCmCommissioner::DraftOrders::Create) on a background job. The app watches the returned document for the eventual outcome instead of waiting on this request.
Endpoint: POST /api/v2/storefront/queue_draft_orders Params: same as POST /api/v2/storefront/draft_orders — line_items: Array of { variant_id:, quantity:, options: {}, public_metadata: {}, private_metadata: {} } (required) st: private sale token granting this order the product's locked stock (optional).
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/controllers/spree/api/v2/storefront/queue_draft_orders_controller.rb', line 19 def create result = SpreeCmCommissioner::QueueDraftOrders::Enqueue.call( create_type: 'generic', creation_params: { line_items: draft_order_line_items, user: spree_current_user, store: current_store, currency: current_currency, options: { device_id: device_id, last_ip_address: request.remote_ip, private_sale_token: params[:st] } }, locale: I18n.locale.to_s ) if result.success? render_serialized_payload { result.value } else render_error_payload(result.error) end end |