Signiant Jet provides notifications for Jet activity using webhooks. Once an account enables webhook notifications for an event category or specific event type using the /subscriptions
endpoint, you can receive event notifications as JSON webhooks.
Jet notification subscriptions are categorized into event categories. Currently, webhook notifications can be enabled for:
Hot Folder jobs begin once a file is added to a hot folder, creating a JET_TRANSFER
event which can be reported via webhook. To enable webhook notifications for all transfer events, send a request to the /subscriptions
API endpoint including a request body that sets the webhook eventCategory
to JET_TRANSFER
.
Transfer webhooks include the following events:
When a hot folder job fails, it automatically retries. A transfer event webhook will report any retries as part of the webhook by displaying isRetry
as true
or false
. A retryInfo
object included in the webhook indicates the number of attempts, via the retryNumber
key-value pair.
Transfer notifications for Hot Folder jobs can be aggregated by including an aggregationConfig
in the notificationConfig
object. The aggregationConfig
accepts an aggregationWindowInSeconds
parameter to set the aggregation period for notifications.
When a transfer completes, a webhook is sent to the destination URL at the end of the selected notification period. Any additional transfers that complete during that period are included in the same webhook body.
Console Option | Time In Seconds |
---|---|
Every 10 Minutes | 600 |
Every 30 Minutes | 1800 |
Every Hour | 3600 |
Every Day | 86400 |
To receive notifications for every transfer, do not include the aggregationConfig
object.
{
"eventCategory": "JET_TRANSFER",
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456"
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url",
"aggregationConfig": {
"aggregationWindowInSeconds": 1800
}
}
}
{
"accountId": "12345678-1234-abcd-abcd-abcdef123456",
"createdOn": "2021-01-14T15:45:50.874Z",
"subscriptionId": "1234abcd-12ab-1ab2-21ba-123456fedcba",
"lastModifiedOn": "2021-01-14T15:45:50.874Z",
"eventCategory": "JET_TRANSFER",
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
},
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456"
}
}
Delivery events occur when a job is using a schedule or manual trigger. Jobs with a schedule trigger create a new delivery at their scheduled start time. Manual jobs create a delivery when started through the Signiant Console or Jet API.
Once the delivery is created, the associated transfer starts as soon as possible.
The delivery lifecycle consists of the following:
Delivery webhooks include the following events:
Note: A delivery consisting of a large number of files will transfer in batches, resulting in more than one QUEUED
, SCHEDULED
, and IN_PROGRESS
event per delivery.
To enable webhook notifications for delivery events, send a request to the /subscriptions
API endpoint including a request body that sets the webhook eventCategory
as JET_DELIVERY
.
{
"eventCategory": "JET_DELIVERY",
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456"
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"events": [
{
"accountId": "12345678-1234-abcd-abcd-abcdef123456",
"createdOn": "2021-01-14T15:45:50.874Z",
"subscriptionId": "1234abcd-12ab-1ab2-21ba-123456fedcba",
"lastModifiedOn": "2021-01-14T15:45:50.874Z",
"eventCategory": "JET_DELIVERY",
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
},
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456"
}
}
]
}
Storage profile activity webhooks are sent when a new storage profile is created or a storage profile is deleted.
To enable webhook notifications for storage profile events, send a request to the /subscriptions
API endpoint including a request body that sets the webhook eventCategory
as STORAGE_PROFILE
.
{
"eventCategory": "STORAGE_PROFILE",
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"accountId": "c3c7ce48-1412-46e7-8884-634ea45bd12c",
"createdOn": "2021-02-17T18:58:03.717Z",
"eventCategory": "STORAGE_PROFILE",
"lastModifiedOn": "2021-02-17T18:58:03.717Z",
"notificationConfig": {
"url": "https://example.com/receiving/url"
},
"notificationMethod": "WEBHOOK",
"subscriptionId": "b4796f78-4054-4e91-9793-d01a38da80cd"
}
Transfer jobs include the following events:
To enable webhook notifications for job events, send a request to the /subscriptions
API endpoint including a request body that sets the webhook eventCategory
as JET_JOB
.
{
"eventCategory": "JET_JOB",
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"accountId": "c3c7ce48-1412-46e7-8884-634ea45bd12c",
"createdOn": "2021-02-17T20:02:54.499Z",
"eventCategory": "JET_JOB",
"lastModifiedOn": "2021-02-17T20:02:54.499Z",
"notificationConfig": {
"url": "https://example.com/receiving/url"
},
"notificationMethod": "WEBHOOK",
"subscriptionId": "daf7175d-aac4-4d5e-bbfc-b437f0e32801"
}
Endpoints send webhooks for the following events:
To enable webhook notifications for endpoint events, send a request to the /subscriptions
API endpoint including a request body that sets the webhook eventCategory
as ENDPOINT
.
Note: Modifying an endpoint name or location includes a modifications
object to include any changes made to the endpoint. For more information, see event examples for modified endpoints.
{
"eventCategory": "ENDPOINT",
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"accountId": "c3c7ce48-1412-46e7-8884-634ea45bd12c",
"createdOn": "2021-02-17T20:02:54.499Z",
"eventCategory": "ENDPOINT",
"lastModifiedOn": "2021-02-17T20:02:54.499Z",
"notificationConfig": {
"url": "https://example.com/receiving/url"
},
"notificationMethod": "WEBHOOK",
"subscriptionId": "daf7175d-aac4-4d5e-bbfc-b437f0e32801"
}
To enable webhook notifications for specific events, send a request to the /subscriptions
API endpoint including a request body that includes the eventTypes
array with the events you wish to receive.
Notification | Event Type |
---|---|
A transfer is queued | com.signiant.jet.transfer.queued |
A transfer is in progress | com.signiant.jet.transfer.inProgress |
A transfer is completed | com.signiant.jet.transfer.completed |
A user paused the transfer | com.signiant.jet.transfer.canceled |
A transfer failed | com.signiant.jet.transfer.failed |
A storage profile is created | com.signiant.storageProfile.created |
A storage profile is deleted | com.signiant.storageProfile.deleted |
A new job is created | com.signiant.jet.job.created |
A user paused the job | com.signiant.jet.job.paused |
A user resumed the job | com.signiant.jet.job.resumed |
A user deleted the job | com.signiant.jet.job.deleted |
An endpoint is created | com.signiant.endpoint.created |
An endpoint is deleted | com.signiant.endpoint.deleted |
An endpoint becomes online | com.signiant.endpoint.online |
An endpoint becomes offline | com.signiant.endpoint.offline |
An endpoint name or location is modified | com.signiant.endpoint.modified |
The delivery is created | com.signiant.jet.delivery.created |
The delivery is queued | com.signiant.jet.delivery.queued |
The delivery is scheduled | com.signiant.jet.delivery.scheduled |
The delivery is in progress | com.signiant.jet.delivery.inProgress |
The delivery is completed | com.signiant.jet.delivery.completed |
The delivery failed | com.signiant.jet.delivery.failed |
Note: Requests with eventTypes
must include the appropriate eventCategory
.
{
"eventCategory": "JET_TRANSFER",
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456",
"eventTypes": [
"com.signiant.jet.transfer.inProgress",
"com.signiant.jet.transfer.completed"
]
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"eventCategory": "STORAGE_PROFILE",
"eventFilterConfig": {
"eventTypes": ["com.signiant.storageProfile.deleted"]
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"eventCategory": "JET_JOB",
"eventFilterConfig": {
"eventTypes": [
"com.signiant.jet.job.paused",
"com.signiant.jet.job.resumed"
]
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"eventCategory": "ENDPOINT",
"eventFilterConfig": {
"eventTypes": ["com.signiant.endpoint.created"]
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
{
"eventCategory": "JET_DELIVERY",
"eventFilterConfig": {
"jobId": "12345678-1234-abcd-abcd-abcdef123456",
"eventTypes": [
"com.signiant.jet.delivery.scheduled",
"com.signiant.jet.delivery.completed"
]
},
"notificationMethod": "WEBHOOK",
"notificationConfig": {
"url": "https://example.com/receiving/url"
}
}
Exposing your application in order to receive webhooks includes a risk to data integrity in your application. To reduce the risk of your application receiving invalid data, secure your webhook endpoint by including query parameters to the notification URL. Adding a query parameter ensures that only Signiant can send data to your application using requests that include a valid access token or shared secret.
When making your initial request to enable webhook notifications, include a query parameter to specify a shared secret or access token:
...
"notificationConfig": {
"url": "https://example.com/receiving/url?shared_secret=Fm_w.fb5cafg-4.1JSj"
}
...
By including a query parameter, the overall risk is reduced, as the access to your application or server is restricted to incoming requests that include the specified access token.
Once a subscription is activated, webhooks will be sent to the destination URL and contain a request body with information about the event.
Note: For transfer events, you can retrieve a transfer summary via the /v1/jobs/{jobId}/transfers/{transferId}
endpoint once the transfer completes.
For examples of webhook response bodies, see Jet Event Examples.
To disable webhook notifications, send a DELETE request to the /subscriptions/{subscriptionId}
. A webhook’s subscriptionId
is displayed when subscribing to notifications, or via GET, which displays a list of current subscriptions and their corresponding attributes.