21 October 2020
GraphQLMessages/Subscriptions
Messages can now be queried using the GraphQL API.
- [GraphQL API] Added the following types to the GraphQL schema: 
CategoryCreated,CategorySlugChanged,CustomLineItemStateTransition,CustomerAddressAdded,CustomerAddressChanged,CustomerAddressRemoved,CustomerCompanyNameSet,CustomerCreated,CustomerDateOfBirthSet,CustomerEmailChanged,CustomerEmailVerified,CustomerGroupSet,CustomerPasswordUpdated,DeliveryAdded,DeliveryAddressSet,DeliveryItemsUpdated,DeliveryRemoved,DummyLocalizedString,InventoryEntryCreated,InventoryEntryCreatedContent,InventoryEntryDeleted,InventoryEntryQuantitySet,LineItemStateTransition,Message,MessageId,MessagePayload,MessageQueryResult,OrderBillingAddressSet,OrderCreated,OrderCustomLineItemAdded,OrderCustomLineItemDiscountSet,OrderCustomLineItemQuantityChanged,OrderCustomLineItemRemoved,OrderCustomerEmailSet,OrderCustomerGroupSet,OrderCustomerSet,OrderDeleted,OrderDiscountCodeAdded,OrderDiscountCodeRemoved,OrderDiscountCodeStateSet,OrderEditApplied,OrderImported,OrderLineItemAdded,OrderLineItemDiscountSet,OrderLineItemDistributionChannelSet,OrderLineItemRemoved,OrderPaymentStateChanged,OrderReturnShipmentStateChanged,OrderShipmentStateChanged,OrderShippingAddressSet,OrderShippingInfoSet,OrderShippingRateInputSet,OrderStateChanged,OrderStateTransition,OrderStoreSet,ParcelAddedToDelivery,ParcelItemsUpdated,ParcelMeasurementsUpdated,ParcelRemovedFromDelivery,ParcelTrackingDataUpdated,PaymentCreated,PaymentInteractionAdded,PaymentStatusInterfaceCodeSet,PaymentStatusStateTransition,PaymentTransactionAdded,PaymentTransactionStateChanged,ProductAddedToCategory,ProductCreated,ProductDeleted,ProductImageAdded,ProductPriceDiscountUpdateMessagePayload,ProductPriceDiscountsSet,ProductPriceExternalDiscountSet,ProductProjectionMessagePayload,ProductPublished,ProductRemovedFromCategory,ProductRevertedStagedChanges,ProductSlugChanged,ProductStateTransition,ProductUnpublished,ProductVariantAdded,ProductVariantDeleted,ReferenceId,ReturnInfoAdded,ReviewCreated,ReviewRatingSet,ReviewStateTransition,UserProvidedIdentifiers. - [GraphQL API] Changed the 
Querytype:- Added the 
messagefield to theQuerytype. - Added the 
messagesfield to theQuerytype. 
 - Added the 
 
The following changes were introduced in terms of GraphQL SDL:
extend type Query {
  message(
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): Message
  messages(where: String, sort: [String!], limit: Int, offset: Int): MessageQueryResult!
}
type CategoryCreated implements MessagePayload {
  category: Category!
  type: String!
}
type CategorySlugChanged implements MessagePayload {
  slug(
    "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
  slugAllLocales: [LocalizedString!]!
  type: String!
}
type CustomLineItemStateTransition implements MessagePayload {
  customLineItemId: String!
  transitionDate: DateTime!
  quantity: Long!
  fromState: State
  toState: State
  fromStateRef: Reference!
  toStateRef: Reference!
  type: String!
}
type CustomerAddressAdded implements MessagePayload {
  address: Address!
  type: String!
}
type CustomerAddressChanged implements MessagePayload {
  address: Address!
  type: String!
}
type CustomerAddressRemoved implements MessagePayload {
  address: Address!
  type: String!
}
type CustomerCompanyNameSet implements MessagePayload {
  companyName: String
  type: String!
}
type CustomerCreated implements MessagePayload {
  customer: Customer!
  type: String!
}
type CustomerDateOfBirthSet implements MessagePayload {
  dateOfBirth: Date
  type: String!
}
type CustomerEmailChanged implements MessagePayload {
  email: String!
  type: String!
}
type CustomerEmailVerified implements MessagePayload {
  type: String!
}
type CustomerGroupSet implements MessagePayload {
  customerGroup: CustomerGroup
  customerGroupRef: Reference
  type: String!
}
type CustomerPasswordUpdated implements MessagePayload {
  reset: Boolean!
  type: String!
}
type DeliveryAdded implements MessagePayload {
  delivery: Delivery!
  type: String!
}
type DeliveryAddressSet implements MessagePayload {
  deliveryId: String!
  address: Address
  oldAddress: Address
  type: String!
}
type DeliveryItemsUpdated implements MessagePayload {
  deliveryId: String!
  items: [DeliveryItem!]!
  oldItems: [DeliveryItem!]!
  type: String!
}
type DeliveryRemoved implements MessagePayload {
  delivery: Delivery!
  type: String!
}
interface DummyLocalizedString {
  dummy: String!
}
type InventoryEntryCreated implements MessagePayload {
  inventoryEntry: InventoryEntryCreatedContent!
  type: String!
}
type InventoryEntryCreatedContent {
  inventoryEntryId: String!
  sku: String!
  quantityOnStock: Long!
  restockableInDays: Int
  expectedDelivery: DateTime
  messageId: MessageId
  supplyChannel: Channel
  supplyChannelRef: Reference
  custom: CustomFieldsType
}
type InventoryEntryDeleted implements MessagePayload {
  sku: String!
  supplyChannel: Channel
  supplyChannelRef: Reference
  type: String!
}
type InventoryEntryQuantitySet implements MessagePayload {
  oldQuantityOnStock: Long!
  newQuantityOnStock: Long!
  oldAvailableQuantity: Long!
  newAvailableQuantity: Long!
  type: String!
}
type LineItemStateTransition implements MessagePayload {
  lineItemId: String!
  transitionDate: DateTime!
  quantity: Long!
  fromState: State
  toState: State
  fromStateRef: Reference!
  toStateRef: Reference!
  type: String!
}
type Message implements Versioned {
  id: String!
  type: String!
  sequenceNumber: Long!
  resourceRef: Reference!
  resourceVersion: Long!
  userProvidedIdentifiers: UserProvidedIdentifiers
  payload: MessagePayload!
  version: Long!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  createdBy: Initiator
  lastModifiedBy: Initiator
}
type MessageId {
  id: String!
  sequenceNumber: Long!
}
interface MessagePayload {
  type: String!
}
type MessageQueryResult {
  offset: Int!
  count: Int!
  total: Long!
  results: [Message!]!
}
type OrderBillingAddressSet implements MessagePayload {
  address: Address
  oldAddress: Address
  type: String!
}
type OrderCreated implements MessagePayload {
  order: Order!
  type: String!
}
type OrderCustomLineItemAdded implements MessagePayload {
  customLineItem: CustomLineItem!
  type: String!
}
type OrderCustomLineItemDiscountSet implements MessagePayload {
  customLineItemId: String!
  discountedPricePerQuantity: [DiscountedLineItemPriceForQuantity!]!
  taxedPrice: TaxedItemPrice
  type: String!
}
type OrderCustomLineItemQuantityChanged implements MessagePayload {
  customLineItemId: String!
  quantity: Long!
  oldQuantity: Long
  type: String!
}
type OrderCustomLineItemRemoved implements MessagePayload {
  customLineItemId: String!
  customLineItem: CustomLineItem
  type: String!
}
type OrderCustomerEmailSet implements MessagePayload {
  email: String
  oldEmail: String
  type: String!
}
type OrderCustomerGroupSet implements MessagePayload {
  customerGroup: CustomerGroup
  oldCustomerGroup: CustomerGroup
  customerGroupRef: Reference
  oldCustomerGroupRef: Reference
  type: String!
}
type OrderCustomerSet implements MessagePayload {
  customer: Customer
  oldCustomer: Customer
  customerGroup: CustomerGroup
  oldCustomerGroup: CustomerGroup
  customerRef: Reference
  oldCustomerRef: Reference
  customerGroupRef: Reference
  oldCustomerGroupRef: Reference
  type: String!
}
type OrderDeleted implements MessagePayload {
  order: Order
  type: String!
}
type OrderDiscountCodeAdded implements MessagePayload {
  discountCode: DiscountCode
  discountCodeRef: Reference!
  type: String!
}
type OrderDiscountCodeRemoved implements MessagePayload {
  discountCode: DiscountCode
  discountCodeRef: Reference!
  type: String!
}
type OrderDiscountCodeStateSet implements MessagePayload {
  state: DiscountCodeState!
  oldState: DiscountCodeState
  discountCode: DiscountCode
  discountCodeRef: Reference!
  type: String!
}
type OrderEditApplied implements MessagePayload {
  result: Applied!
  edit: OrderEdit
  editRef: Reference!
  type: String!
}
type OrderImported implements MessagePayload {
  order: Order!
  type: String!
}
type OrderLineItemAdded implements MessagePayload {
  lineItem: LineItem!
  addedQuantity: Long!
  type: String!
}
type OrderLineItemDiscountSet implements MessagePayload {
  lineItemId: String!
  discountedPricePerQuantity: [DiscountedLineItemPriceForQuantity!]!
  totalPrice: Money!
  taxedPrice: TaxedItemPrice
  type: String!
}
type OrderLineItemDistributionChannelSet implements MessagePayload {
  lineItemId: String!
  distributionChannel: Channel
  distributionChannelRef: Reference
  type: String!
}
type OrderLineItemRemoved implements MessagePayload {
  lineItemId: String!
  removedQuantity: Long!
  newQuantity: Long!
  newState: Set!
  newTotalPrice: Money!
  newTaxedPrice: TaxedItemPrice
  newPrice: ProductPrice
  newShippingDetails: ItemShippingDetails
  type: String!
}
type OrderPaymentStateChanged implements MessagePayload {
  paymentState: PaymentState!
  oldPaymentState: PaymentState
  type: String!
}
type OrderReturnShipmentStateChanged implements MessagePayload {
  returnItemId: String!
  returnShipmentState: ReturnShipmentState!
  type: String!
}
type OrderShipmentStateChanged implements MessagePayload {
  shipmentState: ShipmentState!
  oldShipmentState: ShipmentState
  type: String!
}
type OrderShippingAddressSet implements MessagePayload {
  address: Address
  oldAddress: Address
  type: String!
}
type OrderShippingInfoSet implements MessagePayload {
  shippingInfo: ShippingInfo
  oldShippingInfo: ShippingInfo
  type: String!
}
type OrderShippingRateInputSet implements MessagePayload {
  shippingRateInput: ShippingRateInput
  oldShippingRateInput: ShippingRateInput
  type: String!
}
type OrderStateChanged implements MessagePayload {
  orderId: String!
  orderState: OrderState!
  oldOrderState: OrderState
  type: String!
}
type OrderStateTransition implements MessagePayload {
  force: Boolean!
  state: State
  oldState: State
  stateRef: Reference!
  oldStateRef: Reference
  type: String!
}
type OrderStoreSet implements MessagePayload {
  store: Store
  oldStore: Store
  storeRef: KeyReference
  oldStoreRef: KeyReference
  type: String!
}
type ParcelAddedToDelivery implements MessagePayload {
  delivery: Delivery!
  parcel: Parcel!
  type: String!
}
type ParcelItemsUpdated implements MessagePayload {
  deliveryId: String!
  parcelId: String!
  items: [DeliveryItem!]!
  oldItems: [DeliveryItem!]!
  type: String!
}
type ParcelMeasurementsUpdated implements MessagePayload {
  deliveryId: String!
  parcelId: String!
  measurements: ParcelMeasurements
  type: String!
}
type ParcelRemovedFromDelivery implements MessagePayload {
  deliveryId: String!
  parcel: Parcel!
  type: String!
}
type ParcelTrackingDataUpdated implements MessagePayload {
  deliveryId: String!
  parcelId: String!
  trackingData: TrackingData
  type: String!
}
type PaymentCreated implements MessagePayload {
  payment: Payment!
  type: String!
}
type PaymentInteractionAdded implements MessagePayload {
  interaction: CustomFieldsType!
  type: String!
}
type PaymentStatusInterfaceCodeSet implements MessagePayload {
  paymentId: String!
  interfaceCode: String
  type: String!
}
type PaymentStatusStateTransition implements MessagePayload {
  force: Boolean!
  state: State
  stateRef: Reference
  type: String!
}
type PaymentTransactionAdded implements MessagePayload {
  transaction: Transaction!
  type: String!
}
type PaymentTransactionStateChanged implements MessagePayload {
  transactionId: String!
  state: TransactionState!
  type: String!
}
type ProductAddedToCategory implements MessagePayload {
  category: ReferenceId!
  staged: Boolean!
  type: String!
}
type ProductCreated implements MessagePayload {
  productProjection: ProductProjectionMessagePayload!
  type: String!
}
type ProductDeleted implements MessagePayload {
  removedImageUrls: Set!
  currentProjection: ProductProjectionMessagePayload
  type: String!
}
type ProductImageAdded implements MessagePayload {
  variantId: Int!
  image: Image!
  staged: Boolean!
  type: String!
}
type ProductPriceDiscountUpdateMessagePayload {
  variantId: Int!
  variantKey: String
  sku: String
  priceId: String!
  discounted: DiscountedProductPriceValue
  staged: Boolean!
}
type ProductPriceDiscountsSet implements MessagePayload {
  updatedPrices: [ProductPriceDiscountUpdateMessagePayload!]!
  type: String!
}
type ProductPriceExternalDiscountSet implements MessagePayload {
  variantId: Int!
  variantKey: String
  sku: String
  priceId: String!
  discounted: DiscountedProductPriceValue
  staged: Boolean!
  type: String!
}
type ProductProjectionMessagePayload {
  id: String!
  version: Long!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  productTypeRef: Reference!
  productType: ProductTypeDefinition
  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!]
  slug(
    "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
  slugAllLocales: [LocalizedString!]!
  categoryOrderHints: [CategoryOrderHint!]!
  categoriesRef: [Reference!]!
  categories: [Category!]!
  searchKeywords: [SearchKeywords!]!
  metaTitle(
    "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
  metaTitleAllLocales: [LocalizedString!]
  metaKeywords(
    "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
  metaKeywordsAllLocales: [LocalizedString!]
  metaDescription(
    "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
  metaDescriptionAllLocales: [LocalizedString!]
  hasStagedChanges: Boolean!
  published: Boolean!
  masterData: ProductVariant!
  variants: [ProductVariant!]!
  taxCategoryRef: Reference
  taxCategory: TaxCategory
  stateRef: Reference
  state: State
  reviewRatingStatistics: ReviewRatingStatistics
}
type ProductPublished implements MessagePayload {
  productProjection: ProductProjectionMessagePayload!
  removedImageUrls: [String!]!
  scope: PublishScope!
  type: String!
}
type ProductRemovedFromCategory implements MessagePayload {
  category: ReferenceId!
  staged: Boolean!
  type: String!
}
type ProductRevertedStagedChanges implements MessagePayload {
  removedImageUrls: Set!
  type: String!
}
type ProductSlugChanged implements MessagePayload {
  slug: DummyLocalizedString!
  type: String!
}
type ProductStateTransition implements MessagePayload {
  force: Boolean!
  state: State
  stateRef: Reference!
  type: String!
}
type ProductUnpublished implements MessagePayload {
  type: String!
}
type ProductVariantAdded implements MessagePayload {
  variant: ProductVariant!
  staged: Boolean!
  type: String!
}
type ProductVariantDeleted implements MessagePayload {
  removedImageUrls: Set!
  variant: ProductVariant
  type: String!
}
type ReferenceId {
  typeId: String!
  id: String!
}
type ReturnInfoAdded implements MessagePayload {
  returnInfo: ReturnInfo!
  type: String!
}
type ReviewCreated implements MessagePayload {
  review: Review!
  type: String!
}
type ReviewRatingSet implements MessagePayload {
  oldRating: Int
  newRating: Int
  includedInStatistics: Boolean!
  target: ReviewTarget
  targetRef: Reference
  type: String!
}
type ReviewStateTransition implements MessagePayload {
  oldIncludedInStatistics: Boolean!
  newIncludedInStatistics: Boolean!
  force: Boolean!
  target: ReviewTarget
  oldState: State
  newState: State
  targetRef: Reference
  oldStateRef: Reference
  newStateRef: Reference!
  type: String!
}
type UserProvidedIdentifiers {
  key: String
  orderNumber: String
  customerNumber: String
  externalId: String
  sku: String
  slug(
    "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
  slugAllLocales: [LocalizedString!]
}