8 April 2020
GraphQLMessages/Subscriptions
Subscriptions can now be queried, created, updated, and deleted using the GraphQL API.
- [GraphQL API] Added the following types to the GraphQL schema: 
AzureServiceBusDestination,AzureServiceBusDestinationInput,ChangeSubscription,ChangeSubscriptionDestination,ChangeSubscriptionInput,CloudEventsSubscriptionsFormat,CloudEventsSubscriptionsFormatInput,Destination,DestinationInput,EventGridDestination,EventGridDestinationInput,GoogleCloudPubSubDestination,GoogleCloudPubSubDestinationInput,MessageSubscription,MessageSubscriptionInput,NotificationFormat,PlatformFormat,PlatformFormatInput,SNSDestination,SNSDestinationInput,SQSDestination,SQSDestinationInput,SetSubscriptionChanges,SetSubscriptionKey,SetSubscriptionMessages,Subscription,SubscriptionDraft,SubscriptionFormatInput,SubscriptionHealthStatus,SubscriptionQueryResult,SubscriptionUpdateAction. - [GraphQL API] Changed the 
Querytype:- Added the 
subscriptionfield to theQuerytype. - Added the 
subscriptionsfield to theQuerytype. 
 - Added the 
 - [GraphQL API] Changed the 
Mutationtype:- Added the 
updateSubscriptionfield to theMutationtype. - Added the 
deleteSubscriptionfield to theMutationtype. - Added the 
createSubscriptionfield to theMutationtype. 
 - Added the 
 
Introduced the following changes to the GraphQL schema (in SDL format):
extend type Query {
  subscription(
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): Subscription
  subscriptions(where: String, sort: [String!], limit: Int, offset: Int): SubscriptionQueryResult!
}
extend type Mutation {
  createSubscription(draft: SubscriptionDraft!): Subscription
  deleteSubscription(version: Long!,
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): Subscription
  updateSubscription(version: Long!, actions: [SubscriptionUpdateAction!]!,
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): Subscription
}
type AzureServiceBusDestination implements Destination {
  connectionString: String!
  type: String!
}
input AzureServiceBusDestinationInput {
  connectionString: String!
}
type ChangeSubscription {
  resourceTypeId: String!
}
input ChangeSubscriptionDestination {
  destination: DestinationInput!
}
input ChangeSubscriptionInput {
  resourceTypeId: String!
}
type CloudEventsSubscriptionsFormat implements NotificationFormat {
  type: String!
  cloudEventsVersion: String!
}
input CloudEventsSubscriptionsFormatInput {
  cloudEventsVersion: String!
}
interface Destination {
  type: String!
}
input DestinationInput {
  SQS: SQSDestinationInput
  SNS: SNSDestinationInput
  AzureServiceBus: AzureServiceBusDestinationInput
  EventGrid: EventGridDestinationInput
  GoogleCloudPubSub: GoogleCloudPubSubDestinationInput
}
type EventGridDestination implements Destination {
  uri: String!
  accessKey: String!
  type: String!
}
input EventGridDestinationInput {
  uri: String!
  accessKey: String!
}
type GoogleCloudPubSubDestination implements Destination {
  projectId: String!
  topic: String!
  type: String!
}
input GoogleCloudPubSubDestinationInput {
  projectId: String!
  topic: String!
}
type MessageSubscription {
  resourceTypeId: String!
  types: [String!]!
}
input MessageSubscriptionInput {
  resourceTypeId: String!
  types: [String!]
}
interface NotificationFormat {
  type: String!
}
type PlatformFormat implements NotificationFormat {
  type: String!
}
input PlatformFormatInput {
  dummy: String
}
type SNSDestination implements Destination {
  topicArn: String!
  accessKey: String!
  accessSecret: String!
  type: String!
}
input SNSDestinationInput {
  topicArn: String!
  accessKey: String!
  accessSecret: String!
}
type SQSDestination implements Destination {
  queueUrl: String!
  accessKey: String!
  accessSecret: String!
  region: String!
  type: String!
}
input SQSDestinationInput {
  queueUrl: String!
  accessKey: String!
  accessSecret: String!
  region: String!
}
input SetSubscriptionChanges {
  changes: [ChangeSubscriptionInput!]!
}
input SetSubscriptionKey {
  key: String
}
input SetSubscriptionMessages {
  messages: [MessageSubscriptionInput!]!
}
type Subscription implements Versioned {
  key: String
  destination: Destination!
  messages: [MessageSubscription!]!
  changes: [ChangeSubscription!]!
  format: NotificationFormat!
  status: SubscriptionHealthStatus!
  id: String!
  version: Long!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  createdBy: Initiator
  lastModifiedBy: Initiator
}
input SubscriptionDraft {
  key: String
  destination: DestinationInput!
  messages: [MessageSubscriptionInput!]
  changes: [ChangeSubscriptionInput!]
  format: SubscriptionFormatInput
}
input SubscriptionFormatInput {
  Platform: PlatformFormatInput
  CloudEvents: CloudEventsSubscriptionsFormatInput
}
enum SubscriptionHealthStatus {
  TemporaryError
  ConfigurationErrorDeliveryStopped
  ConfigurationError
  Healthy
}
type SubscriptionQueryResult {
  offset: Int!
  count: Int!
  total: Long!
  results: [Subscription!]!
}
input SubscriptionUpdateAction {
  changeDestination: ChangeSubscriptionDestination
  setChanges: SetSubscriptionChanges
  setKey: SetSubscriptionKey
  setMessages: SetSubscriptionMessages
}