Skip to content

Instantly share code, notes, and snippets.

@tuldok89
Created November 18, 2019 05:04
Show Gist options
  • Save tuldok89/b86172cad72e289d3b83803a4840a135 to your computer and use it in GitHub Desktop.
Save tuldok89/b86172cad72e289d3b83803a4840a135 to your computer and use it in GitHub Desktop.
Shopify GraphQL IDL
schema {
query: QueryRoot
mutation: Mutation
}
"""Marks an element of a GraphQL schema as having restricted access."""
directive @accessRestricted(
"""Explains the reason around this restriction"""
reason: String = null
) on FIELD_DEFINITION | OBJECT
"""
Represents the access scope permission that is applicable to a merchant's shop, such as `read_orders`.
"""
type AccessScope {
"""Description of the access scopes enabled on an api permission."""
description: String!
"""A human-friendly string for an access scope."""
handle: String!
}
"""Succinct overview of a shop activity."""
type Activity {
"""True if the message already contains the author name."""
attributed: Boolean!
"""Event author name. This may be a user name, app name or `Shopify`."""
author: String!
"""When the activity event occured."""
createdAt: DateTime!
"""
An array of formatted messages, each providing detail about the activity. Typically only a single message is present.
"""
messages: [FormattedString!]!
"""The topic of the activity, used to display an appropriate icon."""
topic: ActivityTopic!
}
type ActivityConnection {
"""A list of edges."""
edges: [ActivityEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ActivityEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ActivityEdge."""
node: Activity!
}
"""
The topic of the activity, used to display an appropriate icon or a default icon.
"""
enum ActivityTopic {
PRODUCTS
PAYMENTS
ONLINE_STORE
COLLECTIONS
BLOGS
APPS
MERCHANT
DOMAINS
SCRIPT
PAGES
DEFAULT
}
"""Whether all items in the cart are entitled to the discount."""
type AllDiscountItems {
"""Whether all items are selected. The value is hardcoded to `true`."""
allItems: Boolean!
}
"""A version of the API."""
type ApiVersion {
"""The human-readable name of the version."""
displayName: String!
"""
The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle.
"""
handle: String!
"""Whether the version is supported by Shopify."""
supported: Boolean!
}
"""A Shopify application."""
type App implements Node {
"""A unique application API identifier."""
apiKey: String!
"""App store page URL of the app."""
appStoreAppUrl: URL
"""App store page URL of the developer who created the app."""
appStoreDeveloperUrl: URL
"""Banner image for the app."""
banner: Image!
"""Description of the app."""
description: String
"""App's developer name."""
developerName: String
"""Website of the developer who created the app."""
developerUrl: URL! @deprecated(reason: "Use `appStoreDeveloperUrl` instead")
"""Whether the app uses the Embedded App SDK."""
embedded: Boolean!
"""Requirements that must be met before the app can be installed."""
failedRequirements: [FailedRequirement!]!
"""List of app features."""
features: [String!]!
"""Feedback from this app about the store."""
feedback: AppFeedback
"""Handle of the app."""
handle: String
"""Icon that represents the app."""
icon: Image!
"""Globally unique identifier."""
id: ID!
"""Webpage where you can install the app."""
installUrl: URL
"""
Corresponding AppInstallation for this shop and App.
Returns null if the App is not installed.
"""
installation: AppInstallation
"""Webpage that the app starts in."""
launchUrl: URL! @deprecated(reason: "Use AppInstallation.launchUrl instead")
"""
Menu items for the app, which also appear as submenu items in left navigation sidebar in the Shopify admin.
"""
navigationItems: [NavigationItem!]! @deprecated(reason: "Use AppInstallation.navigationItems instead")
"""Detailed information about the app pricing."""
pricingDetails: String
"""Summary of the app pricing details."""
pricingDetailsSummary: String!
"""Link to app privacy policy."""
privacyPolicyUrl: URL
"""Whether the app is published."""
published: Boolean!
"""Screenshots of the app."""
screenshots: [Image!]!
"""Whether the app was developed by Shopify."""
shopifyDeveloped: Boolean!
"""Name of the app."""
title: String!
"""
Message that appears when the app is uninstalled.
For example, _By removing this app, you will no longer be able to publish
products to MySocialSite or view this app in your Shopify admin. You can
re-enable this channel at any time._
"""
uninstallMessage: String!
"""Webpage where you can uninstall the app."""
uninstallUrl: URL @deprecated(reason: "Use AppInstallation.uninstallUrl instead")
}
type AppConnection {
"""A list of edges."""
edges: [AppEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""
App credits can be applied by the merchant towards future app purchases, subscriptions, or usage records in Shopify.
"""
type AppCredit implements Node {
"""The amount that can be used towards future app purchases in Shopify."""
amount: MoneyV2!
"""The date and time when the app credit was created."""
createdAt: DateTime!
"""The description of the app credit."""
description: String!
"""Globally unique identifier."""
id: ID!
"""Whether the app credit is a test transaction."""
test: Boolean!
}
type AppCreditConnection {
"""A list of edges."""
edges: [AppCreditEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `appCreditCreate` mutation."""
type AppCreditCreatePayload {
"""The newly created app credit."""
appCredit: AppCredit
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type AppCreditEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppCreditEdge."""
node: AppCredit!
}
type AppEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppEdge."""
node: App!
}
"""
Reports the status of shops and their resources and displays this information
within Shopify admin. AppFeedback is used to notify merchants about steps they need to take
to set up an app on their store.
"""
type AppFeedback {
"""The application associated to the feedback."""
app: App!
"""A link to where merchants can resolve errors."""
link: Link
"""The feedback message presented to the merchant."""
messages: [UserError!]!
}
"""Represents an installed application on a shop."""
type AppInstallation implements Node {
"""Access scopes granted to an app by a merchant during installation."""
accessScopes: [AccessScope!]!
"""Active subscriptions charged to a shop on a recurring basis."""
activeSubscriptions: [AppSubscription!]!
"""All subscriptions created for a shop."""
allSubscriptions(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppSubscriptionSortKeys = CREATED_AT
): AppSubscriptionConnection!
"""Application which is installed."""
app: App!
"""Channel associated with the installed application."""
channel: Channel @deprecated(reason: "Use `publication` instead")
"""Credits that can be used towards future app purchases."""
credits(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppTransactionSortKeys = CREATED_AT
): AppCreditConnection!
"""Globally unique identifier."""
id: ID!
"""Url used to launch the app."""
launchUrl: URL!
"""One-time purchases to a shop."""
oneTimePurchases(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppTransactionSortKeys = CREATED_AT
): AppPurchaseOneTimeConnection!
"""Publication associated with the installed application."""
publication: Publication
"""Subscriptions charge to a shop on a recurring basis."""
subscriptions: [AppSubscription!]! @deprecated(reason: "Use `activeSubscriptions` instead")
"""Webpage where you can uninstall the app."""
uninstallUrl: URL
}
"""Possible categories of an app installation."""
enum AppInstallationCategory {
"""Sales channel apps."""
CHANNEL
"""Apps that can be used in the POS mobile client."""
POS_EMBEDDED
}
type AppInstallationConnection {
"""A list of edges."""
edges: [AppInstallationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type AppInstallationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppInstallationEdge."""
node: AppInstallation!
}
"""Possible privacy types of an app installation."""
enum AppInstallationPrivacy {
PUBLIC
PRIVATE
}
"""The set of valid sort keys for the appInstallations query."""
enum AppInstallationSortKeys {
"""Sort by the `installed_at` value."""
INSTALLED_AT
"""Sort by the `app_title` value."""
APP_TITLE
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Fields required to install an app."""
input AppInstallInput {
"""The ID for the channel API client to be installed."""
id: ID!
}
"""Defines the pricing model for the app subscription."""
input AppPlanInput {
"""Usage based billing pricing details."""
appUsagePricingDetails: AppUsagePricingInput
"""Recurring based billing pricing details."""
appRecurringPricingDetails: AppRecurringPricingInput
}
"""Defines the app plan the merchant is subscribed to."""
type AppPlanV2 {
"""Defines the pricing model for the app subscription."""
pricingDetails: AppPricingDetails!
}
"""Information about the price charged to a shop every plan period."""
union AppPricingDetails = AppUsagePricing | AppRecurringPricing
"""Interval for which pricing details are applied."""
enum AppPricingInterval {
"""App plan pricing details are applied every 30 days."""
EVERY_30_DAYS
}
"""Services and features purchased once by the store."""
interface AppPurchase {
"""The date and time when the app purchase was created."""
createdAt: DateTime!
"""The name of the app purchase."""
name: String!
"""The amount to be charged to the store for the app purchase."""
price: MoneyV2!
"""
The status of the app purchase. Possible values include pending, active, declined and cancelled.
"""
status: AppPurchaseStatus!
"""Whether the app purchase is a test transaction."""
test: Boolean!
}
"""Services and features purchased once by a store."""
type AppPurchaseOneTime implements AppPurchase & Node {
"""The date and time when the app purchase was created."""
createdAt: DateTime!
"""Globally unique identifier."""
id: ID!
"""The name of the app purchase."""
name: String!
"""The amount to be charged to the store for the app purchase."""
price: MoneyV2!
"""
The status of the app purchase. Possible values include pending, active, declined and cancelled.
"""
status: AppPurchaseStatus!
"""Whether the app purchase is a test transaction."""
test: Boolean!
}
type AppPurchaseOneTimeConnection {
"""A list of edges."""
edges: [AppPurchaseOneTimeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `appPurchaseOneTimeCreate` mutation."""
type AppPurchaseOneTimeCreatePayload {
"""The newly created app one-time purchase."""
appPurchaseOneTime: AppPurchaseOneTime
"""
The URL where the merchant can approve or decline the app one-time purchase.
"""
confirmationUrl: URL
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type AppPurchaseOneTimeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppPurchaseOneTimeEdge."""
node: AppPurchaseOneTime!
}
"""The status of the purchase."""
enum AppPurchaseStatus {
"""
The app purchase has been approved by the merchant and is ready to be
activated by the app. App purchases created through the GraphQL Admin API are
activated upon approval.
"""
ACCEPTED
"""
The app purchase has been activated by the app. Active app purchases are
charged to the store and partners receive payouts for active app purchase.
"""
ACTIVE
"""The app purchase was declined by the merchant."""
DECLINED
"""The app purchase was not accepted within 2 days of being created."""
EXPIRED
"""The app purchase is pending approval by the merchant."""
PENDING
}
"""Price charged every interval."""
type AppRecurringPricing {
"""
Specifies the number of days in a billing cycle of the app subscription.
"""
interval: AppPricingInterval!
"""The amount to be charged to the store every billing interval."""
price: MoneyV2!
}
"""Allows an app to charge per billing interval."""
input AppRecurringPricingInput {
"""
The amount to be charged to the store every billing interval. The only permitted currency code is USD.
"""
price: MoneyInput!
}
"""The set of valid sort keys for the installedApps query."""
enum AppsSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Provides users access to services and/or features for a duration of time.
"""
type AppSubscription implements Node {
"""The date and time when the app subscription was created."""
createdAt: DateTime!
"""The date and time when the current app subscription period ends."""
currentPeriodEnd: DateTime
"""Globally unique identifier."""
id: ID!
"""Attaches a plan to an app subscription."""
lineItems: [AppSubscriptionLineItem!]!
"""The name of the app subscription."""
name: String!
"""
The URL where the merchant is redirected after approving the app subscription.
"""
returnUrl: URL!
"""
The status of the app subscription. Possible values include pending, active, declined,
expired, frozen, and cancelled.
"""
status: AppSubscriptionStatus!
"""Specifies whether the app subscription is a test transaction."""
test: Boolean!
"""The number of days of the free trial."""
trialDays: Int!
}
"""Return type for `appSubscriptionCancel` mutation."""
type AppSubscriptionCancelPayload {
"""The cancelled app subscription."""
appSubscription: AppSubscription
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type AppSubscriptionConnection {
"""A list of edges."""
edges: [AppSubscriptionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `appSubscriptionCreate` mutation."""
type AppSubscriptionCreatePayload {
"""The newly created app subscription."""
appSubscription: AppSubscription
"""The URL where the merchant approves or declines an app subscription."""
confirmationUrl: URL
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type AppSubscriptionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppSubscriptionEdge."""
node: AppSubscription!
}
"""Attaches a plan to an app subscription."""
type AppSubscriptionLineItem {
"""Globally unique identifier."""
id: ID!
"""Defines the pricing model for the app subscription."""
plan: AppPlanV2!
"""Lists the store's usage for a usage pricing plan."""
usageRecords(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppUsageRecordSortKeys = CREATED_AT
): AppUsageRecordConnection!
}
"""Allows an app to add more than one plan to an app subscription."""
input AppSubscriptionLineItemInput {
"""Defines the pricing model for the app subscription."""
plan: AppPlanInput!
}
"""Return type for `appSubscriptionLineItemUpdate` mutation."""
type AppSubscriptionLineItemUpdatePayload {
"""The updated app subscription."""
appSubscription: AppSubscription
"""
The URL where the merchant approves or declines the updated app subscription line item.
"""
confirmationUrl: URL
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the allSubscriptions query."""
enum AppSubscriptionSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The status of the app subscription."""
enum AppSubscriptionStatus {
"""The app subscription is pending approval by the merchant."""
PENDING
"""
The app subscription has been approved by the merchant and is ready to be
activated by the app. App subscriptions created through the GraphQL Admin API
are activated upon approval.
"""
ACCEPTED
"""
The app subscription has been activated by the app. Active app subscriptions
are charged to the store and partners recieve payouts for active app subscriptions.
"""
ACTIVE
"""The app subscription was declined by the merchant."""
DECLINED
"""The app subscription was not accepted within 2 days of being created."""
EXPIRED
"""
The app subscription is on hold due to a store subscription non-payment. The
charge will re-activate once subscription payments resume.
"""
FROZEN
"""The app subscription was cancelled by the app."""
CANCELLED
}
"""The set of valid sort keys for the oneTimePurchases query."""
enum AppTransactionSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Input fields used to uninstall an app."""
input AppUninstallInput {
"""The id for the app api client to be uninstalled."""
id: ID!
"""
Reason selected from a list of predefined reasons for uninstalling the app.
"""
feedback: String
"""
Free form text description for uninstalling the app.
To be provided only when feedback has been provided.
"""
feedbackDescription: String
"""Additional attributes to pass along during app installation."""
extraAttributes: JSON
}
"""Defines the usage pricing model for the app subscription."""
type AppUsagePricing {
"""The total usage records for interval."""
balanceUsed: MoneyV2!
"""The limit a store can be charged for usage based pricing."""
cappedAmount: MoneyV2!
"""Specifies the interval which usage records are applied."""
interval: AppPricingInterval!
"""The terms and conditions for app usage pricing."""
terms: String!
}
"""Allows an app to charge a store for usage."""
input AppUsagePricingInput {
"""The limit a customer can be charged for usage based pricing."""
cappedAmount: MoneyInput!
"""The terms and conditions for app usage."""
terms: String!
}
"""Store usage for app subscriptions with usage pricing."""
type AppUsageRecord implements Node {
"""The date and time when the usage record was created."""
createdAt: DateTime!
"""The description of the app usage record."""
description: String!
"""Globally unique identifier."""
id: ID!
"""
The price of the usage record. The only permitted currency code is USD.
"""
price: MoneyV2!
"""Defines the usage pricing plan the merchant is subscribed to."""
subscriptionLineItem: AppSubscriptionLineItem!
}
type AppUsageRecordConnection {
"""A list of edges."""
edges: [AppUsageRecordEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `appUsageRecordCreate` mutation."""
type AppUsageRecordCreatePayload {
"""The newly created app usage record."""
appUsageRecord: AppUsageRecord
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type AppUsageRecordEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of AppUsageRecordEdge."""
node: AppUsageRecord!
}
"""The set of valid sort keys for the usageRecords query."""
enum AppUsageRecordSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Specifies the input fields for an attachment."""
input AttachmentInput {
"""ID of the attachment."""
id: ID
"""The URL of the attachment. Must be a signed upload URL."""
url: String
}
"""Represents a generic custom attribute."""
type Attribute {
"""Key or name of the attribute."""
key: String!
"""Value of the attribute."""
value: String
}
"""Specifies the input fields required for an attribute."""
input AttributeInput {
"""Key or name of the attribute."""
key: String!
"""Value of the attribute."""
value: String!
}
"""
Automatic discount applications capture the intentions of a discount that was automatically applied.
"""
type AutomaticDiscountApplication implements DiscountApplication {
"""
The method by which the discount's value is allocated to its entitled items.
"""
allocationMethod: DiscountApplicationAllocationMethod!
"""
An ordered index that can be used to identify the discount application and indicate the precedence
of the discount application for calculations.
"""
index: Int!
"""How the discount amount is distributed on the discounted lines."""
targetSelection: DiscountApplicationTargetSelection!
"""Whether the discount is applied on line items or shipping lines."""
targetType: DiscountApplicationTargetType!
"""The title of the discount application."""
title: String!
"""The value of the discount application."""
value: PricingValue!
}
"""The set of valid sort keys for the automaticDiscounts query."""
enum AutomaticDiscountSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Basic events chronicle resource activities such as the creation of an article, the fulfillment of an order, or
the addition of a product.
"""
type BasicEvent implements Node & Event {
"""
The name of the app that created the event. Returns null when the event originates from the Shopify admin.
"""
appTitle: String
"""Whether the event was created by an app."""
attributeToApp: Boolean!
"""Whether the event was caused by an admin user."""
attributeToUser: Boolean!
"""The date and time when the event was created."""
createdAt: DateTime!
"""Whether the event is critical."""
criticalAlert: Boolean!
"""Globally unique identifier."""
id: ID!
"""Human readable text that describes the event."""
message: FormattedString!
}
"""Represents the dimensions of a three-dimensional box."""
type BoxDimensions {
"""The height in `unit`s."""
height: Float!
"""The length in `unit`s."""
length: Float!
"""Unit of measurement for `length`, `width`, and `height`."""
unit: LengthUnit!
"""The width in `unit`s."""
width: Float!
}
"""
An asynchronous long-running operation to fetch data in bulk.
Bulk operations are created using the `bulkOperationRunQuery` mutation. After they are created,
clients should poll the `status` field for updates. When `COMPLETED`, the `url` field contains
a link to the data in [JSONL](http://jsonlines.org/) format.
See the [bulk operations guide](https://help.shopify.com/api/guides/bulk-operations) for more details.
"""
type BulkOperation implements Node {
"""When the bulk operation was successfully completed."""
completedAt: DateTime
"""When the bulk operation was created."""
createdAt: DateTime!
"""Error code for failed operations."""
errorCode: BulkOperationErrorCode
"""File size in bytes of the file in the `url` field."""
fileSize: UnsignedInt64
"""Globally unique identifier."""
id: ID!
"""
The running count of objects processed. This can be used to track operation progress.
"""
objectCount: UnsignedInt64!
"""
URL to partial/incomplete response data (in [JSONL](http://jsonlines.org/) format) returned by a failed operation.
Expires **one week** after the operation fails. Returns `null` when there's no data available.
"""
partialDataUrl: URL
"""GraphQL query document specified in `bulkOperationRunQuery`."""
query: String!
"""Status of the bulk operation."""
status: BulkOperationStatus!
"""
URL to the response data in [JSONL](http://jsonlines.org/) format.
Expires **one week** after the operation completes.
"""
url: URL
}
"""Return type for `bulkOperationCancel` mutation."""
type BulkOperationCancelPayload {
"""The bulk operation to be canceled."""
bulkOperation: BulkOperation
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Error codes for failed bulk operations."""
enum BulkOperationErrorCode {
"""
The provided operation `query` returned access denied due to missing
[access scopes](https://help.shopify.com/api/getting-started/authentication/oauth/scopes).
Review the requested object permissions and execute the query as a normal non-bulk GraphQL request to see more details.
"""
ACCESS_DENIED
"""
Operation resulted in partial or incomplete data due to internal server errors during execution.
"""
INTERNAL_SERVER_ERROR
"""
Operation resulted in partial or incomplete data due to query timeouts during execution.
In some cases, timeouts can be avoided by modifying your `query` to select fewer fields.
"""
TIMEOUT
}
"""Return type for `bulkOperationRunQuery` mutation."""
type BulkOperationRunQueryPayload {
"""The newly created bulk operation."""
bulkOperation: BulkOperation
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Statuses of a bulk operation."""
enum BulkOperationStatus {
"""Operation created."""
CREATED
"""Operation running."""
RUNNING
"""Operation completed."""
COMPLETED
"""Operation canceling."""
CANCELING
"""Operation canceled."""
CANCELED
"""Operation failed."""
FAILED
"""Operation URL has expired."""
EXPIRED
}
"""The computed properties for a draft order."""
type CalculatedDraftOrder {
"""Order-level discount applied to the draft order."""
appliedDiscount: DraftOrderAppliedDiscount
"""
The available shipping rates for the draft order. Requires a customer with a
valid shipping address and at least one line item.
"""
availableShippingRates: [ShippingRate!]!
"""
Customer who will be sent an invoice for the draft order, if there is one.
"""
customer: Customer
"""Line items in the draft order with their computed properties."""
lineItems: [CalculatedDraftOrderLineItem!]!
"""Line item that contains the shipping costs."""
shippingLine: ShippingLine
"""
Subtotal of the line items and their discounts (does not contain shipping charges or shipping discounts, or taxes).
"""
subtotalPrice: Money!
"""Total amount of taxes charged for each line item and shipping line."""
taxLines: [TaxLine!]!
"""
Total amount of the draft order (includes taxes, shipping charges, and discounts).
"""
totalPrice: Money!
"""Total shipping charge for the draft order."""
totalShippingPrice: Money!
"""Total amount of taxes for the draft order."""
totalTax: Money!
}
"""The computed line items for a draft order."""
type CalculatedDraftOrderLineItem {
"""Discount applied to the line item."""
appliedDiscount: DraftOrderAppliedDiscount
"""
Indicates if this is a product variant line item, or a custom line item.
"""
custom: Boolean!
"""List of additional information (metafields) about the line item."""
customAttributes: [Attribute!]!
"""Total price with discounts applied."""
discountedTotal: MoneyV2!
"""Unit price with discounts applied."""
discountedUnitPrice: MoneyV2!
"""
Name of the service provider who fulfilled the order.
Valid values are either **manual** or the name of the provider.
For example, **amazon**, **shipwire**.
"""
fulfillmentService: FulfillmentService!
"""Image associated with the draft order line item."""
image: Image
"""Indicates whether the line item represents the puchase of a gift card."""
isGiftCard: Boolean!
"""Name of the product."""
name: String!
"""
Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
"""
originalTotal: MoneyV2!
"""Variant price without any discounts applied."""
originalUnitPrice: MoneyV2!
"""Product associated with the draft order line item."""
product: Product
"""Number of variant items requested in the draft order."""
quantity: Int!
"""Whether physical shipping is required for the variant."""
requiresShipping: Boolean!
"""Variant SKU number."""
sku: String
"""Whether the variant is taxable."""
taxable: Boolean!
"""
Title of the product or variant (this field only applies to custom line items).
"""
title: String!
"""Total value of the discount."""
totalDiscount: MoneyV2!
"""Variant associated with the draft order line item."""
variant: ProductVariant
"""Name of the variant."""
variantTitle: String
"""Name of the vendor who made the variant."""
vendor: String
"""Weight unit and value for a draft order line item."""
weight: Weight
}
"""
A channel is a group of products and collections that is published to an app. A
channel can be a platform or marketplace such
as Facebook or Pinterest, an online store, or POS.
"""
type Channel implements Node {
"""Underlying app used by the channel."""
app: App!
"""
The collection publications for the list of collections published to the channel.
"""
collectionPublicationsV3(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""The list of collections published to the channel."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionConnection!
"""Unique identifier for the channel."""
handle: String! @deprecated(reason: "Use `id` instead")
"""Whether the collection is available to the channel."""
hasCollection(
"""Collection ID to check."""
id: ID!
): Boolean!
"""Globally unique identifier."""
id: ID!
"""Name of the channel."""
name: String!
"""
Menu items for the channel, which also appear as submenu items in left navigation sidebar in the Shopify admin.
"""
navigationItems: [NavigationItem!]! @deprecated(reason: "Use App.navigation_items instead")
"""Home page for the channel."""
overviewPath: URL @deprecated(reason: "Use App.launch_url instead")
productPublications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductPublicationConnection! @deprecated(reason: "Use `productPublicationsV3` instead")
"""
The product publications for the list of products published to the channel.
"""
productPublicationsV3(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""The list of products published to the channel."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductConnection!
"""Whether or not this channel supports future publishing."""
supportsFuturePublishing: Boolean!
}
type ChannelConnection {
"""A list of edges."""
edges: [ChannelEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ChannelEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ChannelEdge."""
node: Channel!
}
"""Chat event origin tag."""
enum ChatEventOriginTag {
"""Plus"""
ORIGIN_PLUS
"""Plus segmented"""
ORIGIN_PLUS_SEGMENTED
}
"""The set of valid sort keys for the codeDiscountNodes query."""
enum CodeDiscountSortKeys {
"""Sort by the `starts_at` value."""
STARTS_AT
"""Sort by the `ends_at` value."""
ENDS_AT
"""Sort by the `title` value."""
TITLE
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Represents a collection of products.
"""
type Collection implements HasMetafields & Node & Publishable & HasPublishedTranslations {
"""
The number of publications a resource is published to without feedback errors.
"""
availablePublicationCount: Int!
"""
The stripped description of the collection, in a single line with HTML tags removed.
"""
description(
"""Truncates string after the given length."""
truncateAt: Int
): String!
"""The description of the collection, complete with HTML formatting."""
descriptionHtml: HTML!
"""
Information about the collection that's provided through resource feedback.
"""
feedback: ResourceFeedback
"""
A unique human-friendly string for the collection. Automatically generated from the collection's title.
"""
handle: String!
"""Whether the collection includes a product."""
hasProduct(
"""The ID of the product to check."""
id: ID!
): Boolean!
"""Globally unique identifier."""
id: ID!
"""The image associated with the collection."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""The products that are included in the collection."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductCollectionSortKeys = COLLECTION_DEFAULT
"""
This field is only used when the collection is smart. If the collection is custom it returns an error.
Supported filter parameters:
- `title`
- `product_type`
- `vendor`
- `gift_card`
- `created_at`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): ProductConnection!
"""The number of products included in the collection."""
productsCount: Int!
"""The number of publications a resource is published on."""
publicationCount(
"""
Include only the resource's publications that are published. If false, then
return all the resource's publications including future publications.
"""
onlyPublished: Boolean = true
): Int!
"""The channels where the collection is published."""
publications(
"""
Whether or not to return only the collection publications that are published.
"""
onlyPublished: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionPublicationConnection! @deprecated(reason: "Use `resourcePublications` instead")
"""Check to see whether the resource is published to a given channel."""
publishedOnChannel(
"""The ID of the channel to check."""
channelId: ID!
): Boolean! @deprecated(reason: "Use `publishedOnPublication` instead")
"""
Check to see whether the resource is published to the calling app's channel.
"""
publishedOnCurrentChannel: Boolean! @deprecated(reason: "Use `publishedOnCurrentPublication` instead")
"""
Check to see whether the resource is published to the calling app's publication.
"""
publishedOnCurrentPublication: Boolean!
"""Check to see whether the resource is published to a given publication."""
publishedOnPublication(
"""The ID of the publication to check."""
publicationId: ID!
): Boolean!
"""The list of resources that are published to a publication."""
resourcePublications(
"""
Return only the resources that are published. If false, then return all resource publications.
"""
onlyPublished: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""
The rules used to assign products to the collection. This applies only to smart collections.
"""
ruleSet: CollectionRuleSet
"""SEO information for the collection."""
seo: SEO!
"""The order in which the collection's products are sorted."""
sortOrder: CollectionSortOrder!
"""The storefront ID of the collection."""
storefrontId: StorefrontID!
"""The theme template used when viewing this collection in a store."""
templateSuffix: String
"""The title of the collection."""
title: String!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""The list of channels that the resource is not published to."""
unpublishedChannels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ChannelConnection! @deprecated(reason: "Use `unpublishedPublications` instead")
"""The list of publications that the resource is not published to."""
unpublishedPublications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PublicationConnection!
"""
The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the collection was last modified.
"""
updatedAt: DateTime!
}
"""Return type for `collectionAddProducts` mutation."""
type CollectionAddProductsPayload {
"""The updated collection."""
collection: Collection
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type CollectionConnection {
"""A list of edges."""
edges: [CollectionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `collectionCreate` mutation."""
type CollectionCreatePayload {
"""The collection that has been created."""
collection: Collection
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the collection to delete."""
input CollectionDeleteInput {
"""The ID of the collection to be deleted."""
id: ID!
}
"""Return type for `collectionDelete` mutation."""
type CollectionDeletePayload {
"""The ID of the collection that was deleted."""
deletedCollectionId: ID
"""The shop associated with the collection."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type CollectionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of CollectionEdge."""
node: Collection!
}
"""Specifies the input fields required to create a collection."""
input CollectionInput {
"""The description of the collection, in HTML format."""
descriptionHtml: String
"""
A unique human-friendly string for the collection. Automatically generated from the collection's title.
"""
handle: String
"""
Specifies the collection to update or create a new collection if absent.
"""
id: ID
"""The image associated with the collection."""
image: ImageInput
"""
Initial list of collection products. Only valid with `productCreate` and without rules.
"""
products: [ID!]
"""
Initial list of collection publications. Only valid with `productCreate`. This
argument is deprecated: Use PublishablePublish instead.
"""
publications: [CollectionPublicationInput!]
"""The private metafields to associated with this product."""
privateMetafields: [PrivateMetafieldInput!]
"""
The rules used to assign products to the collection.
"""
ruleSet: CollectionRuleSetInput
"""The theme template used when viewing the collection in a store."""
templateSuffix: String
"""The order in which the collection's products are sorted."""
sortOrder: CollectionSortOrder
"""Required for creating a new collection."""
title: String
"""The metafields to associate with this collection."""
metafields: [MetafieldInput!]
"""SEO information for the collection."""
seo: SEOInput
"""
Indicates whether a redirect is required after a new handle has been provided.
If true, then the old handle is redirected to the new one automatically.
"""
redirectNewHandle: Boolean = false
}
"""Represents the publications where a collection is published."""
type CollectionPublication {
"""The channel where the collection will be published."""
channel: Channel! @deprecated(reason: "Use `publication` instead")
"""The collection to be published on the publication."""
collection: Collection!
"""Whether the publication is published or not."""
isPublished: Boolean!
"""The publication where the collection will be published."""
publication: Publication!
"""The date that the publication was or is going to be published."""
publishDate: DateTime!
}
type CollectionPublicationConnection {
"""A list of edges."""
edges: [CollectionPublicationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type CollectionPublicationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of CollectionPublicationEdge."""
node: CollectionPublication!
}
"""Specifies the publications to which a collection will be published."""
input CollectionPublicationInput {
"""The ID of the publication."""
publicationId: ID
"""
The ID of the channel. This argument is deprecated: Use publicationId instead.
"""
channelId: ID
"""This argument is deprecated: Use publicationId instead."""
channelHandle: String
}
"""
Specifies a collection to publish and the sales channels to publish it to.
"""
input CollectionPublishInput {
"""The collection to create or update publications for."""
id: ID!
"""The channels where the collection will be published."""
collectionPublications: [CollectionPublicationInput!]!
}
"""Return type for `collectionPublish` mutation."""
type CollectionPublishPayload {
"""The published collection."""
collection: Collection
"""The channels where the collection has been published."""
collectionPublications: [CollectionPublication!]
"""The shop associated with the collection."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `collectionRemoveProducts` mutation."""
type CollectionRemoveProductsPayload {
"""The asynchronous job removing the products."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `collectionReorderProducts` mutation."""
type CollectionReorderProductsPayload {
"""The asynchronous job reordering the products."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Represents at rule that's used to assign products to a collection."""
type CollectionRule {
"""
The attribute that the rule focuses on (for example, `title` or `product_type`).
"""
column: CollectionRuleColumn!
"""The value that the operator is applied to (for example, `Hats`)."""
condition: String!
"""
The type of operator that the rule is based on (for example, `equals`, `contains`, or `not_equals`).
"""
relation: CollectionRuleRelation!
}
"""
Specifies the property of a product being used to populate the smart collection.
"""
enum CollectionRuleColumn {
TAG
TITLE
TYPE
VENDOR
VARIANT_PRICE
VARIANT_COMPARE_AT_PRICE
VARIANT_WEIGHT
VARIANT_INVENTORY
VARIANT_TITLE
}
"""
Collections may use rules to automatically include the matching products. This defines restrictions for a type of rule.
"""
type CollectionRuleConditions {
"""Allowed relations of the rule."""
allowedRelations: [CollectionRuleRelation!]!
"""Most commonly used relation for this rule."""
defaultRelation: CollectionRuleRelation!
"""Type of the rule."""
ruleType: CollectionRuleColumn!
}
"""Specifies a rule to associate with a collection."""
input CollectionRuleInput {
"""
The attribute that the rule focuses on (for example, `title` or `product_type`).
"""
column: CollectionRuleColumn!
"""
The type of operator that the rule is based on (for example, `equals`, `contains`, or `not_equals`).
"""
relation: CollectionRuleRelation!
"""The value that the operator is applied to (for example, `Hats`)."""
condition: String!
}
"""Specifies the relationship between the `column` and the condition."""
enum CollectionRuleRelation {
EQUALS
NOT_EQUALS
GREATER_THAN
LESS_THAN
STARTS_WITH
ENDS_WITH
CONTAINS
NOT_CONTAINS
}
"""
The set of rules that are used to determine which products are included in the collection.
"""
type CollectionRuleSet {
"""
Whether products must match any or all of the rules to be included in the collection.
If true, then products must match one or more of the rules to be included in the collection.
If false, then products must match all of the rules to be included in the collection.
"""
appliedDisjunctively: Boolean!
"""The rules used to assign products to the collection."""
rules: [CollectionRule!]!
}
"""Specifies a rule set for the collection."""
input CollectionRuleSetInput {
"""
Whether products must match any or all of the rules to be included in the collection.
If true, then products must match one or more of the rules to be included in the collection.
If false, then products must match all of the rules to be included in the collection.
"""
appliedDisjunctively: Boolean!
"""The rules used to assign products to the collection."""
rules: [CollectionRuleInput!]
}
"""The set of valid sort keys for the collections query."""
enum CollectionSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Specifies the sort order for the products in the collection."""
enum CollectionSortOrder {
MANUAL
BEST_SELLING
ALPHA_ASC
ALPHA_DESC
PRICE_DESC
PRICE_ASC
CREATED_DESC
CREATED
}
"""
Specifies the collection to unpublish and the sales channels to remove it from.
"""
input CollectionUnpublishInput {
"""The collection to create or update publications for."""
id: ID!
"""The channels where the collection is published."""
collectionPublications: [CollectionPublicationInput!]!
}
"""Return type for `collectionUnpublish` mutation."""
type CollectionUnpublishPayload {
"""The collection that has been unpublished."""
collection: Collection
"""The shop associated with the collection."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `collectionUpdate` mutation."""
type CollectionUpdatePayload {
"""The updated collection."""
collection: Collection
"""The asynchronous job updating the products based on the new rule set."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Comment events are generated by staff members of a shop.
They are created when a staff member adds a comment to the timeline of an order, draft order, customer, or transfer.
"""
type CommentEvent implements Node & Event {
"""
The name of the app that created the event. Returns null when the event originates from the Shopify admin.
"""
appTitle: String
"""The attachments associated with the comment event."""
attachments: [CommentEventAttachment!]!
"""Whether the event was created by an app."""
attributeToApp: Boolean!
"""Whether the event was caused by an admin user."""
attributeToUser: Boolean!
"""
Whether the comment event can be deleted. If true, then the comment event can be deleted.
"""
canDelete: Boolean!
"""
Whether the comment event can be edited. If true, then the comment event can be edited.
"""
canEdit: Boolean!
"""The date and time when the event was created."""
createdAt: DateTime!
"""Whether the event is critical."""
criticalAlert: Boolean!
"""
Whether the comment event has been edited. If true, then the comment event has been edited.
"""
edited: Boolean!
"""The references associated with the comment event."""
embed: CommentEventEmbed
"""Globally unique identifier."""
id: ID!
"""Human readable text that describes the event."""
message: FormattedString!
"""The raw body of the comment event."""
rawMessage: String!
"""The subject of the comment event."""
subject: CommentEventSubject!
}
"""A file attachment associated to a comment event."""
type CommentEventAttachment {
"""
The file extension of the comment event attachment, indicating the file format.
"""
fileExtension: String
"""Globally unique identifier."""
id: ID!
"""The image attached to the comment event."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""The filename of the comment event attachment."""
name: String!
"""The size of the attachment."""
size: Int!
"""The URL of the attachment."""
url: URL!
}
"""The main embed of a comment event."""
union CommentEventEmbed = Order | DraftOrder | Customer | Product | ProductVariant
"""The subject line of a comment event."""
interface CommentEventSubject {
"""
Whether the timeline subject has a timeline comment. If true, then a timeline comment exists.
"""
hasTimelineComment: Boolean!
"""Globally unique identifier."""
id: ID!
}
"""Indicates how HTTP response content should be handled."""
enum ContentDisposition {
"""
Content is displayed inline in the browser (ie: as a web page or as part of a web page)
"""
INLINE
"""Content is downloaded and saved locally."""
ATTACHMENT
}
"""Countries that have been defined in shipping zones for the shop."""
type CountriesInShippingZones {
"""Countries that have been defined in shipping zones."""
countryCodes: [CountryCode!]!
"""Whether 'Rest of World' has been defined in any shipping zones."""
includeRestOfWorld: Boolean!
}
"""ISO 3166-1 alpha-2 country codes with some differences."""
enum CountryCode {
"""Afghanistan."""
AF
"""Aland Islands."""
AX
"""Albania."""
AL
"""Algeria."""
DZ
"""Andorra."""
AD
"""Angola."""
AO
"""Anguilla."""
AI
"""Antigua And Barbuda."""
AG
"""Argentina."""
AR
"""Armenia."""
AM
"""Aruba."""
AW
"""Australia."""
AU
"""Austria."""
AT
"""Azerbaijan."""
AZ
"""Bahamas."""
BS
"""Bahrain."""
BH
"""Bangladesh."""
BD
"""Barbados."""
BB
"""Belarus."""
BY
"""Belgium."""
BE
"""Belize."""
BZ
"""Benin."""
BJ
"""Bermuda."""
BM
"""Bhutan."""
BT
"""Bolivia."""
BO
"""Bosnia And Herzegovina."""
BA
"""Botswana."""
BW
"""Bouvet Island."""
BV
"""Brazil."""
BR
"""British Indian Ocean Territory."""
IO
"""Brunei."""
BN
"""Bulgaria."""
BG
"""Burkina Faso."""
BF
"""Burundi."""
BI
"""Cambodia."""
KH
"""Canada."""
CA
"""Cape Verde."""
CV
"""Caribbean Netherlands."""
BQ
"""Cayman Islands."""
KY
"""Central African Republic."""
CF
"""Chad."""
TD
"""Chile."""
CL
"""China."""
CN
"""Christmas Island."""
CX
"""Cocos (Keeling) Islands."""
CC
"""Colombia."""
CO
"""Comoros."""
KM
"""Congo."""
CG
"""Congo, The Democratic Republic Of The."""
CD
"""Cook Islands."""
CK
"""Costa Rica."""
CR
"""Croatia."""
HR
"""Cuba."""
CU
"""Curaçao."""
CW
"""Cyprus."""
CY
"""Czech Republic."""
CZ
"""C├┤te d'Ivoire."""
CI
"""Denmark."""
DK
"""Djibouti."""
DJ
"""Dominica."""
DM
"""Dominican Republic."""
DO
"""Ecuador."""
EC
"""Egypt."""
EG
"""El Salvador."""
SV
"""Equatorial Guinea."""
GQ
"""Eritrea."""
ER
"""Estonia."""
EE
"""Eswatini."""
SZ
"""Ethiopia."""
ET
"""Falkland Islands (Malvinas)."""
FK
"""Faroe Islands."""
FO
"""Fiji."""
FJ
"""Finland."""
FI
"""France."""
FR
"""French Guiana."""
GF
"""French Polynesia."""
PF
"""French Southern Territories."""
TF
"""Gabon."""
GA
"""Gambia."""
GM
"""Georgia."""
GE
"""Germany."""
DE
"""Ghana."""
GH
"""Gibraltar."""
GI
"""Greece."""
GR
"""Greenland."""
GL
"""Grenada."""
GD
"""Guadeloupe."""
GP
"""Guatemala."""
GT
"""Guernsey."""
GG
"""Guinea."""
GN
"""Guinea Bissau."""
GW
"""Guyana."""
GY
"""Haiti."""
HT
"""Heard Island And Mcdonald Islands."""
HM
"""Holy See (Vatican City State)."""
VA
"""Honduras."""
HN
"""Hong Kong."""
HK
"""Hungary."""
HU
"""Iceland."""
IS
"""India."""
IN
"""Indonesia."""
ID
"""Iran, Islamic Republic Of."""
IR
"""Iraq."""
IQ
"""Ireland."""
IE
"""Isle Of Man."""
IM
"""Israel."""
IL
"""Italy."""
IT
"""Jamaica."""
JM
"""Japan."""
JP
"""Jersey."""
JE
"""Jordan."""
JO
"""Kazakhstan."""
KZ
"""Kenya."""
KE
"""Kiribati."""
KI
"""Korea, Democratic People's Republic Of."""
KP
"""Kosovo."""
XK
"""Kuwait."""
KW
"""Kyrgyzstan."""
KG
"""Lao People's Democratic Republic."""
LA
"""Latvia."""
LV
"""Lebanon."""
LB
"""Lesotho."""
LS
"""Liberia."""
LR
"""Libyan Arab Jamahiriya."""
LY
"""Liechtenstein."""
LI
"""Lithuania."""
LT
"""Luxembourg."""
LU
"""Macao."""
MO
"""Madagascar."""
MG
"""Malawi."""
MW
"""Malaysia."""
MY
"""Maldives."""
MV
"""Mali."""
ML
"""Malta."""
MT
"""Martinique."""
MQ
"""Mauritania."""
MR
"""Mauritius."""
MU
"""Mayotte."""
YT
"""Mexico."""
MX
"""Moldova, Republic of."""
MD
"""Monaco."""
MC
"""Mongolia."""
MN
"""Montenegro."""
ME
"""Montserrat."""
MS
"""Morocco."""
MA
"""Mozambique."""
MZ
"""Myanmar."""
MM
"""Namibia."""
NA
"""Nauru."""
NR
"""Nepal."""
NP
"""Netherlands."""
NL
"""Netherlands Antilles."""
AN
"""New Caledonia."""
NC
"""New Zealand."""
NZ
"""Nicaragua."""
NI
"""Niger."""
NE
"""Nigeria."""
NG
"""Niue."""
NU
"""Norfolk Island."""
NF
"""North Macedonia."""
MK
"""Norway."""
NO
"""Oman."""
OM
"""Pakistan."""
PK
"""Palestinian Territory, Occupied."""
PS
"""Panama."""
PA
"""Papua New Guinea."""
PG
"""Paraguay."""
PY
"""Peru."""
PE
"""Philippines."""
PH
"""Pitcairn."""
PN
"""Poland."""
PL
"""Portugal."""
PT
"""Qatar."""
QA
"""Republic of Cameroon."""
CM
"""Reunion."""
RE
"""Romania."""
RO
"""Russia."""
RU
"""Rwanda."""
RW
"""Saint Barthélemy."""
BL
"""Saint Helena."""
SH
"""Saint Kitts And Nevis."""
KN
"""Saint Lucia."""
LC
"""Saint Martin."""
MF
"""Saint Pierre And Miquelon."""
PM
"""Samoa."""
WS
"""San Marino."""
SM
"""Sao Tome And Principe."""
ST
"""Saudi Arabia."""
SA
"""Senegal."""
SN
"""Serbia."""
RS
"""Seychelles."""
SC
"""Sierra Leone."""
SL
"""Singapore."""
SG
"""Sint Maarten."""
SX
"""Slovakia."""
SK
"""Slovenia."""
SI
"""Solomon Islands."""
SB
"""Somalia."""
SO
"""South Africa."""
ZA
"""South Georgia And The South Sandwich Islands."""
GS
"""South Korea."""
KR
"""South Sudan."""
SS
"""Spain."""
ES
"""Sri Lanka."""
LK
"""St. Vincent."""
VC
"""Sudan."""
SD
"""Suriname."""
SR
"""Svalbard And Jan Mayen."""
SJ
"""Sweden."""
SE
"""Switzerland."""
CH
"""Syria."""
SY
"""Taiwan."""
TW
"""Tajikistan."""
TJ
"""Tanzania, United Republic Of."""
TZ
"""Thailand."""
TH
"""Timor Leste."""
TL
"""Togo."""
TG
"""Tokelau."""
TK
"""Tonga."""
TO
"""Trinidad and Tobago."""
TT
"""Tunisia."""
TN
"""Turkey."""
TR
"""Turkmenistan."""
TM
"""Turks and Caicos Islands."""
TC
"""Tuvalu."""
TV
"""Uganda."""
UG
"""Ukraine."""
UA
"""United Arab Emirates."""
AE
"""United Kingdom."""
GB
"""United States."""
US
"""United States Minor Outlying Islands."""
UM
"""Uruguay."""
UY
"""Uzbekistan."""
UZ
"""Vanuatu."""
VU
"""Venezuela."""
VE
"""Vietnam."""
VN
"""Virgin Islands, British."""
VG
"""Wallis And Futuna."""
WF
"""Western Sahara."""
EH
"""Yemen."""
YE
"""Zambia."""
ZM
"""Zimbabwe."""
ZW
}
"""
Holds the country specific harmonized system code and the country ISO code.
"""
type CountryHarmonizedSystemCode {
"""Country ISO code."""
countryCode: CountryCode!
"""Country specific harmonized system code."""
harmonizedSystemCode: String!
}
type CountryHarmonizedSystemCodeConnection {
"""A list of edges."""
edges: [CountryHarmonizedSystemCodeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type CountryHarmonizedSystemCodeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of CountryHarmonizedSystemCodeEdge."""
node: CountryHarmonizedSystemCode!
}
"""
Holds the country specific harmonized system code and the country ISO code.
"""
input CountryHarmonizedSystemCodeInput {
"""Country specific harmonized system code."""
harmonizedSystemCode: String!
"""Country ISO code."""
countryCode: CountryCode!
}
"""The part of the image that should remain after cropping."""
enum CropRegion {
"""Keep the center of the image"""
CENTER
"""Keep the top of the image"""
TOP
"""Keep the bottom of the image"""
BOTTOM
"""Keep the left of the image"""
LEFT
"""Keep the right of the image"""
RIGHT
}
"""Currency codes"""
enum CurrencyCode {
"""United States Dollars (USD)."""
USD
"""Euro (EUR)."""
EUR
"""United Kingdom Pounds (GBP)."""
GBP
"""Canadian Dollars (CAD)."""
CAD
"""Afghan Afghani (AFN)."""
AFN
"""Albanian Lek (ALL)."""
ALL
"""Algerian Dinar (DZD)."""
DZD
"""Angolan Kwanza (AOA)."""
AOA
"""Argentine Pesos (ARS)."""
ARS
"""Armenian Dram (AMD)."""
AMD
"""Aruban Florin (AWG)."""
AWG
"""Australian Dollars (AUD)."""
AUD
"""Barbadian Dollar (BBD)."""
BBD
"""Azerbaijani Manat (AZN)."""
AZN
"""Bangladesh Taka (BDT)."""
BDT
"""Bahamian Dollar (BSD)."""
BSD
"""Bahraini Dinar (BHD)."""
BHD
"""Burundian Franc (BIF)."""
BIF
"""Belarusian Ruble (BYR)."""
BYR @deprecated(reason: "`BYR` is deprecated. Use `BYN` available from version `2019-10` onwards instead.")
"""Belize Dollar (BZD)."""
BZD
"""Bermudian Dollar (BMD)."""
BMD
"""Bhutanese Ngultrum (BTN)."""
BTN
"""Bosnia and Herzegovina Convertible Mark (BAM)."""
BAM
"""Brazilian Real (BRL)."""
BRL
"""Bolivian Boliviano (BOB)."""
BOB
"""Botswana Pula (BWP)."""
BWP
"""Brunei Dollar (BND)."""
BND
"""Bulgarian Lev (BGN)."""
BGN
"""Burmese Kyat (MMK)."""
MMK
"""Cambodian Riel."""
KHR
"""Cape Verdean escudo (CVE)."""
CVE
"""Cayman Dollars (KYD)."""
KYD
"""Central African CFA Franc (XAF)."""
XAF
"""Chilean Peso (CLP)."""
CLP
"""Chinese Yuan Renminbi (CNY)."""
CNY
"""Colombian Peso (COP)."""
COP
"""Comorian Franc (KMF)."""
KMF
"""Congolese franc (CDF)."""
CDF
"""Costa Rican Colones (CRC)."""
CRC
"""Croatian Kuna (HRK)."""
HRK
"""Czech Koruny (CZK)."""
CZK
"""Danish Kroner (DKK)."""
DKK
"""Djiboutian Franc (DJF)."""
DJF
"""Dominican Peso (DOP)."""
DOP
"""East Caribbean Dollar (XCD)."""
XCD
"""Egyptian Pound (EGP)."""
EGP
"""Ethiopian Birr (ETB)."""
ETB
"""CFP Franc (XPF)."""
XPF
"""Fijian Dollars (FJD)."""
FJD
"""Gambian Dalasi (GMD)."""
GMD
"""Ghanaian Cedi (GHS)."""
GHS
"""Guatemalan Quetzal (GTQ)."""
GTQ
"""Guyanese Dollar (GYD)."""
GYD
"""Georgian Lari (GEL)."""
GEL
"""Guinean Franc (GNF)."""
GNF
"""Haitian Gourde (HTG)."""
HTG
"""Honduran Lempira (HNL)."""
HNL
"""Hong Kong Dollars (HKD)."""
HKD
"""Hungarian Forint (HUF)."""
HUF
"""Icelandic Kronur (ISK)."""
ISK
"""Indian Rupees (INR)."""
INR
"""Indonesian Rupiah (IDR)."""
IDR
"""Israeli New Shekel (NIS)."""
ILS
"""Iranian Rial (IRR)."""
IRR
"""Iraqi Dinar (IQD)."""
IQD
"""Jamaican Dollars (JMD)."""
JMD
"""Japanese Yen (JPY)."""
JPY
"""Jersey Pound."""
JEP
"""Jordanian Dinar (JOD)."""
JOD
"""Kazakhstani Tenge (KZT)."""
KZT
"""Kenyan Shilling (KES)."""
KES
"""Kuwaiti Dinar (KWD)."""
KWD
"""Kyrgyzstani Som (KGS)."""
KGS
"""Laotian Kip (LAK)."""
LAK
"""Latvian Lati (LVL)."""
LVL
"""Lebanese Pounds (LBP)."""
LBP
"""Lesotho Loti (LSL)."""
LSL
"""Liberian Dollar (LRD)."""
LRD
"""Libyan Dinar (LYD)."""
LYD
"""Lithuanian Litai (LTL)."""
LTL
"""Malagasy Ariary (MGA)."""
MGA
"""Macedonia Denar (MKD)."""
MKD
"""Macanese Pataca (MOP)."""
MOP
"""Malawian Kwacha (MWK)."""
MWK
"""Maldivian Rufiyaa (MVR)."""
MVR
"""Mexican Pesos (MXN)."""
MXN
"""Malaysian Ringgits (MYR)."""
MYR
"""Mauritian Rupee (MUR)."""
MUR
"""Moldovan Leu (MDL)."""
MDL
"""Moroccan Dirham."""
MAD
"""Mongolian Tugrik."""
MNT
"""Mozambican Metical."""
MZN
"""Namibian Dollar."""
NAD
"""Nepalese Rupee (NPR)."""
NPR
"""Netherlands Antillean Guilder."""
ANG
"""New Zealand Dollars (NZD)."""
NZD
"""Nicaraguan C├│rdoba (NIO)."""
NIO
"""Nigerian Naira (NGN)."""
NGN
"""Norwegian Kroner (NOK)."""
NOK
"""Omani Rial (OMR)."""
OMR
"""Panamian Balboa (PAB)."""
PAB
"""Pakistani Rupee (PKR)."""
PKR
"""Papua New Guinean Kina (PGK)."""
PGK
"""Paraguayan Guarani (PYG)."""
PYG
"""Peruvian Nuevo Sol (PEN)."""
PEN
"""Philippine Peso (PHP)."""
PHP
"""Polish Zlotych (PLN)."""
PLN
"""Qatari Rial (QAR)."""
QAR
"""Romanian Lei (RON)."""
RON
"""Russian Rubles (RUB)."""
RUB
"""Rwandan Franc (RWF)."""
RWF
"""Samoan Tala (WST)."""
WST
"""Saudi Riyal (SAR)."""
SAR
"""Sao Tome And Principe Dobra (STD)."""
STD
"""Serbian dinar (RSD)."""
RSD
"""Seychellois Rupee (SCR)."""
SCR
"""Sierra Leonean Leone (SLL)."""
SLL
"""Singapore Dollars (SGD)."""
SGD
"""Sudanese Pound (SDG)."""
SDG
"""Syrian Pound (SYP)."""
SYP
"""South African Rand (ZAR)."""
ZAR
"""South Korean Won (KRW)."""
KRW
"""South Sudanese Pound (SSP)."""
SSP
"""Solomon Islands Dollar (SBD)."""
SBD
"""Sri Lankan Rupees (LKR)."""
LKR
"""Surinamese Dollar (SRD)."""
SRD
"""Swazi Lilangeni (SZL)."""
SZL
"""Swedish Kronor (SEK)."""
SEK
"""Swiss Francs (CHF)."""
CHF
"""Taiwan Dollars (TWD)."""
TWD
"""Thai baht (THB)."""
THB
"""Tajikistani Somoni (TJS)."""
TJS
"""Tanzanian Shilling (TZS)."""
TZS
"""Tongan Pa'anga (TOP)."""
TOP
"""Trinidad and Tobago Dollars (TTD)."""
TTD
"""Tunisian Dinar (TND)."""
TND
"""Turkish Lira (TRY)."""
TRY
"""Turkmenistani Manat (TMT)."""
TMT
"""Ugandan Shilling (UGX)."""
UGX
"""Ukrainian Hryvnia (UAH)."""
UAH
"""United Arab Emirates Dirham (AED)."""
AED
"""Uruguayan Pesos (UYU)."""
UYU
"""Uzbekistan som (UZS)."""
UZS
"""Vanuatu Vatu (VUV)."""
VUV
"""Venezuelan Bolivares (VEF)."""
VEF
"""Vietnamese đồng (VND)."""
VND
"""West African CFA franc (XOF)."""
XOF
"""Yemeni Rial (YER)."""
YER
"""Zambian Kwacha (ZMW)."""
ZMW
}
"""Currency formats."""
type CurrencyFormats {
"""HTML without currency."""
moneyFormat: FormattedString!
"""Email without currency."""
moneyInEmailsFormat: String!
"""HTML with currency."""
moneyWithCurrencyFormat: FormattedString!
"""Email with currency."""
moneyWithCurrencyInEmailsFormat: String!
}
"""Represents a currency setting."""
type CurrencySetting {
"""The currency's ISO code."""
currencyCode: CurrencyCode!
"""The full name of the currency."""
currencyName: String!
"""Flag describing whether the currency is enabled."""
enabled: Boolean!
"""
Date and time when the exchange rate for the currency was last modified.
"""
rateUpdatedAt: DateTime
}
type CurrencySettingConnection {
"""A list of edges."""
edges: [CurrencySettingEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type CurrencySettingEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of CurrencySettingEdge."""
node: CurrencySetting!
}
"""
Represents information about a customer of the shop, such as the customer's contact details, their order
history, and whether they've agreed to receive email marketing.
"""
type Customer implements Node & CommentEventSubject & HasMetafields & LegacyInteroperability & HasEvents {
"""Whether the customer has agreed to receive marketing materials."""
acceptsMarketing: Boolean!
"""
The date and time when the customer consented or objected to receiving marketing material by email.
"""
acceptsMarketingUpdatedAt: DateTime!
"""A list of addresses associated with the customer."""
addresses(
"""Truncate the array result to this size."""
first: Int
): [MailingAddress!]!
"""The average amount that the customer spent per order."""
averageOrderAmount: Money @deprecated(reason: "Use `averageOrderAmountV2` instead")
"""The average amount that the customer spent per order."""
averageOrderAmountV2: MoneyV2
"""
Whether the merchant can delete the customer from their store.
A customer can be deleted from a store only if they have not yet made an order. After a customer makes an
order, they can't be deleted from a store.
"""
canDelete: Boolean!
"""The date and time when the customer was added to the store."""
createdAt: DateTime!
"""The default address associated with the customer."""
defaultAddress: MailingAddress
"""
The full name of the customer, based on the values for first_name and last_name. If the first_name and
last_name are not available, then this falls back to the customer's email
address, and if that is not available, the customer's phone number.
"""
displayName: String!
"""The customer's email address."""
email: String
"""A list of events associated with the customer."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""The customer's first name."""
firstName: String
"""Whether the customer has a note associated with them."""
hasNote: Boolean!
"""
Whether the merchant has added timeline comments about the customer on the customer's page.
"""
hasTimelineComment: Boolean!
"""Globally unique identifier."""
id: ID!
"""The image associated with the customer."""
image(
"""
Image width and height (1 - 2048 pixels) This argument is deprecated: Use
`maxWidth` or `maxHeight` on `Image.transformedSrc` instead.
"""
size: Int
): Image!
"""The customer's last name."""
lastName: String
"""The customer's last order."""
lastOrder: Order
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""
The amount of time since the customer was first added to the store.
Example: 'about 12 years'.
"""
lifetimeDuration: String!
"""
The marketing subscription opt-in level (as described by the M3AAWG best practices guideline) that the
customer gave when they consented to receive marketing material by email.
If the customer does not accept email marketing, then this property will be null.
"""
marketingOptInLevel: CustomerMarketingOptInLevel
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""A note about the customer."""
note: String
"""A list of the customer's orders."""
orders(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: OrderSortKeys = ID
"""
Supported filter parameters:
- `cart_token`
- `channel_id`
- `chargeback_status`
- `checkout_token`
- `created_at`
- `credit_card_last4`
- `customer_id`
- `discount_code`
- `email`
- `financial_status`
- `fraud_protection_level`
- `fulfillment_status`
- `location_id`
- `processed_at`
- `reference_location_id`
- `risk_level`
- `sales_channel`
- `source_name`
- `status`
- `tag`
- `test`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): OrderConnection!
"""
The number of orders that the customer has made at the store in their lifetime.
"""
ordersCount: UnsignedInt64!
"""The customer's phone number."""
phone: String
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""The state of the customer's account with the shop."""
state: CustomerState!
"""A list of tags assigned to the customer."""
tags: [String!]!
"""
Whether the customer is exempt from being charged taxes on their orders.
"""
taxExempt: Boolean!
"""The list of tax exemptions applied to the customer."""
taxExemptions: [TaxExemption!]!
"""
The total amount that the customer has spent on orders in their lifetime.
"""
totalSpent: Money!
"""
The total amount that the customer has spent on orders in their lifetime.
"""
totalSpentV2: MoneyV2!
"""The date and time when the customer was last updated."""
updatedAt: DateTime!
"""
Whether the email address is formatted correctly. This does not
guarantee that the email address actually exists.
"""
validEmailAddress: Boolean!
"""Whether the customer has verified their email address."""
verifiedEmail: Boolean!
}
"""Return type for `customerAddTaxExemptions` mutation."""
type CustomerAddTaxExemptionsPayload {
"""The updated customer."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type CustomerConnection {
"""A list of edges."""
edges: [CustomerEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `customerCreate` mutation."""
type CustomerCreatePayload {
"""The created customer."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the customer to delete."""
input CustomerDeleteInput {
"""The ID of the customer to delete."""
id: ID!
}
"""Return type for `customerDelete` mutation."""
type CustomerDeletePayload {
"""ID of the deleted customer."""
deletedCustomerId: ID
"""Shop of the deleted customer."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type CustomerEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of CustomerEdge."""
node: Customer!
}
"""
Provides the fields and values to use when creating or updating a customer.
"""
input CustomerInput {
"""
Whether the customer has consented to receive marketing material via email.
"""
acceptsMarketing: Boolean
"""
The date and time when the customer consented or objected to receiving marketing material by email. Set
whenever the customer consents or objects to marketing material.
"""
acceptsMarketingUpdatedAt: DateTime
"""An input that specifies addresses for a customer."""
addresses: [MailingAddressInput!]
"""The unique email address of the customer."""
email: String
"""The customer's first name."""
firstName: String
"""
Specifies the customer to update, or creates a new customer if one doesn't exist.
"""
id: ID
"""The customer's last name."""
lastName: String
"""
The marketing subscription opt-in level (as described by the M3AAWG best practices guideline) that was
enabled when the customer consented to receiving marketing material by email.
"""
marketingOptInLevel: CustomerMarketingOptInLevel
"""Attaches additional metadata to the customer."""
metafields: [MetafieldInput!]
"""A note about the customer."""
note: String
"""The unique phone number for the customer."""
phone: String
"""The private metafields to associated with this product."""
privateMetafields: [PrivateMetafieldInput!]
"""Tags that the shop owner has attached to the customer."""
tags: [String!]
"""Whether the customer is exempt from paying taxes on their order."""
taxExempt: Boolean
"""The list of tax exemptions to apply to the customer."""
taxExemptions: [TaxExemption!]
}
"""Represents a customer's activity on a shop's online store."""
type CustomerJourney {
"""The position of the current order within the customer's order history."""
customerOrderIndex: Int!
"""
The amount of days between first session and order creation date. First
session represents first session since the last order, or first session within
the 30 day attribution window, if more than 30 days has passed since the last order.
"""
daysToConversion: Int!
"""The customer's first session going into the shop."""
firstVisit: CustomerVisit!
"""The last session before an order is made."""
lastVisit: CustomerVisit
"""Events preceding a customer order, such as shop sessions."""
moments: [CustomerMoment!]!
}
"""
The valid values for the marketing subscription opt-in active at the time the customer consented to email
marketing.
The levels are defined by [the M3AAWG best practices guideline
document](https://www.m3aawg.org/sites/maawg/files/news/M3AAWG_Senders_BCP_Ver3-2015-02.pdf).
"""
enum CustomerMarketingOptInLevel {
"""
The customer started receiving marketing email(s) after providing their email address, without any
intermediate steps.
"""
SINGLE_OPT_IN
"""
After providing their email address, the customer received a confirmation email which required them to
perform a prescribed action before receiving marketing emails.
"""
CONFIRMED_OPT_IN
"""
The customer receives marketing emails, but the original opt-in process is unknown.
"""
UNKNOWN
}
"""Represents events preceding a customer order, such as shop sessions."""
interface CustomerMoment {
"""When the customer moment occurred."""
occurredAt: DateTime!
}
"""Return type for `customerRemoveTaxExemptions` mutation."""
type CustomerRemoveTaxExemptionsPayload {
"""The updated customer."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `customerReplaceTaxExemptions` mutation."""
type CustomerReplaceTaxExemptionsPayload {
"""The updated customer."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the customerSavedSearches query."""
enum CustomerSavedSearchSortKeys {
"""Sort by the `name` value."""
NAME
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The set of valid sort keys for the customers query."""
enum CustomerSortKeys {
"""Sort by the `name` value."""
NAME
"""Sort by the `location` value."""
LOCATION
"""Sort by the `orders_count` value."""
ORDERS_COUNT
"""Sort by the `last_order_date` value."""
LAST_ORDER_DATE
"""Sort by the `total_spent` value."""
TOTAL_SPENT
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The valid values for the state of a customer's account with a shop."""
enum CustomerState {
"""The customer declined the email invite to create an account."""
DECLINED
"""
The customer doesn't have an active account. Customer accounts can be disabled from the Shopify admin at any time.
"""
DISABLED
"""The customer has created an account."""
ENABLED
"""The customer has received an email invite to create an account."""
INVITED
}
"""Return type for `customerUpdateDefaultAddress` mutation."""
type CustomerUpdateDefaultAddressPayload {
"""The customer whose address was updated."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `customerUpdate` mutation."""
type CustomerUpdatePayload {
"""The updated customer."""
customer: Customer
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Information about a customer's session on a shop's online store."""
type CustomerVisit implements CustomerMoment & Node {
"""Globally unique identifier."""
id: ID!
"""URL of the first page the customer landed on for the session."""
landingPage: URL
"""
Landing page information with URL linked in HTML. For example, the first page
the customer visited was store.myshopify.com/products/1.
"""
landingPageHtml: HTML
"""
Represent actions taken by an app, on behalf of a merchant,
to market Shopify resources such as products, collections, and discounts.
"""
marketingEvent: MarketingEvent
"""When the customer moment occurred."""
occurredAt: DateTime!
"""
Marketing referral code from the link that the customer clicked to visit the store.
Supports the following URL attributes: _ref_, _source_, or _r_.
For example, if the URL is myshopifystore.com/products/slide?ref=j2tj1tn2, then this value is j2tj1tn2.
"""
referralCode: String
"""Referral information with URLs linked in HTML."""
referralInfoHtml: FormattedString!
"""
Webpage where the customer clicked a link that sent them to the online store.
For example, _https://randomblog.com/page1_ or _android-app://com.google.android.gm_.
"""
referrerUrl: URL
"""
Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct,
a website domain, QR code, or unknown.
"""
source: String!
"""Describes the source explicitly for first or last session."""
sourceDescription: String
"""Type of marketing tactic."""
sourceType: MarketingTactic
"""
A set of UTM parameters gathered from the URL parameters of the referrer.
"""
utmParameters: UTMParameters
}
"""The input fields used to create a custom fulfillment service."""
input CustomFulfillmentServiceCreateInput {
"""The name of the fulfillment service."""
name: String!
"""
The address to which an email is sent when the custom fulfillment service
receives a fulfill request.
"""
email: String!
}
"""
An [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) encoded UTC date string. Example value: `"2019-07-16T16:00:00-04:00"`.
"""
scalar Date
"""
An ISO-8601 encoded UTC date time string. Example value: `"2019-07-03T20:47:55Z"`.
"""
scalar DateTime
"""Days of the week from Monday to Sunday."""
enum DayOfTheWeek {
"""Monday."""
MONDAY
"""Tuesday."""
TUESDAY
"""Wednesday."""
WEDNESDAY
"""Thursday."""
THURSDAY
"""Friday."""
FRIDAY
"""Saturday."""
SATURDAY
"""Sunday."""
SUNDAY
}
"""
A signed decimal number, which supports arbitrary precision and is serialized as a string. Example value: `"29.99"`.
"""
scalar Decimal
"""
Deletion events chronicle the destruction of resources (e.g. products and collections).
Once deleted, the deletion event is the only trace of the original's existence,
as the resource itself has been removed and can no longer be accessed.
"""
type DeletionEvent {
"""
The date and time when the deletion event for the related resource was generated.
"""
occurredAt: DateTime!
"""The id of the resource that was deleted."""
subjectId: ID!
"""The type of resource that was deleted."""
subjectType: DeletionEventSubjectType!
}
type DeletionEventConnection {
"""A list of edges."""
edges: [DeletionEventEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DeletionEventEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeletionEventEdge."""
node: DeletionEvent!
}
"""The set of valid sort keys for the deletionEvents query."""
enum DeletionEventSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The supported subject types of deletion events."""
enum DeletionEventSubjectType {
COLLECTION
PRODUCT
}
"""The service and the countries they are available for."""
type DeliveryAvailableService {
"""The countries the service provider ships to."""
countries: DeliveryCountryCodesOrRestOfWorld!
"""The name of the service."""
name: String!
}
"""Information about a carrier or service provider."""
type DeliveryCarrierService implements Node {
"""Services offered for given destinations."""
availableServicesForCountries(
"""The locations of the possible origins."""
origins: [ID!]
"""The country codes of the destinations."""
countryCodes: [CountryCode!]
"""Use Rest of World as the destination."""
restOfWorld: Boolean!
): [DeliveryAvailableService!]!
"""The properly formatted name of the service provider, ready to display."""
formattedName: String
"""The logo of the service provider."""
icon: Image!
"""Globally unique identifier."""
id: ID!
"""The name of the service provider."""
name: String
}
"""A carrier services and their set of shop locations that can be used."""
type DeliveryCarrierServiceAndLocations {
"""The carrier service."""
carrierService: DeliveryCarrierService!
"""The locations that support this carrier service."""
locations: [Location!]!
}
type DeliveryCarrierServiceEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeliveryCarrierServiceEdge."""
node: DeliveryCarrierService!
}
"""
A condition that must pass for a method definition to be applied to an order.
"""
type DeliveryCondition implements Node {
"""
The criteria (weight or price) that the field must meet based on the operator.
"""
conditionCriteria: DeliveryConditionCriteria!
"""The field to compare the criteria unit against, using the operator."""
field: DeliveryConditionField!
"""Globally unique identifier."""
id: ID!
"""The operator to compare the field and criteria."""
operator: DeliveryConditionOperator!
}
"""
The criteria (weight or price) that the field must meet based on the operator.
"""
union DeliveryConditionCriteria = Weight | MoneyV2
"""The field type that the condition will be applied to."""
enum DeliveryConditionField {
"""Condition will check against the total weight of the order."""
TOTAL_WEIGHT
"""Condition will check against the total price of the order."""
TOTAL_PRICE
}
"""The operator to use to determine if the condition passes."""
enum DeliveryConditionOperator {
"""
The condition will check if the field is greater than or equal to the criteria.
"""
GREATER_THAN_OR_EQUAL_TO
"""
The condition will check if the field is less than or equal to the criteria.
"""
LESS_THAN_OR_EQUAL_TO
}
"""A country that is used to define a zone."""
type DeliveryCountry implements Node {
"""
The ISO 3166-1 alpha-2 country code of this country and a flag indicating Rest Of World.
"""
code: DeliveryCountryCodeOrRestOfWorld!
"""Globally unique identifier."""
id: ID!
"""The name of the country."""
name: String!
"""The regions associated with this country."""
provinces: [DeliveryProvince!]!
}
"""A country with the name of the zone."""
type DeliveryCountryAndZone {
"""The country in the delivery zone."""
country: DeliveryCountry!
"""The name of the delivery zone."""
zone: String!
}
"""
The ISO 3166-1 alpha-2 country code and a flag indicating Rest Of World.
"""
type DeliveryCountryCodeOrRestOfWorld {
"""The country code."""
countryCode: CountryCode
"""Indicates if 'Rest of World' is applied."""
restOfWorld: Boolean!
}
"""A list of ISO 3166-1 alpha-2 country codes or the 'Rest of World'."""
type DeliveryCountryCodesOrRestOfWorld {
"""List of applicable country codes."""
countryCodes: [CountryCode!]!
"""Indicates if 'Rest of World' is applied."""
restOfWorld: Boolean!
}
"""Input fields to specify a country."""
input DeliveryCountryInput {
"""The country code of the country."""
code: CountryCode
"""Use Rest of World as the country."""
restOfWorld: Boolean
"""The regions associated with this country."""
provinces: [DeliveryProvinceInput!]
"""Associate all available provinces with this country."""
includeAllProvinces: Boolean
}
"""
Whether the shop is blocked from converting to full multi-location delivery
profiles mode. If the shop is blocked, then the blocking reasons are also returned.
"""
type DeliveryLegacyModeBlocked {
"""
Whether the shop can convert to full multi-location delivery profiles mode.
"""
blocked: Boolean!
"""
The reasons why the shop is blocked from converting to full multi-location delivery profiles mode.
"""
reasons: [DeliveryLegacyModeBlockedReason!]
}
"""
Reasons the shop is blocked from converting to full multi-location delivery profiles mode.
"""
enum DeliveryLegacyModeBlockedReason {
"""Multi-Location is disabled."""
MULTI_LOCATION_DISABLED
"""No locations that can fulfill online orders."""
NO_LOCATIONS_FULFILLING_ONLINE_ORDERS
}
"""
A location group is a collection of active locations that share zone and delivery methods across delivery profiles.
"""
type DeliveryLocationGroup implements Node {
"""Globally unique identifier."""
id: ID!
"""List of active locations that are part of this location group."""
locations(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: LocationSortKeys = NAME
"""
Supported filter parameters:
- `active`
- `address1`
- `address2`
- `city`
- `country`
- `legacy`
- `name`
- `province`
- `zip`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""If true, also include the legacy locations of fulfillment services."""
includeLegacy: Boolean = false
"""If true, also include the locations that are deactivated."""
includeInactive: Boolean = false
): LocationConnection!
}
"""
Links a location group and zone with the associated method definitions in a delivery profile.
"""
type DeliveryLocationGroupZone {
"""
The method definitions associated to a zone and location group in a delivery profile.
"""
methodDefinitions(
"""Return only eligible or ineligible method definitions."""
eligible: Boolean
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: MethodDefinitionSortKeys = ID
): DeliveryMethodDefinitionConnection!
"""The zone associated to a location group in a delivery profile."""
zone: DeliveryZone!
}
type DeliveryLocationGroupZoneConnection {
"""A list of edges."""
edges: [DeliveryLocationGroupZoneEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DeliveryLocationGroupZoneEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeliveryLocationGroupZoneEdge."""
node: DeliveryLocationGroupZone!
}
"""
Input fields for a delivery zone associated to a location group and profile.
"""
input DeliveryLocationGroupZoneInput {
"""Globally unique identifier of the Zone."""
id: ID
"""The name of the zone."""
name: String
"""Countries to associate with the zone."""
countries: [DeliveryCountryInput!]
"""Method definitions to create."""
methodDefinitionsToCreate: [DeliveryMethodDefinitionInput!]
"""Method definitions to update."""
methodDefinitionsToUpdate: [DeliveryMethodDefinitionInput!]
}
"""
A method definition describes the delivery rate and the conditions that must be met for the method to be applied.
"""
type DeliveryMethodDefinition implements Node {
"""Whether this method definition is active."""
active: Boolean!
"""The description of the method definition."""
description: String
"""Globally unique identifier."""
id: ID!
"""
The method conditions that must pass for this method definition to be applied to an order.
"""
methodConditions: [DeliveryCondition!]!
"""The name of the method definition."""
name: String!
"""
Provided rate for this method definition, from a rate definition or participant.
"""
rateProvider: DeliveryRateProvider!
}
type DeliveryMethodDefinitionConnection {
"""A list of edges."""
edges: [DeliveryMethodDefinitionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DeliveryMethodDefinitionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeliveryMethodDefinitionEdge."""
node: DeliveryMethodDefinition!
}
"""Input fields for a method definition."""
input DeliveryMethodDefinitionInput {
"""
Globally unique identifier of the method definition. Use only when updating a method definiton.
"""
id: ID
"""The name of the method definition."""
name: String
"""The description of the method definition."""
description: String
"""Whether or not to use this method definition during rate calculation."""
active: Boolean
"""A rate definition to apply to the method definition."""
rateDefinition: DeliveryRateDefinitionInput
"""A participant to apply to the method definition."""
participant: DeliveryParticipantInput
"""Weight conditions on the method definition."""
weightConditionsToCreate: [DeliveryWeightConditionInput!]
"""Price conditions on the method definition."""
priceConditionsToCreate: [DeliveryPriceConditionInput!]
"""Conditions on the method definition to update."""
conditionsToUpdate: [DeliveryUpdateConditionInput!]
}
"""
A carrier-defined rate with possible merchant-defined fixed fee or percentage-of-rate fee.
"""
type DeliveryParticipant implements Node {
"""Flag to indicate if new available services should be included."""
adaptToNewServicesFlag: Boolean!
"""Use this carrier service for this participant."""
carrierService: DeliveryCarrierService!
"""The merchant-set fixed fee for this participant."""
fixedFee: MoneyV2
"""Globally unique identifier."""
id: ID!
"""Services offered by the participant and their active status."""
participantServices: [DeliveryParticipantService!]!
"""The merchant-set percentage-of-rate fee for this participant."""
percentageOfRateFee: Float!
}
"""Input fields for a participant."""
input DeliveryParticipantInput {
"""Globally unique identifier of the participant."""
id: ID
"""Global identifier of the carrier service."""
carrierServiceId: ID
"""The merchant-set fixed fee for this participant."""
fixedFee: MoneyInput
"""The merchant-set percentage-of-rate fee for this participant."""
percentageOfRateFee: Float
"""Services offered by the participant and their active status."""
participantServices: [DeliveryParticipantServiceInput!]
"""Flag to indicate if new available services should be included."""
adaptToNewServices: Boolean
}
"""A service provided by a participant."""
type DeliveryParticipantService {
"""If the service is active or not."""
active: Boolean!
"""Name of the service."""
name: String!
}
"""Input fields for a service provided by a participant."""
input DeliveryParticipantServiceInput {
"""Name of the service."""
name: String!
"""If the service is active or not."""
active: Boolean!
}
"""Input fields for the price-based conditions of a method definition."""
input DeliveryPriceConditionInput {
"""The criteria for the price."""
criteria: MoneyInput
"""The operator to use for comparison."""
operator: DeliveryConditionOperator
}
"""A profile for multi-location, per-product delivery."""
type DeliveryProfile implements Node {
"""The number of active shipping rates for the profile."""
activeMethodDefinitionsCount: Int!
"""Whether this is the default profile."""
default: Boolean!
"""Globally unique identifier."""
id: ID!
"""
Whether this shop has enabled legacy compatibility mode for delivery profiles.
"""
legacyMode: Boolean!
"""The number of locations without rates defined."""
locationsWithoutRatesCount: Int!
"""The name of the delivery profile."""
name: String!
"""The number of active origin locations for the profile."""
originLocationCount: Int!
"""
The number of product variants for this profile. The count for the default profile is not supported and will return -1.
"""
productVariantsCount: Int! @deprecated(reason: "Use `productVariantsCountV2` instead")
"""The products and variants associated with this profile."""
profileItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Sort the underlying list by the given key. This argument is deprecated: Profile item sorting is no longer supported.
"""
sortKey: ProfileItemSortKeys = ID
): DeliveryProfileItemConnection!
"""The location groups and associated zones using this profile."""
profileLocationGroups: [DeliveryProfileLocationGroup!]!
"""
List of locations that have not been assigned to a location group for this profile.
"""
unassignedLocations: [Location!]!
"""The number of countries with active rates to deliver to."""
zoneCountryCount: Int!
}
type DeliveryProfileConnection {
"""A list of edges."""
edges: [DeliveryProfileEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `deliveryProfileCreate` mutation."""
type deliveryProfileCreatePayload {
"""The delivery profile that was created."""
profile: DeliveryProfile
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type DeliveryProfileEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeliveryProfileEdge."""
node: DeliveryProfile!
}
"""Input fields for a delivery profile."""
input DeliveryProfileInput {
"""The name of the profile."""
name: String
"""The location groups associated with the profile."""
profileLocationGroups: [DeliveryProfileLocationGroupInput!]
"""The location groups to be created in the profile."""
locationGroupsToCreate: [DeliveryProfileLocationGroupInput!]
"""The location groups to be updated in the profile."""
locationGroupsToUpdate: [DeliveryProfileLocationGroupInput!]
"""The location groups to be deleted in the profile."""
locationGroupsToDelete: [ID!]
"""The product variant ids to be associated with this profile."""
variantsToAssociate: [ID!]
"""
The product variant ids to be dissociated from this profile and returned to the default profile.
"""
variantsToDissociate: [ID!]
"""Zones to delete."""
zonesToDelete: [ID!]
"""Method definitions to delete."""
methodDefinitionsToDelete: [ID!]
"""Conditions to delete."""
conditionsToDelete: [ID!]
}
"""
A product and the subset of associated variants that are part of this delivery profile.
"""
type DeliveryProfileItem {
"""A product associated with this profile."""
product: Product!
"""The product variants associated with this delivery profile."""
variants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Sort the underlying list by the given key. This argument is deprecated:
Profile item variant sorting is no longer supported.
"""
sortKey: ProductVariantSortKeys = ID
): ProductVariantConnection!
}
type DeliveryProfileItemConnection {
"""A list of edges."""
edges: [DeliveryProfileItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DeliveryProfileItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DeliveryProfileItemEdge."""
node: DeliveryProfileItem!
}
"""Links a location group with zones associated to a delivery profile."""
type DeliveryProfileLocationGroup {
"""
The countries already selected in any zone for the given location group and profile.
"""
countriesInAnyZone: [DeliveryCountryAndZone!]!
"""The location group associated to a delivery profile."""
locationGroup: DeliveryLocationGroup!
"""
The applicable zones associated to a location group and delivery profile.
"""
locationGroupZones(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DeliveryLocationGroupZoneConnection!
}
"""Input fields for a delivery location group associated to a profile."""
input DeliveryProfileLocationGroupInput {
"""Globally unique identifier of the LocationGroup."""
id: ID
"""The location ids of the locations to be moved to this location group."""
locations: [ID!]
"""Zones to create."""
zonesToCreate: [DeliveryLocationGroupZoneInput!]
"""Zones to update."""
zonesToUpdate: [DeliveryLocationGroupZoneInput!]
}
"""Return type for `deliveryProfileRemove` mutation."""
type deliveryProfileRemovePayload {
"""The profile deletion job triggered by the mutation."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `deliveryProfileUpdate` mutation."""
type deliveryProfileUpdatePayload {
"""The delivery profile that was updated."""
profile: DeliveryProfile
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""A region that is used to define a zone."""
type DeliveryProvince implements Node {
"""The code of this region."""
code: String!
"""Globally unique identifier."""
id: ID!
"""The name of the region."""
name: String!
}
"""The input fields to specify a region."""
input DeliveryProvinceInput {
"""The code of the region."""
code: String!
}
"""The merchant-defined rate of the DeliveryMethodDefinition."""
type DeliveryRateDefinition implements Node {
"""Globally unique identifier."""
id: ID!
"""The price of this rate."""
price: MoneyV2!
}
"""Input fields for a rate definition."""
input DeliveryRateDefinitionInput {
"""Globally unique identifier of the rate definition."""
id: ID
"""The price of the rate definition."""
price: MoneyInput!
}
"""Rate provided by a rate definition or a participant."""
union DeliveryRateProvider = DeliveryRateDefinition | DeliveryParticipant
"""Delivery shop-level settings."""
type DeliverySetting {
"""
Whether the shop is blocked from converting to full multi-location delivery
profiles mode. If the shop is blocked, then the blocking reasons are also returned.
"""
legacyModeBlocked: DeliveryLegacyModeBlocked!
"""
Enables legacy compatability mode for the multi-location delivery profiles feature.
"""
legacyModeProfiles: Boolean!
}
"""Input fields for shop-level delivery settings."""
input DeliverySettingInput {
"""
Enables legacy compatability mode for the multi-location delivery profiles feature.
"""
legacyModeProfiles: Boolean
}
"""Return type for `deliverySettingUpdate` mutation."""
type DeliverySettingUpdatePayload {
"""The updated delivery shop level settings."""
setting: DeliverySetting
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `deliveryShippingOriginAssign` mutation."""
type DeliveryShippingOriginAssignPayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Input fields for updating the conditions of a method definition."""
input DeliveryUpdateConditionInput {
"""Globally unique identifier of the condition."""
id: ID!
"""The value of the criteria of the condition."""
criteria: Float
"""The unit of the criteria of the condition."""
criteriaUnit: String
"""The field to use, either total_weight or total_price."""
field: DeliveryConditionField
"""The operator to use for comparison."""
operator: DeliveryConditionOperator
}
"""Input fields for the weight-based conditions of a method definition."""
input DeliveryWeightConditionInput {
"""The criteria for the weight."""
criteria: WeightInput
"""The operator to use for comparison."""
operator: DeliveryConditionOperator
}
"""
A zone is a geographical area that contains delivery methods within a delivery profile.
"""
type DeliveryZone implements Node {
"""The list of countries within the zone."""
countries: [DeliveryCountry!]!
"""Globally unique identifier."""
id: ID!
"""The name of the zone."""
name: String!
}
"""
Digital wallet, such as Apple Pay, which can be used for accelerated checkouts.
"""
enum DigitalWallet {
"""Apple Pay."""
APPLE_PAY
"""Android Pay."""
ANDROID_PAY
"""Google Pay."""
GOOGLE_PAY
"""Shopify Pay."""
SHOPIFY_PAY
}
"""
An amount discounting the line that has been allocated by an associated discount application.
"""
type DiscountAllocation {
"""Money amount allocated by the discount application."""
allocatedAmount: MoneyV2! @deprecated(reason: "Use `allocatedAmountSet` instead")
"""
Money amount allocated by the discount application in shop and presentment currencies.
"""
allocatedAmountSet: MoneyBag!
"""The discount of which this allocated amount originated from."""
discountApplication: DiscountApplication!
}
"""The fixed amount value of a discount."""
type DiscountAmount {
"""The value of the discount."""
amount: MoneyV2!
"""
If true, then the discount is applied to each of the entitled items. If false,
then the amount is split across all of the entitled items.
"""
appliesOnEachItem: Boolean!
}
"""Specifies the value of the discount and how it is applied."""
input DiscountAmountInput {
"""The value of the discount."""
amount: Decimal
"""
If true, then the discount is applied to each of the entitled items. If false,
then the amount is split across all of the entitled items.
"""
appliesOnEachItem: Boolean
}
"""
Discount applications capture the intentions of a discount source at
the time of application on an order's line items or shipping lines.
"""
interface DiscountApplication {
"""
The method by which the discount's value is allocated to its entitled items.
"""
allocationMethod: DiscountApplicationAllocationMethod!
"""
An ordered index that can be used to identify the discount application and indicate the precedence
of the discount application for calculations.
"""
index: Int!
"""How the discount amount is distributed on the discounted lines."""
targetSelection: DiscountApplicationTargetSelection!
"""Whether the discount is applied on line items or shipping lines."""
targetType: DiscountApplicationTargetType!
"""The value of the discount application."""
value: PricingValue!
}
"""
The method by which the discount's value is allocated onto its entitled lines.
"""
enum DiscountApplicationAllocationMethod {
"""The value is spread across all entitled lines."""
ACROSS
"""The value is applied onto every entitled line."""
EACH
"""The value is specifically applied onto a particular line."""
ONE
}
type DiscountApplicationConnection {
"""A list of edges."""
edges: [DiscountApplicationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DiscountApplicationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DiscountApplicationEdge."""
node: DiscountApplication!
}
"""
Which lines on the order that the discount is allocated over, of the type
defined by the Discount Application's target_type.
"""
enum DiscountApplicationTargetSelection {
"""The discount is allocated onto all the lines."""
ALL
"""The discount is allocated onto only the lines it is entitled for."""
ENTITLED
"""The discount is allocated onto explicitly chosen lines."""
EXPLICIT
}
"""
The type of line (i.e. line item or shipping line) on an order that the discount is applicable towards.
"""
enum DiscountApplicationTargetType {
"""The discount applies onto line items."""
LINE_ITEM
"""The discount applies onto shipping lines."""
SHIPPING_LINE
}
"""An automatic discount."""
union DiscountAutomatic = DiscountAutomaticBxgy | DiscountAutomaticBasic
"""Return type for `discountAutomaticActivate` mutation."""
type DiscountAutomaticActivatePayload {
"""The activated automatic discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""An automatic basic discount."""
type DiscountAutomaticBasic {
"""The date and time when the discount was created."""
createdAt: DateTime!
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGets!
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirement!
"""A short summary of the discount."""
shortSummary: String!
"""The date and time when the discount starts."""
startsAt: DateTime!
"""The status of the discount."""
status: DiscountStatus!
"""A detailed summary of the discount."""
summary: String!
"""The title of the discount."""
title: String!
"""The number of times that the discount has been used."""
usageCount: Int!
}
"""Return type for `discountAutomaticBasicCreate` mutation."""
type DiscountAutomaticBasicCreatePayload {
"""The created discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Specifies input field to create or update automatic basic discount."""
input DiscountAutomaticBasicInput {
"""The title of the discount."""
title: String
"""The date and time when the discount starts."""
startsAt: DateTime
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirementInput
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGetsInput
}
"""Return type for `discountAutomaticBasicUpdate` mutation."""
type DiscountAutomaticBasicUpdatePayload {
"""The updated discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Return type for `discountAutomaticBulkDelete` mutation."""
type DiscountAutomaticBulkDeletePayload {
"""The asynchronous job removing the automatic discounts."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""An automatic BXGY discount."""
type DiscountAutomaticBxgy implements Node & HasEvents {
"""The date and time when the discount was created."""
createdAt: DateTime!
"""
The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
"""
customerBuys: DiscountCustomerBuys!
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGets!
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""The paginated list of events associated with the host subject."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""A legacy unique identifier for the discount."""
id: ID! @deprecated(reason: "Use DiscountAutomaticNode.id instead.")
"""The date and time when the discount starts."""
startsAt: DateTime!
"""The status of the discount."""
status: DiscountStatus!
"""A detailed summary of the discount."""
summary: String!
"""The title of the discount."""
title: String!
"""The number of times that the discount has been used."""
usageCount: Int!
"""
The maximum number of times that the discount can be applied to an order.
"""
usesPerOrderLimit: Int
}
"""Return type for `discountAutomaticBxgyCreate` mutation."""
type DiscountAutomaticBxgyCreatePayload {
"""The created discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Specifies input field to create or update automatic bogo discount."""
input DiscountAutomaticBxgyInput {
"""The date and time when the discount starts."""
startsAt: DateTime
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""The title of the discount."""
title: String
"""
The maximum number of times that the discount can be applied to an order.
"""
usesPerOrderLimit: UnsignedInt64
"""
The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
"""
customerBuys: DiscountCustomerBuysInput
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGetsInput
}
"""Return type for `discountAutomaticBxgyUpdate` mutation."""
type DiscountAutomaticBxgyUpdatePayload {
"""The updated discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
type DiscountAutomaticConnection {
"""A list of edges."""
edges: [DiscountAutomaticEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `discountAutomaticDeactivate` mutation."""
type DiscountAutomaticDeactivatePayload {
"""The deactivated automatic discount."""
automaticDiscountNode: DiscountAutomaticNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Return type for `discountAutomaticDelete` mutation."""
type DiscountAutomaticDeletePayload {
"""The deleted automatic discount ID."""
deletedAutomaticDiscountId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
type DiscountAutomaticEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DiscountAutomaticEdge."""
node: DiscountAutomatic!
}
"""An automatic discount wrapper node."""
type DiscountAutomaticNode implements Node & HasEvents {
"""An automatic discount."""
automaticDiscount: DiscountAutomatic!
"""The paginated list of events associated with the host subject."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""Globally unique identifier."""
id: ID!
}
type DiscountAutomaticNodeConnection {
"""A list of edges."""
edges: [DiscountAutomaticNodeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DiscountAutomaticNodeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DiscountAutomaticNodeEdge."""
node: DiscountAutomaticNode!
}
"""A code discount."""
union DiscountCode = DiscountCodeBasic | DiscountCodeBxgy | DiscountCodeFreeShipping
"""Return type for `discountCodeActivate` mutation."""
type DiscountCodeActivatePayload {
"""The activated code discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""
Discount code applications capture the intentions of a discount code at
the time that it is applied onto an order.
"""
type DiscountCodeApplication implements DiscountApplication {
"""
The method by which the discount's value is allocated to its entitled items.
"""
allocationMethod: DiscountApplicationAllocationMethod!
"""
The string identifying the discount code that was used at the time of application.
"""
code: String!
"""
An ordered index that can be used to identify the discount application and indicate the precedence
of the discount application for calculations.
"""
index: Int!
"""How the discount amount is distributed on the discounted lines."""
targetSelection: DiscountApplicationTargetSelection!
"""Whether the discount is applied on line items or shipping lines."""
targetType: DiscountApplicationTargetType!
"""The value of the discount application."""
value: PricingValue!
}
"""A basic code discount."""
type DiscountCodeBasic {
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean!
"""The number of times that the discount has been used."""
asyncUsageCount: Int!
"""The number of redeem codes for the discount."""
codeCount: Int!
"""A list of redeem codes for the discount."""
codes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DiscountRedeemCodeConnection!
"""The date and time when the discount was created."""
createdAt: DateTime!
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGets!
"""The customers that can use the discount."""
customerSelection: DiscountCustomerSelection!
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirement
"""A short summary of the discount."""
shortSummary: String!
"""The date and time when the discount starts."""
startsAt: DateTime!
"""The status of the discount."""
status: DiscountStatus!
"""A detailed summary of the discount."""
summary: String!
"""The title of the Discount."""
title: String!
"""The maximum number of times the code discount can be used."""
usageLimit: Int
}
"""Return type for `discountCodeBasicCreate` mutation."""
type DiscountCodeBasicCreatePayload {
"""The created discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Specifies input field to create or update code basic discount."""
input DiscountCodeBasicInput {
"""The title of the discount."""
title: String
"""The date and time when the discount starts."""
startsAt: DateTime
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The maximum number of times that the code discount can be used. For open-ended discounts, use `null`.
"""
usageLimit: Int
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirementInput
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGetsInput
"""The customers that can use the discount."""
customerSelection: DiscountCustomerSelectionInput
"""The code to use the discount."""
code: String
}
"""Return type for `discountCodeBasicUpdate` mutation."""
type DiscountCodeBasicUpdatePayload {
"""The updated discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""A BXGY code discount."""
type DiscountCodeBxgy {
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean!
"""The number of times that the discount has been used."""
asyncUsageCount: Int!
"""The number of redeem codes for the discount."""
codeCount: Int!
"""A list of redeem codes for the discount."""
codes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DiscountRedeemCodeConnection!
"""The date and time when the discount was created."""
createdAt: DateTime!
"""
The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
"""
customerBuys: DiscountCustomerBuys!
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGets!
"""The customers that can use the discount."""
customerSelection: DiscountCustomerSelection!
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""The date and time when the discount starts."""
startsAt: DateTime!
"""The status of the discount."""
status: DiscountStatus!
"""A detailed summary of the discount."""
summary: String!
"""The title of the Discount."""
title: String!
"""The maximum number of times the code discount can be used."""
usageLimit: Int
"""
The maximum number of times that the discount can be applied to an order.
"""
usesPerOrderLimit: Int
}
"""Return type for `discountCodeBxgyCreate` mutation."""
type DiscountCodeBxgyCreatePayload {
"""The created discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Specifies input field to create or update a BXGY code discount."""
input DiscountCodeBxgyInput {
"""The title of the discount."""
title: String
"""The date and time when the discount starts."""
startsAt: DateTime
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
"""
customerBuys: DiscountCustomerBuysInput
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
customerGets: DiscountCustomerGetsInput
"""The customers that can use this discount."""
customerSelection: DiscountCustomerSelectionInput
"""The code to use the discount."""
code: String
"""
The maximum number of times that the code discount can be used. For open-ended discounts, use `null`.
"""
usageLimit: Int
"""
The maximum number of times that the discount can be applied to an order.
"""
usesPerOrderLimit: Int
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean
}
"""Return type for `discountCodeBxgyUpdate` mutation."""
type DiscountCodeBxgyUpdatePayload {
"""The updated discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Return type for `discountCodeDeactivate` mutation."""
type DiscountCodeDeactivatePayload {
"""The deactivated code discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Return type for `discountCodeDelete` mutation."""
type DiscountCodeDeletePayload {
"""The deleted code discount ID."""
deletedCodeDiscountId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""A free shipping code discount."""
type DiscountCodeFreeShipping {
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean!
"""The number of times that the discount has been used."""
asyncUsageCount: Int!
"""The number of redeem codes for the discount."""
codeCount: Int!
"""A list of redeem codes for the discount."""
codes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DiscountRedeemCodeConnection!
"""The date and time when the discount was created."""
createdAt: DateTime!
"""The customers that can use the discount."""
customerSelection: DiscountCustomerSelection!
"""A shipping destination that qualifies for the discount."""
destinationSelection: DiscountShippingDestinationSelection!
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirement
"""A short summary of the discount."""
shortSummary: String!
"""The date and time when the discount starts."""
startsAt: DateTime!
"""The status of the discount."""
status: DiscountStatus!
"""A detailed summary of the discount."""
summary: String!
"""The title of the discount."""
title: String!
"""The maximum number of times the code discount can be used."""
usageLimit: Int
}
"""Return type for `discountCodeFreeShippingCreate` mutation."""
type DiscountCodeFreeShippingCreatePayload {
"""The created discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""Specifies input field to create or update free shipping code discount."""
input DiscountCodeFreeShippingInput {
"""The title of the discount."""
title: String
"""The date and time when the discount starts."""
startsAt: DateTime
"""
The date and time when the discount ends. For open-ended discounts, use `null`.
"""
endsAt: DateTime
"""The code to use the discount."""
code: String
"""
The maximum number of times that the code discount can be used. For open-ended discounts, use `null`.
"""
usageLimit: Int
"""Whether the discount can be applied only once per customer."""
appliesOncePerCustomer: Boolean
"""
The minimum subtotal or quantity that's required for the discount to be applied.
"""
minimumRequirement: DiscountMinimumRequirementInput
"""The customers that can use this discount."""
customerSelection: DiscountCustomerSelectionInput
"""A list of destinations where the discount will apply."""
destination: DiscountShippingDestinationSelectionInput
}
"""Return type for `discountCodeFreeShippingUpdate` mutation."""
type DiscountCodeFreeShippingUpdatePayload {
"""The updated discount."""
codeDiscountNode: DiscountCodeNode
"""List of errors that occurred executing the mutation."""
userErrors: [DiscountUserError!]!
}
"""A code discount wrapper node."""
type DiscountCodeNode implements Node & HasEvents {
"""A code discount."""
codeDiscount: DiscountCode!
"""The paginated list of events associated with the host subject."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""Globally unique identifier."""
id: ID!
}
type DiscountCodeNodeConnection {
"""A list of edges."""
edges: [DiscountCodeNodeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DiscountCodeNodeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DiscountCodeNodeEdge."""
node: DiscountCodeNode!
}
"""The set of valid sort keys for the discountCodes query."""
enum DiscountCodeSortKeys {
"""Sort by the `code` value."""
CODE
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
A list of collections that the discount can have as a prerequisite or entitlement.
"""
type DiscountCollections {
"""
A list of collections that the discount can have as a prerequisite or entitlement.
"""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionConnection!
}
"""Specifies the collections attached to a discount."""
input DiscountCollectionsInput {
"""Specifies list of collection ids to add."""
add: [ID!]
"""Specifies list of collection ids to remove."""
remove: [ID!]
}
"""The shipping destination where the discount applies."""
type DiscountCountries {
"""The codes for the countries where the discount can be used."""
countries: [CountryCode!]!
"""
Whether the discount is applicable to countries that have not been defined in the shop's shipping zones.
"""
includeRestOfWorld: Boolean!
}
"""
Specifies a list of countries to add or remove from the free shipping discount.
"""
input DiscountCountriesInput {
"""
The country codes to add to the list of countries where the discount applies.
"""
add: [CountryCode!]
"""
The country codes to remove from the list of countries where the discount applies.
"""
remove: [CountryCode!]
"""
Whether the discount code is applicable to countries that have not been defined in the shop's shipping zones.
"""
includeRestOfWorld: Boolean = false
}
"""Whether the discount applies to all countries."""
type DiscountCountryAll {
"""Always true when resolved to this type."""
allCountries: Boolean!
}
"""Whether the discount applies to all customers."""
type DiscountCustomerAll {
"""Always true when resolved to this type."""
allCustomers: Boolean!
}
"""The prerequisite items and prerequisite value."""
type DiscountCustomerBuys {
"""The prerequisite items for the discount."""
items: DiscountItems!
"""The prerequisite value."""
value: DiscountCustomerBuysValue!
}
"""Specifies the prerequisite items and prerequisite quantity."""
input DiscountCustomerBuysInput {
"""The quantity of prerequisite items."""
value: DiscountCustomerBuysValueInput
"""
The IDs of items that the customer buys. The items can be either collections or products.
"""
items: DiscountItemsInput
}
"""The prerequisite quantity required for the discount to be applicable."""
union DiscountCustomerBuysValue = DiscountQuantity
"""Specifies the prerequisite quantity for the discount."""
input DiscountCustomerBuysValueInput {
"""The quantity of prerequisite items."""
quantity: UnsignedInt64
}
"""
The qualifying items in an order, the quantity of each one, and the total value of the discount.
"""
type DiscountCustomerGets {
"""Entitled items."""
items: DiscountItems!
"""Entitled quantity and the discount value."""
value: DiscountCustomerGetsValue!
}
"""
Specifies the items that will be discounted, the quantity of items that will be discounted, and the value of discount.
"""
input DiscountCustomerGetsInput {
"""The quantity of items discounted and the discount value."""
value: DiscountCustomerGetsValueInput
"""
The IDs of the items that the customer gets. The items can be either collections or products.
"""
items: DiscountItemsInput
}
"""The value of the discount and how it will be applied."""
union DiscountCustomerGetsValue = DiscountOnQuantity | DiscountAmount | DiscountPercentage
"""Specifies the quantity of items discounted and the discount value."""
input DiscountCustomerGetsValueInput {
"""The quantity of the items that are discounted and the discount value."""
discountOnQuantity: DiscountOnQuantityInput
"""
The percentage value of the discount. Value must be between 0.00 - 1.00.
"""
percentage: Float
"""The value of the discount."""
discountAmount: DiscountAmountInput
}
"""A list of customers to whom the discount applies."""
type DiscountCustomers {
"""A list of the customers that can use the discount."""
customers: [Customer!]!
}
"""
A list of customer saved searches that contain the customers to whom the discount applies.
"""
type DiscountCustomerSavedSearches {
"""
A list of customer saved searches that contain the customers who are eligible to use the discount.
"""
savedSearches: [SavedSearch!]!
}
"""
Specifies which customer saved searches to add to or remove from the discount.
"""
input DiscountCustomerSavedSearchesInput {
"""
A list of customer saved searches to add to the current list of customer saved searches.
"""
add: [ID!]
"""
A list of customer saved searches to remove from the current list of customer saved searches.
"""
remove: [ID!]
}
"""The selection of customers who can use this discount."""
union DiscountCustomerSelection = DiscountCustomerAll | DiscountCustomers | DiscountCustomerSavedSearches
"""Specifies the customers who can use this discount."""
input DiscountCustomerSelectionInput {
"""Whether all customers can use this discount."""
all: Boolean
"""The list of customer IDs to add or remove from the list of customers."""
customers: DiscountCustomersInput
"""
The list of customer saved search IDs to add or remove from the list of customer saved searches.
"""
customerSavedSearches: DiscountCustomerSavedSearchesInput
}
"""Specifies which customers to add to or remove from the discount."""
input DiscountCustomersInput {
"""
A list of customers to add to the current list of customers who can use the discount.
"""
add: [ID!]
"""
A list of customers to remove from the current list of customers who can use the discount.
"""
remove: [ID!]
}
"""
The type of discount that will be applied. Currently, only percentage off is supported.
"""
union DiscountEffect = DiscountPercentage
"""
Specifies how the discount will be applied. Currently, only percentage off is supported.
"""
input DiscountEffectInput {
"""
The percentage value of the discount. Value must be between 0.00 - 1.00.
"""
percentage: Float
}
"""Possible error codes that could be returned by a discounts mutation."""
enum DiscountErrorCode {
"""Input value is blank."""
BLANK
"""Input value is not present."""
PRESENT
"""Input value should be equal to allowed value."""
EQUAL_TO
"""Input value should be greater than minimum allowed value."""
GREATER_THAN
"""Input value should be greater than or equal to minimum allowed value."""
GREATER_THAN_OR_EQUAL_TO
"""Input value is invalid."""
INVALID
"""Input value should be less or equal to maximum allowed value."""
LESS_THAN_OR_EQUAL_TO
"""Input value should be less than maximum allowed value."""
LESS_THAN
"""Input value is already taken."""
TAKEN
"""Input value is too long."""
TOO_LONG
"""Input value is too short."""
TOO_SHORT
"""Unexpected internal error happened."""
INTERNAL_ERROR
"""Too many arguments provided."""
TOO_MANY_ARGUMENTS
"""Missing a required argument."""
MISSING_ARGUMENT
"""Exceeded maximum allowed value."""
EXCEEDED_MAX
"""Cannot have both minimum subtotal and quantity present."""
MINIMUM_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT
"""Value is outside allowed range."""
VALUE_OUTSIDE_RANGE
"""
Active period overlaps with other automatic discounts. At any given time, only one automatic discount can be active.
"""
ACTIVE_PERIOD_OVERLAP
"""Attribute selection contains conflicting settings."""
CONFLICT
"""Value is already present through another selection."""
IMPLICIT_DUPLICATE
"""Input value is already present."""
DUPLICATE
}
"""
Entitled or prerequisite items on a discount. An item could be either collection or product or product_variant.
"""
union DiscountItems = AllDiscountItems | DiscountProducts | DiscountCollections
"""Specifies the items attached to a discount."""
input DiscountItemsInput {
"""The products and product variants that are attached to a discount."""
products: DiscountProductsInput
"""The collections that are attached to a discount."""
collections: DiscountCollectionsInput
"""Whether all items should be selected."""
all: Boolean
}
"""The minimum quantity of items required for the discount to apply."""
type DiscountMinimumQuantity {
"""
The minimum quantity of items that's required for the discount to be applied.
"""
greaterThanOrEqualToQuantity: UnsignedInt64!
}
"""Specifies the quantity minimum requirements for a discount."""
input DiscountMinimumQuantityInput {
"""
The minimum quantity of items that's required for the discount to be applied.
"""
greaterThanOrEqualToQuantity: UnsignedInt64
}
"""The minimum subtotal or quantity requirements for the discount."""
union DiscountMinimumRequirement = DiscountMinimumQuantity | DiscountMinimumSubtotal
"""
Specifies the quantity or subtotal minimum requirements for a discount.
"""
input DiscountMinimumRequirementInput {
"""The minimum required quantity."""
quantity: DiscountMinimumQuantityInput
"""The minimum required subtotal."""
subtotal: DiscountMinimumSubtotalInput
}
"""The minimum subtotal required for the discount to apply."""
type DiscountMinimumSubtotal {
"""The minimum subtotal that's required for the discount to be applied."""
greaterThanOrEqualToSubtotal: MoneyV2!
}
"""Specifies the subtotal minimum requirements for a discount."""
input DiscountMinimumSubtotalInput {
"""The minimum subtotal that's required for the discount to be applied."""
greaterThanOrEqualToSubtotal: Decimal
}
"""
The quantity of items discounted, the discount value, and how the discount will be applied.
"""
type DiscountOnQuantity {
"""The discount's effect on qualifying items."""
effect: DiscountEffect!
"""The number of items being discounted."""
quantity: DiscountQuantity!
}
"""Specifies the quantity of items discounted and the discount value."""
input DiscountOnQuantityInput {
"""The quantity of items that are discounted."""
quantity: UnsignedInt64
"""The percentage value of the discount."""
effect: DiscountEffectInput
}
"""The percentage value of the discount."""
type DiscountPercentage {
"""The percentage value of the discount."""
percentage: Float!
}
"""
The entitled or prerequisite products and product variants for a discount.
"""
type DiscountProducts {
"""
A list of product variants that the discount can have as a prerequisite or entitlement.
"""
productVariants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductVariantConnection!
"""
A list of products that the discount can have as a prerequisite or entitlement.
"""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductConnection!
}
"""Specifies the products and product variants attached to a discount."""
input DiscountProductsInput {
"""Specifies list of product ids to add."""
productsToAdd: [ID!]
"""Specifies list of product ids to remove."""
productsToRemove: [ID!]
"""Specifies list of product variant ids to add."""
productVariantsToAdd: [ID!]
"""Specifies list of product variant ids to remove."""
productVariantsToRemove: [ID!]
}
"""The quantity of items in discount."""
type DiscountQuantity {
"""The quantity of items."""
quantity: UnsignedInt64!
}
"""A redeem code for a code discount."""
type DiscountRedeemCode {
"""The code of a discount."""
code: String!
}
type DiscountRedeemCodeConnection {
"""A list of edges."""
edges: [DiscountRedeemCodeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DiscountRedeemCodeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DiscountRedeemCodeEdge."""
node: DiscountRedeemCode!
}
"""The selection of shipping countries to which this discount applies."""
union DiscountShippingDestinationSelection = DiscountCountryAll | DiscountCountries
"""
Specifies the destinations where the free shipping discount will be applied.
"""
input DiscountShippingDestinationSelectionInput {
"""Whether the discount code applies to all countries."""
all: Boolean = false
"""A list of countries where the discount code will apply."""
countries: DiscountCountriesInput
}
"""The status of the discount."""
enum DiscountStatus {
"""The discount is active."""
ACTIVE
"""The discount is expired."""
EXPIRED
"""The discount is scheduled."""
SCHEDULED
}
"""An error that occurs during the execution of a discount mutation."""
type DiscountUserError implements DisplayableError {
"""An error code to uniquely identify the error."""
code: DiscountErrorCode
"""Path to the input field which caused the error."""
field: [String!]
"""The error message."""
message: String!
}
"""Represents an error in the input of a mutation."""
interface DisplayableError {
"""Path to the input field which caused the error."""
field: [String!]
"""The error message."""
message: String!
}
"""The possible statuses of a dispute."""
enum DisputeStatus {
NEEDS_RESPONSE
UNDER_REVIEW
CHARGE_REFUNDED
ACCEPTED
WON
LOST
}
"""The possible types for a dispute."""
enum DisputeType {
CHARGEBACK
INQUIRY
}
"""
A unique string that represents the address of a Shopify store on the Internet.
"""
type Domain implements Node {
"""The host name of the domain (eg: `example.com`)."""
host: String!
"""Globally unique identifier."""
id: ID!
"""Whether SSL is enabled or not."""
sslEnabled: Boolean!
"""The URL of the domain (eg: `https://example.com`)."""
url: URL!
}
"""
Returns unfulfilled line items grouped by their fulfillment service. Each draft
fulfillment contains additional information, such as whether the fulfillment
requires shipping and whether a shipping label can be printed for it.
"""
type DraftFulfillment {
"""Whether a label can be purchased."""
allowLabelPurchase: Boolean!
"""
The line items (which might correspond to a variant) that are part of this draft fulfillment.
"""
lineItems: [LineItem!]!
"""Whether a fulfillment requires shipping."""
requiresShipping: Boolean!
"""The service responsible for fulfilling the fulfillment."""
service: FulfillmentService!
}
"""
Represents a draft order. Merchants can use draft orders to create orders on behalf of their customers.
"""
type DraftOrder implements Node & HasMetafields & CommentEventSubject & LegacyInteroperability & HasEvents {
"""Order-level discount applied to the draft order."""
appliedDiscount: DraftOrderAppliedDiscount
"""
Billing address of the customer.
"""
billingAddress: MailingAddress
"""
Date and time when the draft order converted to a new order,
and the draft order's status changed to **Completed**.
"""
completedAt: DateTime
"""Date and time when the draft order was created in Shopify."""
createdAt: DateTime!
"""
Three letter code for the currency of the store at the time that the invoice is sent.
"""
currencyCode: CurrencyCode!
"""
Custom information added to the draft order on behalf of your customer.
"""
customAttributes: [Attribute!]!
"""
Customer who will be sent an invoice for the draft order, if there is one.
"""
customer: Customer
"""Email address of the customer, which is used to send notifications to."""
email: String
"""List of events associated with the draft order."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""Whether the merchant has added timeline comments to the draft order."""
hasTimelineComment: Boolean!
"""Globally unique identifier."""
id: ID!
"""Date and time when the invoice was last emailed to the customer."""
invoiceSentAt: DateTime
"""
Link to the checkout, which is sent to your customer in the invoice email.
"""
invoiceUrl: URL
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""List of the line items in the draft order."""
lineItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DraftOrderLineItemConnection!
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""
Unique identifier for the draft order, which is unique within the store. For example, _#D1223_.
"""
name: String!
"""Text from an optional note attached to the draft order."""
note2: String
"""Order that was created from this draft order."""
order: Order
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""Shipping mailing address of the customer."""
shippingAddress: MailingAddress
"""Line item that contains the shipping costs."""
shippingLine: ShippingLine
"""Status of the draft order."""
status: DraftOrderStatus!
"""
Subtotal of the line items and their discounts (does not contain shipping charges or shipping discounts, or taxes).
"""
subtotalPrice: Money!
"""Tags added to the draft order."""
tags: [String!]!
"""Whether the draft order is tax exempt."""
taxExempt: Boolean!
"""Total amount of taxes charged for each line item and shipping line."""
taxLines: [TaxLine!]!
"""Whether the line item prices include taxes."""
taxesIncluded: Boolean!
"""
Total amount of the draft order (includes taxes, shipping charges, and discounts).
"""
totalPrice: Money!
"""Total shipping charge for the draft order."""
totalShippingPrice: Money!
"""Total amount of taxes for the draft order."""
totalTax: Money!
"""Total weight (grams) of the draft order."""
totalWeight: UnsignedInt64!
"""
Date and time when the draft order was last changed.
The format is YYYY-MM-DD HH:mm:ss (for example, 2016-02-05 17:04:01).
"""
updatedAt: DateTime!
}
"""The order-level discount applied to a draft order."""
type DraftOrderAppliedDiscount {
"""Amount of the order-level discount that is applied to the draft order."""
amount: Money! @deprecated(reason: "Use `amountV2` instead")
"""Amount of money discounted."""
amountV2: MoneyV2!
"""Description of the order-level discount."""
description: String!
"""Name of the order-level discount."""
title: String
"""
Amount of the order level discount (when value_type is percentage,
the value in this field is the percentage discount).
"""
value: Float!
"""Type of the order-level discount."""
valueType: DraftOrderAppliedDiscountType!
}
"""
The input fields for applying an order-level discount to a draft order.
"""
input DraftOrderAppliedDiscountInput {
"""
The applied amount of the discount.
"""
amount: Money!
"""
Reason for the discount.
"""
description: String
"""
Title of the discount.
"""
title: String
"""
The value of the discount.
If the type of the discount is fixed amount, then this is a fixed dollar amount.
If the type is percentage, then this is the percentage.
"""
value: Float!
"""
The type of discount.
"""
valueType: DraftOrderAppliedDiscountType!
}
"""The valid discount types that can be applied to a draft order."""
enum DraftOrderAppliedDiscountType {
"""A fixed amount in the store's currency."""
FIXED_AMOUNT
"""A percentage of the order subtotal."""
PERCENTAGE
}
"""Return type for `draftOrderCalculate` mutation."""
type DraftOrderCalculatePayload {
"""The calculated properties for a draft order."""
calculatedDraftOrder: CalculatedDraftOrder
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `draftOrderComplete` mutation."""
type DraftOrderCompletePayload {
"""The completed draft order."""
draftOrder: DraftOrder
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type DraftOrderConnection {
"""A list of edges."""
edges: [DraftOrderEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `draftOrderCreate` mutation."""
type DraftOrderCreatePayload {
"""
The created draft order.
"""
draftOrder: DraftOrder
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the draft order to delete by its ID."""
input DraftOrderDeleteInput {
"""
The ID of the draft order to delete.
"""
id: ID!
}
"""Return type for `draftOrderDelete` mutation."""
type DraftOrderDeletePayload {
"""
The ID of the deleted draft order.
"""
deletedId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type DraftOrderEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DraftOrderEdge."""
node: DraftOrder!
}
"""The input fields used to create or update a draft order."""
input DraftOrderInput {
"""
The discount that will be applied to the draft order.
A draft order line item can have one discount. A draft order can also have one order-level discount.
"""
appliedDiscount: DraftOrderAppliedDiscountInput
"""
The mailing address associated with the payment method.
"""
billingAddress: MailingAddressInput
"""
Customer associated with the draft order.
"""
customerId: ID
"""
Extra information added to the customer.
"""
customAttributes: [AttributeInput!]
"""
The customer's email address.
"""
email: String
"""
Product variant line item or custom line item associated to the draft order.
Each draft order must include at least one line item.
"""
lineItems: [DraftOrderLineItemInput!]
"""
Metafields attached to the draft order.
"""
metafields: [MetafieldInput!]
"""The private metafields attached to the draft order."""
privateMetafields: [PrivateMetafieldInput!]
"""
The text of an optional note that a shop owner can attach to the draft order.
"""
note: String
"""
The mailing address to where the order will be shipped.
"""
shippingAddress: MailingAddressInput
"""
A shipping line object, which details the shipping method used.
"""
shippingLine: ShippingLineInput
"""
Additional short descriptors, commonly used for filtering and searching,
formatted as a string of comma-separated values.
"""
tags: [String!]
"""
Whether or not taxes are exempt for the draft order.
If false, then Shopify will refer to the taxable field for each line item.
If a customer is applied to the draft order, then Shopify will use the customer's tax exempt field instead.
"""
taxExempt: Boolean
"""
Sent as part of a draft order object to load customer shipping information.
"""
useCustomerDefaultAddress: Boolean
}
"""Return type for `draftOrderInvoicePreview` mutation."""
type DraftOrderInvoicePreviewPayload {
"""HTML to preview the draft order invoice email."""
previewHtml: HTML
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `draftOrderInvoiceSend` mutation."""
type DraftOrderInvoiceSendPayload {
"""The draft order an invoice email is sent for."""
draftOrder: DraftOrder
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Represents a line item included in a draft order."""
type DraftOrderLineItem implements Node {
"""
Discount which will be applied to the line item or the overall order.
"""
appliedDiscount: DraftOrderAppliedDiscount
"""
Whether this is a product variant line item, or a custom line item.
If set to true indicates a custom line item. If set to false indicates a product variant line item.
"""
custom: Boolean!
"""List of additional information (metafields) about the line item."""
customAttributes: [Attribute!]!
"""
Line item price after discounts are applied.
"""
discountedTotal: Money!
"""
The `discountedTotal` divided by `quantity`, resulting in the value of the discount per unit.
"""
discountedUnitPrice: Money!
"""
Name of the service provider who fulfilled the order.
Valid values are either **manual** or the name of the provider.
For example, **amazon**, **shipwire**.
"""
fulfillmentService: FulfillmentService!
"""
Weight in grams. Can only be specified if this is a custom line item.
"""
grams: Int @deprecated(reason: "Use `weight` instead")
"""Globally unique identifier."""
id: ID!
"""Image associated with the draft order line item."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""Whether the line item represents the puchase of a gift card."""
isGiftCard: Boolean!
"""Name of the product."""
name: String!
"""
Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
"""
originalTotal: Money!
"""Variant price without any discounts applied."""
originalUnitPrice: Money!
"""
The product corresponding to the line itemΓÇÖs product variant.
"""
product: Product
"""Number of variant items requested in the draft order."""
quantity: Int!
"""Whether physical shipping is required for the variant."""
requiresShipping: Boolean!
"""Variant SKU number."""
sku: String
"""
A list of tax line objects, each of which details the total taxes applicable to the order.
"""
taxLines: [TaxLine!]!
"""Whether the variant is taxable."""
taxable: Boolean!
"""
Title of the product or variant (this field only applies to custom line items).
"""
title: String!
"""
Total value of the discount applied to the line item.
"""
totalDiscount: Money!
"""
Associated variant for the line item.
"""
variant: ProductVariant
"""Name of the variant."""
variantTitle: String
"""Name of the vendor who made the variant."""
vendor: String
"""Weight unit and value for a draft order line item."""
weight: Weight
}
type DraftOrderLineItemConnection {
"""A list of edges."""
edges: [DraftOrderLineItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type DraftOrderLineItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of DraftOrderLineItemEdge."""
node: DraftOrderLineItem!
}
"""The input fields used to create a line item for a draft order."""
input DraftOrderLineItemInput {
"""
Discount which will be applied to the line item.
"""
appliedDiscount: DraftOrderAppliedDiscountInput
"""
Represents a generic custom attribute using a key value pair.
"""
customAttributes: [AttributeInput!]
"""
Ignored when variant ID is provided. This argument is deprecated: Use `weight` instead.
"""
grams: Int
"""Ignored when variant ID is provided."""
originalUnitPrice: Money
"""
The number of products that were purchased.
"""
quantity: Int!
"""Ignored when variant ID is provided."""
requiresShipping: Boolean
"""Ignored when variant ID is provided."""
sku: String
"""Ignored when variant ID is provided."""
taxable: Boolean
"""Ignored when variant ID is provided."""
title: String
"""
The ID of the product variant corresponding to the line item.
Null if custom line item. Required if product variant line item.
"""
variantId: ID
"""
Specifies the weight unit and value inputs.
Ignored when variant ID or product ID are provided.
"""
weight: WeightInput
}
"""The set of valid sort keys for the draftOrders query."""
enum DraftOrderSortKeys {
"""Sort by the `number` value."""
NUMBER
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `status` value."""
STATUS
"""Sort by the `total_price` value."""
TOTAL_PRICE
"""Sort by the `customer_name` value."""
CUSTOMER_NAME
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The valid statuses for a draft order."""
enum DraftOrderStatus {
"""The draft order has been paid."""
COMPLETED
"""An invoice for the draft order has been sent to the customer."""
INVOICE_SENT
"""
The draft order is open. It has not been paid, and an invoice hasn't been sent.
"""
OPEN
}
"""Return type for `draftOrderUpdate` mutation."""
type DraftOrderUpdatePayload {
"""The updated draft order."""
draftOrder: DraftOrder
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The attribute editable information."""
type EditableProperty {
"""Whether the attribute is locked for editing."""
locked: Boolean!
"""The reason the attribute is locked for editing."""
reason: FormattedString
}
"""Specifies the fields for an email."""
input EmailInput {
"""Specifies the email subject."""
subject: String
"""Specifies the email recipient."""
to: String
"""Specifies the email sender."""
from: String
"""Specifies the email body."""
body: String
"""Specifies any bcc recipients for the email."""
bcc: [String!]
"""Specifies a custom message to include in the email."""
customMessage: String
}
"""
Events chronicle resource activities such as the creation of an article, the fulfillment of an order, or the
addition of a product.
"""
interface Event {
"""
The name of the app that created the event. Returns null when the event originates from the Shopify admin.
"""
appTitle: String
"""Whether the event was created by an app."""
attributeToApp: Boolean!
"""Whether the event was caused by an admin user."""
attributeToUser: Boolean!
"""The date and time when the event was created."""
createdAt: DateTime!
"""Whether the event is critical."""
criticalAlert: Boolean!
"""Globally unique identifier."""
id: ID!
"""Human readable text that describes the event."""
message: FormattedString!
}
type EventConnection {
"""A list of edges."""
edges: [EventEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type EventEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of EventEdge."""
node: Event!
}
"""The set of valid sort keys for the events query."""
enum EventSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""List of export formats available."""
enum ExportFormat {
EXCEL_CSV
PLAIN_CSV
}
"""Specifies the sorting order for the facts of an assessment."""
enum FactSortKeys {
"""
Facts are sorted by sentiment according to the assessment result.
For a low assessment they are sorted in ascending order of sentiment: positve, neutral, negative.
For any other assessment they are sorted in descending order of sentiment negative, neutral, positive.
"""
RESULT
"""The default value for the sort key returns the facts unsorted."""
DEFAULT
}
"""Requirements that must be met before an app can be installed."""
type FailedRequirement {
"""
Action to be taken to resolve a failed requirement, including URL link.
"""
action: NavigationItem
"""
A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app
encounters when trying to make use of their Shop and its resources.
"""
message: String!
}
"""A filter option is one possible value in a search filter."""
type FilterOption {
"""The filter option's label for display purposes."""
label: String!
"""The filter option's value."""
value: String!
}
"""Return type for `flowTriggerReceive` mutation."""
type FlowTriggerReceivePayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
A string containing a strict subset of HTML code. Non-allowed tags will be stripped out.
Allowed tags:
* `a` (allowed attributes: `href`)
* `b`
* `br`
* `em`
* `i`
* `strong`
* `u`
Example value: `"Your current domain is <strong>johns-apparel.myshopify.com</strong>."`
"""
scalar FormattedString
"""The level of protection against fraudulent chargebacks."""
enum FraudProtectionLevel {
FULLY_PROTECTED
PARTIALLY_PROTECTED
NOT_PROTECTED
PENDING
NOT_ELIGIBLE
NOT_AVAILABLE
}
"""
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(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: FulfillmentEventSortKeys = HAPPENED_AT
): FulfillmentEventConnection!
"""List of the fulfillment's line items."""
fulfillmentLineItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): FulfillmentLineItemConnection!
"""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!
"""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(
"""Truncate the array result to this size."""
first: Int
): [FulfillmentTrackingInfo!]!
"""
The date and time when the fulfillment was last modified.
"""
updatedAt: DateTime!
}
"""
The actions that can be taken to fulfill an unfulfilled line items by location.
"""
enum FulfillmentAction {
"""Create a fulfillment."""
CREATE_FULFILLMENT
"""Purchase a shipping label."""
PURCHASE_LABEL
}
"""Return type for `fulfillmentCreate` mutation."""
type FulfillmentCreatePayload {
"""The created fulfillment."""
fulfillment: Fulfillment
"""The order for which the fulfillment is created."""
order: Order
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The display status of a fulfillment."""
enum FulfillmentDisplayStatus {
"""Displayed as **Attempted delivery**."""
ATTEMPTED_DELIVERY
"""Displayed as **Canceled**."""
CANCELED
"""Displayed as **Confirmed**."""
CONFIRMED
"""Displayed as **Delivered**."""
DELIVERED
"""Displayed as **Failure**."""
FAILURE
"""Displayed as **Fulfilled**."""
FULFILLED
"""Displayed as **In transit**."""
IN_TRANSIT
"""Displayed as **Label printed**."""
LABEL_PRINTED
"""Displayed as **Label purchased**."""
LABEL_PURCHASED
"""Displayed as **Label voided**."""
LABEL_VOIDED
"""Displayed as **Marked as fulfilled**."""
MARKED_AS_FULFILLED
"""Displayed as **Not delivered**."""
NOT_DELIVERED
"""Displayed as **Out for delivery**."""
OUT_FOR_DELIVERY
"""Displayed as **Ready for pickup**."""
READY_FOR_PICKUP
"""Displayed as **Submitted**."""
SUBMITTED
}
type FulfillmentEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of FulfillmentEdge."""
node: Fulfillment!
}
"""An event that describes a fulfillment at a time."""
type FulfillmentEvent implements Node {
"""The time at which this fulfillment event happened."""
happenedAt: DateTime!
"""Globally unique identifier."""
id: ID!
"""The status of this fulfillment event."""
status: FulfillmentEventStatus!
}
type FulfillmentEventConnection {
"""A list of edges."""
edges: [FulfillmentEventEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type FulfillmentEventEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of FulfillmentEventEdge."""
node: FulfillmentEvent!
}
"""The set of valid sort keys for the events query."""
enum FulfillmentEventSortKeys {
"""Sort by the `happened_at` value."""
HAPPENED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Event status' describe the status of a fulfillment."""
enum FulfillmentEventStatus {
"""A shipping label has been purchased."""
LABEL_PURCHASED
"""A purchased shipping label has been printed."""
LABEL_PRINTED
"""The fulfillment is ready to be picked up."""
READY_FOR_PICKUP
"""The fulfillment is confirmed."""
CONFIRMED
"""The fulfillment is in transit."""
IN_TRANSIT
"""The fulfillment is out for delivery."""
OUT_FOR_DELIVERY
"""A delivery was attempted."""
ATTEMPTED_DELIVERY
"""The fulfillment was successfully delivered."""
DELIVERED
"""The fulfillment request failed."""
FAILURE
}
"""The input fields used to create a fulfillment."""
input FulfillmentInput {
"""The ID of the order to be fulfilled."""
orderId: ID!
"""The line items to be fulfilled."""
lineItems: [FulfillmentLineItemInput!]
"""Tracking numbers associated with the fulfillment."""
trackingNumbers: [String!]
"""The URLs to track the fulfillment."""
trackingUrls: [String!]
"""The name of the tracking company."""
trackingCompany: String
"""
Whether the customer is notified.
If set to true, a notification is sent when the fulfillment is created.
"""
notifyCustomer: Boolean
"""A reference to the shipping method, such as `Free Shipping`."""
shippingMethod: String
"""The ID of the location from which the items will be fulfilled."""
locationId: ID!
}
"""Represents a line item from an order that's included in a fulfillment."""
type FulfillmentLineItem implements Node {
"""The total price after discounts are applied."""
discountedTotal: Money! @deprecated(reason: "Use `discountedTotalSet` instead")
"""
The total price after discounts are applied in shop and presentment currencies.
"""
discountedTotalSet: MoneyBag!
"""Globally unique identifier."""
id: ID!
"""The associated order's line item."""
lineItem: LineItem!
"""The total price before discounts are applied."""
originalTotal: Money! @deprecated(reason: "Use `originalTotalSet` instead")
"""
The total price before discounts are applied in shop and presentment currencies.
"""
originalTotalSet: MoneyBag!
"""Number of line items in the fulfillment."""
quantity: Int
}
type FulfillmentLineItemConnection {
"""A list of edges."""
edges: [FulfillmentLineItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type FulfillmentLineItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of FulfillmentLineItemEdge."""
node: FulfillmentLineItem!
}
"""
The input fields used to include a line item from an order in a fulfillment.
"""
input FulfillmentLineItemInput {
"""The ID of the line item."""
id: ID!
"""The quantity of the line item to be fulfilled."""
quantity: Int
}
"""
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 {
"""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 supports local deliveries."""
productBased: Boolean!
"""The name of the fulfillment service as seen by merchants."""
serviceName: String!
"""Shipping methods associated with the fulfillment service provider."""
shippingMethods: [ShippingMethod!]!
"""Type associated with the fulfillment service."""
type: FulfillmentServiceType!
}
"""Return type for `fulfillmentServiceCreate` mutation."""
type FulfillmentServiceCreatePayload {
"""The created fulfillment service."""
fulfillmentService: FulfillmentService
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `fulfillmentServiceDelete` mutation."""
type FulfillmentServiceDeletePayload {
"""The ID of the deleted fulfillment service."""
deletedId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The type of a fulfillment service."""
enum FulfillmentServiceType {
"""Fulfillment by gift card."""
GIFT_CARD
"""Manual fulfillment by the merchant."""
MANUAL
"""Fullfillment by a third-party fulfillment service."""
THIRD_PARTY
}
"""Return type for `fulfillmentServiceUpdate` mutation."""
type FulfillmentServiceUpdatePayload {
"""The updated fulfillment service."""
fulfillmentService: FulfillmentService
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The status of a fulfillment."""
enum FulfillmentStatus {
"""
Shopify has created the fulfillment and is waiting for the third-party
fulfillment service to transition it to `open` or `success`.
"""
PENDING
"""
The third-party fulfillment service has acknowledged the fulfilment and is processing it.
"""
OPEN
"""The fulfillment was completed successfully."""
SUCCESS
"""The fulfillment was canceled."""
CANCELLED
"""There was an error with the fulfillment request."""
ERROR
"""The fulfillment request failed."""
FAILURE
}
"""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
}
"""Return type for `fulfillmentTrackingInfoUpdate` mutation."""
type FulfillmentTrackingInfoUpdatePayload {
"""The updated fulfillment with tracking information."""
fulfillment: Fulfillment
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Connector to event records on a compatible host."""
interface HasEvents {
"""The paginated list of events associated with the host subject."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
}
"""
Represents information about the metafields associated to the specified resource.
"""
interface HasMetafields {
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
}
"""Published translations associated with the resource."""
interface HasPublishedTranslations {
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
}
"""
A string containing HTML code. Example value: `"<p>Grey cotton knit sweater.</p>"`.
"""
scalar HTML
"""Represents an image resource."""
type Image implements HasMetafields {
"""A word or phrase to share the nature or contents of an image."""
altText: String
"""A unique identifier for the image."""
id: ID
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""
The location of the original image as a URL.
If there are any existing transformations in the original source URL, they will remain and not be stripped.
"""
originalSrc: URL!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""The location of the image as a URL."""
src: URL! @deprecated(reason: "Previously an image had a single `src` field. This could either return the original image\nlocation or a URL that contained transformations such as sizing or scale.\n\nThese transformations were specified by arguments on the parent field.\n\nNow an image has two distinct URL fields: `originalSrc` and `transformedSrc`.\n\n* `originalSrc` - the original unmodified image URL\n* `transformedSrc` - the image URL with the specified transformations included\n\nTo migrate to the new fields, image transformations should be moved from the parent field to `transformedSrc`.\n\nBefore:\n```graphql\n{\n shop {\n productImages(maxWidth: 200, scale: 2) {\n edges {\n node {\n src\n }\n }\n }\n }\n}\n```\n\nAfter:\n```graphql\n{\n shop {\n productImages {\n edges {\n node {\n transformedSrc(maxWidth: 200, scale: 2)\n }\n }\n }\n }\n}\n```\n")
"""
The location of the transformed image as a URL.
All transformation arguments are considered "best-effort". If they can be applied to an image, they will be.
Otherwise any transformations which an image type does not support will be ignored.
"""
transformedSrc(
"""Image width in pixels between 1 and 5760."""
maxWidth: Int
"""Image height in pixels between 1 and 5760."""
maxHeight: Int
"""Crops the image according to the specified region."""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1 and 3.
"""
scale: Int = 1
"""
Best effort conversion of image into content type (SVG -> PNG, Anything -> JGP, Anything -> WEBP are supported).
"""
preferredContentType: ImageContentType
): URL!
}
type ImageConnection {
"""A list of edges."""
edges: [ImageEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""List of supported image content types."""
enum ImageContentType {
PNG
JPG
WEBP
}
type ImageEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ImageEdge."""
node: Image!
}
"""Specifies the input fields for an image."""
input ImageInput {
id: ID
altText: String
"""The URL of the image. May be a signed upload URL."""
src: String
}
"""Upload parameter of an image."""
type ImageUploadParameter {
"""Parameter name."""
name: String!
"""Parameter value."""
value: String!
}
"""Return type for `inventoryActivate` mutation."""
type InventoryActivatePayload {
"""The newly activated inventory level."""
inventoryLevel: InventoryLevel
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the items and their adjustments."""
input InventoryAdjustItemInput {
"""ID of the inventory item to adjust."""
inventoryItemId: ID!
"""Count by which to adjust the available quantity."""
availableDelta: Int!
}
"""Specifies the fields required to adjust the inventory quantity."""
input InventoryAdjustQuantityInput {
"""ID of the inventory level to adjust."""
inventoryLevelId: ID!
"""Count by which to adjust the available quantity."""
availableDelta: Int!
}
"""Return type for `inventoryAdjustQuantity` mutation."""
type InventoryAdjustQuantityPayload {
"""
Represents the updated inventory quantity of an inventory item at a specific location.
"""
inventoryLevel: InventoryLevel
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `inventoryBulkAdjustQuantityAtLocation` mutation."""
type InventoryBulkAdjustQuantityAtLocationPayload {
"""The updated inventory quantities."""
inventoryLevels: [InventoryLevel!]
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `inventoryDeactivate` mutation."""
type InventoryDeactivatePayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
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 Node & LegacyInteroperability {
"""The ISO code of the country of origin."""
countryCodeOfOrigin: CountryCode
"""List of country specific harmonized system codes."""
countryHarmonizedSystemCodes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
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
"""Globally unique identifier."""
id: ID!
"""URL for inventory history web page."""
inventoryHistoryUrl: URL
"""Get the inventory level at a specific location."""
inventoryLevel(
"""ID of the location for which the inventory level is requested."""
locationId: ID!
): InventoryLevel
"""
Paginated list of inventory levels for each location that the inventory item is stocked at.
"""
inventoryLevels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `created_at`
- `inventory_group_id`
- `inventory_item_id`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
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 code of the province of origin."""
provinceCodeOfOrigin: String
"""Whether the item requires shipping or not."""
requiresShipping: Boolean!
"""Inventory item SKU."""
sku: String
"""
Whether the inventory quantities of inventory levels for the item are tracked or not.
"""
tracked: Boolean!
"""Whether changes to the inventory item tracked attribute are allowed."""
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!
}
type InventoryItemConnection {
"""A list of edges."""
edges: [InventoryItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type InventoryItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of InventoryItemEdge."""
node: InventoryItem!
}
"""Inventory items."""
input InventoryItemInput {
"""
Unit cost associated with the inventory item, the currency is the shop's default currency.
"""
cost: Decimal
"""Whether the inventory item is tracked."""
tracked: Boolean
}
"""Inventory items."""
input InventoryItemUpdateInput {
"""
Unit cost associated with the inventory item, the currency is the shop's default currency.
"""
cost: Decimal
"""Whether the inventory item is tracked."""
tracked: Boolean
"""The ISO code of the country of origin."""
countryCodeOfOrigin: CountryCode
"""The ISO code of the province of origin."""
provinceCodeOfOrigin: String
"""The harmonized system code of the inventory item."""
harmonizedSystemCode: String
"""List of country-specific harmonized system codes."""
countryHarmonizedSystemCodes: [CountryHarmonizedSystemCodeInput!]
}
"""Return type for `inventoryItemUpdate` mutation."""
type InventoryItemUpdatePayload {
"""The updated inventory item."""
inventoryItem: InventoryItem
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Represents the inventory quantity of an inventory item at a specific location.
"""
type InventoryLevel implements Node {
"""Quantity of items available at the location."""
available: Int!
"""Whether inventoryDeactivate is allowed for this inventory level."""
canDeactivate: Boolean!
"""The date and time when the inventory level was created."""
createdAt: DateTime!
"""
Reason why canDeactivate is false, or impact of deactivating the inventory level.
"""
deactivationAlert: String
"""
Reason why canDeactivate is false with URLs linked in HTML, or impact of deactivating the inventory level.
"""
deactivationAlertHtml: FormattedString
"""Globally unique identifier."""
id: ID!
"""Quantity of items incoming to the location."""
incoming: Int!
"""Inventory item associated with the inventory level."""
item: InventoryItem!
"""Location associated with the inventory level."""
location: Location!
"""The date and time when the inventory level was updated."""
updatedAt: DateTime!
}
type InventoryLevelConnection {
"""A list of edges."""
edges: [InventoryLevelEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type InventoryLevelEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of InventoryLevelEdge."""
node: InventoryLevel!
}
"""Inventory quantity at a specific location."""
input InventoryLevelInput {
"""Sets the quantity available at the location."""
availableQuantity: Int!
"""ID of the location."""
locationId: ID!
}
"""
A job corresponds to some long running task that the client should poll for status.
"""
type Job {
"""This indicates if the job is still queued or has been run."""
done: Boolean!
id: ID!
"""
This field will only resolve once the job is done. Can be used to ask for object(s) that have been changed by the job.
"""
query: QueryRoot
}
"""
A JSON Object. Example value: `{ "key1": "Value 1", "key2": "Value 2", "key3": 3 }`
"""
scalar JSON
"""The locale language allowed for Kit Skill."""
enum KitSkillLocale {
"""English language."""
EN
}
"""Return type for `kitSkillTriggerRequest` mutation."""
type KitSkillTriggerRequestPayload {
"""
Conversation unique identifier sent to Conversation API and returned to app developer.
"""
conversationUid: String
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Interoperability metadata for types that directly correspond to a REST Admin API resource.
For example, on the Product type, LegacyInteroperability returns metadata for
the corresponding [Product
object](https://help.shopify.com/api/reference/products/product) in the REST Admin API.
"""
interface LegacyInteroperability {
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
}
"""Units of measurement for length."""
enum LengthUnit {
"""1000 millimeters equals 1 meter."""
MILLIMETERS
"""100 centimeters equals 1 meter."""
CENTIMETERS
"""Metric system unit of length."""
METERS
"""12 inches equals 1 foot."""
INCHES
"""Imperial system unit of length."""
FEET
"""1 yard equals 3 feet."""
YARDS
}
"""
The total number of pending orders on a shop if less then a maximum, or that maximum.
The atMax field indicates when this maximum has been reached.
"""
type LimitedPendingOrderCount {
"""This is set when the number of pending orders has reached the maximum."""
atMax: Boolean!
"""
The number of pendings orders on the shop.
Limited to a maximum of 10000.
"""
count: Int!
}
"""Represents a single line in a shopping cart."""
type LineItem implements Node {
"""
Whether the line item's variant has an ID and inventory is managed by Shopify.
"""
canRestock: Boolean! @deprecated(reason: "Use `restockable` instead")
"""List of additional information (metafields) about the line item."""
customAttributes: [Attribute!]!
"""
The discounts that have been allocated onto the line item by discount applications.
"""
discountAllocations: [DiscountAllocation!]!
"""The total line price after discounts are applied."""
discountedTotal: Money! @deprecated(reason: "Use `discountedTotalSet` instead")
"""
The total line price after discounts are applied in shop and presentment currencies.
"""
discountedTotalSet: MoneyBag!
"""
The price of a single variant unit after line item discounts are applied.
"""
discountedUnitPrice: Money! @deprecated(reason: "Use `discountedUnitPriceSet` instead")
"""
The price of a single variant unit after line item discounts are applied in shop and presentment currencies.
"""
discountedUnitPriceSet: MoneyBag!
"""The total number of units to fulfill."""
fulfillableQuantity: Int!
"""
Name of the service provider who fulfilled the order.
Valid values are either **manual** or the name of the provider.
For example, **amazon**, **shipwire**.
"""
fulfillmentService: FulfillmentService!
"""
The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity,
'partial' if fulfillableQuantity > 0, and 'unfulfilled' otherwise.
"""
fulfillmentStatus: String!
"""Globally unique identifier."""
id: ID!
"""The Image object associated to the line item's variant."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""Whether the line item can be edited or not."""
merchantEditable: Boolean!
"""Name of the product."""
name: String!
"""A count of the number of line items that cannot be fulfilled."""
nonFulfillableQuantity: Int!
"""
Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
"""
originalTotal: Money! @deprecated(reason: "Use `originalTotalSet` instead")
"""
Total price (without discounts) of the line item, based on the original unit
price of the variant x quantity in shop and presentment currencies.
"""
originalTotalSet: MoneyBag!
"""Variant price without any discounts applied."""
originalUnitPrice: Money! @deprecated(reason: "Use `originalUnitPriceSet` instead")
"""
Variant price without any discounts applied in shop and presentment currencies.
"""
originalUnitPriceSet: MoneyBag!
"""The Product object associated with this line item's variant."""
product: Product
"""Number of variant items ordered."""
quantity: Int!
"""The line item's quantity minus its refundedQuantity."""
refundableQuantity: Int!
"""Whether physical shipping is required for the variant."""
requiresShipping: Boolean!
"""
Whether the line item's variant has an ID and inventory is managed by Shopify.
"""
restockable: Boolean!
"""Variant SKU number."""
sku: String
"""The TaxLine object connected to this line item."""
taxLines(
"""Truncate the array result to this size."""
first: Int
): [TaxLine!]!
"""Whether the variant is taxable."""
taxable: Boolean!
"""
Title of the product or variant (this field only applies to custom line items).
"""
title: String!
"""The sum of all AppliedDiscounts on this line item."""
totalDiscount: Money! @deprecated(reason: "Use `totalDiscountSet` instead")
"""
The sum of all AppliedDiscounts on this line item in shop and presentment currencies.
"""
totalDiscountSet: MoneyBag!
"""The total discounted value of unfulfilled units."""
unfulfilledDiscountedTotal: Money! @deprecated(reason: "Use `unfulfilledDiscountedTotalSet` instead")
"""
The total discounted value of unfulfilled units in shop and presentment currencies.
"""
unfulfilledDiscountedTotalSet: MoneyBag!
"""The total value before discount of all unfulfilled units."""
unfulfilledOriginalTotal: Money! @deprecated(reason: "Use `unfulfilledOriginalTotalSet` instead")
"""
The total value before discount of all unfulfilled units in shop and presentment currencies.
"""
unfulfilledOriginalTotalSet: MoneyBag!
"""The number of units not yet fulfilled."""
unfulfilledQuantity: Int!
"""The Variant object associated with this line item."""
variant: ProductVariant
"""Name of the variant."""
variantTitle: String
"""Name of the vendor who made the variant."""
vendor: String
}
type LineItemConnection {
"""A list of edges."""
edges: [LineItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type LineItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of LineItemEdge."""
node: LineItem!
}
"""A link to direct users to."""
type Link implements HasPublishedTranslations {
"""A context-sensitive label for the link."""
label: String!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""The URL that the link visits."""
url: URL!
}
"""
A string containing Liquid markup to be rendered as HTML. Example value: `"<p>{{ shop.url }}</p>"`
"""
scalar LiquidHTML
"""
Represents the location where the physical good resides.
"""
type Location implements Node & LegacyInteroperability {
"""Whether this location can be reactivated."""
activatable: Boolean!
"""The LocationAddress object for location."""
address: LocationAddress!
"""Whether the location address has been verified."""
addressVerified: Boolean!
"""Whether this location can be deactivated."""
deactivatable: Boolean!
"""
Date and time the location was deactivated (null if location is still active).
Following UTC ISO8601 format, e.g.: "2019-04-24T13:42:24Z".
"""
deactivatedAt: String
"""Whether this location can be deleted."""
deletable: Boolean!
"""Name of the service provider that fulfills from this location."""
fulfillmentService: FulfillmentService
"""Indicates whether this location can fulfill online orders."""
fulfillsOnlineOrders: Boolean!
"""Indicates whether or not this location has active inventory."""
hasActiveInventory: Boolean!
"""Indicates whether or not this location has unfulfilled orders."""
hasUnfulfilledOrders: Boolean!
"""Globally unique identifier."""
id: ID!
"""A single inventory level for the given inventory item."""
inventoryLevel(
"""
Specifies the inventory item ID for the inventory level to be returned.
"""
inventoryItemId: ID!
): InventoryLevel
"""
Paginated list of inventory levels for inventory items stocked at the location.
"""
inventoryLevels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `created_at`
- `inventory_group_id`
- `inventory_item_id`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): InventoryLevelConnection!
"""Whether the location is active."""
isActive: Boolean!
isPrimary: Boolean! @deprecated(reason: "The concept of a primary location is deprecated, shipsInventory can be used to get a fallback location")
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The name of the location."""
name: String!
"""Indicates whether or not this location ships inventory."""
shipsInventory: Boolean!
"""List of suggested addresses for this location (empty if none)."""
suggestedAddresses: [LocationSuggestedAddress!]!
}
"""
Represents the address of the location.
"""
type LocationAddress {
"""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 country of the location."""
country: String
"""The two-letter country code of the location."""
countryCode: String
formatted: [String!]!
"""The latitude coordinates of the location."""
latitude: Float
"""The longitude coordinates of the location."""
longitude: Float
"""The phone number of the location."""
phone: String
"""The province of the location."""
province: String
"""
The code for the region of the address, such as the province, state, or district.
For example QC for Quebec, Canada.
"""
provinceCode: String
"""The ZIP code of the location."""
zip: String
}
type LocationConnection {
"""A list of edges."""
edges: [LocationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type LocationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of LocationEdge."""
node: Location!
}
"""The set of valid sort keys for the locations query."""
enum LocationSortKeys {
"""Sort by the `name` value."""
NAME
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Represents a suggested address for a location.
"""
type LocationSuggestedAddress {
"""The first line of the suggested address."""
address1: String
"""The second line of the suggested address."""
address2: String
"""The city of the suggested address."""
city: String
"""The country of the suggested address."""
country: String
"""The country code of the suggested address."""
countryCode: CountryCode
"""A formatted version of the suggested address."""
formatted: [String!]!
"""The province of the suggested address."""
province: String
"""The province code of the suggested address."""
provinceCode: String
"""The ZIP code of the suggested address."""
zip: String
}
"""
Represents a customer mailing address.
For example, a customer's default address and an order's billing address are both mailling addresses.
"""
type MailingAddress implements Node {
"""
The first line of the address. Typically the street address or PO Box number.
"""
address1: String
"""
The second line of the address. Typically the number of the apartment, suite, or unit.
"""
address2: String
"""
The name of the city, district, village, or town.
"""
city: String
"""
The name of the customer's company or organization.
"""
company: String
"""
The name of the country.
"""
country: String
"""
The two-letter code for the country of the address.
For example, US.
"""
countryCode: String @deprecated(reason: "Use `countryCodeV2` instead")
"""
The two-letter code for the country of the address.
For example, US.
"""
countryCodeV2: CountryCode
"""The first name of the customer."""
firstName: String
"""
A formatted version of the address, customized by the provided arguments.
"""
formatted(
"""Whether to include the customer's name in the formatted address."""
withName: Boolean = false
"""Whether to include the customer's company in the formatted address."""
withCompany: Boolean = true
): [String!]!
"""A comma-separated list of the values for city, province, and country."""
formattedArea: String
"""Globally unique identifier."""
id: ID!
"""The last name of the customer."""
lastName: String
"""The latitude coordinate of the customer address."""
latitude: Float
"""The longitude coordinate of the customer address."""
longitude: Float
"""
The full name of the customer, based on firstName and lastName.
"""
name: String
"""
A unique phone number for the customer.
Formatted using E.164 standard. For example, _+16135551111_.
"""
phone: String
"""The region of the address, such as the province, state, or district."""
province: String
"""
The two-letter code for the region.
For example, ON.
"""
provinceCode: String
"""The zip or postal code of the address."""
zip: String
}
type MailingAddressEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of MailingAddressEdge."""
node: MailingAddress!
}
"""The fields used to create or update a mailing address."""
input MailingAddressInput {
"""
The first line of the address. Typically the street address or PO Box number.
"""
address1: String
"""
The second line of the address. Typically the number of the apartment, suite, or unit.
"""
address2: String
"""
The name of the city, district, village, or town.
"""
city: String
"""
The name of the customer's company or organization.
"""
company: String
"""
The name of the country. This argument is deprecated: Use `countryCode` instead.
"""
country: String
"""The two-letter code for the country of the address."""
countryCode: CountryCode
"""The first name of the customer."""
firstName: String
"""
This argument is deprecated: Not needed for 90% of mutations, and provided separately where it is needed.
"""
id: ID
"""The last name of the customer."""
lastName: String
"""
A unique phone number for the customer.
Formatted using E.164 standard. For example, _+16135551111_.
"""
phone: String
"""
The region of the address, such as the province, state, or district. This
argument is deprecated: Use `provinceCode` instead.
"""
province: String
"""
The code for the region of the address, such as the province, state, or district.
For example QC for Quebec, Canada.
"""
provinceCode: String
"""The zip or postal code of the address."""
zip: String
}
"""
Manual discount applications capture the intentions of a discount that was manually created for an order.
"""
type ManualDiscountApplication implements DiscountApplication {
"""
The method by which the discount's value is allocated to its entitled items.
"""
allocationMethod: DiscountApplicationAllocationMethod!
"""The description of the discount application."""
description: String
"""
An ordered index that can be used to identify the discount application and indicate the precedence
of the discount application for calculations.
"""
index: Int!
"""How the discount amount is distributed on the discounted lines."""
targetSelection: DiscountApplicationTargetSelection!
"""Whether the discount is applied on line items or shipping lines."""
targetType: DiscountApplicationTargetType!
"""The title of the discount application."""
title: String!
"""The value of the discount application."""
value: PricingValue!
}
"""
A marketing activity represents marketing created by an app on behalf of the merchant.
"""
type MarketingActivity implements Node {
"""
The url of the activity listing page of this marketing activity in the marketing section.
"""
activityListUrl: URL
"""Amount spent on this marketing activity."""
adSpend: MoneyV2
"""The app which created this marketing activity."""
app: App!
"""Errors generated when app was trying to complete this activity."""
appErrors: MarketingActivityExtensionAppErrors
"""The budget for this marketing activity."""
budget: MarketingBudget
"""The date and time when the marketing activity was created."""
createdAt: DateTime!
"""Globally unique identifier."""
id: ID!
"""The broad category of marketing, used for reporting aggregation."""
marketingChannel: MarketingChannel!
"""Associated marketing event of this marketing activity."""
marketingEvent: MarketingEvent
"""
A contextual description of the marketing activity based on the platform and tactic used.
"""
sourceAndMedium: String!
"""
Status helps to identify if this marketing activity has been completed, queued, failed etc.
"""
status: MarketingActivityStatus!
"""
The [date and time](
https://help.shopify.com/https://en.wikipedia.org/wiki/ISO_8601
) when the activity's status last changed.
"""
statusTransitionedAt: DateTime
"""The method of marketing used for this marketing activity."""
tactic: MarketingTactic!
"""Expected status set by app in prior to an asynchronous operation."""
targetStatus: MarketingActivityStatus
"""Title of this marketing activity."""
title: String!
"""The date and time when the marketing activity was updated."""
updatedAt: DateTime!
"""The set of UTM parameters being tracked for this marketing activity."""
utmParameters: UTMParameters
}
"""This type combines budget amount and its marketing budget type."""
input MarketingActivityBudgetInput {
"""Budget type for marketing activity."""
budgetType: MarketingBudgetBudgetType
"""Amount of budget for the marketing activity."""
total: MoneyInput
}
type MarketingActivityConnection {
"""A list of edges."""
edges: [MarketingActivityEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type MarketingActivityEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of MarketingActivityEdge."""
node: MarketingActivity!
}
"""
The error code resulted from the marketing activity extension integration.
"""
enum MarketingActivityExtensionAppErrorCode {
"""The shop/user must be onboarded to use the app."""
NOT_ONBOARDED_ERROR
"""The app has returned validation errors."""
VALIDATION_ERROR
"""The app is not responding or returning unexpected data."""
API_ERROR
"""The app has returned an error when invoking the platform."""
PLATFORM_ERROR
"""The app needs to be installed."""
INSTALL_REQUIRED_ERROR
}
"""
Represents errors returned from apps when using the marketing activity extension.
"""
type MarketingActivityExtensionAppErrors {
"""The app error type."""
code: MarketingActivityExtensionAppErrorCode!
"""The list of errors returned by the app."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the marketingActivities query."""
enum MarketingActivitySortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Status helps to identify if this marketing activity has been completed, queued, failed etc.
"""
enum MarketingActivityStatus {
"""This marketing activity is currently running."""
ACTIVE
"""This marketing activity is permanently unavailable."""
DELETED
"""
This marketing activity was deleted and it was triggered from outside of Shopify.
"""
DELETED_EXTERNALLY
"""This marketing activity is disconnected and no longer editable."""
DISCONNECTED
"""This marketing activity is unable to run."""
FAILED
"""This marketing activity has completed running."""
INACTIVE
"""This marketing activity is currently not running."""
PAUSED
"""This marketing activity is pending creation on the app's platform."""
PENDING
"""This marketing activity is scheduled to run."""
SCHEDULED
"""There is no defined status for external marketing activities."""
UNDEFINED
}
"""Specifies the input fields required to update a marketing activity."""
input MarketingActivityUpdateInput {
"""The id for this marketing activity."""
id: ID!
"""
The ID of the recommendation this marketing activity was created from, if one exists.
"""
marketingRecommendationId: ID
"""The title of this marketing activity."""
title: String
"""The budget for this marketing activity."""
budget: MarketingActivityBudgetInput
"""
The cumulative amount spent on this marketing activity. This argument is
deprecated: Use `MarketingEngagementCreate.MarketingEngagementInput.adSpend`
GraphQL to send the ad spend.
"""
adSpend: MoneyInput
"""The current state of the marketing activity."""
status: MarketingActivityStatus
"""
Specifies the
[Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters)
that are associated with a related marketing campaign. UTMInput is required for all Marketing
tactics except Storefront App. This utm param can be only set once and never modified.
"""
utm: UTMInput
"""
A list of the items that were marketed in this marketing activity. Valid types for these items are:
* `Product`
* `Shop` (Must be your current shop).
"""
marketedResources: [ID!]
"""
Encoded context provided by Shopify during the update marketing activity
callback. This argument is deprecated: This context is no longer needed by
Shopify in the callback.
"""
context: String
"""
Error messages generated when app was trying to complete this activity.
"""
errors: JSON
}
"""Return type for `marketingActivityUpdate` mutation."""
type MarketingActivityUpdatePayload {
"""The updated marketing activity."""
marketingActivity: MarketingActivity
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
This type combines budget amount and its marketing budget type.
"""
type MarketingBudget {
"""The budget type for a marketing activity."""
budgetType: MarketingBudgetBudgetType!
"""The amount of budget for marketing activity."""
total: MoneyV2!
}
"""The budget type for a marketing activity."""
enum MarketingBudgetBudgetType {
"""A daily budget."""
DAILY
"""A budget for the lifetime of a marketing activity."""
LIFETIME
}
"""
The available marketing channels for a marketing activity or event. A marketing
channel is broad category of marketing, used for reporting aggregation.
"""
enum MarketingChannel {
"""Paid search."""
SEARCH
"""Displayed ads."""
DISPLAY
"""Social media."""
SOCIAL
"""Email."""
EMAIL
"""Referral links."""
REFERRAL
}
"""
Marketing engagement represents customer activity taken on a marketing event.
"""
type MarketingEngagement {
"""
The total ad spend for the day, if the marketing event is a paid ad with a daily spend.
"""
adSpend: MoneyV2
"""The total number of clicks on the marketing event for the day."""
clicksCount: Int
"""The total number of comments for the day."""
commentsCount: Int
"""The total number of complaints for the day."""
complaintsCount: Int
"""The total number of fails for the day."""
failsCount: Int
"""The total number of favorites for the day."""
favoritesCount: Int
"""The date time at which the data was fetched."""
fetchedAt: DateTime
"""The total number of impressions for the day."""
impressionsCount: Int
"""
Whether the engagements are reported as lifetime values rather than daily totals.
"""
isCumulative: Boolean
"""The marketing activity related to this engagement."""
marketingActivity: MarketingActivity!
"""The date that these engagements occurred on."""
occurredOn: Date!
"""The total number of sends for the day."""
sendsCount: Int
"""The total number of shares for the day."""
sharesCount: Int
"""The total number of unique clicks for the day."""
uniqueClicksCount: Int
"""The total number of unique views for the day."""
uniqueViewsCount: Int
"""The total number of unsubscribes for the day."""
unsubscribesCount: Int
"""
The UTC Offset that the app is using to determine which date to allocate spend to.
"""
utcOffset: UtcOffset
"""The total number of views for the day."""
viewsCount: Int
}
"""Return type for `marketingEngagementCreate` mutation."""
type MarketingEngagementCreatePayload {
"""The marketing engagement that was created."""
marketingEngagement: MarketingEngagement
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
This object represents marketing engagement input fields for a marketing engagement.
"""
input MarketingEngagementInput {
"""The date that these engagements occurred on."""
occurredOn: Date!
"""The total number of impressions for the day."""
impressionsCount: Int
"""The total number of views for the day."""
viewsCount: Int
"""The total number of clicks on the marketing event for the day."""
clicksCount: Int
"""The total number of shares for the day."""
sharesCount: Int
"""The total number of favorites for the day."""
favoritesCount: Int
"""The total number of comments for the day."""
commentsCount: Int
"""The total number of unsubscribes for the day."""
unsubscribesCount: Int
"""The total number of complaints for the day."""
complaintsCount: Int
"""The total number of fails for the day."""
failsCount: Int
"""The total number of sends for the day."""
sendsCount: Int
"""The total number of unique views for the day."""
uniqueViewsCount: Int
"""The total number of unique clicks for the day."""
uniqueClicksCount: Int
"""
The total ad spend for the day, if the marketing event is a paid ad with a daily spend.
"""
adSpend: MoneyInput
"""
Whether the engagements are reported as lifetime values rather than daily totals.
"""
isCumulative: Boolean
"""
The UTC Offset that the app is using to determine which date to allocate spend to.
"""
utcOffset: UtcOffset
"""The date time at which the data was fetched."""
fetchedAt: DateTime
}
"""Represents actions that market a merchant's store or products."""
type MarketingEvent implements Node & LegacyInteroperability {
"""The app that the marketing event is attributed to."""
app: App!
"""The marketing channel used by the marketing event."""
channel: MarketingChannel
"""A human-readable description of the marketing event."""
description: String
"""The date and time when the marketing event ended."""
endedAt: DateTime
"""Globally unique identifier."""
id: ID!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The URL where the marketing event can be managed."""
manageUrl: URL
"""The URL where the marketing event can be previewed."""
previewUrl: URL
"""An optional ID that helps Shopify validate engagement data."""
remoteId: String
"""The date and time when the marketing event is scheduled to end."""
scheduledToEndAt: DateTime
"""
Where the `MarketingEvent` occurred and what kind of content was used.
Because `utmSource` and `utmMedium` are often used interchangeably, this is
based on a combination of `marketingChannel`, `referringDomain`, and `type` to
provide a consistent representation for any given piece of marketing
regardless of the app that created it.
"""
sourceAndMedium: String!
"""The date and time when the marketing event started."""
startedAt: DateTime!
"""The display text for the marketing event type."""
targetTypeDisplayText: String! @deprecated(reason: "Use `sourceAndMedium` instead")
"""The marketing event type."""
type: MarketingTactic!
"""The name of the marketing campaign."""
utmCampaign: String
"""
The medium that the marketing campaign is using. Example values: `cpc`, `banner`.
"""
utmMedium: String
"""
The referrer of the marketing event. Example values: `google`, `newsletter`.
"""
utmSource: String
}
type MarketingEventConnection {
"""A list of edges."""
edges: [MarketingEventEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type MarketingEventEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of MarketingEventEdge."""
node: MarketingEvent!
}
"""The set of valid sort keys for the marketingEvents query."""
enum MarketingEventSortKeys {
"""Sort by the `started_at` value."""
STARTED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
List of supported marketing platforms surfaced on the marketing section.
"""
enum MarketingPlatform {
"""Facebook."""
FACEBOOK
"""Instagram."""
INSTAGRAM
"""Google."""
GOOGLE
"""Pinterest."""
PINTEREST
"""Bing."""
BING
"""Email."""
EMAIL
"""Snapchat."""
SNAPCHAT
"""SMS."""
SMS
}
"""The available types of marketing event."""
enum MarketingTactic {
"""An abandoned cart recovery email."""
ABANDONED_CART
"""An ad, such as a Facebook ad."""
AD
"""An affiliate link."""
AFFILIATE
"""A link."""
LINK
"""A loyalty program."""
LOYALTY
"""A messaging app, such as Facebook Messenger."""
MESSAGE
"""A newsletter."""
NEWSLETTER
"""A notification in the Shopify admin."""
NOTIFICATION
"""A blog post."""
POST
"""A retargeting ad."""
RETARGETING
"""A transactional email."""
TRANSACTIONAL
"""Search engine optimization."""
SEO
"""A direct visit to the online store."""
DIRECT
"""Popup on merchant's store."""
STOREFRONT_APP
"""A display ad."""
DISPLAY @deprecated(reason: "`DISPLAY` is deprecated. Use `AD` instead.")
"""Paid search."""
SEARCH @deprecated(reason: "`SEARCH` is deprecated. Use `AD` instead.")
"""A follow-up email."""
FOLLOW_UP @deprecated(reason: "'FOLLOW_UP' is deprecated. Use 'TRANSACTIONAL' instead.")
"""A promotional receipt."""
RECEIPT @deprecated(reason: "'RECEIPT' is deprecated. Use 'TRANSACTIONAL' instead.")
}
"""
Metafields represent custom metadata attached to a resource. Metafields can be sorted into namespaces and are
comprised of keys, values, and value types.
"""
type Metafield implements Node & LegacyInteroperability {
"""The description of a metafield."""
description: String
"""Globally unique identifier."""
id: ID!
"""The key name for a metafield."""
key: String!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The namespace for a metafield."""
namespace: String!
"""Owner type of a metafield visible to the Storefront API."""
ownerType: MetafieldOwnerType!
"""The value of a metafield."""
value: String!
"""Represents the metafield value type."""
valueType: MetafieldValueType!
}
type MetafieldConnection {
"""A list of edges."""
edges: [MetafieldEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Specifies the input fields to delete a metafield."""
input MetafieldDeleteInput {
id: ID!
}
"""Return type for `metafieldDelete` mutation."""
type MetafieldDeletePayload {
deletedId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type MetafieldEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of MetafieldEdge."""
node: Metafield!
}
"""Specifies the input fields for a metafield."""
input MetafieldInput {
description: String
id: ID
key: String
namespace: String
value: String
valueType: MetafieldValueType
}
"""Metafield owner types."""
enum MetafieldOwnerType {
"""A metafield owner type."""
ARTICLE
"""A metafield owner type."""
BLOG
"""A metafield owner type."""
COLLECTION
"""A metafield owner type."""
CUSTOMER
"""A metafield owner type."""
DRAFTORDER
"""A metafield owner type."""
ORDER
"""A metafield owner type."""
PAGE
"""A metafield owner type."""
PRODUCT
"""A metafield owner type."""
PRODUCTIMAGE
"""A metafield owner type."""
PRODUCTVARIANT
"""A metafield owner type."""
SHOP
}
"""
Represents a whitelist record that enables a metafield to be visible to the storefront.
"""
type MetafieldStorefrontVisibility implements Node & LegacyInteroperability {
"""The date and time when the whitelist record was created."""
createdAt: DateTime!
"""Globally unique identifier."""
id: ID!
"""Key of a metafield in the visibility whitelist."""
key: String!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""Namespace of a metafield in the visibility whitelist."""
namespace: String!
"""Owner type of a metafield in the visibility whitelist."""
ownerType: MetafieldOwnerType!
"""The date and time when the whitelist record was updated."""
updatedAt: DateTime!
}
type MetafieldStorefrontVisibilityConnection {
"""A list of edges."""
edges: [MetafieldStorefrontVisibilityEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `metafieldStorefrontVisibilityCreate` mutation."""
type MetafieldStorefrontVisibilityCreatePayload {
"""The metafield storefront visibility that was created."""
metafieldStorefrontVisibility: MetafieldStorefrontVisibility
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `metafieldStorefrontVisibilityDelete` mutation."""
type MetafieldStorefrontVisibilityDeletePayload {
"""The ID of the deleted metafield storefront visibility."""
deletedMetafieldStorefrontVisibilityId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type MetafieldStorefrontVisibilityEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of MetafieldStorefrontVisibilityEdge."""
node: MetafieldStorefrontVisibility!
}
"""
Specifies the input fields for a MetafieldStorefrontVisibilityInput.
"""
input MetafieldStorefrontVisibilityInput {
"""The namespace of the metafield to be visible to the storefront api."""
namespace: String!
"""The key of the metafield to be visible to the storefront api."""
key: String!
"""The core resource ( e.g.: Product ) that owns this metafield."""
ownerType: MetafieldOwnerType!
}
"""Metafield value types."""
enum MetafieldValueType {
STRING
INTEGER
JSON_STRING
}
"""The set of valid sort keys for the methodDefinitions query."""
enum MethodDefinitionSortKeys {
"""Sort by the `rate_provider_type` value."""
RATE_PROVIDER_TYPE
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
input MobileDeviceRegisterInput {
id: ID
token: String!
name: String!
snsPlatformApplication: String
badgeEnabled: Boolean
identifier: String
}
input MobileDeviceUnregisterInput {
id: ID!
}
input MobileTokenDeleteInput {
tokenFingerprint: String!
}
"""A monetary value string. Example value: `"100.57"`."""
scalar Money
"""
A collection of monetary values in their respective currencies.
"""
type MoneyBag {
"""Amount in presentment currency."""
presentmentMoney: MoneyV2!
"""Amount in shop currency."""
shopMoney: MoneyV2!
}
"""Specifies the fields for a monetary value with currency."""
input MoneyInput {
"""Decimal money amount."""
amount: Decimal!
"""Currency of the money."""
currencyCode: CurrencyCode!
}
"""
A monetary value with currency.
To format currencies, combine this type's amount and currencyCode fields with your client's locale.
For example, in JavaScript you could use Intl.NumberFormat:
```js
new Intl.NumberFormat(locale, {
style: 'currency',
currency: currencyCode
}).format(amount);
```
Other formatting libraries include:
* iOS - [NumberFormatter](https://developer.apple.com/documentation/foundation/numberformatter)
* Android - [NumberFormat](https://developer.android.com/reference/java/text/NumberFormat.html)
* PHP - [NumberFormatter](http://php.net/manual/en/class.numberformatter.php)
For a more general solution, the [Unicode CLDR number formatting database] is available with many implementations
(such as [TwitterCldr](https://github.com/twitter/twitter-cldr-rb)).
"""
type MoneyV2 {
"""Decimal money amount."""
amount: Decimal!
"""Currency of the money."""
currencyCode: CurrencyCode!
}
"""An individual move to perform of an object to a position."""
input MoveInput {
"""The ID of the object to be moved."""
id: ID!
"""The new position of the object in the set, using a 0 based index."""
newPosition: UnsignedInt64!
}
type Mutation {
"""
Allows an app to create a credit for a shop that can be used towards future app purchases.
"""
appCreditCreate(
"""The description of the app credit."""
description: String!
"""
The amount that can be used towards future app purchases in Shopify.The only permitted currency code is USD.
"""
amount: MoneyInput!
"""Specifies whether the app credit is a test transaction."""
test: Boolean = false
): AppCreditCreatePayload
"""Allows an app to charge a shop for features or services one time."""
appPurchaseOneTimeCreate(
"""The name of the app one-time purchase."""
name: String!
"""
The amount to be charged to the store for the app one-time purchase. The only permitted currency code is USD.
"""
price: MoneyInput!
"""
The URL where the merchant is redirected after approving the app one-time purchase.
"""
returnUrl: URL!
"""Specifies whether the app one-time purchase is a test transaction."""
test: Boolean = false
): AppPurchaseOneTimeCreatePayload
"""Cancels an app subscription on a store."""
appSubscriptionCancel(
"""The ID of the app subscription to be cancelled."""
id: ID!
): AppSubscriptionCancelPayload
"""
Allows an app to charge a store for features or services on a recurring basis.
"""
appSubscriptionCreate(
"""The name of the app subscription."""
name: String!
"""Attaches a plan to an app subscription."""
lineItems: [AppSubscriptionLineItemInput!]!
"""
Specifies whether the app subscription is a test transaction. Default value is false.
"""
test: Boolean
"""The number of days of the free trial.."""
trialDays: Int
"""
The URL where the merchant is redirected after approving the app subscription.
"""
returnUrl: URL!
): AppSubscriptionCreatePayload
"""
Updates the app plan's pricing details attached to an app subscription.
"""
appSubscriptionLineItemUpdate(
"""The ID for the app subscription line item to be updated."""
id: ID!
"""The updated capped amount a store can be charged for usage pricing."""
cappedAmount: MoneyInput!
): AppSubscriptionLineItemUpdatePayload
"""Allows an app to charge a store for usage."""
appUsageRecordCreate(
"""The ID for the app subscription line item."""
subscriptionLineItemId: ID!
"""
The price of the app usage record. The only permitted currceny code is USD.
"""
price: MoneyInput!
"""The description of the app usage record."""
description: String!
): AppUsageRecordCreatePayload
"""
Starts the cancelation process of a running bulk operation.
There may be a short delay from when a cancelation starts until the operation is actually canceled.
"""
bulkOperationCancel(
"""ID of the bulk operation to cancel."""
id: ID!
): BulkOperationCancelPayload
"""
Creates and runs a bulk operation query.
See the [bulk operations guide](https://help.shopify.com/api/guides/bulk-operations) for more details.
"""
bulkOperationRunQuery(
"""The query to be executed in bulk."""
query: String!
): BulkOperationRunQueryPayload
"""Adds products to a collection."""
collectionAddProducts(
"""The ID of the collection that's being updated."""
id: ID!
"""The IDs of the products that are being added to the collection."""
productIds: [ID!]!
): CollectionAddProductsPayload
"""
Creates a collection.
"""
collectionCreate(
"""The properties to use when creating the collection."""
input: CollectionInput!
): CollectionCreatePayload
"""Deletes a collection."""
collectionDelete(
"""Specifies the collection to delete by its ID."""
input: CollectionDeleteInput!
): CollectionDeletePayload
"""Publishes a collection to a channel."""
collectionPublish(
"""
Specify a collection to publish and the sales channels to publish it to.
"""
input: CollectionPublishInput!
): CollectionPublishPayload @deprecated(reason: "Use `publishablePublish` instead")
"""
Removes a set of products from a given collection. It can take a long time to
run. Instead of returning a collection it returns a job, which should be polled.
"""
collectionRemoveProducts(
"""The ID of the collection to remove products from."""
id: ID!
"""The IDs of products to remove from the collection."""
productIds: [ID!]!
): CollectionRemoveProductsPayload
"""Asynchronously reorders a set of products from a given collection."""
collectionReorderProducts(
"""The ID of the collection on which to reorder products."""
id: ID!
"""A list of moves to perform which will be evaulated in order."""
moves: [MoveInput!]!
): CollectionReorderProductsPayload
"""Unpublishes a collection."""
collectionUnpublish(
"""
Specify a collection to unpublish and the sales channels to remove it from.
"""
input: CollectionUnpublishInput!
): CollectionUnpublishPayload @deprecated(reason: "Use `publishableUnpublish` instead")
"""Updates a collection."""
collectionUpdate(
"""The updated properties for the collection."""
input: CollectionInput!
): CollectionUpdatePayload
"""Add tax exemptions to a customer."""
customerAddTaxExemptions(
"""The ID of the customer to update."""
customerId: ID!
"""The list of tax exemptions to add to the customer."""
taxExemptions: [TaxExemption!]!
): CustomerAddTaxExemptionsPayload
"""Creates a new customer."""
customerCreate(
"""Specifies the fields to use when creating the customer."""
input: CustomerInput!
): CustomerCreatePayload
"""Deletes a customer."""
customerDelete(
"""Specifies the customer to delete."""
input: CustomerDeleteInput!
): CustomerDeletePayload
"""Remove tax exemptions from a customer."""
customerRemoveTaxExemptions(
"""The ID of the customer to update."""
customerId: ID!
"""The list of tax exemptions to remove from the customer."""
taxExemptions: [TaxExemption!]!
): CustomerRemoveTaxExemptionsPayload
"""Replace tax exemptions on a customer."""
customerReplaceTaxExemptions(
"""The ID of the customer to update."""
customerId: ID!
"""
The list of tax exemptions that will replace the current exemptions on a customer.
"""
taxExemptions: [TaxExemption!]!
): CustomerReplaceTaxExemptionsPayload
"""Updates a customer's attributes."""
customerUpdate(
"""Provides updated fields for the customer."""
input: CustomerInput!
): CustomerUpdatePayload
"""Updates a customer's default address."""
customerUpdateDefaultAddress(
"""The ID of the customer whose default address is being updated."""
customerId: ID!
"""The ID of the address to use as the customer's default address."""
addressId: ID!
): CustomerUpdateDefaultAddressPayload
"""Creates a delivery profile."""
deliveryProfileCreate(
"""Specifies the input fields for a delivery profile."""
profile: DeliveryProfileInput!
): deliveryProfileCreatePayload
"""Enqueues the deletion/removal of a delivery profile."""
deliveryProfileRemove(
"""The ID of the profile to remove."""
id: ID!
): deliveryProfileRemovePayload
"""Updates a delivery profile."""
deliveryProfileUpdate(
"""The ID of the profile to update."""
id: ID!
"""Specifies the input fields for a delivery profile."""
profile: DeliveryProfileInput!
"""Whether or not this profile should leave legacy mode."""
leaveLegacyModeProfiles: Boolean
): deliveryProfileUpdatePayload
"""Set the delivery settings for a shop."""
deliverySettingUpdate(
"""Specifies the input fields for the delivery shop level settings."""
setting: DeliverySettingInput!
): DeliverySettingUpdatePayload
"""
Assign a location as the shipping origin while in legacy compatibility mode profiles.
"""
deliveryShippingOriginAssign(
"""The ID of the location to assign as the shipping origin."""
locationId: ID!
): DeliveryShippingOriginAssignPayload
"""Activates the automatic discount."""
discountAutomaticActivate(
"""The ID of the automatic discount to activate."""
id: ID!
): DiscountAutomaticActivatePayload
"""Creates a basic automatic discount."""
discountAutomaticBasicCreate(
"""The input data used to create the discount."""
automaticBasicDiscount: DiscountAutomaticBasicInput!
): DiscountAutomaticBasicCreatePayload
"""Update basic automatic discount using its id and input."""
discountAutomaticBasicUpdate(
"""The ID of the discount to update."""
id: ID!
"""The input data used to update the discount."""
automaticBasicDiscount: DiscountAutomaticBasicInput!
): DiscountAutomaticBasicUpdatePayload
"""
Asynchronously delete automatic discounts in bulk if a `search` or `saved_search_id` argument is provided or if a
maximum discount threshold is reached (1,000). Otherwise, deletions will occur inline.
**Warning:** All automatic discounts will be deleted if a blank `search` argument is provided.
"""
discountAutomaticBulkDelete(
"""The search query for filtering automatic discounts on."""
search: String
"""The ID of the saved search."""
savedSearchId: ID
"""The IDs of the discounts to delete."""
ids: [ID!]
): DiscountAutomaticBulkDeletePayload
"""Creates a BXGY automatic discount."""
discountAutomaticBxgyCreate(
"""The input data used to create the discount."""
automaticBxgyDiscount: DiscountAutomaticBxgyInput!
): DiscountAutomaticBxgyCreatePayload
"""Updates a BXGY automatic discount using its ID and input."""
discountAutomaticBxgyUpdate(
"""The ID of the discount to update."""
id: ID!
"""The input data used to update the discount."""
automaticBxgyDiscount: DiscountAutomaticBxgyInput!
): DiscountAutomaticBxgyUpdatePayload
"""Deactivates the automatic discount."""
discountAutomaticDeactivate(
"""The ID of the automatic discount to update."""
id: ID!
): DiscountAutomaticDeactivatePayload
"""Deletes the automatic discount."""
discountAutomaticDelete(
"""The ID of the automatic discount to delete."""
id: ID!
): DiscountAutomaticDeletePayload
"""Activates a code discount."""
discountCodeActivate(
"""The ID of the code discount to activate."""
id: ID!
): DiscountCodeActivatePayload
"""Creates a basic code discount."""
discountCodeBasicCreate(
"""The input data used to create discount."""
basicCodeDiscount: DiscountCodeBasicInput!
): DiscountCodeBasicCreatePayload
"""Updates a basic code discount."""
discountCodeBasicUpdate(
"""The ID of the code discount to update."""
id: ID!
"""The input data used to update the code discount."""
basicCodeDiscount: DiscountCodeBasicInput!
): DiscountCodeBasicUpdatePayload
"""Creates a BXGY code discount."""
discountCodeBxgyCreate(
"""The input data used to create discount."""
bxgyCodeDiscount: DiscountCodeBxgyInput!
): DiscountCodeBxgyCreatePayload
"""Updates a BXGY code discount."""
discountCodeBxgyUpdate(
"""The ID of the discount to update."""
id: ID!
"""The input data used to update the discount."""
bxgyCodeDiscount: DiscountCodeBxgyInput!
): DiscountCodeBxgyUpdatePayload
"""Deactivates the code discount."""
discountCodeDeactivate(
"""The ID of the code discount to deactivate."""
id: ID!
): DiscountCodeDeactivatePayload
"""Deletes the code discount."""
discountCodeDelete(
"""The ID of the code discount to delete."""
id: ID!
): DiscountCodeDeletePayload
"""Creates a free shipping code discount."""
discountCodeFreeShippingCreate(
"""The input data used to create the discount."""
freeShippingCodeDiscount: DiscountCodeFreeShippingInput!
): DiscountCodeFreeShippingCreatePayload
"""Updates a free shipping code discount."""
discountCodeFreeShippingUpdate(
"""The ID of the code discount to update."""
id: ID!
"""The input data used to update the discount."""
freeShippingCodeDiscount: DiscountCodeFreeShippingInput!
): DiscountCodeFreeShippingUpdatePayload
"""
Calculates the properties of a draft order. Useful for determining information
such as total taxes or price without actually creating a draft order.
"""
draftOrderCalculate(
"""The fields for the draft order."""
input: DraftOrderInput!
): DraftOrderCalculatePayload
"""Completes a draft order."""
draftOrderComplete(
"""Specifies the draft order to complete."""
id: ID!
"""Specifies whether the payment is pending or not."""
paymentPending: Boolean = false
): DraftOrderCompletePayload
"""Creates a draft order."""
draftOrderCreate(
"""The fields used to create the draft order."""
input: DraftOrderInput!
): DraftOrderCreatePayload
"""Deletes a draft order."""
draftOrderDelete(
"""Specify the draft order to delete by its ID."""
input: DraftOrderDeleteInput!
): DraftOrderDeletePayload
"""Previews a draft order invoice email."""
draftOrderInvoicePreview(
"""Specifies the draft order invoice email to preview."""
id: ID!
"""Specifies the draft order invoice email fields."""
email: EmailInput
): DraftOrderInvoicePreviewPayload
"""Sends an email invoice for a draft order."""
draftOrderInvoiceSend(
"""Specifies the draft order to send the invoice for."""
id: ID!
"""Specifies the draft order invoice email fields."""
email: EmailInput
): DraftOrderInvoiceSendPayload
"""Updates a draft order."""
draftOrderUpdate(
"""Specifies the draft order to update."""
id: ID!
"""The draft order properties to update."""
input: DraftOrderInput!
): DraftOrderUpdatePayload
"""
Triggers a workflow defined by the merchant in Shopify Flow. To learn more,
see [_Create Shopify Flow triggers_](https://help.shopify.com/api/embedded-apps/app-extensions/flow/create-triggers).
"""
flowTriggerReceive(
"""The payload needed to run the Trigger."""
body: String!
): FlowTriggerReceivePayload
"""Creates a fulfillment for an order."""
fulfillmentCreate(
"""The input fields used to create a fulfillment."""
input: FulfillmentInput!
): FulfillmentCreatePayload
"""Creates a fulfillment service."""
fulfillmentServiceCreate(
"""The name of the fulfillment service."""
name: String!
"""The URL to send requests for the fulfillment service."""
callbackUrl: URL
"""
Whether the fulfillment service provides tracking numbers for packages.
"""
trackingSupport: Boolean = false
): FulfillmentServiceCreatePayload
"""Deletes a fulfillment service."""
fulfillmentServiceDelete(
"""The ID of the fulfillment service to delete."""
id: ID!
"""
The ID of the location where inventory and commitments will be relocated
after the fulfillment service is deleted.
"""
destinationLocationId: ID
): FulfillmentServiceDeletePayload
"""Updates a fulfillment service."""
fulfillmentServiceUpdate(
"""The id of the fulfillment service."""
id: ID!
"""The name of the fulfillment service."""
name: String
"""The URL to send requests for the fulfillment service."""
callbackUrl: URL
"""
Whether the fulfillment service provides tracking numbers for packages.
"""
trackingSupport: Boolean
): FulfillmentServiceUpdatePayload
"""Updates tracking information for a fulfillment."""
fulfillmentTrackingInfoUpdate(
"""The id of the fulfillment."""
fulfillmentId: ID!
"""The input for the mutation."""
trackingInfoUpdateInput: TrackingInfoUpdateInput!
): FulfillmentTrackingInfoUpdatePayload
"""Activate an inventory item at a location."""
inventoryActivate(
"""Specifies which item should be activated."""
inventoryItemId: ID!
"""Specifies where the item should be activated."""
locationId: ID!
"""The initial available quantity at the location."""
available: Int
): InventoryActivatePayload
"""Adjusts the inventory by a certain quantity."""
inventoryAdjustQuantity(input: InventoryAdjustQuantityInput!): InventoryAdjustQuantityPayload
"""Adjusts the inventory at a location for multiple inventory items."""
inventoryBulkAdjustQuantityAtLocation(
"""Specifies adjustments for items."""
inventoryItemAdjustments: [InventoryAdjustItemInput!]!
"""Specifies where the item should be adjusted."""
locationId: ID!
): InventoryBulkAdjustQuantityAtLocationPayload
"""Deactivate an inventory item at a location."""
inventoryDeactivate(
"""Specifies which inventory level should be deactivated."""
inventoryLevelId: ID!
): InventoryDeactivatePayload
"""Updates an inventory item."""
inventoryItemUpdate(
"""The ID of the inventory item to update."""
id: ID!
"""The updated properties for the inventory item."""
input: InventoryItemUpdateInput!
): InventoryItemUpdatePayload
"""Kit Skill requested by developer for app and shop."""
kitSkillTriggerRequest(
"""Kit Skill ID."""
id: ID!
"""Locale language."""
locale: KitSkillLocale!
"""Placeholders (template variables) for opening message."""
placeholders: JSON = "{}"
): KitSkillTriggerRequestPayload
"""Updates a marketing activity."""
marketingActivityUpdate(
"""The Input of the marketing activity."""
input: MarketingActivityUpdateInput!
): MarketingActivityUpdatePayload
"""Creates a new marketing event engagement for a marketing activity."""
marketingEngagementCreate(
"""The id of marketing activity."""
marketingActivityId: ID!
"""The marketing engagement's attributes."""
marketingEngagement: MarketingEngagementInput!
): MarketingEngagementCreatePayload
metafieldDelete(input: MetafieldDeleteInput!): MetafieldDeletePayload
"""
Makes a Metafield with a specific namespace and key visible to the storefront API.
"""
metafieldStorefrontVisibilityCreate(
"""Specifies the input fields for the visibility."""
input: MetafieldStorefrontVisibilityInput!
): MetafieldStorefrontVisibilityCreatePayload
"""
Deletes a Metafield Storefront Visibility.
"""
metafieldStorefrontVisibilityDelete(
"""The ID of the metafield storefront visibility to delete."""
id: ID!
): MetafieldStorefrontVisibilityDeletePayload
"""Captures from an authorized transaction on an order."""
orderCapture(
"""The input for the mutation."""
input: OrderCaptureInput!
): OrderCapturePayload
"""
Closes an open order.
"""
orderClose(
"""The input for the mutation."""
input: OrderCloseInput!
): OrderClosePayload
"""
Marks an order as paid.
"""
orderMarkAsPaid(
"""The input for the mutation."""
input: OrderMarkAsPaidInput!
): OrderMarkAsPaidPayload
"""
Opens a closed order.
"""
orderOpen(
"""The input for the mutation."""
input: OrderOpenInput!
): OrderOpenPayload
"""Updates an order."""
orderUpdate(
"""The input for the mutation."""
input: OrderInput!
): OrderUpdatePayload
"""Activate a price rule."""
priceRuleActivate(
"""ID of the price rule to update."""
id: ID!
): PriceRuleActivatePayload
"""Create a price rule using the input."""
priceRuleCreate(
"""Input fields to create a price rule."""
priceRule: PriceRuleInput!
"""Input fields to create a discount code for the price rule."""
priceRuleDiscountCode: PriceRuleDiscountCodeInput
): PriceRuleCreatePayload
"""Deactivate a price rule."""
priceRuleDeactivate(
"""ID of the price rule to update."""
id: ID!
): PriceRuleDeactivatePayload
"""Delete a price rule."""
priceRuleDelete(
"""The id of the price rule object."""
id: ID!
): PriceRuleDeletePayload
"""Create a discount code for a price rule."""
priceRuleDiscountCodeCreate(
"""The id of the price rule object"""
priceRuleId: ID!
"""The code to create for the price rule."""
code: String!
): PriceRuleDiscountCodeCreatePayload
"""Update a discount code for a price rule."""
priceRuleDiscountCodeUpdate(
"""The id of the price rule object"""
priceRuleId: ID!
"""The new code of a price rule."""
code: String!
): PriceRuleDiscountCodeUpdatePayload
"""Update a price rule using its id and an input."""
priceRuleUpdate(
"""ID of the price rule to update."""
id: ID!
"""Input fields to update a price rule."""
priceRule: PriceRuleInput!
"""Input fields to update the discount code of the price rule."""
priceRuleDiscountCode: PriceRuleDiscountCodeInput
): PriceRuleUpdatePayload
"""
Deletes a private metafield.
"""
privateMetafieldDelete(
"""Specifies the input fields for the private metafield."""
input: PrivateMetafieldDeleteInput!
): PrivateMetafieldDeletePayload
"""
Creates or update a private metafield.
"""
privateMetafieldUpsert(
"""Specifies the input fields for the private metafield."""
input: PrivateMetafieldInput!
): PrivateMetafieldUpsertPayload
"""Appends images to a product."""
productAppendImages(
"""Specifies the new images and the product that they're being added to."""
input: ProductAppendImagesInput!
): ProductAppendImagesPayload
"""Creates a product."""
productCreate(
"""The properties of the new product."""
input: ProductInput!
): ProductCreatePayload
"""Deletes a product."""
productDelete(
"""Specifies the product to delete by its ID."""
input: ProductDeleteInput!
): ProductDeletePayload
"""Removes a product images from the product."""
productDeleteImages(
"""This is the ID of the product."""
id: ID!
"""This is the array of image IDs to delete from the product."""
imageIds: [ID!]!
): ProductDeleteImagesPayload
"""Duplicates a product."""
productDuplicate(
"""ID of the product to be duplicated."""
productId: ID!
"""New title of the product."""
newTitle: String!
"""Whether to duplicate images."""
includeImages: Boolean = false
): ProductDuplicatePayload
"""Updates an image of a product."""
productImageUpdate(
"""The ID of the product on which to update the image."""
productId: ID!
"""Image to be updated."""
image: ImageInput!
): ProductImageUpdatePayload
"""Publishes a product."""
productPublish(
"""Specifies the product to publish and the channels to publish it to."""
input: ProductPublishInput!
): ProductPublishPayload @deprecated(reason: "Use `publishablePublish` instead")
"""Asynchronously reorders a set of images for a given product."""
productReorderImages(
"""The ID of the product on which to reorder images."""
id: ID!
"""A list of moves to perform which will be evaluated in order."""
moves: [MoveInput!]!
): ProductReorderImagesPayload
"""Unpublishes a product."""
productUnpublish(
"""
Specifies the product to unpublish and the channel to unpublish it from.
"""
input: ProductUnpublishInput!
): ProductUnpublishPayload @deprecated(reason: "Use `publishableUnpublish` instead")
"""Updates a product."""
productUpdate(
"""The updated properties for a product."""
input: ProductInput!
): ProductUpdatePayload
"""Creates a product variant."""
productVariantCreate(
"""The properties for the new product variant."""
input: ProductVariantInput!
): ProductVariantCreatePayload
"""Deletes a product variant."""
productVariantDelete(
"""ID of the product variant to be deleted."""
id: ID!
): ProductVariantDeletePayload
"""Updates a product variant."""
productVariantUpdate(
"""The updated properties for the product variant."""
input: ProductVariantInput!
): ProductVariantUpdatePayload
"""Publishes a resource to a channel."""
publishablePublish(
"""The resource to create or update publications for."""
id: ID!
"""Specifies the input fields required to publish a resource."""
input: [PublicationInput!]!
): PublishablePublishPayload
"""Publishes a resource to current channel."""
publishablePublishToCurrentChannel(
"""The resource to create or update publications for."""
id: ID!
): PublishablePublishToCurrentChannelPayload
"""Unpublishes a resource to a channel."""
publishableUnpublish(
"""The resource to delete or update publications for."""
id: ID!
"""Specifies the input fields required to unpublish a resource."""
input: [PublicationInput!]!
): PublishableUnpublishPayload
"""Unpublishes a resource to current channel."""
publishableUnpublishToCurrentChannel(
"""The resource to delete or update publications for."""
id: ID!
): PublishableUnpublishToCurrentChannelPayload
"""Creates a refund."""
refundCreate(
"""The input fields for the mutation."""
input: RefundInput!
): RefundCreatePayload
"""Creates a saved search."""
savedSearchCreate(
"""Specifies the input fields for a saved search."""
input: SavedSearchCreateInput!
): SavedSearchCreatePayload
"""Delete a saved search."""
savedSearchDelete(
"""Input fields to delete a saved search."""
input: SavedSearchDeleteInput!
): SavedSearchDeletePayload
"""Update a saved search."""
savedSearchUpdate(
"""Input fields to update a saved search."""
input: SavedSearchUpdateInput!
): SavedSearchUpdatePayload
"""
Creates a new script tag.
"""
scriptTagCreate(
"""Specifies the input fields for a script tag."""
input: ScriptTagInput!
): ScriptTagCreatePayload
"""
Deletes a script tag.
"""
scriptTagDelete(
"""The ID of the script tag to delete."""
id: ID!
): ScriptTagDeletePayload
"""
Updates a script tag.
"""
scriptTagUpdate(
"""The ID of the script tag to update."""
id: ID!
"""Specifies the input fields for a script tag."""
input: ScriptTagInput!
): ScriptTagUpdatePayload
"""Deletes a shipping package."""
shippingPackageDelete(
"""The ID of the shipping package."""
id: ID!
): ShippingPackageDeletePayload
"""
Sets a Shipping Package as the default shipping package. The default shipping
package is the one used to calculate shipping costs on checkout.
"""
shippingPackageMakeDefault(
"""The ID of the shipping package to set to default."""
id: ID!
): ShippingPackageMakeDefaultPayload
"""Updates a custom shipping package."""
shippingPackageUpdate(
"""The ID of the shipping package to update."""
id: ID!
): ShippingPackageUpdatePayload
"""Disables a locale for a shop."""
shopLocaleDisable(
"""Specifies the locale to disable."""
locale: String!
): ShopLocaleDisablePayload
"""Enables a locale for a shop."""
shopLocaleEnable(
"""Specifies the locale to enable."""
locale: String!
): ShopLocaleEnablePayload
"""Updates a locale for a shop."""
shopLocaleUpdate(
"""Specifies the locale to update."""
locale: String!
"""Specifies the input fields for a shop locale."""
shopLocale: ShopLocaleInput!
): ShopLocaleUpdatePayload
stagedUploadTargetGenerate(input: StagedUploadTargetGenerateInput!): StagedUploadTargetGeneratePayload
"""Uploads multiple images."""
stagedUploadTargetsGenerate(input: [StageImageInput!]!): StagedUploadTargetsGeneratePayload
"""Creates a storefront access token."""
storefrontAccessTokenCreate(input: StorefrontAccessTokenInput!): StorefrontAccessTokenCreatePayload
"""Deletes a storefront access token."""
storefrontAccessTokenDelete(input: StorefrontAccessTokenDeleteInput!): StorefrontAccessTokenDeletePayload
"""Add tags to a taggable object."""
tagsAdd(id: ID!, tags: [String!]!): TagsAddPayload
"""Remove tags from a taggable object."""
tagsRemove(id: ID!, tags: [String!]!): TagsRemovePayload
"""Creates or updates translations."""
translationsRegister(
"""ID of a translatable resource."""
resourceId: ID!
"""Specifies the input fields for a translation."""
translations: [TranslationInput!]!
): TranslationsRegisterPayload
"""Removes translations."""
translationsRemove(
"""ID of a translatable resource."""
resourceId: ID!
"""List of translation keys."""
translationKeys: [String!]!
"""List of translation locales."""
locales: [String!]!
): TranslationsRemovePayload
"""
Creates a new webhook subscription.
"""
webhookSubscriptionCreate(
"""The type of event that triggers the webhook."""
topic: WebhookSubscriptionTopic!
"""Specifies the input fields for a webhook subscription."""
webhookSubscription: WebhookSubscriptionInput!
): WebhookSubscriptionCreatePayload
"""
Deletes a webhook subscription.
"""
webhookSubscriptionDelete(
"""The ID of the webhook subscription to delete."""
id: ID!
): WebhookSubscriptionDeletePayload
"""
Updates a webhook subscription.
"""
webhookSubscriptionUpdate(
"""The ID of the webhook subscription to update."""
id: ID!
"""Specifies the input fields for a webhook subscription."""
webhookSubscription: WebhookSubscriptionInput!
): WebhookSubscriptionUpdatePayload
}
"""Device attributes to report."""
input MutationsDeviceAttributesReportInput {
"""Canvas fingerprint."""
canvasFingerprint: String!
"""Cookies."""
hasCookies: Boolean!
"""Installed Fonts."""
fonts: [String!]!
"""Default language."""
lang: String
"""Whether or not local storage is available."""
hasLocalStorage: Boolean!
"""Installed plugins."""
plugins: [String!]!
"""Screen information."""
screen: String
"""Whether or not session storage is available."""
hasSessionStorage: Boolean!
"""Time zone offset."""
tzOffset: Int
"""User Agent string."""
userAgent: String
}
type MutationsStagedUploadTargetGenerateUploadParameter {
name: String!
value: String!
}
"""
A default cursor for use in pagination.
The default cursor can be used for next and previous navigation.
"""
interface Navigable {
"""A default cursor for use in pagination."""
defaultCursor: String!
}
"""A navigation item, holding basic link attributes."""
type NavigationItem {
"""The unique identifier of the navigation item."""
id: String!
"""The name of the navigation item."""
title: String!
"""The URL of the page that the navigation item links to."""
url: URL!
}
"""
A navigation item, holding basic link attributes, extra configuration, and nested navigation items.
"""
type NavigationItemV2 {
"""Sub-navigation items for this navigation."""
children: [NavigationItemV2!]!
"""Flag that indicates if the navigation is disabled or not."""
disabled: Boolean!
"""
Extra paths that should be used to not highlight the navigation as selected.
"""
excludePaths: [String!]!
"""
Flag indicating that the store front link must be shown within this navigation.
"""
hasStorefrontLink: Boolean!
"""The SVG icon body to be displayed as the navigation's icon."""
iconBody: String!
"""The navigation's label to be displayed."""
label: String!
"""
Flag indicating that an exact match of the path is required to highlight the navigation.
"""
matchExactPath: Boolean!
"""
Extra paths that should be used to highlight the navigation as selected.
"""
matchPaths: [String!]!
"""The URL that the navigation points to."""
url: URL!
}
"""Types for navigation item."""
enum NavigationItemV2Type {
"""Navigation items for sales channels."""
SALES_CHANNEL
"""Primary navigation items for apps."""
PRIMARY_NAVIGATION
}
"""An object with an ID to support global identification."""
interface Node {
"""Globally unique identifier."""
id: ID!
}
input NotificationSubscriptionInput {
"""Whether the subscription is enabled."""
enabled: Boolean!
"""ID of the subscription."""
id: ID!
}
"""
Represents an article in an OnlineStoreBlog object. Articles appear in reverse chronological order, with the
most recent entry at the top of the blog's page. A blog can contain any number of articles.
"""
type OnlineStoreArticle implements Node & Navigable & HasPublishedTranslations {
"""A default cursor for use in pagination."""
defaultCursor: String!
"""Globally unique identifier."""
id: ID!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
}
type OnlineStoreArticleEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of OnlineStoreArticleEdge."""
node: OnlineStoreArticle!
}
"""Possible sort of tags."""
enum OnlineStoreArticleTagSort {
"""Alphabetical sort."""
ALPHABETICAL
"""Popularity sort."""
POPULAR
}
"""
Shopify stores come with a built-in blogging engine, allowing a shop to have one or more blogs. Blogs are meant
to be used as a type of magazine or newsletter for the shop, with content that changes over time.
"""
type OnlineStoreBlog implements Node & HasPublishedTranslations {
"""Globally unique identifier."""
id: ID!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
}
type OnlineStoreBlogEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of OnlineStoreBlogEdge."""
node: OnlineStoreBlog!
}
"""A custom page on the Online Store."""
type OnlineStorePage implements Node & Navigable & HasPublishedTranslations {
"""A default cursor for use in pagination."""
defaultCursor: String!
"""Globally unique identifier."""
id: ID!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
}
type OnlineStorePageEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of OnlineStorePageEdge."""
node: OnlineStorePage!
}
"""Online Store preview URL of the object."""
interface OnlineStorePreviewable {
"""The online store preview URL."""
onlineStorePreviewUrl: URL
}
"""
An order represents an agreement to do business between a customer and a merchant.
"""
type Order implements Node & CommentEventSubject & HasMetafields & LegacyInteroperability & HasEvents {
"""
Generated messages that appear at the top of an order page in the Shopify admin.
For example, _this is a test order_.
"""
alerts: [ResourceAlert!]!
"""
Mailing address provided by the customer.
Not all orders have mailing addresses.
"""
billingAddress: MailingAddress
"""Whether the billing address matches the shipping address."""
billingAddressMatchesShippingAddress: Boolean!
"""Whether the order can be manually marked as paid."""
canMarkAsPaid: Boolean!
"""Whether notifications can be sent to the customer or not."""
canNotifyCustomer: Boolean!
"""
Reason the order was canceled.
Returns null if the order wasn't canceled.
"""
cancelReason: OrderCancelReason
"""
Date and time when the order was canceled.
Returns null if the order wasn't canceled.
"""
cancelledAt: DateTime
"""
Whether payment for the order can be captured.
Returns true when the customer's credit card has been authorized for payment and the authorization period has not expired.
"""
capturable: Boolean!
"""
Amount of the order-level discount (does not contain any line item discounts).
"""
cartDiscountAmount: Money @deprecated(reason: "Use `cartDiscountAmountSet` instead")
"""
Amount of the order-level discount (does not contain any line item discounts) in shop and presentment currencies.
"""
cartDiscountAmountSet: MoneyBag
"""Channel that created the order."""
channel: Channel @deprecated(reason: "Use `publication` instead")
"""The ip address of the client that is associated with this order."""
clientIp: String
"""Whether the order is closed."""
closed: Boolean!
"""
Date and time when the order closed.
If the order is not closed, then this field is null.
"""
closedAt: DateTime
"""Whether inventory has been reserved for the order."""
confirmed: Boolean!
"""Date and time when the order was created in Shopify."""
createdAt: DateTime!
"""
The currency of the store at the time of the order.
If payment hasn't occurred, then this field is null.
"""
currencyCode: CurrencyCode!
"""
Custom information added to the order by your customer
(Also referred to as note attributes).
"""
customAttributes: [Attribute!]!
"""
Unique identifier of the customer who placed the order.
Not all orders have customers associated with them.
"""
customer: Customer
"""Whether the customer agreed to receive marketing materials."""
customerAcceptsMarketing: Boolean!
"""
Description of the customer's experience with the store leading up to the order.
"""
customerJourney: CustomerJourney
"""
A two-letter or three-letter language code, optionally followed by a region modifier.
Example values could be 'en', 'en-CA', 'en-PIRATE'.
"""
customerLocale: String
"""Discounts that have been applied on the order."""
discountApplications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DiscountApplicationConnection!
"""Discount code provided by the customer."""
discountCode: String
"""Primary address of the customer, which is shown on the order."""
displayAddress: MailingAddress
"""
Financial status of the order that can be shown to the merchant.
This field does not capture all the possible details of an order's financial
state and should only be used for display summary purposes.
"""
displayFinancialStatus: OrderDisplayFinancialStatus
"""
Fulfillment status for the order that can be shown to the merchant.
This field does not capture all the possible details of an order's fulfillment
state. It should only be used for display summary purposes.
"""
displayFulfillmentStatus: OrderDisplayFulfillmentStatus!
"""
Summary of each dispute associated with the order. Sorted in ascending (ASC) order by ID.
"""
disputes: [OrderDisputeSummary!]!
"""
List of possible fulfilments that can be made for the order (includes line items that can be partially fulfilled).
"""
draftFulfillments: [DraftFulfillment!]!
"""Email address provided by the customer."""
email: String
"""List of internal events associated with the order."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""
Whether there are items that can be fulfilled.
After an order is completely fulfilled (or completely refunded without any fulfillments) then this field returns false.
"""
fulfillable: Boolean!
"""List of shipments for the order."""
fulfillments(
"""Truncate the array result to this size."""
first: Int
): [Fulfillment!]!
"""Whether the order has been paid in full."""
fullyPaid: Boolean!
"""Whether the merchant added timeline comments to the order."""
hasTimelineComment: Boolean!
"""Globally unique identifier."""
id: ID!
"""
First page of the online store that the customer visited before they submitted the order, for displaying to humans.
"""
landingPageDisplayText: String @deprecated(reason: "Use `customerJourney.lastVisit.landingPageHtml` instead")
"""
First page of the online store that the customer visited before they submitted the order.
"""
landingPageUrl: URL @deprecated(reason: "Use `customerJourney.lastVisit.landingPage` instead")
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""List of the order's line items."""
lineItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): LineItemConnection!
"""
If the order was processed using Shopify POS, then this is its location as provided by the merchant.
"""
location: String @deprecated(reason: "Use `physicalLocation` instead")
"""Whether the order can be edited or not."""
merchantEditable: Boolean!
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""
Unique identifier for the order that appears on the order.
For example, _#1000_ or _Store1001.
This value is not unique across multiple stores.
"""
name: String!
"""
Net payment for the order, based on the total amount received - total amount refunded.
"""
netPayment: Money! @deprecated(reason: "Use `netPaymentSet` instead")
"""
Net payment for the order, based on the total amount received - total amount refunded in shop and presentment currencies.
"""
netPaymentSet: MoneyBag!
"""
Line items that can't be fulfilled.
For example, because some or all of the items have been refunded, or the item
is not one which can be fulfilled, such as a tip.
These line items would be 'lost' if you only considered the line items in draft fulfillments or fulfillments.
"""
nonFulfillableLineItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): LineItemConnection!
"""
Contents of the note associated with the order.
"""
note: String
"""
List of all payment gateways used for the order.
For example, _authorize_net_ and _Cash on Delivery (COD)_.
"""
paymentGatewayNames: [String!]!
"""Phone number provided by the customer."""
phone: String
"""
If the order was processed using Shopify POS, then this is its location as provided by the merchant.
"""
physicalLocation: Location
"""The payment currency of the customer for this order."""
presentmentCurrencyCode: CurrencyCode!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""
Date and time when the order was processed.
When orders are imported from an app, this date and time may not match the date and time when the order was created.
"""
processedAt: DateTime!
"""Publication that created the order."""
publication: Publication
"""
Marketing referral code from the link that the customer clicked to visit your store.
Supports the following URL attributes: _ref_, _source_, or _r_. For example,
if the URL is myshopifystore.com/products/slide?ref=j2tj1tn2, then this value is j2tj1tn2.
"""
referralCode: String @deprecated(reason: "Use `customerJourney.lastVisit.referralCode` instead")
"""
Website that sent the customer to your online store.
"""
referrerDisplayText: String @deprecated(reason: "Use `customerJourney.lastVisit.referralInfoHtml` instead")
"""
Webpage where the customer clicked a link that sent them to your online store.
For example, _Google_ or _randomblog.com/page1_.
"""
referrerUrl: URL @deprecated(reason: "Use `customerJourney.lastVisit.referrerUrl` instead")
"""
Whether the order can be refunded.
"""
refundable: Boolean!
"""
List of refunds that have been applied to the order.
"""
refunds(
"""Truncate the array result to this size."""
first: Int
): [Refund!]!
"""
Whether any line item in the order requires physical shipping.
"""
requiresShipping: Boolean!
"""
Whether the order can be restocked.
"""
restockable: Boolean!
"""Fraud risk level of the order."""
riskLevel: OrderRiskLevel!
"""The order risks associated with this order."""
risks(
"""Truncate the array result to this size."""
first: Int
): [OrderRisk!]!
"""Mailing address for shipping provided by the customer."""
shippingAddress: MailingAddress
"""Line item that contains the shipping costs."""
shippingLine: ShippingLine
"""
The sum of the quantities for the line items that contribute to the order's subtotal.
"""
subtotalLineItemsQuantity: Int!
"""
Subtotal of the line items and their discounts (does not contain shipping
costs, shipping discounts, and order-level discounts).
"""
subtotalPrice: Money @deprecated(reason: "Use `subtotalPriceSet` instead")
"""
Subtotal of the line items and their discounts (does not contain shipping
costs, shipping discounts, and order-level discounts) in shop and presentment currencies.
"""
subtotalPriceSet: MoneyBag
"""
The details of the suggested refund. This response can be used to submit a RefundCreate mutation.
"""
suggestedRefund(
"""The amount to refund for shipping. Overrides `refundShipping`."""
shippingAmount: Money
"""Whether to refund the full shipping amount."""
refundShipping: Boolean
"""The line items from the order to include in the refund."""
refundLineItems: [RefundLineItemInput!]
"""
Whether a refund for all of the refundable line items on an order should be suggested.
If `true`, the suggested refund will be formed from all refundable line items and will
ignore any passed in `refundLineItems`.
"""
suggestFullRefund: Boolean = false
): SuggestedRefund
"""List of tags."""
tags: [String!]!
"""Taxes charged for the line item."""
taxLines: [TaxLine!]!
"""Whether taxes are included in the subtotal price of the order."""
taxesIncluded: Boolean!
"""
Whether the order is a test.
Test orders are made using the Shopify Bogus Gateway or the Shopify Payments test mode.
"""
test: Boolean!
"""Amount authorized for the order, that is uncaptured or undercaptured."""
totalCapturable: Money! @deprecated(reason: "Use `totalCapturableSet` instead")
"""
Amount authorized for the order, that is uncaptured or undercaptured in shop and presentment currencies.
"""
totalCapturableSet: MoneyBag!
"""
Total amount discounted from the order (includes order-level and line item discounts).
"""
totalDiscounts: Money @deprecated(reason: "Use `totalDiscountsSet` instead")
"""
Total amount discounted from the order (includes order-level and line item discounts) in shop and presentment currencies.
"""
totalDiscountsSet: MoneyBag
"""Total amount of the order (includes taxes and discounts)."""
totalPrice: Money! @deprecated(reason: "Use `totalPriceSet` instead")
"""
Total amount of the order (includes taxes and discounts) in shop and presentment currencies.
"""
totalPriceSet: MoneyBag!
"""Total amount received by the customer for the order."""
totalReceived: Money! @deprecated(reason: "Use `totalReceivedSet` instead")
"""
Total amount received by the customer for the order in shop and presentment currencies.
"""
totalReceivedSet: MoneyBag!
"""Total amount refunded for the order."""
totalRefunded: Money! @deprecated(reason: "Use `totalRefundedSet` instead")
"""
Total amount refunded for the order in shop and presentment currencies.
"""
totalRefundedSet: MoneyBag!
"""Total amount refunded for shipping in shop and presentment currencies."""
totalRefundedShippingSet: MoneyBag!
"""Total amount charged for shipping the order."""
totalShippingPrice: Money! @deprecated(reason: "Use `totalShippingPriceSet` instead")
"""
Total amount charged for shipping the order in shop and presentment currencies.
"""
totalShippingPriceSet: MoneyBag!
"""Total of all taxes applied to the order."""
totalTax: Money @deprecated(reason: "Use `totalTaxSet` instead")
"""
Total of all taxes applied to the order in shop and presentment currencies.
"""
totalTaxSet: MoneyBag
"""Total weight (grams) of the order."""
totalWeight: UnsignedInt64
"""List of all transactions associated with the order."""
transactions(
"""Truncate the array result to this size."""
first: Int
"""
Filter transactions by whether they are capturable.
If true, then returns only transactions that represent an authorized payment that can be captured.
If false, then returns all transactions.
"""
capturable: Boolean
"""
Filter transactions by whether they are manual payments.
If true, then returns only transactions that are manual payments. If false, then returns all transactions.
"""
manuallyResolvable: Boolean
): [OrderTransaction!]!
"""
Whether no payments have been made for the order.
If no payments have been made for the order, then this returns true.
"""
unpaid: Boolean!
"""Date and time when the order was last modified."""
updatedAt: DateTime!
}
"""
Represents the reason that the order is being canceled. Valid values are: customer, fraud, inventory, declined, other.
"""
enum OrderCancelReason {
"""The customer wanted to cancel the order."""
CUSTOMER
"""The order was fraudulent."""
FRAUD
"""There was insufficient inventory."""
INVENTORY
"""Payment was declined."""
DECLINED
"""Some other reason not listed."""
OTHER
}
"""
Specifies the authorized transaction to capture and the total amount to capture from it.
"""
input OrderCaptureInput {
"""The ID of the order to capture."""
id: ID!
"""The ID of the authorized transaction to capture."""
parentTransactionId: ID!
"""The amount to capture."""
amount: Money!
"""
The currency (in ISO format) that is used to capture the order. This must be
the presentment currency (the currency used by the customer) and is a required
field for orders where the currency and presentment currency differ.
"""
currency: CurrencyCode
}
"""Return type for `orderCapture` mutation."""
type OrderCapturePayload {
"""The transaction of the capture."""
transaction: OrderTransaction
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies an open order to close."""
input OrderCloseInput {
"""The ID of the order to close."""
id: ID!
}
"""Return type for `orderClose` mutation."""
type OrderClosePayload {
"""The closed order."""
order: Order
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type OrderConnection {
"""A list of edges."""
edges: [OrderEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Represents the order's current financial status."""
enum OrderDisplayFinancialStatus {
"""Displayed as **Pending**."""
PENDING
"""Displayed as **Authorized**."""
AUTHORIZED
"""Displayed as **Partially paid**."""
PARTIALLY_PAID
"""Displayed as **Partially refunded**."""
PARTIALLY_REFUNDED
"""Displayed as **Voided**."""
VOIDED
"""Displayed as **Paid**."""
PAID
"""Displayed as **Refunded**."""
REFUNDED
}
"""
Represents the order's current fulfillment status. Valid values are: unfulfilled, partial, fulfilled, restocked.
"""
enum OrderDisplayFulfillmentStatus {
"""Displayed as **Unfulfilled**."""
UNFULFILLED
"""Displayed as **Partially fulfilled**."""
PARTIALLY_FULFILLED
"""Displayed as **Fulfilled**."""
FULFILLED
"""Displayed as **Restocked**."""
RESTOCKED
"""Displayed as **Pending fulfillment**."""
PENDING_FULFILLMENT
"""Displayed as **Open**."""
OPEN
}
"""A summary of the important details for a dispute on an order."""
type OrderDisputeSummary implements Node {
"""Globally unique identifier."""
id: ID!
"""The type that the dispute was initiated as."""
initiatedAs: DisputeType!
"""The current status of the dispute."""
status: DisputeStatus!
}
type OrderEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of OrderEdge."""
node: Order!
}
"""Specifies the information to be updated on the requested order."""
input OrderInput {
"""The email address associated with the order."""
email: String
"""The ID of the order to update."""
id: ID!
"""The order note."""
note: String
"""The order tags."""
tags: [String!]
"""The shipping address associated with the order."""
shippingAddress: MailingAddressInput
"""
Custom information to add to the order, represented as a key value pair. Also referred to as note attributes.
"""
customAttributes: [AttributeInput!]
"""The metafields to associate with this order."""
metafields: [MetafieldInput!]
}
"""Specifies the order to mark as paid."""
input OrderMarkAsPaidInput {
"""The ID of the order to mark as paid."""
id: ID!
}
"""Return type for `orderMarkAsPaid` mutation."""
type OrderMarkAsPaidPayload {
"""The order marked as paid."""
order: Order
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies a closed order to open."""
input OrderOpenInput {
"""The ID of the order to open."""
id: ID!
}
"""Return type for `orderOpen` mutation."""
type OrderOpenPayload {
"""The opened order."""
order: Order
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Represents a fraud check on an order."""
type OrderRisk {
"""
Whether the risk level is shown in the Shopify admin. If false, then this
order risk is ignored when Shopify determines the overall risk level for the order.
"""
display: Boolean!
"""
The likelihood that an order is fraudulent, based on this order risk.
The level can be set by Shopify risk analysis or by an app.
"""
level: OrderRiskLevel
"""The risk message that's shown to the merchant in the Shopify admin."""
message: String
}
"""The likelihood that an order is fraudulent."""
enum OrderRiskLevel {
LOW
MEDIUM
HIGH
}
"""List of possible values for an OrderRiskRecommendation recommendation."""
enum OrderRiskRecommendationResult {
CANCEL
INVESTIGATE
ACCEPT
NONE
}
"""The set of valid sort keys for the orders query."""
enum OrderSortKeys {
"""Sort by the `order_number` value."""
ORDER_NUMBER
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `financial_status` value."""
FINANCIAL_STATUS
"""Sort by the `fulfillment_status` value."""
FULFILLMENT_STATUS
"""Sort by the `total_price` value."""
TOTAL_PRICE
"""Sort by the `customer_name` value."""
CUSTOMER_NAME
"""Sort by the `processed_at` value."""
PROCESSED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""A transaction represents an exchange of money as part of an order."""
type OrderTransaction implements Node {
"""The masked account number associated with the payment method."""
accountNumber: String
"""The amount of money."""
amount: Money! @deprecated(reason: "Use `amountSet` instead")
"""
The amount and currency of the transaction in shop and presentment currencies.
"""
amountSet: MoneyBag!
"""The amount and currency of the transaction."""
amountV2: MoneyV2! @deprecated(reason: "Use `amountSet` instead")
"""Authorization code associated with the transaction."""
authorizationCode: String
"""Date and time when the transaction was created."""
createdAt: DateTime!
"""A standardized error code, independent of the payment provider."""
errorCode: OrderTransactionErrorCode
"""
The human-readable payment gateway name used to process the transaction.
"""
formattedGateway: String
"""The payment gateway used to process the transaction."""
gateway: String
"""Globally unique identifier."""
id: ID!
"""The kind of transaction."""
kind: OrderTransactionKind!
"""Whether the transaction can be manually captured."""
manuallyCapturable: Boolean
"""
Specifies the available amount to refund on the gateway. Only available within SuggestedRefund.
"""
maximumRefundable: Money @deprecated(reason: "Use `maximumRefundableV2` instead")
"""
Specifies the available amount with currency to refund on the gateway.
Only available within SuggestedRefund.
"""
maximumRefundableV2: MoneyV2
"""The associated order."""
order: Order
"""
The associated parent transaction, for example the authorization of a capture.
"""
parentTransaction: OrderTransaction
"""Specifies the payment icon to display for this transaction."""
paymentIcon(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""Specifies the credit card company used to pay for this transaction."""
paymentMethod: PaymentMethods @deprecated(reason: "Use `paymentIcon` instead")
"""Date and time when the transaction was processed."""
processedAt: DateTime
"""
A transaction receipt attached to the transaction by the gateway.
The value of this field depends on which gateway processed the transaction.
"""
receipt: String @deprecated(reason: "Use `receiptJson` instead")
"""The status of this transaction."""
status: OrderTransactionStatus!
"""Whether the transaction is a test transaction."""
test: Boolean!
"""
Specifies the available amount to capture on the gateway.
Only available when an amount is capturable or manually mark as paid.
"""
totalUnsettled: Money @deprecated(reason: "Use `totalUnsettledSet` instead")
"""
Specifies the available amount with currency to capture on the gateway in shop and presentment currencies.
Only available when an amount is capturable or manually mark as paid.
"""
totalUnsettledSet: MoneyBag
"""
Specifies the available amount with currency to capture on the gateway.
Only available when an amount is capturable or manually mark as paid.
"""
totalUnsettledV2: MoneyV2 @deprecated(reason: "Use `totalUnsettledSet` instead")
}
type OrderTransactionConnection {
"""A list of edges."""
edges: [OrderTransactionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type OrderTransactionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of OrderTransactionEdge."""
node: OrderTransaction!
}
"""A standardized error code, independent of the payment provider."""
enum OrderTransactionErrorCode {
"""The card number is incorrect."""
INCORRECT_NUMBER
"""The format of the card number is incorrect."""
INVALID_NUMBER
"""The format of the expiry date is incorrect."""
INVALID_EXPIRY_DATE
"""The format of the CVC is incorrect."""
INVALID_CVC
"""The card is expired."""
EXPIRED_CARD
"""The CVC does not match the card number."""
INCORRECT_CVC
"""The ZIP or postal code does not match the card number."""
INCORRECT_ZIP
"""The address does not match the card number."""
INCORRECT_ADDRESS
"""The entered PIN is incorrect."""
INCORRECT_PIN
"""The card was declined."""
CARD_DECLINED
"""There was an error while processing the payment."""
PROCESSING_ERROR
"""Call the card issuer."""
CALL_ISSUER
"""
The card has been reported as lost or stolen, and the card issuer has
requested that the merchant keep the card and call the number on the back.
"""
PICK_UP_CARD
"""There is an error in the gateway or merchant configuration."""
CONFIG_ERROR
"""A real card was used but the gateway was in test mode."""
TEST_MODE_LIVE_CARD
"""
The gateway or merchant configuration doesn't support a feature, such as network tokenization.
"""
UNSUPPORTED_FEATURE
"""There was an unknown error with processing the payment."""
GENERIC_ERROR
"""The payment method is not available in the customer's country."""
INVALID_COUNTRY
"""The amount is either too high or too low for the provider."""
INVALID_AMOUNT
"""The payment method is momentarily unavailable."""
PAYMENT_METHOD_UNAVAILABLE
"""The payment method was invalid."""
AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD
"""The maximum amount has been captured."""
AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED
"""The maximum amount has been refunded."""
AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED
"""The maximum of 10 authorizations has been captured for an order."""
AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED
"""The maximum of 10 refunds has been processed for an order."""
AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED
"""The order was canceled, which canceled all open authorizations."""
AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED
"""The order was not confirmed within three hours."""
AMAZON_PAYMENTS_STALE
}
"""Specifies the information needed to create an order transaction."""
input OrderTransactionInput {
"""The amount of money for this transaction."""
amount: Money!
"""The payment gateway to use for this transaction."""
gateway: String!
"""The kind of transaction."""
kind: OrderTransactionKind!
"""The ID of the order associated with the transaction."""
orderId: ID!
"""
The ID of the optional parent transaction, for example the authorization of a capture.
"""
parentId: ID
}
"""The different kinds of order transactions."""
enum OrderTransactionKind {
"""An authorization and capture performed together in a single step."""
SALE
"""
A transfer of the money that was reserved during the authorization stage.
"""
CAPTURE
"""
An amount reserved against the cardholder's funding source.
Money does not change hands until the authorization is captured.
"""
AUTHORIZATION
"""A cancellation of a pending authorization or capture."""
VOID
"""
A partial or full return of captured funds to the cardholder.
A refund can happen only after a capture is processed.
"""
REFUND
"""Money returned to the customer when they have paid too much."""
CHANGE
"""An authorization for a payment taken with an EMV credit card reader."""
EMV_AUTHORIZATION
"""A suggested refund transaction that can be used to create a refund."""
SUGGESTED_REFUND
}
"""Transaction status' describe the status of a transaction."""
enum OrderTransactionStatus {
"""The transaction succeeded."""
SUCCESS
"""The transaction failed."""
FAILURE
"""The transaction is pending."""
PENDING
"""There was an error while processing the transaction."""
ERROR
"""Awaiting a response."""
AWAITING_RESPONSE
"""The transaction status is unknown."""
UNKNOWN
}
"""Return type for `orderUpdate` mutation."""
type OrderUpdatePayload {
"""The updated order."""
order: Order
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Information about pagination in a connection."""
type PageInfo {
"""Indicates if there are more pages to fetch."""
hasNextPage: Boolean!
"""Indicates if there are any pages prior to the current page."""
hasPreviousPage: Boolean!
}
"""Page size for a printable asset (eg: shipping label)."""
enum PageSize {
PAGE_8_X_11
PAGE_4_X_6
}
"""List of payment methods used in Shopify"""
enum PaymentMethods {
VISA
MASTERCARD
DISCOVER
AMERICAN_EXPRESS
DINERS_CLUB
JCB
DANKORT
MAESTRO
FORBRUGSFORENINGEN
PAYPAL
BOGUS
BITCOIN
LITECOIN
DOGECOIN
}
"""Settings related to payments."""
type PaymentSettings {
"""List of the digital wallets which the shop supports."""
supportedDigitalWallets: [DigitalWallet!]!
}
"""Available layouts for a POS link."""
enum PosLinkLayout {
MODAL
FULLSCREEN
}
"""Resource locations for a POS link."""
enum PosLinkResourceLocation {
EDIT
COMPLETE
}
"""Resource types for a POS link."""
enum PosLinkResourceType {
CARTS
ORDERS
}
"""
Price rules are a set of conditions, including entitlements and prerequisites,
that must be met in order for a discount code to apply.
"""
type PriceRule implements Node & CommentEventSubject & LegacyInteroperability & HasEvents {
"""
The maximum number of times the price rule will be allocated onto an order.
"""
allocationLimit: Int
"""
The method by which the price rule's value is allocated to its entitled items.
"""
allocationMethod: PriceRuleAllocationMethod!
"""The application that created the price rule."""
app: App
"""When the price rule was created."""
createdAt: DateTime!
"""A selection of customers for whom the price rule applies."""
customerSelection: PriceRuleCustomerSelection!
"""List of the price rule's discount codes."""
discountCodes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: DiscountCodeSortKeys = ID
"""
Supported filter parameters:
- `times_used`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): PriceRuleDiscountCodeConnection!
"""How many discount codes associated with the price rule."""
discountCodesCount: Int!
"""When the price rule expires, or never if null."""
endsAt: DateTime
"""
Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
"""
entitlementToPrerequisiteQuantityRatio: PriceRuleEntitlementToPrerequisiteQuantityRatio @deprecated(reason: "Use `prerequisiteToEntitlementQuantityRatio` instead")
"""The paginated list of events associated with the price rule."""
events(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: EventSortKeys = ID
"""
Supported filter parameters:
- `comments`
- `created_at`
- `subject_type`
- `verb`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): EventConnection!
"""A list of features used by the price rule."""
features: [PriceRuleFeature!]!
"""
Indicates whether or not any timeline comments have been made on the price rule.
"""
hasTimelineComment: Boolean!
"""Globally unique identifier."""
id: ID!
"""The items to which the price rule applies."""
itemEntitlements: PriceRuleItemEntitlements!
"""The line item objects required for the price rule to be applicable."""
itemPrerequisites: PriceRuleLineItemPrerequisites!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""Whether the price rule can be applied only once per customer."""
oncePerCustomer: Boolean!
"""
The number of the entitled items must fall within this range for the price rule to be applicable.
"""
prerequisiteQuantityRange: PriceRuleQuantityRange
"""
The shipping cost must fall within this range for the price rule to be applicable.
"""
prerequisiteShippingPriceRange: PriceRuleMoneyRange
"""
The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable.
"""
prerequisiteSubtotalRange: PriceRuleMoneyRange
"""
Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
"""
prerequisiteToEntitlementQuantityRatio: PriceRulePrerequisiteToEntitlementQuantityRatio
"""URLs that can be used to share the discount."""
shareableUrls: [PriceRuleShareableUrl!]!
"""The shipping lines to which the price rule applies."""
shippingEntitlements: PriceRuleShippingLineEntitlements!
"""When the price rule is starting to be active."""
startsAt: DateTime!
"""The status of the price rule."""
status: PriceRuleStatus!
"""A summary of the price rule."""
summary: String
"""
The type of lines (line_item or shipping_line) to which the price rule applies.
"""
target: PriceRuleTarget!
"""The title of the price rule."""
title: String!
"""The total sales brought by the price rule."""
totalSales: MoneyV2
"""A list of features used by the price rule."""
traits: [PriceRuleTrait!]! @deprecated(reason: "Use `features` instead")
"""How many times the price rule has been used."""
usageCount: Int!
"""The maximum number of times the price rule can be applied."""
usageLimit: Int
"""A time period during which a price rule is applicable."""
validityPeriod: PriceRuleValidityPeriod!
"""The value of the price rule."""
value: PriceRuleValue! @deprecated(reason: "Use `valueV2` instead")
"""The value of the price rule."""
valueV2: PricingValue!
}
"""Return type for `priceRuleActivate` mutation."""
type PriceRuleActivatePayload {
"""The activated price rule."""
priceRule: PriceRule
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
"""
The method by which the price rule's value is allocated to its entitled items.
"""
enum PriceRuleAllocationMethod {
"""The value will be applied to each of the entitled items."""
EACH
"""The value will be applied once across the entitled items."""
ACROSS
}
type PriceRuleConnection {
"""A list of edges."""
edges: [PriceRuleEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `priceRuleCreate` mutation."""
type PriceRuleCreatePayload {
"""The newly created price rule."""
priceRule: PriceRule
"""The newly created discount code."""
priceRuleDiscountCode: PriceRuleDiscountCode
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
"""A selection of customers for whom the price rule applies."""
type PriceRuleCustomerSelection {
"""List of customers to whom the price rule applies."""
customers(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CustomerSortKeys = ID
"""
Supported filter parameters:
- `accepts_marketing`
- `country`
- `customer_date`
- `email`
- `last_abandoned_order_date`
- `order_date`
- `orders_count`
- `phone`
- `state`
- `tag`
- `total_spent`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): CustomerConnection!
"""Whether the price rule applies to all customers."""
forAllCustomers: Boolean!
"""
List of customer saved searches that contain the customers to whom the price rule applies.
"""
savedSearches: [SavedSearch!]!
}
"""Specifies the input fields to update a price rule customer selection."""
input PriceRuleCustomerSelectionInput {
"""Whether the price rule applies to all customers."""
forAllCustomers: Boolean = false
"""
List of customer saved searches that contain the customers to whom the price
rule applies. No single customer IDs may be present.
"""
savedSearchIds: [ID!]
"""
List of customers to add to the current list of customers to whom the price rule applies. `savedSearchIds` must be empty.
"""
customerIdsToAdd: [ID!]
"""
A list of customers to remove from the current list of customers to whom the price rule applies.
"""
customerIdsToRemove: [ID!]
}
"""Return type for `priceRuleDeactivate` mutation."""
type PriceRuleDeactivatePayload {
"""The deactivated price rule."""
priceRule: PriceRule
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
"""Return type for `priceRuleDelete` mutation."""
type PriceRuleDeletePayload {
"""The id price of the deleted price rule."""
deletedPriceRuleId: ID
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""The shop of the deleted price rule."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
"""A discount code of a price rule."""
type PriceRuleDiscountCode implements Node {
"""The application that created the discount code."""
app: App
"""The code of a discount."""
code: String!
"""Globally unique identifier."""
id: ID!
"""The usage count of the discount code."""
usageCount: Int!
}
type PriceRuleDiscountCodeConnection {
"""A list of edges."""
edges: [PriceRuleDiscountCodeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `priceRuleDiscountCodeCreate` mutation."""
type PriceRuleDiscountCodeCreatePayload {
"""The updated price rule."""
priceRule: PriceRule
"""The newly created discount code."""
priceRuleDiscountCode: PriceRuleDiscountCode
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
type PriceRuleDiscountCodeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of PriceRuleDiscountCodeEdge."""
node: PriceRuleDiscountCode!
}
"""Specifies the input fields to manipulate a discount code."""
input PriceRuleDiscountCodeInput {
"""The code of a discount."""
code: String
}
"""Return type for `priceRuleDiscountCodeUpdate` mutation."""
type PriceRuleDiscountCodeUpdatePayload {
"""The updated price rule."""
priceRule: PriceRule
"""The updated discount code."""
priceRuleDiscountCode: PriceRuleDiscountCode
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
type PriceRuleEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of PriceRuleEdge."""
node: PriceRule!
}
"""
Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
"""
type PriceRuleEntitlementToPrerequisiteQuantityRatio {
"""The quantity of entitlements in the ratio."""
entitlementQuantity: Int!
"""The quantity of prerequisites in the ratio."""
prerequisiteQuantity: Int!
}
"""
Specifies the quantity of prerequisite items required for the price rule to be
applicable, compared to quantity of entitled items.
"""
input PriceRuleEntitlementToPrerequisiteQuantityRatioInput {
"""The quantity of entitlements in the ratio."""
entitlementQuantity: Int
"""The quantity of prerequisites in the ratio."""
prerequisiteQuantity: Int
}
"""Possible error codes that could be returned by a price rule mutation."""
enum PriceRuleErrorCode {
"""Input value is blank."""
BLANK
"""Input value should be equal to allowed value."""
EQUAL_TO
"""Input value should be greater than minimum allowed value."""
GREATER_THAN
"""Input value should be greater than or equal to minimum allowed value."""
GREATER_THAN_OR_EQUAL_TO
"""Input value is invalid."""
INVALID
"""Input value should be less than maximum allowed value."""
LESS_THAN
"""Input value should be less or equal to maximum allowed value."""
LESS_THAN_OR_EQUAL_TO
"""Input value is already taken."""
TAKEN
"""Input value is too long."""
TOO_LONG
"""Input value is too short."""
TOO_SHORT
"""Unexpected internal error happened."""
INTERNAL_ERROR
"""Too many arguments provided."""
TOO_MANY_ARGUMENTS
"""Missing a required argument."""
MISSING_ARGUMENT
"""Duplicate customer prerequisite id present."""
CUSTOMER_PREREQUISITE_DUPLICATE
CANNOT_ENTITLE_COLLECTIONS_WITH_PRODUCTS_OR_VARIANTS
ITEM_ENTITLEMENT_INVALID_TYPE
ITEM_ENTITLEMENTS_DUPLICATE_COLLECTION
ITEM_ENTITLEMENTS_DUPLICATE_PRODUCT
ITEM_ENTITLEMENTS_DUPLICATE_VARIANT
ITEM_ENTITLEMENTS_EXCEEDED_MAX_COLLECTION
ITEM_ENTITLEMENTS_EXCEEDED_MAX_PRODUCT
ITEM_ENTITLEMENTS_EXCEEDED_MAX_VARIANT
ITEM_ENTITLEMENTS_INVALID_COLLECTION
ITEM_ENTITLEMENTS_INVALID_PRODUCT
ITEM_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION
ITEM_ENTITLEMENTS_INVALID_VARIANT
ITEM_ENTITLEMENTS_MISSING
VARIANT_ALREADY_ENTITLED_THROUGH_PRODUCT
CANNOT_PREREQUISITE_COLLECTION_WITH_PRODUCT_OR_VARIANTS
ITEM_PREREQUISITES_DUPLICATE_COLLECTION
ITEM_PREREQUISITES_DUPLICATE_PRODUCT
ITEM_PREREQUISITES_DUPLICATE_VARIANT
ITEM_PREREQUISITES_EXCEEDED_MAX
ITEM_PREREQUISITES_INVALID_COLLECTION
ITEM_PREREQUISITES_INVALID_PRODUCT
ITEM_PREREQUISITES_INVALID_TYPE
ITEM_PREREQUISITES_INVALID_VARIANT
ITEM_PREREQUISITES_MISSING
ITEM_PREREQUISITES_MUST_BE_EMPTY
INVALID_TARGET_TYPE_PREREQUISITE_SHIPPING_PRICE_RANGE
SHIPPING_ENTITLEMENTS_DUPLICATE_COUNTRY
SHIPPING_ENTITLEMENTS_EXCEEDED_MAX
SHIPPING_ENTITLEMENTS_INVALID_COUNTRY
SHIPPING_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION
SHIPPING_ENTITLEMENTS_MISSING
SHIPPING_ENTITLEMENTS_UNSUPPORTED_DESTINATION_TYPE
BOTH_CUSTOMER_AND_SAVED_SEARCH_PREREQUISITES_SELECTED
CUSTOMER_PREREQUISITES_EXCEEDED_MAX
CUSTOMER_PREREQUISITES_INVALID_SELECTION
CUSTOMER_PREREQUISITES_MISSING
CUSTOMER_SAVED_SEARCH_DUPLICATE
CUSTOMER_SAVED_SEARCH_EXCEEDED_MAX
CUSTOMER_SAVED_SEARCH_INVALID
DISCOUNT_CODE_DUPLICATE
BOGO_INVALID_TARGET_SELECTION
BOGO_INVALID_TARGET_TYPE
BOGO_INVALID_VALUE_TYPE
ALLOCATION_METHOD_MUST_BE_ACROSS_FOR_GIVEN_TARGET_SELECTION
END_DATE_BEFORE_START_DATE
PREREQUISITE_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT
PRICE_RULE_ALLOCATION_LIMIT_IS_ZERO
PRICE_RULE_ALLOCATION_LIMIT_ON_NON_BOGO
PRICE_RULE_EXCEEDED_MAX_DISCOUNT_CODE
PRICE_RULE_PERCENTAGE_VALUE_OUTSIDE_RANGE
SHOP_EXCEEDED_MAX_PRICE_RULES
}
"""A list of features used by the price rule."""
enum PriceRuleFeature {
"""The price rule supports quantity BXGY discounts."""
BUY_ONE_GET_ONE
"""The price rule supports BXGY discounts using custom allocation limit."""
BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT
"""The price rule supports bulk discounts."""
BULK
"""The price rule supports specific customers."""
SPECIFIC_CUSTOMERS
"""The price rule supports quantity discounts."""
QUANTITY_DISCOUNTS
}
"""The value of a fixed amount price rule."""
type PriceRuleFixedAmountValue {
"""The monetary value of the price rule."""
amount: Money!
}
"""Specifies the input fields to manipulate a price rule."""
input PriceRuleInput {
"""PriceRuleValidityPeriod for the price rule."""
validityPeriod: PriceRuleValidityPeriodInput
"""Whether the price rule can be applied only once per customer."""
oncePerCustomer: Boolean = false
"""A selection of customers for whom the price rule applies."""
customerSelection: PriceRuleCustomerSelectionInput
"""The maximum number of times the price rule can be applied."""
usageLimit: Int
"""Title of the price rule."""
title: String
"""
The maximum number of times the price rule will be allocated onto an order.
"""
allocationLimit: Int
"""
The method (each or across) by which the price rule's value is allocated to its entitled items.
"""
allocationMethod: PriceRuleAllocationMethod
"""The value of the price rule."""
value: PriceRuleValueInput
"""
The type of lines (line_item or shipping_line) to which the price rule applies.
"""
target: PriceRuleTarget
"""
The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable.
"""
prerequisiteSubtotalRange: PriceRuleMoneyRangeInput
"""
The number of the entitled items must fall within this range for the price rule to be applicable.
"""
prerequisiteQuantityRange: PriceRuleQuantityRangeInput
"""
The shipping cost must fall within this range for the price rule to be applicable.
"""
prerequisiteShippingPriceRange: PriceRuleMoneyRangeInput
"""The items to which the price rule applies."""
itemEntitlements: PriceRuleItemEntitlementsInput
"""The items needed to apply the price rule."""
itemPrerequisites: PriceRuleItemPrerequisitesInput
"""The shipping lines to which the price rule applies."""
shippingEntitlements: PriceRuleShippingEntitlementsInput
"""
Quantity of prerequisite items required for the price rule to be applicable,
compared to quantity of entitled items. This argument is deprecated: Use
`prerequisiteToEntitlementQuantityRatio` instead.
"""
entitlementToPrerequisiteQuantityRatio: PriceRuleEntitlementToPrerequisiteQuantityRatioInput
"""
Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
"""
prerequisiteToEntitlementQuantityRatio: PriceRulePrerequisiteToEntitlementQuantityRatioInput
}
"""
The items to which this price rule applies. This may be multiple products,
product variants, collections or combinations of the aforementioned.
"""
type PriceRuleItemEntitlements {
"""The collections to which the price rule applies."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionConnection!
"""The product variants to which the price rule applies."""
productVariants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductVariantConnection!
"""The products to which the price rule applies."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductConnection!
"""Whether the price rule applies to all line items."""
targetAllLineItems: Boolean!
}
"""
Specifies the input fields to update a price rule line item entitlement.
"""
input PriceRuleItemEntitlementsInput {
"""Whether the price rule applies to all items."""
targetAllLineItems: Boolean = false
"""The products to which the price rule applies."""
productIds: [ID!]
"""The product variants to which the price rule applies."""
productVariantIds: [ID!]
"""The collections to which the price rule applies."""
collectionIds: [ID!]
}
"""
Specifies the input fields to update a price rule's item prerequisites.
"""
input PriceRuleItemPrerequisitesInput {
"""The products needed for the price rule to be applied."""
productIds: [ID!]
"""The product variants needed for the price rule to be applied."""
productVariantIds: [ID!]
"""The collections needed for the price rule to be applied."""
collectionIds: [ID!]
}
"""
Single or multiple line item products, product variants or collections required
for the price rule to be applicable, can also be provided in combination.
"""
type PriceRuleLineItemPrerequisites {
"""The collections required for the price rule to be applicable."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionConnection!
"""The product variants required for the price rule to be applicable."""
productVariants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductVariantConnection!
"""The products required for the price rule to be applicable."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductConnection!
}
"""A money range within which the price rule is applicable."""
type PriceRuleMoneyRange {
"""The lower bound of the money range."""
greaterThan: Money
"""The lower bound or equal of the money range."""
greaterThanOrEqualTo: Money
"""The upper bound of the money range."""
lessThan: Money
"""The upper bound or equal of the money range."""
lessThanOrEqualTo: Money
}
"""
Specifies the input fields to update the money range within which the price rule is applicable.
"""
input PriceRuleMoneyRangeInput {
"""The upper bound of the money range."""
lessThan: Money
"""The upper or equal bound of the money range."""
lessThanOrEqualTo: Money
"""The lower bound of the money range."""
greaterThan: Money
"""The lower or equal bound of the money range."""
greaterThanOrEqualTo: Money
}
"""The value of a percent price rule."""
type PriceRulePercentValue {
"""The percent value of the price rule."""
percentage: Float!
}
"""
Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
"""
type PriceRulePrerequisiteToEntitlementQuantityRatio {
"""The quantity of entitlements in the ratio."""
entitlementQuantity: Int!
"""The quantity of prerequisites in the ratio."""
prerequisiteQuantity: Int!
}
"""
Specifies the quantity of prerequisite items required for the price rule to be
applicable, compared to quantity of entitled items.
"""
input PriceRulePrerequisiteToEntitlementQuantityRatioInput {
"""The quantity of entitlements in the ratio."""
entitlementQuantity: Int
"""The quantity of prerequisites in the ratio."""
prerequisiteQuantity: Int
}
"""A quantity range within which the price rule is applicable."""
type PriceRuleQuantityRange {
"""The lower bound of the quantity range."""
greaterThan: Int
"""The lower bound or equal of the quantity range."""
greaterThanOrEqualTo: Int
"""The upper bound of the quantity range."""
lessThan: Int
"""The upper bound or equal of the quantity range."""
lessThanOrEqualTo: Int
}
"""
Specifies the input fields to update the quantity range within which the price rule is applicable.
"""
input PriceRuleQuantityRangeInput {
"""The upper bound of the quantity range."""
lessThan: Int
"""The upper or equal bound of the quantity range."""
lessThanOrEqualTo: Int
"""The lower bound of the quantity range."""
greaterThan: Int
"""The lower or equal bound of the quantity range."""
greaterThanOrEqualTo: Int
}
"""Shareable URL for the discount code associated with the price rule."""
type PriceRuleShareableUrl {
"""
Image URL of the item (product or collection) to which discount applies.
"""
targetItemImage: Image
"""Type of page where URL lands."""
targetType: PriceRuleShareableUrlTargetType!
"""Title for the page where URL lands."""
title: String!
"""Actual URL for the discount code."""
url: URL!
}
"""Page type where shareable URL lands."""
enum PriceRuleShareableUrlTargetType {
HOME
PRODUCT
COLLECTION
}
"""
Specifies the input fields to update a price rule shipping entitlement.
"""
input PriceRuleShippingEntitlementsInput {
"""Whether the price rule applies to all shipping lines."""
targetAllShippingLines: Boolean = false
"""The codes for the countries to which the price rule applies to."""
countryCodes: [CountryCode!]
"""
Whether the price rule is applicable to countries that have not been defined in the shop's shipping zones.
"""
includeRestOfWorld: Boolean = false
}
"""The shipping lines to which the price rule applies to."""
type PriceRuleShippingLineEntitlements {
"""The codes for the countries to which the price rule applies to."""
countryCodes: [CountryCode!]!
"""
Whether the price rule is applicable to countries that have not been defined in the shop's shipping zones.
"""
includeRestOfWorld: Boolean!
"""Whether the price rule applies to all shipping lines."""
targetAllShippingLines: Boolean!
}
"""The set of valid sort keys for the priceRules query."""
enum PriceRuleSortKeys {
"""Sort by the `starts_at` value."""
STARTS_AT
"""Sort by the `ends_at` value."""
ENDS_AT
"""Sort by the `title` value."""
TITLE
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The status of the price rule."""
enum PriceRuleStatus {
ACTIVE
EXPIRED
SCHEDULED
}
"""
The type of lines (line_item or shipping_line) to which the price rule applies.
"""
enum PriceRuleTarget {
"""The price rule applies to line items."""
LINE_ITEM
"""The price rule applies to shipping lines."""
SHIPPING_LINE
}
"""A list of features used by the price rule."""
enum PriceRuleTrait {
"""The price rule supports quantity BXGY discounts."""
BUY_ONE_GET_ONE
"""The price rule supports BXGY discounts using custom allocation limit."""
BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT
"""The price rule supports bulk discounts."""
BULK
"""The price rule supports specific customers."""
SPECIFIC_CUSTOMERS
"""The price rule supports quantity discounts."""
QUANTITY_DISCOUNTS
}
"""Return type for `priceRuleUpdate` mutation."""
type PriceRuleUpdatePayload {
"""The updated price rule."""
priceRule: PriceRule
"""The updated discount code."""
priceRuleDiscountCode: PriceRuleDiscountCode
"""List of errors that occurred executing the mutation."""
priceRuleUserErrors: [PriceRuleUserError!]!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]! @deprecated(reason: "Use `priceRuleUserErrors` instead")
}
"""
Represents an error that happens during execution of a price rule mutation.
"""
type PriceRuleUserError implements DisplayableError {
"""Error code to uniquely identify the error."""
code: PriceRuleErrorCode
"""Path to the input field which caused the error."""
field: [String!]
"""The error message."""
message: String!
}
"""A time period during which a price rule is applicable."""
type PriceRuleValidityPeriod {
"""The time after which the price rule becomes invalid."""
end: DateTime
"""The time after which the price rule is valid."""
start: DateTime!
}
"""
Specifies the input fields to update the validity period of a price rule.
"""
input PriceRuleValidityPeriodInput {
start: DateTime!
end: DateTime
}
"""The value of the price rule."""
union PriceRuleValue = PriceRulePercentValue | PriceRuleFixedAmountValue
"""Specifies the input fields to update a price rule."""
input PriceRuleValueInput {
"""The percentage value of the price rule."""
percentageValue: Float
"""The fixed amount value of the price rule."""
fixedAmountValue: Money
}
"""The value of the percentage pricing object."""
type PricingPercentageValue {
"""The percentage value of the object."""
percentage: Float!
}
"""The value of the pricing object."""
union PricingValue = PricingPercentageValue | MoneyV2
"""
Private metafields represent custom metadata that is attached to a resource.
Private metafields are private to the application that creates them on a shop's resources.
"""
type PrivateMetafield implements Node {
"""The id of the private metafield."""
id: ID!
"""The key name for a private metafield."""
key: String!
"""The namespace for a private metafield."""
namespace: String!
"""The value of a private metafield."""
value: String!
"""Represents the private metafield value type."""
valueType: PrivateMetafieldValueType!
}
type PrivateMetafieldConnection {
"""A list of edges."""
edges: [PrivateMetafieldEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""
Specifies the input fields for a PrivateMetafield.
"""
input PrivateMetafieldDeleteInput {
"""The ID of the owning resource."""
owner: ID
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
}
"""Return type for `privateMetafieldDelete` mutation."""
type PrivateMetafieldDeletePayload {
"""The ID of private metafield that was deleted."""
deletedPrivateMetafieldId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type PrivateMetafieldEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of PrivateMetafieldEdge."""
node: PrivateMetafield!
}
"""
Specifies the input fields for a PrivateMetafield.
"""
input PrivateMetafieldInput {
"""The owning resource."""
owner: ID
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
"""
The value and value type of the metafield, wrapped in a ValueInput object.
"""
valueInput: PrivateMetafieldValueInput!
}
"""Return type for `privateMetafieldUpsert` mutation."""
type PrivateMetafieldUpsertPayload {
"""The private metafield that was created or updated."""
privateMetafield: PrivateMetafield
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Value Input wraps two fields of Private Metafields into one. Those fields are value and value_type.
"""
input PrivateMetafieldValueInput {
"""The value of a private metafield."""
value: String!
"""Represents the private metafield value type."""
valueType: PrivateMetafieldValueType!
}
"""Private Metafield value types."""
enum PrivateMetafieldValueType {
"""A private metafield value type."""
STRING
"""A private metafield value type."""
INTEGER
"""A private metafield value type."""
JSON_STRING
}
"""
Represents a product, including information about related collections and product variants.
"""
type Product implements Node & Navigable & HasMetafields & HasPublishedTranslations & Publishable & OnlineStorePreviewable & LegacyInteroperability {
"""
The number of publications a resource is published to without feedback errors.
"""
availablePublicationCount: Int!
"""The description of the product, complete with HTML formatting."""
bodyHtml: String @deprecated(reason: "Use `descriptionHtml` instead")
"""A list of the collections that include the product."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CollectionSortKeys = ID
"""
Supported filter parameters:
- `collection_type`
- `published_status`
- `title`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): CollectionConnection!
"""
The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was created.
"""
createdAt: DateTime!
"""A default cursor for use in pagination."""
defaultCursor: String!
"""
A stripped description of the product, single line with HTML tags removed.
"""
description(
"""Truncates string after the given length."""
truncateAt: Int
): String!
"""The description of the product, complete with HTML formatting."""
descriptionHtml: HTML!
"""
Stripped description of the product, single line with HTML tags removed.
Truncated to 60 characters.
"""
descriptionPlainSummary: String! @deprecated(reason: "Use `description` instead")
"""The featured image for the product."""
featuredImage: Image
"""
Information about the product that's provided through resource feedback.
"""
feedback: ResourceFeedback
"""The theme template used when viewing the gift card in a store."""
giftCardTemplateSuffix: String
"""A unique human-friendly string of the product's title."""
handle: String!
"""
Whether the product has only a single variant with the default option and value.
"""
hasOnlyDefaultVariant: Boolean!
"""Whether the product has out of stock variants."""
hasOutOfStockVariants: Boolean!
"""Globally unique identifier."""
id: ID!
"""The images associated with the product."""
images(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductImageSortKeys = POSITION
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): ImageConnection!
"""Whether the product is in a given collection."""
inCollection(
"""The ID of the collection to check."""
id: ID!
): Boolean!
"""Whether the product is a gift card."""
isGiftCard: Boolean!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""The online store preview URL."""
onlineStorePreviewUrl: URL
"""
The online store URL for the product.
A value of `null` indicates that the product is not published to the Online Store sales channel.
"""
onlineStoreUrl: URL
"""A list of custom product options (maximum of 3 per product)."""
options(
"""Truncate the array result to this size."""
first: Int
): [ProductOption!]!
"""The price range of the product."""
priceRange: ProductPriceRange!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""A list of the channels where the product is published."""
productPublications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductPublicationConnection! @deprecated(reason: "Use `resourcePublications` instead")
"""The product type specified by the merchant."""
productType: String!
"""The number of publications a resource is published on."""
publicationCount(
"""
Include only the resource's publications that are published. If false, then
return all the resource's publications including future publications.
"""
onlyPublished: Boolean = true
): Int!
"""A list of the channels where the product is published."""
publications(
"""
Return only the publications that are published. If false, then return all publications.
"""
onlyPublished: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductPublicationConnection! @deprecated(reason: "Use `resourcePublications` instead")
"""
The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601))
when the product was published to the Online Store.
"""
publishedAt: DateTime
"""Check to see whether the resource is published to a given channel."""
publishedOnChannel(
"""The ID of the channel to check."""
channelId: ID!
): Boolean! @deprecated(reason: "Use `publishedOnPublication` instead")
"""
Check to see whether the resource is published to the calling app's channel.
"""
publishedOnCurrentChannel: Boolean! @deprecated(reason: "Use `publishedOnCurrentPublication` instead")
"""
Check to see whether the resource is published to the calling app's publication.
"""
publishedOnCurrentPublication: Boolean!
"""Check to see whether the resource is published to a given publication."""
publishedOnPublication(
"""The ID of the publication to check."""
publicationId: ID!
): Boolean!
"""The list of resources that are published to a publication."""
resourcePublications(
"""
Return only the resources that are published. If false, then return all resource publications.
"""
onlyPublished: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""SEO information of the product."""
seo: SEO!
"""The storefront ID of the product."""
storefrontId: StorefrontID!
"""A list of the tags that have been added to the product."""
tags: [String!]!
"""The theme template used when viewing the product in a store."""
templateSuffix: String
"""The title of the product."""
title: String!
"""The quantity of inventory in stock."""
totalInventory: Int!
"""The number of variants that are associated with the product."""
totalVariants: Int!
"""Whether inventory tracking has been enabled for the product."""
tracksInventory: Boolean!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""The list of channels that the resource is not published to."""
unpublishedChannels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ChannelConnection! @deprecated(reason: "Use `unpublishedPublications` instead")
"""The list of publications that the resource is not published to."""
unpublishedPublications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PublicationConnection!
"""
The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was last modified.
"""
updatedAt: DateTime!
"""A list of variants associated with the product."""
variants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductVariantSortKeys = POSITION
): ProductVariantConnection!
"""The name of the product's vendor."""
vendor: String!
}
"""Specifies product images to append."""
input ProductAppendImagesInput {
"""The ID of the product."""
id: ID!
"""The images to be appended to the product."""
images: [ImageInput!]!
}
"""Return type for `productAppendImages` mutation."""
type ProductAppendImagesPayload {
"""List of new images appended to the product."""
newImages(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): [Image!]
"""The product object."""
product: Product
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the products query."""
enum ProductCollectionSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `price` value."""
PRICE
"""Sort by the `best-selling` value."""
BEST_SELLING
"""Sort by the `created` value."""
CREATED
"""Sort by the `id` value."""
ID
"""Sort by the `manual` value."""
MANUAL
"""Sort by the `collection-default` value."""
COLLECTION_DEFAULT
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
type ProductConnection {
"""A list of edges."""
edges: [ProductEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `productCreate` mutation."""
type ProductCreatePayload {
"""The product object."""
product: Product
"""The shop associated with the product."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `productDeleteImages` mutation."""
type ProductDeleteImagesPayload {
"""This is an array of IDs of images to delete."""
deletedImageIds: [ID!]!
"""This is the product object."""
product: Product
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the product to delete."""
input ProductDeleteInput {
"""The ID of the product."""
id: ID!
}
"""Return type for `productDelete` mutation."""
type ProductDeletePayload {
"""The ID of the deleted product."""
deletedProductId: ID
"""The shop associated with the product."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `productDuplicate` mutation."""
type ProductDuplicatePayload {
"""The asynchronous job duplicating the product images."""
imageJob: Job
"""The duplicated product."""
newProduct: Product
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type ProductEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ProductEdge."""
node: Product!
}
"""The set of valid sort keys for the images query."""
enum ProductImageSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `position` value."""
POSITION
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Return type for `productImageUpdate` mutation."""
type ProductImageUpdatePayload {
"""Image updated."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the input fields required to create a product."""
input ProductInput {
"""The description of the product, complete with HTML formatting."""
descriptionHtml: String
"""
A unique human-friendly string for the product. Automatically generated from the product's title.
"""
handle: String
"""
Whether a redirect is required after a new handle has been provided.
If true, then the old handle is redirected to the new one automatically.
"""
redirectNewHandle: Boolean = false
"""The SEO information associated with the product."""
seo: SEOInput
"""The product type specified by the merchant."""
productType: String
"""A list of the tags that have been added to the product."""
tags: [String!]
"""The theme template used when viewing the product in a store."""
templateSuffix: String
"""Whether the product is a gift card."""
giftCard: Boolean
"""The theme template used when viewing the gift card in a store."""
giftCardTemplateSuffix: String
"""The title of the product."""
title: String
"""The name of the product's vendor."""
vendor: String
"""
A description of the product. Supports HTML formatting. This argument is deprecated: Use `descriptionHtml` instead.
"""
bodyHtml: String
"""The IDs of the collections that this product will be added to."""
collectionsToJoin: [ID!]
"""The IDs of collections that will no longer include the product."""
collectionsToLeave: [ID!]
"""Specifies the product to update or create a new product if absent."""
id: ID
"""The images to associate with the product."""
images: [ImageInput!]
"""The metafields to associate with this product."""
metafields: [MetafieldInput!]
"""The private metafields to associated with this product."""
privateMetafields: [PrivateMetafieldInput!]
"""List of custom product options (maximum of 3 per product)."""
options: [String!]
"""
A list of the channels where the product is published. This argument is deprecated: Use `PublishablePublish` instead.
"""
productPublications: [ProductPublicationInput!]
"""
A list of the channels where the product is published. This argument is deprecated: Use `PublishablePublish` instead.
"""
publications: [ProductPublicationInput!]
"""This argument is deprecated: Use `PublishablePublish` instead."""
publishDate: DateTime
"""This argument is deprecated: Use `PublishablePublish` instead."""
publishOn: DateTime
"""This argument is deprecated: Use `PublishablePublish` instead."""
published: Boolean
"""This argument is deprecated: Use `PublishablePublish` instead."""
publishedAt: DateTime
"""A list of variants associated with the product."""
variants: [ProductVariantInput!]
}
"""
Custom product property names like "Size", "Color", and "Material".
Products are based on permutations of these options.
A product may have a maximum of 3 options.
255 characters limit each.
"""
type ProductOption implements Node & HasPublishedTranslations {
"""Globally unique identifier."""
id: ID!
"""The product optionΓÇÖs name."""
name: String!
"""The product option's position."""
position: Int!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""The corresponding value to the product option name."""
values: [String!]!
}
"""The price range of the product."""
type ProductPriceRange {
"""The highest variant's price."""
maxVariantPrice: MoneyV2!
"""The lowest variant's price."""
minVariantPrice: MoneyV2!
}
"""Represents the channels where a product is published."""
type ProductPublication {
"""The channel where the product was or is published."""
channel: Channel!
"""Whether the publication is published or not."""
isPublished: Boolean!
"""The product that was or is going to be published on the channel."""
product: Product!
"""
The date that the product was or is going to be published on the channel.
"""
publishDate: DateTime
}
type ProductPublicationConnection {
"""A list of edges."""
edges: [ProductPublicationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ProductPublicationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ProductPublicationEdge."""
node: ProductPublication!
}
"""Specifies a publication to which a product will be published."""
input ProductPublicationInput {
"""ID of the publication."""
publicationId: ID
"""
ID of the channel. This argument is deprecated: Use publicationId instead.
"""
channelId: ID
"""This argument is deprecated: Use publicationId instead."""
channelHandle: String
"""The date and time that the product was (or will be) published."""
publishDate: DateTime
}
"""Specifies a product to publish and the channels to publish it to."""
input ProductPublishInput {
"""The product to create or update publications for."""
id: ID!
"""The publication that the product is published to."""
productPublications: [ProductPublicationInput!]!
}
"""Return type for `productPublish` mutation."""
type ProductPublishPayload {
"""The product that has been published."""
product: Product
"""The channels where the product is published."""
productPublications: [ProductPublication!] @deprecated(reason: "Use publications within product instead")
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `productReorderImages` mutation."""
type ProductReorderImagesPayload {
"""The asynchronous job reordering the images."""
job: Job
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the products query."""
enum ProductSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `product_type` value."""
PRODUCT_TYPE
"""Sort by the `vendor` value."""
VENDOR
"""Sort by the `inventory_total` value."""
INVENTORY_TOTAL
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `published_at` value."""
PUBLISHED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
Specifies a product to unpublish from a channel and the sales channels to unpublish it from.
"""
input ProductUnpublishInput {
"""The ID of the product to create or update publications for."""
id: ID!
"""The channels to unpublish the product from."""
productPublications: [ProductPublicationInput!]!
}
"""Return type for `productUnpublish` mutation."""
type ProductUnpublishPayload {
"""The product that has been unpublished."""
product: Product
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `productUpdate` mutation."""
type ProductUpdatePayload {
"""The updated product."""
product: Product
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Represents a product variant."""
type ProductVariant implements Node & HasMetafields & HasPublishedTranslations & Navigable & LegacyInteroperability {
"""Whether the product variant is available for sale."""
availableForSale: Boolean!
"""The value of the barcode associated with the product."""
barcode: String
"""The compare-at price of the variant in the default shop currency."""
compareAtPrice: Money
"""The date and time when the variant was created."""
createdAt: DateTime!
"""A default cursor for use in pagination."""
defaultCursor: String!
"""The delivery profile for the variant."""
deliveryProfile: DeliveryProfile
"""
Display name of the variant, based on product's title + variant's title.
"""
displayName: String!
"""The fulfillment service associated with the product."""
fulfillmentService: FulfillmentService
"""
Whether changes to the fulfillment service for the product variant are allowed.
"""
fulfillmentServiceEditable: EditableProperty!
"""The Harmonized System Code (or HS Tariff Code) for the variant."""
harmonizedSystemCode: String @deprecated(reason: "Use `InventoryItem.harmonized_system_code` instead.")
"""Globally unique identifier."""
id: ID!
"""The featured image for the variant."""
image(
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): Image
"""The featured image for the variant."""
images(
"""Truncate the array result to this size."""
first: Int
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): [Image!]! @deprecated(reason: "Use the singular `image` field instead. There may never be more than one variant image.")
"""
The ID for the inventory item, which is used to query for inventory information.
"""
inventoryItem: InventoryItem!
"""
The fulfillment service that tracks the number of items in stock for the product variant.
"""
inventoryManagement: ProductVariantInventoryManagement! @deprecated(reason: "Use tracked attribute on `inventoryItem` instead.")
"""
Whether customers are allowed to place an order for the product variant when it's out of stock.
"""
inventoryPolicy: ProductVariantInventoryPolicy!
"""The total sellable quantity of the variant."""
inventoryQuantity: Int
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""
The order of the product variant in the list of product variants. The first position in the list is 1.
"""
position: Int!
"""
List of prices and compare-at prices in the presentment currencies for this shop.
"""
presentmentPrices(
"""The presentment currencies prices should return in."""
presentmentCurrencies: [CurrencyCode!]
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductVariantPricePairConnection!
"""The price of the product variant in the default shop currency."""
price: Money!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""The product that this variant belongs to."""
product: Product!
"""
Whether a customer needs to provide a shipping address when placing an order for the product variant.
"""
requiresShipping: Boolean! @deprecated(reason: "Use `InventoryItem.requires_shipping` instead.")
"""List of product options applied to the variant."""
selectedOptions: [SelectedOption!]!
"""
An identifier for the product variant in the shop. Required in order to connect to a fulfillment service.
"""
sku: String
"""The storefront ID of the product variant."""
storefrontId: StorefrontID!
"""The tax code for the product variant."""
taxCode: String
"""Whether a tax is charged when the product variant is sold."""
taxable: Boolean!
"""The title of the product variant."""
title: String!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""
The date and time (ISO 8601 format) when the product variant was last modified.
"""
updatedAt: DateTime!
"""
The weight of the product variant in the unit system specified with weight_unit.
"""
weight: Float
"""
The unit of measurement that applies to the product variant's weight. If you
don't specify a value for weight_unit, then the shop's default unit of
measurement is applied. Valid values: `g`, `kg`, `oz`, `lb`.
"""
weightUnit: WeightUnit!
}
type ProductVariantConnection {
"""A list of edges."""
edges: [ProductVariantEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `productVariantCreate` mutation."""
type ProductVariantCreatePayload {
"""The product associated with the variant."""
product: Product
"""The successfully created variant."""
productVariant: ProductVariant
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `productVariantDelete` mutation."""
type ProductVariantDeletePayload {
"""ID of the deleted product variant."""
deletedProductVariantId: ID
"""Product of the deleted product variant."""
product: Product
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type ProductVariantEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ProductVariantEdge."""
node: ProductVariant!
}
"""Specifies a product variant to create or update."""
input ProductVariantInput {
"""The value of the barcode associated with the product."""
barcode: String
"""The compare-at price of the variant."""
compareAtPrice: Money
"""The ID of the fulfillment service associated with the variant."""
fulfillmentServiceId: ID
"""The Harmonized System Code (or HS Tariff Code) for the variant."""
harmonizedSystemCode: String
"""
Specifies the product variant to update or create a new variant if absent.
"""
id: ID
"""The ID of the image that's associated with the variant."""
imageId: ID
"""
The URL of an image to associate with the variant. This field can only be
used through mutations that create product images and must match one of the
URLs being created on the product.
"""
imageSrc: String
"""
The fulfillment service that tracks the number of items in stock for the
product variant. If you track the inventory yourself using the admin, then set
the value to `shopify`. Valid values: `shopify` or the handle of a fulfillment
service that has inventory management enabled.
This argument is deprecated: Use tracked attribute on `inventoryItem` instead.
"""
inventoryManagement: ProductVariantInventoryManagement
"""
Whether customers are allowed to place an order for the product variant when it's out of stock.
"""
inventoryPolicy: ProductVariantInventoryPolicy
"""
Create only field. The inventory quantities at each location where the variant is stocked.
"""
inventoryQuantities: [InventoryLevelInput!]
"""Inventory Item associated with the variant, used for unit cost."""
inventoryItem: InventoryItemInput
"""Additional customizable information about the product variant."""
metafields: [MetafieldInput!]
"""The private metafields to associated with this product."""
privateMetafields: [PrivateMetafieldInput!]
"""
The custom properties that a shop owner uses to define product variants.
"""
options: [String!]
"""
The order of the product variant in the list of product variants. The first position in the list is 1.
"""
position: Int
"""The price of the variant."""
price: Money
"""
Create only required field. Specifies the product on which to create the variant.
"""
productId: ID
"""Whether the variant requires shipping."""
requiresShipping: Boolean
"""The SKU for the variant."""
sku: String
"""Whether the variant is taxable."""
taxable: Boolean
"""
This argument is deprecated: Variant title is not a writable field; it is generated from the selected variant options.
"""
title: String
"""The tax code associated with the variant."""
taxCode: String
"""The weight of the variant."""
weight: Float
"""The unit of weight that's used to measure the variant."""
weightUnit: WeightUnit
}
"""The method of inventory tracking for a product variant."""
enum ProductVariantInventoryManagement {
SHOPIFY
NOT_MANAGED
FULFILLMENT_SERVICE
}
"""
The inventory policy for a product variant controls whether customers can continue to buy the variant when it
is out of stock. When the value is <code>continue</code>, customers are able to buy the variant when it's out of stock.
When the value is <code>deny</code>, customers can't buy the variant when it's out of stock.
"""
enum ProductVariantInventoryPolicy {
DENY
CONTINUE
}
"""
The compare-at price and price of a variant sharing a currency.
"""
type ProductVariantPricePair {
"""The compare-at price of the variant with associated currency."""
compareAtPrice: MoneyV2
"""The price of the variant with associated currency."""
price: MoneyV2!
}
type ProductVariantPricePairConnection {
"""A list of edges."""
edges: [ProductVariantPricePairEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ProductVariantPricePairEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ProductVariantPricePairEdge."""
node: ProductVariantPricePair!
}
"""The set of valid sort keys for the variants query."""
enum ProductVariantSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `name` value."""
NAME
"""Sort by the `sku` value."""
SKU
"""Sort by the `inventory_quantity` value."""
INVENTORY_QUANTITY
"""Sort by the `inventory_management` value."""
INVENTORY_MANAGEMENT
"""Sort by the `inventory_levels.available` value."""
INVENTORY_LEVELS_AVAILABLE
"""Sort by the `inventory_policy` value."""
INVENTORY_POLICY
"""Sort by the `full_title` value."""
FULL_TITLE
"""Sort by the `popular` value."""
POPULAR
"""Sort by the `position` value."""
POSITION
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Return type for `productVariantUpdate` mutation."""
type ProductVariantUpdatePayload {
"""The product associated with the variant."""
product: Product
"""The updated variant."""
productVariant: ProductVariant
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""The set of valid sort keys for the profileItems query."""
enum ProfileItemSortKeys {
"""Sort by the `title` value."""
TITLE
"""Sort by the `product_type` value."""
PRODUCT_TYPE
"""Sort by the `vendor` value."""
VENDOR
"""Sort by the `inventory_total` value."""
INVENTORY_TOTAL
"""Sort by the `updated_at` value."""
UPDATED_AT
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `published_at` value."""
PUBLISHED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""
A publication is a group of products and collections that is published to an
app. A publication can be a platform or marketplace such
as Facebook or Pinterest, an online store, or POS.
"""
type Publication implements Node {
"""The app associated with the publication."""
app: App!
"""
The collection publications for the list of collections published to the publication.
"""
collectionPublicationsV3(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""The list of collections published to the publication."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CollectionConnection!
"""Whether the collection is available to the publication."""
hasCollection(
"""Collection ID to check."""
id: ID!
): Boolean!
"""Globally unique identifier."""
id: ID!
"""Name of the publication."""
name: String!
"""
The product publications for the list of products published to the publication.
"""
productPublicationsV3(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""The list of products published to the publication."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ProductConnection!
"""Whether or not this publication supports future publishing."""
supportsFuturePublishing: Boolean!
}
type PublicationConnection {
"""A list of edges."""
edges: [PublicationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type PublicationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of PublicationEdge."""
node: Publication!
}
"""Specifies the input fields required to publish a resource."""
input PublicationInput {
"""
ID of the channel. This argument is deprecated: Use publicationId instead.
"""
channelId: ID
"""ID of the publication."""
publicationId: ID
"""The date and time that the product was (or will be) published."""
publishDate: DateTime
}
"""
Represents a resource that can be published to a channel.
A publishable resource can be either a Product or Collection.
"""
interface Publishable {
"""
The number of publications a resource is published to without feedback errors.
"""
availablePublicationCount: Int!
"""The number of publications a resource is published on."""
publicationCount(
"""
Include only the resource's publications that are published. If false, then
return all the resource's publications including future publications.
"""
onlyPublished: Boolean = true
): Int!
"""Check to see whether the resource is published to a given channel."""
publishedOnChannel(
"""The ID of the channel to check."""
channelId: ID!
): Boolean! @deprecated(reason: "Use `publishedOnPublication` instead")
"""
Check to see whether the resource is published to the calling app's channel.
"""
publishedOnCurrentChannel: Boolean! @deprecated(reason: "Use `publishedOnCurrentPublication` instead")
"""
Check to see whether the resource is published to the calling app's publication.
"""
publishedOnCurrentPublication: Boolean!
"""Check to see whether the resource is published to a given publication."""
publishedOnPublication(
"""The ID of the publication to check."""
publicationId: ID!
): Boolean!
"""The list of resources that are published to a publication."""
resourcePublications(
"""
Return only the resources that are published. If false, then return all resource publications.
"""
onlyPublished: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ResourcePublicationConnection!
"""The list of channels that the resource is not published to."""
unpublishedChannels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ChannelConnection! @deprecated(reason: "Use `unpublishedPublications` instead")
"""The list of publications that the resource is not published to."""
unpublishedPublications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PublicationConnection!
}
"""Return type for `publishablePublish` mutation."""
type PublishablePublishPayload {
"""Resource that has been published."""
publishable: Publishable
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `publishablePublishToCurrentChannel` mutation."""
type PublishablePublishToCurrentChannelPayload {
"""Resource that has been published."""
publishable: Publishable
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `publishableUnpublish` mutation."""
type PublishableUnpublishPayload {
"""Resource that has been unpublished."""
publishable: Publishable
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `publishableUnpublishToCurrentChannel` mutation."""
type PublishableUnpublishToCurrentChannelPayload {
"""Resource that has been published."""
publishable: Publishable
"""The user's shop."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Published translation of a field of a resource."""
type PublishedTranslation {
"""Translation key."""
key: String!
"""Translation locale."""
locale: String!
"""Translation value."""
value: String
}
"""
The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start.
"""
type QueryRoot {
"""Lookup an App by ID or return the currently authenticated App."""
app(
"""The ID to lookup the App by."""
id: ID
): App
"""
Fetches app by handle.
Returns null if the app doesn't exist.
"""
appByHandle(
"""Handle of the App."""
handle: String!
): App
"""
Fetches app by apiKey.
Returns null if the app doesn't exist.
"""
appByKey(
"""API key of the App."""
apiKey: String!
): App
"""
Lookup an AppInstallation by ID or return the AppInstallation for the currently authenticated App.
"""
appInstallation(
"""ID used to lookup AppInstallation."""
id: ID
): AppInstallation
"""List of app installations."""
appInstallations(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppInstallationSortKeys = INSTALLED_AT
"""The category of app installations to fetch."""
category: AppInstallationCategory
"""The privacy level of app installations to fetch."""
privacy: AppInstallationPrivacy = PUBLIC
): AppInstallationConnection!
"""Returns an automatic discount resource by ID."""
automaticDiscount(
"""The ID of the DiscountAutomatic to return."""
id: ID!
): DiscountAutomatic @deprecated(reason: "Use `automaticDiscountNode` instead")
"""Returns an automatic discount resource by ID."""
automaticDiscountNode(
"""The ID of the DiscountAutomaticNode to return."""
id: ID!
): DiscountAutomaticNode
"""List of automatic discounts."""
automaticDiscountNodes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AutomaticDiscountSortKeys = CREATED_AT
"""
Supported filter parameters:
- `status`
- `type`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): DiscountAutomaticNodeConnection!
"""List of the shop's automatic discount saved searches."""
automaticDiscountSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""List of automatic discounts."""
automaticDiscounts(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AutomaticDiscountSortKeys = CREATED_AT
"""
Supported filter parameters:
- `status`
- `type`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): DiscountAutomaticConnection! @deprecated(reason: "Use `automaticDiscountNodes` instead")
"""
List of activated carrier services and which shop locations support them.
"""
availableCarrierServices: [DeliveryCarrierServiceAndLocations!]!
"""Lookup a carrier service by ID."""
carrierService(
"""The ID of the DeliveryCarrierService to return."""
id: ID!
): DeliveryCarrierService
"""Lookup a channel by ID."""
channel(
"""The ID of the Channel to return."""
id: ID!
): Channel @deprecated(reason: "Use `publication` instead")
"""List of the active sales channels."""
channels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ChannelConnection! @deprecated(reason: "Use `publications` instead")
"""Returns a code discount resource by ID."""
codeDiscountNode(
"""The ID of the DiscountCodeNode to return."""
id: ID!
): DiscountCodeNode
"""Returns a code discount identified by its code."""
codeDiscountNodeByCode(
"""The code of the DiscountCodeNode to return."""
code: String!
): DiscountCodeNode
"""
List of code discounts. Special fields for query params:
* status: active, expired, scheduled
* type: bxgy, fixed_amount, free_shipping, percentage.
"""
codeDiscountNodes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CodeDiscountSortKeys = CREATED_AT
"""
Supported filter parameters:
- `created_at`
- `ends_at`
- `starts_at`
- `status`
- `times_used`
- `type`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): DiscountCodeNodeConnection!
"""List of the shop's code discount saved searches."""
codeDiscountSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""Returns a Collection resource by ID."""
collection(
"""The ID of the Collection to return."""
id: ID!
): Collection
"""Return a collection by its handle."""
collectionByHandle(
"""The handle of the collection."""
handle: String!
): Collection
"""
A list of rule conditions to define how collections with rules can be created.
"""
collectionRulesConditions: [CollectionRuleConditions!]!
"""List of the shop's collection saved searches."""
collectionSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""List of collections."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CollectionSortKeys = ID
"""
Supported filter parameters:
- `collection_type`
- `published_status`
- `title`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): CollectionConnection!
"""Return the AppInstallation for the currently authenticated App."""
currentAppInstallation: AppInstallation!
"""Returns the current app's most recent BulkOperation."""
currentBulkOperation: BulkOperation
"""Returns a Customer resource by ID."""
customer(
"""The ID of the Customer to return."""
id: ID!
): Customer
"""List of the shop's customer saved searches."""
customerSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CustomerSavedSearchSortKeys = ID
"""
Supported filter parameters:
- `name`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): SavedSearchConnection!
"""List of customers."""
customers(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CustomerSortKeys = ID
"""
Supported filter parameters:
- `accepts_marketing`
- `country`
- `customer_date`
- `email`
- `last_abandoned_order_date`
- `order_date`
- `orders_count`
- `phone`
- `state`
- `tag`
- `total_spent`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): CustomerConnection!
"""The paginated list of deletion events."""
deletionEvents(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: DeletionEventSortKeys = ID
"""
Supported filter parameters:
- `occurred_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""List of subject types to filter by."""
subjectTypes: [DeletionEventSubjectType!]
): DeletionEventConnection!
"""Lookup a Delivery Profile by ID."""
deliveryProfile(
"""The ID of the DeliveryProfile to return."""
id: ID!
): DeliveryProfile
"""List of saved delivery profiles."""
deliveryProfiles(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): DeliveryProfileConnection!
"""The shop-wide shipping settings."""
deliverySettings: DeliverySetting
"""Lookup a Domain by ID."""
domain(
"""The ID of the Domain to return."""
id: ID!
): Domain
"""Returns a DraftOrder resource by ID."""
draftOrder(
"""The ID of the DraftOrder to return."""
id: ID!
): DraftOrder
"""List of the shop's draft order saved searches."""
draftOrderSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""List of saved draft orders."""
draftOrders(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: DraftOrderSortKeys = ID
"""
Supported filter parameters:
- `created_at`
- `customer_id`
- `status`
- `tag`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): DraftOrderConnection!
"""Returns a Fulfillment resource by ID."""
fulfillment(
"""The ID of the Fulfillment to return."""
id: ID!
): Fulfillment
"""Returns an InventoryItem resource by ID."""
inventoryItem(
"""The ID of the InventoryItem to return."""
id: ID!
): InventoryItem
"""List of inventory items."""
inventoryItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `created_at`
- `id`
- `sku`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): InventoryItemConnection!
"""Returns an InventoryLevel resource by ID."""
inventoryLevel(
"""The ID of the InventoryLevel to return."""
id: ID!
): InventoryLevel
"""
Returns a Job resource by ID. Used to check the status of internal jobs and any applicable changes.
"""
job(
"""ID of the job to query"""
id: ID!
): Job
"""Returns an inventory Location resource by ID."""
location(
"""
The ID of the location to return. If no ID is provided, the primary location of the Shop is returned.
"""
id: ID
): Location
"""List of active locations."""
locations(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: LocationSortKeys = NAME
"""
Supported filter parameters:
- `active`
- `address1`
- `address2`
- `city`
- `country`
- `legacy`
- `name`
- `province`
- `zip`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""If true, also include the legacy locations of fulfillment services."""
includeLegacy: Boolean = false
"""If true, also include the locations that are deactivated."""
includeInactive: Boolean = false
): LocationConnection!
"""
Returns a list of all origin locations available for a delivery profile.
"""
locationsAvailableForDeliveryProfiles: [Location!] @deprecated(reason: "Use `locationsAvailableForDeliveryProfilesConnection` instead")
"""
Returns a list of all origin locations available for a delivery profile.
"""
locationsAvailableForDeliveryProfilesConnection(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): LocationConnection!
"""List of a campaign's marketing activities."""
marketingActivities(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: MarketingActivitySortKeys = CREATED_AT
"""
Supported filter parameters:
- `app_id`
- `created_at`
- `marketing_campaign_id`
- `tactic`
- `title`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): MarketingActivityConnection!
"""Returns a MarketingActivity resource by ID."""
marketingActivity(
"""The ID of the MarketingActivity to return."""
id: ID!
): MarketingActivity
"""Returns a MarketingEvent resource by ID."""
marketingEvent(
"""The ID of the MarketingEvent to return."""
id: ID!
): MarketingEvent
"""List of marketing events."""
marketingEvents(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: MarketingEventSortKeys = ID
"""
Supported filter parameters:
- `app_id`
- `description`
- `started_at`
- `type`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): MarketingEventConnection!
"""List of metafield namespaces and keys visible to the Storefront API."""
metafieldStorefrontVisibilities(
"""Filter the metafields storefront whitelist by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldStorefrontVisibilityConnection!
"""Returns metafield storefront visibility by ID."""
metafieldStorefrontVisibility(
"""The ID of the MetafieldStorefrontVisibility to return."""
id: ID!
): MetafieldStorefrontVisibility
"""Returns a specific node by ID."""
node(
"""The ID of the Node to return."""
id: ID!
): Node
"""Returns the list of nodes with the given IDs."""
nodes(
"""The IDs of the Nodes to return."""
ids: [ID!]!
): [Node]!
"""Returns an Order resource by ID."""
order(
"""The ID of the Order to return."""
id: ID!
): Order
"""List of the shop's order saved searches."""
orderSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""List of orders placed."""
orders(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: OrderSortKeys = PROCESSED_AT
"""
Supported filter parameters:
- `cart_token`
- `channel_id`
- `chargeback_status`
- `checkout_token`
- `created_at`
- `credit_card_last4`
- `customer_id`
- `discount_code`
- `email`
- `financial_status`
- `fraud_protection_level`
- `fulfillment_status`
- `location_id`
- `processed_at`
- `reference_location_id`
- `risk_level`
- `sales_channel`
- `source_name`
- `status`
- `tag`
- `test`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): OrderConnection!
"""Lookup a price rule by ID."""
priceRule(
"""The ID of the PriceRule to return."""
id: ID!
): PriceRule
"""List of the shop's price rule saved searches."""
priceRuleSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""List of price rules."""
priceRules(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: PriceRuleSortKeys = ID
"""
Supported filter parameters:
- `created_at`
- `discount_type`
- `ends_at`
- `starts_at`
- `status`
- `times_used`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): PriceRuleConnection!
"""Returns a private metafield by ID."""
privateMetafield(
"""The ID of the PrivateMetafield to return."""
id: ID!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""
Retrieve the private metafields of a certain resource, specified by the resource ID.
"""
owner: ID!
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""Returns a Product resource by ID."""
product(
"""The ID of the Product to return."""
id: ID!
): Product
"""Return a product by its handle."""
productByHandle(
"""The handle of the product."""
handle: String!
): Product
"""List of the shop's product saved searches."""
productSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection!
"""Returns a ProductVariant resource by ID."""
productVariant(
"""The ID of the ProductVariant to return."""
id: ID!
): ProductVariant
"""List of the product variants."""
productVariants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductVariantSortKeys = ID
"""
Supported filter parameters:
- `barcode`
- `collection`
- `delivery_profile_id`
- `gift_card`
- `inventory_quantity`
- `location_id`
- `managed`
- `managed_by`
- `product_id`
- `product_type`
- `published_status`
- `sku`
- `tag`
- `taxable`
- `title`
- `updated_at`
- `vendor`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): ProductVariantConnection!
"""List of products."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductSortKeys = ID
"""
Supported filter parameters:
- `barcode`
- `created_at`
- `delivery_profile_id`
- `error_feedback`
- `gift_card`
- `inventory_total`
- `out_of_stock_somewhere`
- `product_type`
- `published_status`
- `sku`
- `tag`
- `title`
- `updated_at`
- `vendor`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): ProductConnection!
"""
The list of public Admin API versions, including supported, release candidate and unstable versions.
"""
publicApiVersions: [ApiVersion!]!
"""Lookup a publication by ID."""
publication(
"""The ID of the Publication to return."""
id: ID!
): Publication
"""List of the active publications."""
publications(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PublicationConnection!
"""Returns a Refund resource by ID."""
refund(
"""The ID of the Refund to return."""
id: ID!
): Refund
"""Lookup a script tag resource by ID."""
scriptTag(
"""The ID of the ScriptTag to return."""
id: ID!
): ScriptTag
"""List of script tags."""
scriptTags(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""The source URL of the script tag to filter by."""
src: URL
): ScriptTagConnection!
"""Returns a Shop resource corresponding to access token used in request."""
shop: Shop!
"""List of locales available on a shop."""
shopLocales(
"""Return only published locales."""
published: Boolean
): [ShopLocale!]!
"""Shopify Payments account information, including balances and payouts."""
shopifyPaymentsAccount: ShopifyPaymentsAccount
"""List of TenderTransactions associated with the Shop."""
tenderTransactions(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `processed_at`
- `test`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): TenderTransactionConnection!
"""Translatable resource."""
translatableResource(
"""Find a translatable resource by ID."""
resourceId: ID!
): TranslatableResource
"""List of translatable resources."""
translatableResources(
"""Return only resources of a type."""
resourceType: TranslatableResourceType!
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): TranslatableResourceConnection!
"""Returns a webhook subscription by ID."""
webhookSubscription(
"""The ID of the WebhookSubscription to return."""
id: ID!
): WebhookSubscription
"""List of webhook subscriptions."""
webhookSubscriptions(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: WebhookSubscriptionSortKeys = CREATED_AT
"""
Supported filter parameters:
- `created_at`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""Callback URL to filter by."""
callbackUrl: URL
"""Response format to filter by."""
format: WebhookSubscriptionFormat
"""List of webhook subscription topics to filter by."""
topics: [WebhookSubscriptionTopic!]
): WebhookSubscriptionConnection!
}
"""Represents a refund of items or transactions in an order."""
type Refund implements Node & LegacyInteroperability {
"""When the refund was created."""
createdAt: DateTime
"""Globally unique identifier."""
id: ID!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""Note associated with the refund."""
note: String
"""The RefundLineItem resources attached to the refund."""
refundLineItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): RefundLineItemConnection!
"""
Whether the RefundLineItem resources were restocked when the refund was created.
"""
restocked: Boolean! @deprecated(reason: "Use `restockType` on the `RefundLineItem` resource instead.")
"""Total amount refunded across all the transactions for this refund."""
totalRefunded: MoneyV2! @deprecated(reason: "Use `totalRefundedSet` instead")
"""
Total amount refunded across all the transactions for this refund in shop and presentment currencies.
"""
totalRefundedSet: MoneyBag!
"""Transactions associated with the refund."""
transactions(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): OrderTransactionConnection!
"""When the refund was last updated."""
updatedAt: DateTime!
}
"""Return type for `refundCreate` mutation."""
type RefundCreatePayload {
"""The order associated with the created refund."""
order: Order
"""The created refund."""
refund: Refund
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the fields to create a refund."""
input RefundInput {
"""
The currency (in ISO format) that is used to refund the order. This must be
the presentment currency (the currency used by the customer) and is a required
field for orders where the currency and presentment currency differ.
"""
currency: CurrencyCode
"""Order ID for which the refund is created."""
orderId: ID!
"""An optional note attached to a refund."""
note: String
"""Whether to send a refund notification to the customer."""
notify: Boolean
"""Specifies how much of the shipping cost to refund."""
shipping: ShippingRefundInput
"""A list of line items to refund."""
refundLineItems: [RefundLineItemInput!]
"""A list of transactions involved in the refund."""
transactions: [OrderTransactionInput!]
}
"""Represents the details about a refunded line item."""
type RefundLineItem {
"""
Returns a LineItem resource. This represents the LineItem in the non-refund context.
"""
lineItem: LineItem!
"""The inventory restock location."""
location: Location
"""Returns the price of a refunded line item."""
price: Money! @deprecated(reason: "Use `priceSet` instead")
"""
Returns the price of a refunded line item in shop and presentment currencies.
"""
priceSet: MoneyBag!
"""Returns the quantity of a refunded line item."""
quantity: Int!
"""Represents the type of restock for the refunded line item."""
refundType: RefundLineItemRefundType! @deprecated(reason: "Use `restockType` instead")
"""Represents the type of restock for the refunded line item."""
restockType: RefundLineItemRestockType!
"""
Whether the refunded line item was restocked. Not applicable in the context of a SuggestedRefund.
"""
restocked: Boolean!
"""Returns the subtotal price of a refunded line item."""
subtotal: Money! @deprecated(reason: "Use `subtotalSet` instead")
"""
Returns the subtotal price of a refunded line item in shop and presentment currencies.
"""
subtotalSet: MoneyBag!
"""Returns the total tax charged on a refunded line item."""
totalTax: Money! @deprecated(reason: "Use `totalTaxSet` instead")
"""
Returns the total tax charged on a refunded line item in shop and presentment currencies.
"""
totalTaxSet: MoneyBag!
}
type RefundLineItemConnection {
"""A list of edges."""
edges: [RefundLineItemEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type RefundLineItemEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of RefundLineItemEdge."""
node: RefundLineItem!
}
"""Specifies the fields required to return line items on a refund."""
input RefundLineItemInput {
"""The ID of the line item in the refund."""
lineItemId: ID!
"""The quantity of the associated line item that was returned."""
quantity: Int!
"""The type of restock for this line item."""
restockType: RefundLineItemRestockType
"""
The intended location for restocking if `refundType` is not `NO_RESTOCK`
"""
locationId: ID
}
"""The type of restock performed for a particular refund line item."""
enum RefundLineItemRefundType {
"""Refund line item was returned."""
RETURN
"""Refund line item was canceled."""
CANCEL
"""
Refund line item was restocked, without specifically being identified as a return or cancelation.
"""
LEGACY_RESTOCK
"""Refund line item was not restocked."""
NO_RESTOCK
}
"""The type of restock performed for a particular refund line item."""
enum RefundLineItemRestockType {
"""Refund line item was returned."""
RETURN
"""Refund line item was canceled."""
CANCEL
"""
Refund line item was restocked, without specifically being identified as a return or cancelation.
"""
LEGACY_RESTOCK
"""Refund line item was not restocked."""
NO_RESTOCK
}
"""
Presents information or problems to merchants, with 1 or more actions that they can take.
They can optionally have a specific icon and be dismissed by merchants.
"""
type ResourceAlert {
"""
Buttons in the alert that link to related information.
For example, _View risk assessment_.
"""
actions: [ResourceAlertAction!]!
"""Details about the alert."""
content: HTML!
"""
Unique identifier that appears when an alert is manually closed by the merchant.
Most alerts cannot be manually closed.
"""
dismissibleHandle: String
"""Icon that displays with the alert."""
icon: ResourceAlertIcon
"""Indication of how important the alert is."""
severity: ResourceAlertSeverity!
"""The name of the alert."""
title: String!
}
"""An action associated to a resource alert."""
type ResourceAlertAction {
"""Whether the action is primary or not."""
primary: Boolean!
"""Resource for the action to show."""
show: String
"""Action title."""
title: String!
"""Action target URL."""
url: URL!
}
enum ResourceAlertIcon {
CHECKMARK_CIRCLE
INFORMATION_CIRCLE
}
enum ResourceAlertSeverity {
DEFAULT
INFO
WARNING
SUCCESS
CRITICAL
ERROR @deprecated(reason: "`ERROR` severity is being deprecated in favour of `WARNING` or `CRITICAL` instead")
}
"""List of resources available for export."""
enum ResourceExportableType {
"""The Automatic Discount resource."""
DISCOUNTS_AUTOMATIC
"""The Order resource."""
ORDERS
"""The Product resource."""
PRODUCTS
"""The PriceRule resource."""
PRICE_RULES
}
type ResourceFeedback {
appFeedback: [AppFeedback!]! @deprecated(reason: "Use `details` instead")
"""List of AppFeedback detailing issues regarding a resource."""
details: [AppFeedback!]!
"""Summary of resource feedback pertaining to the resource."""
summary: String!
}
"""A resource limit represents the limits that the resource has."""
type ResourceLimit {
"""Whether or not the resource is available."""
available: Boolean!
"""Quantity available. If null the quantity available is unlimited."""
quantityAvailable: Int
"""Quantity limit of the resource. If null the quantity is unlimited."""
quantityLimit: Int
"""
Quantity used of the resource. If null the quantity used cannot be retrieved.
"""
quantityUsed: Int
}
"""Resource locations in admin."""
enum ResourceLocation {
ACTION
INDEX
SHOW
NEW
}
"""
A resource publication represents that a resource has been published to a publication.
"""
type ResourcePublication {
"""The channel the resource publication is published to."""
channel: Channel! @deprecated(reason: "Use `publication` instead")
"""Whether the resource publication is published or not."""
isPublished: Boolean!
"""The publication the resource publication is published to."""
publication: Publication!
"""
The date that the resource publication was or is going to be published to the publication.
"""
publishDate: DateTime!
"""The resource published to the publication."""
publishable: Publishable!
}
type ResourcePublicationConnection {
"""A list of edges."""
edges: [ResourcePublicationEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ResourcePublicationEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ResourcePublicationEdge."""
node: ResourcePublication!
}
"""Resource types in admin."""
enum ResourceType {
ORDERS
DRAFT_ORDERS
PRODUCTS
VARIANTS
COLLECTIONS
PAGES
BLOGS
ARTICLES
CUSTOMERS
PRICE_RULES
ABANDONED_CHECKOUTS
"""Resource type for Apps."""
APPS
"""Resource type for automatic discounts."""
DISCOUNTS_AUTOMATIC
CHECKOUTS @deprecated(reason: "checkouts is no longer supported")
DISCOUNTS @deprecated(reason: "discounts is no longer supported, use `PRICE_RULES` instead")
MARKETING @deprecated(reason: "marketing is no longer supported")
}
"""List of possible values for a RiskAssessment result."""
enum RiskAssessmentResult {
HIGH
MEDIUM
LOW
NONE
PENDING
}
"""List of possible values for a RiskFact sentiment."""
enum RiskFactSentiment {
POSITIVE
NEUTRAL
NEGATIVE
}
"""
A saved search is a representation of a search query saved in the admin.
"""
type SavedSearch implements Node & LegacyInteroperability {
"""The filters of a saved search."""
filters: [SearchFilter!]!
"""Globally unique identifier."""
id: ID!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The name of a saved search."""
name: String!
"""
The query string of a saved search. This includes search terms and filters.
"""
query: String!
"""The type of resource this saved search is searching in."""
resourceType: SearchResultType!
"""The search terms of a saved search."""
searchTerms: String!
}
type SavedSearchConnection {
"""A list of edges."""
edges: [SavedSearchEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Specifies the fields required to create a saved search."""
input SavedSearchCreateInput {
"""The type of resouce this saved search is searching in."""
resourceType: SearchResultType!
"""A descriptive name of the saved search."""
name: String!
"""
The query string of a saved search. This includes search terms and filters.
"""
query: String!
}
"""Return type for `savedSearchCreate` mutation."""
type SavedSearchCreatePayload {
"""The saved search that was created."""
savedSearch: SavedSearch
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the fields to delete a saved search."""
input SavedSearchDeleteInput {
"""ID of the saved search to delete."""
id: ID!
}
"""Return type for `savedSearchDelete` mutation."""
type SavedSearchDeletePayload {
"""The id of the saved search that was deleted."""
deletedSavedSearchId: ID
"""The shop of the saved search that was deleted."""
shop: Shop!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type SavedSearchEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of SavedSearchEdge."""
node: SavedSearch!
}
"""Specifies the fields required to update a saved search."""
input SavedSearchUpdateInput {
"""ID of the saved search to update."""
id: ID!
"""A descriptive name of the saved search."""
name: String
"""
The query string of a saved search. This included search terms and filters.
"""
query: String
}
"""Return type for `savedSearchUpdate` mutation."""
type SavedSearchUpdatePayload {
"""The saved search that was updated."""
savedSearch: SavedSearch
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Script discount applications capture the intentions of a discount that
was created by a Shopify Script for an order's line item or shipping line.
"""
type ScriptDiscountApplication implements DiscountApplication {
"""
The method by which the discount's value is allocated to its entitled items.
"""
allocationMethod: DiscountApplicationAllocationMethod!
"""The description of the application as defined by the Script."""
description: String! @deprecated(reason: "Use `title` instead")
"""
An ordered index that can be used to identify the discount application and indicate the precedence
of the discount application for calculations.
"""
index: Int!
"""How the discount amount is distributed on the discounted lines."""
targetSelection: DiscountApplicationTargetSelection!
"""Whether the discount is applied on line items or shipping lines."""
targetType: DiscountApplicationTargetType!
"""The title of the application as defined by the Script."""
title: String!
"""The value of the discount application."""
value: PricingValue!
}
"""
A script tag represents remote JavaScript code that is loaded into the pages of
a shop's storefront or the order status page of checkout.
"""
type ScriptTag implements Node & LegacyInteroperability {
"""The date and time when the script tag was created."""
createdAt: DateTime!
"""
The page or pages on the online store that the script should be included.
"""
displayScope: ScriptTagDisplayScope!
"""Globally unique identifier."""
id: ID!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The URL to the remote script."""
src: URL!
"""The date and time when the script tag was last updated."""
updatedAt: DateTime!
}
type ScriptTagConnection {
"""A list of edges."""
edges: [ScriptTagEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `scriptTagCreate` mutation."""
type ScriptTagCreatePayload {
"""The script tag that was created."""
scriptTag: ScriptTag
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `scriptTagDelete` mutation."""
type ScriptTagDeletePayload {
"""The ID of the deleted script tag."""
deletedScriptTagId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
The page or pages on the online store where the script should be included.
"""
enum ScriptTagDisplayScope {
"""
Include the script on both the web storefront and the order status page.
"""
ALL
"""Include the script only on the order status page."""
ORDER_STATUS
"""Include the script only on the web storefront."""
ONLINE_STORE
}
type ScriptTagEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ScriptTagEdge."""
node: ScriptTag!
}
"""
Specifies the input fields for a script tag.
"""
input ScriptTagInput {
"""The URL of the remote script."""
src: URL
"""
The page or pages on the online store where the script should be included.
"""
displayScope: ScriptTagDisplayScope
}
"""Return type for `scriptTagUpdate` mutation."""
type ScriptTagUpdatePayload {
"""The script tag that was updated."""
scriptTag: ScriptTag
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""A filter in a search query represented by a key value pair."""
type SearchFilter {
"""The key of the search filter."""
key: String!
"""The value of the search filter."""
value: String!
}
"""
A list of search filters along with their specific options in value and label pair for filtering.
"""
type SearchFilterOptions {
"""A list of options that can be use to filter product availability."""
productAvailability: [FilterOption!]!
}
"""Represents an individual result returned from a search."""
type SearchResult {
"""Returns the search result description text."""
description: String
"""Returns the Image resource presented to accompany a search result."""
image: Image
"""Returns the ID of the resource returned in the search result."""
reference: Node!
"""Returns the resource title."""
title: String!
"""Returns the absolute URL to the resource in the search result."""
url: URL!
}
"""The connection type for SearchResult."""
type SearchResultConnection {
"""A list of edges."""
edges: [SearchResultEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
"""Information to aid in pagination."""
resultsAfterCount: Int! @deprecated(reason: "The provided information is not accurate.")
}
type SearchResultEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of SearchResultEdge."""
node: SearchResult!
}
"""Specifies the type of resources to be returned from a search."""
enum SearchResultType {
ORDER
CUSTOMER
PRODUCT
ONLINE_STORE_PAGE
ONLINE_STORE_BLOG
ONLINE_STORE_ARTICLE
COLLECTION
DRAFT_ORDER
PRICE_RULE
}
"""
Custom properties that a shop owner can use to define product variants.
Multiple options can exist. Options are represented as: option1, option2, option3, etc.
"""
type SelectedOption {
"""The product optionΓÇÖs name."""
name: String!
"""The product optionΓÇÖs value."""
value: String!
}
"""SEO information."""
type SEO {
"""SEO Description."""
description: String
"""SEO Title."""
title: String
}
"""SEO information."""
input SEOInput {
"""SEO title of the product."""
title: String
"""SEO description of the product."""
description: String
}
"""Reasons for cancelling a shipping label."""
enum ShippingLabelCancellationReason {
"""Wrong mail service"""
WRONG_MAIL_SERVICE
"""Wrong package size"""
WRONG_PACKAGE_SIZE
"""Wrong shipment weight"""
WRONG_WEIGHT
"""Can't mail by ship date"""
WRONG_SHIP_DATE
"""Can't download label"""
ERROR_DOWNLOADING_LABEL
"""Can't print label"""
ERROR_PRINTING_LABEL
"""Wrong label format"""
WRONG_LABEL_FORMAT
"""Label is too expensive"""
LABEL_TOO_EXPENSIVE
"""Other"""
OTHER
}
"""
Represents the shipping details that the customer chose for their order.
"""
type ShippingLine {
"""
A reference to the carrier service that provided the rate.
Present when the rate was computed by a third-party carrier service.
"""
carrierIdentifier: String
"""A reference to the shipping method."""
code: String
"""Whether the shipping line is custom or not."""
custom: Boolean!
"""The general classification of the delivery method."""
deliveryCategory: String
"""
The discounts that have been allocated to the shipping line.
"""
discountAllocations: [DiscountAllocation!]!
"""The pre-tax shipping price with discounts applied."""
discountedPrice: MoneyV2! @deprecated(reason: "Use `discountedPriceSet` instead")
"""The pre-tax shipping price with discounts applied."""
discountedPriceSet: MoneyBag!
"""Globally unique identifier."""
id: ID
"""The pre-tax shipping price without any discounts applied."""
originalPrice: MoneyV2! @deprecated(reason: "Use `originalPriceSet` instead")
"""The pre-tax shipping price without any discounts applied."""
originalPriceSet: MoneyBag!
"""The phone number at the shipping address."""
phone: String
"""Returns the price of the shipping line."""
price: Money! @deprecated(reason: "Use `originalPriceSet` instead")
"""
The fulfillment service requested for the shipping method.
Present if the shipping method requires processing by a third party fulfillment service.
"""
requestedFulfillmentService: FulfillmentService
"""
A unique identifier for the shipping rate. The format can change without notice and is not meant to be shown to users.
"""
shippingRateHandle: String
"""Returns the rate source for the shipping line."""
source: String
"""The TaxLine objects connected to this shipping line."""
taxLines: [TaxLine!]!
"""Returns the title of the shipping line."""
title: String!
}
"""Specifies the shipping details for the order."""
input ShippingLineInput {
"""Price of the shipping rate."""
price: Money
"""A unique identifier for the shipping rate."""
shippingRateHandle: String
"""Title of the shipping rate."""
title: String
}
"""The shipping method for the delivery."""
type ShippingMethod {
"""A unique code associated with the rate. For example: `expedited_mail`"""
code: String!
"""
A description of the rate, which customers will see at checkout.
For example: `Includes tracking and insurance`.
"""
label: String!
}
"""Return type for `shippingPackageDelete` mutation."""
type ShippingPackageDeletePayload {
"""The ID of the deleted shipping package."""
deletedId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `shippingPackageMakeDefault` mutation."""
type ShippingPackageMakeDefaultPayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Type of a shipping package."""
enum ShippingPackageType {
"""A shipping box."""
BOX
"""A flat rate packaging supplied by a carrier."""
FLAT_RATE
"""An envelope."""
ENVELOPE
"""A soft-pack, bubble-wrap or vinyl envelope."""
SOFT_PACK
"""A mailing tube use for documents, posters, etc."""
TUBE
}
"""Return type for `shippingPackageUpdate` mutation."""
type ShippingPackageUpdatePayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""A shipping rate to be applied to an order."""
type ShippingRate {
"""Human-readable unique identifier for this shipping rate."""
handle: String!
"""Price of this shipping rate."""
price: MoneyV2!
"""Title of this shipping rate."""
title: String!
}
"""Represents the shipping costs refunded on the Refund."""
type ShippingRefund {
"""The monetary value of the shipping fees to be returned."""
amount: Money! @deprecated(reason: "Use `amountSet` instead")
"""
The monetary value of the shipping fees to be returned in shop and presentment currencies.
"""
amountSet: MoneyBag!
"""The maximum amount of shipping fees currently refundable."""
maximumRefundable: Money! @deprecated(reason: "Use `maximumRefundableSet` instead")
"""
The maximum amount of shipping fees currently refundable in shop and presentment currencies.
"""
maximumRefundableSet: MoneyBag!
"""
The monetary value of the tax allocated to shipping fees to be returned.
"""
tax: Money! @deprecated(reason: "Use `taxSet` instead")
"""
The monetary value of the tax allocated to shipping fees to be returned in shop and presentment currencies.
"""
taxSet: MoneyBag!
}
"""Specifies the fields required to return shipping costs on a Refund."""
input ShippingRefundInput {
"""The monetary value of the shipping fees to be returned."""
amount: Money
"""Whether a full refund is provided."""
fullRefund: Boolean
}
"""
Represents the shop object.
"""
type Shop implements Node & HasPublishedTranslations & HasMetafields {
"""Alert message that appears in the Shopify admin."""
alerts: [ShopAlert!]!
"""The token required to query the shop's reports or dashboards."""
analyticsToken: String!
"""List of app installations on the shop."""
appInstallations(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppInstallationSortKeys = INSTALLED_AT
"""The category of app installations to fetch."""
category: AppInstallationCategory
"""The privacy level of app installations to fetch."""
privacy: AppInstallationPrivacy = PUBLIC
): AppInstallationConnection! @deprecated(reason: "Use `QueryRoot.appInstallations` instead.")
"""List of sales channels not currently installed on the shop."""
availableChannelApps(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): AppConnection!
"""The shop's billing address information."""
billingAddress: MailingAddress!
"""List of channel app installations on the shop."""
channelAppInstallations(
"""If true, don't include private channel app installations."""
excludePrivateApps: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppInstallationSortKeys = INSTALLED_AT
): AppInstallationConnection! @deprecated(reason: "Use `appInstallations` instead")
"""Exposes the number of channels."""
channelCount: Int! @deprecated(reason: "Use `publicationCount` instead")
"""List of the shop's active sales channels."""
channels(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ChannelConnection! @deprecated(reason: "Use `QueryRoot.channels` instead.")
"""Specifies whether the shop supports checkouts via Checkout API."""
checkoutApiSupported: Boolean!
"""Return a collection by its handle."""
collectionByHandle(
"""The handle of the collection."""
handle: String!
): Collection @deprecated(reason: "Use `QueryRoot.collectionByHandle` instead.")
"""List of the shop's collection saved searches."""
collectionSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.priceRuleSavedSearches` instead.")
"""List of the shop's collections."""
collections(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CollectionSortKeys = ID
"""
Supported filter parameters:
- `collection_type`
- `published_status`
- `title`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): CollectionConnection! @deprecated(reason: "Use `QueryRoot.collections` instead.")
"""
The public-facing contact email address for the shop.
Customers will use this email to communicate with the shop owner.
"""
contactEmail: String!
"""Countries that have been defined in shipping zones for the shop."""
countriesInShippingZones: CountriesInShippingZones!
"""The three letter code for the shop's currency."""
currencyCode: CurrencyCode!
"""How currencies are displayed on your store."""
currencyFormats: CurrencyFormats!
"""The currency settings for the shop."""
currencySettings(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): CurrencySettingConnection!
"""The shop's customer account requirement preference."""
customerAccounts: ShopCustomerAccountsSetting!
"""List of the shop's customer saved searches."""
customerSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CustomerSavedSearchSortKeys = ID
"""
Supported filter parameters:
- `name`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.customerSavedSearches` instead.")
"""Tags added to customer accounts."""
customerTags(
"""Returns up to the first `n` elements from the list."""
first: Int!
): StringConnection!
"""Customer accounts associated to the shop."""
customers(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: CustomerSortKeys = ID
"""
Supported filter parameters:
- `accepts_marketing`
- `country`
- `customer_date`
- `email`
- `last_abandoned_order_date`
- `order_date`
- `orders_count`
- `phone`
- `state`
- `tag`
- `total_spent`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): CustomerConnection! @deprecated(reason: "Use `QueryRoot.customers` instead.")
"""The shop's meta description used in search engine results."""
description: String
"""List of the shop's draft order saved searches."""
draftOrderSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.draftOrderSavedSearches` instead.")
"""Tags added to draft orders."""
draftOrderTags(
"""Returns up to the first `n` elements from the list."""
first: Int!
): StringConnection!
"""List of saved draft orders on the shop."""
draftOrders(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: DraftOrderSortKeys = ID
"""
Supported filter parameters:
- `created_at`
- `customer_id`
- `status`
- `tag`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): DraftOrderConnection! @deprecated(reason: "Use `QueryRoot.draftOrders` instead.")
"""
The shop owner's email address.
Shopify will use this email address to communicate with the shop owner.
"""
email: String!
"""The presentment currencies enabled for the shop."""
enabledPresentmentCurrencies: [CurrencyCode!]!
"""The shop's features."""
features: ShopFeatures!
"""List of the shop's installed fulfillment services."""
fulfillmentServices: [FulfillmentService!]!
"""The shop's time zone as defined by the IANA."""
ianaTimezone: String!
"""Globally unique identifier."""
id: ID!
"""List of apps that are installed on the shop."""
installedApps(
"""
Whether or not to only return visible apps. By default, only visible apps are returned.
Visible apps are ones which can be seen on the installed apps page.
To return *any* installed app (including non-visible ones), set this to `false`.
"""
visibleOnly: Boolean = true
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: AppsSortKeys = TITLE
): AppConnection! @deprecated(reason: "Use `appInstallations` instead")
"""List of the shop's inventory items."""
inventoryItems(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `created_at`
- `id`
- `sku`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): InventoryItemConnection! @deprecated(reason: "Use `QueryRoot.inventoryItems` instead.")
"""
The number of pendings orders on the shop.
Limited to a maximum of 10000.
"""
limitedPendingOrderCount: LimitedPendingOrderCount!
"""List of active locations of the shop."""
locations(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: LocationSortKeys = NAME
"""
Supported filter parameters:
- `active`
- `address1`
- `address2`
- `city`
- `country`
- `legacy`
- `name`
- `province`
- `zip`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""If true, also include the legacy locations of fulfillment services."""
includeLegacy: Boolean = false
"""If true, also include the locations that are deactivated."""
includeInactive: Boolean = false
): LocationConnection! @deprecated(reason: "Use `QueryRoot.locations` instead.")
"""List of a shop's marketing events."""
marketingEvents(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: MarketingEventSortKeys = ID
"""
Supported filter parameters:
- `app_id`
- `description`
- `started_at`
- `type`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): MarketingEventConnection! @deprecated(reason: "Use `QueryRoot.marketingEvents` instead.")
"""The metafield associated with the resource."""
metafield(
"""Container for a set of metafields (maximum of 20 characters)."""
namespace: String!
"""Identifier for the metafield (maximum of 30 characters)."""
key: String!
): Metafield
"""A paginated list of metafields associated with the resource."""
metafields(
"""Finds all metafields with a specific namespace under the resource."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): MetafieldConnection!
"""The shop's .myshopify.com domain name."""
myshopifyDomain: String!
"""The shop's name."""
name: String!
"""The navigation settings of the shop."""
navigationSettings: [NavigationItem!]!
"""The prefix that appears before order numbers."""
orderNumberFormatPrefix: String!
"""The suffix that appears after order numbers."""
orderNumberFormatSuffix: String!
"""List of the shop's order saved searches."""
orderSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.orderSavedSearches` instead.")
"""Tags added to orders."""
orderTags(
"""Returns up to the first `n` elements from the list."""
first: Int!
"""Sort type."""
sort: ShopTagSort = ALPHABETICAL
): StringConnection!
"""List of orders placed on the shop."""
orders(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: OrderSortKeys = PROCESSED_AT
"""
Supported filter parameters:
- `cart_token`
- `channel_id`
- `chargeback_status`
- `checkout_token`
- `created_at`
- `credit_card_last4`
- `customer_id`
- `discount_code`
- `email`
- `financial_status`
- `fraud_protection_level`
- `fulfillment_status`
- `location_id`
- `processed_at`
- `reference_location_id`
- `risk_level`
- `sales_channel`
- `source_name`
- `status`
- `tag`
- `test`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): OrderConnection! @deprecated(reason: "Use `QueryRoot.orders` instead.")
"""Settings related to payments."""
paymentSettings: PaymentSettings!
"""Number of pending orders on the shop."""
pendingOrderCount: Int! @deprecated(reason: "Use `limitedPendingOrderCount` instead")
"""The shop's plan."""
plan: ShopPlan!
"""List of the shop's price rule saved searches."""
priceRuleSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.priceRuleSavedSearches` instead.")
"""List of the shopΓÇÖs price rules."""
priceRules(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: PriceRuleSortKeys = ID
"""
Supported filter parameters:
- `created_at`
- `discount_type`
- `ends_at`
- `starts_at`
- `status`
- `times_used`
- `updated_at`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): PriceRuleConnection! @deprecated(reason: "Use `QueryRoot.priceRules` instead.")
"""The shop's primary domain name."""
primaryDomain: Domain!
"""Returns a private metafield found by namespace and key."""
privateMetafield(
"""The namespace for the private metafield."""
namespace: String!
"""The key for the private metafield."""
key: String!
): PrivateMetafield
"""List of private metafields."""
privateMetafields(
"""Filter the private metafields by namespace."""
namespace: String
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): PrivateMetafieldConnection!
"""Return a product by its handle."""
productByHandle(
"""The handle of the product."""
handle: String!
): Product @deprecated(reason: "Use `QueryRoot.productByHandle` instead.")
"""All images of all products of the shop."""
productImages(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductImageSortKeys = CREATED_AT
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): ImageConnection!
"""List of the shop's product saved searches."""
productSavedSearches(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): SavedSearchConnection! @deprecated(reason: "Use `QueryRoot.productSavedSearches` instead.")
"""Tags added to products."""
productTags(
"""Returns up to the first `n` elements from the list."""
first: Int!
): StringConnection!
"""Types added to products."""
productTypes(
"""Returns up to the first `n` elements from the list."""
first: Int!
): StringConnection!
"""List of the shop's product variants."""
productVariants(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductVariantSortKeys = ID
"""
Supported filter parameters:
- `barcode`
- `collection`
- `delivery_profile_id`
- `gift_card`
- `inventory_quantity`
- `location_id`
- `managed`
- `managed_by`
- `product_id`
- `product_type`
- `published_status`
- `sku`
- `tag`
- `taxable`
- `title`
- `updated_at`
- `vendor`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): ProductVariantConnection! @deprecated(reason: "Use `QueryRoot.productVariants` instead.")
"""Vendors added to products."""
productVendors(
"""Returns up to the first `n` elements from the list."""
first: Int!
): StringConnection!
"""List of the shop's products."""
products(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ProductSortKeys = ID
"""
Supported filter parameters:
- `barcode`
- `created_at`
- `delivery_profile_id`
- `error_feedback`
- `gift_card`
- `inventory_total`
- `out_of_stock_somewhere`
- `product_type`
- `published_status`
- `sku`
- `tag`
- `title`
- `updated_at`
- `vendor`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
"""
ID of an existing saved search.
The searchΓÇÖs query string will be used as the query argument.
"""
savedSearchId: ID
): ProductConnection! @deprecated(reason: "Use `QueryRoot.products`.")
"""Exposes the number of publications."""
publicationCount: Int!
"""Resource limits of a shop."""
resourceLimits: ShopResourceLimits!
"""The URL of the rich text editor."""
richTextEditorUrl: URL!
"""Return admin search results."""
search(
"""The search query to filter by."""
query: String!
"""The search result types to filter by."""
types: [SearchResultType!]
"""Returns up to the first `n` elements from the list."""
first: Int!
"""Returns the elements that come after the specified cursor."""
after: String
): SearchResultConnection!
"""List of search filter options."""
searchFilters: SearchFilterOptions!
"""Whether the shop has outstanding setup steps."""
setupRequired: Boolean!
"""Countries that the shop ships to."""
shipsToCountries: [CountryCode!]!
"""Shopify Payments account information, including balances and payouts."""
shopifyPaymentsAccount: ShopifyPaymentsAccount @deprecated(reason: "Use `QueryRoot.shopifyPaymentsAccount` instead.")
"""
Storefront access token of a private application. Scoped per-application.
"""
storefrontAccessTokens(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): StorefrontAccessTokenConnection!
"""The URL of the shop's storefront."""
storefrontUrl: URL! @deprecated(reason: "Use `url` instead")
"""Specifies whether or not taxes are charged for shipping."""
taxShipping: Boolean!
"""
The setting for whether applicable taxes are included in product prices.
"""
taxesIncluded: Boolean!
"""The shop's time zone abbreviation."""
timezoneAbbreviation: String!
"""The shop's time zone offset."""
timezoneOffset: String!
"""The shop's time zone offset expressed in number of minutes."""
timezoneOffsetMinutes: Int!
"""The translations associated with the resource."""
translations(
"""Filters translations locale."""
locale: String!
): [PublishedTranslation!]!
"""The shop's unit system."""
unitSystem: UnitSystem!
"""All images uploaded to the shop."""
uploadedImages(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""Sort the underlying list by the given key."""
sortKey: ShopImageSortKeys = CREATED_AT
"""
Image width in pixels between 1 and 2048. This argument is deprecated: Use `maxWidth` on `Image.transformedSrc` instead.
"""
maxWidth: Int
"""
Image height in pixels between 1 and 2048. This argument is deprecated: Use
`maxHeight` on `Image.transformedSrc` instead.
"""
maxHeight: Int
"""
Crops the image according to the specified region. This argument is
deprecated: Use `crop` on `Image.transformedSrc` instead.
"""
crop: CropRegion
"""
Image size multiplier for high-resolution retina displays. Must be between 1
and 3. This argument is deprecated: Use `scale` on `Image.transformedSrc` instead.
"""
scale: Int = 1
): ImageConnection!
"""Fetch list of images uploaded to shop by ids."""
uploadedImagesByIds(
"""The ids of uploaded images."""
imageIds: [ID!]!
): [Image!]!
"""The URL of the shop's storefront."""
url: URL!
"""The shop's primary unit of weight for products and shipping."""
weightUnit: WeightUnit!
}
"""Alert message that appears in the Shopify admin."""
type ShopAlert {
"""Button in the alert that links to related information."""
action: ShopAlertAction!
"""Description of the alert."""
description: String!
}
"""An action associated to a shop alert."""
type ShopAlertAction {
"""Action title."""
title: String!
"""Action target URL."""
url: URL!
}
"""
Possible branding of a shop.
Branding can be used to define the look of a shop including its styling and logo in the Shopify Admin.
"""
enum ShopBranding {
SHOPIFY_GOLD
SHOPIFY_PLUS
ROGERS
SHOPIFY
}
"""
Represents the shop's customer account requirement preference.
"""
enum ShopCustomerAccountsSetting {
REQUIRED
OPTIONAL
DISABLED
}
"""
Represents the feature set available to the shop.
"""
type ShopFeatures {
"""Whether a shop has access to avalara avatax."""
avalaraAvatax: Boolean!
"""Branding of the shop."""
branding: ShopBranding!
"""Whether a shop's storefront can have CAPTCHA protection."""
captcha: Boolean!
"""
Whether a shop's storefront can have CAPTCHA protection for domains not managed by Shopify.
"""
captchaExternalDomains: Boolean!
"""Whether the delivery profiles functionality is enabled for this shop."""
deliveryProfiles: Boolean!
"""Whether a shop has access to the dynamic remarketing feature."""
dynamicRemarketing: Boolean!
"""Whether a shop can create gift cards."""
giftCards: Boolean!
"""
Display Harmonized System codes on products. Used for customs when shipping cross-border.
"""
harmonizedSystemCode: Boolean!
"""
Whether to show the live view. Live view is hidden from merchants that are on a trial or don't have a storefront.
"""
liveView: Boolean!
"""Whether the multi-location functionality is enabled for this shop."""
multiLocation: Boolean!
"""Whether a shop has access to the onboarding visual."""
onboardingVisual: Boolean!
"""Whether a shop has access to all reporting features."""
reports: Boolean!
"""Whether the shop has a Shopify Plus subscription."""
shopifyPlus: Boolean! @deprecated(reason: "Use Shop.plan.shopifyPlus instead.")
"""
Whether to show metrics. Metrics are hidden for new merchants until they become meaningful.
"""
showMetrics: Boolean!
"""Whether the shop has an online storefront."""
storefront: Boolean!
}
"""
Balance and payout information for a
[Shopify Payments](https://help.shopify.com/manual/payments/shopify-payments/getting-paid-with-shopify-payments)
account. Balance includes all balances for the currencies supported by the shop.
You can also query for a list of payouts, where each payout includes the corresponding currencyCode field.
"""
type ShopifyPaymentsAccount implements Node {
"""Whether the Shopify Payments setup is completed."""
activated: Boolean!
"""Current balances in all currencies for the account."""
balance: [MoneyV2!]!
"""All bank accounts configured for the Shopify Payments account."""
bankAccounts(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ShopifyPaymentsBankAccountConnection!
"""
Statement descriptor used for charges.
This is what buyers will see on their credit card or bank statements when making a purchase.
"""
chargeStatementDescriptor: String @deprecated(reason: "Use `chargeStatementDescriptors` instead")
"""
Statement descriptors used for charges.
This is what buyers will see on their credit card or bank statements when making a purchase.
"""
chargeStatementDescriptors: ShopifyPaymentsChargeStatementDescriptor
"""The Shopify Payments account country."""
country: String!
"""The default payout currency for the Shopify Payments account."""
defaultCurrency: CurrencyCode!
"""All disputes related to the Shopify Payments account."""
disputes(
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
"""
Supported filter parameters:
- `id`
- `initiated_at`
- `status`
See the detailed [search syntax](https://help.shopify.com/api/getting-started/search-syntax).
"""
query: String
): ShopifyPaymentsDisputeConnection!
"""The fraud settings of the Shopify Payments account."""
fraudSettings: ShopifyPaymentsFraudSettings!
"""Globally unique identifier."""
id: ID!
"""The notifications settings for the account."""
notificationSettings: ShopifyPaymentsNotificationSettings!
"""Whether the Shopify Payments account can be onboarded."""
onboardable: Boolean!
"""Payout schedule for the account."""
payoutSchedule: ShopifyPaymentsPayoutSchedule!
"""
Descriptor used for payouts.
This is what merchants will see on their bank statement when receiving a payout.
"""
payoutStatementDescriptor: String
"""
All current and previous payouts made between the account and the bank account.
"""
payouts(
"""Filter the direction of the payout."""
transactionType: ShopifyPaymentsPayoutTransactionType
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ShopifyPaymentsPayoutConnection!
"""The permitted documents for identity verification."""
permittedVerificationDocuments: [ShopifyPaymentsVerificationDocument!]!
"""The verifications necessary for this account."""
verifications: [ShopifyPaymentsVerification!]!
}
"""
A bank account that can receive payouts.
"""
type ShopifyPaymentsBankAccount implements Node {
"""
The account number of the bank account.
"""
accountNumber: String!
"""
The last digits of the account number (the rest is redacted).
"""
accountNumberLastDigits: String!
"""
The name of the bank.
"""
bankName: String
"""
The country of the bank.
"""
country: CountryCode!
"""The date that the bank account was created."""
createdAt: DateTime!
"""
The currency of the bank account.
"""
currency: CurrencyCode!
"""Globally unique identifier."""
id: ID!
"""
All current and previous payouts made between the account and the bank account.
"""
payouts(
"""Filter the direction of the payout."""
transactionType: ShopifyPaymentsPayoutTransactionType
"""Returns up to the first `n` elements from the list."""
first: Int
"""Returns the elements that come after the specified cursor."""
after: String
"""Returns up to the last `n` elements from the list."""
last: Int
"""Returns the elements that come before the specified cursor."""
before: String
"""Reverse the order of the underlying list."""
reverse: Boolean = false
): ShopifyPaymentsPayoutConnection!
"""
The routing number of the bank account.
"""
routingNumber: String!
"""
The status of the bank account.
"""
status: ShopifyPaymentsBankAccountStatus!
}
type ShopifyPaymentsBankAccountConnection {
"""A list of edges."""
edges: [ShopifyPaymentsBankAccountEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ShopifyPaymentsBankAccountEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ShopifyPaymentsBankAccountEdge."""
node: ShopifyPaymentsBankAccount!
}
"""The bank account status."""
enum ShopifyPaymentsBankAccountStatus {
"""A bank account that hasn't had any activity and that's not validated."""
NEW
"""It was determined that the bank account exists."""
VALIDATED
"""Bank account validation was successful."""
VERIFIED
"""A payout to the bank account failed."""
ERRORED
}
"""The charge descriptors for a payments account."""
interface ShopifyPaymentsChargeStatementDescriptor {
"""The default charge statement descriptor."""
default: String
"""The prefix of the statement descriptor."""
prefix: String!
}
"""The charge descriptors for a payments account."""
type ShopifyPaymentsDefaultChargeStatementDescriptor implements ShopifyPaymentsChargeStatementDescriptor {
"""The default charge statement descriptor."""
default: String
"""The prefix of the statement descriptor."""
prefix: String!
}
"""
A dispute occurs when a buyer questions the legitimacy of a charge with their financial institution.
"""
type ShopifyPaymentsDispute implements LegacyInteroperability & Node {
"""The total amount disputed by the cardholder."""
amount: MoneyV2!
"""The deadline for evidence submission."""
evidenceDueBy: Date
"""
The date when evidence was sent. Returns null if evidence has not yet been sent.
"""
evidenceSentOn: Date
"""
The date when this dispute was resolved. Returns null if the dispute is not yet resolved.
"""
finalizedOn: Date
"""Globally unique identifier."""
id: ID!
"""The date when this dispute was initiated."""
initiatedAt: DateTime!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The order that contains the charge that is under dispute."""
order: Order
"""The reason of the dispute."""
reasonDetails: ShopifyPaymentsDisputeReasonDetails!
"""The current state of the dispute."""
status: DisputeStatus!
"""
Indicates if this dispute is still in the inquiry phase or has turned into a chargeback.
"""
type: DisputeType!
}
type ShopifyPaymentsDisputeConnection {
"""A list of edges."""
edges: [ShopifyPaymentsDisputeEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ShopifyPaymentsDisputeEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ShopifyPaymentsDisputeEdge."""
node: ShopifyPaymentsDispute!
}
"""The reason for the dispute provided by the cardholder's bank."""
enum ShopifyPaymentsDisputeReason {
"""The cardholder claims that they didnΓÇÖt authorize the payment."""
FRAUDULENT
"""
The dispute is uncategorized, so you should contact the customer for
additional details to find out why the payment was disputed.
"""
GENERAL
"""
The customer doesnΓÇÖt recognize the payment appearing on their card statement.
"""
UNRECOGNIZED
"""
The customer claims they were charged multiple times for the same product or service.
"""
DUPLICATE
"""
The customer claims that you continued to charge them after a subscription was canceled.
"""
SUBSCRIPTION_CANCELLED
"""
The product or service was received but was defective, damaged, or not as described.
"""
PRODUCT_UNACCEPTABLE
"""
The customer claims they did not receive the products or services purchased.
"""
PRODUCT_NOT_RECEIVED
"""
The customer claims that the purchased product was returned or the transaction
was otherwise canceled, but you have not yet provided a refund or credit.
"""
CREDIT_NOT_PROCESSED
"""The customer account associated with the purchase is incorrect."""
INCORRECT_ACCOUNT_DETAILS
"""The customer's bank account has insufficient funds."""
INSUFFICIENT_FUNDS
"""The customer's bank cannot process the charge."""
BANK_CANNOT_PROCESS
"""
The customer's bank cannot proceed with the debit since it has not been authorized.
"""
DEBIT_NOT_AUTHORIZED
"""
The customer initiated the dispute, so you should contact the customer for
additional details to find out why the payment was disputed.
"""
CUSTOMER_INITIATED
}
"""Details regarding a dispute reason."""
type ShopifyPaymentsDisputeReasonDetails {
"""The raw code provided by the payment network."""
networkReasonCode: String
"""The reason for the dispute provided by the cardholder's banks."""
reason: ShopifyPaymentsDisputeReason!
}
"""The fraud settings of a payments account."""
type ShopifyPaymentsFraudSettings {
"""Decline a charge if there is an AVS failure."""
declineChargeOnAvsFailure: Boolean!
"""Decline a charge if there is an CVC failure."""
declineChargeOnCvcFailure: Boolean!
}
"""The charge descriptors for a Japanese payments account."""
type ShopifyPaymentsJpChargeStatementDescriptor implements ShopifyPaymentsChargeStatementDescriptor {
"""The default charge statement descriptor."""
default: String
"""The charge statement descriptor in kana."""
kana: String
"""The charge statement descriptor in kanji."""
kanji: String
"""The prefix of the statement descriptor."""
prefix: String!
}
"""The notification settings for the account."""
type ShopifyPaymentsNotificationSettings {
"""Receive email notifications when new payouts are sent or payouts fail."""
payouts: Boolean!
}
"""
Payouts represent the movement of money between a merchant's Shopify
Payments balance and their bank account.
"""
type ShopifyPaymentsPayout implements LegacyInteroperability & Node {
"""The bank account for the payout."""
bankAccount: ShopifyPaymentsBankAccount!
"""The total amount and currency of the payout."""
gross: MoneyV2! @deprecated(reason: "Use `net` instead")
"""Globally unique identifier."""
id: ID!
"""
The exact time when the payout was issued. The payout only contains
balance transactions that were available at this time.
"""
issuedAt: DateTime!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""The total amount and currency of the payout."""
net: MoneyV2!
"""The transfer status of the payout."""
status: ShopifyPaymentsPayoutStatus!
"""The summary of the payout."""
summary: ShopifyPaymentsPayoutSummary!
"""The direction of the payout."""
transactionType: ShopifyPaymentsPayoutTransactionType!
}
type ShopifyPaymentsPayoutConnection {
"""A list of edges."""
edges: [ShopifyPaymentsPayoutEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type ShopifyPaymentsPayoutEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of ShopifyPaymentsPayoutEdge."""
node: ShopifyPaymentsPayout!
}
"""The interval at which payouts are sent to the connected bank account."""
enum ShopifyPaymentsPayoutInterval {
"""Each business day."""
DAILY
"""Each week, on the day of week specified by weeklyAnchor."""
WEEKLY
"""Each month, on the day of month specified by monthlyAnchor."""
MONTHLY
"""Payouts will not be automatically made."""
MANUAL
}
"""The payment schedule for a payments account."""
type ShopifyPaymentsPayoutSchedule {
"""The interval at which payouts are sent to the connected bank account."""
interval: ShopifyPaymentsPayoutInterval!
"""
The day of the month funds will be paid out.
The value can be any day of the month from the 1st to the 31st.
If the payment interval is set to monthly, this value will be used.
Payouts scheduled between 29-31st of the month are sent on the last day of shorter months.
"""
monthlyAnchor: Int
"""
The day of the week funds will be paid out.
The value can be any weekday from Monday to Friday.
If the payment interval is set to weekly, this value will be used.
"""
weeklyAnchor: DayOfTheWeek
}
"""The transfer status of the payout."""
enum ShopifyPaymentsPayoutStatus {
"""
The payout has been created and had transactions assigned to it, but
it has not yet been submitted to the bank.
"""
SCHEDULED
"""The payout has been submitted to the bank."""
IN_TRANSIT
"""The payout has been successfully deposited into the bank."""
PAID
"""The payout has been declined by the bank."""
FAILED
"""The payout has been canceled by Shopify."""
CANCELED
}
"""
Breakdown of the total fees and gross of each of the different types of transactions associated
with the payout.
"""
type ShopifyPaymentsPayoutSummary {
"""Total fees for all adjustments including disputes."""
adjustmentsFee: MoneyV2!
"""Total gross amount for all adjustments including disputes."""
adjustmentsGross: MoneyV2!
"""Total fees for all charges."""
chargesFee: MoneyV2!
"""Total gross amount for all charges."""
chargesGross: MoneyV2!
"""Total fees for all refunds."""
refundsFee: MoneyV2!
"""Total gross amount for all refunds."""
refundsFeeGross: MoneyV2!
"""Total fees for all reserved funds."""
reservedFundsFee: MoneyV2!
"""Total gross amount for all reserved funds."""
reservedFundsGross: MoneyV2!
"""Total fees for all retried payouts."""
retriedPayoutsFee: MoneyV2!
"""Total gross amount for all retried payouts."""
retriedPayoutsGross: MoneyV2!
}
"""The possible transaction types for a payout."""
enum ShopifyPaymentsPayoutTransactionType {
"""The payout is a deposit."""
DEPOSIT
"""The payout is a withdrawal."""
WITHDRAWAL
}
"""
Each subject (individual) of an account has a verification object giving
information about the verification state.
"""
type ShopifyPaymentsVerification implements Node {
"""Globally unique identifier."""
id: ID!
"""The status of the verification."""
status: ShopifyPaymentsVerificationStatus!
"""The subject/individual who has to be verified."""
subject: ShopifyPaymentsVerificationSubject!
}
"""A document which can be used to verify an individual."""
type ShopifyPaymentsVerificationDocument {
"""True if the back side of the document is required."""
backRequired: Boolean!
"""True if the front side of the document is required."""
frontRequired: Boolean!
"""The type of the document which can be used for verification."""
type: ShopifyPaymentsVerificationDocumentType!
}
"""The types of possible verification documents."""
enum ShopifyPaymentsVerificationDocumentType {
"""The subject's driver's license."""
DRIVERS_LICENSE
"""A government's identification document of the subject."""
GOVERNMENT_IDENTIFICATION
"""The subject's passport."""
PASSPORT
}
"""The status of a verification."""
enum ShopifyPaymentsVerificationStatus {
"""The verification has been verified."""
VERIFIED
"""The verification has not yet been verified."""
UNVERIFIED
"""
The verification request has been submitted but a response has not yet been given.
"""
PENDING
}
"""
The verification subject represents an individual that has to be verified.
"""
type ShopifyPaymentsVerificationSubject {
"""The family name of the individual to verify."""
familyName: String!
"""The given name of the individual to verify."""
givenName: String!
}
"""The set of valid sort keys for the uploadedImages query."""
enum ShopImageSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""Available locale for a shop."""
type ShopLocale {
"""Locale identifier."""
locale: String!
"""Locale name."""
name: String!
"""Whether or not this is the default locale for the shop."""
primary: Boolean!
"""Whether or not the locale is published."""
published: Boolean!
}
"""Return type for `shopLocaleDisable` mutation."""
type ShopLocaleDisablePayload {
"""The locale identifier that was disabled."""
locale: String
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `shopLocaleEnable` mutation."""
type ShopLocaleEnablePayload {
"""The locale that was enabled."""
shopLocale: ShopLocale
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Specifies the input fields for a shop locale.
"""
input ShopLocaleInput {
"""Specifies the publication state of the locale."""
published: Boolean
}
"""Return type for `shopLocaleUpdate` mutation."""
type ShopLocaleUpdatePayload {
"""The locale that was updated."""
shopLocale: ShopLocale
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""
Represents the billing plan of the shop.
"""
type ShopPlan {
"""The name of the shop's billing plan."""
displayName: String!
"""Whether the shop is a partner development shop for testing purposes."""
partnerDevelopment: Boolean!
"""Whether the shop has a Shopify Plus subscription."""
shopifyPlus: Boolean!
}
"""Resource limits of a shop."""
type ShopResourceLimits {
"""Maximum number of locations allowed."""
locationLimit: Int!
"""Maximum number of product options allowed."""
maxProductOptions: Int!
"""Maximum number of variants allowed."""
maxProductVariants: Int!
"""
Whether the shop has reached the limit of the number of URL redirects it can make for resources.
"""
redirectLimitReached: Boolean!
"""
SKU limits. If the shop has unlimited skus the quantity used cannot be retrieved.
"""
skuResourceLimits: ResourceLimit!
}
"""Possible sort of tags."""
enum ShopTagSort {
"""Alphabetical sort."""
ALPHABETICAL
"""Popularity sort."""
POPULAR
}
"""Possible resource type of a template."""
enum ShopTemplateResource {
PRODUCT
GIFT_CARD
}
"""Default image. This parameter is valid when the user has no image."""
enum StaffMemberDefaultImage {
"""Returns a default image."""
DEFAULT
"""Returns a transparent image."""
TRANSPARENT
"""Returns a URL that returns a 404 error if the image is not present."""
NOT_FOUND
}
"""The input fields used to update a staff member."""
input StaffMemberInput {
"""The staff member's email address."""
email: String
"""The staff member's first name."""
firstName: String
"""The staff member's last name."""
lastName: String
"""The staff member's access permissions for the Shopify admin."""
permissions: [StaffMemberPermission!]
}
"""The input fields used to invite a staff member."""
input StaffMemberInviteInput {
"""The staff member's email address."""
email: String!
"""The staff member's first name."""
firstName: String
"""The staff member's last name."""
lastName: String
"""The staff member's access permissions for the Shopify admin."""
permissions: [StaffMemberPermission!]
}
"""Access permissions for staff."""
enum StaffMemberPermission {
"""Viewing/adding Apps."""
APPLICATIONS
"""Viewing/adding Sales Channels."""
CHANNELS
"""Viewing/adding Customers."""
CUSTOMERS
"""Access to Home."""
DASHBOARD
"""Buying/connecting domains to Online Store."""
DOMAINS
"""Viewing/creating Draft Orders."""
DRAFT_ORDERS
"""Full permissions."""
FULL
"""Selling Gift cards."""
GIFT_CARDS
"""Viewing/modifying Online Store navigation."""
LINKS
"""Modifying locations."""
LOCATIONS
"""Viewing/creating Discounts."""
MARKETING
"""Viewing/creating marketing campaigns and performance metrics."""
MARKETING_SECTION
"""
Viewing Orders and Abandoned checkouts. Can still create Draft Orders without this permission.
"""
ORDERS
"""Viewing Analytics Dashboards & Live View."""
OVERVIEWS
"""Viewing/creating Pages and Blog posts on the Online Store."""
PAGES
"""Viewing/modifying account settings."""
PREFERENCES
"""Viewing/creating products, transfers, inventory, and collections."""
PRODUCTS
"""Viewing/creating Reports."""
REPORTS
"""Viewing/modifying Online Store themes."""
THEMES
}
"""Data used to customize the Shopify admin for a logged-in staff member."""
type StaffMemberPrivateData {
"""URL to the user's account settings page."""
accountSettingsUrl: URL!
"""Paginated list of activities."""
activityFeed(
"""Number of activities to return ordered by date descending."""
first: Int!
): ActivityConnection!
"""The date when the user was created."""
createdAt: DateTime!
"""Access permisions for the staff member."""
permissions: [StaffMemberPermission!]!
}
"""Possible HTTP method of a staged upload target."""
enum StagedUploadHttpMethodType {
POST
PUT
}
"""Staged target information."""
type StagedUploadTarget {
"""Parameters of an image to be uploaded."""
parameters: [ImageUploadParameter!]!
"""Image URL."""
url: String!
}
input StagedUploadTargetGenerateInput {
resource: StagedUploadTargetGenerateUploadResource!
filename: String!
mimeType: String!
"""HTTP method to be used by the Staged Upload."""
httpMethod: StagedUploadHttpMethodType = PUT
}
"""Return type for `stagedUploadTargetGenerate` mutation."""
type StagedUploadTargetGeneratePayload {
parameters: [MutationsStagedUploadTargetGenerateUploadParameter!]!
url: String!
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the resource type to receive."""
enum StagedUploadTargetGenerateUploadResource {
TIMELINE
PRODUCT_IMAGE
COLLECTION_IMAGE
SHOP_IMAGE
}
"""Return type for `stagedUploadTargetsGenerate` mutation."""
type StagedUploadTargetsGeneratePayload {
"""The staged upload targets that were generated."""
urls: [StagedUploadTarget!]
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Image to be uploaded."""
input StageImageInput {
"""Image resource."""
resource: StagedUploadTargetGenerateUploadResource!
"""Image filename."""
filename: String!
"""Image MIME type."""
mimeType: String!
"""HTTP method to be used by the Staged Upload."""
httpMethod: StagedUploadHttpMethodType = PUT
}
"""
Token used to delegate unauthenticated access scopes to clients that need to access the unautheticated Storefront API.
"""
type StorefrontAccessToken implements Node {
"""List of permissions associated with the token."""
accessScopes: [AccessScope!]!
"""The issued public access token."""
accessToken: String!
"""The date and time when the public access token was created."""
createdAt: DateTime!
"""Globally unique identifier."""
id: ID!
"""
An arbitrary title for each token determined by the developer, used for reference purposes.
"""
title: String!
"""The date and time when the storefront access token was updated."""
updatedAt: DateTime!
}
type StorefrontAccessTokenConnection {
"""A list of edges."""
edges: [StorefrontAccessTokenEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `storefrontAccessTokenCreate` mutation."""
type StorefrontAccessTokenCreatePayload {
shop: Shop!
storefrontAccessToken: StorefrontAccessToken
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Specifies the input fields to delete a storefront access token."""
input StorefrontAccessTokenDeleteInput {
id: ID!
}
"""Return type for `storefrontAccessTokenDelete` mutation."""
type StorefrontAccessTokenDeletePayload {
deletedStorefrontAccessTokenId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type StorefrontAccessTokenEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of StorefrontAccessTokenEdge."""
node: StorefrontAccessToken!
}
"""Specifies the input fields for a storefront access token."""
input StorefrontAccessTokenInput {
title: String!
}
"""
Represents a unique identifier in the Storefront API. A `StorefrontID` value can
be used wherever an ID is expected in the Storefront API.
Example value: `"Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzEwMDc5Nzg1MTAw"`.
"""
scalar StorefrontID
type StringConnection {
"""A list of edges."""
edges: [StringEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type StringEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of StringEdge."""
node: String!
}
"""Represents a suggested transaction."""
type SuggestedOrderTransaction {
"""The masked account number associated with the payment method."""
accountNumber: String
"""The amount of the transaction."""
amount: Money! @deprecated(reason: "Use `amountSet` instead")
"""The amount on the order transaction in applicable currencies."""
amountSet: MoneyBag!
"""
The human-readable payment gateway name used to process the transaction.
"""
formattedGateway: String
"""The payment gateway used to process the transaction."""
gateway: String
"""Specifies the kind of the suggested order transaction."""
kind: SuggestedOrderTransactionKind!
"""
Specifies the available amount to refund on the gateway. Only available within SuggestedRefund.
"""
maximumRefundable: Money @deprecated(reason: "Use `maximumRefundableSet` instead")
"""
Specifies the available amount to refund on the gateway in shop and
presentment currencies. Only available within SuggestedRefund.
"""
maximumRefundableSet: MoneyBag
"""
The associated parent transaction, for example the authorization of a capture.
"""
parentTransaction: OrderTransaction
}
"""Specifies the kind of the suggested order transaction."""
enum SuggestedOrderTransactionKind {
"""A suggested refund transaction for an order."""
SUGGESTED_REFUND
}
"""
Represents the suggested refund to be submitted based on the items being returned.
"""
type SuggestedRefund {
"""The total monetary value to be refunded."""
amount: Money! @deprecated(reason: "Use `amountSet` instead")
"""
The total monetary value to be refunded in shop and presentment currencies.
"""
amountSet: MoneyBag!
"""The sum of all the discounted prices of the line items being refunded."""
discountedSubtotalSet: MoneyBag!
"""The total monetary value available to refund."""
maximumRefundable: Money! @deprecated(reason: "Use `maximumRefundableSet` instead")
"""
The total monetary value available to refund in shop and presentment currencies.
"""
maximumRefundableSet: MoneyBag!
"""Array of returned line items."""
refundLineItems: [RefundLineItem!]!
"""Refund details for shipping costs paid by customer."""
shipping: ShippingRefund!
"""The sum of all the prices of the line items being refunded."""
subtotal: Money! @deprecated(reason: "Use `subtotalSet` instead")
"""
The sum of all the prices of the line items being refunded in shop and presentment currencies.
"""
subtotalSet: MoneyBag!
"""Array of SuggestedOrderTransaction items."""
suggestedTransactions: [SuggestedOrderTransaction!]!
"""
The total cart discount amount that was applied to all line items in this refund.
"""
totalCartDiscountAmountSet: MoneyBag!
"""
The sum of all the taxes being refunded from the order (must be positive) in shop and presentment currencies.
"""
totalTaxSet: MoneyBag!
"""
The sum of all the taxes being refunded from the order (must be positive).
"""
totalTaxes: Money! @deprecated(reason: "Use `totalTaxSet` instead")
}
"""Return type for `tagsAdd` mutation."""
type TagsAddPayload {
"""The object that was updated."""
node: Node
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Return type for `tagsRemove` mutation."""
type TagsRemovePayload {
"""The object that was updated."""
node: Node
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
"""Available customer tax exemptions."""
enum TaxExemption {
"""
This customer is exempt from specific taxes for holding a valid STATUS_CARD_EXEMPTION in Canada.
"""
CA_STATUS_CARD_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in British Columbia.
"""
CA_BC_RESELLER_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Manitoba.
"""
CA_MB_RESELLER_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Saskatchewan.
"""
CA_SK_RESELLER_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid DIPLOMAT_EXEMPTION in Canada.
"""
CA_DIPLOMAT_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in British Columbia.
"""
CA_BC_COMMERCIAL_FISHERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Manitoba.
"""
CA_MB_COMMERCIAL_FISHERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Nova Scotia.
"""
CA_NS_COMMERCIAL_FISHERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Prince Edward Island.
"""
CA_PE_COMMERCIAL_FISHERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Saskatchewan.
"""
CA_SK_COMMERCIAL_FISHERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in British Columbia.
"""
CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in Saskatchewan.
"""
CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in British Columbia.
"""
CA_BC_SUB_CONTRACTOR_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in Saskatchewan.
"""
CA_SK_SUB_CONTRACTOR_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in British Columbia.
"""
CA_BC_CONTRACTOR_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in Saskatchewan.
"""
CA_SK_CONTRACTOR_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid PURCHASE_EXEMPTION in Ontario.
"""
CA_ON_PURCHASE_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Manitoba.
"""
CA_MB_FARMER_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Nova Scotia.
"""
CA_NS_FARMER_EXEMPTION
"""
This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Saskatchewan.
"""
CA_SK_FARMER_EXEMPTION
}
"""
Represents the information about the tax charged on the associated line item.
"""
type TaxLine {
"""The amount of tax to be charged."""
price: Money! @deprecated(reason: "Use `priceSet` instead")
"""The amount of tax to be charged in shop and presentment currencies."""
priceSet: MoneyBag!
"""The tax rate to be applied."""
rate: Float
"""The percentage of the price that the tax rate represents."""
ratePercentage: Float
"""The name of the tax."""
title: String!
}
"""
A tender transaction represents a transaction which modifies the shop's balance.
"""
type TenderTransaction implements Node {
"""The amount and currency of the tender transaction."""
amount: MoneyV2!
"""Globally unique identifier."""
id: ID!
"""Information about the payment method used for this transaction."""
paymentMethod: String
"""Date and time when the transaction was processed."""
processedAt: DateTime
"""The remote gateway reference associated with the tender transaction."""
remoteReference: String
"""Whether the transaction is a test transaction."""
test: Boolean!
"""Information about the payment instrument used for this transaction."""
transactionDetails: TenderTransactionDetails
}
type TenderTransactionConnection {
"""A list of edges."""
edges: [TenderTransactionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Information about the credit card used for this transaction."""
type TenderTransactionCreditCardDetails {
"""The name of the company that issued the customer's credit card."""
creditCardCompany: String
"""
The customer's credit card number, with most of the leading digits redacted.
"""
creditCardNumber: String
}
"""Information about the payment instrument used for this transaction."""
union TenderTransactionDetails = TenderTransactionCreditCardDetails
type TenderTransactionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of TenderTransactionEdge."""
node: TenderTransaction!
}
"""Specifies the fields for tracking information."""
input TrackingInfoInput {
"""The tracking number of the fulfillment."""
number: String
"""The URL to track the fulfillment."""
url: String
}
"""Specifies all possible fields for updating tracking information."""
input TrackingInfoUpdateInput {
"""
Tracking information consisting of one or more tracking URLs and numbers associated with the fulfillment.
"""
trackingDetails: [TrackingInfoInput!]
"""The name of the tracking company."""
trackingCompany: String
"""
Indicates whether the customer will be notified of this update and future updates for this fulfillment.
"""
notifyCustomer: Boolean
}
"""Translatable content of a resource's field."""
type TranslatableContent {
"""Digest (hash) of the content."""
digest: String
"""Content key."""
key: String!
"""Content locale."""
locale: String!
"""Content value."""
value: String
}
"""A resource that has translatable fields."""
type TranslatableResource {
"""GID of the resource."""
resourceId: ID!
"""Translatable content."""
translatableContent: [TranslatableContent!]!
"""Translatable content translations."""
translations(
"""Filters translations by locale."""
locale: String!
"""Filters by outdated translations."""
outdated: Boolean
): [Translation!]!
}
type TranslatableResourceConnection {
"""A list of edges."""
edges: [TranslatableResourceEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
type TranslatableResourceEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of TranslatableResourceEdge."""
node: TranslatableResource!
}
"""Specifies the type of resources that are translatable."""
enum TranslatableResourceType {
"""Represents a product."""
PRODUCT
"""Represents a product variant."""
PRODUCT_VARIANT
"""Represents an email template."""
EMAIL_TEMPLATE
"""Represents an online store theme."""
ONLINE_STORE_THEME
"""Represents an article."""
ONLINE_STORE_ARTICLE
"""Represents an online store blog."""
ONLINE_STORE_BLOG
"""Represents an online store page."""
ONLINE_STORE_PAGE
"""Represents a collection of products."""
COLLECTION
"""Represents a link to direct users to."""
LINK
"""Represents a metafield that has been whitelisted for Storefront API."""
METAFIELD
"""Represents an SMS template."""
SMS_TEMPLATE
"""Represents a shop."""
SHOP
"""Represents a shop policy."""
SHOP_POLICY
"""Represents a payment gateway."""
PAYMENT_GATEWAY
"""
Represents a custom product property name like "Size", "Color", and "Material".
"""
PRODUCT_OPTION
}
"""Translation of a field of a resource."""
type Translation {
"""Translation key."""
key: String!
"""Translation locale."""
locale: String!
"""Marked as outdated."""
outdated: Boolean!
"""Translation value."""
value: String
}
"""Possible error codes that could be returned by a translation mutation."""
enum TranslationErrorCode {
"""Input value is blank."""
BLANK
"""Input value is invalid."""
INVALID
"""Resource does not exist."""
RESOURCE_NOT_FOUND
"""Too many translation keys for resource."""
TOO_MANY_KEYS_FOR_RESOURCE
"""Translation key is invalid."""
INVALID_KEY_FOR_MODEL
"""Translation value is invalid."""
FAILS_RESOURCE_VALIDATION
"""Translatable content is invalid."""
INVALID_TRANSLATABLE_CONTENT
"""Locale language code is invalid."""
INVALID_CODE
"""Locale code format is invalid."""
INVALID_FORMAT
}
"""
Provides the fields and values to use when creating or updating a translation.
"""
input TranslationInput {
"""The locale of the translation."""
locale: String!
"""The key of the translation."""
key: String!
"""The value of the translation."""
value: String!
"""The digest (hash) of the content being translated."""
translatableContentDigest: String!
}
"""Return type for `translationsRegister` mutation."""
type TranslationsRegisterPayload {
"""The translations that were created or updated."""
translations: [Translation!]
"""List of errors that occurred executing the mutation."""
userErrors: [TranslationUserError!]!
}
"""Return type for `translationsRemove` mutation."""
type TranslationsRemovePayload {
"""The translations that were deleted."""
translations: [Translation!]
"""List of errors that occurred executing the mutation."""
userErrors: [TranslationUserError!]!
}
"""
Represents an error that happens during the execution of a translation mutation.
"""
type TranslationUserError implements DisplayableError {
"""Error code to uniquely identify the error."""
code: TranslationErrorCode
"""Path to the input field which caused the error."""
field: [String!]
"""The error message."""
message: String!
}
"""Systems of weights and measures."""
enum UnitSystem {
"""Imperial system of weights and measures."""
IMPERIAL_SYSTEM
"""Metric system of weights and measures."""
METRIC_SYSTEM
}
"""Possible strategies for handling unprotected orders."""
enum UnprotectedOrderAction {
"""Automatically cancel unprotected orders."""
AUTO_CANCEL_UNPROTECTED_ORDERS @deprecated(reason: "No longer supported.")
"""Automatically capture unprotected orders."""
AUTO_CAPTURE_UNPROTECTED_ORDERS
"""Take no special action for unprotected orders."""
NO_ACTION_FOR_UNPROTECTED_ORDERS
"""Action has not been set because Fraud Protect is not enabled."""
NOT_SET
}
"""
An unsigned 64-bit integer. Represents whole numeric values between 0 and 2^64 - 1 encoded as a string of base-10 digits.
Example value: `"50"`.
"""
scalar UnsignedInt64
"""
An RFC 3986 and RFC 3987 compliant URI string.
Example value: `"https://johns-apparel.myshopify.com"`.
"""
scalar URL
"""Represents an error in the input of a mutation."""
type UserError implements DisplayableError {
"""Path to the input field which caused the error."""
field: [String!]
"""The error message."""
message: String!
}
"""
Time between UTC time and a location's observed time, in the format `"+HH:MM"` or `"-HH:MM"`.
Example value: `"-07:00"`.
"""
scalar UtcOffset
"""
Specifies the
[Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters)
that are associated with a related marketing campaign.
"""
input UTMInput {
"""The name of the UTM campaign."""
campaign: String!
"""The name of the website or application where the referral link exists."""
source: String!
"""The UTM campaign medium."""
medium: String!
}
type UTMParameters {
campaign: String
content: String
medium: String
source: String
term: String
}
"""
Represents a subscription to a webhook.
"""
type WebhookSubscription implements Node & LegacyInteroperability {
"""
URL where the webhook subscription should send the POST request when the event occurs.
"""
callbackUrl: URL!
"""The date and time when the webhook subscription was created."""
createdAt: DateTime!
"""The format in which the webhook subscription should send the data."""
format: WebhookSubscriptionFormat!
"""Globally unique identifier."""
id: ID!
"""The list of fields to be included in the webhook subscription."""
includeFields: [String!]!
"""The ID of the corresponding resource in the REST Admin API."""
legacyResourceId: UnsignedInt64!
"""
The list of namespaces for any metafields that should be included in the webhook subscription.
"""
metafieldNamespaces: [String!]!
"""The type of event that triggers the webhook."""
topic: WebhookSubscriptionTopic!
"""The date and time when the webhook subscription was updated."""
updatedAt: DateTime!
}
type WebhookSubscriptionConnection {
"""A list of edges."""
edges: [WebhookSubscriptionEdge!]!
"""Information to aid in pagination."""
pageInfo: PageInfo!
}
"""Return type for `webhookSubscriptionCreate` mutation."""
type WebhookSubscriptionCreatePayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
"""The webhook subscription that was created."""
webhookSubscription: WebhookSubscription
}
"""Return type for `webhookSubscriptionDelete` mutation."""
type WebhookSubscriptionDeletePayload {
"""The ID of the deleted webhook subscription."""
deletedWebhookSubscriptionId: ID
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
}
type WebhookSubscriptionEdge {
"""A cursor for use in pagination."""
cursor: String!
"""The item at the end of WebhookSubscriptionEdge."""
node: WebhookSubscription!
}
"""The supported formats for webhook subscriptions."""
enum WebhookSubscriptionFormat {
JSON
XML
}
"""
Specifies the input fields for a webhook subscription.
"""
input WebhookSubscriptionInput {
"""
URL where the webhook subscription should send the POST request when the event occurs.
"""
callbackUrl: URL
"""The format in which the webhook subscription should send the data."""
format: WebhookSubscriptionFormat
"""The list of fields to be included in the webhook subscription."""
includeFields: [String!]
"""
The list of namespaces for any metafields that should be included in the webhook subscription.
"""
metafieldNamespaces: [String!]
}
"""The set of valid sort keys for the webhookSubscriptions query."""
enum WebhookSubscriptionSortKeys {
"""Sort by the `created_at` value."""
CREATED_AT
"""Sort by the `id` value."""
ID
"""
During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
results by relevance to the search term(s). When no search query is specified, this sort key is not
deterministic and should not be used.
"""
RELEVANCE
}
"""The supported topics for webhook subscriptions."""
enum WebhookSubscriptionTopic {
"""The webhook topic for `app/uninstalled` events."""
APP_UNINSTALLED
"""The webhook topic for `carts/create` events."""
CARTS_CREATE
"""The webhook topic for `carts/update` events."""
CARTS_UPDATE
"""The webhook topic for `channels/delete` events."""
CHANNELS_DELETE
"""The webhook topic for `checkouts/create` events."""
CHECKOUTS_CREATE
"""The webhook topic for `checkouts/delete` events."""
CHECKOUTS_DELETE
"""The webhook topic for `checkouts/update` events."""
CHECKOUTS_UPDATE
"""The webhook topic for `collection_listings/add` events."""
COLLECTION_LISTINGS_ADD
"""The webhook topic for `collection_listings/remove` events."""
COLLECTION_LISTINGS_REMOVE
"""The webhook topic for `collection_listings/update` events."""
COLLECTION_LISTINGS_UPDATE
"""The webhook topic for `collection_publications/create` events."""
COLLECTION_PUBLICATIONS_CREATE
"""The webhook topic for `collection_publications/delete` events."""
COLLECTION_PUBLICATIONS_DELETE
"""The webhook topic for `collection_publications/update` events."""
COLLECTION_PUBLICATIONS_UPDATE
"""The webhook topic for `collections/create` events."""
COLLECTIONS_CREATE
"""The webhook topic for `collections/delete` events."""
COLLECTIONS_DELETE
"""The webhook topic for `collections/update` events."""
COLLECTIONS_UPDATE
"""The webhook topic for `customer_groups/create` events."""
CUSTOMER_GROUPS_CREATE
"""The webhook topic for `customer_groups/delete` events."""
CUSTOMER_GROUPS_DELETE
"""The webhook topic for `customer_groups/update` events."""
CUSTOMER_GROUPS_UPDATE
"""The webhook topic for `customers/create` events."""
CUSTOMERS_CREATE
"""The webhook topic for `customers/delete` events."""
CUSTOMERS_DELETE
"""The webhook topic for `customers/disable` events."""
CUSTOMERS_DISABLE
"""The webhook topic for `customers/enable` events."""
CUSTOMERS_ENABLE
"""The webhook topic for `customers/update` events."""
CUSTOMERS_UPDATE
"""The webhook topic for `disputes/create` events."""
DISPUTES_CREATE
"""The webhook topic for `disputes/update` events."""
DISPUTES_UPDATE
"""The webhook topic for `draft_orders/create` events."""
DRAFT_ORDERS_CREATE
"""The webhook topic for `draft_orders/delete` events."""
DRAFT_ORDERS_DELETE
"""The webhook topic for `draft_orders/update` events."""
DRAFT_ORDERS_UPDATE
"""The webhook topic for `fulfillment_events/create` events."""
FULFILLMENT_EVENTS_CREATE
"""The webhook topic for `fulfillment_events/delete` events."""
FULFILLMENT_EVENTS_DELETE
"""The webhook topic for `fulfillments/create` events."""
FULFILLMENTS_CREATE
"""The webhook topic for `fulfillments/update` events."""
FULFILLMENTS_UPDATE
"""The webhook topic for `attributed_sessions/first` events."""
ATTRIBUTED_SESSIONS_FIRST
"""The webhook topic for `attributed_sessions/last` events."""
ATTRIBUTED_SESSIONS_LAST
"""The webhook topic for `order_transactions/create` events."""
ORDER_TRANSACTIONS_CREATE
"""The webhook topic for `orders/cancelled` events."""
ORDERS_CANCELLED
"""The webhook topic for `orders/create` events."""
ORDERS_CREATE
"""The webhook topic for `orders/delete` events."""
ORDERS_DELETE
"""The webhook topic for `orders/fulfilled` events."""
ORDERS_FULFILLED
"""The webhook topic for `orders/paid` events."""
ORDERS_PAID
"""The webhook topic for `orders/partially_fulfilled` events."""
ORDERS_PARTIALLY_FULFILLED
"""The webhook topic for `orders/updated` events."""
ORDERS_UPDATED
"""The webhook topic for `product_listings/add` events."""
PRODUCT_LISTINGS_ADD
"""The webhook topic for `product_listings/remove` events."""
PRODUCT_LISTINGS_REMOVE
"""The webhook topic for `product_listings/update` events."""
PRODUCT_LISTINGS_UPDATE
"""The webhook topic for `product_publications/create` events."""
PRODUCT_PUBLICATIONS_CREATE
"""The webhook topic for `product_publications/delete` events."""
PRODUCT_PUBLICATIONS_DELETE
"""The webhook topic for `product_publications/update` events."""
PRODUCT_PUBLICATIONS_UPDATE
"""The webhook topic for `products/create` events."""
PRODUCTS_CREATE
"""The webhook topic for `products/delete` events."""
PRODUCTS_DELETE
"""The webhook topic for `products/update` events."""
PRODUCTS_UPDATE
"""The webhook topic for `refunds/create` events."""
REFUNDS_CREATE
"""The webhook topic for `shipping_addresses/create` events."""
SHIPPING_ADDRESSES_CREATE
"""The webhook topic for `shipping_addresses/update` events."""
SHIPPING_ADDRESSES_UPDATE
"""The webhook topic for `shop/update` events."""
SHOP_UPDATE
"""The webhook topic for `tax_services/create` events."""
TAX_SERVICES_CREATE
"""The webhook topic for `tax_services/update` events."""
TAX_SERVICES_UPDATE
"""The webhook topic for `themes/create` events."""
THEMES_CREATE
"""The webhook topic for `themes/delete` events."""
THEMES_DELETE
"""The webhook topic for `themes/publish` events."""
THEMES_PUBLISH
"""The webhook topic for `themes/update` events."""
THEMES_UPDATE
"""The webhook topic for `variants/in_stock` events."""
VARIANTS_IN_STOCK
"""The webhook topic for `variants/out_of_stock` events."""
VARIANTS_OUT_OF_STOCK
"""The webhook topic for `inventory_levels/connect` events."""
INVENTORY_LEVELS_CONNECT
"""The webhook topic for `inventory_levels/update` events."""
INVENTORY_LEVELS_UPDATE
"""The webhook topic for `inventory_levels/disconnect` events."""
INVENTORY_LEVELS_DISCONNECT
"""The webhook topic for `attribution/risk` events."""
ATTRIBUTION_RISK
"""The webhook topic for `inventory_items/create` events."""
INVENTORY_ITEMS_CREATE
"""The webhook topic for `inventory_items/update` events."""
INVENTORY_ITEMS_UPDATE
"""The webhook topic for `inventory_items/delete` events."""
INVENTORY_ITEMS_DELETE
"""The webhook topic for `locations/create` events."""
LOCATIONS_CREATE
"""The webhook topic for `locations/update` events."""
LOCATIONS_UPDATE
"""The webhook topic for `locations/delete` events."""
LOCATIONS_DELETE
"""The webhook topic for `tender_transactions/create` events."""
TENDER_TRANSACTIONS_CREATE
"""The webhook topic for `app_purchases_one_time/update` events."""
APP_PURCHASES_ONE_TIME_UPDATE
"""The webhook topic for `app_subscriptions/update` events."""
APP_SUBSCRIPTIONS_UPDATE
"""The webhook topic for `locales/create` events."""
LOCALES_CREATE
"""The webhook topic for `locales/update` events."""
LOCALES_UPDATE
}
"""Return type for `webhookSubscriptionUpdate` mutation."""
type WebhookSubscriptionUpdatePayload {
"""List of errors that occurred executing the mutation."""
userErrors: [UserError!]!
"""The webhook subscription that was updated."""
webhookSubscription: WebhookSubscription
}
"""Represents weight unit and value."""
type Weight {
"""Unit of measurement for `value`."""
unit: WeightUnit!
"""The weight using the unit system specified with `unit`."""
value: Float!
}
"""
Specifies the weight unit and value inputs.
"""
input WeightInput {
"""The weight value using the unit system specified with `weight_unit`."""
value: Float!
"""Unit of measurement for `value`."""
unit: WeightUnit!
}
"""Units of measurement for weight."""
enum WeightUnit {
"""1 kilogram equals 1000 grams."""
KILOGRAMS
"""Metric system unit of mass."""
GRAMS
"""1 pound equals 16 ounces."""
POUNDS
"""Imperial system unit of mass."""
OUNCES
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment