19 November 2019
Composable Commerce
HTTP API
Enhancement
CartsGraphQL
  • [GraphQL API] Added the following types to the GraphQL schema: AddShoppingListLineItem, AddShoppingListTextLineItem, ChangeShoppingListLineItemQuantity, ChangeShoppingListLineItemsOrder, ChangeShoppingListName, ChangeShoppingListTextLineItemName, ChangeShoppingListTextLineItemQuantity, ChangeShoppingListTextLineItemsOrder, MyShoppingListDraft, MyShoppingListUpdateAction, RemoveShoppingListLineItem, RemoveShoppingListTextLineItem, SetShoppingListAnonymousId, SetShoppingListCustomField, SetShoppingListCustomType, SetShoppingListCustomer, SetShoppingListDeleteDaysAfterLastModification, SetShoppingListDescription, SetShoppingListKey, SetShoppingListLineItemCustomField, SetShoppingListLineItemCustomType, SetShoppingListSlug, SetShoppingListTextLineItemCustomField, SetShoppingListTextLineItemCustomType, SetShoppingListTextLineItemDescription, ShoppingListDraft, ShoppingListLineItemDraft, ShoppingListUpdateAction, TextLineItemDraft.
  • [GraphQL API] Changed the Mutation type:
    • Added the updateMyShoppingList field to the Mutation type.
    • Added the createShoppingList field to the Mutation type.
    • Added the deleteShoppingList field to the Mutation type.
    • Added the createMyShoppingList field to the Mutation type.
    • Added the updateShoppingList field to the Mutation type.
    • Added the deleteMyShoppingList field to the Mutation type.

Introduced the following changes to the GraphQL schema (in SDL format):

extend type Mutation {
  createMyShoppingList(draft: MyShoppingListDraft!): ShoppingList
  createShoppingList(draft: ShoppingListDraft!): ShoppingList
  deleteMyShoppingList(id: String!, version: Long!): ShoppingList
  deleteShoppingList(version: Long!, personalDataErasure: Boolean = false,

    "Queries with specified ID"
    id: String,

    "Queries with specified key"
    key: String): ShoppingList
  updateMyShoppingList(id: String!, version: Long!, actions: [MyShoppingListUpdateAction!]!): ShoppingList
  updateShoppingList(version: Long!, actions: [ShoppingListUpdateAction!]!,

    "Queries with specified ID"
    id: String,

    "Queries with specified key"
    key: String): ShoppingList
}

input AddShoppingListLineItem {
  addedAt: DateTime
  custom: CustomFieldsDraft
  quantity: Int = 1
  variantId: Int
  sku: String
  productId: String
}

input AddShoppingListTextLineItem {
  addedAt: DateTime
  custom: CustomFieldsDraft
  quantity: Int = 1
  description: [LocalizedStringItemInputType!]
  name: [LocalizedStringItemInputType!]!
}

input ChangeShoppingListLineItemQuantity {
  lineItemId: String!
  quantity: Int!
}

input ChangeShoppingListLineItemsOrder {
  lineItemOrder: [String!]!
}

input ChangeShoppingListName {
  name: [LocalizedStringItemInputType!]!
}

input ChangeShoppingListTextLineItemName {
  textLineItemId: String!
  name: [LocalizedStringItemInputType!]!
}

input ChangeShoppingListTextLineItemQuantity {
  textLineItemId: String!
  quantity: Int!
}

input ChangeShoppingListTextLineItemsOrder {
  textLineItemOrder: [String!]!
}

input MyShoppingListDraft {
  name: [LocalizedStringItemInputType!]!
  description: [LocalizedStringItemInputType!]
  lineItems: [ShoppingListLineItemDraft!] = []
  textLineItems: [TextLineItemDraft!] = []
  custom: CustomFieldsDraft
  deleteDaysAfterLastModification: Int
}

input MyShoppingListUpdateAction {
  addLineItem: AddShoppingListLineItem
  addTextLineItem: AddShoppingListTextLineItem
  changeLineItemQuantity: ChangeShoppingListLineItemQuantity
  changeLineItemsOrder: ChangeShoppingListLineItemsOrder
  changeName: ChangeShoppingListName
  changeTextLineItemName: ChangeShoppingListTextLineItemName
  changeTextLineItemQuantity: ChangeShoppingListTextLineItemQuantity
  changeTextLineItemsOrder: ChangeShoppingListTextLineItemsOrder
  removeLineItem: RemoveShoppingListLineItem
  removeTextLineItem: RemoveShoppingListTextLineItem
  setCustomField: SetShoppingListCustomField
  setCustomType: SetShoppingListCustomType
  setDeleteDaysAfterLastModification: SetShoppingListDeleteDaysAfterLastModification
  setDescription: SetShoppingListDescription
  setLineItemCustomField: SetShoppingListLineItemCustomField
  setLineItemCustomType: SetShoppingListLineItemCustomType
  setTextLineItemCustomField: SetShoppingListTextLineItemCustomField
  setTextLineItemCustomType: SetShoppingListTextLineItemCustomType
  setTextLineItemDescription: SetShoppingListTextLineItemDescription
}

input RemoveShoppingListLineItem {
  lineItemId: String!
  quantity: Int
}

input RemoveShoppingListTextLineItem {
  textLineItemId: String!
  quantity: Int
}

input SetShoppingListAnonymousId {
  anonymousId: String
}

input SetShoppingListCustomField {
  name: String!
  value: String
}

input SetShoppingListCustomType {
  fields: [CustomFieldInput!]
  type: ResourceIdentifierInput
  typeKey: String
  typeId: String
}

input SetShoppingListCustomer {
  customer: ResourceIdentifierInput
}

input SetShoppingListDeleteDaysAfterLastModification {
  deleteDaysAfterLastModification: Int
}

input SetShoppingListDescription {
  description: [LocalizedStringItemInputType!]
}

input SetShoppingListKey {
  key: String
}

input SetShoppingListLineItemCustomField {
  lineItemId: String!
  name: String!
  value: String
}

input SetShoppingListLineItemCustomType {
  lineItemId: String!
  fields: [CustomFieldInput!]
  type: ResourceIdentifierInput
  typeKey: String
  typeId: String
}

input SetShoppingListSlug {
  slug: [LocalizedStringItemInputType!]
}

input SetShoppingListTextLineItemCustomField {
  textLineItemId: String!
  name: String!
  value: String
}

input SetShoppingListTextLineItemCustomType {
  textLineItemId: String!
  fields: [CustomFieldInput!]
  type: ResourceIdentifierInput
  typeKey: String
  typeId: String
}

input SetShoppingListTextLineItemDescription {
  textLineItemId: String!
  description: [LocalizedStringItemInputType!]
}

input ShoppingListDraft {
  name: [LocalizedStringItemInputType!]!
  description: [LocalizedStringItemInputType!]
  lineItems: [ShoppingListLineItemDraft!] = []
  textLineItems: [TextLineItemDraft!] = []
  custom: CustomFieldsDraft
  deleteDaysAfterLastModification: Int
  key: String
  customer: ResourceIdentifierInput
  slug: [LocalizedStringItemInputType!]
  anonymousId: String
}

input ShoppingListLineItemDraft {
  productId: String
  sku: String
  variantId: Int
  quantity: Int = 1
  custom: CustomFieldsDraft
  addedAt: DateTime
}

input ShoppingListUpdateAction {
  addLineItem: AddShoppingListLineItem
  addTextLineItem: AddShoppingListTextLineItem
  changeLineItemQuantity: ChangeShoppingListLineItemQuantity
  changeLineItemsOrder: ChangeShoppingListLineItemsOrder
  changeName: ChangeShoppingListName
  changeTextLineItemName: ChangeShoppingListTextLineItemName
  changeTextLineItemQuantity: ChangeShoppingListTextLineItemQuantity
  changeTextLineItemsOrder: ChangeShoppingListTextLineItemsOrder
  removeLineItem: RemoveShoppingListLineItem
  removeTextLineItem: RemoveShoppingListTextLineItem
  setAnonymousId: SetShoppingListAnonymousId
  setCustomField: SetShoppingListCustomField
  setCustomType: SetShoppingListCustomType
  setCustomer: SetShoppingListCustomer
  setDeleteDaysAfterLastModification: SetShoppingListDeleteDaysAfterLastModification
  setDescription: SetShoppingListDescription
  setKey: SetShoppingListKey
  setLineItemCustomField: SetShoppingListLineItemCustomField
  setLineItemCustomType: SetShoppingListLineItemCustomType
  setSlug: SetShoppingListSlug
  setTextLineItemCustomField: SetShoppingListTextLineItemCustomField
  setTextLineItemCustomType: SetShoppingListTextLineItemCustomType
  setTextLineItemDescription: SetShoppingListTextLineItemDescription
}

input TextLineItemDraft {
  name: [LocalizedStringItemInputType!]!
  description: [LocalizedStringItemInputType!]
  quantity: Int = 1
  custom: CustomFieldsDraft
  addedAt: DateTime
}