Class: Spree::Api::V2::Tenant::DraftOrdersController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/spree/api/v2/tenant/draft_orders_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#current_vendor, #render_serialized_payload, #require_tenant, #scope

Instance Method Details

#createObject

Creates a generic draft order from a locally-assembled cart in a single request. Endpoint: POST /api/v2/tenant/draft_orders Params:

  • 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).


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/controllers/spree/api/v2/tenant/draft_orders_controller.rb', line 11

def create
  result = SpreeCmCommissioner::DraftOrders::Create.call(
    line_items: draft_order_line_items,
    user: spree_current_user,
    store: current_store,
    currency: current_currency,
    tenant: @tenant,
    options: {
      device_id: params[:device_id],
      last_ip_address: request.remote_ip,
      private_sale_token: params[:st]
    }
  )

  if result.success?
    render_serialized_payload { serialize_resource(serializable_order(result.value[:order])) }
  else
    render_error_payload(result.error)
  end
end