"Storefront route URLs to provide for the updateShop mutation"
input StorefrontUrlsInput {
  "Storefront Account Profile URL (can include `:accountId` in string)"
  storefrontAccountProfileUrl: String

  "Storefront Home URL"
  storefrontHomeUrl: String

  "Storefront login URL"
  storefrontLoginUrl: String

  "Storefront single order URL (can include `:orderReferenceId` and `:orderToken` in string)"
  storefrontOrderUrl: String

  "Storefront orders URL (can include `:accountId` in string)"
  storefrontOrdersUrl: String
}

"Shop Logo URLs to provide for the updateShop mutation"
input ShopLogoUrlsInput {
  "The primary logo URL for this shop. Setting this overrides any uploaded logo."
  primaryShopLogoUrl: String
}

"Parcel size input"
input ShopParcelSizeInput {
  "Parcel height"
  height: Float

  "Parcel length"
  length: Float

  "Parcel weight"
  weight: Float

  "Parcel width"
  width: Float
}

"Input parameters for the updateShop mutation"
input UpdateShopInput {
  "An address book entry to set the primary shop's address"
  addressBook: [AddressInput]

  "Whether to allow user to checkout without creating an account"
  allowGuestCheckout: Boolean
  
  "The base unit of length"
  baseUOL: String

  "The base unit of Measure"
  baseUOM: String

  "ID of media record to be used as the brand asset"
  brandAssets: ID

  "An optional string identifying the mutation call, which will be returned in the response payload"
  clientMutationId: String

  "The shop's currency"
  currency: String

  "Default parcel size used for this shop"
  defaultParcelSize: ShopParcelSizeInput

  "The shop's description"
  description: String

  "The shops primary email address"
  emails: [EmailRecordInput]

  "The shop's keywords"
  keywords: String

  "The shop's language"
  language: String

  "The shop's name"
  name: String

  "The ID of the shop to update"
  shopId: ID!

  "Object of shop logo urls "
  shopLogoUrls: ShopLogoUrlsInput

  "Shop's slug"
  slug: String

  "Object of storefront routes urls"
  storefrontUrls: StorefrontUrlsInput

  "The shop's timezone"
  timezone: String
}

"The response from the `updateShop` mutation"
type UpdateShopPayload {
  "The same string you sent with the mutation params, for matching mutation calls with their responses"
  clientMutationId: String

  "The shop which was updated"
  shop: Shop!
}

extend type Mutation {
  "Given shop data, update the Shops collection with this data"
  updateShop(
    "Mutation input"
    input: UpdateShopInput!
  ): UpdateShopPayload!
}
