Skip to main content
Create an Order for products. Currently you can create an Order for products that share the same manufacturer. Tip: We provide a URL configurable Checkout UI to make using these capabilities a breeze. We recommend using that for most use cases. If you need more control over the experience, we recommend you use the Order review and Order placement capabilities directly.

OrderingMutation.createOrder()

The response includes the orderId and a URL to view the order on the SIBI web app. See OrderingQuery.reviewOrder() for a dry-run version of this mutation that can be used to validate the input and discover available parameter values.

Types

type OrderingMutation {
  createOrder(input: OrderingCreateOrderInput!): OrderingCreateOrderResponse!
}

OrderingCreateOrderInput

input OrderingCreateOrderInput {
  manufacturer: String!
  address: OrderingAddressInput!
  products: [OrderingOrderProductInput!]!
  contactInfo: OrderingCustomerContactInfoInput!
  fulfillmentMethodId: String
  fulfillmentMethodType: OrderingFulfillmentMethodType
  shipToOfficePropertyId: String
  requestedDeliveryDate: String
  poNumber: String
  specialInstructions: String
  distributionCenterId: String
  paymentMethodId: String!
  subscribers: [OrderingOrderSubscriberInput!]
  idempotencyKey: String
}

manufacturer

string - The manufacturer of the products to order. Examples: 'GE', 'MSI'.

address

OrderingAddressInput - The address should correspond to a valid property in the system. If there is no matching property and the address is valid, a new property will be created. If the address is not valid, the mutation will fail with an error.

products

OrderingOrderProductInput[] - At least one product must be specified

contactInfo

OrderingCustomerContactInfoInput

fulfillmentMethodId

string | null - The ID of a specific fulfillment method to use. Pass the id from one of the availableFulfillmentMethods returned by reviewOrder. Cannot be provided together with fulfillmentMethodType. When not provided, the API will automatically select a fulfillment method using this logic:
  1. If the distributor has a configured default for the resolved type, that default is used.
  2. Otherwise, the first available method for the resolved type is used.
We recommend calling reviewOrder first to discover availableFulfillmentMethods, then passing the desired id explicitly.

fulfillmentMethodType

OrderingFulfillmentMethodType | null - The type of fulfillment method to use. Defaults to DELIVERY if neither fulfillmentMethodId nor fulfillmentMethodType is provided. Cannot be provided together with fulfillmentMethodId.

shipToOfficePropertyId

string | null - The property ID of the office to ship the order to. Only valid when fulfillmentMethodId is 'ship-to-office'. If provided with a different fulfillment method, the mutation will fail with an error. Required when fulfillmentMethodId is 'ship-to-office'.

requestedDeliveryDate

string | null - The date the customer wants the order delivered. If not provided, defaults to the earliest available. If the provided date is not available, the mutation will fail with an error.

poNumber

string | null - Can be anything you want. It doesn’t even need to be a number.

specialInstructions

string | null - E.g. the lock code is 1234

distributionCenterId

string | null - If omitted the order will be placed in the closest distribution center.

paymentMethodId

string - Note that unlike in OrderingReviewOrderInput, the paymentMethodId is required here.

subscribers

OrderingOrderSubscriberInput[] - An array of subscribers that will receive updates about the order. If the email is not formatted correctly, the mutation will fail with an error. If at least one subscriber is provided, then only email addresses specified in the subscribers will receive automatic email updates when the order status is updated. If no subscribers are provided, then the platform will send email updates to the user account that placed the order as well as the email addresses specified in the contactInfo field, but only if it doesn’t match the email address of the primary resident at the property the order is placed for.

OrderingOrderSubscriber

type OrderingOrderSubscriberInput {
  email: String!
}

idempotencyKey

string | null - A unique identifier for this request. If the same idempotency key is used for two identical order requests, the second request will return the order created by the first request instead of creating a duplicate order. If the first request failed, the second request will make another attempt. If the requests have different inputs, both orders will be processed normally.

OrderingCreateOrderResponse

type OrderingCreateOrderResponse {
  orderId: String!
  orderInSibiStoreUrl: String!
}

orderId

string - Internal SIBI order identifier.

orderInSibiStoreUrl

string - URL to the order in the SIBI web app.