21 April 2020
ExtensibilityGraphQL
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
Querytype:- Added the
extensionsfield to theQuerytype. - Added the
extensionfield to theQuerytype.
- Added the
- [GraphQL API] Changed the
Mutationtype:- Added the
deleteExtensionfield to theMutationtype. - Added the
updateExtensionfield to theMutationtype. - Added the
createExtensionfield to theMutationtype.
- Added the
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!]
}