type Query {
    activeChannel: Channel!
    activeCustomer: Customer
    activeOrder: Order
    availableCountries: [Country!]!
    collections(languageCode: LanguageCode, options: CollectionListOptions): CollectionList!
    collection(id: ID!, languageCode: LanguageCode): Collection
    eligibleShippingMethods: [ShippingMethodQuote!]!
    me: CurrentUser
    nextOrderStates: [String!]!
    order(id: ID!): Order
    orderByCode(code: String!): Order
    product(id: ID!, languageCode: LanguageCode): Product
    products(languageCode: LanguageCode, options: ProductListOptions): ProductList!
    search(input: SearchInput!): SearchResponse!
}

type Mutation {
    addItemToOrder(productVariantId: ID!, quantity: Int!): Order
    removeItemFromOrder(orderItemId: ID!): Order
    adjustItemQuantity(orderItemId: ID!, quantity: Int!): Order
    transitionOrderToState(state: String!): Order
    setOrderShippingAddress(input: CreateAddressInput!): Order
    setOrderShippingMethod(shippingMethodId: ID!): Order
    addPaymentToOrder(input: PaymentInput!): Order
    setCustomerForOrder(input: CreateCustomerInput!): Order
    login(username: String!, password: String!, rememberMe: Boolean): LoginResult!
    logout: Boolean!
    "Regenerate and send a verification token for a new Customer registration. Only applicable if `authOptions.requireVerification` is set to true."
    refreshCustomerVerification(emailAddress: String!): Boolean!
    "Register a Customer account with the given credentials"
    registerCustomerAccount(input: RegisterCustomerInput!): Boolean!
    "Update an existing Customer"
    updateCustomer(input: UpdateCustomerInput!): Customer!
    "Create a new Customer Address"
    createCustomerAddress(input: CreateAddressInput!): Address!
    "Update an existing Address"
    updateCustomerAddress(input: UpdateAddressInput!): Address!
    "Delete an existing Address"
    deleteCustomerAddress(id: ID!): Boolean!
    "Verify a Customer email address with the token sent to that address. Only applicable if `authOptions.requireVerification` is set to true."
    verifyCustomerAccount(token: String!, password: String!): LoginResult!
    "Update the password of the active Customer"
    updateCustomerPassword(currentPassword: String!, newPassword: String!): Boolean
    "Requests a password reset email to be sent"
    requestPasswordReset(emailAddress: String!): Boolean
    "Resets a Customer's password based on the provided token"
    resetPassword(token: String!, password: String!): LoginResult!
}

input RegisterCustomerInput {
    emailAddress: String!
    title: String
    firstName: String
    lastName: String
    password: String
}

input UpdateCustomerInput {
    title: String
    firstName: String
    lastName: String
    phoneNumber: String
    emailAddress: String
}

input PaymentInput {
    method: String!
    metadata: JSON!
}

# generated by generateListOptions function
input CollectionListOptions

# generated by generateListOptions function
input OrderListOptions

# generated by generateListOptions function
input ProductListOptions

