All Release Notes

Added Extension GraphQL query and mutation schema

21 April 2020
Enhancement
CustomizationGraphQL

Extensions can now be queried, created, updated, and deleted using the GraphQL API.

  • [GraphQL API] Added the following types to the GraphQL schema: AWSLambdaDestination, AWSLambdaDestinationInput, ActionType, AuthorizationHeader, AuthorizationHeaderInput, AzureFunctionsAuthentication, AzureFunctionsAuthenticationInput, ChangeExtensionDestination, ChangeExtensionTriggers, Extension, ExtensionDestination, ExtensionDestinationInput, ExtensionDraft, ExtensionQueryResult, ExtensionUpdateAction, HttpDestination, HttpDestinationAuthentication, HttpDestinationAuthenticationInput, HttpDestinationInput, SetExtensionKey, SetExtensionTimeoutInMs, Trigger, TriggerInput.
  • [GraphQL API] Changed the Query type:
    • Added the extensions field to the Query type.
    • Added the extension field to the Query type.
  • [GraphQL API] Changed the Mutation type:
    • Added the deleteExtension field to the Mutation type.
    • Added the updateExtension field to the Mutation type.
    • Added the createExtension field to the Mutation type.

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

extend type Query {
extension(
"Queries with specified ID"
id: String,
"Queries with specified key"
key: String): Extension
extensions(where: String, sort: [String!], limit: Int, offset: Int): ExtensionQueryResult!
}
extend type Mutation {
createExtension(draft: ExtensionDraft!): Extension
deleteExtension(version: Long!,
"Queries with specified ID"
id: String,
"Queries with specified key"
key: String): Extension
updateExtension(version: Long!, actions: [ExtensionUpdateAction!]!,
"Queries with specified ID"
id: String,
"Queries with specified key"
key: String): Extension
}
type AWSLambdaDestination implements ExtensionDestination {
arn: String!
accessKey: String!
accessSecret: String!
type: String!
}
input AWSLambdaDestinationInput {
arn: String!
accessKey: String!
accessSecret: String!
}
enum ActionType {
Update
Create
}
type AuthorizationHeader implements HttpDestinationAuthentication {
headerValue: String!
type: String!
}
input AuthorizationHeaderInput {
headerValue: String!
}
type AzureFunctionsAuthentication implements HttpDestinationAuthentication {
key: String!
type: String!
}
input AzureFunctionsAuthenticationInput {
key: String!
}
input ChangeExtensionDestination {
destination: ExtensionDestinationInput!
}
input ChangeExtensionTriggers {
triggers: [TriggerInput!]!
}
type Extension implements Versioned {
key: String
destination: ExtensionDestination!
triggers: [Trigger!]!
timeoutInMs: Int
id: String!
version: Long!
createdAt: DateTime!
lastModifiedAt: DateTime!
createdBy: Initiator
lastModifiedBy: Initiator
}
interface ExtensionDestination {
type: String!
}
input ExtensionDestinationInput {
HTTP: HttpDestinationInput
AWSLambda: AWSLambdaDestinationInput
}
input ExtensionDraft {
key: String
destination: ExtensionDestinationInput!
triggers: [TriggerInput!]!
timeoutInMs: Int
}
type ExtensionQueryResult {
offset: Int!
count: Int!
total: Long!
results: [Extension!]!
}
input ExtensionUpdateAction {
changeDestination: ChangeExtensionDestination
changeTriggers: ChangeExtensionTriggers
setKey: SetExtensionKey
setTimeoutInMs: SetExtensionTimeoutInMs
}
type HttpDestination implements ExtensionDestination {
type: String!
url: String!
authentication: HttpDestinationAuthentication
}
interface HttpDestinationAuthentication {
type: String!
}
input HttpDestinationAuthenticationInput {
AuthorizationHeader: AuthorizationHeaderInput
AzureFunctions: AzureFunctionsAuthenticationInput
}
input HttpDestinationInput {
url: String!
authentication: HttpDestinationAuthenticationInput
}
input SetExtensionKey {
key: String
}
input SetExtensionTimeoutInMs {
timeoutInMs: Int
}
input SetStoreDistributionChannels {
channels: [ResourceIdentifierInput!]
}
type Trigger {
resourceTypeId: String!
actions: [ActionType!]!
}
input TriggerInput {
resourceTypeId: String!
actions: [ActionType!]
}