2024-10 release notes (Release candidate)
Release date | Date version is no longer supported |
---|---|
October 1, 2024 | October 1, 2025 |
Breaking changes
Anchor link to section titled "Breaking changes"These changes require special attention. If your app uses these API resources, and you don’t adjust your usage of the resources according to the following instructions, then your app might break when you update to this API version.
Changed enum value for OrderDisplayFulfillmentStatus
Anchor link to section titled "Changed enum value for OrderDisplayFulfillmentStatus"The OrderDisplayFulfillmentStatus
enum now returns a REQUEST_DECLINED
value for an order that has had its fulfillment request rejected by a third-party fulfillment service. In API versions prior to 2024-10, orders in this state return an UNFULFILLED
status.
Fulfillment holds
Anchor link to section titled "Fulfillment holds"We've deprecated the GREATER_THAN_ZERO
and INVALID_LINE_ITEM_QUANTITY
error codes on the fulfillmentOrderReleaseHold
mutation.
We've also added the heldByRequestingApp
field to the FulfillmentHold
object. As of API version 2024-10, you'll only be able to read the heldBy
field on the FulfillmentHold
object if you have the read_apps
scope enabled on your app. Use the heldByRequestingApp
field instead if you need to confirm whether your app created the fulfillment hold.
Additionally, the fulfillmentOrderHold
mutation now returns the fulfillment hold that was created in a new fulfillmentHold
return field.
Location error codes
Anchor link to section titled "Location error codes"We've removed the HAS_OPEN_TRANSFERS_ERROR
and FAILED_TO_RELOCATE_OPEN_TRANSFERS
error codes from the LocationDeactivateUserErrorCode
enum. If you're explicitly checking for either of these error codes in your app, then you should remove references to them.
Metafield definitions
Anchor link to section titled "Metafield definitions"We've deprecated the visibleToStorefrontApi
argument on the standardMetafieldDefinitionEnable
and standardMetafieldDefinitionsEnable
. Use the access
argument on these mutations instead.
The access
argument allows you to specify more granular access controls when enabling a standard metafield definition template.
Metafield storefront visibility
Anchor link to section titled "Metafield storefront visibility"We've removed several MetafieldStorefrontVisibility
-related objects, mutations, queries, and fields:
Name | Type | Change |
---|---|---|
MetafieldStorefrontVisibility |
Object | Removed. Use the access field on the MetafieldDefinition object instead. |
metafieldStorefrontVisibilityCreate |
Mutation | Removed. Use the metafieldDefinitionUpdate mutation instead. |
metafieldStorefrontVisibilityDelete |
Mutation | Removed. Use the metafieldDefinitionUpdate mutation instead. |
metafieldStorefrontVisibilities |
Query | Removed. Use the access field on the MetafieldDefinition object instead. |
metafieldStorefrontVisibility |
Query | Removed. Use the access field on the MetafieldDefinition object instead. |
visibleToStorefrontApi field |
MetafieldDefinition object |
Removed. Use the access field on the MetafieldDefinition object instead. |
visibleToStorefrontApi field |
MetafieldDefinitionInput input object |
Removed. Use the access field on the MetafieldDefinitionInput input object instead. |
visibleToStorefrontApi field |
MetafieldDefinitionUpdateInput input object |
Removed. Use the access field on the MetafieldDefinitionUpdateInput input object instead. |
Order line items
Anchor link to section titled "Order line items"We've removed the lineItemsMutable
connection on the Order
object. Use the lineItems
connection on the Order
object instead.
Pickup locations
Anchor link to section titled "Pickup locations"You can now use the destination
field on the fulfillmentOrder
object to retrieve the pickup location for a fulfillment order.
As of API version 2024-10, the destination
field returns a FulfillmentOrderDestination
object instead of null
for fulfillment orders that don't have an associated shipping address. If the fulfillment order doesn't have a shipping address, then the address-related fields within the FulfillmentOrderDestination
object are set to null
.
PriceRule types removed
Anchor link to section titled "PriceRule types removed"As of API version 2024-10, we've removed PriceRule
types from the GraphQL Admin API. The associated queries and mutations have been deprecated since API version 2023-03. Use the discountNode
query instead.
The following types have been removed:
PriceRuleUserError
objectPriceRuleCustomerSelectionInput
input objectPriceRuleDiscountCodeInput
input objectPriceRuleEntitlementToPrerequisiteQuantityRatioInput
input objectPriceRuleInput
input objectPriceRuleItemEntitlementsInput
input objectPriceRuleItemPrerequisitesInput
input objectPriceRuleMoneyRangeInput
input objectPriceRulePrerequisiteToEntitlementQuantityRatioInput
input objectPriceRuleQuantityRangeInput
input objectPriceRuleShippingEntitlementsInput
input objectPriceRuleValidityPeriodInput
input objectPriceRuleValueInput
input objectpriceRuleSavedSearches
queryPriceRuleActivate
mutationPriceRuleCreate
mutationPriceRuleDeactivate
mutationPriceRuleDelete
mutationPriceRuleDiscountCodeCreate
mutationPriceRuleDiscountCodeUpdate
mutationPriceRuleUpdate
mutationpriceRule
field on theQueryRoot
objectpriceRules
connection on theQueryRoot
objectpriceRules
connection on theShop
objectpriceRuleSavedSearches
connection on theShop
object
Product duplications
Anchor link to section titled "Product duplications"The productDuplicateAsyncV2
mutation has been removed. We've added the synchronous
argument to the productDuplicate
mutation, allowing you to choose whether the product duplication should be processed synchronously or asynchronously.
- Asynchronous duplication: By setting the
synchronous
field tofalse
in theproductDuplicate
mutation, the operation operates asynchronously, and returns aProductDuplicateOperation
object. - Operation tracking: You can track the status of the asynchronous duplication by querying the operation ID through the
productOperation
query.
Product media
Anchor link to section titled "Product media"We've made changes to how you work with product media by replacing the current media ID inputs with file inputs and expanding media capabilities:
The
mediaIds
field on theProductSetInput
input object has been removed. Use thefiles
field instead to associate files to a product.The
mediaId
field on theProductVariantSetInput
input object has been removed. Use thefile
field instead to associate a file with the product variant.The
FileSetInput
input object is now available for working with existing media and creating new files. This input object is a derivative of theFileCreateInput
input object, with an addedid
field.
Product mutations
Anchor link to section titled "Product mutations"We've removed the following deprecated product mutations from the GraphQL Admin API:
productAppendImages
is removed. Use theproductCreateMedia
mutation instead.productDeleteImages
is removed. Use theproductDeleteMedia
mutation instead.productImageUpdate
is removed. Use theproductDeleteMedia
. Use theproductUpdateMedia
mutation instead.productReorderImages
is removed. Use theproductReorderMedia
mutation instead.
Product variant mutations
Anchor link to section titled "Product variant mutations"We've deprecated the following singular product variant mutations in favor of their equivalent bulk versions:
productVariantCreate
is deprecated. Use theproductVariantsBulkCreate
mutation instead.productVariantUpdate
is deprecated. Use theproductVariantsBulkUpdate
mutation instead.productVariantDelete
is deprecated. Use theproductVariantsBulkDelete
mutation instead.
ProductImage value removed
Anchor link to section titled "ProductImage value removed"The PRODUCTIMAGE
value has been removed from the MetafieldOwnerType
enum. Use MEDIA_IMAGE
instead.
ProductInput fields removed
Anchor link to section titled "ProductInput fields removed"We've removed the following deprecated ProductInput
fields from the GraphQL Admin API:
bodyHTML
is removed. Use thedescriptionHtml
field instead.privateMetaFields
is removed. Use theproductOptions
field instead.standardizedProductType
is removed. Use thecategory
field instead.productCategory
is removed. Use thecategory
field instead.customProductType
is removed. Use thecategory
field instead.
Reverse fulfillment orders
Anchor link to section titled "Reverse fulfillment orders"The reverseDeliveryDispose
mutation is deprecated. Use the reverseFulfillmentOrderDispose
mutation instead.
The fulfillmentLineItem
field on the ReverseFulfillmentOrderLineItem
object is now nullable. A ReverseFulfillmentOrderLineItem
object won't always be associated with a FulfillmentLineItem
object. The non-null fulfillmentLineItem
field on API versions prior to 2024-10 returns an error when the fulfillment line item doesn't exist.
Learn more about managing reverse fulfillment orders.
Setting available inventory quantity
Anchor link to section titled "Setting available inventory quantity"We've deprecated the ability to set the available quantity on the inventoryActivate
mutation for inventory items that are already in an active state. Use the inventorySetQuantities
mutation instead.
We've also added the INVALID_QUANTITY_TOO_LOW
value to the InventorySetQuantitiesUserErrorCode
enum. The error code is returned if you run the inventorySetQuantities
mutation and a quantity is less than negative one billion.
GraphQL Admin API changes
Anchor link to section titled "GraphQL Admin API changes"The following changes are introduced in the 2024-10 version of the GraphQL Admin API.
Abandoned checkouts
We've added new types that are associated with the AbandonedCheckout
object. This object replaces the Abandoned checkouts
resource in the REST Admin API.
The following new types are available:
Name | Type | Change |
---|---|---|
UnitPriceMeasurement |
Object | Added |
abandonedCheckouts |
Query | Added |
abandonedCheckoutsCount |
Query | Added |
totalWeight |
Field | Added to AbandonedCheckout object |
referringSite |
Field | Added to AbandonedCheckout object |
landingSite |
Field | Added to AbandonedCheckout object |
gateway |
Field | Added to AbandonedCheckout object |
currencyCode |
Field | Added to AbandonedCheckout object |
presentmentCurrencyCode |
Field | Added to AbandonedCheckout object |
token |
Field | Added to AbandonedCheckout object |
cartToken |
Field | Added to AbandonedCheckout object |
customAttributes |
Field | Added to AbandonedCheckout object |
note |
Field | Added to AbandonedCheckout object |
totalLineItemsPriceSet |
Field | Added to AbandonedCheckout object |
subtotalPriceSet |
Field | Added to AbandonedCheckout object |
discountCodes |
Field | Added to AbandonedCheckout object |
totalDiscountSet |
Field | Added to AbandonedCheckout object |
totalTaxSet |
Field | Added to AbandonedCheckout object |
totalDutiesSet |
Field | Added to AbandonedCheckout object |
taxLines |
Field | Added to AbandonedCheckout object |
taxesIncluded |
Field | Added to AbandonedCheckout object |
closedAt |
Field | Added to AbandonedCheckout object |
completedAt |
Field | Added to AbandonedCheckout object |
updatedAt |
Field | Added to AbandonedCheckout object |
createdAt |
Field | Added to AbandonedCheckout object |
shippingLines |
Field | Added to AbandonedCheckout object |
billingAddress |
Field | Added to AbandonedCheckout object |
shippingAddress |
Field | Added to AbandonedCheckout object |
customer |
Field | Added to AbandonedCheckout object |
name |
Field | Added to AbandonedCheckout object |
AbandonedCheckoutShippingLine |
Object | Added |
taxLines |
Field | Added to AbandonedCheckoutLineItem object |
discountAllocations |
Field | Added to AbandonedCheckoutLineItem object |
requiresShipping |
Field | Added to AbandonedCheckoutLineItem object |
weight |
Field | Added to AbandonedCheckoutLineItem object |
fulfillmentService |
Field | Added to AbandonedCheckoutLineItem object |
presentmentVariantTitle |
Field | Added to AbandonedCheckoutLineItem object |
presentmentTitle |
Field | Added to AbandonedCheckoutLineItem object |
source |
Field | Added to TaxLines object |
unitPriceMeasurement |
Field | Added to ProductVariant object |
App scopes webhook topic
Apps can now subscribe to the app/scopes_update
webhook topic. This webhook is triggered when the granted access scopes for the installed app on a shop have been modified. It allows apps to keep track of the granted access scopes of their installations.
Automatic app discounts
We've added the recurringCycleLimit
and appliesOnSubscription
fields on the DiscountAutomaticApp
object and DiscountAutomaticAppInput
input object.
The fields enable merchants to use automatic app discounts for subscriptions, and apply the discounts for a pre-determined number of cycles. Developers can use the fields in their automatic app discount functions.
Business entities
Large merchants with an established international presence need to be able to specify which of their business entities handles sales for a given buyer context. You can now use the GraphQL Admin API to query fields related to the business entities that are enabled on a store.
The following new types are available:
Name | Type | Change |
---|---|---|
businessEntities |
Query | Added |
businessEntity |
Query | Added |
BusinessEntity |
Object | Added |
BusinessEntityAddress |
Object | Added |
businessEntity |
Field | Added to Payout object |
merchantBusinessEntity |
Field | Added to Order object |
Cart and checkout validations
We've added the MAX_VALIDATIONS_ACTIVATED
error code to the ValidationUserErrorCode
enum. The error code is returned when your app exceeds the maximum of five validation functions in checkout.
Cash transactions on POS
We've added the totalCashRoundingAdjustment
field to the Order
object, which allows you to query the total rounding adjustment applied on cash payments or refund transactions in an order on Point of Sale (POS).
Cash transactions on POS are now automatically rounded to the nearest denominations for the some currencies and countries, like CAD (Canada), AUD (Australia), NZD (New Zealand), EUR (Switzerland, Belgium, Finland), DKK (Denmark), Sweden (SEK) and Norway (NOK).
Changed enum value for OrderDisplayFulfillmentStatus
The OrderDisplayFulfillmentStatus
enum now returns a REQUEST_DECLINED
value for an order that has had its fulfillment request rejected by a third-party fulfillment service. In API versions prior to 2024-10, orders in this state return an UNFULFILLED
status.
Company location staff members
We've added the CompanyLocationStaffMemberAssignment
object, which allows you to retrieve staff members assigned to a company location.
You can assign and remove staff members for a company location using the CompanyLocationAssignStaffMembers
and CompanyLocationRemoveStaffMembers
mutations.
Customer payment methods
We've added the FAILED_TO_RETRIEVE_BILLING_ADDRESS
value on the CustomerPaymentMethodRevocationReason
enum. The value is returned when a customer payment method is missing the billing address field.
Deleting a fulfillment service
We've introduced the inventoryAction
argument on the fulfillmentServiceDelete
mutation. You can use the argument to specify how to handle inventory when you delete a fulfillment service. Valid values:
KEEP
: Converts a fulfillment service's locations to be merchant-owned. The inventory at the locations becomes the merchant's responsibility. IfKEEP
is provided, then the merchant must have a sufficient remaining quota of locations on their Shopify plan for the operation to succeed. Otherwise, an error is returned.DELETE
: Deletes the inventory at the location and then the location itself. You can only use this option when there are no outstanding fulfillments.TRANSFER
: Relocates the inventory to a specifieddestinationLocationId
. If you specify eitherKEEP
orDELETE
, then you can't also specify adestinationLocationId
.
Delivery options
The presentedName
field has been added to the DeliveryMethod
object. The presentedName
field represents the name of the delivery option that was presented to the customer during checkout.
Filtering orders
You can now filter orders by the number of items they contain using the subtotalLineItemsQuantity
field on the Order
object.
You can also filter by an exact number of items, or within a specified range, using the subtotal_line_items_quantity
query filter.
Filtering products
We've added new attributes to the products
query. You can now filter products by the following attributes:
publication_ids
: The IDs of product publications.variant_id
: The ID of the product variant.variant_title
: The title of the product variant.
Fulfillment holds
We've deprecated the GREATER_THAN_ZERO
and INVALID_LINE_ITEM_QUANTITY
error codes on the fulfillmentOrderReleaseHold
mutation.
We've also added the heldByRequestingApp
field to the FulfillmentHold
object. As of API version 2024-10, you'll only be able to read the heldBy
field on the FulfillmentHold
object if you have the read_apps
scope enabled on your app. Use the heldByRequestingApp
field instead if you need to confirm whether your app created the fulfillment hold.
Additionally, the fulfillmentOrderHold
mutation now returns the fulfillment hold that was created in a new fulfillmentHold
return field.
As well, we've added a localized, displayReason
field to the FulfillmentHold
object. You can use this field to query a human-readable reason when a fulfillment is on hold.
Linked metafield value error code
We've added the LINKED_METAFIELD_VALUE_WITHOUT_LINKED_OPTION
error code to the ProductOptionsCreateUserError
enum. This error code is returned when the linkedMetafieldValue
can't be specified for an option that isn't linked to a metafield.
Location error codes
We've removed the HAS_OPEN_TRANSFERS_ERROR
and FAILED_TO_RELOCATE_OPEN_TRANSFERS
error codes from theLocationDeactivateUserErrorCode
enum. If you're explicitly checking for either of these error codes in your app, then you should remove references to them.
Metafield definitions
We've deprecated the visibleToStorefrontApi
argument on the standardMetafieldDefinitionEnable
and standardMetafieldDefinitionsEnable
. Use the access
argument on these mutations instead.
The access
argument allows you to specify more granular access controls when enabling a standard metafield definition template.
Metafield-linked product options
In the 2024-04 API version release, we introduced the ability to use the productOptionsCreate
, productCreate
, and productOptionUpdate
mutations to create metafield-linked product options.
As of API version 2024-10, we've added more fields and error codes to support linking metafields to product options.
Available types
Name | Type | Change |
---|---|---|
linkedMetafield |
Field | Added to OptionSetInput input object |
linkedMetafieldValue |
Field | Added to VariantOptionValueInput input object |
CANNOT_COMBINE_LINKED_AND_NONLINKED_OPTION_VALUES |
Error code | Added to ProductSetUserErrorCode enum |
INVALID_METAFIELD_VALUE_FOR_LINKED_OPTION |
Error code | Added to ProductSetUserErrorCode enum |
DUPLICATE_LINKED_OPTION |
Error code | Added to ProductSetUserErrorCode enum |
LINKED_OPTIONS_NOT_SUPPORTED_FOR_SHOP |
Error code | Added to ProductSetUserErrorCode enum |
LINKED_METAFIELD_DEFINITION_NOT_FOUND |
Error code | Added to ProductSetUserErrorCode enum |
Metafield storefront visibility
We've removed several MetafieldStorefrontVisibility
-related objects, mutations, queries, and fields:
Name | Type | Change |
---|---|---|
MetafieldStorefrontVisibility |
Object | Removed. Use the access field on the MetafieldDefinition object instead. |
metafieldStorefrontVisibilityCreate |
Mutation | Removed. Use the metafieldDefinitionUpdate mutation instead. |
metafieldStorefrontVisibilityDelete |
Mutation | Removed. Use the metafieldDefinitionUpdate mutation instead. |
metafieldStorefrontVisibilities |
Query | Removed. Use the access field on the MetafieldDefinition object instead. |
metafieldStorefrontVisibility |
Query | Removed. Use the access field on the MetafieldDefinition object instead. |
visibleToStorefrontApi field |
MetafieldDefinition object |
Removed. Use the access field on the MetafieldDefinition object instead. |
visibleToStorefrontApi field |
MetafieldDefinitionInput input object |
Removed. Use the access field on the MetafieldDefinitionInput input object instead. |
visibleToStorefrontApi field |
MetafieldDefinitionUpdateInput input object |
Removed. Use the access field on the MetafieldDefinitionUpdateInput input object instead. |
Metafields support for the cartTransformCreate mutation
We've added the metafields
argument to the cartTransformCreate
mutation. You can use the argument to set metafields for a CartTransform
object at creation without needing to call the metafieldsSet
mutation in a subsequent call.
Order adjustments
We've added the OrderAdjustment
object, which represents the difference between a calculated and an actual refund amount. We've also added the orderAdjustment
connection on the Refund
object, allowing you to retrieve order adjustments that are attached to a refund.
Order line items
We've removed the lineItemsMutable
connection on the Order
object. Use the lineItems
connection on the Order
object instead.
Order status
We've added the statusPageUrl
field to the Order
object, allowing you to retrieve the URL where the customer can check the order's current status.
Pickup locations
You can now use the destination
field on the fulfillmentOrder
object to retrieve the pickup location for a fulfillment order.
As of API version 2024-10, the destination
field returns a FulfillmentOrderDestination
object instead of null
for fulfillment orders that don't have an associated shipping address. If the fulfillment order doesn't have a shipping address, then the address-related fields within the FulfillmentOrderDestination
object are set to null
.
PriceRule types removed
As of API version 2024-10, we've removed PriceRule
types from the GraphQL Admin API. The associated queries and mutations have been deprecated since API version 2023-03. Use the discountNode
query instead.
The following types have been removed:
PriceRuleUserError
objectPriceRuleCustomerSelectionInput
input objectPriceRuleDiscountCodeInput
input objectPriceRuleEntitlementToPrerequisiteQuantityRatioInput
input objectPriceRuleInput
input objectPriceRuleItemEntitlementsInput
input objectPriceRuleItemPrerequisitesInput
input objectPriceRuleMoneyRangeInput
input objectPriceRulePrerequisiteToEntitlementQuantityRatioInput
input objectPriceRuleQuantityRangeInput
input objectPriceRuleShippingEntitlementsInput
input objectPriceRuleValidityPeriodInput
input objectPriceRuleValueInput
input objectpriceRuleSavedSearches
queryPriceRuleActivate
mutationPriceRuleCreate
mutationPriceRuleDeactivate
mutationPriceRuleDelete
mutationPriceRuleDiscountCodeCreate
mutationPriceRuleDiscountCodeUpdate
mutationPriceRuleUpdate
mutationpriceRule
field on theQueryRoot
objectpriceRules
connection on theQueryRoot
objectpriceRules
connection on theShop
objectpriceRuleSavedSearches
connection on theShop
object
ProductImage value removed
The PRODUCTIMAGE
value has been removed from the MetafieldOwnerType
enum. Use MEDIA_IMAGE
instead.
ProductInput fields removed
We've removed the following deprecated ProductInput
fields from the GraphQL Admin API:
bodyHTML
is removed. Use thedescriptionHtml
field instead.privateMetaFields
is removed. Use theproductOptions
field instead.standardizedProductType
is removed. Use thecategory
field instead.productCategory
is removed. Use thecategory
field instead.customProductType
is removed. Use thecategory
field instead.
Product deletions
We've added the synchronous
argument to the productDelete
mutation. The field allows you to choose whether a product should be deleted synchronously or asynchronously.
- Asynchronous deletion: By setting the
synchronous
field tofalse
in theproductDelete
mutation, the operation proceeds asynchronously, and returns aProductDeleteOperation
object. - Operation tracking: You can track the status of the asynchronous deletion by querying the operation ID through the
productOperation
query.
Product duplications
The productDuplicateAsyncV2
mutation has been removed. We've added the synchronous
argument to the productDuplicate
mutation, allowing you to choose whether the product duplication should be processed synchronously or asynchronously.
- Asynchronous duplication: By setting the
synchronous
field tofalse
in theproductDuplicate
mutation, the operation operates asynchronously, and returns aProductDuplicateOperation
object. - Operation tracking: You can track the status of the asynchronous duplication by querying the operation ID through the
productOperation
query.
Product media
We've made changes to how you work with product media by replacing the current media ID inputs with file inputs and expanding media capabilities:
The
mediaIds
field on theProductSetInput
input object has been removed. Use thefiles
field instead to associate files to a product.The
mediaId
field on theProductVariantSetInput
input object has been removed. Use thefile
field instead to associate a file with the product variant.The
FileSetInput
input object is now available for working with existing media and creating new files. This input object is a derivative of theFileCreateInput
input object, with an addedid
field.
Product restrictions
We've added the restrictedForResource
field to the Product
object. The field allows you to query product restrictions for a given CalculatedOrder
object, and returns both the restricted status and the reason for the restriction.
Product mutations
We've removed the following deprecated product mutations from the GraphQL Admin API:
productAppendImages
is removed. Use theproductCreateMedia
mutation instead.productDeleteImages
is removed. Use theproductDeleteMedia
mutation instead.productImageUpdate
is removed. Use theproductDeleteMedia
. Use theproductUpdateMedia
mutation instead.productReorderImages
is removed. Use theproductReorderMedia
mutation instead.
Product variant mutations
We've deprecated the following singular product variant mutations in favor of their equivalent bulk versions:
productVariantCreate
is deprecated. Use theproductVariantsBulkCreate
mutation instead.productVariantUpdate
is deprecated. Use theproductVariantsBulkUpdate
mutation instead.productVariantDelete
is deprecated. Use theproductVariantsBulkDelete
mutation instead.
Product variants count
We've added the productVariantsCount
query to the GraphQL Admin API to provide parity with the REST Admin API's ProductVariant
count endpoint.
Product variants strategy
We've added the variantStrategy
argument to the productOptionsCreate
mutation, which enables more precise control over product variant configuration and inventory management.
The variantStrategy
argument includes the following input fields:
CREATE
: Generates new product variants for all possible combinations of option values.LEAVE_AS_IS
: Updates existing variants to include new option values, without creating new variants.
Products webhook topics
The PRODUCTS_CREATE
and PRODUCTS_UPDATE
webhook payloads now contain the following fields:
has_variants_that_requires_components
: Indicates whether a product has a variant that's a product bundle. The field mirrors thehasVariantsThatRequiresComponents
field on theProduct
object.category
: Information about the product category associated with a product. Thecategory
field exposes a trimmed version of fields that are available on theProduct
object.
Rounding adjustments on cash amounts
We've added the amountRounding
field on the OrderTransaction
object. The amountRounding
field represents the rounding adjustment applied on a cash amount in presentment currency.
Return approvals and rejections
We've added the notifyCustomer
field on the ReturnApproveRequestInput
input object and the ReturnDeclineRequestInput
input object.
We've also added the declineNote
field on the ReturnDeclineRequestInput
input object, which represents the notification message that's sent to a customer about their declined return request.
Reverse fulfillment orders
The reverseDeliveryDispose
mutation is deprecated. Use the reverseFulfillmentOrderDispose
mutation instead.
The fulfillmentLineItem
field on the ReverseFulfillmentOrderLineItem
object is now nullable. A ReverseFulfillmentOrderLineItem
object won't always be associated with a FulfillmentLineItem
object. The non-null fulfillmentLineItem
field on API versions prior to 2024-10 returns an error when the fulfillment line item doesn't exist.
Setting available inventory quantity
We've deprecated the ability to set the available quantity on the inventoryActivate
mutation for inventory items that are already in an active state. Use the inventorySetQuantities
mutation instead.
We've also added the INVALID_QUANTITY_TOO_LOW
value to the InventorySetQuantitiesUserErrorCode
enum. The error code is returned if you run the inventorySetQuantities
mutation and a quantity is less than negative one billion.
Shopify Payments
You can now use the ShopifyPaymentsDispute
object to query all Shopify Payments disputes that are associated with a store.
We've also added the ADVANCE
and ADVANCE_FUNDING
values to the ShopifyPaymentsTransactionType
enum.
Subscription billing attempts
We've added the transactions
connection to the SubscriptionBillingAttempt
object. The connection returns the transactions that are created by billing attempts.
Subscription contracts
We've added the lastBillingAttemptErrorType
field to the SubscriptionContract
object. You can use this field to determine the billing error type when a billing attempt fails.
Tender transactions
We've added the order
field to the TenderTransaction
object. You can use the field to retrieve an order that's related to a transaction with financial impact on a store's balance sheet. If the order has been deleted, then the value is null
.
REST Admin API changes
Anchor link to section titled "REST Admin API changes"The following changes are introduced in the 2024-10 version of the REST Admin API.
Business entities
Large merchants with an established international presence need to be able to specify which of their business entities handles sales for a given buyer context. You can now use the REST Admin API to request the business entity ID (merchant_business_entity_id
) associated with an order.
Delivery options
The presented_name
property has been added to the FulfillmentOrder
resource. The presented_name
property represents the name of the delivery option that was presented to the customer during checkout.
Products webhook topics
The products/create
and products/update
webhook payloads now contain the following properties:
has_variants_that_requires_components
: Indicates whether a product has a variant that's a product bundlecategory
: Information about the product category that's associated with a product
Rounding adjustments on cash amounts
We've added the amount_rounding
property on the Transaction
resource. The amount_rounding
property represents the rounding adjustment applied on a cash amount in presentment currency.
Shopify Function APIs changes
Anchor link to section titled "Shopify Function APIs changes"The following changes are introduced in the 2024-10 version of Shopify Function APIs.
Fulfillment constraints
You can now associate a fulfillment constraint function to one or multiple delivery methods, such as SHIPPING
and PICKUP
. The function will only run under the context of the specified delivery methods.
We've added the deliveryMethodTypes
field to the FulfillmentConstraintRule
object. You can use the fulfillmentConstraintRuleCreate
mutation to register your fulfillment constraint function and associate it with one or more delivery methods.
Use the fulfillmentConstraintRuleUpdate
mutation to update delivery methods for an existing registered function.
Metafields support for the cartTransformCreate mutation
We've added the metafields
argument to the cartTransformCreate
mutation. You can use the argument to set metafields for a CartTransform
object at creation without needing to call the metafieldsSet
mutation in a subsequent call.