OrderingQuery.searchProducts()
Search Products and see availability, pricing, and other Product information.
type OrderingQuery {
searchProducts(
address: OrderingAddressInput
searchTerm: String
manufacturer: String
categories: [String!]
page: Int
hitsPerPage: Int
onlyInStock: Boolean
dimensions: OrderingProductDimensionFiltersInput
): [OrderingProduct!]!
}
Input
address
OrderingAddressInput - The address associated with the order. The address must be a valid address. If the address is not valid, the query will fail with an error. If the address is valid but we don’t already have a property for it, then a property will be created and assigned to the organization the calling credentials belong to.
searchTerm
string | undefined - The search term to use when searching for products. If not provided, all products will be returned.
manufacturer
string | undefined - The manufacturer of the products to search for. If not provided, products from GE will be returned.
categories
string[] | undefined - Return products that are in one of the categories specified. Will search across all categories if omitted. Use productCategories to retrieve the list of valid category names for a manufacturer.
page
number | undefined - The zero-based index of the page of results to return. The first page is 0, so page: 1 returns the second page, not the first. If not provided, defaults to 0.
hitsPerPage
number | undefined - The number of results to return per page. If not provided, defaults to 30.
onlyInStock
boolean | undefined - If true, only products that have an availability status of IN_STOCK will be returned. If set to false or not provided, all products will be returned. Enabling this filter can increase the latency of the response by 2-3x.
dimensions
OrderingProductDimensionFiltersInput | undefined - Constrain results to products that physically fit a known space — for example, the appliance enclosure left behind by a warranty replacement. A product must satisfy every supplied bound to match; products that have no measurement for a constrained dimension are excluded. If not provided, no dimension filtering is applied.
query {
ordering {
searchProducts(
manufacturer: "ge"
categories: ["Refrigerators"]
dimensions: { maxWidth: 36, maxHeight: 70, maxDepth: 36 }
) {
sku
title
dimensions {
width
height
depth
}
}
}
}
Response
OrderingProduct
OrderingProduct[] - List of products matching the search criteria.
OrderingProduct
type OrderingProduct {
id: ID!
sku: String!
manufacturer: String!
title: String!
subtitle: String
description: String
category: String!
subcategories: [String!]!
color: String @deprecated(reason: "Use attributes instead.")
attributes: [OrderingProductAttribute!]!
viewUrl: String!
availability: OrderingAvailability!
imageUrl: String!
imageUrls: [String!]!
priceCents: Int!
msrpPriceCents: Int
addons: [OrderingProductAddon!]!
dimensions: OrderingProductDimensions!
baseUnitOfMeasure: String!
unitsOfMeasure: [OrderingProductUnitOfMeasure!]!
recommendedParts: [OrderingProductPart!]!
availableFulfillmentMethods: [OrderingProductFulfillmentMethod!]!
warranties: [OrderingProductWarranty!]!
options: [OrderingProductOption!]!
}
id
string - SIBI identifier for the product. Unique across all products returned by the API.
sku
string - The SKU of the product. Is defined by the manufacturer or distributor.
manufacturer
string - The manufacturer of the product. This value is valid for use in the manufacturer field of all input types that accept a manufacturer.
title
string - The human readable name of the product.
subtitle
string | null - A short description of the product.
description
string | null - A brief description of the product. Will be null when not available.
category
string - The broad category this product falls into.
subcategories
string[] - Array of strings of all the specific subcategories this product falls into. May be empty and may also be 1 with category
color (deprecated)
string | null - Deprecated. Read the color entry of attributes instead. The color of the product. Is not available for all products.
attributes
OrderingProductAttribute[] - The catalog attributes of this product that are relevant to ordering it, as { name, value } pairs — e.g. sheen or color. Which attributes a product carries varies by product; empty when it has none.
viewUrl
string - A URL to view the product in the Sibi Web UI.
availability
OrderingAvailability - The availability of the product. Returns a status of ‘UNKNOWN’ and a quantity of 0 if the address is missing.
imageUrl
string - The URL of the product’s image.
imageUrls
string[] - The URLs of all of the product’s images, with the primary image (the same image returned by imageUrl) always first.
priceCents
number - The price of the product in cents.
msrpPriceCents
number | null - The Manufacturer’s Suggested Retail Price of the product in cents. Is not available for all products. Will be null when not available.
addons
OrderingProductAddon[] - An array of addons (services and/or accessories) that can be ordered with the product.
dimensions
OrderingProductDimensions - The physical dimensions of the product.
baseUnitOfMeasure
string - The unit this product’s priceCents is denominated in (e.g. “Each”, “Sq Ft”). When unitsOfMeasure is non-empty, the product cannot be purchased in fractional amounts of this base unit directly — pass one of unitsOfMeasure’s unitOfMeasure values as unitOfMeasure when calling reviewOrder or createOrder. When unitsOfMeasure is empty, pass this value instead (or omit unitOfMeasure to default to it).
unitsOfMeasure
OrderingProductUnitOfMeasure[] - Alternate purchasable units for this product — e.g. a flooring product priced by the Sq Ft that can only be ordered by the Box or Pallet, each covering a fixed quantity of baseUnitOfMeasure (see quantityPerBaseUnit). Empty when the product has no alternate units and can be ordered directly in baseUnitOfMeasure.
recommendedParts
OrderingProductPart[] - An array of products that can be purchased with the parent. Will include things like power cables for electric ranges or ice makers for refrigerators. Some of these parts are included with addons. For example, an electric range’s “Install” addon will generally include the power cable part.
availableFulfillmentMethods
OrderingProductFulfillmentMethod[] - The fulfillment methods available for this product, each showing the earliest date it can be fulfilled and the distribution center that provides that date. Each method also carries the full set of distribution centers that can fulfill this product by that method, each with its own estimated fulfillment date, in distributionCenters — sorted earliest first, so the top-level estimatedFulfillmentDate and distributionCenter correspond to its first entry. Use that list when you need to offer a choice of distribution center rather than defaulting to the earliest. Returns an empty array when no address is provided or when fulfillment information is unavailable.
warranties
OrderingProductWarranty[] - The extended-warranty products that can be purchased alongside this product. Returns an empty array when no address is provided or when no warranty coverage is available for the product.
options
OrderingProductOption[] - The selectable option values for this product — e.g. the standard color palette of a PPG tintable paint, one entry per color. Entries sharing a key are alternative values for the same option. Empty for products with no selectable options. Some products have an option that must be selected at order time (e.g. PPG tintable paints) — one of its { key, value } pairs must be included in products[].options, and omitting it is rejected with an INVALID_PRODUCT_OPTIONS error — when calling reviewOrder or createOrder. This list holds each option’s standard values; other valid values may exist beyond it (e.g. the full PPG color catalog), and any valid value identifier is accepted at order time.
query {
ordering {
searchProducts(manufacturer: "ppg", searchTerm: "interior paint") {
sku
title
options {
key
value
name
hex
}
}
}
}
OrderingAvailability
type OrderingAvailability {
status: OrderingAvailabilityStatus!
quantity: Int!
distributionCenters: [OrderingDistributionCenterAvailability!]!
}
status
OrderingAvailabilityStatus - The availability status of the product. One of IN_STOCK, OUT_OF_STOCK, UNAVAILABLE, or UNKNOWN. The value of status always reflects local availability for the required address provided.
quantity
number - The quantity of the product that is available at the closest distribution center to the property that has the product available.
distributionCenters
OrderingDistributionCenterAvailability[] - Per-distribution-center availability breakdown. Each entry represents a distribution center that carries this product. Only populated when an address is provided. Returns an empty array when distribution center information is unavailable.
OrderingDistributionCenterAvailability
type OrderingDistributionCenterAvailability {
status: OrderingAvailabilityStatus!
quantity: Int!
distributionCenter: OrderingDistributionCenter!
distributionCenterId: ID! @deprecated(reason: "Use distributionCenter { id } instead.")
distributionCenterLatitude: Float @deprecated(reason: "Use distributionCenter { latitude } instead.")
distributionCenterLongitude: Float @deprecated(reason: "Use distributionCenter { longitude } instead.")
distributionCenterAddress: OrderingAddress! @deprecated(reason: "Use distributionCenter { address } instead.")
}
status
OrderingAvailabilityStatus - The availability status of the product at this distribution center. One of IN_STOCK, OUT_OF_STOCK, UNAVAILABLE, or UNKNOWN.
quantity
number - The quantity of the product available at this distribution center.
distributionCenter
OrderingDistributionCenter - The distribution center where this product is available. Use distributionCenter { id } when calling reviewOrder or createOrder to specify a distribution center.
distributionCenterId (deprecated)
string - Deprecated. Use distributionCenter { id } instead.
distributionCenterLatitude (deprecated)
number | null - Deprecated. Use distributionCenter { latitude } instead.
distributionCenterLongitude (deprecated)
number | null - Deprecated. Use distributionCenter { longitude } instead.
distributionCenterAddress (deprecated)
OrderingAddress - Deprecated. Use distributionCenter { address } instead.
OrderingDistributionCenter
type OrderingDistributionCenter {
id: ID!
name: String!
latitude: Float
longitude: Float
address: OrderingAddress!
imageUrl: String
storeNumber: String!
}
id
string - The distribution center’s unique identifier. Use this when placing orders at a specific DC.
name
string - The name of the distribution center.
latitude
number | null - The latitude of the distribution center’s location.
longitude
number | null - The longitude of the distribution center’s location.
address
OrderingAddress - The address of the distribution center.
imageUrl
string | null - The URL of the distribution center’s logo.
storeNumber
string - The store number of the distribution center. May not actually be numeric.
OrderingProductDimensions
type OrderingProductDimensions {
length: Float
lengthUnit: String
width: Float
widthUnit: String
height: Float
heightUnit: String
depth: Float
depthUnit: String
}
A product reports its front-to-back extent under either depth or length depending on its manufacturer’s convention — most appliances report depth, most HVAC equipment reports length — not both.
length
number | null - The numerical length value. Will be null if not available.
lengthUnit
string | null - The unit of measurement for length (e.g., “inch”). Will be null if not available.
width
number | null - The numerical width value. Will be null if not available.
widthUnit
string | null - The unit of measurement for width (e.g., “inch”). Will be null if not available.
height
number | null - The numerical height value. Will be null if not available.
heightUnit
string | null - The unit of measurement for height (e.g., “inch”). Will be null if not available.
depth
number | null - The numerical depth value. Will be null if not available.
depthUnit
string | null - The unit of measurement for depth (e.g., “inch”). Will be null if not available.
OrderingProductUnitOfMeasure
type OrderingProductUnitOfMeasure {
unitOfMeasure: String!
quantityPerBaseUnit: Float!
}
An alternate purchasable unit for a product, and how it converts to the product’s baseUnitOfMeasure. See OrderingProduct.unitsOfMeasure.
unitOfMeasure
string - The unit to pass as unitOfMeasure when calling reviewOrder or createOrder to purchase this product in this unit (e.g. “Box”, “Pallet”).
quantityPerBaseUnit
number - The number of baseUnitOfMeasure contained in each of this unit (e.g. 23.77 sq ft per box). Multiply by the requested quantity of this unit to get the total in the base unit.
OrderingProductDimensionFiltersInput
input OrderingProductDimensionFiltersInput {
minWidth: Float
maxWidth: Float
minHeight: Float
maxHeight: Float
minDepth: Float
maxDepth: Float
minLength: Float
maxLength: Float
}
Inclusive min/max bounds per physical dimension. Field names mirror the OrderingProductDimensions returned on each product, and values are compared against that product’s measurement with no unit conversion — interpret them in the unit reported by the matching *Unit field (inches for most catalog products).
For any dimension:
min*only — matches that dimension or largermax*only — matches that dimension or smaller (e.g. fits within an opening)min*andmax*equal — matches an exact dimension- both, different — matches a bounded range
Bounds across dimensions are AND-ed, and each bound matches only its own field — a length bound never matches a product’s depth, and vice versa. Products with no measurement for a constrained dimension are excluded.
Products report their front-to-back extent as either depth or length (never both) depending on the manufacturer’s convention: most appliances report depth, most HVAC equipment reports length. Choose the field that matches the products you’re searching; check dimensions on the results if unsure. Supplying bounds on both is valid but matches only products that report both measurements — currently none.
A dimension whose min* exceeds its max* can never match and is rejected with an INVALID_DIMENSION_RANGE error rather than returning an empty result.
minWidth
number | undefined - Match products whose width is at least this value (inclusive).
maxWidth
number | undefined - Match products whose width is at most this value (inclusive).
minHeight
number | undefined - Match products whose height is at least this value (inclusive).
maxHeight
number | undefined - Match products whose height is at most this value (inclusive).
minDepth
number | undefined - Match products whose depth is at least this value (inclusive).
maxDepth
number | undefined - Match products whose depth is at most this value (inclusive).
minLength
number | undefined - Match products whose length is at least this value (inclusive).
maxLength
number | undefined - Match products whose length is at most this value (inclusive).
OrderingProductOption
type OrderingProductOption {
key: String!
value: String!
name: String!
title: String! @deprecated(reason: "Use name instead.")
hex: String
}
A value a product’s selectable option can be set to — e.g. one paint color. To select it, pass its { key, value } in products[].options when calling reviewOrder or createOrder. Entries sharing a key are alternative values for the same option. The same type is echoed on reviewOrder responses as the selection on each product line — see OrderingOrderProduct.options.
key
string - The option identifier (e.g. "ppg-paint-color"). Pass this as options[].key when calling reviewOrder or createOrder.
value
string - The value identifier (e.g. the PPG color code "PPG1105-3"). Pass this as options[].value when calling reviewOrder or createOrder.
name
string - The human readable name of the value (e.g. the paint color name “Delicate White”).
title (deprecated)
string - Deprecated. Use name instead.
hex
string | null - The CSS hex color (#RRGGBB) of this value, for values that represent a color (e.g. a paint color). Will be null when the value has no color representation.
OrderingProductPart
type OrderingProductPart {
sku: String!
title: String!
category: String!
priceCents: Int!
}
sku
string - The SKU of the part. It is defined by the manufacturer or distributor.
title
string - The human readable name of the part.
category
string - The broad category this part falls into.
priceCents
number - The price of the part in cents.