# Represents a fulfillment service.
# A fulfillment service is a third-party service that prepares and ships orders on behalf of the store owner.
type FulfillmentService {
# The callback URL that the fulfillment service has registered for requests. The following considerations apply:
#
# Shopify queries the callback_url/fetch_tracking_numbers
endpoint to retrieve tracking numbers
# for orders, if inventoryManagement is set to true.
# Shopify queries the callback_url/fetch_stock
endpoint to retrieve inventory levels,
# if trackingSupport is set to true.
# Shopify uses the callback_url/fulfillment_order_notification
endpoint to send
# fulfillment and cancellation requests,
# if the fulfillment service has opted in to the fulfillment order based workflow for managing fulfillments
# (fulfillmentOrdersOptIn is set to true).
callbackUrl: URL
# Whether the fulfillment service uses the fulfillment order based workflow for managing fulfillments.
fulfillmentOrdersOptIn: Boolean!
# Human-readable unique identifier for this fulfillment service.
handle: String!
# The ID of the fulfillment service.
id: ID!
# Whether the fulfillment service tracks product inventory and provides updates to Shopify.
inventoryManagement: Boolean!
# Location associated with the fulfillment service.
location: Location
# Whether the fulfillment service can stock inventory alongside other locations.
permitsSkuSharing: Boolean!
# Whether the fulfillment service supports local deliveries.
productBased: Boolean!
# The name of the fulfillment service as seen by merchants.
serviceName: String!
# Type associated with the fulfillment service.
type: FulfillmentServiceType!
}
# The quantities of an inventory item that are related to a specific location.
type InventoryLevel implements Node {
# The quantity of inventory items that are available at the inventory level's associated location.
available: Int!
# Whether the inventory items associated with the inventory level can be deactivated.
canDeactivate: Boolean!
# The date and time when the inventory level was created.
createdAt: DateTime!
# Describes either the impact of deactivating the inventory level, or why the inventory level can't be deactivated.
deactivationAlert: String
# Describes, in HTML with embedded URLs, either the impact of deactivating the inventory level or why the inventory level can't be deactivated.
deactivationAlertHtml: FormattedString
# A globally-unique identifier.
id: ID!
# The quantity of inventory items that are going to the inventory level's associated location.
incoming: Int!
# Inventory item associated with the inventory level.
item: InventoryItem!
# The location associated with the inventory level.
location: Location!
# The date and time when the inventory level was updated.
updatedAt: DateTime!
}
# Represents a fulfillment. In Shopify, a fulfillment represents a shipment of one or more items in an order.
# When an order has been completely fulfilled, it means that all the items that are included in the order have been sent to the customer.
# There can be more than one fulfillment for an order.
type Fulfillment implements LegacyInteroperability&Node {
# The date and time when the fulfillment was created.
createdAt: DateTime!
# The date that this fulfillment was delivered.
deliveredAt: DateTime
# Human readable display status for this fulfillment.
displayStatus: FulfillmentDisplayStatus
# The estimated date that this fulfillment will arrive.
estimatedDeliveryAt: DateTime
# The history of events associated with this fulfillment.
events(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
sortKey: FulfillmentEventSortKeys = HAPPENED_AT
): FulfillmentEventConnection!
# List of the fulfillment's line items.
fulfillmentLineItems(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentLineItemConnection!
# A paginated list of fulfillment orders for the fulfillment.
fulfillmentOrders(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentOrderConnection!
# A globally-unique identifier.
id: ID!
# The date and time when the fulfillment went into transit.
inTransitAt: DateTime
# The ID of the corresponding resource in the REST Admin API.
legacyResourceId: UnsignedInt64!
# The location that the fulfillment was processed at.
location: Location
# Human readable reference identifier for this fulfillment.
name: String!
# The order for which the fulfillment was created.
order: Order!
# The address at which the fulfillment occurred.
# Typically this is the address of the warehouse or fulfillment center.
originAddress: FulfillmentOriginAddress
# Whether any of the line items in the fulfillment require shipping.
requiresShipping: Boolean!
# Fulfillment service associated with the fulfillment.
service: FulfillmentService
# The status of the fulfillment.
status: FulfillmentStatus!
# Sum of all line item quantities for the fulfillment.
totalQuantity: Int!
# Tracking information associated with the fulfillment,
# such as the tracking company, tracking number, and tracking URL.
trackingInfo(first: Int): [FulfillmentTrackingInfo!]!
# The date and time when the fulfillment was last modified.
updatedAt: DateTime!
}
# Represents the tracking information for a fulfillment.
type FulfillmentTrackingInfo {
# The name of the tracking company.
company: String
# The tracking number of the fulfillment.
number: String
# The URLs to track the fulfillment.
url: URL
}
# Represents a fulfillment order. In Shopify, a fulfillment order represents a group of one or more items
# in an order that are to be fulfilled from the same location. There can be more than one fulfillment order
# for an order at a given location. Fulfillment orders are created automatically when an order is created.
# To learn how to build a fulfillment app, refer to Fulfillment apps.
type FulfillmentOrder implements Node {
# The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen.
#
# The fulfillment order's assigned location might change in the following cases:
#
# The fulfillment order has been entirely moved to a new location. For example, the fulfillmentOrderMove mutation has been called, and you see the original fulfillment order in the movedFulfillmentOrder field within the mutation's response.
# Work on the fulfillment order has not yet begun, which means that the fulfillment order has the
# OPEN,
# SCHEDULED, or
# ON_HOLD
# status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin).
assignedLocation: FulfillmentOrderAssignedLocation!
# Delivery method of this fulfillment order.
deliveryMethod: DeliveryMethod
# The destination where the items should be sent.
destination: FulfillmentOrderDestination
# The date and time at which the fulfillment order will be fulfillable.
# When this date and time is reached, the scheduled fulfillment order is automatically transitioned to open.
# For example, the fulfill_at date for a subscription order might be the 1st of each month, a pre-order fulfill_at date would be nil, and a standard order fulfill_at date would be the order creation date.
fulfillAt: DateTime
# The latest date and time by which all items in the fulfillment order need to be fulfilled.
fulfillBy: DateTime
# The fulfillment holds applied on the fulfillment order.
fulfillmentHolds: [FulfillmentHold!]!
# A list of fulfillments for the fulfillment order.
fulfillments(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentConnection!
# A globally-unique identifier.
id: ID!
# The duties delivery method of this fulfillment order.
internationalDuties: FulfillmentOrderInternationalDuties
# A list of the fulfillment order's line items.
lineItems(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentOrderLineItemConnection!
# A list of locations that the fulfillment order can potentially move to.
locationsForMove(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentOrderLocationForMoveConnection!
# A list of requests sent by the merchant to the fulfillment service for this fulfillment order.
merchantRequests(
kind: FulfillmentOrderMerchantRequestKind
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): FulfillmentOrderMerchantRequestConnection!
# The order that's associated with the fulfillment order.
order: Order!
# The request status of the fulfillment order.
requestStatus: FulfillmentOrderRequestStatus!
# The status of the fulfillment order.
status: FulfillmentOrderStatus!
# The actions that can be performed on this fulfillment order.
supportedActions: [FulfillmentOrderSupportedAction!]!
}
# The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen.
#
# The fulfillment order's assigned location might change in the following cases:
#
# The fulfillment order has been entirely moved to a new location. For example, the fulfillmentOrderMove mutation has been called, and you see the original fulfillment order in the movedFulfillmentOrder field within the mutation's response.
#
# Work on the fulfillment order has not yet begun, which means that the fulfillment order has the
# OPEN,
# SCHEDULED, or
# ON_HOLD
# status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin).
#
# If the fulfillmentOrderMove mutation has moved the fulfillment order's line items to a new location,
# but hasn't moved the fulfillment order instance itself, then the original fulfillment order's assigned location
# doesn't change.
# This happens if the fulfillment order is being split during the move, or if all line items can be moved
# to an existing fulfillment order at a new location.
#
# Once the fulfillment order has been taken into work or canceled,
# which means that the fulfillment order has the
# IN_PROGRESS,
# CLOSED,
# CANCELLED, or
# INCOMPLETE
# status, FulfillmentOrderAssignedLocation acts as a snapshot of the shop's location content.
# Up-to-date shop's location data may be queried through location connection.
type FulfillmentOrderAssignedLocation {
# The first line of the address for the location.
address1: String
# The second line of the address for the location.
address2: String
# The city of the location.
city: String
# The two-letter country code of the location.
countryCode: CountryCode!
# The location where the fulfillment is expected to happen. This value might be different from
# FulfillmentOrderAssignedLocation if the location's attributes were updated
# after the fulfillment order was taken into work of canceled.
location: Location
# The name of the location.
name: String!
# The phone number of the location.
phone: String
# The province of the location.
province: String
# The ZIP code of the location.
zip: String
}
# Represents the goods available to be shipped to a customer.
# It holds essential information about the goods, including SKU and whether it is tracked.
type InventoryItem implements LegacyInteroperability&Node {
# The ISO 3166-1 alpha-2 country code of where the item originated from.
countryCodeOfOrigin: CountryCode
# A list of country specific harmonized system codes.
countryHarmonizedSystemCodes(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
): CountryHarmonizedSystemCodeConnection!
# The date and time when the inventory item was created.
createdAt: DateTime!
# The number of inventory items that share the same SKU with this item.
duplicateSkuCount: Int!
# The harmonized system code of the item.
harmonizedSystemCode: String
# A globally-unique identifier.
id: ID!
# The URL that points to the inventory history for the item.
inventoryHistoryUrl: URL
# The inventory item's quantities at the specified location.
inventoryLevel(locationId: ID!): InventoryLevel
# A list of the inventory item's quantities for each location that the inventory item can be stocked at.
inventoryLevels(
first: Int
after: String
last: Int
before: String
reverse: Boolean = false
query: String
): InventoryLevelConnection!
# The ID of the corresponding resource in the REST Admin API.
legacyResourceId: UnsignedInt64!
# The number of locations where this inventory item is stocked.
locationsCount: Int!
# The ISO 3166-2 alpha-2 province code of where the item originated from.
provinceCodeOfOrigin: String
# Whether the inventory item requires shipping.
requiresShipping: Boolean!
# Inventory item SKU.
sku: String
# Whether inventory levels are tracked for the item.
tracked: Boolean!
# Whether the value of the tracked field for the inventory item can be changed.
trackedEditable: EditableProperty!
# Unit cost associated with the inventory item.
unitCost: MoneyV2
# The date and time when the inventory item was updated.
updatedAt: DateTime!
# The variant that owns this inventory item.
variant: ProductVariant!
}
# The address at which the fulfillment occurred.
# Typically this is the address of the warehouse or fulfillment center.
type FulfillmentOriginAddress {
# The street address of the fulfillment location.
address1: String
# The second line of the address. Typically the number of the apartment, suite, or unit.
address2: String
# The city in which the fulfillment location is located.
city: String
# The country code of the fulfillment location.
countryCode: String!
# The province code of the fulfillment location.
provinceCode: String
# The zip code of the fulfillment location.
zip: String
}
# Represents the destination where the items should be sent upon fulfillment.
type FulfillmentOrderDestination implements Node {
# The first line of the address of the destination.
address1: String
# The second line of the address of the destination.
address2: String
# The city of the destination.
city: String
# The company of the destination.
company: String
# The two-letter country code of the destination.
countryCode: CountryCode
# The email of the customer at the destination.
email: String
# The first name of the customer at the destination.
firstName: String
# A globally-unique identifier.
id: ID!
# The last name of the customer at the destination.
lastName: String
# The phone number of the customer at the destination.
phone: String
# The province of the destination.
province: String
# The ZIP code of the destination.
zip: String
}
# A fulfillment hold currently applied on a fulfillment order.
type FulfillmentHold {
# The reason for the fulfillment hold.
reason: FulfillmentHoldReason!
# Additional information about the fulfillment hold reason.
reasonNotes: String
}
# The international duties relevant to a fulfillment order.
type FulfillmentOrderInternationalDuties {
# The method of duties payment. Example values: DDP, DAP.
incoterm: String!
}
# One of the actions that the fulfillment order supports in its current state.
type FulfillmentOrderSupportedAction {
# The action value.
action: FulfillmentOrderAction!
# The external URL to be used to initiate the fulfillment process outside Shopify.
# Applicable only when the action value is EXTERNAL.
externalUrl: URL
}
# The fulfillment event that describes the fulfilllment status at a particular time.
type FulfillmentEvent implements Node {
# The time at which this fulfillment event happened.
happenedAt: DateTime!
# A globally-unique identifier.
id: ID!
# The status of this fulfillment event.
status: FulfillmentEventStatus!
}
# Represents a line item from an order that's included in a fulfillment.
type FulfillmentLineItem implements Node {
# The total price after discounts are applied in shop and presentment currencies.
discountedTotalSet: MoneyBag!
# A globally-unique identifier.
id: ID!
# The associated order's line item.
lineItem: LineItem!
# The total price before discounts are applied in shop and presentment currencies.
originalTotalSet: MoneyBag!
# Number of line items in the fulfillment.
quantity: Int
}
# Associates an order line item with quantities requiring fulfillment from the respective fulfillment order.
type FulfillmentOrderLineItem implements Node {
# A globally-unique identifier.
id: ID!
# The associated order line item.
lineItem: LineItem!
# The number of units remaining to be fulfilled.
remainingQuantity: Int!
# The total number of units to be fulfilled.
totalQuantity: Int!
# Warning messages for a fulfillment order line item.
warnings: [FulfillmentOrderLineItemWarning!]!
}
# A fulfillment order line item warning. For example, a warning about why a fulfillment request was rejected.
type FulfillmentOrderLineItemWarning {
# The description of warning.
description: String
# The title of warning.
title: String
}
# A location that a fulfillment order can potentially move to.
type FulfillmentOrderLocationForMove {
# The location being considered as the fulfillment order's new assigned location.
location: Location!
# A human-readable string with the reason why the fulfillment order, or some of its line items, can't be
# moved to the location.
message: String
# Whether the fulfillment order can be moved to the location.
movable: Boolean!
}
# Represents a request made by the merchant to a fulfillment service for a fulfillment order.
type FulfillmentOrderMerchantRequest implements Node {
# A globally-unique identifier.
id: ID!
# The kind of request made.
kind: FulfillmentOrderMerchantRequestKind!
# The optional message that the merchant included in the request.
message: String
# Additional options requested by the merchant. These depend on the kind of the request.
# For example, for a FULFILLMENT_REQUEST, one option is notify_customer, which indicates whether the
# merchant intends to notify the customer upon fulfillment. The fulfillment service can then set
# notifyCustomer when making calls to FulfillmentCreateV2.
requestOptions: JSON
# The response from the fulfillment service.
responseData: JSON
# The timestamp when the request was made.
sentAt: DateTime!
}