Test webhooks locally with the Nylas Java SDK
🚀 Local webhook testing for the v3 Kotlin/Java SDK is coming soon.
The SDKs for Nylas v2 support local webhook testing. When you test your webhooks locally, the SDK creates a tunnel connection to a websocket server and registers it to your Nylas account as a webhook callback.
What you'll learn
In this tutorial, you'll learn how to set up your local webhook testing for the Nylas Java SDK.
Step 1: Configure the API client
- Import the
NylasClient
class, and create a new instance. - Import the
NylasApplication
class, and pass theNYLAS_CLIENT_ID
andNYLAS_CLIENT_SECRET
.
import com.nylas.NylasClient;
import com.nylas.NylasApplication;
public class NylasWebhook {
public static void main(String[] args) throws Exception {
NylasClient client = new NylasClient();
NylasApplication application = client.application("NYLAS_CLIENT_ID", "NYLAS_CLIENT_SECRET");
}
}
Step 2: Initialize the tunnel connection
Call WebhookTunnel.Builder
and build a new WebhookTunnel
instance.
public WebhookTunnel.Builder(NylasApplication app, WebhookHandler webhookHandler)
The WebhookTunnel
instance requires the following:
- A configured API client (
NylasApplication
) - A class that implements
WebhookHandler
to handle notifications.
Set callbacks and configuration parameters
To listen on new events and set callbacks, provide a class that implements WebhookHandler
.
The onMessage
callback is required, while other callbacks and configuration parameters are optional. The onMessage
callback returns a parsed delta event from the webhook server. The following are supported functions for callbacks:
void onMessage(Notification.Delta delta) // Executes on receiving a notification
void onOpen(short httpStatusCode) // Executes when the initial server connection has been established
void onClose(int code, String reason, boolean remote) // Executes after the connection has closed
void onError(Exception ex) // Executes when an error is encountered during the server runtime
You can add the following configurations to the builder process before building the WebhookTunnel
instance:
region(String region) // The region to connect to. Supported regions are 'us' (US) and 'ireland' (EU). Defaults to US.
triggers(Webhook.Trigger... triggers) // The list of webhook triggers to listen on. Defaults to all.
Learn more about Webhook notification triggers.
Example
import com.nylas.NylasClient;
import com.nylas.NylasApplication;
import com.nylas.Notification.Delta;
import com.nylas.services.Tunnel;
class HandleNotifications implements WebhookTunnel.WebhookHandler {
@Override
public void onMessage(Notification.Delta delta) {
log.info("onGot message from webhook. Data: " + notification.getAttributes());
}
@Override
public void onOpen(short httpStatusCode) {
log.info("OnOpen");
}
}
public class NylasWebhook {
public static void main(String[] args) throws Exception {
NylasClient client = new NylasClient();
NylasApplication application = client.application("NYLAS_CLIENT_ID", "NYLAS_CLIENT_SECRET");
new WebhookTunnel.Builder(application, new HandleNotifications())
.build()
.connect();
}
}
More resources
- Learn about Webhooks.
- Learn about the Webhhooks API endpoint.
- Learn about CLI: Testing webhooks.