I am performing a bulk operation to get discount nodes, and I want to get all associated codes in the connection. The documentation clearly states that
The first
argument is optional and ignored if present, so it can be removed.
I am running the bulk operation using the new 2025-04 release, and the associated codes to the discount are capping at 100. How can I get all the associated codes in one bulk operation? If I can’t specify “first”, I would expect to get all items.
Hi Erin,
Can you share the query you’re trying (without including any sensitive info)?
Hi @Liam-Shopify
This is the query
query:
mutation {
bulkOperationRunQuery(
query: """
{
discountNodes(
sortKey: UPDATED_AT,
reverse: true,
query: "times_used:>=1 updated_at:>=2025-04-01T00:00:00.000Z updated_at:<=2025-04-07T00:00:00.000Z"
) {
edges {
node {
id
discount {
... on DiscountCodeBasic {
appliesOncePerCustomer
summary
usageLimit
recurringCycleLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
totalSales {
amount
}
customerGets {
appliesOnOneTimePurchase
appliesOnSubscription
value {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountOnQuantity {
__typename
effect {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountPercentage {
__typename
percentage
}
}
quantity {
quantity
}
}
... on DiscountPercentage {
__typename
percentage
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
codes(query: "times_used:>=1") {
edges {
node {
code
id
}
}
}
minimumRequirement {
... on DiscountMinimumQuantity {
__typename
greaterThanOrEqualToQuantity
}
... on DiscountMinimumSubtotal {
__typename
greaterThanOrEqualToSubtotal {
amount
}
}
}
}
... on DiscountCodeBxgy {
appliesOncePerCustomer
summary
usesPerOrderLimit
usageLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
totalSales {
amount
}
customerGets {
appliesOnOneTimePurchase
appliesOnSubscription
value {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountOnQuantity {
__typename
effect {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountPercentage {
__typename
percentage
}
}
quantity {
quantity
}
}
... on DiscountPercentage {
__typename
percentage
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
customerBuys {
value {
... on DiscountPurchaseAmount {
__typename
amount
}
... on DiscountQuantity {
__typename
quantity
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
codes(query: "times_used:>=1") {
edges {
node {
code
id
}
}
}
}
... on DiscountCodeFreeShipping {
summary
appliesOnOneTimePurchase
appliesOnSubscription
recurringCycleLimit
usageLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
codes(query: "times_used:>=1") {
edges {
node {
code
id
}
}
}
destinationSelection {
... on DiscountCountries {
__typename
countries
includeRestOfWorld
}
... on DiscountCountryAll {
__typename
allCountries
}
}
minimumRequirement {
... on DiscountMinimumQuantity {
__typename
greaterThanOrEqualToQuantity
}
... on DiscountMinimumSubtotal {
__typename
greaterThanOrEqualToSubtotal {
amount
}
}
}
maximumShippingPrice {
amount
currencyCode
}
totalSales {
amount
}
}
... on DiscountCodeApp {
appliesOncePerCustomer
appliesOnOneTimePurchase
appliesOnSubscription
usageLimit
recurringCycleLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
totalSales {
amount
}
appDiscountType {
app {
title
description
}
title
description
}
codes(query: "times_used:>=1") {
edges {
node {
code
id
}
}
}
}
... on DiscountAutomaticBasic {
summary
recurringCycleLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
customerGets {
appliesOnOneTimePurchase
appliesOnSubscription
value {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountOnQuantity {
__typename
effect {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountPercentage {
__typename
percentage
}
}
quantity {
quantity
}
}
... on DiscountPercentage {
__typename
percentage
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
minimumRequirement {
... on DiscountMinimumQuantity {
__typename
greaterThanOrEqualToQuantity
}
... on DiscountMinimumSubtotal {
__typename
greaterThanOrEqualToSubtotal {
amount
}
}
}
}
... on DiscountAutomaticBxgy {
summary
usesPerOrderLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
customerGets {
appliesOnOneTimePurchase
appliesOnSubscription
value {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountOnQuantity {
__typename
effect {
... on DiscountAmount {
__typename
amount {
amount
currencyCode
}
appliesOnEachItem
}
... on DiscountPercentage {
__typename
percentage
}
}
quantity {
quantity
}
}
... on DiscountPercentage {
__typename
percentage
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
customerBuys {
value {
... on DiscountPurchaseAmount {
__typename
amount
}
... on DiscountQuantity {
__typename
quantity
}
}
items {
... on AllDiscountItems {
__typename
allItems
}
}
}
}
... on DiscountAutomaticFreeShipping {
appliesOnOneTimePurchase
appliesOnSubscription
recurringCycleLimit
summary
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
destinationSelection {
... on DiscountCountries {
__typename
countries
includeRestOfWorld
}
... on DiscountCountryAll {
__typename
allCountries
}
}
maximumShippingPrice {
amount
currencyCode
}
minimumRequirement {
... on DiscountMinimumQuantity {
__typename
greaterThanOrEqualToQuantity
}
... on DiscountMinimumSubtotal {
__typename
greaterThanOrEqualToSubtotal {
amount
}
}
}
totalSales {
amount
}
}
... on DiscountAutomaticApp {
appliesOnSubscription
recurringCycleLimit
__typename
title
asyncUsageCount
discountClass
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
startsAt
endsAt
createdAt
updatedAt
status
appDiscountType {
app {
title
description
}
title
description
}
}
}
}
}
}
}
"""
) {
bulkOperation {
id
status
}
userErrors {
field
message
}
}
}
@Liam-Shopify Hi there, are there any updates on this?
I’m seeing the same exact same problem. Pretty much an identical query.
This is the first set of endpoints I’m considering for the bulk API, and I’m now wondering if this is a broader constraint / limitation, or if it’s somehow just limited to discount codes?