2021-01 release notes (Release candidate)

Release date Date version is no longer supported
January 1, 2021 January 1, 2022

Breaking changes

These changes require special attention. If your app uses these API resources and you don’t upgrade to a more recent API version, then your app will break.

Status field in REST FulfillmentOrder resource

As of the 2021-01 API version, we've added a new scheduled value to the status field in the FulfillmentOrder resource.

For more information, refer to Managing prepaid subscription orders.

GraphQL Admin API changes

Below are all the changes currently introduced in the 2021-01 version of the GraphQL Admin API.

We've added the new subscription APIs to enable you to build support for subscriptions into the cart and product pages on the storefront.

You can use subscription APIs to sell goods and services in multiple ways. For example, you can sell a product as a one-time purchase or as a recurring subscription.

Subscription APIs

For more information about subscription APIs, refer to Shopify subscriptions overview.

New mutations

  • CustomerPaymentMethodCreditCardCreate was added
  • CustomerPaymentMethodSendUpdateEmail was added
  • CustomerPaymentMethodCreditCardUpdate was added
  • CustomerPaymentMethodRemoteCreditCardCreate was added
  • CustomerPaymentMethodRevoke was added
  • ProductJoinSellingPlanGroups was added
  • ProductLeaveSellingPlanGroups was added
  • ProductVariantJoinSellingPlanGroups was added
  • ProductVariantLeaveSellingPlanGroups was added
  • SellingPlanGroupAddProductVariants was added
  • SellingPlanGroupAddProducts was added
  • SellingPlanGroupCreate was added
  • SellingPlanGroupDelete was added
  • SellingPlanGroupRemoveProductVariants was added
  • SellingPlanGroupRemoveProducts was added
  • SellingPlanGroupUpdate was added
  • SubscriptionBillingAttemptCreate was added
  • SubscriptionContractCreate was added
  • SubscriptionContractSetNextBillingDate was added
  • SubscriptionContractUpdate was added
  • SubscriptionDraftCommit was added
  • SubscriptionDraftDiscountAdd was added
  • SubscriptionDraftDiscountCodeApply was added
  • SubscriptionDraftDiscountRemove was added
  • SubscriptionDraftDiscountUpdate was added
  • SubscriptionDraftFreeShippingDiscountAdd was added
  • SubscriptionDraftFreeShippingDiscountUpdate was added
  • SubscriptionDraftLineAdd was added
  • SubscriptionDraftLineRemove was added
  • SubscriptionDraftLineUpdate was added
  • SubscriptionDraftUpdate was added

New types

  • CustomerCreditCard object was added
  • CustomerPaymentMethod object was added
  • CustomerPaymentInstrument union type was added
  • DiscountTargetType enum was added
  • DiscountType enum was added
  • Failure object was added
  • LastPaymentStatus enum was added
  • LineItemSellingPlan object was added
  • SellingPlan object was added
  • SellingPlanAnchorInput input object was added
  • SellingPlanAnchor object was added
  • SellingPlanBillingPolicyInput input object was added
  • SellingPlanBillingPolicy object was added
  • SellingPlanDeliveryPolicyInput input object was added
  • SellingPlanDeliveryPolicy object was added
  • SellingPlanFixedPricingPolicyInput input object was added
  • SellingPlanFixedPricingPolicy object was added
  • SellingPlanGroupInput input object was added
  • SellingPlanGroupResourceInput input object was added
  • SellingPlanGroup object was added
  • SellingPlanInput input object was added
  • SellingPlanOption object was added
  • SellingPlanPricingPolicyAdjustmentType enum was added
  • SellingPlanPricingPolicyAdjustmentValue union type was added
  • SellingPlanPricingPolicyBase interface type was added
  • SellingPlanPricingPolicyInput input object was added
  • SellingPlanPricingPolicyPercentageValue object was added
  • SellingPlanPricingPolicyValueInput input object was added
  • SellingPlanPricingPolicy union type was added
  • SellingPlanRecurringBillingPolicyInput input object was added
  • SellingPlanRecurringBillingPolicy object was added
  • SellingPlanRecurringDeliveryPolicyInput input object was added
  • SellingPlanRecurringDeliveryPolicy object was added
  • SellingPlanRecurringPricingPolicyInput input object was added
  • SellingPlanRecurringPricingPolicy object was added
  • SubscriptionAppliedCodeDiscount object was added
  • SubscriptionBillingAttemptInput input object was added
  • SubscriptionBillingAttempt object was added
  • SubscriptionBillingPolicyInput input object was added
  • SubscriptionBillingPolicy object was added
  • SubscriptionContractCreateInput input object was added
  • SubscriptionContract object was added
  • SubscriptionStatus enum was added
  • SubscriptionCyclePriceAdjustment object was added
  • SubscriptionDeliveryMethodInput input object was added
  • SubscriptionDeliveryMethodShippingInput input object was added
  • SubscriptionDeliveryMethodShippingOptionInput input object was added
  • SubscriptionDeliveryMethodShippingOption object was added
  • SubscriptionDeliveryMethodShipping object was added
  • SubscriptionDeliveryPolicyInput input object was added
  • SubscriptionDeliveryPolicy object was added
  • SubscriptionDiscountAllocation object was added
  • SubscriptionDiscountEntitledLines object was added
  • SubscriptionDiscountFixedAmountValue object was added
  • SubscriptionDiscountPercentageValue object was added
  • SubscriptionDiscountRejectionReason enum was added
  • SubscriptionDiscountValue union type was added
  • SubscriptionDiscount union type was added
  • SubscriptionDraftInput input object was added
  • SubscriptionDraft object was added
  • SubscriptionFreeShippingDiscountInput input object was added
  • SubscriptionLineInput input object was added
  • SubscriptionLineUpdateInput input object was added
  • SubscriptionLine object was added
  • SubscriptionMailingAddress object was added
  • SubscriptionManualDiscountEntitledLinesInput input object was added
  • SubscriptionManualDiscountFixedAmountInput input object was added
  • SubscriptionManualDiscountInput input object was added
  • SubscriptionManualDiscountLinesInput input object was added
  • SubscriptionManualDiscountValueInput input object was added
  • SubscriptionManualDiscount object was added
  • SubscriptionPricingPolicy object was added
  • SubscriptionShippingOption object was added
  • SubscriptionShippingOptionResult union type was added

New fields

  • appliesOnOneTimePurchase was added to object DiscountCodeFreeShipping
  • appliesOnOneTimePurchase was added to input object DiscountCodeFreeShippingInput
  • appliesOnOneTimePurchase was added to input object DiscountCustomerGetsInput
  • appliesOnOneTimePurchase was added to object DiscountCustomerGets
  • appliesOnSubscription was added to input object DiscountCodeFreeShippingInput
  • appliesOnSubscription was added to object DiscountCodeFreeShipping
  • appliesOnSubscription was added to input object DiscountCustomerGetsInput
  • appliesOnSubscription was added to object DiscountCustomerGets
  • contract was added to object LineItem
  • customerPaymentMethod was added to object QueryRoot
  • customerPaymentMethod was added to object OrderPaymentCollectionDetails
  • eligibleForSubscriptionMigration was added to object ShopFeatures
  • eligibleForSubscriptions was added to object ShopFeatures
  • legacySubscriptionGatewayEnabled was added to object ShopFeatures
  • message was added to union type SubscriptionShippingOptionResult
  • paymentMethods was added to object Customer
  • productSubscriberStatus was added to object Customer
  • recurringCycleLimit was added to input object DiscountCodeBasicInput
  • recurringCycleLimit was added to object DiscountCodeBasic
  • recurringCycleLimit was added to input object DiscountCodeFreeShippingInput
  • recurringCycleLimit was added to object DiscountCodeFreeShipping
  • requiresSellingPlan was added to input object ProductInput
  • requiresSellingPlan was added to object Product
  • sellingPlan was added to object LineItem
  • sellingPlanGroupsToAssociate was added to input object ProfileInput
  • sellingPlanGroupsToDissociate was added to input object ProfileInput
  • sellingPlanGroupCount was added to object ProductVariant
  • sellingPlanGroup was added to object QueryRoot
  • shippingOptions was added to object SubscriptionDraft
  • subscriptionContract was added to object QueryRoot
  • subscriptionDraft was added to object QueryRoot

New connection

  • sellingPlanGroups was added to object Profile
  • sellingPlanGroups was added to object QueryRoot
  • subscriptionContracts was added to object CustomerPaymentMethod
  • subscriptionContracts was added to object Customer
  • subscriptionContracts was added to object QueryRoot

New error codes

  • BillingAttemptUserError was added
  • CustomerPaymentMethodUserError was added
  • APPLIES_ON_NOTHING was added to PriceRuleErrorCode
  • MULTIPLE_RECURRING_CYCLE_LIMIT_FOR_NON_SUBSCRIPTION_ITEMS was added to PriceRuleErrorCode
  • SellingPlanGroupUserError was added
  • SellingPlanUserError was added
  • SubscriptionContractUserError was added
  • SubscriptionDraftUserError was added

As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.

New mutations

  • FulfillmentOrderOpen was added
  • FulfillmentOrderReschedule was added

New and updated types

  • mark_as_open value was added to enum FulfillmentOrderAction
  • scheduled value was added to enum FulfillmentStatus
  • scheduled value was added to enum FulfillmentOrderStatus
  • scheduled value was added to enum OrderDisplayFulfillmentStatus

New field

  • fulfillAt was added to object FulfillmentOrder

You can now subscribe to subscription contracts, billing attempts, and customer payment method event webhooks.

For detailed information about required scopes and payloads, refer to Subscription-related webhooks.

New topics

  • CUSTOMER_PAYMENT_METHODS/CREATE value was added to enum WebhookSubscriptionTopic
  • CUSTOMER_PAYMENT_METHODS/UPDATE value was added to enum WebhookSubscriptionTopic
  • CUSTOMER_PAYMENT_METHODS/REVOKE value was added to enum WebhookSubscriptionTopic
  • SUBSCRIPTION_CONTRACTS/CREATE value was added to enum WebhookSubscriptionTopic
  • SUBSCRIPTION_CONTRACTS/UPDATE value was added to enum WebhookSubscriptionTopic
  • SUBSCRIPTION_BILLING_ATTEMPTS/SUCCESS value was added to enum WebhookSubscriptionTopic
  • SUBSCRIPTION_BILLING_ATTEMPTS/FAILURE value was added to enum WebhookSubscriptionTopic

GraphQL Storefront API changes

Below are all the changes currently introduced in the 2020-10 version of the GraphQL Storefront API.

As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.

Updated type

  • scheduled value was added to enum OrderFulfillmentStatus

REST Admin API changes

Below are all the changes currently introduced in the 2020-10 version of the REST Admin API.

As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.

New endpoints

  • /admin/api/2021-01/fulfillment_orders/{fulfillment_order_id}/open.json: Marks a fulfillment order as open.
  • /admin/api/2021-01/fulfillment_orders/{fulfillment_order_id}/reschedule.json: Reschedules the fulfill_at time of a scheduled fulfillment order.

New and updated fields

  • fulfill_at field was added to resource FulfillmentOrder
  • scheduled value was added to status field in resource FulfillmentOrder
    • Valid values for status: open, in_progress, scheduled, cancelled, incomplete, closed