type Query {
    customers(options: CustomerListOptions): CustomerList!
    customer(id: ID!): Customer
}

type Mutation {
    "Create a new Customer. If a password is provided, a new User will also be created an linked to the Customer."
    createCustomer(input: CreateCustomerInput!, password: String): Customer!

    "Update an existing Customer"
    updateCustomer(input: UpdateCustomerInput!): Customer!

    "Delete a Customer"
    deleteCustomer(id: ID!): DeletionResponse!

    "Create a new Address and associate it with the Customer specified by customerId"
    createCustomerAddress(customerId: ID!, input: CreateAddressInput!): Address!

    "Update an existing Address"
    updateCustomerAddress(input: UpdateAddressInput!): Address!

    "Update an existing Address"
    deleteCustomerAddress(id: ID!): Boolean!
}

input UpdateCustomerInput {
    id: ID!
    title: String
    firstName: String
    lastName: String
    phoneNumber: String
    emailAddress: String
}

# generated by generateListOptions function
input CustomerListOptions
