8 July 2025
OrdersSecurity and privacyMessages/SubscriptionsLimits
You can now enable automated repeat purchases with the new Recurring Orders feature. This allows customers to schedule reorders for individual items at intervals such as daily, weekly, or monthly, while Merchants can set custom prices for each interval. Recurring Orders can be paused, skipped, modified, and canceled at any time to adapt to changing customer needs.
In addition, Customers can combine one-time purchases and subscription items in a single checkout, creating a seamless and flexible shopping experience. This feature aims to reduce manual workload for Merchants while building customer loyalty through convenience and consistency.
This feature is in public beta.
For more information, see the Recurring Orders overview.
Changes:
- [API] Added the Recurring Orders API and Recurrence Policies API.
 - [API] Added 
view_recurring_orders:{projectKey}andmanage_recurring_orders:{projectKey}OAuth scopes. - [API] Added Recurring Orders Messages.
 - [API] Added the following to the Order Messages: OrderCreatedFromRecurringOrder.
 - [API] Added 
priceRecurrencePolicyprice selection parameter. - [API] Added 
recurrencePolicyfield to the Price and PriceDraft types. - [API] Added 
recurrence-policyandrecurring-orderenums to the ReferenceTypeId type. - [API] Updated the following in the Carts API:
- Added 
RecurringOrderenum to the CartOrigin type. - Added 
recurrenceInfofield to the LineItem, LineItemDraft, CustomLineItem, and CustomLineItemDraft types. - Added 
recurrenceInfofield to the Add LineItem and Add CustomLineItem update action. - Added the Set LineItemRecurrenceInfo and Set CustomLineItemRecurrenceInfo update actions.
 
 - Added 
 - [API] Updated the following in the My Carts API:
- Added 
recurrenceInfofield to the Add LineItem update action in My Carts API. - Added the Set LineItemRecurrenceInfo and Set CustomLineItemRecurrenceInfo update actions.
 
 - Added 
 - [API] Added 
recurrenceInfofield to the Add LineItem and Add CustomLineItem update actions in Orders Edits API. - [API] Added 
recurringOrderfield to the Order type in Orders API. - [API] Added 
recurrencePricesfield to the ProductVariant type in Products API. - [API] Added 
recurrencePolicyfield to the StandalonePrice and StandalonePriceDraft types in Standalone Prices API. - [API] Added 
RecurringOrderStateenum to the StateTypeEnum type in States API. - [GraphQL API] Added the 
recurringOrder,recurringOrders,recurrencePolicy, andrecurrencePoliciesfields to theQuerytype. - [GraphQL API] Added the 
createRecurringOrder,updateRecurringOrder,createRecurrencePolicy, andupdateRecurrencePolicyfields to theMutationtype. - [GraphQL API] Added the following types to the GraphQL schema: 
Counter,CounterInputDraft,CustomLineItemRecurrenceInfo,CustomLineItemRecurrenceInfoDraft,CustomLineItemRecurrenceInfoInputDraft,DayOfMonthSchedule,DayOfMonthScheduleInput,IntervalUnit,LineItemRecurrenceInfo,LineItemRecurrenceInfoDraft,LineItemRecurrenceInfoInputDraft,OrderCreatedFromRecurringOrder,PriceSelectionMode,RecurrencePolicy,RecurrencePolicyDraft,RecurrencePolicyQueryResult,RecurrencePolicyRef,RecurrencePolicyReferenceIdentifier,RecurrencePolicySchedule,RecurrencePolicyScheduleInput,RecurrencePolicyUpdateAction,RecurringOrder,RecurringOrderActiveInput,RecurringOrderCanceledInput,RecurringOrderCreated,RecurringOrderCustomFieldAdded,RecurringOrderCustomFieldChanged,RecurringOrderCustomFieldRemoved,RecurringOrderCustomTypeRemoved,RecurringOrderCustomTypeSet,RecurringOrderDeleted,RecurringOrderDraft,RecurringOrderExpiredInput,RecurringOrderKeySet,RecurringOrderPausedInput,RecurringOrderQueryResult,RecurringOrderScheduleSet,RecurringOrderStartsAtSet,RecurringOrderState,RecurringOrderStateChanged,RecurringOrderStateDraft,RecurringOrderStateTransition,RecurringOrderUpdateAction,SetCustomLineItemRecurrenceInfo,SetLineItemRecurrenceInfo,SetRecurrencePolicyDescription,SetRecurrencePolicyKey,SetRecurrencePolicyName,SetRecurrencePolicySchedule,SetRecurringOrderCustomField,SetRecurringOrderCustomType,SetRecurringOrderKey,SetRecurringOrderOrderSkipConfiguration,SetRecurringOrderSchedule,SetRecurringOrderStartsAt,SetRecurringOrderState,SkipConfiguration,SkipConfigurationInputDraft,StandardSchedule,StandardScheduleInput,TransitionRecurringOrderState. - [GraphQL API] Added the 
allRecurrencePricesfield to theProductVarianttype. - [GraphQL API] Added the 
allRecurrencePricesfield to theProductSearchVarianttype. - [GraphQL API] Added the 
returnAllPricesByRecurrencePolicyandrecurrencePolicyIdarguments to theProductVariant.pricefield. - [GraphQL API] Added the 
returnAllPricesByRecurrencePolicyandrecurrencePolicyIdarguments to theProductSearchVariant.pricefield. - [GraphQL API] Changed the 
AddCartCustomLineItem.priceModedefault value fromStandardto none. - [GraphQL API] Changed the 
AddStagedOrderCustomLineItem.priceModedefault value fromStandardto none. - [GraphQL API] Added the 
recurrencePolicyinput field to theProductPriceDataInputtype. - [GraphQL API] Added the 
RecurringOrderenum value to theCartOriginenum. - [GraphQL API] Added the 
recurrenceInfofield to theLineItemtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theLineItemDrafttype. - [GraphQL API] Added the 
recurrenceInfofield to theLineItemDraftOutputtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theAddCartLineItemtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theMyLineItemDrafttype. - [GraphQL API] Added the 
recurrenceInfoinput field to theAddMyCartLineItemtype. - [GraphQL API] Added the 
recurrenceInfofield to theCustomLineItemtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theCustomLineItemDrafttype. - [GraphQL API] Added the 
recurrenceInfofield to theCustomLineItemDraftOutputtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theAddCartCustomLineItemtype. - [GraphQL API] Added the 
setLineItemRecurrenceInfoandsetCustomLineItemRecurrenceInfoinput fields to theCartUpdateActiontype. - [GraphQL API] Added the 
setLineItemRecurrenceInfoandsetCustomLineItemRecurrenceInfoinput fields to theMyCartUpdateActiontype. - [GraphQL API] Added the 
recurringOrderandrecurringOrderReffields to theOrdertype. - [GraphQL API] Added the 
recurrenceInfoinput field to theAddStagedOrderLineItemtype. - [GraphQL API] Added the 
recurrenceInfoinput field to theAddStagedOrderCustomLineItemtype. - [GraphQL API] Added the 
RecurringOrderStateenum value to theStateTypeenum. - [GraphQL API] Added the 
recurrencePolicyandrecurrencePolicyReffields to theProductPricetype. - [GraphQL API] Added the 
recurrencePolicyandrecurrencePolicyReffields to theStandalonePricetype. - [GraphQL API] Added the 
recurrencePolicyinput field to theCreateStandalonePricetype. 
The following changes were introduced in terms of GraphQL SDL:
extend type LineItemDraftOutput {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoDraft
}
extend type ProductVariant {
  "Returns all recurrence prices based on the price selection rules."
  allRecurrencePrices(currency: Currency!, country: Country, customerGroupId: String, channelId: String, date: DateTime, recurrencePolicyId: String, returnAllPricesByRecurrencePolicy: Boolean): [ProductPrice!]
}
extend type CustomLineItemDraftOutput {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfoDraft
}
extend type ProductPrice {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrencePolicy: RecurrencePolicy
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrencePolicyRef: Reference
}
extend type ProductSearchVariant {
  "Returns all recurrence prices based on the price selection rules."
  allRecurrencePrices(currency: Currency!, country: Country, customerGroupId: String, channelId: String, date: DateTime, recurrencePolicyId: String, returnAllPricesByRecurrencePolicy: Boolean): [ProductPriceSearch!]
}
extend type Query {
  """
  Recurrence policies are managed and queried through the Recurrence Policy API
  and associated to a Price
  """
  recurrencePolicies(where: String, sort: [String!], limit: Int, offset: Int): RecurrencePolicyQueryResult!
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrencePolicy(
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): RecurrencePolicy
  recurringOrder(
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): RecurringOrder
  recurringOrders(where: String, sort: [String!], limit: Int, offset: Int): RecurringOrderQueryResult!
}
extend type CustomLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfo
}
extend type Mutation {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  createRecurrencePolicy(draft: RecurrencePolicyDraft!): RecurrencePolicy
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  createRecurringOrder(draft: RecurringOrderDraft!): RecurringOrder
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  updateRecurrencePolicy(version: Long!, actions: [RecurrencePolicyUpdateAction!]!,
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): RecurrencePolicy
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  updateRecurringOrder(version: Long!, actions: [RecurringOrderUpdateAction!]!,
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): RecurringOrder
}
extend type Order {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurringOrder: RecurringOrder
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurringOrderRef: Reference
}
extend type LineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfo
}
extend type StandalonePrice {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrencePolicy: RecurrencePolicy
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrencePolicyRef: Reference
}
extend input AddMyCartLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
extend input AddStagedOrderLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
extend input MyLineItemDraft {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
extend input CreateStandalonePrice {
  recurrencePolicy: ResourceIdentifierInput
}
extend input CartUpdateAction {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  setCustomLineItemRecurrenceInfo: SetCustomLineItemRecurrenceInfo
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  setLineItemRecurrenceInfo: SetLineItemRecurrenceInfo
}
extend input LineItemDraft {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
extend input AddCartLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
extend input AddCartCustomLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfoInputDraft
}
extend input AddStagedOrderCustomLineItem {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfoInputDraft
}
extend input MyCartUpdateAction {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  setCustomLineItemRecurrenceInfo: SetCustomLineItemRecurrenceInfo
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  setLineItemRecurrenceInfo: SetLineItemRecurrenceInfo
}
extend input CustomLineItemDraft {
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfoInputDraft
}
extend enum CartOrigin {
  "The cart was created by the merchant as a recurring order."
  RecurringOrder
}
extend enum StateType {
  RecurringOrderState
}
type Counter implements SkipConfiguration {
  totalToSkip: Int!
  skipped: Int!
  lastSkippedAt: DateTime
  type: String!
}
input CounterInputDraft {
  totalToSkip: Int!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type CustomLineItemRecurrenceInfo {
  recurrencePolicy: RecurrencePolicy
  recurrencePolicyRef: RecurrencePolicyRef!
  expiresAt: DateTime
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type CustomLineItemRecurrenceInfoDraft {
  recurrencePolicyRef: RecurrencePolicyReferenceIdentifier
  expiresAt: DateTime
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input CustomLineItemRecurrenceInfoInputDraft {
  recurrencePolicy: ResourceIdentifierInput!
  expiresAt: DateTime
}
type DayOfMonthSchedule implements RecurrencePolicySchedule {
  day: Int!
  type: String!
}
input DayOfMonthScheduleInput {
  day: Int!
}
enum IntervalUnit {
  Days
  Months
  Weeks
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type LineItemRecurrenceInfo {
  recurrencePolicy: RecurrencePolicy
  recurrencePolicyRef: RecurrencePolicyRef!
  expiresAt: DateTime
  priceSelectionMode: PriceSelectionMode!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type LineItemRecurrenceInfoDraft {
  recurrencePolicyRef: RecurrencePolicyReferenceIdentifier
  expiresAt: DateTime
  priceSelectionMode: PriceSelectionMode!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input LineItemRecurrenceInfoInputDraft {
  recurrencePolicy: ResourceIdentifierInput!
  expiresAt: DateTime
  priceSelectionMode: PriceSelectionMode!
}
type OrderCreatedFromRecurringOrder implements MessagePayload & OrderMessagePayload {
  order: Order
  recurringOrderRef: Reference!
  type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
enum PriceSelectionMode {
  "Every time a new order is created from this recurring order, we will update to the latest price available"
  Dynamic
  "The price will stay the same until the recurring order expires or is cancelled"
  Fixed
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type RecurrencePolicy implements Versioned {
  id: String!
  version: Long!
  key: String!
  name(
    "String is defined for different locales. This argument specifies the desired locale."
    locale: Locale,
    "List of languages the client is able to understand, and which locale variant is preferred."
    acceptLanguage: [Locale!]): String
  nameAllLocales: [LocalizedString!]
  description(
    "String is defined for different locales. This argument specifies the desired locale."
    locale: Locale,
    "List of languages the client is able to understand, and which locale variant is preferred."
    acceptLanguage: [Locale!]): String
  descriptionAllLocales: [LocalizedString!]
  schedule: RecurrencePolicySchedule!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  createdBy: Initiator
  lastModifiedBy: Initiator
}
input RecurrencePolicyDraft {
  key: String!
  name: [LocalizedStringItemInputType!]
  description: [LocalizedStringItemInputType!]
  schedule: RecurrencePolicyScheduleInput!
}
type RecurrencePolicyQueryResult {
  offset: Int!
  count: Int!
  total: Long!
  exists: Boolean!
  results: [RecurrencePolicy!]!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type RecurrencePolicyRef {
  typeId: String!
  id: String!
}
type RecurrencePolicyReferenceIdentifier {
  typeId: String!
  id: String
  key: String
}
interface RecurrencePolicySchedule {
  type: String!
}
input RecurrencePolicyScheduleInput {
  standard: StandardScheduleInput
  dayOfMonth: DayOfMonthScheduleInput
}
input RecurrencePolicyUpdateAction {
  setDescription: SetRecurrencePolicyDescription
  setKey: SetRecurrencePolicyKey
  setName: SetRecurrencePolicyName
  setSchedule: SetRecurrencePolicySchedule
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type RecurringOrder implements Versioned {
  key: String
  recurringOrderState: RecurringOrderState!
  cartRef: Reference!
  cart: Cart
  startsAt: DateTime!
  resumesAt: DateTime
  expiresAt: DateTime
  lastOrderAt: DateTime
  nextOrderAt: DateTime
  skipConfiguration: SkipConfiguration
  businessUnit: BusinessUnit
  businessUnitRef: KeyReference
  custom: CustomFieldsType
  stateRef: Reference
  state: State
  originOrderRef: Reference
  originOrder: Order
  schedule: RecurrencePolicySchedule!
  customerRef: Reference
  customer: Customer
  customerEmail: String
  id: String!
  version: Long!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  createdBy: Initiator
  lastModifiedBy: Initiator
}
input RecurringOrderActiveInput {
  resumesAt: DateTime
}
input RecurringOrderCanceledInput {
  reason: String
}
type RecurringOrderCreated implements MessagePayload {
  recurringOrder: RecurringOrder!
  type: String!
}
type RecurringOrderCustomFieldAdded implements MessagePayload {
  name: String!
  value: Json!
  type: String!
}
type RecurringOrderCustomFieldChanged implements MessagePayload {
  name: String!
  value: Json!
  previousValue: Json
  type: String!
}
type RecurringOrderCustomFieldRemoved implements MessagePayload {
  name: String!
  type: String!
}
type RecurringOrderCustomTypeRemoved implements MessagePayload {
  previousTypeId: String
  type: String!
}
type RecurringOrderCustomTypeSet implements MessagePayload {
  customFields: CustomFieldsType!
  previousTypeId: String
  type: String!
}
type RecurringOrderDeleted implements MessagePayload {
  type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input RecurringOrderDraft {
  key: String
  custom: CustomFieldsDraft
  cart: ResourceIdentifierInput!
  cartVersion: Long!
  startsAt: DateTime!
  expiresAt: DateTime
  state: ResourceIdentifierInput
  recurringOrderState: RecurringOrderState
}
input RecurringOrderExpiredInput {
  dummy: String
}
type RecurringOrderKeySet implements MessagePayload {
  key: String
  oldKey: String
  type: String!
}
input RecurringOrderPausedInput {
  dummy: String
}
type RecurringOrderQueryResult {
  offset: Int!
  count: Int!
  total: Long!
  exists: Boolean!
  results: [RecurringOrder!]!
}
type RecurringOrderScheduleSet implements MessagePayload {
  recurrencePolicySchedule: RecurrencePolicySchedule!
  oldRecurrencePolicySchedule: RecurrencePolicySchedule!
  type: String!
}
type RecurringOrderStartsAtSet implements MessagePayload {
  startsAt: DateTime!
  oldStartsAt: DateTime!
  type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
enum RecurringOrderState {
  Active
  Canceled
  Expired
  Failed
  Paused
}
type RecurringOrderStateChanged implements MessagePayload {
  recurringOrderState: RecurringOrderState!
  oldRecurringOrderState: RecurringOrderState!
  type: String!
}
input RecurringOrderStateDraft {
  active: RecurringOrderActiveInput
  paused: RecurringOrderPausedInput
  canceled: RecurringOrderCanceledInput
  expired: RecurringOrderExpiredInput
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type RecurringOrderStateTransition implements MessagePayload {
  force: Boolean!
  state: State
  oldState: State
  stateRef: Reference!
  oldStateRef: Reference
  type: String!
}
input RecurringOrderUpdateAction {
  setKey: SetRecurringOrderKey
  setOrderSkipConfiguration: SetRecurringOrderOrderSkipConfiguration
  setCustomField: SetRecurringOrderCustomField
  setCustomType: SetRecurringOrderCustomType
  setRecurringOrderState: SetRecurringOrderState
  setSchedule: SetRecurringOrderSchedule
  setStartsAt: SetRecurringOrderStartsAt
  transitionState: TransitionRecurringOrderState
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input SetCustomLineItemRecurrenceInfo {
  customLineItemId: String!
  customLineItemKey: String
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: CustomLineItemRecurrenceInfoInputDraft
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input SetLineItemRecurrenceInfo {
  lineItemId: String!
  "BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
  recurrenceInfo: LineItemRecurrenceInfoInputDraft
}
input SetRecurrencePolicyDescription {
  description: [LocalizedStringItemInputType!]
}
input SetRecurrencePolicyKey {
  key: String!
}
input SetRecurrencePolicyName {
  name: [LocalizedStringItemInputType!]
}
input SetRecurrencePolicySchedule {
  schedule: RecurrencePolicyScheduleInput!
}
input SetRecurringOrderCustomField {
  name: String!
  value: String
}
input SetRecurringOrderCustomType {
  fields: [CustomFieldInput!]
  type: ResourceIdentifierInput
  typeKey: String
  typeId: String
}
input SetRecurringOrderKey {
  key: String
}
input SetRecurringOrderOrderSkipConfiguration {
  skipConfigurationInputDraft: SkipConfigurationInputDraft
  updatedExpiresAt: DateTime
}
input SetRecurringOrderSchedule {
  recurrencePolicy: ResourceIdentifierInput!
}
input SetRecurringOrderStartsAt {
  startsAt: DateTime!
}
input SetRecurringOrderState {
  recurringOrderState: RecurringOrderStateDraft!
}
interface SkipConfiguration {
  type: String!
}
input SkipConfigurationInputDraft {
  Counter: CounterInputDraft
}
type StandardSchedule implements RecurrencePolicySchedule {
  value: Int!
  intervalUnit: IntervalUnit!
  type: String!
}
input StandardScheduleInput {
  value: Int!
  intervalUnit: IntervalUnit!
}
input TransitionRecurringOrderState {
  state: ResourceIdentifierInput!
  force: Boolean = false
}